linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/2] efi/arm*: wire up ESRT table
@ 2016-07-11 19:00 Ard Biesheuvel
  2016-07-11 19:00 ` [PATCH v2 1/2] efi: esrt: use memremap not ioremap to access ESRT table in memory Ard Biesheuvel
  2016-07-11 19:00 ` [PATCH v2 2/2] efi/arm*: esrt: add missing call to efi_esrt_init() Ard Biesheuvel
  0 siblings, 2 replies; 5+ messages in thread
From: Ard Biesheuvel @ 2016-07-11 19:00 UTC (permalink / raw)
  To: linux-arm-kernel

This v2 is a followup to the series I sent out on Feb 15. These now
apply onto Matt's memmap refactoring work which is intended for inclusion
in v4.9, and the diffstat below reveals that enabling ESRT is now absolutely
trivial. The only things needed are replacing ioremap() with memremap(),
and adding the missing efi_esrt_init() invocation.

I dropped the Tested-by tags, simply because the underlying code is completely
different now. I kept Peter's ack on #1, though.

Ard Biesheuvel (2):
  efi: esrt: use memremap not ioremap to access ESRT table in memory
  efi/arm*: esrt: add missing call to efi_esrt_init()

 drivers/firmware/efi/arm-init.c | 1 +
 drivers/firmware/efi/esrt.c     | 5 +++--
 2 files changed, 4 insertions(+), 2 deletions(-)

-- 
1.9.1

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH v2 1/2] efi: esrt: use memremap not ioremap to access ESRT table in memory
  2016-07-11 19:00 [PATCH v2 0/2] efi/arm*: wire up ESRT table Ard Biesheuvel
@ 2016-07-11 19:00 ` Ard Biesheuvel
  2016-07-15 15:05   ` Matt Fleming
  2016-07-11 19:00 ` [PATCH v2 2/2] efi/arm*: esrt: add missing call to efi_esrt_init() Ard Biesheuvel
  1 sibling, 1 reply; 5+ messages in thread
From: Ard Biesheuvel @ 2016-07-11 19:00 UTC (permalink / raw)
  To: linux-arm-kernel

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>
---
 drivers/firmware/efi/esrt.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/firmware/efi/esrt.c b/drivers/firmware/efi/esrt.c
index b93cd11f9bcc..14914074f716 100644
--- a/drivers/firmware/efi/esrt.c
+++ b/drivers/firmware/efi/esrt.c
@@ -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;
 	}
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH v2 2/2] efi/arm*: esrt: add missing call to efi_esrt_init()
  2016-07-11 19:00 [PATCH v2 0/2] efi/arm*: wire up ESRT table Ard Biesheuvel
  2016-07-11 19:00 ` [PATCH v2 1/2] efi: esrt: use memremap not ioremap to access ESRT table in memory Ard Biesheuvel
@ 2016-07-11 19:00 ` Ard Biesheuvel
  2016-07-15 15:22   ` Matt Fleming
  1 sibling, 1 reply; 5+ messages in thread
From: Ard Biesheuvel @ 2016-07-11 19:00 UTC (permalink / raw)
  To: linux-arm-kernel

ESRT support is built by default for all architectures that define
CONFIG_EFI. However, this support was not wired up yet for ARM/arm64,
since efi_esrt_init() was never called. So add the missing call.

Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
---
 drivers/firmware/efi/arm-init.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/firmware/efi/arm-init.c b/drivers/firmware/efi/arm-init.c
index 5a2df3fefccc..e0a511d4074f 100644
--- a/drivers/firmware/efi/arm-init.c
+++ b/drivers/firmware/efi/arm-init.c
@@ -247,6 +247,7 @@ void __init efi_init(void)
 
 	reserve_regions();
 	efi_memattr_init();
+	efi_esrt_init();
 	efi_memmap_unmap();
 
 	memblock_reserve(params.mmap & PAGE_MASK,
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH v2 1/2] efi: esrt: use memremap not ioremap to access ESRT table in memory
  2016-07-11 19:00 ` [PATCH v2 1/2] efi: esrt: use memremap not ioremap to access ESRT table in memory Ard Biesheuvel
@ 2016-07-15 15:05   ` Matt Fleming
  0 siblings, 0 replies; 5+ messages in thread
From: Matt Fleming @ 2016-07-15 15:05 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, 11 Jul, at 09:00:45PM, Ard Biesheuvel wrote:
> 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>
> ---
>  drivers/firmware/efi/esrt.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)

Looks sensible, thanks Ard, applied.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH v2 2/2] efi/arm*: esrt: add missing call to efi_esrt_init()
  2016-07-11 19:00 ` [PATCH v2 2/2] efi/arm*: esrt: add missing call to efi_esrt_init() Ard Biesheuvel
@ 2016-07-15 15:22   ` Matt Fleming
  0 siblings, 0 replies; 5+ messages in thread
From: Matt Fleming @ 2016-07-15 15:22 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, 11 Jul, at 09:00:46PM, Ard Biesheuvel wrote:
> ESRT support is built by default for all architectures that define
> CONFIG_EFI. However, this support was not wired up yet for ARM/arm64,
> since efi_esrt_init() was never called. So add the missing call.
> 
> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> ---
>  drivers/firmware/efi/arm-init.c | 1 +
>  1 file changed, 1 insertion(+)

Thanks Ard, applied and queued up for v4.9 on top of the EFI memmap
refactoring.

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2016-07-15 15:22 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-07-11 19:00 [PATCH v2 0/2] efi/arm*: wire up ESRT table Ard Biesheuvel
2016-07-11 19:00 ` [PATCH v2 1/2] efi: esrt: use memremap not ioremap to access ESRT table in memory Ard Biesheuvel
2016-07-15 15:05   ` Matt Fleming
2016-07-11 19:00 ` [PATCH v2 2/2] efi/arm*: esrt: add missing call to efi_esrt_init() Ard Biesheuvel
2016-07-15 15:22   ` Matt Fleming

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).