drm/amdgpu: Fix dummy_read_page overlapping mappings
authorPrike Liang <Prike.Liang@amd.com>
Thu, 24 Oct 2024 08:51:05 +0000 (16:51 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 4 Nov 2024 17:05:30 +0000 (12:05 -0500)
Use the dma_map_page_attrs() with DMA_ATTR_SKIP_CPU_SYNC
attribute setting to handle the dummy page overlapping
mappings.

Signed-off-by: Prike Liang <Prike.Liang@amd.com>
Suggested-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c

index 256b952..b2033f8 100644 (file)
@@ -78,8 +78,9 @@ static int amdgpu_gart_dummy_page_init(struct amdgpu_device *adev)
 
        if (adev->dummy_page_addr)
                return 0;
-       adev->dummy_page_addr = dma_map_page(&adev->pdev->dev, dummy_page, 0,
-                                            PAGE_SIZE, DMA_BIDIRECTIONAL);
+       adev->dummy_page_addr = dma_map_page_attrs(&adev->pdev->dev, dummy_page, 0,
+                                                       PAGE_SIZE, DMA_BIDIRECTIONAL,
+                                                       DMA_ATTR_SKIP_CPU_SYNC);
        if (dma_mapping_error(&adev->pdev->dev, adev->dummy_page_addr)) {
                dev_err(&adev->pdev->dev, "Failed to DMA MAP the dummy page\n");
                adev->dummy_page_addr = 0;
@@ -99,8 +100,9 @@ void amdgpu_gart_dummy_page_fini(struct amdgpu_device *adev)
 {
        if (!adev->dummy_page_addr)
                return;
-       dma_unmap_page(&adev->pdev->dev, adev->dummy_page_addr, PAGE_SIZE,
-                      DMA_BIDIRECTIONAL);
+       dma_unmap_page_attrs(&adev->pdev->dev, adev->dummy_page_addr, PAGE_SIZE,
+                               DMA_BIDIRECTIONAL,
+                               DMA_ATTR_SKIP_CPU_SYNC);
        adev->dummy_page_addr = 0;
 }