On Tue, Jul 19, 2011 at 07:56:41AM +0200, Stefan Weil wrote: > Am 19.07.2011 04:39, schrieb Isaku Yamahata: >> Thank you for addressing this. Similar patches were proposed and >> weren't merged unfortunately. >> >> The reason why the qdev_register_reset() in vl.c is to keep the reset order. >> The reset for main_system_bus shouldn't registered by qbus_create_inplace(). >> But the check, bus != main_system_bus, doesn't work as intended because >> main_system_bus is NULL in early qdev creation. >> So there are possible ways for the fix. >> >> - Don't care the reset order >> your patch + >> remove "if (bus != main_system_bus)" in qbus_create_inplace() >> >> - keep the reset order >> - instantiate main_system_bus early. >> So the check, bus != main_system_bus in qbus_create_inplace(), will >> work. >> or >> - fix the check, bus != main_system_bus in qbus_create_inplace(), somehow >> >> thanks, > > Hi, > > my patch does not remove sysbus_get_default(), > so the reset order is kept because main_system_bus > is instantiated by this call.
Yes, your patch doesn't change the order from the existing code. I think it's not intended one. During machine creation, someone may call sysbus_get_default(). So the reset for main_system_bus may not be the lastly registered. The changeset of 80376c3f tries to keep the reset order, but failed. That's the issue. -- yamahata