qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 09/14] qdev: connect some links and move type to


From: Andreas Färber
Subject: Re: [Qemu-devel] [PATCH 09/14] qdev: connect some links and move type to object
Date: Thu, 19 Apr 2012 16:46:45 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:11.0) Gecko/20120312 Thunderbird/11.0

Am 19.04.2012 00:38, schrieb Anthony Liguori:
> On 04/18/2012 04:25 PM, Andreas Färber wrote:
>> Am 18.04.2012 22:56, schrieb Anthony Liguori:
>>> This makes sysbus part of the root hierarchy and all busses children
>>> of their
>>> respective parent DeviceState.
>>>
>>> Signed-off-by: Anthony Liguori<address@hidden>
>>> ---
>>>   hw/qdev.c    |   11 +++++------
>>>   qom/object.c |   12 ++++++++++++
>>>   2 files changed, 17 insertions(+), 6 deletions(-)
>>>
>>> diff --git a/hw/qdev.c b/hw/qdev.c
>>> index 26e6f09..b5eef22 100644
>>> --- a/hw/qdev.c
>>> +++ b/hw/qdev.c
>>> @@ -427,6 +427,7 @@ static void do_qbus_create_inplace(BusState *bus,
>>> const char *typename,
>>>       if (parent) {
>>>           QLIST_INSERT_HEAD(&parent->child_bus, bus, sibling);
>>>           parent->num_child_bus++;
>>> +        object_property_add_child(OBJECT(parent), bus->name,
>>> OBJECT(bus), NULL);
>>>       } else if (bus != main_system_bus) {
>>>           /* TODO: once all bus devices are qdevified,
>>>              only reset handler for main_system_bus should be
>>> registered here. */
>>> @@ -456,6 +457,8 @@ static void main_system_bus_create(void)
>>>       /* assign main_system_bus before qbus_create_inplace()
>>>        * in order to make "if (bus != main_system_bus)" work */
>>>       main_system_bus = qbus_create(TYPE_SYSTEM_BUS, NULL,
>>> "main-system-bus");
>>> +    object_property_add_child(object_get_root(), "sysbus",
>>> +                              OBJECT(main_system_bus), NULL);
>>
>> So this is adding /sysbus. Shouldn't this rather go into
>> /unassigned/sysbus?
> 
> What would sysbus be assigned too?  I think sysbus is a really special
> case and belongs in the /root directory.

I suggested /unassigned because of no explicit parenting. Either the
unstable /unassigned tree or qdev_get_machine() for the real device
hierarchy. It's a device bus so it should be in one of the device
containers, not form yet a new root node.
All devices trace back to some SysBus device currently (e.g., PReP PCI
host controller is-a SysBusDevice, has-a PCIBus has-a child<PCIDevice>
i82378 that in turn has-a ISABus etc. etc.), so if we argue that sysbus
were special and needs to be in /, then *all* devices will end up in
that special location.

Just wondering, can a node have two parents? If you add "child[%d]"
nodes to the busses and we then add i440fx explicitly somewhere, like we
do, will that remove it from the bus' child[] list or will we have it in
both locations with an indeterministic canonical path?

Andreas

-- 
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg



reply via email to

[Prev in Thread] Current Thread [Next in Thread]