Commit graph

25836 commits

Author SHA1 Message Date
Abhinav Kumar
246bafceab drm/msm: reset HDCP 2.2 sink support during disconnect
Reset the HDCP 2.2 sink support during a cable disconnect
to avoid stale information during the next cable connect.

This information is populated again from the sink on the next
cable connect.

Change-Id: I54da6e633915718da4be7023027c1d8c68cd6c21
Signed-off-by: Abhinav Kumar <abhinavk@codeaurora.org>
2017-10-03 22:37:32 -07:00
Rahul Sharma
00a9435ff0 drm/msm: null check before initializing a submitqueue
This change checks a NULL condition before initializing submitqueue.

Change-Id: I9ef6b6506b535d33e585be4988fa6433e11b3cb1
Signed-off-by: Rahul Sharma <sharah@codeaurora.org>
2017-10-03 09:53:53 -07:00
Camus Wong
c38bb7f088 drm/msm: avoid loading gpu components if qcom_kgsl present
Avoid loading gpu components from drm driver if qcom_kgsl
driver present.

Change-Id: I74c65634ce9260fba5bb871b3a9854d2c8173f4e
Signed-off-by: Camus Wong <camusw@codeaurora.org>
Signed-off-by: Rahul Sharma <sharah@codeaurora.org>
2017-10-03 09:52:45 -07:00
Rahul Sharma
792779946e drm/msm: remove the right vlbank event from the event list
This changes fixes an issue with vblank event list corruption.
we should only remove the event corresponding to a crtc from list
for which the thread was queued.

Change-Id: I9b9cef9073ba4cc377a85e21a7257d36e9b92388
Signed-off-by: Rahul Sharma <sharah@codeaurora.org>
2017-10-03 05:31:36 -07:00
Dhaval Patel
fec05057ef drm/msm/sde: update release & retire fence timeline
Update release and retire fence timeline according to client
requirement to align it with correct vsync boundary and avoid
issues in jank cases.

Change-Id: Ibee64f4feea2623e8bc8459273b7193d5e7bdacc
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
Signed-off-by: Rahul Sharma <sharah@codeaurora.org>
2017-10-03 05:29:39 -07:00
Yujun Zhang
34658f72cf drm/msm: Remove too many hdmi_i2c_xfer warnings
On 8996 AUTO platform, too many "hdmi_i2c_xfer" warnings appear
when booting that makes boot time longer and may cause watchdog
bite. The warning is generated by WARN_ON() in hdmi_i2c_xfer()
which prints call stack like:
        hdmi_i2c_xfer+0x44/0x398
        __i2c_transfer+0x270/0x4b4
        i2c_transfer+0x64/0xb0
        hdmi_ddc_read+0x84/0xdc
        sde_hdmi_scdc_write+0xac/0x178
        _sde_hdmi_bridge_mode_set+0x928/0xa34
        drm_bridge_mode_set+0x30/0x54
        complete_commit+0x448/0x938
        _msm_drm_commit_work_cb+0xb0/0x1a0
        kthread_worker_fn+0xcc/0x170
        kthread+0xf8/0x100
        ret_from_fork+0x10/0x20
The reason is the HDMI_CTRL_ENABLE bit of REG_HDMI_CTRL register
is disabled during the reset by the first commit. This reset is
caused by the missing of HPD regulator enabling in HPD call sequence.
So to remove the HDMI i2c warning, the patch enables HPD regulator
to avoid the reset.

Change-Id: I91e853535a972f241c7aa2d28c05785569ae23db
CRs-fixed: 2093649
Signed-off-by: Yujun Zhang <yujunzhang@codeaurora.org>
2017-09-29 11:13:15 +08:00
Archana Sriram
8662023651 msm: kgsl: Fix calculation of size in _load_regfile
During firmware load, there could be data over reads
due to calculation of lm_size and lm_sequence from
block and block_size. Added bounds checking to prevent
this and improved the size calculation.

