Commit graph

590185 commits

Author SHA1 Message Date
Sushmita Susheelendra
d9b394c7c2 drm/msm: Fix drm_mm bottom_up search
The bottom up search of drm_mm hole nodes is
currently broken. It does not correctly look
for the first hole (smallest address) that fits
the allocation from the bottom up. Use an RB tree
to record hole nodes with their address as key,
so that the hole with the smallest address that
satisfies the request can be looked up.

Change-Id: Ie3020cb4e8b6db13a35d0fe5caaa8781cb6ced9f
Signed-off-by: Sushmita Susheelendra <ssusheel@codeaurora.org>
2017-06-02 15:48:46 -06:00
Sushmita Susheelendra
1f1dbe35f7 drm/msm: Use mmu notifiers to track SVM range invalidations
SVM buffer objects share the same virtual address on
both the CPU and GPU. Register for notifications when
SVM address ranges are unmapped on the CPU. When such
a notification is received, unmap the corresponding
SVM objects from the SMMU, after waiting on the most
recent fence that uses them. The notifier struct is
reference counted starting with the creation of the
first SVM bo in the process and is released when the
last SVM bo is freed.

Change-Id: I01f590d21fd1d146f5324539e5041f03653f858a
Signed-off-by: Sushmita Susheelendra <ssusheel@codeaurora.org>
2017-06-02 15:48:45 -06:00
Sushmita Susheelendra
0a367f63c1 drm/msm: Fix error path clean-up for buffer object creation
The reference count on a buffer object was being
decremented before it was initialized. Fix the
error path clean-up to put the reference only
after the kref has been initialized. Also, avoid
passing the object by reference when possible.

Change-Id: Ifbb1874deb5db9ae3fb2fbd40a58162998284e96
Signed-off-by: Sushmita Susheelendra <ssusheel@codeaurora.org>
2017-06-02 15:48:44 -06:00
Sushmita Susheelendra
f677e9604d drm/msm: Implement shared virtual memory ioctl
Shared virtual memory allows the CPU and GPU to use
the same virtual address for a buffer. This change
implements an ioctl to allow creation of SVM buffer
objects.

Change-Id: I0d929a2e37a9eeef948dc2a37250c1eb9adf6fc7
Signed-off-by: Sushmita Susheelendra <ssusheel@codeaurora.org>
2017-06-02 15:48:43 -06:00
Sushmita Susheelendra
48d9d351eb drm: Remove redundant variable assignment
The variable 'end' is computed twice. Remove the
redundant assignment.

Change-Id: I79802b5f08aa10146b113d14ab40f33f6fefe6dc
Signed-off-by: Sushmita Susheelendra <ssusheel@codeaurora.org>
2017-05-31 17:33:11 -06:00
Chris Wilson
ffc435160c drm: Declare that create drm_mm nodes with size 0 is illegal
At a higher level, all objects are created with definite size i.e. 0 is
illegal. In forthcoming patches, this assumption is dependent upon in
the drm_mm range manager, i.e. trying to create a drm_mm node with size
0 will have undefined behaviour. Add a couple of WARNs upon creating the
drm_mm node to prevent later bugs.

Change-Id: Ieb81a8ef5a05a32dd37dfc040ea3f78243b59161
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: David Herrmann <dh.herrmann@gmail.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/1470248788-30873-1-git-send-email-chris@chris-wilson.co.uk
Git-commit: aafdcfd3f9aa3c9f77ae4e9385f21bf9ae120d3e
Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Signed-off-by: Sushmita Susheelendra <ssusheel@codeaurora.org>
2017-05-31 17:33:10 -06:00
Chris Wilson
e4cf5a0425 drm: Skip initialising the drm_mm_node->hole_stack
As we always add this to the drm_mm->hole_stack as our first operation,
we do not need to initialise the list node.

