Message ID | 20220830190048.67448-11-shentey@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Instantiate VT82xx functions in host device | expand |
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)); >
Am 30. August 2022 21:46:57 UTC schrieb "Philippe Mathieu-Daudé" <f4bug@amsat.org>: >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. Fixed in v5. > >> + object_resolve_path_component(OBJECT(via), >> + "rtc"), >> + "date"); >> qdev_connect_gpio_out(DEVICE(via), 0, >> qdev_get_gpio_in_named(pm->mv, "gpp", 31)); >> >
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", + object_resolve_path_component(OBJECT(via), + "rtc"), + "date"); qdev_connect_gpio_out(DEVICE(via), 0, qdev_get_gpio_in_named(pm->mv, "gpp", 31));
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. 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(-)