system/bootdevice: Don't unregister reset handler in restore_boot_order()
commite41f32fe8254cd1b2e00bcc5af1e4d528c5a79db
authorPeter Maydell <peter.maydell@linaro.org>
Tue, 20 Feb 2024 16:06:15 +0000 (20 16:06 +0000)
committerPeter Maydell <peter.maydell@linaro.org>
Tue, 27 Feb 2024 13:01:42 +0000 (27 13:01 +0000)
treea600e47ae183d12c4c92008c9468ad997beede8f
parent7421ddc4dca27b77dbc62e5cc2aaaae116802639
system/bootdevice: Don't unregister reset handler in restore_boot_order()

Currently the qemu_register_reset() API permits the reset handler functions
registered with it to remove themselves from within the callback function.
This is fine with our current implementation, but is a bit odd, because
generally reset is supposed to be idempotent, and doesn't fit well in a
three-phase-reset world where a resettable object will get multiple
callbacks as the system is reset.

We now have only one user of qemu_register_reset() which makes use of
the ability to unregister itself within the callback:
restore_boot_order().  We want to change our implementation of
qemu_register_reset() to something where it would be awkward to
maintain the "can self-unregister" feature.  Rather than making that
reimplementation complicated, change restore_boot_order() so that it
doesn't unregister itself but instead returns doing nothing for any
calls after it has done the "restore the boot order" work.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Acked-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20240220160622.114437-4-peter.maydell@linaro.org
Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
system/bootdevice.c