[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [ANNOUNCE] QEMU 1.5.0-rc2 is now available
From: |
mdroth |
Subject: |
Re: [Qemu-devel] [ANNOUNCE] QEMU 1.5.0-rc2 is now available |
Date: |
Thu, 16 May 2013 11:35:51 -0500 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
On Thu, May 16, 2013 at 06:07:12PM +0200, Paolo Bonzini wrote:
> Il 16/05/2013 17:54, KONRAD Frédéric ha scritto:
> > I think this can do the job, any better idea?
> >
> > diff --git a/hw/pci/pci.c b/hw/pci/pci.c
> > index d5257ed..e033b53 100644
> > --- a/hw/pci/pci.c
> > +++ b/hw/pci/pci.c
> > @@ -43,7 +43,6 @@
> > #endif
> >
> > static void pcibus_dev_print(Monitor *mon, DeviceState *dev, int indent);
> > -static char *pcibus_get_dev_path(DeviceState *dev);
> > static char *pcibus_get_fw_dev_path(DeviceState *dev);
> > static int pcibus_reset(BusState *qbus);
> >
> > @@ -2129,7 +2128,7 @@ static char *pcibus_get_fw_dev_path(DeviceState *dev)
> > return g_strdup(path);
> > }
> >
> > -static char *pcibus_get_dev_path(DeviceState *dev)
> > +char *pcibus_get_dev_path(DeviceState *dev)
> > {
> > PCIDevice *d = container_of(dev, PCIDevice, qdev);
> > PCIDevice *t;
> > diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c
> > index 70d2c6b..0241223 100644
> > --- a/hw/virtio/virtio-pci.c
> > +++ b/hw/virtio/virtio-pci.c
> > @@ -1514,11 +1514,19 @@ static void virtio_pci_bus_new(VirtioBusState
> > *bus, VirtIOPCIProxy *dev)
> > qbus->allow_hotplug = 1;
> > }
> >
> > +static char *virtio_pci_bus_get_dev_path(DeviceState *dev)
> > +{
> > + BusState *bus = qdev_get_parent_bus(dev);
> > + DeviceState *proxy = DEVICE(bus->parent);
> > + return g_strdup(pcibus_get_dev_path(proxy));
>
> You do not need to export pcibus_get_dev_path. This should just return
> qdev_get_dev_path(proxy) and should be in TYPE_VIRTIO_BUS, not in the
> PCI-specific subclass.
>
> (The g_strdup is not needed, either).
I've been testing the patch below and it seems to do the trick. If it seems
reasonable I'll submit it after a bit more testing.
diff --git a/hw/virtio/virtio-bus.c b/hw/virtio/virtio-bus.c
index aab72ff..91b7bad 100644
--- a/hw/virtio/virtio-bus.c
+++ b/hw/virtio/virtio-bus.c
@@ -154,12 +154,35 @@ void virtio_bus_set_vdev_config(VirtioBusState *bus,
uint8_t *config)
}
}
+static char *virtio_bus_get_dev_path(DeviceState *dev)
+{
+ DeviceState *parent_dev = DEVICE(OBJECT(dev)->parent);
+ BusClass *parent_bus_klass =
BUS_GET_CLASS(qdev_get_parent_bus(parent_dev));
+
+ /* pass this call up to the device's parent's bus to get at
+ * guest-visible hardware topology
+ */
+ if (parent_bus_klass->get_dev_path) {
+ return parent_bus_klass->get_dev_path(parent_dev);
+ }
+
+ return NULL;
+}
+
+static void virtio_bus_class_init(ObjectClass *klass, void *data)
+{
+ BusClass *k = BUS_CLASS(klass);
+
+ k->get_dev_path = virtio_bus_get_dev_path;
+}
+
static const TypeInfo virtio_bus_info = {
.name = TYPE_VIRTIO_BUS,
.parent = TYPE_BUS,
.instance_size = sizeof(VirtioBusState),
.abstract = true,
.class_size = sizeof(VirtioBusClass),
+ .class_init = virtio_bus_class_init,
};
>
> Paolo
>
> > +}
> > +
> > static void virtio_pci_bus_class_init(ObjectClass *klass, void *data)
> > {
> > BusClass *bus_class = BUS_CLASS(klass);
> > VirtioBusClass *k = VIRTIO_BUS_CLASS(klass);
> > bus_class->max_dev = 1;
> > + bus_class->get_dev_path = virtio_pci_bus_get_dev_path;
> > k->notify = virtio_pci_notify;
> > k->save_config = virtio_pci_save_config;
> > k->load_config = virtio_pci_load_config;
> > diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h
> > index 8d075ab..fb5723c 100644
> > --- a/include/hw/pci/pci.h
> > +++ b/include/hw/pci/pci.h
> > @@ -708,6 +708,8 @@ static inline void pci_dma_sglist_init(QEMUSGList
> > *qsg, PCIDevice *dev,
> >
> > extern const VMStateDescription vmstate_pci_device;
> >
> > +char *pcibus_get_dev_path(DeviceState *dev);
> > +
> > #define VMSTATE_PCI_DEVICE(_field, _state) { \
> > .name = (stringify(_field)), \
> > .size = sizeof(PCIDevice), \
>
- [Qemu-devel] [ANNOUNCE] QEMU 1.5.0-rc2 is now a vailable, Anthony Liguori, 2013/05/15
- Re: [Qemu-devel] [ANNOUNCE] QEMU 1.5.0-rc2 is now available, Dongsheng Song, 2013/05/15
- Re: [Qemu-devel] [ANNOUNCE] QEMU 1.5.0-rc2 is now available, mdroth, 2013/05/16
- Re: [Qemu-devel] [ANNOUNCE] QEMU 1.5.0-rc2 is now available, Paolo Bonzini, 2013/05/16
- Re: [Qemu-devel] [ANNOUNCE] QEMU 1.5.0-rc2 is now available, KONRAD Frédéric, 2013/05/16
- Re: [Qemu-devel] [ANNOUNCE] QEMU 1.5.0-rc2 is now available, Paolo Bonzini, 2013/05/16
- Re: [Qemu-devel] [ANNOUNCE] QEMU 1.5.0-rc2 is now available, KONRAD Frédéric, 2013/05/16
- Re: [Qemu-devel] [ANNOUNCE] QEMU 1.5.0-rc2 is now available, mdroth, 2013/05/16
- Re: [Qemu-devel] [ANNOUNCE] QEMU 1.5.0-rc2 is now available, KONRAD Frédéric, 2013/05/16
- Re: [Qemu-devel] [ANNOUNCE] QEMU 1.5.0-rc2 is now available, Paolo Bonzini, 2013/05/16
- Re: [Qemu-devel] [ANNOUNCE] QEMU 1.5.0-rc2 is now available,
mdroth <=
- Re: [Qemu-devel] [ANNOUNCE] QEMU 1.5.0-rc2 is now available, Anthony Liguori, 2013/05/16
- Re: [Qemu-devel] [ANNOUNCE] QEMU 1.5.0-rc2 is now available, KONRAD Frédéric, 2013/05/16
Re: [Qemu-devel] [ANNOUNCE] QEMU 1.5.0-rc2 is now available, KONRAD Frédéric, 2013/05/16