From 9e07a7504c94973e7837d1d3e96dbdb8d95cfad3 Mon Sep 17 00:00:00 2001 From: Mitch Hayenga Date: Wed, 30 Sep 2015 11:14:19 -0500 Subject: cpu,isa,mem: Add per-thread wakeup logic Changes wakeup functionality so that only specific threads on SMT capable cpus are woken. --- src/cpu/o3/cpu.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/cpu/o3/cpu.cc') diff --git a/src/cpu/o3/cpu.cc b/src/cpu/o3/cpu.cc index d4ee5ffe7..c17b7a9dc 100644 --- a/src/cpu/o3/cpu.cc +++ b/src/cpu/o3/cpu.cc @@ -120,7 +120,7 @@ FullO3CPU::DcachePort::recvTimingSnoopReq(PacketPtr pkt) { for (ThreadID tid = 0; tid < cpu->numThreads; tid++) { if (cpu->getCpuAddrMonitor(tid)->doMonitor(pkt)) { - cpu->wakeup(); + cpu->wakeup(tid); } } lsq->recvTimingSnoopReq(pkt); @@ -1633,15 +1633,15 @@ FullO3CPU::wakeCPU() template void -FullO3CPU::wakeup() +FullO3CPU::wakeup(ThreadID tid) { - if (this->thread[0]->status() != ThreadContext::Suspended) + if (this->thread[tid]->status() != ThreadContext::Suspended) return; this->wakeCPU(); DPRINTF(Quiesce, "Suspended Processor woken\n"); - this->threadContexts[0]->activate(); + this->threadContexts[tid]->activate(); } template -- cgit v1.2.3