From a0034416c8702133f70513e82737462bd2362cff Mon Sep 17 00:00:00 2001 From: szy Date: Sun, 28 Sep 2025 15:59:12 +0800 Subject: [PATCH 1/3] update --- src/vmm/images/mod.rs | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/src/vmm/images/mod.rs b/src/vmm/images/mod.rs index 9c6ccc43..39acf6e2 100644 --- a/src/vmm/images/mod.rs +++ b/src/vmm/images/mod.rs @@ -255,20 +255,22 @@ 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) { - let dtb_slice: &[u8] = &dtb_arc; - debug!( - "DTB buffer addr: {:x}, size: {:#}", - loader.dtb_load_gpa.unwrap(), - Byte::from(dtb_slice.len()) - ); - - #[cfg(target_arch = "aarch64")] - update_fdt( - loader.dtb_load_gpa.unwrap(), - NonNull::new(dtb_slice.as_ptr() as *mut u8).unwrap(), - dtb_slice.len(), - loader.vm.clone(), - ); + if let Some(dtb_load_gpa) = loader.dtb_load_gpa { + let dtb_slice: &[u8] = &dtb_arc; + debug!( + "DTB buffer addr: {:x}, size: {:#}", + dtb_load_gpa, + Byte::from(dtb_slice.len()) + ); + + #[cfg(target_arch = "aarch64")] + update_fdt( + dtb_load_gpa, + NonNull::new(dtb_slice.as_ptr() as *mut u8).unwrap(), + dtb_slice.len(), + loader.vm.clone(), + ); + } } Ok(()) From 1485dcd3ca3bde630cec3858d6ef6a1e2e1c9ad8 Mon Sep 17 00:00:00 2001 From: szy Date: Sun, 28 Sep 2025 16:09:16 +0800 Subject: [PATCH 2/3] fix no dtb_load_gpa error --- configs/vms/nimbos-aarch64-qemu-smp1.toml | 4 ++-- src/vmm/images/mod.rs | 28 ++++++++++++----------- 2 files changed, 17 insertions(+), 15 deletions(-) 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 39acf6e2..76418e46 100644 --- a/src/vmm/images/mod.rs +++ b/src/vmm/images/mod.rs @@ -108,20 +108,22 @@ impl ImageLoader { // Load DTB image let vm_config = axvm::config::AxVMConfig::from(self.config.clone()); if let Some(dtb_arc) = get_vm_dtb_arc(&vm_config) { - let dtb_slice: &[u8] = &dtb_arc; - debug!( - "DTB buffer addr: {:x}, size: {:#}", - self.dtb_load_gpa.unwrap(), - Byte::from(dtb_slice.len()) - ); + if let Some(dtb_load_gpa) = self.dtb_load_gpa { + let dtb_slice: &[u8] = &dtb_arc; + debug!( + "DTB buffer addr: {:x}, size: {:#}", + dtb_load_gpa, + Byte::from(dtb_slice.len()) + ); - #[cfg(target_arch = "aarch64")] - update_fdt( - self.dtb_load_gpa.unwrap(), - NonNull::new(dtb_slice.as_ptr() as *mut u8).unwrap(), - dtb_slice.len(), - self.vm.clone(), - ); + #[cfg(target_arch = "aarch64")] + update_fdt( + dtb_load_gpa, + NonNull::new(dtb_slice.as_ptr() as *mut u8).unwrap(), + dtb_slice.len(), + self.vm.clone(), + ); + } } // Load BIOS image From 05cf6ddb4cd29eae73c4dfeed098ab8ee0aeab75 Mon Sep 17 00:00:00 2001 From: szy Date: Sun, 28 Sep 2025 16:13:58 +0800 Subject: [PATCH 3/3] fmt --- src/vmm/images/mod.rs | 68 +++++++++++++++++++++---------------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/src/vmm/images/mod.rs b/src/vmm/images/mod.rs index 76418e46..922a15a2 100644 --- a/src/vmm/images/mod.rs +++ b/src/vmm/images/mod.rs @@ -107,23 +107,23 @@ 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_load_gpa) = self.dtb_load_gpa { - let dtb_slice: &[u8] = &dtb_arc; - debug!( - "DTB buffer addr: {:x}, size: {:#}", - dtb_load_gpa, - Byte::from(dtb_slice.len()) - ); - - #[cfg(target_arch = "aarch64")] - update_fdt( - dtb_load_gpa, - NonNull::new(dtb_slice.as_ptr() as *mut u8).unwrap(), - dtb_slice.len(), - self.vm.clone(), - ); - } + 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: {:#}", + dtb_load_gpa, + Byte::from(dtb_slice.len()) + ); + + #[cfg(target_arch = "aarch64")] + update_fdt( + dtb_load_gpa, + NonNull::new(dtb_slice.as_ptr() as *mut u8).unwrap(), + dtb_slice.len(), + self.vm.clone(), + ); } // Load BIOS image @@ -256,23 +256,23 @@ 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_load_gpa) = loader.dtb_load_gpa { - let dtb_slice: &[u8] = &dtb_arc; - debug!( - "DTB buffer addr: {:x}, size: {:#}", - dtb_load_gpa, - Byte::from(dtb_slice.len()) - ); - - #[cfg(target_arch = "aarch64")] - update_fdt( - dtb_load_gpa, - NonNull::new(dtb_slice.as_ptr() as *mut u8).unwrap(), - dtb_slice.len(), - loader.vm.clone(), - ); - } + 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: {:#}", + dtb_load_gpa, + Byte::from(dtb_slice.len()) + ); + + #[cfg(target_arch = "aarch64")] + update_fdt( + dtb_load_gpa, + NonNull::new(dtb_slice.as_ptr() as *mut u8).unwrap(), + dtb_slice.len(), + loader.vm.clone(), + ); } Ok(())