Change-Id: If2e9e06141bdb9a9411ef875cb83e41a48e5f1a9
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: David Herrmann <dh.herrmann@gmail.com>
Cc: dri-devel@lists.freedesktop.org
Reviewed-by: David Herrmann <dh.herrmann@gmail.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/1470236651-678-3-git-send-email-chris@chris-wilson.co.uk
Git-commit: a787900564ffc6eebbcb7086b45e04a0bc3370f0
Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Signed-off-by: Sushmita Susheelendra <ssusheel@codeaurora.org>
2017-05-31 17:33:09 -06:00
Chris Wilson
32d840be56 drm: Track drm_mm nodes with an interval tree
In addition to the last-in/first-out stack for accessing drm_mm nodes,
we occasionally and in the future often want to find a drm_mm_node by an
address. To do so efficiently we need to track the nodes in an interval
tree - lookups for a particular address will then be O(lg(N)), where N
is the number of nodes in the range manager as opposed to O(N).
Insertion however gains an extra O(lg(N)) step for all nodes
irrespective of whether the interval tree is in use. For future i915
patches, eliminating the linear walk is a significant improvement.

v2: Use generic interval-tree template for u64 and faster insertion.

Change-Id: Iddcb7891480ca7d6e0469c8d394fcd1962ed4583
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: David Herrmann <dh.herrmann@gmail.com>
Cc: dri-devel@lists.freedesktop.org
Reviewed-by: David Herrmann <dh.herrmann@gmail.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/1470236651-678-1-git-send-email-chris@chris-wilson.co.uk
Git-commit: 202b52b7fbf70858609ec20829c7d69a13ffa351
Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Signed-off-by: Sushmita Susheelendra <ssusheel@codeaurora.org>
2017-05-31 17:33:09 -06:00
Sushmita Susheelendra
9c0d1dc8c0 drm/msm: Separate locking of buffer resources from struct_mutex
Buffer object specific resources like pages, domains, sg list
need not be protected with struct_mutex. They can be protected
with a buffer object level lock. This simplifies locking and
makes it easier to avoid potential recursive locking scenarios
for SVM involving mmap_sem and struct_mutex. This also removes
unnecessary serialization when creating buffer objects, and also
between buffer object creation and GPU command submission.

Change-Id: I40cb437d0186c3d9aac365c9baba0aa4792f0aa1
Signed-off-by: Sushmita Susheelendra <ssusheel@codeaurora.org>
2017-05-31 17:33:08 -06:00
Sushmita Susheelendra
9f47a21e56 iommu/arm-smmu: Change virtual address size limit to 39 bits
Restrict the virtual address size to 39-bits to allow
a maximum of 3 pagetable levels.

Change-Id: I264f23a2e16cc7599bdad8a161854bcf6e24dd4a
Signed-off-by: Sushmita Susheelendra <ssusheel@codeaurora.org>
2017-05-31 12:12:24 -06:00
Sushmita Susheelendra
855e0a4c1c drm/msm: Set the TTBR1 range for a 36-bit address space
Define a 36-bit address space for TTBR1 which is used for
kernel side GPU buffer objects.

Change-Id: I1c4eaee0fd92236793621c7d3dba1700e56fefd2
Signed-off-by: Sushmita Susheelendra <ssusheel@codeaurora.org>
2017-05-31 12:00:54 -06:00
Jordan Crouse
b39c609072 iommu/arm-smmu: Correctly calculate and use the TTBR1 pagetable
Due to an egregious misunderstanding of the specification it
was thought that to do the TTBR1 matching correctly the sign
extension bit needed to match the input address space. This
is incorrect - the TTBR1 range is determined by the size of
the TTBR1 space (in our case, the same as the input address
space). For example if the input address size is 36, the
effective range of the pagetables are:

TTBR0: 0x00000000_00000000 - 0x0000000f_ffffffff
TTBR1: 0xfffffff0_00000000 - 0xffffffff_ffffffff

For its part the sign extension bit needs should be set based on
the upstream bus size. If the device has a UBS of 49 then the
sign extension bit is assumed by design to be 48 otherwise
the driver needs to pick the highest available bit and reduce
the input address space by 1.

Because the client driver shouldn't need to know the upstream
bus size, convention is to use a fully sign extended unsigned
long address for TTBR1 mappings. If the sign extension bit is set
lower than the upstream bus size some implementations assume that
bits above the sign extension bit need to be zero and breaks the
convention. Setting the sign extension bit correctly for the
upstream bus size ensures that sign extension always works.

