Revision 89c473fd
b/hw/virtio-pci.c | ||
---|---|---|
160 | 160 |
if (proxy->vdev->config_vector != VIRTIO_NO_VECTOR) { |
161 | 161 |
return msix_vector_use(&proxy->pci_dev, proxy->vdev->config_vector); |
162 | 162 |
} |
163 |
|
|
164 |
/* Try to find out if the guest has bus master disabled, but is |
|
165 |
in ready state. Then we have a buggy guest OS. */ |
|
166 |
if ((proxy->vdev->status & VIRTIO_CONFIG_S_DRIVER_OK) && |
|
167 |
!(proxy->pci_dev.config[PCI_COMMAND] & PCI_COMMAND_MASTER)) { |
|
168 |
proxy->flags |= VIRTIO_PCI_FLAG_BUS_MASTER_BUG; |
|
169 |
} |
|
170 | 163 |
return 0; |
171 | 164 |
} |
172 | 165 |
|
... | ... | |
651 | 644 |
VirtIOPCIProxy *proxy = opaque; |
652 | 645 |
|
653 | 646 |
if (running) { |
647 |
/* Try to find out if the guest has bus master disabled, but is |
|
648 |
in ready state. Then we have a buggy guest OS. */ |
|
649 |
if ((proxy->vdev->status & VIRTIO_CONFIG_S_DRIVER_OK) && |
|
650 |
!(proxy->pci_dev.config[PCI_COMMAND] & PCI_COMMAND_MASTER)) { |
|
651 |
proxy->flags |= VIRTIO_PCI_FLAG_BUS_MASTER_BUG; |
|
652 |
} |
|
654 | 653 |
virtio_pci_start_ioeventfd(proxy); |
655 | 654 |
} else { |
656 | 655 |
virtio_pci_stop_ioeventfd(proxy); |
b/hw/virtio.h | ||
---|---|---|
92 | 92 |
void (*save_queue)(void * opaque, int n, QEMUFile *f); |
93 | 93 |
int (*load_config)(void * opaque, QEMUFile *f); |
94 | 94 |
int (*load_queue)(void * opaque, int n, QEMUFile *f); |
95 |
int (*load_done)(void * opaque, QEMUFile *f); |
|
95 | 96 |
unsigned (*get_features)(void * opaque); |
96 | 97 |
bool (*query_guest_notifiers)(void * opaque); |
97 | 98 |
int (*set_guest_notifiers)(void * opaque, bool assigned); |
Also available in: Unified diff