On 2015/2/12 18:21, Markus Armbruster wrote: > <arei.gong...@huawei.com> writes: > >> 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> >> Reviewed-by: Alexey Kardashevskiy <a...@ozlabs.ru> >> Signed-off-by: Gonglei <arei.gong...@huawei.com> >> --- >> bootdevice.c | 4 ++++ >> 1 file changed, 4 insertions(+) >> >> diff --git a/bootdevice.c b/bootdevice.c >> index d3d4277..ac586b1 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,7 @@ 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()); >> >> validate_bootdevices(boot_order, &local_err); >> if (local_err) { >> @@ -57,6 +59,8 @@ void qemu_boot_set(const char *boot_order, Error **errp) >> return; >> } >> >> + machine->boot_order = boot_order; >> + >> if (boot_set_handler) { >> boot_set_handler(boot_set_opaque, boot_order, errp); >> } > > Looks harmless enough, but I'm afraid I don't quite understand why we > need this. Can you explain it to me real slow? :) > Alex pointed that there is two reset logic for boot order, one is machine struct (machine->order) and another is set_boot_handler by parameter. But the qemu_boot_set() only support to use set_boot_handler to set boot order. So, I decide to remove the check for boot_set_handler if NULL or not (PATCH 1), and change the value of machine->boot_order in qemu_boot_set().
But I ignored this change cause a regression for HMP command set_boot. To avoid the regression, we only support one way to set boot_order, that is set_boot_handler. Fortunately the patches for supporting boot 'once' argument on sPAPR on the flight. We have the opportunity to drop this change and avoid the regression. Regards, -Gonglei