The hardware will match an address to the TTBR1 if all the bits
between the sign extension bit and the input address size are set
to 1. We emulate this behavior in software when looking up a pagetable
for a software operation.

Change-Id: Ic0dedbad80c72f11bc8a7e6792f0e3c2f58bc674
Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
2017-05-31 11:56:25 -06:00
Linux Build Service Account
a5706c4fda Merge "usb: pd: Re-check for disconnect after PR swap" 2017-05-30 23:09:25 -07:00
Linux Build Service Account
7961b23656 Merge "sched: Remove debug WARN_ONCE messages" 2017-05-30 23:09:24 -07:00
Linux Build Service Account
ff3536c439 Merge "msm: ais: Fix kernel overwrite GET_BUF_BY_IDX ioctl" 2017-05-30 23:09:23 -07:00
Linux Build Service Account
472776516b Merge "ARM: dts: msm : Add neutrino DDR bandwidth voting on 8996 auto platforms" 2017-05-30 23:09:22 -07:00
Linux Build Service Account
467586f025 Merge "soc: qcom: sleepstate: Increase notifier priority" 2017-05-30 23:09:21 -07:00
Linux Build Service Account
6cec3ff5eb Merge "ais: always do clock set_rate after get_rate" 2017-05-30 16:04:33 -07:00
Linux Build Service Account
1ad752ad89 Merge "Perf: ARM: Support 32bit armv8-pmuv3 driver" 2017-05-30 16:04:32 -07:00
Linux Build Service Account
0b63aa5007 Merge "spcom: open channel return EBUSY when channel in use" 2017-05-30 16:04:31 -07:00
Linux Build Service Account
008dfbc55c Merge "f_audio_source: Use f_audiosource as first device name" 2017-05-30 16:04:31 -07:00
Linux Build Service Account
5f638a12ab Merge "diag: dci: Add validity check for dci client's process descriptor" 2017-05-30 16:04:30 -07:00
Linux Build Service Account
28ca6375c7 Merge "adreno_tz: Remove unnecessary devfreq NULL check in tz_handler()" 2017-05-30 16:04:29 -07:00
Linux Build Service Account
a7f31ff804 Merge "wil6210: fix wil->platform_ops.suspend failure handling" 2017-05-30 16:04:28 -07:00
Linux Build Service Account
3903a9f28c Merge "ARM: dts: msm: enable 11AD keep-radio-on-during-sleep on MSM8998" 2017-05-30 16:04:27 -07:00
Linux Build Service Account
103e31feaa Merge "battery: don't wait for aicl rerun" 2017-05-30 16:04:26 -07:00
Linux Build Service Account
6d0b4d37a3 Merge "smb-lib: ignore disconnects during power role swap" 2017-05-30 16:04:25 -07:00
Linux Build Service Account
4cc716041e Merge "iommu/arm-smmu: Optimized IOMMUS property parsing" 2017-05-30 16:04:24 -07:00
Linux Build Service Account
22d89182ea Merge "ARM: dts: msm: Add support for MSM8996pro UFS based board" 2017-05-30 16:04:24 -07:00
Subash Abhinov Kasiviswanathan
ac90ad6d75 sched: Remove debug WARN_ONCE messages
If flow control functionality is not enabled in traffic controller
userspace modules, WARN_ONCE messages are triggered. Note that qdisc
will still be setup even if these debug messages are logged.
Remove these messages to reduce log spam.

CRs-Fixed: 2053221
Change-Id: I62a2fcb30d19579180b3df16f33953546f94511a
Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
2017-05-30 10:48:12 -07:00
Linux Build Service Account
350f6ac817 Merge "msm: ipa: Fix to use GFP_DMA flag" 2017-05-30 09:01:09 -07:00
Amir Samuelov
d23cacb3ac spcom: open channel return EBUSY when channel in use
The char device /dev/sp_kernel is used for loading SP application and
creating new channel char device, therefore might be temporary busy.
Return EBUSY error to user system call open() so it can retry.

Change-Id: I230577fe6b03ac7afd7175f72f9a3fa80db5a524
Signed-off-by: Amir Samuelov <amirs@codeaurora.org>
2017-05-30 02:54:46 -07:00
Abir Ghosh
25865f691b qbt1000: Fix for incorrect buffer size check and integer overflow
Fix an incorrect buffer size check which might have caused integer
overflow.

