]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drm/xe: Use devm_ioremap_wc for VRAM mapping and drop manual unmap
authorPiotr Piórkowski <piotr.piorkowski@intel.com>
Tue, 21 Oct 2025 13:34:23 +0000 (09:34 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 23 Oct 2025 14:24:40 +0000 (16:24 +0200)
[ Upstream commit 922ae875230be91c7f05f2aa90d176b6693e2601 ]

Let's replace the manual call to ioremap_wc function with devm_ioremap_wc
function, ensuring that VRAM mappings are automatically released when
the driver is detached.
Since devm_ioremap_wc registers the mapping with the device's managed
resources, the explicit iounmap call in vram_fini is no longer needed,
so let's remove it.

Signed-off-by: Piotr Piórkowski <piotr.piorkowski@intel.com>
Suggested-by: Matthew Auld <matthew.auld@intel.com>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
Acked-by: Matthew Brost <matthew.brost@intel.com>
Link: https://lore.kernel.org/r/20250714184818.89201-2-piotr.piorkowski@intel.com
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
Stable-dep-of: d30203739be7 ("drm/xe: Move rebar to be done earlier")
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/gpu/drm/xe/xe_vram.c

index e421a74fb87c66dd934065ede80da43aa3c501e3..3a4c84e9efc66791a858716eeaa566ee9c18fe41 100644 (file)
@@ -156,7 +156,8 @@ static int determine_lmem_bar_size(struct xe_device *xe)
        xe->mem.vram.dpa_base = 0;
 
        /* set up a map to the total memory area. */
-       xe->mem.vram.mapping = ioremap_wc(xe->mem.vram.io_start, xe->mem.vram.io_size);
+       xe->mem.vram.mapping = devm_ioremap_wc(&pdev->dev, xe->mem.vram.io_start,
+                                              xe->mem.vram.io_size);
 
        return 0;
 }
@@ -278,9 +279,6 @@ static void vram_fini(void *arg)
        struct xe_tile *tile;
        int id;
 
-       if (xe->mem.vram.mapping)
-               iounmap(xe->mem.vram.mapping);
-
        xe->mem.vram.mapping = NULL;
 
        for_each_tile(tile, xe, id)