Message ID | 1250074044-24667-1-git-send-email-kraxel@redhat.com |
---|---|
State | Superseded |
Headers | show |
Ah nice, I was just about to start doing this. It's worth mentioning that this gives an about 5% speedup for workloads with small I/O sizes.
On Wed, 2009-08-12 at 12:47 +0200, Gerd Hoffmann wrote: > Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> > --- > hw/pc.c | 4 ++++ > hw/virtio-pci.c | 8 ++++++-- > 2 files changed, 10 insertions(+), 2 deletions(-) > > diff --git a/hw/pc.c b/hw/pc.c > index cc6e7e8..cccb865 100644 > --- a/hw/pc.c > +++ b/hw/pc.c > @@ -1487,6 +1487,10 @@ static QEMUMachine pc_machine_v0_10 = { > .driver = "virtio-net-pci", > .property = "vectors", > .value = stringify(0), > + },{ > + .driver = "virtio-blk-pci", > + .property = "vectors", > + .value = stringify(0), This means that MSI is enabled for virtio-blk with the pc-0.11 machine type. Shouldn't we add a pc-0.12 machine type and disable MSI for pc-0.11? Cheers, Mark.
On 09/07/09 19:57, Mark McLoughlin wrote: > On Wed, 2009-08-12 at 12:47 +0200, Gerd Hoffmann wrote: >> Signed-off-by: Gerd Hoffmann<kraxel@redhat.com> >> --- >> hw/pc.c | 4 ++++ >> hw/virtio-pci.c | 8 ++++++-- >> 2 files changed, 10 insertions(+), 2 deletions(-) >> >> diff --git a/hw/pc.c b/hw/pc.c >> index cc6e7e8..cccb865 100644 >> --- a/hw/pc.c >> +++ b/hw/pc.c >> @@ -1487,6 +1487,10 @@ static QEMUMachine pc_machine_v0_10 = { >> .driver = "virtio-net-pci", >> .property = "vectors", >> .value = stringify(0), >> + },{ >> + .driver = "virtio-blk-pci", >> + .property = "vectors", >> + .value = stringify(0), > > This means that MSI is enabled for virtio-blk with the pc-0.11 machine > type. > > Shouldn't we add a pc-0.12 machine type and disable MSI for pc-0.11? Either that or apply the virtio-blk msi patch to the stable-0.11 branch. cheers, Gerd
diff --git a/hw/pc.c b/hw/pc.c index cc6e7e8..cccb865 100644 --- a/hw/pc.c +++ b/hw/pc.c @@ -1487,6 +1487,10 @@ static QEMUMachine pc_machine_v0_10 = { .driver = "virtio-net-pci", .property = "vectors", .value = stringify(0), + },{ + .driver = "virtio-blk-pci", + .property = "vectors", + .value = stringify(0), }, { /* end of list */ } }, diff --git a/hw/virtio-pci.c b/hw/virtio-pci.c index 8b57dfc..e95700a 100644 --- a/hw/virtio-pci.c +++ b/hw/virtio-pci.c @@ -437,10 +437,13 @@ static void virtio_blk_init_pci(PCIDevice *pci_dev) fprintf(stderr, "drive property not set\n"); } vdev = virtio_blk_init(&pci_dev->qdev, proxy->dinfo); + vdev->nvectors = proxy->nvectors; virtio_init_pci(proxy, vdev, PCI_VENDOR_ID_REDHAT_QUMRANET, PCI_DEVICE_ID_VIRTIO_BLOCK, proxy->class_code, 0x00); + /* make the actual value visible */ + proxy->nvectors = vdev->nvectors; } static void virtio_console_init_pci(PCIDevice *pci_dev) @@ -504,6 +507,7 @@ static PCIDeviceInfo virtio_info[] = { .qdev.props = (Property[]) { DEFINE_PROP_HEX32("class", VirtIOPCIProxy, class_code, 0), DEFINE_PROP_DRIVE("drive", VirtIOPCIProxy, dinfo), + DEFINE_PROP_UINT32("vectors", VirtIOPCIProxy, nvectors, 2), DEFINE_PROP_END_OF_LIST(), }, },{ @@ -511,8 +515,8 @@ static PCIDeviceInfo virtio_info[] = { .qdev.size = sizeof(VirtIOPCIProxy), .init = virtio_net_init_pci, .qdev.props = (Property[]) { - DEFINE_PROP_HEX32("vectors", VirtIOPCIProxy, nvectors, - NIC_NVECTORS_UNSPECIFIED), + DEFINE_PROP_UINT32("vectors", VirtIOPCIProxy, nvectors, + NIC_NVECTORS_UNSPECIFIED), DEFINE_PROP_END_OF_LIST(), }, },{
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> --- hw/pc.c | 4 ++++ hw/virtio-pci.c | 8 ++++++-- 2 files changed, 10 insertions(+), 2 deletions(-)