mirror of https://github.com/xqemu/xqemu.git
virtio: hide legacy features from modern guests
NOTIFY_ON_EMPTY, ANY_LAYOUT and BAD are only valid on the legacy interface. Hide them from modern guests. Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
b69b30532e
commit
5f456073aa
|
@ -1095,7 +1095,8 @@ static uint64_t virtio_pci_common_read(void *opaque, hwaddr addr,
|
||||||
break;
|
break;
|
||||||
case VIRTIO_PCI_COMMON_DF:
|
case VIRTIO_PCI_COMMON_DF:
|
||||||
if (proxy->dfselect <= 1) {
|
if (proxy->dfselect <= 1) {
|
||||||
val = vdev->host_features >> (32 * proxy->dfselect);
|
val = (vdev->host_features & ~VIRTIO_LEGACY_FEATURES) >>
|
||||||
|
(32 * proxy->dfselect);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case VIRTIO_PCI_COMMON_GFSELECT:
|
case VIRTIO_PCI_COMMON_GFSELECT:
|
||||||
|
|
|
@ -25,6 +25,10 @@
|
||||||
/* A guest should never accept this. It implies negotiation is broken. */
|
/* A guest should never accept this. It implies negotiation is broken. */
|
||||||
#define VIRTIO_F_BAD_FEATURE 30
|
#define VIRTIO_F_BAD_FEATURE 30
|
||||||
|
|
||||||
|
#define VIRTIO_LEGACY_FEATURES ((0x1ULL << VIRTIO_F_BAD_FEATURE) | \
|
||||||
|
(0x1ULL << VIRTIO_F_NOTIFY_ON_EMPTY) | \
|
||||||
|
(0x1ULL << VIRTIO_F_ANY_LAYOUT))
|
||||||
|
|
||||||
struct VirtQueue;
|
struct VirtQueue;
|
||||||
|
|
||||||
static inline hwaddr vring_align(hwaddr addr,
|
static inline hwaddr vring_align(hwaddr addr,
|
||||||
|
|
Loading…
Reference in New Issue