summaryrefslogtreecommitdiff
path: root/drivers/gpu/msm (follow)
Commit message (Collapse)AuthorAge
...
* | | msm: kgsl: Fix integer overflow in _load_gpmu_firmwareAbhilash Kumar2017-08-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | There is a possibility of integer overflow in the arithmetic calculation for cmd_size. Fix this by adding checks for such arithmetic. Change-Id: I2298a32f8ba3411decb29f55bb7b55e2214de35a Signed-off-by: Abhilash Kumar <krabhi@codeaurora.org>
* | | Merge "msm: kgsl: Add a trace event for the GPU clock"Linux Build Service Account2017-08-03
|\ \ \
| * | | msm: kgsl: Add a trace event for the GPU clockJonathan Wicks2017-08-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If requested, trace the GPU time to ensure a useful mapping regardless of the chosen trace clock. Change-Id: I76a893975de9a278c8178f935991191354f29e2f Signed-off-by: Jonathan Wicks <jwicks@codeaurora.org>
* | | | Merge "msm: kgsl: Set the abnormal power perf counter value to zero"Linux Build Service Account2017-08-03
|\ \ \ \
| * | | | msm: kgsl: Set the abnormal power perf counter value to zeroAbhilash Kumar2017-08-03
| | |/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | During preemption microcode does save restore for all perf counters. If we read the power counters at preemption boundary we might get abnormal value from the perf counter. This will result in showing incorrect GPU busy percentage. Fix this by setting the abnormal power perf counter value with zero. Change-Id: I96ba367ceeeb92d6adb507d0d917113297b4b58d Signed-off-by: Abhilash Kumar <krabhi@codeaurora.org>
* | | | Merge "msm: kgsl: Disallow L2PC during wake up from SLUMBER"Linux Build Service Account2017-08-03
|\ \ \ \ | |/ / / |/| | |
| * | | msm: kgsl: Disallow L2PC during wake up from SLUMBERGaurav Sonwani2017-07-31
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a PM QOS request to disallow L2PC during wake up from SLUMBER state. This is required to improve queue to submit time for first set of GPU commands which results in GPU wake up. Change-Id: Iad1a6dfdf9e1fe034eef4fae526138d724bdd3eb Signed-off-by: Gaurav Sonwani <gsonwani@codeaurora.org>
* | | Merge "msm: kgsl: Do not memset pages to zero while adding to pool"Linux Build Service Account2017-08-01
|\ \ \
| * | | msm: kgsl: Do not memset pages to zero while adding to poolDeepak Kumar2017-06-30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Doing a memset to zero while adding a page to pool is not efficient as the page added to the pool can be returned to system in case shrinker kicks in. In this scenario, time spent in zeroing the page is a waste. Instead of zeroing the page while adding it to pool zero the page when it is taken from the pool. This helps in reducing the time taken to free big chunk of memory. Also, allocation time shouldn't be a problem as zeroing of page anyways happens during allocation in case it is allocated from system. Change-Id: I41ab2cb88fb4fd9854d2cc9a45bb60fc7013286a Signed-off-by: Deepak Kumar <dkumar@codeaurora.org>
* | | | Merge "msm: kgsl: Fix leak when preemption init fails"Linux Build Service Account2017-07-31
|\ \ \ \ | |_|/ / |/| | |
| * | | msm: kgsl: Fix leak when preemption init failsPrakash Kamliya2017-07-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For any reason if preemption initialization fails, we do not free allocated memory for preemption. Free allocated memory when it fails. Change-Id: Ie931766f1ec1de7f3a0522054fc1fcb7b9426be6 Signed-off-by: Prakash Kamliya <pkamliya@codeaurora.org>
* | | | Merge "msm: kgsl: Fix the syncpoint_fence trace"Linux Build Service Account2017-07-28
|\ \ \ \ | |_|_|/ |/| | |
| * | | msm: kgsl: Fix the syncpoint_fence traceSunil Khatri2017-07-24
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We should have a corresponding syncpoint_fence trace for every syncpoint_fence_expire trace. In case the fence is already signaled then make sure to have syncpoint_fence trace before syncpoint_fence_expire trace. Also take an extra refcount for fence which will make sure that the fence pointer is valid in the trace even if the fence is signaled. Change-Id: I2fd8f91c800f89a4a64813a6908eaa0445cf548b Signed-off-by: Sunil Khatri <sunilkh@codeaurora.org>
* / / msm: kgsl: Update total time at right place for accurate GPU busyAbhilash Kumar2017-07-21
|/ / | | | | | | | | | | | | | | | | | | | | For calculation of busy time and total time, KGSL relies on perf counters and CPU clock. These can be a bit out of sync and may give GPU busy greater than 100 percent. Updating time at the right place will give more accurate total time and will avoid crossing 100% in GPU busy calculation. Change-Id: I3cc702492325b9dc44ea2b705e4d9014d95abd33 Signed-off-by: Abhilash Kumar <krabhi@codeaurora.org>
* | msm: kgsl: Change pwrlevels array index type to unsigned intVenkateswara Rao Tadikonda2017-07-14
| | | | | | | | | | | | | | | | Change the array index 'i' of pwrlevels[] to unsigned int, which can't be decremented beyond zero. Change-Id: I9b646fccf03437f6facf0d5938f097916d13d2f2 Signed-off-by: Venkateswara Rao Tadikonda <vtadik@codeaurora.org>
* | Merge "msm: kgsl: Use vma_area_struct with proper locks"Linux Build Service Account2017-07-12
|\ \
| * | msm: kgsl: Use vma_area_struct with proper locksSunil Khatri2017-07-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make sure to use proper locks when using the vma_struct_area. This will avoid the race condition in a scenario where one thread gets a vma_struct_area and other thread is unmapping the vma from the process. Change-Id: I6c7837d1a8dd24fc6955ab5be8b1917a42f2cb53 Signed-off-by: Sunil Khatri <sunilkh@codeaurora.org>
* | | Merge "msm: kgsl: Fix a dead loop issue while changing gpu frequency"Linux Build Service Account2017-07-06
|\ \ \
| * | | msm: kgsl: Fix a dead loop issue while changing gpu frequencyVenkateswara Rao Tadikonda2017-07-05
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There is a dead loop in kgsl_devfreq_target(), while governor request to change GPU frequency. In governor 'userspace' mode, If the requested frequency (set_freq) is more than the configured frequency and max_freq is also set to more than the configured frequency, then there is a dead loop while changing target frequency. Dead loop occurs due to comparing signed integer with unsigned integer. So, type casting unsigned integer to signed integer will terminate the loop when loop variable is less than zero. Change-Id: Ic82b7477d50d1abcd348b011f64246066887922c Signed-off-by: Venkateswara Rao Tadikonda <vtadik@codeaurora.org>
* | | Merge "msm: kgsl: Make sure regulators are ON before GPU clocks are forced on"Linux Build Service Account2017-07-06
|\ \ \
| * | | msm: kgsl: Make sure regulators are ON before GPU clocks are forced onRajesh Kemisetti2017-06-30
| | |/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | The debug option to always ON the GPU clocks does not check the regulator state. If the user tries to set this option while GPU is in Slumber state then enabling clocks will fail. Make sure we enable the GPU regulators before enabling its clocks. Change-Id: Id77773224c674fe2e1b6179a039750b24e5e5f87 Signed-off-by: Rajesh Kemisetti <rajeshk@codeaurora.org>
* | | Merge "msm: kgsl: Add A5XX RBBM registers to pre-crash dumper list"Linux Build Service Account2017-07-05
|\ \ \
| * | | msm: kgsl: Add A5XX RBBM registers to pre-crash dumper listRajesh Kemisetti2017-06-28
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | Add all A5XX RBBM status registers to pre-crash dumper registers list so that snapshot captures the accurate state of the individual blocks. Change-Id: I774b84f3cb69b7b0aa119e87229d9ec9c96bbbb4 Signed-off-by: Rajesh Kemisetti <rajeshk@codeaurora.org>
* | / msm: kgsl: Add a NULL check for limit pointerHareesh Gundu2017-07-04
| |/ |/| | | | | | | | | | | | | KGSL power limit pointer can be error or NULL. Add a NULL check for limit pointer to avoid NULL pointer dereference. Change-Id: I4aacaddd1cd9b34f1befc21807eb7ab577f0a7f1 Signed-off-by: Hareesh Gundu <hareeshg@codeaurora.org>
* | Merge "msm: kgsl: Limit the frequency of logging on memory allocation failure"Linux Build Service Account2017-07-02
|\ \
| * | msm: kgsl: Limit the frequency of logging on memory allocation failureDeepak Kumar2017-06-30
| |/ | | | | | | | | | | | | | | | | Excessive logging due to several successive memory allocation failure may cause a watchdog bite. Hence, this change adds ratelimit to logging on memory allocation failure. Change-Id: I8e5d78918a32c48ef7fa587f3dc63cbd1f065d5f Signed-off-by: Deepak Kumar <dkumar@codeaurora.org>
* | Merge "msm: kgsl: Directly return page size of the supported pool"Linux Build Service Account2017-07-02
|\ \ | |/ |/|
| * msm: kgsl: Directly return page size of the supported poolDeepak Kumar2017-06-21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In current code, if a request comes to allocate a page of a size for which pool is not supported EAGAIN is returned with a page size of PAGE_SIZE << --order. This is not efficient as it results in multiple retries in case pool of size = PAGE_SIZE << --order is also not supported. Instead of retrying with lower order page in a sequential manner this change directly returns the page size of the pool that is supported. Change-Id: Ib82ae5be7e4109fdc0a3d72bcbcd4b47cfb2e266 Signed-off-by: Deepak Kumar <dkumar@codeaurora.org>
* | Merge "Revert "msm: kgsl: Offload mementry destroy work to separate thread""Linux Build Service Account2017-06-22
|\ \
| * | Revert "msm: kgsl: Offload mementry destroy work to separate thread"Hareesh Gundu2017-06-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 281fcb5e184b9d1074dd404016cebacce12a8664. To address the issue with the OOMkiller causing to kill the foreground application. Change-Id: Ie4c078d706fdf1c13ad45840f72b414ddc37c1d0 Signed-off-by: Hareesh Gundu <hareeshg@codeaurora.org> Signed-off-by: Venkateswara Rao Tadikonda <vtadik@codeaurora.org>
* | | msm: kgsl: convert some workqueues to use kthreads.Tim Murray2017-06-21
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | adreno_dispatch_work and _kgsl_event_worker are both low-latency low-runtime functions that are in the critical path of GPU rendering. Moving them out of workqueues and into a dedicated FIFO kthread avoids significant jitter. bug 30342017 Git-commit: 1a7a93bd33f48a369de29f6f2b56251127bf6ab4 Git-repo: https://android.googlesource.com/kernel/msm Change-Id: I83562f488c34c2ab001c8ea79e7f09b633c658bd Signed-off-by: Tim Murray <timmurray@google.com> Signed-off-by: Abhilash Kumar <krabhi@codeaurora.org>
* | Merge "Revert "msm: kgsl: Update QoS settings for A508 VBIF as recommended""Linux Build Service Account2017-06-19
|\ \
| * | Revert "msm: kgsl: Update QoS settings for A508 VBIF as recommended"Rajesh Kemisetti2017-06-07
| |/ | | | | | | | | | | | | | | | | This reverts commit ef93af2324f511966d49a03a9878eae1f6072924. To fix unexpected GPU hangs and TLB synctimeouts. Change-Id: I66da6e92db4affe55557f4f84ee127f6babb08b7 Signed-off-by: Rajesh Kemisetti <rajeshk@codeaurora.org>
* | Merge "msm: kgsl: Reset busy data after soft reset"Linux Build Service Account2017-06-19
|\ \
| * | msm: kgsl: Reset busy data after soft resetAbhilash Kumar2017-06-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | GPU perfcounters gets reset after a soft reset. Currently GPU busy stats is using previous values after a soft reset. This might lead to invalid GPU busy calculations. Start GPU stats from the scratch after a soft reset to get valid GPU busy calculations. Change-Id: Ia38c18ad59f438d724ff4710ee2b350853b3810d Signed-off-by: Abhilash Kumar <krabhi@codeaurora.org>
* | | Merge "msm: kgsl: Defer issue commands to worker thread"Linux Build Service Account2017-06-15
|\ \ \ | |/ / |/| |
| * | msm: kgsl: Defer issue commands to worker threadHareesh Gundu2017-06-13
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | Currently submit ioctl getting blocked till the commands gets added to ringbuffer incase inflight count is less than context burst count. If the submit command happens in GPU slumber state, it will add the GPU wakeup time to submit IOCTL. This will add latency in preparing next frame in CPU side. Defer commands submission to dispatcher worker, if the GPU is in slumber state. CRs-Fixed: 2055107 Change-Id: I099ba721e02bbcd8ccadb1bc518c7c1ef4fb7e21 Signed-off-by: Hareesh Gundu <hareeshg@codeaurora.org>
* / msm: kgsl: Log clk set, enable and prepare failureHareesh Gundu2017-06-09
|/ | | | | | | | Handle the clk API return value so that it’s easy to catch un clocked GPU register access. Change-Id: I5a1a9a6cbd673394f126bb17b849393268a22b1b Signed-off-by: Hareesh Gundu <hareeshg@codeaurora.org>
* Merge "msm: kgsl: Use per page cache operation instead of bulk cache operation"Linux Build Service Account2017-06-01
|\
| * msm: kgsl: Use per page cache operation instead of bulk cache operationDeepak Kumar2017-05-26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | For any cache operation, the current code tries to map all pages to the kernel using vmap in case sg table is not available and then performs the requested cache operation. If vmap fails because of memory crunch ioctl just returns failure. This change avoids using vmap and performs per page cache operation even when sg table is not available. This is done to avoid failures because of vmap especially on 32 bit systems. Change-Id: I123b46e6a55a62cbf934ab6a2a49dcd1f0d4c7d4 Signed-off-by: Deepak Kumar <dkumar@codeaurora.org>
* | Merge "msm: kgsl: Deal with a NULL pointer when creating default pagetable"Linux Build Service Account2017-05-26
|\ \
| * | msm: kgsl: Deal with a NULL pointer when creating default pagetableLynus Vaz2017-05-26
| | | | | | | | | | | | | | | | | | | | | Return an appropriate error code if the default pagetable is NULL. Change-Id: Ic88b066c40a8f840d95fd3fbc9ee9274c428b66a Signed-off-by: Lynus Vaz <lvaz@codeaurora.org>
* | | Merge "msm: kgsl: Update QoS settings for A508 VBIF as recommended"Linux Build Service Account2017-05-26
|\ \ \ | |/ / |/| |
| * | msm: kgsl: Update QoS settings for A508 VBIF as recommendedRajesh Kemisetti2017-05-25
| |/ | | | | | | | | | | | | | | Update QoS settings for A508 VBIF based on recommendation. VBIF_GATE_OFF_WRREQ_EN register needs to be programmed by SW. Change-Id: I7d41c8350ad09c595f288bd2a2b45fc2abef15f8 Signed-off-by: Rajesh Kemisetti <rajeshk@codeaurora.org>
* | Merge "msm: kgsl: Return mementry only if pending_free is not set"Linux Build Service Account2017-05-25
|\ \
| * | msm: kgsl: Return mementry only if pending_free is not setDeepak Kumar2017-05-23
| |/ | | | | | | | | | | | | | | | | Return mementry from kgsl_sharedmem_find only if pending_free is not set for that mementry. This is necessary to avoid use of a mementry after it is already marked for free. Change-Id: I23111e9c82a88ccbda2ab259074c38d91f9ff5cb Signed-off-by: Deepak Kumar <dkumar@codeaurora.org>
* / msm: kgsl: Don't delete uninitialized preemption timerWenbin Wang2017-05-22
|/ | | | | | | | | | | | | | If we delete uninitialized timer on CONFIG_DEBUG_OBJECTS disabled build del_timer_sync() will block for ever. For all A3xx targets preemption timer is not initialized, but dispatcher fault handler is trying to delete the uninitialized preemption timer. Fix this issue by adding a preemption check before we delete it. CRs-Fixed: 2023690 Change-Id: I2c51a0b2286b82bf2eb5ee68d923dd9585f07f00 Signed-off-by: Wenbin Wang <wwenbin@codeaurora.org> Signed-off-by: Abhilash Kumar <krabhi@codeaurora.org>
* msm: kgsl: Offload mementry destroy work to separate threadDeepak Kumar2017-05-11
| | | | | | | | | | | Any memory free ioctl doesn't need to be blocked till the corresponding mementry is destroyed. This change defers the mementry put to unblock all memory free ioctls immediately. This is done to reduce the time spent by user applications in waiting for memory to be freed. Change-Id: Iaa37ac5dbdedc3d02c41886c2bdf7f3d016176ac Signed-off-by: Deepak Kumar <dkumar@codeaurora.org>
* Merge "msm: kgsl: Perform cache operation with kernel address"Linux Build Service Account2017-05-01
|\
| * msm: kgsl: Perform cache operation with kernel addressHareesh Gundu2017-04-26
| | | | | | | | | | | | | | | | | | Kernel should never access untrusted pointers directly. If the address is not mapped to kernel, map to kernel address space and perform cache related operation. Change-Id: I433befcde620e51b8ec17954ddb710f6084e0592 Signed-off-by: Hareesh Gundu <hareeshg@codeaurora.org>