mirror of https://github.com/xemu-project/xemu.git
virtio-pci: don't touch pci on virtio reset
virtio level reset should not affect pci express registers such as PM, error or link. Fixes:27ce0f3afc
("hw/virtio: fix Power Management Control Register for PCI Express virtio devices") Fixes:d584f1b9ca
("hw/virtio: fix Link Control Register for PCI Express virtio devices") Fixes:c2cabb3422
("hw/virtio: fix error enabling flags in Device Control register") Cc: "Marcel Apfelbaum" <marcel@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
888fbaaf02
commit
9afb4177d6
|
@ -1947,7 +1947,6 @@ static void virtio_pci_reset(DeviceState *qdev)
|
|||
{
|
||||
VirtIOPCIProxy *proxy = VIRTIO_PCI(qdev);
|
||||
VirtioBusState *bus = VIRTIO_BUS(&proxy->bus);
|
||||
PCIDevice *dev = PCI_DEVICE(qdev);
|
||||
int i;
|
||||
|
||||
virtio_bus_reset(bus);
|
||||
|
@ -1960,6 +1959,13 @@ static void virtio_pci_reset(DeviceState *qdev)
|
|||
proxy->vqs[i].avail[0] = proxy->vqs[i].avail[1] = 0;
|
||||
proxy->vqs[i].used[0] = proxy->vqs[i].used[1] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
static void virtio_pci_bus_reset(DeviceState *qdev)
|
||||
{
|
||||
PCIDevice *dev = PCI_DEVICE(qdev);
|
||||
|
||||
virtio_pci_reset(qdev);
|
||||
|
||||
if (pci_is_express(dev)) {
|
||||
pcie_cap_deverr_reset(dev);
|
||||
|
@ -2027,7 +2033,7 @@ static void virtio_pci_class_init(ObjectClass *klass, void *data)
|
|||
k->class_id = PCI_CLASS_OTHERS;
|
||||
device_class_set_parent_realize(dc, virtio_pci_dc_realize,
|
||||
&vpciklass->parent_dc_realize);
|
||||
dc->reset = virtio_pci_reset;
|
||||
dc->reset = virtio_pci_bus_reset;
|
||||
}
|
||||
|
||||
static const TypeInfo virtio_pci_info = {
|
||||
|
|
Loading…
Reference in New Issue