diff --git a/configs/vms/nimbos-aarch64-qemu-smp1.toml b/configs/vms/nimbos-aarch64-qemu-smp1.toml index 7106afea..88a789e8 100644 --- a/configs/vms/nimbos-aarch64-qemu-smp1.toml +++ b/configs/vms/nimbos-aarch64-qemu-smp1.toml @@ -66,10 +66,10 @@ emu_devices = [ # Name Base-Ipa Base-Pa Length Alloc-Irq. passthrough_devices = [ ["/"], - #["/timer"], + #["/pl011@9000000"], ] # Devices that are not desired to be passed through to the guest excluded_devices = [ - # ["/gic-v3"], + ["/pcie@10000000"], ] \ No newline at end of file diff --git a/src/vmm/images/mod.rs b/src/vmm/images/mod.rs index 9c6ccc43..922a15a2 100644 --- a/src/vmm/images/mod.rs +++ b/src/vmm/images/mod.rs @@ -107,17 +107,19 @@ impl ImageLoader { .expect("Failed to load VM images"); // Load DTB image let vm_config = axvm::config::AxVMConfig::from(self.config.clone()); - if let Some(dtb_arc) = get_vm_dtb_arc(&vm_config) { + if let Some(dtb_arc) = get_vm_dtb_arc(&vm_config) + && let Some(dtb_load_gpa) = self.dtb_load_gpa + { let dtb_slice: &[u8] = &dtb_arc; debug!( "DTB buffer addr: {:x}, size: {:#}", - self.dtb_load_gpa.unwrap(), + dtb_load_gpa, Byte::from(dtb_slice.len()) ); #[cfg(target_arch = "aarch64")] update_fdt( - self.dtb_load_gpa.unwrap(), + dtb_load_gpa, NonNull::new(dtb_slice.as_ptr() as *mut u8).unwrap(), dtb_slice.len(), self.vm.clone(), @@ -254,17 +256,19 @@ mod fs { }; // Load DTB image if needed. let vm_config = axvm::config::AxVMConfig::from(loader.config.clone()); - if let Some(dtb_arc) = get_vm_dtb_arc(&vm_config) { + if let Some(dtb_arc) = get_vm_dtb_arc(&vm_config) + && let Some(dtb_load_gpa) = loader.dtb_load_gpa + { let dtb_slice: &[u8] = &dtb_arc; debug!( "DTB buffer addr: {:x}, size: {:#}", - loader.dtb_load_gpa.unwrap(), + dtb_load_gpa, Byte::from(dtb_slice.len()) ); #[cfg(target_arch = "aarch64")] update_fdt( - loader.dtb_load_gpa.unwrap(), + dtb_load_gpa, NonNull::new(dtb_slice.as_ptr() as *mut u8).unwrap(), dtb_slice.len(), loader.vm.clone(),