Message ID | 20191019063810.6944-3-stefanha@redhat.com |
---|---|
State | New |
Headers | show |
Series | libqos: add VIRTIO PCI 1.0 support | expand |
On 19/10/2019 08.37, Stefan Hajnoczi wrote: > There was no real virtio-mmio ABI change between Legacy and VIRTIO 1.0 > except that the Version field was incremented from 1 to 2. > > However, QEMU does not allow Legacy drivers to perform VIRTIO 1.0 > operations like accessing 64-bit feature bits. Since we will introduce > 64-bit feature bit support we need a way to differentiate between > virtio-mmio Version 1 and 2 to avoid upsetting QEMU when we operate in > Legacy mode. > > Stash away the Version field so later patches can change behavior > depending on the version. > > Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> > --- > tests/libqos/virtio-mmio.h | 1 + > tests/libqos/virtio-mmio.c | 3 +++ > 2 files changed, 4 insertions(+) Reviewed-by: Thomas Huth <thuth@redhat.com>
diff --git a/tests/libqos/virtio-mmio.h b/tests/libqos/virtio-mmio.h index 17a17141c3..0e45778b07 100644 --- a/tests/libqos/virtio-mmio.h +++ b/tests/libqos/virtio-mmio.h @@ -40,6 +40,7 @@ typedef struct QVirtioMMIODevice { uint64_t addr; uint32_t page_size; uint32_t features; /* As it cannot be read later, save it */ + uint32_t version; } QVirtioMMIODevice; extern const QVirtioBus qvirtio_mmio; diff --git a/tests/libqos/virtio-mmio.c b/tests/libqos/virtio-mmio.c index d0047876a8..7154b03c1d 100644 --- a/tests/libqos/virtio-mmio.c +++ b/tests/libqos/virtio-mmio.c @@ -223,6 +223,9 @@ void qvirtio_mmio_init_device(QVirtioMMIODevice *dev, QTestState *qts, magic = qtest_readl(qts, addr + QVIRTIO_MMIO_MAGIC_VALUE); g_assert(magic == ('v' | 'i' << 8 | 'r' << 16 | 't' << 24)); + dev->version = qtest_readl(qts, addr + QVIRTIO_MMIO_VERSION); + g_assert(dev->version == 1 || dev->version == 2); + dev->qts = qts; dev->addr = addr; dev->page_size = page_size;
There was no real virtio-mmio ABI change between Legacy and VIRTIO 1.0 except that the Version field was incremented from 1 to 2. However, QEMU does not allow Legacy drivers to perform VIRTIO 1.0 operations like accessing 64-bit feature bits. Since we will introduce 64-bit feature bit support we need a way to differentiate between virtio-mmio Version 1 and 2 to avoid upsetting QEMU when we operate in Legacy mode. Stash away the Version field so later patches can change behavior depending on the version. Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> --- tests/libqos/virtio-mmio.h | 1 + tests/libqos/virtio-mmio.c | 3 +++ 2 files changed, 4 insertions(+)