CRs-Fixed: 2107981
Change-Id: Ib4283951b0d6c8fb699af1f85e657981ad4c0318
Signed-off-by: Archana Sriram <apsrir@codeaurora.org>
2017-09-26 23:12:04 -07:00
Linux Build Service Account
7498a748e3 Merge "msm: kgsl: Don't read stale crashdumper data" 2017-09-26 21:49:57 -07:00
Linux Build Service Account
07c0eb6c3b Merge "drm/msm: add HDCP_VERSION property for connector" 2017-09-26 21:49:50 -07:00
Abhinav Kumar
c6535223b7 drm/msm: add HDCP_VERSION property for connector
Expose a HDCP_VERSION property for the connector.
This property is used by the userspace to decide the
proper handling of secure streams based on HDCP version
of the sink.

This also guarantees that sinks do not receive
secure content higher than their capability.

Change-Id: Ia4ada2f26a5cde088b24c8792c10c9f9097602b1
Signed-off-by: Abhinav Kumar <abhinavk@codeaurora.org>
2017-09-25 19:42:30 -07:00
Abhinav Kumar
2ee560a955 drm/msm: fix zero device count HDCP repeater test cases
Fix the handling of HDCP repeaters to mark part II
of the authentication as failure if they do not have
any devices connected to them.

Change-Id: I6b21ed2ce9a280f7e200404b05d111508a6d3dd8
Signed-off-by: Abhinav Kumar <abhinavk@codeaurora.org>
2017-09-25 09:42:36 -07:00
Lynus Vaz
1e450489ff msm: kgsl: Don't read stale crashdumper data
After the crashdumper runs once, and the user sets the
snapshot_crashdumper sysfs node to 0, it is possible that stale data
is saved off into the snapshot. Check the value of the sysfs node at
the appropriate place to force a re-read of the data through the
legacy path.

Change-Id: Icf27c39b68d786003c33fd0eb22bd3e8b9a036be
Signed-off-by: Lynus Vaz <lvaz@codeaurora.org>
2017-09-25 11:12:12 +05:30
Linux Build Service Account
c9a659fda7 Merge "drm:msm:sde: enable sde client customization" 2017-09-24 11:54:00 -07:00
Linux Build Service Account
374db4f744 Merge "drm/msm: Add save/restore functions for perfcounters" 2017-09-22 17:26:46 -07:00
Yujun Zhang
4fda2bf83c drm/sde: fix smmu fault while running DRM test
DRM test failed in 4K display. It is caused by
wrong configuration of physical pipe and flush
mask for layer mixer.

Change-Id: I0d2d50cf24ba2265c9f5b874526c5e4013e47d9e
CRs-Fixed: 2065974
Signed-off-by: Yujun Zhang <yujunzhang@codeaurora.org>
2017-09-22 06:43:33 -07:00
Archana Obannagari
4533fa3252 msm: kgsl: Fix size check issue in _read_fw2_block_header()
During firmware data read, it may leads to cross the max
range. Add a check to validate data size with in the max
range.

