On 07/05/2016 04:42 PM, Laurent Vivier wrote: > As device-tree is now fully built by QEMU, we don't need SLOF > anymore if the kernel is provided on the command line. > > In this case, don't load SLOF and boot directly into the > kernel. > > This saves at least 5 seconds on the boot sequence. > > Signed-off-by: Laurent Vivier <lviv...@redhat.com>
Looks good to me. It would also be good to have a trimmed version of slof for a kvm environment, with only virtio devices. I think Nikunj had started to work on a minimal version. C. > --- > hw/ppc/spapr.c | 37 ++++++++++++++++++++----------------- > 1 file changed, 20 insertions(+), 17 deletions(-) > > diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c > index 7f33a1b..bbdb21d 100644 > --- a/hw/ppc/spapr.c > +++ b/hw/ppc/spapr.c > @@ -1219,8 +1219,11 @@ static void ppc_spapr_reset(void) > first_ppc_cpu->env.gpr[3] = spapr->fdt_addr; > first_ppc_cpu->env.gpr[5] = 0; > first_cpu->halted = 0; > - first_ppc_cpu->env.nip = SPAPR_ENTRY_POINT; > - > + if (machine->kernel_filename) { > + first_ppc_cpu->env.nip = KERNEL_LOAD_ADDR; > + } else { > + first_ppc_cpu->env.nip = SPAPR_ENTRY_POINT; > + } > } > > static void spapr_create_nvram(sPAPRMachineState *spapr) > @@ -2023,23 +2026,23 @@ static void ppc_spapr_init(MachineState *machine) > initrd_base = 0; > initrd_size = 0; > } > + } else { > + if (bios_name == NULL) { > + bios_name = FW_FILE_NAME; > + } > + filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name); > + if (!filename) { > + error_report("Could not find LPAR firmware '%s'", bios_name); > + exit(1); > + } > + fw_size = load_image_targphys(filename, 0, FW_MAX_SIZE); > + if (fw_size <= 0) { > + error_report("Could not load LPAR firmware '%s'", filename); > + exit(1); > + } > + g_free(filename); > } > > - if (bios_name == NULL) { > - bios_name = FW_FILE_NAME; > - } > - filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name); > - if (!filename) { > - error_report("Could not find LPAR firmware '%s'", bios_name); > - exit(1); > - } > - fw_size = load_image_targphys(filename, 0, FW_MAX_SIZE); > - if (fw_size <= 0) { > - error_report("Could not load LPAR firmware '%s'", filename); > - exit(1); > - } > - g_free(filename); > - > /* FIXME: Should register things through the MachineState's qdev > * interface, this is a legacy from the sPAPREnvironment structure > * which predated MachineState but had a similar function */ >