Skip to content
  • David Gibson's avatar
    Add SLOF-based partition firmware for pSeries machine, allowing more boot options · a9f8ad8f
    David Gibson authored
    
    
    Currently, the emulated pSeries machine requires the use of the
    -kernel parameter in order to explicitly load a guest kernel.  This
    means booting from the virtual disk, cdrom or network is not possible.
    
    This patch addresses this limitation by inserting a within-partition
    firmware image (derived from the "SLOF" free Open Firmware project).
    If -kernel is not specified, qemu will now load the SLOF image, which
    has access to the qemu boot device list through the device tree, and
    can boot from any of the usual virtual devices.
    
    In order to support the new firmware, an extension to the emulated
    machine/hypervisor is necessary.  Unlike Linux, which expects
    multi-CPU entry to be handled kexec() style, the SLOF firmware expects
    only one CPU to be active at entry, and to use a hypervisor RTAS
    method to enable the other CPUs one by one.
    
    This patch also implements this 'start-cpu' method, so that SLOF can
    start the secondary CPUs and marshal them into the kexec() holding
    pattern ready for entry into the guest OS.  Linux should, and in the
    future might directly use the start-cpu method to enable initially
    disabled CPUs, but for now it does require kexec() entry.
    
    Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
    Signed-off-by: default avatarDavid Gibson <dwg@au1.ibm.com>
    Signed-off-by: default avatarAlexander Graf <agraf@suse.de>
    a9f8ad8f