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 <[email protected]>
Suggested-by: Christian König <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c
index 256b95232de5..b2033f8352f5 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c
@@ -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;
 }
 
-- 
2.34.1

Reply via email to