]> xenbits.xensource.com Git - qemu-xen.git/commit
virtio-mmio: Clear v2 transport state on soft reset
authorJean-Philippe Brucker <jean-philippe@linaro.org>
Fri, 13 Dec 2019 09:54:10 +0000 (10:54 +0100)
committerMichael S. Tsirkin <mst@redhat.com>
Sun, 5 Jan 2020 12:03:03 +0000 (07:03 -0500)
commit351da8323a3152a21dd0c8de2f583464ff406d26
tree4dd8b203e5ab390d5c2b2dc8a2d995d7a5da75a5
parent48892c6c8def6624a0ed57e2bd6c2a0a9878b973
virtio-mmio: Clear v2 transport state on soft reset

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 <jean-philippe@linaro.org>
Message-Id: <20191213095410.1516119-1-jean-philippe@linaro.org>
Reviewed-by: Sergio Lopez <slp@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
hw/virtio/virtio-mmio.c