Change-Id: I12b3c1761214a7d2af2c45ad73bf61954c8398b6
Signed-off-by: Archana Obannagari <aobann@codeaurora.org>
2017-09-22 19:01:12 +05:30
Blagovest Kolenichev
3e99b7f6eb Merge android-4.4@29d0b65 (v4.4.88) into msm-4.4
* refs/heads/tmp-29d0b65
  Linux 4.4.88
  xfs: XFS_IS_REALTIME_INODE() should be false if no rt device present
  NFS: Fix 2 use after free issues in the I/O code
  ARM: 8692/1: mm: abort uaccess retries upon fatal signal
  Bluetooth: Properly check L2CAP config option output buffer length
  ALSA: msnd: Optimize / harden DSP and MIDI loops
  locktorture: Fix potential memory leak with rw lock test
  btrfs: resume qgroup rescan on rw remount
  drm/bridge: adv7511: Re-write the i2c address before EDID probing
  drm/bridge: adv7511: Switch to using drm_kms_helper_hotplug_event()
  drm/bridge: adv7511: Use work_struct to defer hotplug handing to out of irq context
  drm/bridge: adv7511: Fix mutex deadlock when interrupts are disabled
  drm: adv7511: really enable interrupts for EDID detection
  scsi: sg: recheck MMAP_IO request length with lock held
  scsi: sg: protect against races between mmap() and SG_SET_RESERVED_SIZE
  cs5536: add support for IDE controller variant
  workqueue: Fix flag collision
  drm/nouveau/pci/msi: disable MSI on big-endian platforms by default
  mwifiex: correct channel stat buffer overflows
  dlm: avoid double-free on error path in dlm_device_{register,unregister}
  Bluetooth: Add support of 13d3:3494 RTL8723BE device
  rtlwifi: rtl_pci_probe: Fix fail path of _rtl_pci_find_adapter
  Input: trackpoint - assume 3 buttons when buttons detection fails
  ath10k: fix memory leak in rx ring buffer allocation
  intel_th: pci: Add Cannon Lake PCH-LP support
  intel_th: pci: Add Cannon Lake PCH-H support
  driver core: bus: Fix a potential double free
  staging/rts5208: fix incorrect shift to extract upper nybble
  USB: core: Avoid race of async_completed() w/ usbdev_release()
  usb:xhci:Fix regression when ATI chipsets detected
  usb: Add device quirk for Logitech HD Pro Webcam C920-C
  USB: serial: option: add support for D-Link DWM-157 C1
  usb: quirks: add delay init quirk for Corsair Strafe RGB keyboard
  ANDROID: sdcardfs: Add missing break
  ANDROID: Sdcardfs: Move gid derivation under flag
  ANDROID: mnt: Fix freeing of mount data
  drivers: cpufreq: checks to avoid kernel crash in cpufreq_interactive
  ANDROID: Use sk_uid to replace uid get from socket file
  ANDROID: nf: xt_qtaguid: fix handling for cases where tunnels are used.
  Revert "ANDROID: Use sk_uid to replace uid get from socket file"
  ANDROID: fiq_debugger: Fix minor bug in code

Conflicts:
	drivers/cpufreq/cpufreq_interactive.c
	drivers/net/wireless/ath/ath10k/core.c
	drivers/staging/android/fiq_debugger/fiq_debugger.c
	net/netfilter/xt_qtaguid.c

