Re: [PATCH v3 06/12] drm/ttm: add TTM_PAGE_FLAG_EXTERNAL_MAPPABLE

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 9/16/21 11:58 AM, Matthew Auld wrote:
On 16/09/2021 10:03, Thomas Hellström wrote:
On Thu, 2021-09-16 at 08:55 +0200, Christian König wrote:


Am 15.09.21 um 20:59 schrieb Matthew Auld:
In commit:

commit 667a50db0477d47fdff01c666f5ee1ce26b5264c
Author: Thomas Hellstrom <thellstrom@xxxxxxxxxx>
Date:   Fri Jan 3 11:17:18 2014 +0100

      drm/ttm: Refuse to fault (prime-) imported pages

we introduced the restriction that imported pages should not be
directly
mappable through TTM(this also extends to userptr). In the next
patch we
want to introduce a shmem_tt backend, which should follow all the
existing rules with TTM_PAGE_FLAG_EXTERNAL, since it will need to
handle
swapping itself, but with the above mapping restriction lifted.

Signed-off-by: Matthew Auld <matthew.auld@xxxxxxxxx>
Cc: Thomas Hellström <thomas.hellstrom@xxxxxxxxxxxxxxx>
Cc: Christian König <christian.koenig@xxxxxxx>
---
   drivers/gpu/drm/ttm/ttm_bo_vm.c | 6 ++++--
   include/drm/ttm/ttm_tt.h        | 7 +++++++
   2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/ttm/ttm_bo_vm.c
b/drivers/gpu/drm/ttm/ttm_bo_vm.c
index 708390588c7c..fd6e18f12f50 100644
--- a/drivers/gpu/drm/ttm/ttm_bo_vm.c
+++ b/drivers/gpu/drm/ttm/ttm_bo_vm.c
@@ -163,8 +163,10 @@ vm_fault_t ttm_bo_vm_reserve(struct
ttm_buffer_object *bo,
          * (if at all) by redirecting mmap to the exporter.
          */
         if (bo->ttm && (bo->ttm->page_flags &
TTM_PAGE_FLAG_EXTERNAL)) {
-               dma_resv_unlock(bo->base.resv);
-               return VM_FAULT_SIGBUS;
+               if (!(bo->ttm->page_flags &
TTM_PAGE_FLAG_EXTERNAL_MAPPABLE)) {

I saw there was previously a thought about testing for ttm_bo_type_sg
here. Was that a dead end?

I guess the issue was userptr, which is also EXTERNAL and needs to be rejected here, but underneath it's not type_sg.


OK, I thought userptr was using type_sg. I wonder what it's for if that's not the case...



Just having an explicit MAPPABLE flag or similar seemed the more flexible approach? Happy to try out other ideas.

I'm fine with a flag as well.

/Thomas





[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux