All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] ARM: move FDT mapping out of linear region
@ 2020-10-06  9:49 Ard Biesheuvel
  2020-10-06  9:49 ` [PATCH 1/2] ARM: centralize phys-to-virt conversion of DT/ATAGS address Ard Biesheuvel
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Ard Biesheuvel @ 2020-10-06  9:49 UTC (permalink / raw)
  To: linux-arm-kernel
  Cc: Florian Fainelli, Nicolas Pitre, Linus Walleij, Russell King,
	Rob Herring, Ard Biesheuvel

For the ARM kernel, setting up the kernel's virtual address space at boot
is tricky, given the risk of collision between 1:1 mapped regions and
virtually remapped regions. There is also a concern regarding the exact
mapping attributes that are needed for each region, which differs between
ARM architecture revisions, UP vs SMP etc

For this reason, the kernel VA space is set up in two stages: at early
boot, only the kernel itself and the DT are mapped using section mappings
and later on, all existing mappings are torn down except the one covering
the first memblock covering the kernel, and remapped again using the full
fledged mapping routines that can map at page granularity and use all the
right mapping attributes.

There are cases where this may result in the DT getting unmapped at
this point, and not remapped again. For instance, if the first memblock
is not PMD aligned, we will align it up, and mark the memory below it
as MEMBLOCK_NOMAP, to avoid having to allocate page tables to create
the mapping before we have a mapped memblock to allocate from. If the
DT happens to reside in this region, it will not be mapped at all when
the permanent kernel VA mappings are in place, resulting in crashes.

As we happen to have a 4 MB hole in the kernel VA space (between the
end of the VMALLOC space and the start of the FIXMAP region), let's
use it to create a permanent, read-only mapping of the DT that is not
affected by any such issues.

Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: Florian Fainelli <f.fainelli@gmail.com>
Cc: Russell King <linux@armlinux.org.uk>
Cc: Nicolas Pitre <nico@fluxnic.net>
Cc: Rob Herring <robh+dt@kernel.org>

Ard Biesheuvel (2):
  ARM: centralize phys-to-virt conversion of DT/ATAGS address
  ARM: move device tree mapping out of linear region

 arch/arm/include/asm/memory.h |  5 +++++
 arch/arm/include/asm/prom.h   |  4 ++--
 arch/arm/kernel/atags.h       |  4 ++--
 arch/arm/kernel/atags_parse.c |  6 +++---
 arch/arm/kernel/devtree.c     |  6 +++---
 arch/arm/kernel/head.S        |  5 ++---
 arch/arm/kernel/setup.c       | 19 ++++++++++++++-----
 arch/arm/mm/init.c            |  1 -
 arch/arm/mm/mmu.c             | 20 ++++++++++++++------
 arch/arm/mm/pv-fixup-asm.S    |  4 ++--
 10 files changed, 47 insertions(+), 27 deletions(-)

-- 
2.17.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

end of thread, other threads:[~2020-10-07 10:14 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-06  9:49 [PATCH 0/2] ARM: move FDT mapping out of linear region Ard Biesheuvel
2020-10-06  9:49 ` [PATCH 1/2] ARM: centralize phys-to-virt conversion of DT/ATAGS address Ard Biesheuvel
2020-10-06  9:49 ` [PATCH 2/2] ARM: move device tree mapping out of linear region Ard Biesheuvel
2020-10-06 13:19   ` Linus Walleij
2020-10-06 15:59   ` Nicolas Pitre
2020-10-06 16:11     ` Ard Biesheuvel
2020-10-06 16:45       ` Nicolas Pitre
2020-10-07  9:56         ` Linus Walleij
2020-10-07 10:12           ` Ard Biesheuvel
2020-10-06 13:16 ` [PATCH 0/2] ARM: move FDT " Linus Walleij

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.