cpu: Get rid of the nextInstEventCount method.
authorGabe Black <gabeblack@google.com>
Tue, 15 Oct 2019 00:51:15 +0000 (17:51 -0700)
committerGabe Black <gabeblack@google.com>
Fri, 25 Oct 2019 22:42:31 +0000 (22:42 +0000)
This was only used by the KVM CPU, and it has access to all it needs to
figure out that value locally without requiring all the ThreadContexts
to implement an equivalent function.

Change-Id: I17a14ce669db2519edf129db761ebd8dc3bd4129
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/22114
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>
src/arch/arm/fastmodel/iris/thread_context.hh
src/cpu/checker/thread_context.hh
src/cpu/kvm/base.cc
src/cpu/o3/thread_context.hh
src/cpu/simple_thread.hh
src/cpu/thread_context.hh

index ef52143337de4842c0eb6b9c9847bc9ead7f3339..acb325cdb1c8ec1cd8042984b318147b29baa8cd 100644 (file)
@@ -96,7 +96,6 @@ class ThreadContext : public ::ThreadContext
     bool schedule(PCEvent *e) override { return false; }
     bool remove(PCEvent *e) override { return false; }
 
-    Tick nextInstEventCount() override { return MaxTick; }
     void scheduleInstCountEvent(Event *event, Tick count) override {}
     void descheduleInstCountEvent(Event *event) override {}
     Tick getCurrentInstCount() override;
index d32e0fa703c8c1dba385dafdb7cbb53057b31704..347c4bab6d9fcb7f546f6df9cb149b6d183a236b 100644 (file)
@@ -92,11 +92,6 @@ class CheckerThreadContext : public ThreadContext
     bool schedule(PCEvent *e) override { return actualTC->schedule(e); }
     bool remove(PCEvent *e) override { return actualTC->remove(e); }
 
-    Tick
-    nextInstEventCount() override
-    {
-        return actualTC->nextInstEventCount();
-    }
     void
     scheduleInstCountEvent(Event *event, Tick count) override
     {
index 2522eeeb2795dfb98481e707c6e5ab0231c0411b..83cb04f47f8e3ac42cb04a36d8ed72f940d2df7f 100644 (file)
@@ -630,7 +630,9 @@ BaseKvmCPU::tick()
 
       case RunningServiceCompletion:
       case Running: {
-          const uint64_t nextInstEvent(tc->nextInstEventCount());
+          auto &queue = thread->comInstEventQueue;
+          const uint64_t nextInstEvent(
+                  queue.empty() ? MaxTick : queue.nextTick());
           // Enter into KVM and complete pending IO instructions if we
           // have an instruction event pending.
           const Tick ticksToExecute(
@@ -686,7 +688,7 @@ BaseKvmCPU::tick()
           // Service any pending instruction events. The vCPU should
           // have exited in time for the event using the instruction
           // counter configured by setupInstStop().
-          thread->comInstEventQueue.serviceEvents(ctrInsts);
+          queue.serviceEvents(ctrInsts);
 
           if (tryDrain())
               _status = Idle;
@@ -1346,10 +1348,10 @@ BaseKvmCPU::ioctlRun()
 void
 BaseKvmCPU::setupInstStop()
 {
-    Tick next = tc->nextInstEventCount();
-    if (next == MaxTick) {
+    if (thread->comInstEventQueue.empty()) {
         setupInstCounter(0);
     } else {
+        Tick next = thread->comInstEventQueue.nextTick();
         assert(next > ctrInsts);
         setupInstCounter(next - ctrInsts);
     }
index 65496429b7657283ff8a6678bee42583b28384d2..c68f34c079f9e623b6ff17379dccb2f4ae4a8125 100644 (file)
@@ -86,12 +86,6 @@ class O3ThreadContext : public ThreadContext
         return thread->pcEventQueue.remove(e);
     }
 
-    Tick
-    nextInstEventCount() override
-    {
-        return thread->comInstEventQueue.empty() ?
-            MaxTick : thread->comInstEventQueue.nextTick();
-    }
     void
     scheduleInstCountEvent(Event *event, Tick count) override
     {
index 367eceab3e06655d113c987ee240e7a14ce2e40b..3a7c85a90acec3489c42156fb64ce1ad20f5508b 100644 (file)
@@ -198,12 +198,6 @@ class SimpleThread : public ThreadState, public ThreadContext
     bool schedule(PCEvent *e) override { return pcEventQueue.schedule(e); }
     bool remove(PCEvent *e) override { return pcEventQueue.remove(e); }
 
-    Tick
-    nextInstEventCount() override
-    {
-        return comInstEventQueue.empty() ?
-            MaxTick : comInstEventQueue.nextTick();
-    }
     void
     scheduleInstCountEvent(Event *event, Tick count) override
     {
index 2e1b572e6acc98838340b87b2aef31dd2c3bd619..a77ac48483559cf42a7ecdb9c56ab99407cabbdd 100644 (file)
@@ -192,7 +192,6 @@ class ThreadContext : public PCEventScope
 
     virtual EndQuiesceEvent *getQuiesceEvent() = 0;
 
-    virtual Tick nextInstEventCount() = 0;
     virtual void scheduleInstCountEvent(Event *event, Tick count) = 0;
     virtual void descheduleInstCountEvent(Event *event) = 0;
     virtual Tick getCurrentInstCount() = 0;