CRs-Fixed: 2045285
Change-Id: I3b5b996c7405f51b488d6cbda31c81a9a9905f23
Signed-off-by: Abir Ghosh <abirg@codeaurora.org>
2017-05-29 23:57:06 -07:00
Gopikrishna Mogasati
2b1e32ab83 diag: dci: Add validity check for dci client's process descriptor
This fix checks the validity of dci client's process descriptor
before issuing a signal to it when subsystem restart is performed.
This fix avoids accessing cleaned-up process descriptor's fields.

CRs-Fixed: 2047235
Change-Id: Ic26977dc22c68f0a7007dd963c9273bba2a5dbfe
Signed-off-by: Gopikrishna Mogasati <gmogas@codeaurora.org>
2017-05-30 12:18:34 +05:30
Linux Build Service Account
ace73576d2 Merge "msm: mdss: Fix potential dereferencing of null pointer" 2017-05-29 10:17:24 -07:00
Linux Build Service Account
539f0433bb Merge "Asoc: msm: sdm660: Move mbhc_hs_detect to late_probe" 2017-05-29 01:01:33 -07:00
Linux Build Service Account
b7d425e951 Merge "ASoC: msm: Add IEC_61937_FMT_UPDATE event" 2017-05-28 05:12:00 -07:00
Maya Erez
60c1eb0d65 wil6210: fix wil->platform_ops.suspend failure handling
Current handling of wil->platform_ops.suspend can lead to
bad cases, as wil_status_suspending was cleared before
wil_status_resuming was set and bus request voting was restored
too late.
In addition, bus voting in suspend should be done only at the end
of he suspend flow.

Change-Id: I8856d393c1796a2bd8fd5e07b233a5d61efc80c0
Signed-off-by: Maya Erez <merez@codeaurora.org>
2017-05-28 10:45:19 +03:00
Maya Erez
d07260bed5 wil6210: restore bus voting before resuming the device
Move the bus request restore to be done prior to
sending wmi_resume to the device, as the device can restore
the data path upon receiving this command.

Change-Id: Ib2442fcfea055a855bb6be65f9013bb7ad754767
Signed-off-by: Maya Erez <merez@codeaurora.org>
2017-05-28 10:45:04 +03:00
Linux Build Service Account
19827f9f2e Merge "msm: mdss: Call regulator enable/disable for both DSI controllers" 2017-05-27 18:12:14 -07:00
Linux Build Service Account
d11a00dbfa Merge "msm: mdss: ensure clocks are on till pixel transfer is completed" 2017-05-27 18:12:13 -07:00
Linux Build Service Account
ce48f56032 Merge "msm: mdss: remove client from device list if failed to register" 2017-05-27 18:12:12 -07:00
Linux Build Service Account
8c1e34400a Merge "msm: ipa: fix security issues in ipa wan driver" 2017-05-27 18:12:11 -07:00
Linux Build Service Account
a19821d5d3 Merge "msm: mdss: add recovery if TE is not coming from the panel" 2017-05-27 18:12:04 -07:00
Linux Build Service Account
bc1c25b0ef Merge "msm: mdss: Correct MDSS display wakeup time calculation" 2017-05-27 18:12:03 -07:00
Linux Build Service Account
de3a51ca17 Merge "msm: mdss: remove HDMI connected flags" 2017-05-27 18:12:02 -07:00
Linux Build Service Account
c9b46c3b0c Merge "msm: mdss: remove wait for vsync in display commit" 2017-05-27 18:12:01 -07:00
Linux Build Service Account
bdff9ac244 Merge "ARM: dts: msm: Enable dynamic fps for msm8998" 2017-05-27 18:12:00 -07:00
Linux Build Service Account
988a9ef224 Merge "msm: mdss: Disable traffic shaper in command mode" 2017-05-27 18:11:59 -07:00
Linux Build Service Account
afa71cb2a8 Merge "msm: mdss: Avoid dfps update till unblank is complete" 2017-05-27 18:11:58 -07:00