diff options
author | Thomas Zimmermann <tzimmermann@suse.de> | 2024-01-05 09:25:17 +0100 |
---|---|---|
committer | Thomas Zimmermann <tzimmermann@suse.de> | 2024-01-08 09:59:47 +0100 |
commit | f5b6fd4ea320176468597afd8343e4b94544f986 (patch) | |
tree | fa42ceb769231552ed1f26cca5ee89a4aed1f44a | |
parent | 26a4591b31916e1c53a7c64fa3ba3fc7cc5d549f (diff) | |
download | lwn-f5b6fd4ea320176468597afd8343e4b94544f986.tar.gz lwn-f5b6fd4ea320176468597afd8343e4b94544f986.zip |
drm/mgag200: Fix caching setup for remapped video memory
I/O video memory for the framebuffer supports write-combine caching
mode. Simplify the driver's code that sets up the caching mode.
* Map video memory with ioremap_wc(), which automatically sets up
the PAT entry with write-combine caching.
* Remove the now obsolete call to devm_arch_io_reserve_memtype_wc().
It is only required to mmap the video memory to user space, which the
driver doesn't do.
* According to the PAT documentation, arch_phys_wc_add() is best
called after remapping I/O memory, so move it after ioremap.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Jocelyn Falempe <jfalempe@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240105082714.21881-1-tzimmermann@suse.de
-rw-r--r-- | drivers/gpu/drm/mgag200/mgag200_drv.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c b/drivers/gpu/drm/mgag200/mgag200_drv.c index 2fb18b782b05..54fce00e2136 100644 --- a/drivers/gpu/drm/mgag200/mgag200_drv.c +++ b/drivers/gpu/drm/mgag200/mgag200_drv.c @@ -146,14 +146,13 @@ int mgag200_device_preinit(struct mga_device *mdev) } mdev->vram_res = res; - /* Don't fail on errors, but performance might be reduced. */ - devm_arch_io_reserve_memtype_wc(dev->dev, res->start, resource_size(res)); - devm_arch_phys_wc_add(dev->dev, res->start, resource_size(res)); - - mdev->vram = devm_ioremap(dev->dev, res->start, resource_size(res)); + mdev->vram = devm_ioremap_wc(dev->dev, res->start, resource_size(res)); if (!mdev->vram) return -ENOMEM; + /* Don't fail on errors, but performance might be reduced. */ + devm_arch_phys_wc_add(dev->dev, res->start, resource_size(res)); + return 0; } |