Unfortunately it looks as if my original fix for this was wrong, and
in particular causes one of the SPARC64 QEMU advent calendar images which
uses a preloaded kernel to panic on boot.
The SILO memory allocators search through the physical memory "available"
property but then don't actually allocate the result: instead
hardcoded virtual addresses are only mapped to the physical addresses that
are determined to be free.
These patches remove the physical and virtual allocations introduced as part
of the original fix and map these memory areas in exactly the same way that
SILO does.
This also solves the issue the original patches were trying to fix, which was
that clients could still claim the memory in-use by the kernel via the CIF - the
virtual addresses used by SILO are higher up in memory, making a clash extremely
unlikely (and indeed, if it did happen, would mean the kernel/initrd combination
would also fail to boot under SILO).
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland(a)ilande.co.uk>
v2:
- Fix typo and cut/paste error patch 2
Mark Cave-Ayland (2):
SPARC64: fix kernel and initrd mapping to match SILO
SPARC32: fix kernel and initrd mapping to match SILO
arch/sparc32/boot.h | 3 +++
arch/sparc32/openbios.c | 31 ++++++++++++++++---------------
arch/sparc64/boot.c | 2 +-
arch/sparc64/boot.h | 3 +++
arch/sparc64/openbios.c | 16 +++++++---------
5 files changed, 30 insertions(+), 25 deletions(-)
--
2.20.1