Change-Id: I49c67ff84d4bee0799691cc1ee0a023e2dd13e66
Signed-off-by: Blagovest Kolenichev <bkolenichev@codeaurora.org>
2017-09-21 14:00:18 -07:00
Blagovest Kolenichev
c988eaaeaf Merge android-4.4@a8935c9 (v4.4.87) into msm-4.4
* refs/heads/tmp-a8935c9:
  Linux 4.4.87
  crypto: algif_skcipher - only call put_page on referenced and used pages
  epoll: fix race between ep_poll_callback(POLLFREE) and ep_free()/ep_remove()
  kvm: arm/arm64: Force reading uncached stage2 PGD
  kvm: arm/arm64: Fix race in resetting stage2 PGD
  drm/ttm: Fix accounting error when fail to get pages for pool
  xfrm: policy: check policy direction value
  wl1251: add a missing spin_lock_init()
  CIFS: remove endian related sparse warning
  CIFS: Fix maximum SMB2 header size
  alpha: uapi: Add support for __SANE_USERSPACE_TYPES__
  cpuset: Fix incorrect memory_pressure control file mapping
  cpumask: fix spurious cpumask_of_node() on non-NUMA multi-node configs
  ceph: fix readpage from fscache
  i2c: ismt: Return EMSGSIZE for block reads with bogus length
  i2c: ismt: Don't duplicate the receive length for block reads
  irqchip: mips-gic: SYNC after enabling GIC region
  ANDROID: cpufreq-dt: Set sane defaults for schedutil rate limits
  BACKPORT: cpufreq: schedutil: Use policy-dependent transition delays
  FROMLIST: binder: fix an ret value override
  FROMLIST: binder: fix memory corruption in binder_transaction binder
  Linux 4.4.86
  drm/i915: fix compiler warning in drivers/gpu/drm/i915/intel_uncore.c
  scsi: sg: reset 'res_in_use' after unlinking reserved array
  scsi: sg: protect accesses to 'reserved' page array
  arm64: fpsimd: Prevent registers leaking across exec
  x86/io: Add "memory" clobber to insb/insw/insl/outsb/outsw/outsl
  arm64: mm: abort uaccess retries upon fatal signal
  lpfc: Fix Device discovery failures during switch reboot test.
  p54: memset(0) whole array
  lightnvm: initialize ppa_addr in dev_to_generic_addr()
  gcov: support GCC 7.1
  gcov: add support for gcc version >= 6
  i2c: jz4780: drop superfluous init
  btrfs: remove duplicate const specifier
  ALSA: au88x0: Fix zero clear of stream->resources
  scsi: isci: avoid array subscript warning
  sched: WALT: fix window mis-alignment
  sched: EAS: kill incorrect nohz idle cpu kick
  sched: EAS: fix incorrect energy delta calculation due to rounding error
  sched: EAS/WALT: take into account of waking task's load
  cpufreq: sched: WALT: don't apply capacity margin twice
  sched: WALT: fix potential overflow
  sched: EAS: schedfreq: fix CPU util over estimation
  sched: EAS/WALT: use cr_avg instead of prev_runnable_sum
  sched: WALT: fix broken cumulative runnable average accounting
  sched: deadline: WALT: account cumulative runnable avg
  FROMLIST: android: binder: Add page usage in binder stats
  FROMLIST: android: binder: Add shrinker tracepoints
  FROMLIST: android: binder: Add global lru shrinker to binder
  FROMLIST: android: binder: Move buffer out of area shared with user space
  FROMLIST: android: binder: Add allocator selftest
  FROMLIST: android: binder: Refactor prev and next buffer into a helper function
  android: android-base.config: enable IP6_NF_MATCH_RPFILTER
  UPSTREAM: cpufreq: schedutil: Use unsigned int for iowait boost
  UPSTREAM: cpufreq: schedutil: Make iowait boost more energy efficient

Conflicts:
	drivers/cpufreq/cpufreq-dt.c
	kernel/sched/deadline.c
	kernel/sched/fair.c
	kernel/sched/sched.h

Change-Id: Iee31db3fd1a0d1650ebf3d6de307a4e4637120b4
Signed-off-by: Blagovest Kolenichev <bkolenichev@codeaurora.org>
2017-09-21 13:19:38 -07:00
Guchun Chen
6a11240349 drm:msm:sde: enable sde client customization
Sde client customization is disabled by previous commit which
is propagated from other branch. After disabling this, 4K display
on HDMI can not be up. This is because when creating drm plane in kernel,
sde client customization will directly set possible_crtcs per plane
reporting to user space. When disabling it, user space's sdm strategy
could not get and assign correct pipes for 4K display.

Change-Id: Ie6a870c352533060f7c810bdb5c99b7c1534117d
CRs-fixed: 2107328
Signed-off-by: Guchun Chen <guchunc@codeaurora.org>
2017-09-21 15:28:40 +08:00
Linux Build Service Account
63bd7326e4 Merge "msm: kgsl: Do not crash on context detach timeout failure" 2017-09-15 09:14:11 -07:00
Linux Build Service Account
06d01bbd16 Merge "msm: kgsl: Fixing an uninitialized variable in _gpuobj_map_useraddr()" 2017-09-15 01:10:52 -07:00
John Stultz
f4596ead66 drm/bridge: adv7511: Re-write the i2c address before EDID probing
commit 3587c856675c45809010c2cee5b21096f6e8e938 upstream.

