[PATCH v3 01/12] drm/ttm: stop setting page->index for the ttm_tt

Christian König christian.koenig at amd.com
Thu Sep 16 06:47:36 UTC 2021


Am 15.09.21 um 20:59 schrieb Matthew Auld:
> In commit:
>
> commit 58aa6622d32af7d2c08d45085f44c54554a16ed7
> Author: Thomas Hellstrom <thellstrom at vmware.com>
> Date:   Fri Jan 3 11:47:23 2014 +0100
>
>      drm/ttm: Correctly set page mapping and -index members
>
> we started setting the page->mapping and page->index to point to the
> virtual address space, if the pages were faulted with TTM. Apparently
> this was needed for core-mm to able to reverse lookup the virtual
> address given the struct page, and potentially unmap it from the page
> tables. However as pointed out by Thomas, since we are now using
> PFN_MAP, instead of say PFN_MIXED, this should no longer be the case.
>
> There was also apparently some usecase in vmwgfx which needed this for
> dirty tracking, but that also doesn't appear to be the case anymore, as
> pointed out by Thomas.
>
> We still need keep the page->mapping for now, since that is still needed
> for different reasons, but we try to address that in the next patch.
>
> Signed-off-by: Matthew Auld <matthew.auld at intel.com>
> Cc: Thomas Hellström <thomas.hellstrom at linux.intel.com>
> Cc: Christian König <christian.koenig at amd.com>

Reviewed-by: Christian König <christian.koenig at amd.com>

Fingers crossed that this really works as documented.

> ---
>   drivers/gpu/drm/ttm/ttm_bo_vm.c | 2 --
>   drivers/gpu/drm/ttm/ttm_tt.c    | 4 +---
>   2 files changed, 1 insertion(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/ttm/ttm_bo_vm.c b/drivers/gpu/drm/ttm/ttm_bo_vm.c
> index f56be5bc0861..906ec8a1bf5a 100644
> --- a/drivers/gpu/drm/ttm/ttm_bo_vm.c
> +++ b/drivers/gpu/drm/ttm/ttm_bo_vm.c
> @@ -346,8 +346,6 @@ vm_fault_t ttm_bo_vm_fault_reserved(struct vm_fault *vmf,
>   			} else if (unlikely(!page)) {
>   				break;
>   			}
> -			page->index = drm_vma_node_start(&bo->base.vma_node) +
> -				page_offset;
>   			pfn = page_to_pfn(page);
>   		}
>   
> diff --git a/drivers/gpu/drm/ttm/ttm_tt.c b/drivers/gpu/drm/ttm/ttm_tt.c
> index dae52433beeb..1cc04c224988 100644
> --- a/drivers/gpu/drm/ttm/ttm_tt.c
> +++ b/drivers/gpu/drm/ttm/ttm_tt.c
> @@ -367,10 +367,8 @@ static void ttm_tt_clear_mapping(struct ttm_tt *ttm)
>   	if (ttm->page_flags & TTM_PAGE_FLAG_SG)
>   		return;
>   
> -	for (i = 0; i < ttm->num_pages; ++i) {
> +	for (i = 0; i < ttm->num_pages; ++i)
>   		(*page)->mapping = NULL;
> -		(*page++)->index = 0;
> -	}
>   }
>   
>   void ttm_tt_unpopulate(struct ttm_device *bdev, struct ttm_tt *ttm)



More information about the dri-devel mailing list