Am 02.02.25 um 05:33 schrieb Sasha Levin:
This is a note to let you know that I've just added the patch titled
drm/ttm: Add ttm_bo_access
to the 6.12-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git%3Ba=su...
This isn't a bug fix but a new feature and therefore shouldn't be backported.
Regards, Christian.
The filename of the patch is: drm-ttm-add-ttm_bo_access.patch and it can be found in the queue-6.12 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let stable@vger.kernel.org know about it.
commit 73b922f15552bb5b47cbcca4b4d2b131b89b786d Author: Matthew Brost matthew.brost@intel.com Date: Tue Nov 26 09:46:09 2024 -0800
drm/ttm: Add ttm_bo_access [ Upstream commit 7d08df5d0bd3d12d14dcec773fcddbe3eed3a8e8 ] Non-contiguous VRAM cannot easily be mapped in TTM nor can non-visible VRAM easily be accessed. Add ttm_bo_access, which is similar to ttm_bo_vm_access, to access such memory. v4: - Fix checkpatch warnings (CI) v5: - Fix checkpatch warnings (CI) v6: - Fix kernel doc (Auld) v7: - Move ttm_bo_access to ttm_bo_vm.c (Christian) Cc: Christian König <christian.koenig@amd.com> Reported-by: Christoph Manszewski <christoph.manszewski@intel.com> Suggested-by: Thomas Hellström <thomas.hellstrom@linux.intel.com> Signed-off-by: Matthew Brost <matthew.brost@intel.com> Tested-by: Mika Kuoppala <mika.kuoppala@linux.intel.com> Reviewed-by: Matthew Auld <matthew.auld@intel.com> Reviewed-by: Christian König <christian.koenig@amd.com> Link: https://patchwork.freedesktop.org/patch/msgid/20241126174615.2665852-3-matthew.brost@intel.com Stable-dep-of: 5f7bec831f1f ("drm/xe: Use ttm_bo_access in xe_vm_snapshot_capture_delayed") Signed-off-by: Sasha Levin <sashal@kernel.org>
diff --git a/drivers/gpu/drm/ttm/ttm_bo_vm.c b/drivers/gpu/drm/ttm/ttm_bo_vm.c index 4212b8c91dd42..17667ab31ad4c 100644 --- a/drivers/gpu/drm/ttm/ttm_bo_vm.c +++ b/drivers/gpu/drm/ttm/ttm_bo_vm.c @@ -405,13 +405,25 @@ static int ttm_bo_vm_access_kmap(struct ttm_buffer_object *bo, return len; } -int ttm_bo_vm_access(struct vm_area_struct *vma, unsigned long addr,
void *buf, int len, int write)
+/**
- ttm_bo_access - Helper to access a buffer object
- @bo: ttm buffer object
- @offset: access offset into buffer object
- @buf: pointer to caller memory to read into or write from
- @len: length of access
- @write: write access
- Utility function to access a buffer object. Useful when buffer object cannot
- be easily mapped (non-contiguous, non-visible, etc...). Should not directly
- be exported to user space via a peak / poke interface.
- Returns:
- @len if successful, negative error code on failure.
- */
+int ttm_bo_access(struct ttm_buffer_object *bo, unsigned long offset,
{void *buf, int len, int write)
- struct ttm_buffer_object *bo = vma->vm_private_data;
- unsigned long offset = (addr) - vma->vm_start +
((vma->vm_pgoff - drm_vma_node_start(&bo->base.vma_node))
int ret;<< PAGE_SHIFT);
if (len < 1 || (offset + len) > bo->base.size) @@ -429,8 +441,8 @@ int ttm_bo_vm_access(struct vm_area_struct *vma, unsigned long addr, break; default: if (bo->bdev->funcs->access_memory)
ret = bo->bdev->funcs->access_memory(
bo, offset, buf, len, write);
ret = bo->bdev->funcs->access_memory
else ret = -EIO; }(bo, offset, buf, len, write);
@@ -439,6 +451,18 @@ int ttm_bo_vm_access(struct vm_area_struct *vma, unsigned long addr, return ret; } +EXPORT_SYMBOL(ttm_bo_access);
+int ttm_bo_vm_access(struct vm_area_struct *vma, unsigned long addr,
void *buf, int len, int write)
+{
- struct ttm_buffer_object *bo = vma->vm_private_data;
- unsigned long offset = (addr) - vma->vm_start +
((vma->vm_pgoff - drm_vma_node_start(&bo->base.vma_node))
<< PAGE_SHIFT);
- return ttm_bo_access(bo, offset, buf, len, write);
+} EXPORT_SYMBOL(ttm_bo_vm_access); static const struct vm_operations_struct ttm_bo_vm_ops = { diff --git a/include/drm/ttm/ttm_bo.h b/include/drm/ttm/ttm_bo.h index 7b56d1ca36d75..e383dee82001e 100644 --- a/include/drm/ttm/ttm_bo.h +++ b/include/drm/ttm/ttm_bo.h @@ -421,6 +421,8 @@ void ttm_bo_unpin(struct ttm_buffer_object *bo); int ttm_bo_evict_first(struct ttm_device *bdev, struct ttm_resource_manager *man, struct ttm_operation_ctx *ctx); +int ttm_bo_access(struct ttm_buffer_object *bo, unsigned long offset,
vm_fault_t ttm_bo_vm_reserve(struct ttm_buffer_object *bo, struct vm_fault *vmf); vm_fault_t ttm_bo_vm_fault_reserved(struct vm_fault *vmf,void *buf, int len, int write);
On Mon, Feb 03, 2025 at 10:22:57AM +0100, Christian König wrote:
Am 02.02.25 um 05:33 schrieb Sasha Levin:
This is a note to let you know that I've just added the patch titled
drm/ttm: Add ttm_bo_access
to the 6.12-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git%3Ba=su...
This isn't a bug fix but a new feature and therefore shouldn't be backported.
Right, it was added as a dependency for:
Stable-dep-of: 5f7bec831f1f ("drm/xe: Use ttm_bo_access in xe_vm_snapshot_capture_delayed")
But since 5f7bec831f1f is going to be dropped, I'll drop this commit too.
Am 03.02.25 um 13:40 schrieb Sasha Levin:
On Mon, Feb 03, 2025 at 10:22:57AM +0100, Christian König wrote:
Am 02.02.25 um 05:33 schrieb Sasha Levin:
This is a note to let you know that I've just added the patch titled
drm/ttm: Add ttm_bo_access
to the 6.12-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git%3Ba=su...
This isn't a bug fix but a new feature and therefore shouldn't be backported.
Right, it was added as a dependency for:
Stable-dep-of: 5f7bec831f1f ("drm/xe: Use ttm_bo_access in xe_vm_snapshot_capture_delayed")
Ah! Completely missed that line.
But since 5f7bec831f1f is going to be dropped, I'll drop this commit too.
Yeah, that is a good idea. All of this are new features and not bug fixes.
Thanks, Christian.
linux-stable-mirror@lists.linaro.org