Thomas Huth <th...@redhat.com> wrote: > There is currently a funny problem with the "mc146818rtc" device: > 1) Start QEMU like this: > qemu-system-ppc64 -M pseries -S > 2) At the HMP monitor, enter "info qom-tree". Note that there is an > entry for "/rtc (spapr-rtc)". > 3) Introspect the mc146818rtc device like this: > device_add mc146818rtc,help > 4) Run "info qom-tree" again. The "/rtc" entry is gone now! > > The rtc_finalize() function of the mc146818rtc device has two bugs: First, > it tries to remove a "rtc" property, while the rtc_realizefn() added a > "rtc-time" property instead. And second, it should have been done in an > unrealize function, not in a finalize function, to avoid that this causes > problems during introspection. > > But since adding aliases to the global machine state should not be done > from a device's realize function anyway, let's rather fix this issue > by moving the creation of the alias to the code that creates the device > (and thus is run from the machine init functions instead), i.e. the > mc146818_rtc_init() function for most machines. The prep machines are > special, since the mc146818rtc device is created here in the realize > function of the i82378 device. Since we certainly don't want to add the > alias there, we add it to some code that is called from the ibm_40p_init() > machine init function instead. > Since the alias is now only created during the machine init, we can remove > the object_property_del() completely. > > Fixes: 654a36d857ff949e0d1989904b76f53fded9dc83 > Reviewed-by: Markus Armbruster <arm...@redhat.com> > Signed-off-by: Thomas Huth <th...@redhat.com>
Reviewed-by: Juan Quintela <quint...@redhat.com>