I've found that by just turning the chip on and off via the
POWER_DOWN register, I end up getting i2c_transfer errors on
HiKey.

Investigating further, it turns out that some of the register
state in hardware is getting lost, as the device registers are
reset when the chip is powered down.

Thus this patch simply re-writes the i2c address to the
ADV7511_REG_EDID_I2C_ADDR register to ensure its properly set
before we try to read the EDID data.

Cc: David Airlie <airlied@linux.ie>
Cc: Archit Taneja <architt@codeaurora.org>
Cc: Wolfram Sang <wsa+renesas@sang-engineering.com>
Cc: Lars-Peter Clausen <lars@metafoo.de>
Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: dri-devel@lists.freedesktop.org
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Tested-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: John Stultz <john.stultz@linaro.org>
Signed-off-by: Archit Taneja <architt@codeaurora.org>
Link: http://patchwork.freedesktop.org/patch/msgid/1484614372-15342-7-git-send-email-john.stultz@linaro.org
Signed-off-by: Thong Ho <thong.ho.px@rvc.renesas.com>
Signed-off-by: Nhan Nguyen <nhan.nguyen.yb@renesas.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2017-09-13 14:09:46 -07:00
John Stultz
e22a430854 drm/bridge: adv7511: Switch to using drm_kms_helper_hotplug_event()
commit 6d5104c5a6b56385426e15047050584794bb6254 upstream.

In chasing down a previous issue with EDID probing from calling
drm_helper_hpd_irq_event() from irq context, Laurent noticed
that the DRM documentation suggests that
drm_kms_helper_hotplug_event() should be used instead.

Thus this patch replaces drm_helper_hpd_irq_event() with
drm_kms_helper_hotplug_event(), which requires we update the
connector.status entry and only call _hotplug_event() when the
status changes.

Cc: David Airlie <airlied@linux.ie>
Cc: Archit Taneja <architt@codeaurora.org>
Cc: Wolfram Sang <wsa+renesas@sang-engineering.com>
Cc: Lars-Peter Clausen <lars@metafoo.de>
Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: dri-devel@lists.freedesktop.org
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Tested-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: John Stultz <john.stultz@linaro.org>
Signed-off-by: Archit Taneja <architt@codeaurora.org>
Link: http://patchwork.freedesktop.org/patch/msgid/1484614372-15342-3-git-send-email-john.stultz@linaro.org
Signed-off-by: Thong Ho <thong.ho.px@rvc.renesas.com>
Signed-off-by: Nhan Nguyen <nhan.nguyen.yb@renesas.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2017-09-13 14:09:46 -07:00
John Stultz
9183e45db7 drm/bridge: adv7511: Use work_struct to defer hotplug handing to out of irq context
commit 518cb7057a59b9441336d2e88a396d52b6ab0cce upstream.

I was recently seeing issues with EDID probing, where
the logic to wait for the EDID read bit to be set by the
IRQ wasn't happening and the code would time out and fail.

Digging deeper, I found this was due to the fact that
IRQs were disabled as we were running in IRQ context from
the HPD signal.

Thus this patch changes the logic to handle the HPD signal
via a work_struct so we can be out of irq context.

With this patch, the EDID probing on hotplug does not time
out.

Cc: David Airlie <airlied@linux.ie>
Cc: Archit Taneja <architt@codeaurora.org>
Cc: Wolfram Sang <wsa+renesas@sang-engineering.com>
Cc: Lars-Peter Clausen <lars@metafoo.de>
Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: dri-devel@lists.freedesktop.org
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Tested-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: John Stultz <john.stultz@linaro.org>
Signed-off-by: Archit Taneja <architt@codeaurora.org>
Link: http://patchwork.freedesktop.org/patch/msgid/1484614372-15342-2-git-send-email-john.stultz@linaro.org
Signed-off-by: Thong Ho <thong.ho.px@rvc.renesas.com>
Signed-off-by: Nhan Nguyen <nhan.nguyen.yb@renesas.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2017-09-13 14:09:46 -07:00
Archit Taneja
c634cecad4 drm/bridge: adv7511: Fix mutex deadlock when interrupts are disabled
commit f0bfcc22d9822947b0ad3095e8363eab5261864c upstream.

