From dd56040d297a0c530e204e9f459b256e3ddd7e8f Mon Sep 17 00:00:00 2001 From: "Dr. David Alan Gilbert" Date: Mon, 29 Jul 2019 17:29:03 +0100 Subject: Revert "hw: report invalid disable-legacy|modern usage for virtio-1-only devs" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Message-Id: <20190729162903.4489-3-dgilbert@redhat.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Reviewed-by: Daniel P. Berrangé Reviewed-by: Cornelia Huck --- hw/virtio/virtio-pci.h | 31 ++++++------------------------- 1 file changed, 6 insertions(+), 25 deletions(-) (limited to 'hw/virtio/virtio-pci.h') diff --git a/hw/virtio/virtio-pci.h b/hw/virtio/virtio-pci.h index 619d909..292275a 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; } /* -- cgit v1.1