- This multiboot support is built into linux module for aarch64.
- The implementation for Xen is following <Multiboot on ARM Specification>:
http://wiki.xen.org/wiki/Xen_ARM_with_Virtualization_Extensions/Multiboot
and xen/docs/misc/arm/device-tree/booting.txt in Xen source code.
- The example of this support is <How to boot Xen with GRUB on AArch64 the Foundation FVP model>
https://wiki.linaro.org/LEG/Engineering/Grub2/Xen_booting_on_Foundation_FVP…
- This adds support for the Xen Multiboot on ARM specification for arm64,
enabling config file portability across the architectures.
- The multiboot command is currently x86-only, so reusing these command names
should not conflict with any future additions of ARM support to multiboot2.
- The reason of adding this functionality to the existing "linux" module
rather than "multiboot(2)"
(1)multiboot is x86 only
(2)Multiboot is added to "linux" module because it reuses existing code.
- Some changes in original linux module code
Move some #define from grub-core/loader/arm64/linux.c to include/grub/arm64/linux.h
Make some shared functions for multiboot.c
Remove "loaded" checking in the grub_cmd_devicetree of linux.c
- Add grub_fdt_set_reg64 macro into fdt.h header file for inserting "reg" properiy,
while #address-cells = <0x2> and #size-cells = <0x2>
- Add the introduction of multiboot/module command in docs/grub.texi
This multiboot support will be built in linux module for aarch64,
and can not be used alone.
docs/grub.texi | 10 +
grub-core/Makefile.core.def | 1 +
grub-core/loader/arm64/linux.c | 72 ++---
grub-core/loader/arm64/multiboot.c | 593 +++++++++++++++++++++++++++++++++++++
include/grub/arm64/linux.h | 11 +
include/grub/arm64/multiboot.h | 115 +++++++
include/grub/fdt.h | 12 +
7 files changed, 778 insertions(+), 36 deletions(-)
create mode 100644 grub-core/loader/arm64/multiboot.c
create mode 100644 include/grub/arm64/multiboot.h
Signed-off-by: Fu Wei <fu.wei(a)linaro.org>
Reviewed-by: Leif Lindholm <leif.lindholm(a)linaro.org>
--
1.8.3.1
These patches add the DBG2/SPCR tables for FVP/Juno for kernel testing.
They allow a kernel to find a serial console without console= line.
They have been tested using the Redhat patches for SPCR support which are
work in progress!
Thanks
Changes since v1
Ryan pointed out I had used RTSM in the JUNO tables - fixed.
Hi,
It appears on juno, I can start kvm with UEFI only on cortex-a53 cores:
taskset -c 0 qemu-system-aarch64 -m 1024 -cpu host -M virt -bios
QEMU_EFI.fd -enable-kvm -nographic
-> works:
UEFI Interactive Shell v2.0
taskset -c 1 qemu-system-aarch64 -m 1024 -cpu host -M virt -bios
QEMU_EFI.fd -enable-kvm -nographic
-> hangs at cpu spinning 100%
...
Qemu and kernel are latest mainline, kvm from last months Ĺinaro
release. According to cpuinfo cores 0 and 3-5 are a53 and 1-2 are a57.
Details:
# wget http://releases.linaro.org/15.01/components/kernel/uefi-linaro/release/qemu…
uname -a
# Linux linaro-nano 4.0.0-rc5-linaro-juno #1 SMP PREEMPT Tue Mar 24
10:46:53 UTC 2015 aarch64 aarch64 aarch64 GNU/Linux
# qemu-system-aarch64 --version
QEMU emulator version 2.2.91 (Debian 2.3.0~rc1-185linaro+utopic),
Copyright (c) 2003-2008 Fabrice Bellard
# grep -E '(processor|part)' /proc/cpuinfo
processor : 0
CPU part : 0xd03
processor : 1
CPU part : 0xd07
processor : 2
CPU part : 0xd07
processor : 3
CPU part : 0xd03
processor : 4
CPU part : 0xd03
processor : 5
CPU part : 0xd03