diff options
author | Daniel Verkamp <dverkamp@chromium.org> | 2018-10-03 16:50:28 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2018-10-11 17:33:55 -0700 |
commit | 1232debf1d60d4188a3e6fe88a597f88e87eda01 (patch) | |
tree | e419b12c5654612bab71194b100de3e41d83f22b /devices | |
parent | cf2e00e9827798de956ff564aa422e9f31983d69 (diff) | |
download | crosvm-1232debf1d60d4188a3e6fe88a597f88e87eda01.tar crosvm-1232debf1d60d4188a3e6fe88a597f88e87eda01.tar.gz crosvm-1232debf1d60d4188a3e6fe88a597f88e87eda01.tar.bz2 crosvm-1232debf1d60d4188a3e6fe88a597f88e87eda01.tar.lz crosvm-1232debf1d60d4188a3e6fe88a597f88e87eda01.tar.xz crosvm-1232debf1d60d4188a3e6fe88a597f88e87eda01.tar.zst crosvm-1232debf1d60d4188a3e6fe88a597f88e87eda01.zip |
devices: virtio: pci: reset ISR status on read
The virtio PCI spec (4.1.4.5.1 Device Requirements: ISR status capability) says: "The device MUST reset ISR status to 0 on driver read." BUG=chromium:854766 TEST=None Change-Id: I92a1ddccfc8e44bed7f4a16e3cfd11b946629e22 Signed-off-by: Daniel Verkamp <dverkamp@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1260252 Reviewed-by: Dylan Reid <dgreid@chromium.org>
Diffstat (limited to 'devices')
-rw-r--r-- | devices/src/virtio/virtio_pci_device.rs | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/devices/src/virtio/virtio_pci_device.rs b/devices/src/virtio/virtio_pci_device.rs index 613418c..43d2b53 100644 --- a/devices/src/virtio/virtio_pci_device.rs +++ b/devices/src/virtio/virtio_pci_device.rs @@ -349,7 +349,8 @@ impl PciDevice for VirtioPciDevice { } o if ISR_CONFIG_BAR_OFFSET <= o && o < ISR_CONFIG_BAR_OFFSET + ISR_CONFIG_SIZE => { if let Some(v) = data.get_mut(0) { - *v = self.interrupt_status.load(Ordering::SeqCst) as u8; + // Reading this register resets it to 0. + *v = self.interrupt_status.swap(0, Ordering::SeqCst) as u8; } } o if DEVICE_CONFIG_BAR_OFFSET <= o |