On 01/27/2015 10:18 AM, Gonglei wrote: > On 2015/1/27 16:57, Dinar Valeev wrote: > >> On 01/27/2015 03:51 AM, Gonglei wrote: >>> On 2015/1/27 7:52, dval...@suse.de wrote: >>> >>>> From: Dinar Valeev <dval...@suse.com> >>>> >>>> on sPAPR we need to update boot_order in MachineState in case it >>>> got changed on reset. >>>> >>>> Signed-off-by: Dinar Valeev <dval...@suse.com> >>>> --- >>>> bootdevice.c | 3 +++ >>>> 1 file changed, 3 insertions(+) >>>> >>>> diff --git a/bootdevice.c b/bootdevice.c >>>> index 5914417..4f11a06 100644 >>>> --- a/bootdevice.c >>>> +++ b/bootdevice.c >>>> @@ -26,6 +26,7 @@ >>>> #include "qapi/visitor.h" >>>> #include "qemu/error-report.h" >>>> #include "hw/hw.h" >>>> +#include "hw/boards.h" >>>> >>>> typedef struct FWBootEntry FWBootEntry; >>>> >>>> @@ -50,6 +51,8 @@ void qemu_register_boot_set(QEMUBootSetHandler *func, >>>> void *opaque) >>>> void qemu_boot_set(const char *boot_order, Error **errp) >>>> { >>>> Error *local_err = NULL; >>>> + MachineState *machine = MACHINE(qdev_get_machine()); >>>> + machine->boot_order = boot_order; >>>> >>>> if (!boot_set_handler) { >>>> error_setg(errp, "no function defined to set boot device list for" >>> >>> Have you registered boot set handler on ppc/sPAPR platform by calling >>> qemu_register_boot_set()? Otherwise qemu_boot_set function >>> will return error. >> No, I set boot_order on each machine reset. My tests are showing it works >> without an error. > > That's interesting. Does this function be called? Yes, then simply returns. > Would you debug it by setting a breakpoint ? I added a trace event. if (!boot_set_handler) { + trace_qemu_boot_set(boot_order); error_setg(errp, "no function defined to set boot device list for" " this architecture"); return;
And I see this now in qemu's monitor. Still I don't see error message. > > Regards, > -Gonglei > >> Previous patch was using qemu_register_boot_set, but Alexender Graf, >> suggested me to use MachineState and simply update on each guest reset. >> >>> >>> Regards, >>> -Gonglei >>> >> > > >