# Node ID d80c97593576850913ce3616b22d524cbe0c267e # Parent 794c019fea10fc8f83d861f846518b2a3d83d24f diff --git a/src/cpu/kvm/KvmVM.py b/src/cpu/kvm/KvmVM.py --- a/src/cpu/kvm/KvmVM.py +++ b/src/cpu/kvm/KvmVM.py @@ -44,6 +44,4 @@ type = 'KvmVM' cxx_header = "cpu/kvm/vm.hh" - system = Param.System(Parent.any, "system object") - coalescedMMIO = VectorParam.AddrRange([], "memory ranges for coalesced MMIO") diff --git a/src/cpu/kvm/vm.hh b/src/cpu/kvm/vm.hh --- a/src/cpu/kvm/vm.hh +++ b/src/cpu/kvm/vm.hh @@ -377,6 +377,12 @@ /** Global KVM interface */ Kvm kvm; + void + setSystem(System *_system) + { + system = _system; + } + protected: /** * VM CPU initialization code. diff --git a/src/cpu/kvm/vm.cc b/src/cpu/kvm/vm.cc --- a/src/cpu/kvm/vm.cc +++ b/src/cpu/kvm/vm.cc @@ -294,7 +294,7 @@ KvmVM::KvmVM(KvmVMParams *params) : SimObject(params), - kvm(), system(params->system), + kvm(), system(NULL), vmFD(kvm.createVM()), started(false), nextVCPUID(0) diff --git a/src/sim/System.py b/src/sim/System.py --- a/src/sim/System.py +++ b/src/sim/System.py @@ -95,3 +95,5 @@ # Dynamic voltage and frequency handler for the system, disabled by default # Provide list of domains that need to be controlled by the handler dvfs_handler = DVFSHandler() + if buildEnv['USE_KVM']: + vm = Param.KvmVM(NULL, "KVM virtual machine for this system") diff --git a/src/sim/system.cc b/src/sim/system.cc --- a/src/sim/system.cc +++ b/src/sim/system.cc @@ -51,6 +51,8 @@ #include "base/loader/symtab.hh" #include "base/str.hh" #include "base/trace.hh" +#include "config/use_kvm.hh" +#include "cpu/kvm/vm.hh" #include "cpu/thread_context.hh" #include "debug/Loader.hh" #include "debug/WorkItems.hh" @@ -101,6 +103,11 @@ // add self to global system list systemList.push_back(this); +#if USE_KVM + if (p->vm) + p->vm->setSystem(this); +#endif + if (FullSystem) { kernelSymtab = new SymbolTable; if (!debugSymbolTable)