changeset e2716d523716 in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=e2716d523716
description:
        dev: Correctly clear interrupts in VirtIO PCI

        Correctly clear the PCI interrupt belonging to a VirtIO device when
        the ISR register is read.

diffstat:

 src/dev/virtio/pci.cc |  7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)

diffs (17 lines):

diff -r d59e40b074c6 -r e2716d523716 src/dev/virtio/pci.cc
--- a/src/dev/virtio/pci.cc     Tue Feb 03 14:25:43 2015 -0500
+++ b/src/dev/virtio/pci.cc     Tue Feb 03 14:25:47 2015 -0500
@@ -123,8 +123,11 @@
       case OFF_ISR_STATUS: {
           DPRINTF(VIOPci, "   ISR_STATUS\n");
           assert(size == sizeof(uint8_t));
-          uint8_t isr_status(interruptDeliveryPending ? 1 : 0);
-          interruptDeliveryPending = false;
+          const uint8_t isr_status(interruptDeliveryPending ? 1 : 0);
+          if (interruptDeliveryPending) {
+              interruptDeliveryPending = false;
+              intrClear();
+          }
           pkt->set<uint8_t>(isr_status);
       } break;
 
_______________________________________________
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to