summaryrefslogtreecommitdiffstats
path: root/hw/virtio/virtio-pci.h
diff options
context:
space:
mode:
authorDr. David Alan Gilbert2019-07-29 18:29:03 +0200
committerMichael S. Tsirkin2019-07-29 22:57:27 +0200
commitdd56040d297a0c530e204e9f459b256e3ddd7e8f (patch)
tree0a4174482e923564cb2b89ea733dab9f15a5c674 /hw/virtio/virtio-pci.h
parentRevert "Revert "globals: Allow global properties to be optional"" (diff)
downloadqemu-dd56040d297a0c530e204e9f459b256e3ddd7e8f.tar.gz
qemu-dd56040d297a0c530e204e9f459b256e3ddd7e8f.tar.xz
qemu-dd56040d297a0c530e204e9f459b256e3ddd7e8f.zip
Revert "hw: report invalid disable-legacy|modern usage for virtio-1-only devs"
This reverts commit f2784eed306449c3d04a71a05ed6463b8289aedf since that accidentally removes the PCIe capabilities from virtio devices because virtio_pci_dc_realize is called before the new 'mode' flag is set. Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Message-Id: <20190729162903.4489-3-dgilbert@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Diffstat (limited to 'hw/virtio/virtio-pci.h')
-rw-r--r--hw/virtio/virtio-pci.h31
1 files changed, 6 insertions, 25 deletions
diff --git a/hw/virtio/virtio-pci.h b/hw/virtio/virtio-pci.h
index 619d9098c1..292275acb1 100644
--- a/hw/virtio/virtio-pci.h
+++ b/hw/virtio/virtio-pci.h
@@ -15,7 +15,6 @@
#ifndef QEMU_VIRTIO_PCI_H
#define QEMU_VIRTIO_PCI_H
-#include "qapi/error.h"
#include "hw/pci/msi.h"
#include "hw/virtio/virtio-bus.h"
@@ -119,12 +118,6 @@ typedef struct VirtIOPCIQueue {
uint32_t used[2];
} VirtIOPCIQueue;
-typedef enum {
- VIRTIO_PCI_MODE_LEGACY,
- VIRTIO_PCI_MODE_TRANSITIONAL,
- VIRTIO_PCI_MODE_MODERN,
-} VirtIOPCIMode;
-
struct VirtIOPCIProxy {
PCIDevice pci_dev;
MemoryRegion bar;
@@ -149,7 +142,6 @@ struct VirtIOPCIProxy {
bool disable_modern;
bool ignore_backend_features;
OnOffAuto disable_legacy;
- VirtIOPCIMode mode;
uint32_t class_code;
uint32_t nvectors;
uint32_t dfselect;
@@ -164,34 +156,23 @@ struct VirtIOPCIProxy {
static inline bool virtio_pci_modern(VirtIOPCIProxy *proxy)
{
- return proxy->mode != VIRTIO_PCI_MODE_LEGACY;
+ return !proxy->disable_modern;
}
static inline bool virtio_pci_legacy(VirtIOPCIProxy *proxy)
{
- return proxy->mode != VIRTIO_PCI_MODE_MODERN;
+ return proxy->disable_legacy == ON_OFF_AUTO_OFF;
}
-static inline bool virtio_pci_force_virtio_1(VirtIOPCIProxy *proxy,
- Error **errp)
+static inline void virtio_pci_force_virtio_1(VirtIOPCIProxy *proxy)
{
- if (proxy->disable_legacy == ON_OFF_AUTO_OFF) {
- error_setg(errp, "Unable to set disable-legacy=off on a virtio-1.0 "
- "only device");
- return false;
- }
- if (proxy->disable_modern == true) {
- error_setg(errp, "Unable to set disable-modern=on on a virtio-1.0 "
- "only device");
- return false;
- }
- proxy->mode = VIRTIO_PCI_MODE_MODERN;
- return true;
+ proxy->disable_modern = false;
+ proxy->disable_legacy = ON_OFF_AUTO_ON;
}
static inline void virtio_pci_disable_modern(VirtIOPCIProxy *proxy)
{
- proxy->mode = VIRTIO_PCI_MODE_LEGACY;
+ proxy->disable_modern = true;
}
/*