summaryrefslogtreecommitdiff
path: root/drivers/gpu/msm/adreno_ringbuffer.h (follow)
Commit message (Collapse)AuthorAge
* Revert "msm: kgsl: Mark the scratch buffer as privileged"LuK13372022-07-27
| | | | | | | | * Requires new GPU firmware This reverts commit adec4f93e1705640e7b03d33394224ff5d835280. Change-Id: I747c00bff92f6e793f207839a7ad0a61b2656f96
* msm: kgsl: Mark the scratch buffer as privilegedAkhil P Oommen2020-08-12
| | | | | | | | | | | | | Mark the scratch buffer as privileged so that it can only be accessed by GPU through the ringbuffer. To accomplish this, we need to: 1. Disable the shadow rptr feature. 2. Trigger RPTR update from GPU using a WHERE_AM_I packet. 3. Add support for the new ucode. Change-Id: I9b388f55f53b69028b9bbb2306cb43fd1297c52f Signed-off-by: Akhil P Oommen <akhilpo@codeaurora.org> Signed-off-by: Archana Sriram <apsrir@codeaurora.org>
* msm: kgsl: Execute user profiling commands in an IBJordan Crouse2019-09-17
| | | | | | | | | | Execute user profiling in an indirect buffer. This ensures that addresses and values specified directly from the user don't end up in the ringbuffer. Change-Id: Ic0dedbadedcaab29ce5738a39c1ff6269261bae4 Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org> Signed-off-by: Harshitha Sai Neelati <hsaine@codeaurora.org>
* msm: kgsl: Modify dispatcher to accept generic objectsTarun Karra2016-10-06
| | | | | | | | | | | | Currently dispatcher accepts kgsl_cmdbatch object. This object is a superset of all the types of objects dispatcher accepts. Split kgsl_cmdbatch object to SYNC and IB/MARKER objects and structure the code to make it easier for new type of objects to be added to the dispatcher queue. CRs-Fixed: 1054354 Change-Id: I2d482d1081ce6fdb7925243c88ce00ea6b864efe Signed-off-by: Tarun Karra <tkarra@codeaurora.org>
* msm: kgsl: Rename cmdbatch to drawobjTarun Karra2016-10-05
| | | | | | | | | | Rename all cmdbatch to drawobj. This forms a platform for future changes where cmdbatch is split into different types of drawobjs. CRs-Fixed: 1054353 Change-Id: Ib84bee679e859db34e0d1f8a0ac70319eabddf53 Signed-off-by: Tarun Karra <tkarra@codeaurora.org>
* msm: kgsl: Force all command level context switches to the GPUJordan Crouse2016-07-20
| | | | | | | | | | | Force any command triggered context switch to the GPU - it should be on the GPU anyway, but we were already passing a flags parameter (unused) so this is a good chance to force the issue and make sure that the cpu path decision isn't in play here. CRs-Fixed: 1009124 Change-Id: Ic0dedbadb277a6498d0840b45c90e1265e2f354a Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
* msm: kgsl: Implement fast preemption for 5XXJordan Crouse2016-07-20
| | | | | | | | | | | Allow 5XX targets to preempt quickly from an atomic context. In particular this allows quicker transition from a high priority ringbuffer to a lower one without having to wait for the worker to schedule. CRs-Fixed: 1009124 Change-Id: Ic0dedbad01a31a5da2954b097cb6fa937d45ef5c Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
* msm: kgsl: Leave the MMU clocks on with the rest of the GPUJordan Crouse2016-07-20
| | | | | | | | | | | It is no longer power efficient to independently enable and disable the MMU clocks. We can safely enable and disable them with the rest of the GPU clocks and take back the infrastructure needed to handle the clocks. CRs-Fixed: 1009124 Change-Id: Ic0dedbadc48095eada9c5fce6004475a2cb0f0a9 Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
* msm: kgsl: Use the GPU to write the RPTRCarter Cooper2016-07-20
| | | | | | | | | | | | | | | | | | | | | | | | | | The memstore shared between the CPU and GPU is old but can not be messed with. Rather than stealing values from it where available, add a new block of shared memory that is exclusive to the driver and GPU. This block can be used more freely than the old memstore block. Program the GPU to write the RPTR out to an address the CPU can read rather than having the CPU read a GPU register directly. There are some very small but very real conditions where different blocks on the GPU have outdated values for the RPTR. When scheduling preemption the value read from the register could not reflect the actual value of the RPTR in the CP. This can cause the save/restore from preemption to give back incorrect RPTR values causing much confusion between the GPU and CPU. Remove the ringbuffers copy of the read pointer shadow. Now that the GPU will update a shared memory address with the value of the read pointer, there is no need to poll the register to get the value and then keep a local copy of it. CRs-Fixed: 987082 Change-Id: Ic44759d1a5c6e48b2f0f566ea8c153f01cf68279 Signed-off-by: Carter Cooper <ccooper@codeaurora.org> Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
* msm: kgsl: Purge unused #definesCarter Cooper2016-05-05
| | | | | | | | | Remove unused #defines, structs and members that are no longer used. CRs-Fixed: 971156 Change-Id: Ibdf6fef6f3f700f3c5315c228c0473e47fb62163 Signed-off-by: Carter Cooper <ccooper@codeaurora.org> Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
* msm: kgsl: Streamline ringbuffer initializationCarter Cooper2016-03-25
| | | | | | | | Move device specific features to the device rather than trying to do them in the common initialization code. Change-Id: I812db29a2eae90ca532755c265aaa2e52db972d7 Signed-off-by: Carter Cooper <ccooper@codeaurora.org>
* msm: kgsl: Refactor MMU/IOMMU supportJordan Crouse2016-03-23
| | | | | | | | | | | | | | | | | | | | | The current MMU code assumes a binary state - either there is a IOMMU or there isn't. This precludes other memory models and makes for a lot of inherent IOMMU knowledge in the generic MMU code and the rest of the driver. Reorganize and cleanup the MMU and IOMMU code: * Add a Kconfig boolean dependent on ARM and/or MSM SMMU support. * Make "nommu" mode an actual MMU subtype and figure out available MMU subtypes at probe time. * Move IOMMU device tree parsing to the IOMMU code. * Move the MMU subtype private structures into struct kgsl_mmu. * Move adreno_iommu specific functions out of other generic adreno code. * Move A4XX specific preemption code out of the ringbuffer code. CRs-Fixed: 970264 Change-Id: Ic0dedbad1293a1d129b7c4ed1105d684ca84d97f Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
* msm: kgsl: Add and use KGSL_DEVICE macroJordan Crouse2016-03-23
| | | | | | | | | | Add a helper macro to convert an adreno_device pointer to a struct kgsl_device pointer. This is mostly syntatic sugar but it makes the code a bit cleaner and it abstracts a bit of the ugliness away. Change-Id: Ic0dedbadd97bda3316a58514a5a64757bd4154c7 Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
* msm: kgsl: Add KGSL_RB_DEVICE macroJordan Crouse2016-03-23
| | | | | | | | | | | | | | The ringbuffer structures are static members of struct adreno_device which means that they are permanently associated with a specific adreno device and by extension a struct kgsl_device too. The upshot is that we can use macro math to derive the adreno device from a ringbuffer pointer and get rid of the device shortcut in the ringbuffer struct. This also gives us a chance to clean up how functions use the ringbuffer and adreno_device structs to limit unnessesary dereferencing. Change-Id: Ic0dedbad909ef71e99cd3319713cee38fb1700f0 Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
* msm: kgsl: Add Qualcomm GPU driverJordan Crouse2016-03-22
Snapshot of the Qualcom Adreno GPU driver (KGSL) as of msm-3.18 commit commit e70ad0cd5efd ("Promotion of kernel.lnx.3.18-151201."). Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>