When the adv7511 i2c client doesn't have an interrupt line, we observe a
deadlock on caused by trying to lock drm device's mode_config.mutex twice
in the same context.

Here is the sequence that causes it:

ioctl DRM_IOCTL_MODE_GETCONNECTOR from userspace
  drm_mode_getconnector (acquires mode_config mutex)
    connector->fill_modes()
    drm_helper_probe_single_connector_modes
      connector_funcs->get_modes
	adv7511_encoder_get_modes
	  adv7511_get_edid_block
	    adv7511_irq_process
	      drm_helper_hpd_irq_event (acquires mode_config mutex again)

In adv7511_irq_process, don't call drm_helper_hpd_irq_event when not
called from the interrupt handler. It doesn't serve any purpose there
anyway.

Signed-off-by: Archit Taneja <architt@codeaurora.org>
Signed-off-by: Thong Ho <thong.ho.px@rvc.renesas.com>
Signed-off-by: Nhan Nguyen <nhan.nguyen.yb@renesas.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2017-09-13 14:09:45 -07:00
Wolfram Sang
aea7e5ce4a drm: adv7511: really enable interrupts for EDID detection
commit d0be8584b01160eb6f49e77f8e9c1da286bb4ffb upstream.

The interrupts for EDID_READY or DDC_ERROR were never enabled in this
driver, so reading EDID always timed out when chip was powered down and
interrupts were used. Fix this and also remove clearing the interrupt
flags, they are cleared in POWER_DOWN mode anyhow (unlike the interrupt
enable flags) according to docs and my tests.

Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Tested-by: Archit Taneja <architt@codeaurora.org>
Signed-off-by: Thong Ho <thong.ho.px@rvc.renesas.com>
Signed-off-by: Nhan Nguyen <nhan.nguyen.yb@renesas.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2017-09-13 14:09:45 -07:00
Ilia Mirkin
966e3a2d98 drm/nouveau/pci/msi: disable MSI on big-endian platforms by default
commit bc60c90f472b6e762ea96ef384072145adc8d4af upstream.

It appears that MSI does not work on either G5 PPC nor on a E5500-based
platform, where other hardware is reported to work fine with MSI.

Both tests were conducted with NV4x hardware, so perhaps other (or even
this) hardware can be made to work. It's still possible to force-enable
with config=NvMSI=1 on load.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2017-09-13 14:09:45 -07:00
Hareesh Gundu
22b96ae58a msm: kgsl: Do not crash on context detach timeout failure
If context wait for global timeouts in detach path there is
no use to process its pending commands. Hence to handle context
detach timeout failure,invalidate the context and remove all
the pending commands from that context. So that other context
commands proceed successfully after the context detach timeout
fault recovery.

