[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC v2 06/20] qdev: Add 'accepted-device-types' proper
From: |
Cornelia Huck |
Subject: |
Re: [Qemu-devel] [RFC v2 06/20] qdev: Add 'accepted-device-types' property to BusClass |
Date: |
Fri, 2 Dec 2016 13:03:50 +0100 |
On Tue, 29 Nov 2016 12:18:19 -0200
Eduardo Habkost <address@hidden> wrote:
> On Tue, Nov 29, 2016 at 02:57:07PM +0100, Cornelia Huck wrote:
> > On Fri, 25 Nov 2016 20:05:42 -0200
> > Eduardo Habkost <address@hidden> wrote:
> >
> > > Each bus class will now be aware of the specific device types
> > > that can be plugged on it. That will be useful for:
> > >
> > > * Runtime check for which devices types can be plugged to the
> > > machine;
> > > * Validation of query-machines output by automated tests.
> > >
> > > By default, a single type name is used on all bus instances (set
> > > at BusClass::device_type), but bus instances can override it and
> > > return a different type list.
> > >
> > > Signed-off-by: Eduardo Habkost <address@hidden>
> >
> > I've read (well, more skimmed through) the whole patchset and I think
> > we have different cases of "multiple device types for one bus":
> >
> > - the q35 root bus case later in this patchset, where just a certain
> > instance of the bus can accept multiple types
> > - the case where every instance of a bus may accept multiple types
> > (none currently; but this will be the case for e.g. virtual-css once we
> > have other derivates of CCW_DEVICE than virtio-ccw)
>
> Are all going to be subclasses of TYPE_CCW_DEVICE, and are all
> TYPE_CCW_DEVICE subclasses going to be accepted by virtual-css?
That's what we plan to do, yes.
> In this case, you could just set BusClass::device_type to
> TYPE_CCW_DEVICE on virtual-css-bus.
Sounds reasonable.
>
> >
> > For the second case, a static initializer for multiple types in the
> > class makes sense;
>
> If necessary, we can change BusClass::device_type to a
> BusClass::device_types list. I didn't do that because it didn't
> seem necessary (and I would like to encourage buses to encode
> compatiblity using a single type/interface name whenever
> possible).
Most busses will probably allow a single (parent) device type anyway,
so that's fine, I guess.
>
>
> > but the first case is a bit hackish. Should there be
> > a generic way to pass a list of types to the individual bus instance's
> > initializers (that could fall back to a static list in the class)?
>
> Sound good, but I don't know how that generic mechanism could
> look like. Would a:
> void bus_add_accepted_device_type(BusState *bus, const char *devtype)
> function be enough?
Would we need a remove helper as well (i.e. "this bus normally supports
types a and b, but this instance accepts only a")? It is probably
enough to add it should the need arise some day.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [Qemu-devel] [RFC v2 06/20] qdev: Add 'accepted-device-types' property to BusClass,
Cornelia Huck <=