[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 20/24] virtio-mmio: Clear v2 transport state on soft reset
From: |
Michael S. Tsirkin |
Subject: |
[PULL 20/24] virtio-mmio: Clear v2 transport state on soft reset |
Date: |
Thu, 19 Dec 2019 08:28:41 -0500 |
From: Jean-Philippe Brucker <address@hidden>
At the moment when the guest writes a status of 0, we only reset the
virtio core state but not the virtio-mmio state. The virtio-mmio
specification says (v1.1 cs01, 4.2.2.1 Device Requirements:
MMIO Device Register Layout):
Upon reset, the device MUST clear all bits in InterruptStatus and
ready bits in the QueueReady register for all queues in the device.
The core already takes care of InterruptStatus by clearing isr, but we
still need to clear QueueReady.
It would be tempting to clean all registers, but since the specification
doesn't say anything more, guests could rely on the registers keeping
their state across reset. Linux for example, relies on this for
GuestPageSize in the legacy MMIO tranport.
Fixes: 44e687a4d9ab ("virtio-mmio: implement modern (v2) personality
(virtio-1)")
Signed-off-by: Jean-Philippe Brucker <address@hidden>
Message-Id: <address@hidden>
Reviewed-by: Sergio Lopez <address@hidden>
Reviewed-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>
---
hw/virtio/virtio-mmio.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/hw/virtio/virtio-mmio.c b/hw/virtio/virtio-mmio.c
index 94d934c44b..ef40b7a9b2 100644
--- a/hw/virtio/virtio-mmio.c
+++ b/hw/virtio/virtio-mmio.c
@@ -65,6 +65,19 @@ static void virtio_mmio_stop_ioeventfd(VirtIOMMIOProxy
*proxy)
virtio_bus_stop_ioeventfd(&proxy->bus);
}
+static void virtio_mmio_soft_reset(VirtIOMMIOProxy *proxy)
+{
+ int i;
+
+ if (proxy->legacy) {
+ return;
+ }
+
+ for (i = 0; i < VIRTIO_QUEUE_MAX; i++) {
+ proxy->vqs[i].enabled = 0;
+ }
+}
+
static uint64_t virtio_mmio_read(void *opaque, hwaddr offset, unsigned size)
{
VirtIOMMIOProxy *proxy = (VirtIOMMIOProxy *)opaque;
@@ -378,6 +391,7 @@ static void virtio_mmio_write(void *opaque, hwaddr offset,
uint64_t value,
if (vdev->status == 0) {
virtio_reset(vdev);
+ virtio_mmio_soft_reset(proxy);
}
break;
case VIRTIO_MMIO_QUEUE_DESC_LOW:
--
MST
- [PULL 09/24] Implement backend program convention command for vhost-user-blk, (continued)
- [PULL 09/24] Implement backend program convention command for vhost-user-blk, Michael S. Tsirkin, 2019/12/19
- [PULL 10/24] virtio: don't enable notifications during polling, Michael S. Tsirkin, 2019/12/19
- [PULL 12/24] numa: Extend CLI to provide memory latency and bandwidth information, Michael S. Tsirkin, 2019/12/19
- [PULL 13/24] numa: Extend CLI to provide memory side cache information, Michael S. Tsirkin, 2019/12/19
- [PULL 14/24] hmat acpi: Build Memory Proximity Domain Attributes Structure(s), Michael S. Tsirkin, 2019/12/19
- [PULL 15/24] hmat acpi: Build System Locality Latency and Bandwidth Information Structure(s), Michael S. Tsirkin, 2019/12/19
- [PULL 16/24] hmat acpi: Build Memory Side Cache Information Structure(s), Michael S. Tsirkin, 2019/12/19
- [PULL 17/24] tests/numa: Add case for QMP build HMAT, Michael S. Tsirkin, 2019/12/19
- [PULL 18/24] tests/bios-tables-test: add test cases for ACPI HMAT, Michael S. Tsirkin, 2019/12/19
- [PULL 19/24] ACPI: add expected files for HMAT tests (acpihmat), Michael S. Tsirkin, 2019/12/19
- [PULL 20/24] virtio-mmio: Clear v2 transport state on soft reset,
Michael S. Tsirkin <=
- [PULL 21/24] hw/pci/pci_host: Remove redundant PCI_DPRINTF(), Michael S. Tsirkin, 2019/12/19
- [PULL 22/24] hw/pci/pci_host: Let pci_data_[read/write] use unsigned 'size' argument, Michael S. Tsirkin, 2019/12/19
- [PULL 23/24] vhost-user: add VHOST_USER_RESET_DEVICE to reset devices, Michael S. Tsirkin, 2019/12/19
- [PULL 24/24] vhost-user-scsi: reset the device if supported, Michael S. Tsirkin, 2019/12/19
- [PULL 08/24] virtio-pci: disable vring processing when bus-mastering is disabled, Michael S. Tsirkin, 2019/12/19
- [PULL 11/24] numa: Extend CLI to provide initiator information for numa nodes, Michael S. Tsirkin, 2019/12/19
- Re: [PULL 00/24] virtio, pci, pc: fixes, features, Peter Maydell, 2019/12/20
- Re: [PULL 00/24] virtio, pci, pc: fixes, features, Michael S. Tsirkin, 2019/12/22
- Re: [PULL 00/24] virtio, pci, pc: fixes, features, Michael S. Tsirkin, 2019/12/22