From: Thomas Gleixner <t...@linutronix.de>

There is no reason to disable pagefaults and preemption as a side effect of
kmap_atomic_prot().

Use kmap_local_page_prot() instead and document the reasoning for the
mapping usage with the given pgprot.

Remove the NULL pointer check for the map. These functions return a valid
address for valid pages and the return was bogus anyway as it would have
left preemption and pagefaults disabled.

Signed-off-by: Thomas Gleixner <t...@linutronix.de>
Cc: Christian Koenig <christian.koe...@amd.com>
Cc: Huang Rui <ray.hu...@amd.com>
Cc: David Airlie <airl...@linux.ie>
Cc: Daniel Vetter <dan...@ffwll.ch>
Cc: dri-de...@lists.freedesktop.org
---
 drivers/gpu/drm/ttm/ttm_bo_util.c |   20 ++++++++++++--------
 1 file changed, 12 insertions(+), 8 deletions(-)

--- a/drivers/gpu/drm/ttm/ttm_bo_util.c
+++ b/drivers/gpu/drm/ttm/ttm_bo_util.c
@@ -181,13 +181,15 @@ static int ttm_copy_io_ttm_page(struct t
                return -ENOMEM;
 
        src = (void *)((unsigned long)src + (page << PAGE_SHIFT));
-       dst = kmap_atomic_prot(d, prot);
-       if (!dst)
-               return -ENOMEM;
+       /*
+        * Ensure that a highmem page is mapped with the correct
+        * pgprot. For non highmem the mapping is already there.
+        */
+       dst = kmap_local_page_prot(d, prot);
 
        memcpy_fromio(dst, src, PAGE_SIZE);
 
-       kunmap_atomic(dst);
+       kunmap_local(dst);
 
        return 0;
 }
@@ -203,13 +205,15 @@ static int ttm_copy_ttm_io_page(struct t
                return -ENOMEM;
 
        dst = (void *)((unsigned long)dst + (page << PAGE_SHIFT));
-       src = kmap_atomic_prot(s, prot);
-       if (!src)
-               return -ENOMEM;
+       /*
+        * Ensure that a highmem page is mapped with the correct
+        * pgprot. For non highmem the mapping is already there.
+        */
+       src = kmap_local_page_prot(s, prot);
 
        memcpy_toio(dst, src, PAGE_SIZE);
 
-       kunmap_atomic(src);
+       kunmap_local(src);
 
        return 0;
 }


Reply via email to