]> git.ipfire.org Git - people/arne_f/kernel.git/commitdiff
efi/esrt: Use memremap not ioremap to access ESRT table in memory
authorArd Biesheuvel <ard.biesheuvel@linaro.org>
Mon, 11 Jul 2016 19:00:45 +0000 (21:00 +0200)
committerMatt Fleming <matt@codeblueprint.co.uk>
Fri, 9 Sep 2016 15:08:39 +0000 (16:08 +0100)
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: Peter Jones <pjones@redhat.com>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Leif Lindholm <leif.lindholm@linaro.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Matt Fleming <matt@codeblueprint.co.uk>
drivers/firmware/efi/esrt.c

index b93cd11f9bccdb8fcc0b6a3fa08eba93e73aa0f1..14914074f716ed41cc3fccc42c1e333810ecf890 100644 (file)
@@ -16,6 +16,7 @@
 #include <linux/device.h>
 #include <linux/efi.h>
 #include <linux/init.h>
+#include <linux/io.h>
 #include <linux/kernel.h>
 #include <linux/kobject.h>
 #include <linux/list.h>
@@ -387,9 +388,9 @@ static int __init esrt_sysfs_init(void)
        if (!esrt_data || !esrt_data_size)
                return -ENOSYS;
 
-       esrt = ioremap(esrt_data, esrt_data_size);
+       esrt = memremap(esrt_data, esrt_data_size, MEMREMAP_WB);
        if (!esrt) {
-               pr_err("ioremap(%pa, %zu) failed.\n", &esrt_data,
+               pr_err("memremap(%pa, %zu) failed.\n", &esrt_data,
                       esrt_data_size);
                return -ENOMEM;
        }