virtio: disable ioeventfd as early as possible
Avoid "tricking" virtio-blk-dataplane into thinking that ioeventfd will be available when it is not. This bug has always been there, but it will break TCG+ioeventfd=on once the dataplane code will be always used when ioeventfd=on. Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
019518a80e
commit
ca2b413c39
@ -709,6 +709,10 @@ static void virtio_ccw_device_realize(VirtioCcwDevice *dev, Error **errp)
|
|||||||
sch->cssid, sch->ssid, sch->schid, sch->devno,
|
sch->cssid, sch->ssid, sch->schid, sch->devno,
|
||||||
ccw_dev->bus_id.valid ? "user-configured" : "auto-configured");
|
ccw_dev->bus_id.valid ? "user-configured" : "auto-configured");
|
||||||
|
|
||||||
|
if (!kvm_eventfds_enabled()) {
|
||||||
|
dev->flags &= ~VIRTIO_CCW_FLAG_USE_IOEVENTFD;
|
||||||
|
}
|
||||||
|
|
||||||
if (k->realize) {
|
if (k->realize) {
|
||||||
k->realize(dev, &err);
|
k->realize(dev, &err);
|
||||||
}
|
}
|
||||||
@ -1311,10 +1315,6 @@ static void virtio_ccw_device_plugged(DeviceState *d, Error **errp)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!kvm_eventfds_enabled()) {
|
|
||||||
dev->flags &= ~VIRTIO_CCW_FLAG_USE_IOEVENTFD;
|
|
||||||
}
|
|
||||||
|
|
||||||
sch->id.cu_model = virtio_bus_get_vdev_id(&dev->bus);
|
sch->id.cu_model = virtio_bus_get_vdev_id(&dev->bus);
|
||||||
|
|
||||||
|
|
||||||
|
@ -1719,10 +1719,6 @@ static void virtio_pci_device_plugged(DeviceState *d, Error **errp)
|
|||||||
pci_register_bar(&proxy->pci_dev, proxy->legacy_io_bar_idx,
|
pci_register_bar(&proxy->pci_dev, proxy->legacy_io_bar_idx,
|
||||||
PCI_BASE_ADDRESS_SPACE_IO, &proxy->bar);
|
PCI_BASE_ADDRESS_SPACE_IO, &proxy->bar);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!kvm_has_many_ioeventfds()) {
|
|
||||||
proxy->flags &= ~VIRTIO_PCI_FLAG_USE_IOEVENTFD;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void virtio_pci_device_unplugged(DeviceState *d)
|
static void virtio_pci_device_unplugged(DeviceState *d)
|
||||||
@ -1751,6 +1747,10 @@ static void virtio_pci_realize(PCIDevice *pci_dev, Error **errp)
|
|||||||
bool pcie_port = pci_bus_is_express(pci_dev->bus) &&
|
bool pcie_port = pci_bus_is_express(pci_dev->bus) &&
|
||||||
!pci_bus_is_root(pci_dev->bus);
|
!pci_bus_is_root(pci_dev->bus);
|
||||||
|
|
||||||
|
if (!kvm_has_many_ioeventfds()) {
|
||||||
|
proxy->flags &= ~VIRTIO_PCI_FLAG_USE_IOEVENTFD;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* virtio pci bar layout used by default.
|
* virtio pci bar layout used by default.
|
||||||
* subclasses can re-arrange things if needed.
|
* subclasses can re-arrange things if needed.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user