summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/arch/x86/interrupts.cc2
-rw-r--r--src/dev/x86/intdev.cc8
-rw-r--r--src/dev/x86/intdev.hh2
3 files changed, 6 insertions, 6 deletions
diff --git a/src/arch/x86/interrupts.cc b/src/arch/x86/interrupts.cc
index 951392a15..a7d9f3277 100644
--- a/src/arch/x86/interrupts.cc
+++ b/src/arch/x86/interrupts.cc
@@ -340,8 +340,6 @@ X86ISA::Interrupts::recvResponse(PacketPtr pkt)
low.deliveryStatus = 0;
regs[APIC_INTERRUPT_COMMAND_LOW] = low;
}
- delete pkt->req;
- delete pkt;
DPRINTF(LocalApic, "ICR is now idle.\n");
return 0;
}
diff --git a/src/dev/x86/intdev.cc b/src/dev/x86/intdev.cc
index 5bc6065f5..0d392d5ee 100644
--- a/src/dev/x86/intdev.cc
+++ b/src/dev/x86/intdev.cc
@@ -37,10 +37,14 @@ X86ISA::IntDev::IntPort::sendMessage(ApicList apics,
ApicList::iterator apicIt;
for (apicIt = apics.begin(); apicIt != apics.end(); apicIt++) {
PacketPtr pkt = buildIntRequest(*apicIt, message);
- if (timing)
+ if (timing) {
sendMessageTiming(pkt, latency);
- else
+ // The target handles cleaning up the packet in timing mode.
+ } else {
sendMessageAtomic(pkt);
+ delete pkt->req;
+ delete pkt;
+ }
}
}
diff --git a/src/dev/x86/intdev.hh b/src/dev/x86/intdev.hh
index b01d36e37..61e486718 100644
--- a/src/dev/x86/intdev.hh
+++ b/src/dev/x86/intdev.hh
@@ -138,8 +138,6 @@ class IntDev
virtual Tick
recvResponse(PacketPtr pkt)
{
- delete pkt->req;
- delete pkt;
return 0;
}