Change-Id: Ie4ff0ed5d08312d345b248a2404ce085552b0b09
Signed-off-by: Hareesh Gundu <hareeshg@codeaurora.org>
2017-09-13 11:41:46 +05:30
Linux Build Service Account
14f6bfeeeb Merge "Merge android-4.4@610af85 (v4.4.85) into msm-4.4" 2017-09-12 14:41:58 -07:00
Linux Build Service Account
043f52c20a Merge "msm: kgsl: Protect the bind object against bad dereference" 2017-09-12 14:41:57 -07:00
Linux Build Service Account
c32cff4902 Merge "drm/msm/sde: remove out of bound access for qos lut parsing" 2017-09-12 05:25:46 -07:00
Linux Build Service Account
14bba4ad56 Merge "drm/msm: fix non-zero offset register dumping" 2017-09-12 05:25:45 -07:00
Linux Build Service Account
e9ecb016e6 Merge "msm: kgsl: Limit the kgsl log frequency in kgsl_get_unmapped_area()" 2017-09-11 19:13:15 -07:00
Linux Build Service Account
1b2c9a8e53 Merge "msm: kgsl: Do not allocate scratch memory for A3xx" 2017-09-11 19:12:55 -07:00
Linux Build Service Account
42a50b337e Merge "msm: kgsl: Fix gpu fault issue while enabling stall on page fault" 2017-09-11 19:12:52 -07:00
Linux Build Service Account
a3f5570db9 Merge "msm: kgsl: Add debug log in adreno_of_get_pwrlevels()" 2017-09-11 19:12:51 -07:00
Abhinav Kumar
a1f29fd0b5 drm/msm: fix non-zero offset register dumping
Remove format identifiers in the register dumping
function which incorrectly recognizes the offset and
the count of the registers to be dumped.

Also, reduce the chunk of memory copied from the SDE
hardware register range to align with the existing
register dumping mechanism.

Change-Id: I1ce7148275f5287e568fe6efc8774f4d495cdaa4
Signed-off-by: Abhinav Kumar <abhinavk@codeaurora.org>
2017-09-11 07:14:57 -07:00
Dhaval Patel
0667b6f916 drm/msm/sde: remove out of bound access for qos lut parsing
QOS LUT dtsi entries use existing hardware parsing APIs
but dos not increase the size of array. This causes out of
bound access while reading u32 lut array entry. This patch
fixes the array size and also adds checks to avoid future
out of bound access. It also fixes the memory leak in
qos lut parsing.

Change-Id: I98de052d03e1bcfd79d15ab99ca41d7782e56682
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
Signed-off-by: Abhinav Kumar <abhinavk@codeaurora.org>
2017-09-11 02:51:15 -07:00
Archana Obannagari
a56d851eaa msm: kgsl: Fixing an uninitialized variable in _gpuobj_map_useraddr()
Uninitalized kernel variable passes to userspace, it may have data
from stack. To avoid data leak from kernel to userspace initializes
struct kgsl_gpuobj_import_useraddr to zero.

CRs-Fixed: 2096006
Change-Id: Ib79b030cd5e3edd7279632af20dc3fac95eb73d4
Signed-off-by: Archana Obannagari <aobann@codeaurora.org>
2017-09-11 11:07:28 +05:30
Linux Build Service Account
ef93f7a163 Merge "Merge android-4.4@4b8fc9f (v4.4.82) into msm-4.4" 2017-09-08 22:04:15 -07:00
Jordan Crouse
eeec27265a drm/msm: Add save/restore functions for perfcounters
Add functions to save and restore the value of some of the
performance counters during a power cycle.

Change-Id: Ic0dedbad4037d6a2262792b752dc5d33a2d0eb36
Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
2017-09-08 13:36:40 -06:00
Hareesh Gundu
273f50746c msm: kgsl: Do not allocate scratch memory for A3xx
A3xx device gets the ring buffer read pointer directly
from the GPU registers. So don’t allocate scratch memory
which can’t be used for A3xx GPU devices.

Change-Id: I95016dfc169b9fee74e978f5560592740f34515e
Signed-off-by: Hareesh Gundu <hareeshg@codeaurora.org>
2017-09-08 02:02:40 -07:00
Hareesh Gundu
40e0712361 msm: kgsl: Fix gpu fault issue while enabling stall on page fault
Stall on page fault feature is supported on A5XX and later GPUs.
Enabling this feature on unsupported GPUs causes GPU faults.
So don't insert GPU stall related commands in ringbuffer if
not supported. But allow user to capture the GPU snapshot on
GPU page fault.

