On Tue, 2018-02-27 at 17:31 +0000, Ard Biesheuvel wrote: > On 27 February 2018 at 17:27, Andy Shevchenko > <andriy.shevchenko@xxxxxxxxxxxxxxx> wrote: > > The memory we are accessing through virtual address has no IO side > > effects. Moreover, for IO memory we have to use special accessors, > > which we don't use. > > > > Not 100% relevant in this context, but perhaps interesting > nonetheless: using device mappings to access things like firmware > tables or other structured data will break ARM and other non-x86 > architectures that do not tolerate unaligned accessed to device > memory. > > > Due to above, convert the driver to use memremap() instead of > > ioremap(). > > > > Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> > > Acked-by: Ard Biesheuvel <ard.biesheuvel@xxxxxxxxxx> Thanks! It's supposed to go through EFI tree. > > > --- > > drivers/firmware/efi/apple-properties.c | 11 ++++++----- > > 1 file changed, 6 insertions(+), 5 deletions(-) > > > > diff --git a/drivers/firmware/efi/apple-properties.c > > b/drivers/firmware/efi/apple-properties.c > > index b9602e0d7b50..adaa9a3714b9 100644 > > --- a/drivers/firmware/efi/apple-properties.c > > +++ b/drivers/firmware/efi/apple-properties.c > > @@ -19,6 +19,7 @@ > > > > #include <linux/bootmem.h> > > #include <linux/efi.h> > > +#include <linux/io.h> > > #include <linux/platform_data/x86/apple.h> > > #include <linux/property.h> > > #include <linux/slab.h> > > @@ -189,7 +190,7 @@ static int __init map_properties(void) > > > > pa_data = boot_params.hdr.setup_data; > > while (pa_data) { > > - data = ioremap(pa_data, sizeof(*data)); > > + data = memremap(pa_data, sizeof(*data), > > MEMREMAP_WB); > > if (!data) { > > pr_err("cannot map setup_data header\n"); > > return -ENOMEM; > > @@ -197,14 +198,14 @@ static int __init map_properties(void) > > > > if (data->type != SETUP_APPLE_PROPERTIES) { > > pa_data = data->next; > > - iounmap(data); > > + memunmap(data); > > continue; > > } > > > > data_len = data->len; > > - iounmap(data); > > + memunmap(data); > > > > - data = ioremap(pa_data, sizeof(*data) + data_len); > > + data = memremap(pa_data, sizeof(*data) + data_len, > > MEMREMAP_WB); > > if (!data) { > > pr_err("cannot map setup_data payload\n"); > > return -ENOMEM; > > @@ -229,7 +230,7 @@ static int __init map_properties(void) > > * to avoid breaking the chain of ->next pointers. > > */ > > data->len = 0; > > - iounmap(data); > > + memunmap(data); > > free_bootmem_late(pa_data + sizeof(*data), > > data_len); > > > > return ret; > > -- > > 2.16.1 > > -- Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> Intel Finland Oy -- To unsubscribe from this list: send the line "unsubscribe linux-efi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html