- 12 12月, 2018 40 次提交
-
-
由 Jonathan Marek 提交于
Makes it possible to have MMU for GPU but not display. Signed-off-by: NJonathan Marek <jonathan@marek.ca> Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Jonathan Marek 提交于
For allocation in contiguous memory when the GPU has MMU but not mdp4. Signed-off-by: NJonathan Marek <jonathan@marek.ca> Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Jonathan Marek 提交于
Signed-off-by: NJonathan Marek <jonathan@marek.ca> Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Rob Clark 提交于
Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Rob Clark 提交于
Add UAPI to get/set GEM objects' debug name. Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Rob Clark 提交于
Prep work to add a way to get/set the GEM objects debug name. Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Rob Clark 提交于
To lower CPU overhead, future userspace will be switching to pinning iova and avoiding the use of relocs, and only include cmds table entries for IB1 level cmdstream (but not IB2 or state-groups). This leaves the kernel unsure what to dump for rd/hangrd cmdstream dumping. So add a MSM_SUBMIT_BO_DUMP flag so userspace can indicate buffers that contain cmdstream (or are otherwise important to dump). Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Sharat Masetty 提交于
When the userspace tries to read the crashstate dump, the read side implementation in the driver currently ascii85 encodes all the binary buffers and it does this each time the read system call is called. A userspace tool like cat typically does a page by page read and the number of read calls depends on the size of the data captured by the driver. This is certainly not desirable and does not scale well with large captures. This patch encodes the buffer only once in the read path. With this there is an immediate >10X speed improvement in crashstate save time. Signed-off-by: NSharat Masetty <smasetty@codeaurora.org> Reviewed-by: NJordan Crouse <jcrouse@codeaurora.org> Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Jordan Crouse 提交于
For reasons that I'm sure made perfect sense at the time we were opting to defer the iova alloc / pin on the ringbuffer until HW init time so when we moved to iova reference counting we ended up adding a reference count every time the hardware started. Not that it mattered (because the ring is always around) but it did make the debug output look odd. Allocate and pin the iova at create time instead. Signed-off-by: NJordan Crouse <jcrouse@codeaurora.org> Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Jordan Crouse 提交于
For debugging purposes it is useful to assign descriptions to buffers so that we know what they are used for. Add a field to the buffer object and use that to name the various kernel side allocations which ends up looking like like this in /d/dri/X/gem: flags id ref offset kaddr size madv name 00040000: I 0 ( 1) 00000000 0000000070b79eca 00004096 memptrs vmas: [gpu: 01000000,mapped,inuse=1] 00020000: I 0 ( 1) 00000000 0000000031ed4074 00032768 ring0 Signed-off-by: NJordan Crouse <jcrouse@codeaurora.org> Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Jordan Crouse 提交于
Add a reference count to track how many times a particular chunk of iova memory is pinned (mapped) in the iomu and add msm_gem_unpin_iova to give up references. It is important to note that msm_gem_unpin_iova replaces msm_gem_put_iova because the new implicit behavior that an assigned iova in a given vma is now valid for the life of the buffer and what we are really focusing on is the use of that iova. For now the unmappings are lazy; once the reference counts go to zero they *COULD* be unmapped dynamically but that will require an outside force such as a shrinker or mm_notifiers. For now, we're just focusing on getting the counting right and setting ourselves up to be ready for the future. Signed-off-by: NJordan Crouse <jcrouse@codeaurora.org> Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Jordan Crouse 提交于
Add a new function to get and pin the iova memory in one step (basically renaming the old msm_gem_get_iova function) and switch msm_gem_get_iova() to only allocate an iova but not map it in the IOMMU. This is only currently used by msm_ioctl_gem_info() since all other users of of the iova expect that the memory be immediately available. Signed-off-by: NJordan Crouse <jcrouse@codeaurora.org> Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Jordan Crouse 提交于
Add headers for the 'gem' debugfs file to make it easier to remember what all the values mean and move the list of virtual address regions to the next line and add the name and map status to make it clearer what we are looking at. Signed-off-by: NJordan Crouse <jcrouse@codeaurora.org> Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Jordan Crouse 提交于
Split the operation of msm_gem_get_iova into two operations: 1) allocate an iova and 2) map (pin) the backing memory int the iommu. This is the first step toward allowing memory pinning to occur independently of the iova management. Signed-off-by: NJordan Crouse <jcrouse@codeaurora.org> Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Jordan Crouse 提交于
The scatter gather table doesn't need to be passed in for the MMU unmap function. Signed-off-by: NJordan Crouse <jcrouse@codeaurora.org> Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Jordan Crouse 提交于
Buffer objects allocated with msm_gem_kernel_new() are mostly freed the same way so we can save a few lines of code with a common function. Signed-off-by: NJordan Crouse <jcrouse@codeaurora.org> Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Jordan Crouse 提交于
The a6xx GPU state allocates a LOT of memory. Add a bit of infrastructure to track the memory allocations in the GPU structure and delete them when the state is destroyed much the same way that devm works with the device model as a whole. This protects against the developer accidentally forgetting to add a kfree() to an ever growing list. Signed-off-by: NJordan Crouse <jcrouse@codeaurora.org> Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Jordan Crouse 提交于
Add support for gathering and dumping the a6xx GPU state including registers, GMU registers, indexed registers, shader blocks, context clusters and debugbus. v2: Fix bugs discovered by Sharat Masetty Signed-off-by: NJordan Crouse <jcrouse@codeaurora.org> Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Jordan Crouse 提交于
If the GPU target doesn't define a list of registers then gracefully skip capturing and/or printing them. This is used by more complex targets like 6xx that have other means of capturing register values. Signed-off-by: NJordan Crouse <jcrouse@codeaurora.org> Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Jordan Crouse 提交于
The gpu_poll_timeout() function can be useful to multiple targets so mvoe it into adreno_gpu.h from the a5xx code. Signed-off-by: NJordan Crouse <jcrouse@codeaurora.org> Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Jordan Crouse 提交于
Instead of trying to store all the tagged buffers from a hanging submit only store the command buffers that were not imported. This cuts down on the amount of data stored in the GPU state to the base minimum of useful information. The downside is that this will make it more difficult to successfully replay a hang with just the GPU state but there isn't any reason why that functionality can't be added back in later once we've figured out how to better communicate such massive amounts of data. Signed-off-by: NJordan Crouse <jcrouse@codeaurora.org> Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Jordan Crouse 提交于
Add trace events to track the progress of a GPU submission msm_gpu_submit occurs at the beginning of the submissions, msm_gpu_submit_flush happens when the submission is put on the ringbuffer and msm_submit_flush_retired is sent when the operation is retired. To make it easier to track the operations a unique sequence number is assigned to each submission and displayed in each event output so a human or a script can easily associate the events related to a specific submission. Signed-off-by: NJordan Crouse <jcrouse@codeaurora.org> Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Jordan Crouse 提交于
Add infrastructure to track statistics for GPU submissions by sampling certain perfcounters before and after a submission. To store the statistics, the per-ring memptrs region is expanded to include room for up to 64 entries - this should cover a reasonable amount of inflight submissions without worrying about losing data. The target specific code inserts PM4 commands to sample the counters before and after submission and store them in the data region. The CPU can access the data after the submission retires to make sense of the statistics and communicate them to the user. Signed-off-by: NJordan Crouse <jcrouse@codeaurora.org> Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Jordan Crouse 提交于
If any of the function calls in _msm_gem_kernel_new fail we need to make sure to dereference the GEM object with the appropriate function for the current locking state. Signed-off-by: NJordan Crouse <jcrouse@codeaurora.org> Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Jordan Crouse 提交于
Allocate the correct buffer size for the GPU memptrs. The incorrect size hasn't affected us thus far since the incorrect size was larger than the intended size and we're still stuck on page sized granularity anyway but technically correct is the best kind of correct. Signed-off-by: NJordan Crouse <jcrouse@codeaurora.org> Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Rob Clark 提交于
Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Jeykumar Sankaran 提交于
Specify geometry for DPU iommu domain which sets the address space for gem allocations. Signed-off-by: NJeykumar Sankaran <jsanka@codeaurora.org> Suggested-by: NJordan Crouse <jcrouse@codeaurora.org> Suggested-by: NVivek Gautam <vivek.gautam@codeaurora.org> Acked-by: NJordan Crouse <jcrouse@codeaurora.org> Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Mamta Shukla 提交于
Use DRM_DEV_INFO/ERROR/WARN instead of dev_info/err/debug to generate drm-formatted specific log messages so that it will be easy to differentiate in case of multiple instances of driver. Signed-off-by: NMamta Shukla <mamtashukla555@gmail.com> Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Sean Paul 提交于
They're not needed. Reviewed-by: NJeykumar Sankaran <jsanka@codeaurora.org> Signed-off-by: NSean Paul <seanpaul@chromium.org> Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Sean Paul 提交于
Local variable is not needed and condition can't be hit. Reviewed-by: NJeykumar Sankaran <jsanka@codeaurora.org> Signed-off-by: NSean Paul <seanpaul@chromium.org> Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Sean Paul 提交于
I noticed an empty label while driving by and decided to use coccinelle to see if there were any more. Here's the spatch and the invocation: --- @@ identifier lbl; expression E; @@ - goto lbl; + return E; ... - lbl: return E; @@ identifier lbl; @@ - goto lbl; + return; ... - lbl: - return; --- spatch --allow-inconsistent-paths --sp-file file.spatch --dir drivers/gpu/drm/msm/disp/dpu1 --in-place --- Reviewed-by: NJeykumar Sankaran <jsanka@codeaurora.org> Signed-off-by: NSean Paul <seanpaul@chromium.org> Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Sean Paul 提交于
Per chapter 15 of coding-style, removing 'inline' keyword from functions that are larger than a typical macro. In a couple of cases I've simplified the function and kept the inline. Reviewed-by: NJeykumar Sankaran <jsanka@codeaurora.org> Signed-off-by: NSean Paul <seanpaul@chromium.org> Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Sean Paul 提交于
It's unused, remove it. Reviewed-by: NJeykumar Sankaran <jsanka@codeaurora.org> Signed-off-by: NSean Paul <seanpaul@chromium.org> Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Sean Paul 提交于
These functions aren't used anywhere, remove them. Reviewed-by: NJeykumar Sankaran <jsanka@codeaurora.org> Signed-off-by: NSean Paul <seanpaul@chromium.org> Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Sean Paul 提交于
We call out of the virt encoder into phys only to call back into the virt for hw reset. So remove the indirection and just call the virt function directly. Reviewed-by: NJeykumar Sankaran <jsanka@codeaurora.org> Signed-off-by: NSean Paul <seanpaul@chromium.org> Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Bruce Wang 提交于
Since we removed all suspend logic from the crtc code (see patch 3/4), dpu_crtc_reset does the same things as drm_atomic_helper_crtc_reset, so let's just replace it with a call to the atomic helper. v3: added patch to patchset Reviewed-by: NSean Paul <seanpaul@chromium.org> Signed-off-by: NBruce Wang <bzwang@chromium.org> Signed-off-by: NSean Paul <seanpaul@chromium.org> Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Bruce Wang 提交于
Since drm core's modeset locks serialize atomic commits, we don't need to track whether or not we're in a suspended state from inside the crtc for dpu_crtc_enable/disable. This patch removes the suspend logic from the crtc and removes the relevant tracing from dpu_trace. Since we removed all calls to dpu_kms_is_suspend_state, we can remove that function and the suspend_state field of dpu_kms as well. v2: added patch to patchset v3: reworded commit body and moved deletion of dpu_kms_is_suspend_state and suspend_state to this patch Reviewed-by: NSean Paul <seanpaul@chromium.org> Signed-off-by: NBruce Wang <bzwang@chromium.org> Signed-off-by: NSean Paul <seanpaul@chromium.org> Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Bruce Wang 提交于
Removes the traces of the non-atomic helper calls in msm_pm_suspend/resume since we just deleted those functions (see patch 1). Also removes the drm_kms_helper_poll_disable/enable calls, since the DRM_CONNECTOR_POLL_CONNECT flag is never set so periodic polling doesn't happen anyways. v2: reorganized patch order v3: made error checks less severe Reviewed-by: NSean Paul <seanpaul@chromium.org> Signed-off-by: NBruce Wang <bzwang@chromium.org> Signed-off-by: NSean Paul <seanpaul@chromium.org> Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Bruce Wang 提交于
PM resume was crashing during dpu_kms_pm_resume. This patch removes dpu_kms_pm_suspend/resume so that msm_pm_suspend/resume uses the atomic helpers instead (see next patch). This patch also removes dpu_kms_is_suspend_blocked since it is never called. v2: Reorganized patches in patchset Signed-off-by: NBruce Wang <bzwang@chromium.org> Reviewed-by: NSean Paul <seanpaul@chromium.org> Signed-off-by: NSean Paul <seanpaul@chromium.org> Signed-off-by: NRob Clark <robdclark@gmail.com>
-
由 Sean Paul 提交于
I found these tracepoints useful for debugging cursor/ctl, someone else might find them useful too Reviewed-by: NJeykumar Sankaran <jsanka@codeaurora.org> Reviewed-by: NAbhinav Kumar <abhinavk@codeaurora.org> Signed-off-by: NSean Paul <seanpaul@chromium.org> Signed-off-by: NRob Clark <robdclark@gmail.com>
-