From 1d7e7fb59c02e1fb3cddf66add4ccc7deca14e51 Mon Sep 17 00:00:00 2001 From: hornet Date: Mon, 11 Nov 2013 10:36:24 +0000 Subject: 2.3.2 MMIO: Define reset requirements This patch addresses VIRTIO-47, adding explicit description of the device behaviour when being reset. As per meeting 2013-11-05 https://lists.oasis-open.org/archives/virtio/201311/msg00031.html Signed-off-by: Pawel Moll git-svn-id: https://tools.oasis-open.org/version-control/svn/virtio@93 0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652 --- virtio-v1.0-wd01-part1-specification.txt | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/virtio-v1.0-wd01-part1-specification.txt b/virtio-v1.0-wd01-part1-specification.txt index f5f552a..3be1bef 100644 --- a/virtio-v1.0-wd01-part1-specification.txt +++ b/virtio-v1.0-wd01-part1-specification.txt @@ -1525,8 +1525,10 @@ configuration space. The following list presents their layout: flags. Writing non-zero values to this register sets the status flags, indicating the Guest progress. Writing zero (0x0) to this - register triggers a device reset. - Also see "2.2.1. Device Initialization". + register triggers a device reset, including clearing all + bits in the InterruptStatus register and ready bits in the + QueueReady register for all queues in the device. + See also p. 2.3.2.3.1. "Device Initialization". * 0x080 | W | QueueDescLow 0x084 | W | QueueDescHigh @@ -1590,6 +1592,9 @@ If both values are valid, it must read the DeviceID register and if its value is zero (0x0) must abort initialization and must not access any other register. +Further initialization must follow the procedure described in +p. 2.2.1. "Device Initialization". + 2.3.2.3.2. Virtqueue Configuration ---------------------------------- @@ -1732,6 +1737,14 @@ nor behaviour: * 0x064 | W | InterruptACK * 0x070 | RW | Status + Device status. + Reading from this register returns the current device status + flags. + Writing non-zero values to this register sets the status flags, + indicating the Guest progress. Writing zero (0x0) to this + register triggers a device reset. This should include + setting QueuePFN to zero (0x0) for all queues in the device. + Also see "2.2.1. Device Initialization". * 0x100+ | RW | Config -- cgit v1.2.3