kvm: Add support for disabling coalesced MMIO
authorAndreas Sandberg <andreas@sandberg.pp.se>
Tue, 14 May 2013 14:02:45 +0000 (16:02 +0200)
committerAndreas Sandberg <andreas@sandberg.pp.se>
Tue, 14 May 2013 14:02:45 +0000 (16:02 +0200)
Add the option useCoalescedMMIO to the BaseKvmCPU. The default
behavior is to disable coalesced MMIO since this hasn't been heavily
tested.

src/cpu/kvm/BaseKvmCPU.py
src/cpu/kvm/base.cc

index a8356ac5b9c49681793311fe156ef5da3d775958..796a7794b24c59537297f00e90261c77cbfe53ab 100644 (file)
@@ -69,5 +69,6 @@ class BaseKvmCPU(BaseCPU):
         return True
 
     kvmVM = Param.KvmVM(Parent.any, 'KVM VM (i.e., shared memory domain)')
+    useCoalescedMMIO = Param.Bool(False, "Use coalesced MMIO (EXPERIMENTAL)")
     usePerfOverflow = Param.Bool(False, "Use perf event overflow counters (EXPERIMENTAL)")
     hostFactor = Param.Float(1.0, "Cycle scale factor")
index 7435d43648b114a305a13ff51dab5335a5bdb592..bc650aee9bb09d29043a8f9efe269ac620302244 100644 (file)
@@ -133,6 +133,9 @@ BaseKvmCPU::init()
 void
 BaseKvmCPU::startup()
 {
+    const BaseKvmCPUParams * const p(
+        dynamic_cast<const BaseKvmCPUParams *>(params()));
+
     Kvm &kvm(vm.kvm);
 
     BaseCPU::startup();
@@ -159,7 +162,9 @@ BaseKvmCPU::startup()
     // available. The offset into the KVM's communication page is
     // provided by the coalesced MMIO capability.
     int mmioOffset(kvm.capCoalescedMMIO());
-    if (mmioOffset) {
+    if (!p->useCoalescedMMIO) {
+        inform("KVM: Coalesced MMIO disabled by config.\n");
+    } else if (mmioOffset) {
         inform("KVM: Coalesced IO available\n");
         mmioRing = (struct kvm_coalesced_mmio_ring *)(
             (char *)_kvmRun + (mmioOffset * pageSize));