On 30/8/22 21:00, Bernhard Beschow wrote:
> According to good QOM practice, an object should only deal with objects
> of its own sub tree. Having devices create an alias on the machine
> object doesn't respect this good practice. To resolve this, create the
> alias in the machine's code.
IIUC, this is only true for Pegasos II, not (yet) for the Fuloong 2E.
> Signed-off-by: Bernhard Beschow <shentey@gmail.com>
> ---
> hw/isa/vt82c686.c | 2 --
> hw/mips/fuloong2e.c | 4 ++++
> hw/ppc/pegasos2.c | 4 ++++
> 3 files changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/hw/isa/vt82c686.c b/hw/isa/vt82c686.c
> index 0ef9446374..a23ffbb3ff 100644
> --- a/hw/isa/vt82c686.c
> +++ b/hw/isa/vt82c686.c
> @@ -631,8 +631,6 @@ static void via_isa_realize(PCIDevice *d, Error **errp)
> if (!qdev_realize(DEVICE(&s->rtc), BUS(isa_bus), errp)) {
> return;
> }
> - object_property_add_alias(qdev_get_machine(), "rtc-time", OBJECT(&s->rtc),
> - "date");
> isa_connect_gpio_out(ISA_DEVICE(&s->rtc), 0, s->rtc.isairq);
>
> for (i = 0; i < PCI_CONFIG_HEADER_SIZE; i++) {
> diff --git a/hw/mips/fuloong2e.c b/hw/mips/fuloong2e.c
> index 2d8723ab74..0f4cfe1188 100644
> --- a/hw/mips/fuloong2e.c
> +++ b/hw/mips/fuloong2e.c
> @@ -203,6 +203,10 @@ static void vt82c686b_southbridge_init(PCIBus *pci_bus, int slot, qemu_irq intc,
>
> via = pci_create_simple_multifunction(pci_bus, PCI_DEVFN(slot, 0), true,
> TYPE_VT82C686B_ISA);
> + object_property_add_alias(qdev_get_machine(), "rtc-time",
> + object_resolve_path_component(OBJECT(via),
> + "rtc"),
> + "date");
> qdev_connect_gpio_out(DEVICE(via), 0, intc);
>
> dev = PCI_DEVICE(object_resolve_path_component(OBJECT(via), "ide"));
> diff --git a/hw/ppc/pegasos2.c b/hw/ppc/pegasos2.c
> index 09fdb7557f..f50e1d8b3f 100644
> --- a/hw/ppc/pegasos2.c
> +++ b/hw/ppc/pegasos2.c
> @@ -161,6 +161,10 @@ static void pegasos2_init(MachineState *machine)
> /* VIA VT8231 South Bridge (multifunction PCI device) */
> via = pci_create_simple_multifunction(pci_bus, PCI_DEVFN(12, 0), true,
> TYPE_VT8231_ISA);
> + object_property_add_alias(qdev_get_machine(), "rtc-time",
We already have a 'machine' pointer.
> + object_resolve_path_component(OBJECT(via),
> + "rtc"),
> + "date");
> qdev_connect_gpio_out(DEVICE(via), 0,
> qdev_get_gpio_in_named(pm->mv, "gpp", 31));
>