diff options
Diffstat (limited to 'src/sim')
-rw-r--r-- | src/sim/system.cc | 19 | ||||
-rw-r--r-- | src/sim/system.hh | 3 |
2 files changed, 22 insertions, 0 deletions
diff --git a/src/sim/system.cc b/src/sim/system.cc index 9315882b7..e46c35611 100644 --- a/src/sim/system.cc +++ b/src/sim/system.cc @@ -55,6 +55,7 @@ #include "base/trace.hh" #include "config/use_kvm.hh" #if USE_KVM +#include "cpu/kvm/base.hh" #include "cpu/kvm/vm.hh" #endif #include "cpu/thread_context.hh" @@ -335,6 +336,24 @@ System::replaceThreadContext(ThreadContext *tc, ContextID context_id) remoteGDB[context_id]->replaceThreadContext(tc); } +bool +System::validKvmEnvironment() const +{ +#if USE_KVM + if (threadContexts.empty()) + return false; + + for (auto tc : threadContexts) { + if (dynamic_cast<BaseKvmCPU*>(tc->getCpuPtr()) == nullptr) { + return false; + } + } + return true; +#else + return false; +#endif +} + Addr System::allocPhysPages(int npages) { diff --git a/src/sim/system.hh b/src/sim/system.hh index c3c178dbd..a656ab382 100644 --- a/src/sim/system.hh +++ b/src/sim/system.hh @@ -262,6 +262,9 @@ class System : public MemObject return kvmVM; } + /** Verify gem5 configuration will support KVM emulation */ + bool validKvmEnvironment() const; + /** Get a pointer to access the physical memory of the system */ PhysicalMemory& getPhysMem() { return physmem; } |