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)
commit6bd6519a719b9b81fa439e00b5873f5f3c7a12b5
tree511f461a59e5da71b273c95d941412987321d731
parent5a4efe201d14ccad1413cc2f49a54a42a6ea6135
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