config: Add a KVM VM to systems with KVM CPUs
authorAndreas Sandberg <Andreas.Sandberg@ARM.com>
Mon, 22 Apr 2013 17:20:32 +0000 (13:20 -0400)
committerAndreas Sandberg <Andreas.Sandberg@ARM.com>
Mon, 22 Apr 2013 17:20:32 +0000 (13:20 -0400)
KVM-based CPUs need a KVM VM object in the system to manage
system-global KVM stuff (VM creation, interrupt delivery, memory
managment, etc.). This changeset adds a VM to the system if KVM has
been enabled at compile time (the BaseKvmCPU object exists) and a
KVM-based CPU has been selected at runtime.

configs/example/fs.py

index 73b0acbfb29cd7c3934b518f55bdc465c9be651d..1f8e2d3a7b8f48dc6883c1fb03a7d65d8a5414e8 100644 (file)
@@ -71,6 +71,13 @@ if args:
 DriveCPUClass = AtomicSimpleCPU
 drive_mem_mode = 'atomic'
 
+# Check if KVM support has been enabled, we might need to do VM
+# configuration if that's the case.
+have_kvm_support = 'BaseKvmCPU' in globals()
+def is_kvm_cpu(cpu_class):
+    return have_kvm_support and cpu_class != None and \
+        issubclass(cpu_class, BaseKvmCPU)
+
 # system under test can be any CPU
 (TestCPUClass, test_mem_mode, FutureClass) = Simulation.setCPUClass(options)
 
@@ -116,6 +123,9 @@ test_sys.init_param = options.init_param
 
 test_sys.cpu = [TestCPUClass(cpu_id=i) for i in xrange(np)]
 
+if is_kvm_cpu(TestCPUClass) or is_kvm_cpu(FutureClass):
+    test_sys.vm = KvmVM()
+
 if options.caches or options.l2cache:
     test_sys.iocache = IOCache(clock = '1GHz',
                                addr_ranges = test_sys.mem_ranges)
@@ -163,6 +173,9 @@ if len(bm) == 2:
     if options.kernel is not None:
         drive_sys.kernel = binary(options.kernel)
 
+    if is_kvm_cpu(DriveCPUClass):
+        drive_sys.vm = KvmVM()
+
     drive_sys.iobridge = Bridge(delay='50ns',
                                 ranges = drive_sys.mem_ranges)
     drive_sys.iobridge.slave = drive_sys.iobus.master