efi: ARM/arm64: ignore DT memory nodes instead of removing them
authorArd Biesheuvel <ard.biesheuvel@linaro.org>
Fri, 8 Apr 2016 22:50:23 +0000 (15:50 -0700)
committerWill Deacon <will.deacon@arm.com>
Fri, 15 Apr 2016 17:06:07 +0000 (18:06 +0100)
commit500899c2cc3e3f06140373b587a69d30650f2d9d
tree511f461a59e5da71b273c95d941412987321d731
parentac1ad20f9ed73a22b0a72eb83206302f5fbff55c
efi: ARM/arm64: ignore DT memory nodes instead of removing them

There are two problems with the UEFI stub DT memory node removal
routine:
- it deletes nodes as it traverses the tree, which happens to work
  but is not supported, as deletion invalidates the node iterator;
- deleting memory nodes entirely may discard annotations in the form
  of additional properties on the nodes.

Since the discovery of DT memory nodes occurs strictly before the
UEFI init sequence, we can simply clear the memblock memory table
before parsing the UEFI memory map. This way, it is no longer
necessary to remove the nodes, so we can remove that logic from the
stub as well.

Reviewed-by: Matt Fleming <matt@codeblueprint.co.uk>
Acked-by: Steve Capper <steve.capper@arm.com>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: David Daney <david.daney@cavium.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
drivers/firmware/efi/arm-init.c
drivers/firmware/efi/libstub/fdt.c