Change-Id: Ied26a5b4f44c1877b289a0ff5c0a6d47901e453d
Signed-off-by: Hareesh Gundu <hareeshg@codeaurora.org>
2017-09-08 14:08:57 +05:30
Sushmita Susheelendra
a2d757fccc drm/msm: Decrement the device usage count on the recovery thread
A faulting submit is retired on the recovery worker and not
the retire worker. The usage count for the device must be
decremented for the faulting submit or the device will never
go into suspend following a fault despite being inactive for
the inactivity period.

Change-Id: Ieda698eb00008f5bcc7287f76b9261704e51e28b
Signed-off-by: Sushmita Susheelendra <ssusheel@codeaurora.org>
2017-09-07 15:04:47 -06:00
Sushmita Susheelendra
5ec068d55b drm/msm: Reset ringbuffer pointers at hw init
Ringbuffer pointers were getting reset only when resuming after
recovery. However, we need to reset them even after resuming
from SLUMBER or we will end up sending stale commands to the GPU
with bad results. Make ringbuffer reset part of the GPU init
sequence.

Change-Id: I93fc2f2e293245e584184315f8eb8a4ec73d2455
Signed-off-by: Sushmita Susheelendra <ssusheel@codeaurora.org>
2017-09-07 15:04:46 -06:00
Archit Taneja
9d4c3788b4 drm/msm/adreno: Prevent unclocked access when retrieving timestamps
msm_gpu's get_timestamp() op (called by the MSM_GET_PARAM ioctl) can
result in register accesses. We need our power domain and clocks to
be active for that. Make sure they are enabled here.

Change-Id: I1b8e59e0246ed7d9b8a0b6ae660ebfbb15b08782
Signed-off-by: Archit Taneja <architt@codeaurora.org>
Signed-off-by: Rob Clark <robdclark@gmail.com>
Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Signed-off-by: Sushmita Susheelendra <ssusheel@codeaurora.org>
2017-09-07 15:02:36 -06:00
Rob Clark
d223bc2236 drm/msm/gpu: use pm-runtime
We need to use pm-runtime properly when IOMMU is using device_link() to
control it's own clocks.

Change-Id: I7c5668e6a0fcfc2d4664355e49c49d4dcb26323e
Signed-off-by: Rob Clark <robdclark@gmail.com>
Git-commit: eeb754746b140c5f55e6b25706a9142aa549b348
Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
[ssusheel@codeaurora.org: fix some merge conflicts]
Signed-off-by: Sushmita Susheelendra <ssusheel@codeaurora.org>
2017-09-07 15:02:35 -06:00
Venkateswara Rao Tadikonda
a33cdc7723 msm: kgsl: Limit the kgsl log frequency in kgsl_get_unmapped_area()
Reduce the frequency of kgsl logging when kgsl driver failed to get
memory mapping for requested memory.

Change-Id: If1a8832a9aa0396e3c990916deec7949697be12d
Signed-off-by: Venkateswara Rao Tadikonda <vtadik@codeaurora.org>
2017-09-07 21:04:46 +05:30
Sunil Khatri
8b6bbeab08 msm: kgsl: Protect the bind object against bad dereference
Sparse bind object are unbinded with bind id. This
can be exploited by any malicious application calling
unbind with same bind id again and again.

This can lead to a race condition between two threads
where one free the bind object and second thread uses
same object leading to bad dereference.

Change-Id: I542a008fc647489560667fb5016453a0c3448f7a
Signed-off-by: Sunil Khatri <sunilkh@codeaurora.org>
2017-09-07 05:18:38 -07:00
Xiangliang.Yu
94183009ac drm/ttm: Fix accounting error when fail to get pages for pool
commit 9afae2719273fa1d406829bf3498f82dbdba71c7 upstream.

When fail to get needed page for pool, need to put allocated pages
into pool. But current code has a miscalculation of allocated pages,
correct it.

Signed-off-by: Xiangliang.Yu <Xiangliang.Yu@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Monk Liu <monk.liu@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2017-09-07 08:34:09 +02:00