Commit f58a37b2 authored by Ard Biesheuvel's avatar Ard Biesheuvel Committed by Matt Fleming

efi/esrt: Use memremap not ioremap to access ESRT table in memory

On ARM and arm64, ioremap() and memremap() are not interchangeable like
on x86, and the use of ioremap() on ordinary RAM is typically flagged
as an error if the memory region being mapped is also covered by the
linear mapping, since that would lead to aliases with conflicting
cacheability attributes.

Since what we are dealing with is not an I/O region with side effects,
using ioremap() here is arguably incorrect anyway, so let's replace
it with memremap() instead.
Acked-by: default avatarPeter Jones <pjones@redhat.com>
Signed-off-by: default avatarArd Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Leif Lindholm <leif.lindholm@linaro.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: default avatarMatt Fleming <matt@codeblueprint.co.uk>
parent 4bc9f92e
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include <linux/device.h> #include <linux/device.h>
#include <linux/efi.h> #include <linux/efi.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/io.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/kobject.h> #include <linux/kobject.h>
#include <linux/list.h> #include <linux/list.h>
...@@ -387,9 +388,9 @@ static int __init esrt_sysfs_init(void) ...@@ -387,9 +388,9 @@ static int __init esrt_sysfs_init(void)
if (!esrt_data || !esrt_data_size) if (!esrt_data || !esrt_data_size)
return -ENOSYS; return -ENOSYS;
esrt = ioremap(esrt_data, esrt_data_size); esrt = memremap(esrt_data, esrt_data_size, MEMREMAP_WB);
if (!esrt) { if (!esrt) {
pr_err("ioremap(%pa, %zu) failed.\n", &esrt_data, pr_err("memremap(%pa, %zu) failed.\n", &esrt_data,
esrt_data_size); esrt_data_size);
return -ENOMEM; return -ENOMEM;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment