From a5c4eb3de9deb3a71a6a5230a25ff5962e584980 Mon Sep 17 00:00:00 2001 From: Mitch Hayenga Date: Wed, 30 Sep 2015 11:14:19 -0500 Subject: isa,cpu: Add support for FS SMT Interrupts Adds per-thread interrupt controllers and thread/context logic so that interrupts properly get routed in SMT systems. --- src/cpu/kvm/x86_cpu.cc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src/cpu/kvm') diff --git a/src/cpu/kvm/x86_cpu.cc b/src/cpu/kvm/x86_cpu.cc index cd46370a4..5312ca55a 100644 --- a/src/cpu/kvm/x86_cpu.cc +++ b/src/cpu/kvm/x86_cpu.cc @@ -1142,9 +1142,9 @@ X86KvmCPU::deliverInterrupts() // call across threads, we might still lose interrupts unless // they are getInterrupt() and updateIntrInfo() are called // atomically. - EventQueue::ScopedMigration migrate(interrupts->eventQueue()); - fault = interrupts->getInterrupt(tc); - interrupts->updateIntrInfo(tc); + EventQueue::ScopedMigration migrate(interrupts[0]->eventQueue()); + fault = interrupts[0]->getInterrupt(tc); + interrupts[0]->updateIntrInfo(tc); } X86Interrupt *x86int(dynamic_cast(fault.get())); @@ -1187,8 +1187,8 @@ X86KvmCPU::kvmRun(Tick ticks) { struct kvm_run &kvm_run(*getKvmRunState()); - if (interrupts->checkInterruptsRaw()) { - if (interrupts->hasPendingUnmaskable()) { + if (interrupts[0]->checkInterruptsRaw()) { + if (interrupts[0]->hasPendingUnmaskable()) { DPRINTF(KvmInt, "Delivering unmaskable interrupt.\n"); syncThreadContext(); @@ -1200,7 +1200,7 @@ X86KvmCPU::kvmRun(Tick ticks) // the thread context and check if there are /really/ // interrupts that should be delivered now. syncThreadContext(); - if (interrupts->checkInterrupts(tc)) { + if (interrupts[0]->checkInterrupts(tc)) { DPRINTF(KvmInt, "M5 has pending interrupts, delivering interrupt.\n"); -- cgit v1.2.3