summary refs log tree commit diff
path: root/devices/src/irqchip/kvm/mod.rs
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2020-06-14 11:25:18 +0000
committerAlyssa Ross <hi@alyssa.is>2020-06-14 11:25:18 +0000
commitb7966a9d2e768533acac0f37bdeb293c256109d3 (patch)
tree357a365ecc99e4bec214d084352e316769f70041 /devices/src/irqchip/kvm/mod.rs
parent1e318da5b57c12f67bed3b528100dbe4ec287ac5 (diff)
parentd42d3fec7a9535b664b89d30fd48c90feda59957 (diff)
downloadcrosvm-b7966a9d2e768533acac0f37bdeb293c256109d3.tar
crosvm-b7966a9d2e768533acac0f37bdeb293c256109d3.tar.gz
crosvm-b7966a9d2e768533acac0f37bdeb293c256109d3.tar.bz2
crosvm-b7966a9d2e768533acac0f37bdeb293c256109d3.tar.lz
crosvm-b7966a9d2e768533acac0f37bdeb293c256109d3.tar.xz
crosvm-b7966a9d2e768533acac0f37bdeb293c256109d3.tar.zst
crosvm-b7966a9d2e768533acac0f37bdeb293c256109d3.zip
Merge remote-tracking branch 'origin/master'
Diffstat (limited to 'devices/src/irqchip/kvm/mod.rs')
-rw-r--r--devices/src/irqchip/kvm/mod.rs12
1 files changed, 10 insertions, 2 deletions
diff --git a/devices/src/irqchip/kvm/mod.rs b/devices/src/irqchip/kvm/mod.rs
index 56794a3..a5fd89f 100644
--- a/devices/src/irqchip/kvm/mod.rs
+++ b/devices/src/irqchip/kvm/mod.rs
@@ -8,21 +8,29 @@ use std::sync::Arc;
 use sync::Mutex;
 use sys_util::{EventFd, Result};
 
+#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
+mod x86_64;
+#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
+pub use x86_64::*;
+
 use crate::IrqChip;
 
 /// IrqChip implementation where the entire IrqChip is emulated by KVM.
 ///
 /// This implementation will use the KVM API to create and configure the in-kernel irqchip.
 pub struct KvmKernelIrqChip {
-    _vm: KvmVm,
+    vm: KvmVm,
     vcpus: Arc<Mutex<Vec<Option<KvmVcpu>>>>,
 }
 
 impl KvmKernelIrqChip {
     /// Construct a new KvmKernelIrqchip.
     pub fn new(vm: KvmVm, num_vcpus: usize) -> Result<KvmKernelIrqChip> {
+        // TODO (colindr): this constructor needs aarch64 vs x86_64 implementations because we
+        //  want to use vm.create_device instead of create_irq_chip on aarch64
+        vm.create_irq_chip()?;
         Ok(KvmKernelIrqChip {
-            _vm: vm,
+            vm,
             vcpus: Arc::new(Mutex::new((0..num_vcpus).map(|_| None).collect())),
         })
     }