From a53d089f4b87396a11b5dcf471711b4b7981ffe0 Mon Sep 17 00:00:00 2001 From: buhenxihuan <1127751018@qq.com> Date: Wed, 15 Oct 2025 11:24:52 +0800 Subject: [PATCH 1/4] feat(vmm): Adjust memory mapping types and optimize passthrough device configuration parsing - In `linux-aarch64-a1000-smp8.toml` and `linux-aarch64-rk3588-smp8.toml`, Changed the mapping type of `memory_regions` and removed some redundant `passthrough_devices` configurations. - Added `VmMemMappingType::MapReserved` branch processing logic to support mapping memory regions with the same physical address. - Refactored the `parse_passthrough_devices_address` function to prioritize the device address preset in the configuration file. If not set, it will fall back to parsing from the device tree, improving flexibility and compatibility. - Added debug logging to facilitate tracking of passthrough device parsing results. --- configs/vms/linux-aarch64-a1000-smp8.toml | 4 +- configs/vms/linux-aarch64-rk3588-smp8.toml | 10 +- src/vmm/config.rs | 5 + src/vmm/fdt/parser.rs | 127 ++++++++++++--------- 4 files changed, 83 insertions(+), 63 deletions(-) diff --git a/configs/vms/linux-aarch64-a1000-smp8.toml b/configs/vms/linux-aarch64-a1000-smp8.toml index f9767d4..6fabb10 100644 --- a/configs/vms/linux-aarch64-a1000-smp8.toml +++ b/configs/vms/linux-aarch64-a1000-smp8.toml @@ -34,7 +34,8 @@ dtb_path = "/path/to/dtb" # Memory regions with format (`base_paddr`, `size`, `flags`, `map_type`). # For `map_type`, 0 means `MAP_ALLOC`, 1 means `MAP_IDENTICAL`. memory_regions = [ - [0x8000_0000, 0x2000_0000, 0x7, 1], # System RAM 1G MAP_IDENTICAL + [0x1_ce80_0000, 0x2000_0000, 0x7, 1], # System RAM 1G MAP_IDENTICAL + [0x8000_0000, 0x7000_0000, 0xf, 2], ] # # Device specifications @@ -50,7 +51,6 @@ emu_devices = [] # Name Base-Ipa Base-Pa Length Alloc-Irq. passthrough_devices = [ ["most-devices", 0x0, 0x0, 0x8000_0000, 0x1], -["memory", 0x8000_0000, 0x8000_0000, 0x7000_0000, 0x1] ] excluded_devices = [ # ["/gic-v3"], diff --git a/configs/vms/linux-aarch64-rk3588-smp8.toml b/configs/vms/linux-aarch64-rk3588-smp8.toml index bc34412..d467618 100644 --- a/configs/vms/linux-aarch64-rk3588-smp8.toml +++ b/configs/vms/linux-aarch64-rk3588-smp8.toml @@ -50,7 +50,8 @@ dtb_path = "/path/to/dtb" # For `map_type`, 0 means `MAP_ALLOC`, 1 means `MAP_IDENTICAL`. memory_regions = [ [0x940_0000, 0xd550_0000, 0x7, 1], # ram 3G MAP_IDENTICAL - [0x920_0000, 0x2000, 0x7, 1] + [0x920_0000, 0x2000, 0xf, 2] + ] # @@ -108,13 +109,6 @@ passthrough_devices = [ 0x10_f000, 0x17, ], - [ - "device", - 0x920_0000, - 0x920_0000, - 0x2000, - 0x17, - ], ] excluded_devices = [ diff --git a/src/vmm/config.rs b/src/vmm/config.rs index c74c6d2..8894c94 100644 --- a/src/vmm/config.rs +++ b/src/vmm/config.rs @@ -155,6 +155,11 @@ fn vm_alloc_memorys(vm_create_config: &AxVMCrateConfig, vm: &VM) { vm.alloc_memory_region(Layout::from_size_align(memory.size, ALIGN).unwrap(), None) .expect("Failed to allocate memory region for VM"); } + VmMemMappingType::MapReserved => { + info!("VM[{}] map same region: {:#x?}", vm.id(), memory); + let layout = Layout::from_size_align(memory.size, ALIGN).unwrap(); + vm.map_reserved_memory_region(layout, Some(GuestPhysAddr::from(memory.gpa))).expect("Failed to map memory region for VM"); + } } } } diff --git a/src/vmm/fdt/parser.rs b/src/vmm/fdt/parser.rs index 859b810..7edbf2b 100644 --- a/src/vmm/fdt/parser.rs +++ b/src/vmm/fdt/parser.rs @@ -218,70 +218,91 @@ fn add_pci_ranges_config(vm_cfg: &mut AxVMConfig, node_name: &str, range: &PciRa } pub fn parse_passthrough_devices_address(vm_cfg: &mut AxVMConfig, dtb: &[u8]) { - let fdt = Fdt::from_bytes(dtb) - .expect("Failed to parse DTB image, perhaps the DTB is invalid or corrupted"); + let devices = vm_cfg.pass_through_devices().to_vec(); + if !devices.is_empty() && devices[0].length != 0 { + for (index, device) in devices.iter().enumerate() { + add_device_address_config( + vm_cfg, + &device.name, + device.base_gpa, + device.length, + index, + None, + ); + } + } else { + let fdt = Fdt::from_bytes(dtb) + .expect("Failed to parse DTB image, perhaps the DTB is invalid or corrupted"); - // Clear existing passthrough device configurations - vm_cfg.clear_pass_through_devices(); + // Clear existing passthrough device configurations + vm_cfg.clear_pass_through_devices(); - // Traverse all device tree nodes - for node in fdt.all_nodes() { - // Skip root node - if node.name() == "/" || node.name().starts_with("memory") { - continue; - } + // Traverse all device tree nodes + for node in fdt.all_nodes() { + // Skip root node + if node.name() == "/" || node.name().starts_with("memory") { + continue; + } - let node_name = node.name().to_string(); + let node_name = node.name().to_string(); - // Check if it's a PCIe device node - if node_name.starts_with("pcie@") || node_name.contains("pci") { - // Process PCIe device's ranges property - if let Some(pci) = node.clone().into_pci() - && let Ok(ranges) = pci.ranges() - { - for (index, range) in ranges.enumerate() { - add_pci_ranges_config(vm_cfg, &node_name, &range, index); + // Check if it's a PCIe device node + if node_name.starts_with("pcie@") || node_name.contains("pci") { + // Process PCIe device's ranges property + if let Some(pci) = node.clone().into_pci() + && let Ok(ranges) = pci.ranges() + { + for (index, range) in ranges.enumerate() { + add_pci_ranges_config(vm_cfg, &node_name, &range, index); + } } - } - // Process PCIe device's reg property (ECAM space) - if let Some(reg_iter) = node.reg() { - for (index, reg) in reg_iter.enumerate() { - let base_address = reg.address as usize; - let size = reg.size.unwrap_or(0); - - add_device_address_config( - vm_cfg, - &node_name, - base_address, - size, - index, - Some("ecam"), - ); + // Process PCIe device's reg property (ECAM space) + if let Some(reg_iter) = node.reg() { + for (index, reg) in reg_iter.enumerate() { + let base_address = reg.address as usize; + let size = reg.size.unwrap_or(0); + + add_device_address_config( + vm_cfg, + &node_name, + base_address, + size, + index, + Some("ecam"), + ); + } } - } - } else { - // Get device's reg property (process regular devices) - if let Some(reg_iter) = node.reg() { - // Process all address segments of the device - for (index, reg) in reg_iter.enumerate() { - // Get device's address and size information - let base_address = reg.address as usize; - let size = reg.size.unwrap_or(0); - - add_device_address_config(vm_cfg, &node_name, base_address, size, index, None); + } else { + // Get device's reg property (process regular devices) + if let Some(reg_iter) = node.reg() { + // Process all address segments of the device + for (index, reg) in reg_iter.enumerate() { + // Get device's address and size information + let base_address = reg.address as usize; + let size = reg.size.unwrap_or(0); + + add_device_address_config( + vm_cfg, + &node_name, + base_address, + size, + index, + None, + ); + } } } } + trace!( + "All passthrough devices: {:#x?}", + vm_cfg.pass_through_devices() + ); + debug!( + "Finished parsing passthrough devices, total: {}", + vm_cfg.pass_through_devices().len() + ); } - trace!( - "All passthrough devices: {:#x?}", - vm_cfg.pass_through_devices() - ); - debug!( - "Finished parsing passthrough devices, total: {}", - vm_cfg.pass_through_devices().len() - ); } pub fn parse_vm_interrupt(vm_cfg: &mut AxVMConfig, dtb: &[u8]) { From cf0f7dde1b7a581e0a042408af354712d56b9c8f Mon Sep 17 00:00:00 2001 From: buhenxihuan <1127751018@qq.com> Date: Wed, 15 Oct 2025 13:58:07 +0800 Subject: [PATCH 2/4] fmt: code fmt --- src/vmm/config.rs | 3 ++- src/vmm/fdt/parser.rs | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/vmm/config.rs b/src/vmm/config.rs index 8894c94..665fed8 100644 --- a/src/vmm/config.rs +++ b/src/vmm/config.rs @@ -158,7 +158,8 @@ fn vm_alloc_memorys(vm_create_config: &AxVMCrateConfig, vm: &VM) { VmMemMappingType::MapReserved => { info!("VM[{}] map same region: {:#x?}", vm.id(), memory); let layout = Layout::from_size_align(memory.size, ALIGN).unwrap(); - vm.map_reserved_memory_region(layout, Some(GuestPhysAddr::from(memory.gpa))).expect("Failed to map memory region for VM"); + vm.map_reserved_memory_region(layout, Some(GuestPhysAddr::from(memory.gpa))) + .expect("Failed to map memory region for VM"); } } } diff --git a/src/vmm/fdt/parser.rs b/src/vmm/fdt/parser.rs index 7edbf2b..261da96 100644 --- a/src/vmm/fdt/parser.rs +++ b/src/vmm/fdt/parser.rs @@ -219,7 +219,7 @@ fn add_pci_ranges_config(vm_cfg: &mut AxVMConfig, node_name: &str, range: &PciRa pub fn parse_passthrough_devices_address(vm_cfg: &mut AxVMConfig, dtb: &[u8]) { let devices = vm_cfg.pass_through_devices().to_vec(); - if !devices.is_empty() && devices[0].length != 0 { + if !devices.is_empty() && devices[0].length != 0 { for (index, device) in devices.iter().enumerate() { add_device_address_config( vm_cfg, From 1b9a53f85830ef5efc1a0f98bcb39a6b4f496910 Mon Sep 17 00:00:00 2001 From: buhenxihuan <1127751018@qq.com> Date: Wed, 15 Oct 2025 14:59:20 +0800 Subject: [PATCH 3/4] cargo update to latest version --- Cargo.lock | 320 +++++++++++++++++++++-------------------------------- 1 file changed, 129 insertions(+), 191 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 25eb566..d8d8e23 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -27,15 +27,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0a2c929f5025d9b8a0f549b187c4d3a39671f44015ff6ccddd0b134c874b3c1a" -[[package]] -name = "addr2line" -version = "0.25.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" -dependencies = [ - "gimli", -] - [[package]] name = "adler2" version = "2.0.1" @@ -72,9 +63,9 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "anstream" -version = "0.6.20" +version = "0.6.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ae563653d1938f79b1ab1b5e668c87c76a9930414574a6583a7b7e11a8e6192" +checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" dependencies = [ "anstyle", "anstyle-parse", @@ -87,9 +78,9 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.11" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" +checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" [[package]] name = "anstyle-parse" @@ -635,7 +626,7 @@ dependencies = [ [[package]] name = "axklib" version = "0.2.0" -source = "git+https://github.com/arceos-hypervisor/arceos.git?branch=hypervisor#6fad0ff0aed9be8c75223f69bbf127a6675e933d" +source = "git+https://github.com/arceos-hypervisor/arceos.git?branch=hypervisor#3b81289f520e33a75b489963649f0d6c2c46a9a9" dependencies = [ "axerrno", "memory_addr", @@ -1040,7 +1031,7 @@ dependencies = [ "spin 0.9.8", "syn 2.0.106", "timer_list", - "toml 0.9.7", + "toml 0.9.8", "vm-fdt", ] @@ -1071,7 +1062,7 @@ dependencies = [ [[package]] name = "axvm" version = "0.1.0" -source = "git+https://github.com/arceos-hypervisor/axvm.git?branch=next#62dc1461bc8dff5d22264962da4d2f86ded915f8" +source = "git+https://github.com/arceos-hypervisor/axvm.git?branch=next#a5b6c0319673cd0eb037ed67449511d321d66aa3" dependencies = [ "arm_vcpu", "arm_vgic 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1096,29 +1087,14 @@ dependencies = [ [[package]] name = "axvmconfig" version = "0.1.0" -source = "git+https://github.com/arceos-hypervisor/axvmconfig.git?branch=next#34c0e6473b057a697c48cc37c5b25853c1ea2826" +source = "git+https://github.com/arceos-hypervisor/axvmconfig.git?branch=next#f8291521e9f48ff13f794cec5db35e8f77b68a89" dependencies = [ "axerrno", "enumerable", "log", "serde", "serde_repr", - "toml 0.9.7", -] - -[[package]] -name = "backtrace" -version = "0.3.76" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6" -dependencies = [ - "addr2line", - "cfg-if", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", - "windows-link 0.2.0", + "toml 0.9.8", ] [[package]] @@ -1166,7 +1142,7 @@ dependencies = [ "cargo_metadata", "flate2", "rand", - "reqwest 0.12.23", + "reqwest 0.12.24", "tar", ] @@ -1227,9 +1203,9 @@ dependencies = [ [[package]] name = "bytemuck" -version = "1.23.2" +version = "1.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3995eaeebcdf32f91f980d360f78732ddc061097ab4e39991ae7a6ace9194677" +checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" [[package]] name = "byteorder" @@ -1245,9 +1221,9 @@ checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" [[package]] name = "camino" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1de8bc0aa9e9385ceb3bf0c152e3a9b9544f6c4a912c8ae504e80c1f0368603" +checksum = "276a59bf2b2c967788139340c9f0c5b12d7fd6630315c15c217e559de85d2609" dependencies = [ "serde_core", ] @@ -1303,9 +1279,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.39" +version = "1.2.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1354349954c6fc9cb0deab020f27f783cf0b604e8bb754dc4658ecf0d29c35f" +checksum = "ac9fe6cdbb24b6ade63616c0a0688e45bb56732262c158df3c0c4bea4ca47cb7" dependencies = [ "find-msvc-tools", "shlex", @@ -1328,9 +1304,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.48" +version = "4.5.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2134bb3ea021b78629caa971416385309e0131b351b25e01dc16fb54e1b5fae" +checksum = "f4512b90fa68d3a9932cea5184017c5d200f5921df706d45e853537dea51508f" dependencies = [ "clap_builder", "clap_derive", @@ -1338,9 +1314,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.48" +version = "4.5.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2ba64afa3c0a6df7fa517765e31314e983f51dda798ffba27b988194fb65dc9" +checksum = "0025e98baa12e766c67ba13ff4695a887a1eba19569aad00a472546795bd6730" dependencies = [ "anstream", "anstyle", @@ -1350,9 +1326,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.47" +version = "4.5.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbfd7eae0b0f1a6e63d4b13c9c478de77c2eb546fba158ad50b4203dc24b9f9c" +checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671" dependencies = [ "heck", "proc-macro2", @@ -1362,9 +1338,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" +checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d" [[package]] name = "colorchoice" @@ -1619,7 +1595,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.61.1", + "windows-sys 0.61.2", ] [[package]] @@ -1639,9 +1615,9 @@ dependencies = [ [[package]] name = "fdt-parser" -version = "0.4.17" +version = "0.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16ca123a5721e4a28ef60d6e1600cd0a33a9ab376c4b88de04c99bce757e458b" +checksum = "1f95f0bda5ff920492f6573294d8e3a99b75ee2e5ef93ab313fc6d517fa46785" [[package]] name = "filetime" @@ -1657,15 +1633,15 @@ dependencies = [ [[package]] name = "find-msvc-tools" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ced73b1dacfc750a6db6c0a0c3a3853c8b41997e2e2c563dc90804ae6867959" +checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127" [[package]] name = "flate2" -version = "1.1.2" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" +checksum = "dc5a4e564e38c699f2880d3fda590bedc2e69f3f84cd48b457bd892ce61d0aa9" dependencies = [ "crc32fast", "miniz_oxide", @@ -1798,27 +1774,21 @@ checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", "libc", - "wasi 0.11.1+wasi-snapshot-preview1", + "wasi", ] [[package]] name = "getrandom" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", "libc", "r-efi", - "wasi 0.14.7+wasi-0.2.4", + "wasip2", ] -[[package]] -name = "gimli" -version = "0.32.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" - [[package]] name = "h2" version = "0.3.27" @@ -2091,7 +2061,7 @@ dependencies = [ "libc", "percent-encoding", "pin-project-lite", - "socket2 0.6.0", + "socket2 0.6.1", "system-configuration 0.6.1", "tokio", "tower-service", @@ -2228,17 +2198,6 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6045ea39e8d2862506c0dff6c65d068da362335df698bb1634033492740d2170" -[[package]] -name = "io-uring" -version = "0.7.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b" -dependencies = [ - "bitflags 2.9.4", - "cfg-if", - "libc", -] - [[package]] name = "ipnet" version = "2.11.0" @@ -2367,9 +2326,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.176" +version = "0.2.177" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58f929b4d672ea937a23a1ab494143d968337a5f47e56d0815df1e0890ddf174" +checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" [[package]] name = "libredox" @@ -2422,11 +2381,10 @@ checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" [[package]] name = "lock_api" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" dependencies = [ - "autocfg", "scopeguard", ] @@ -2489,6 +2447,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", + "simd-adler32", ] [[package]] @@ -2498,7 +2457,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" dependencies = [ "libc", - "wasi 0.11.1+wasi-snapshot-preview1", + "wasi", "windows-sys 0.59.0", ] @@ -2561,15 +2520,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "300e4bdb6b46b592948e700ea1ef24a4296491f6a0ee722b258040abd15a3714" -[[package]] -name = "object" -version = "0.37.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" -dependencies = [ - "memchr", -] - [[package]] name = "once_cell" version = "1.21.3" @@ -2675,9 +2625,9 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.4" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" dependencies = [ "lock_api", "parking_lot_core", @@ -2685,15 +2635,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.11" +version = "0.9.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" dependencies = [ "cfg-if", "libc", "redox_syscall", "smallvec", - "windows-targets 0.52.6", + "windows-link 0.2.1", ] [[package]] @@ -2870,7 +2820,7 @@ version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" dependencies = [ - "toml_edit 0.23.6", + "toml_edit 0.23.7", ] [[package]] @@ -2923,7 +2873,7 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.4", ] [[package]] @@ -3046,9 +2996,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.17" +version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ "bitflags 2.9.4", ] @@ -3111,9 +3061,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.23" +version = "0.12.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d429f34c8092b2d42c7c93cec323bb4adeb7c67698f70839adec842ec10c7ceb" +checksum = "9d0946410b9f7b082a427e4ef5c8ff541a88b357bc6c637c40db3a68ac70a36f" dependencies = [ "base64 0.22.1", "bytes", @@ -3267,20 +3217,14 @@ dependencies = [ [[package]] name = "rust_decimal" -version = "1.38.0" +version = "1.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8975fc98059f365204d635119cf9c5a60ae67b841ed49b5422a9a7e56cdfac0" +checksum = "35affe401787a9bd846712274d97654355d21b2a2c092a3139aabe31e9022282" dependencies = [ "arrayvec", "num-traits", ] -[[package]] -name = "rustc-demangle" -version = "0.1.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" - [[package]] name = "rustix" version = "1.1.2" @@ -3291,7 +3235,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys", - "windows-sys 0.61.1", + "windows-sys 0.61.2", ] [[package]] @@ -3327,9 +3271,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.103.6" +version = "0.103.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8572f3c2cb9934231157b45499fc41e1f58c589fdfb81a844ba873265e80f8eb" +checksum = "e10b3f4191e8a80e6b43eebabfac91e5dcecebb27a71f04e820c47ec41d314bf" dependencies = [ "ring", "rustls-pki-types", @@ -3391,7 +3335,7 @@ version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" dependencies = [ - "windows-sys 0.61.1", + "windows-sys 0.61.2", ] [[package]] @@ -3539,9 +3483,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5417783452c2be558477e104686f7de5dae53dba813c28435e0e70f82d9b04ee" +checksum = "e24345aa0fe688594e73770a5f6d1b216508b4f93484c0026d521acd30134392" dependencies = [ "serde_core", ] @@ -3573,6 +3517,12 @@ dependencies = [ "libc", ] +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + [[package]] name = "slab" version = "0.4.11" @@ -3606,12 +3556,12 @@ dependencies = [ [[package]] name = "socket2" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" +checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -3639,7 +3589,7 @@ dependencies = [ "serde", "smccc", "spin 0.10.0", - "toml 0.9.7", + "toml 0.9.8", "url", ] @@ -3672,9 +3622,9 @@ dependencies = [ [[package]] name = "stable_deref_trait" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" [[package]] name = "static_assertions" @@ -3815,10 +3765,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" dependencies = [ "fastrand", - "getrandom 0.3.3", + "getrandom 0.3.4", "once_cell", "rustix", - "windows-sys 0.61.1", + "windows-sys 0.61.2", ] [[package]] @@ -3897,29 +3847,26 @@ checksum = "b0293f99756f16ff352cc78c99673766a305bdb5ed7652e78df649e9967c885a" [[package]] name = "tokio" -version = "1.47.1" +version = "1.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" +checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" dependencies = [ - "backtrace", "bytes", - "io-uring", "libc", "mio", "parking_lot", "pin-project-lite", "signal-hook-registry", - "slab", - "socket2 0.6.0", + "socket2 0.6.1", "tokio-macros", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] name = "tokio-macros" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" dependencies = [ "proc-macro2", "quote", @@ -3973,14 +3920,14 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.7" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00e5e5d9bf2475ac9d4f0d9edab68cc573dc2fd644b0dba36b0c30a92dd9eaa0" +checksum = "f0dc8b1fb61449e27716ec0e1bdf0f6b8f3e8f6b05391e8497b8b6d7804ea6d8" dependencies = [ "indexmap", "serde_core", - "serde_spanned 1.0.2", - "toml_datetime 0.7.2", + "serde_spanned 1.0.3", + "toml_datetime 0.7.3", "toml_parser", "toml_writer", "winnow", @@ -3997,9 +3944,9 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f1085dec27c2b6632b04c80b3bb1b4300d6495d1e129693bdda7d91e72eec1" +checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" dependencies = [ "serde_core", ] @@ -4020,21 +3967,21 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.23.6" +version = "0.23.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3effe7c0e86fdff4f69cdd2ccc1b96f933e24811c5441d44904e8683e27184b" +checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" dependencies = [ "indexmap", - "toml_datetime 0.7.2", + "toml_datetime 0.7.3", "toml_parser", "winnow", ] [[package]] name = "toml_parser" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cf893c33be71572e0e9aa6dd15e6677937abd686b066eac3f8cd3531688a627" +checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" dependencies = [ "winnow", ] @@ -4047,9 +3994,9 @@ checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" [[package]] name = "toml_writer" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d163a63c116ce562a22cda521fcc4d79152e7aba014456fb5eb442f6d6a10109" +checksum = "df8b2b54733674ad286d16267dcfc7a71ed5c776e4ac7aa3c3e2561f7c637bf2" [[package]] name = "tower" @@ -4263,15 +4210,6 @@ version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" -[[package]] -name = "wasi" -version = "0.14.7+wasi-0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "883478de20367e224c0090af9cf5f9fa85bed63a95c1abf3afc5c083ebc06e8c" -dependencies = [ - "wasip2", -] - [[package]] name = "wasip2" version = "1.0.1+wasi-0.2.4" @@ -4371,9 +4309,9 @@ checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" [[package]] name = "windows-link" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45e46c0661abb7180e7b9c281db115305d49ca1709ab8242adf09666d2173c65" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" [[package]] name = "windows-registry" @@ -4437,16 +4375,16 @@ version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" dependencies = [ - "windows-targets 0.53.4", + "windows-targets 0.53.5", ] [[package]] name = "windows-sys" -version = "0.61.1" +version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f109e41dd4a3c848907eb83d5a42ea98b3769495597450cf6d153507b166f0f" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" dependencies = [ - "windows-link 0.2.0", + "windows-link 0.2.1", ] [[package]] @@ -4482,19 +4420,19 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.53.4" +version = "0.53.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d42b7b7f66d2a06854650af09cfdf8713e427a439c97ad65a6375318033ac4b" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" dependencies = [ - "windows-link 0.2.0", - "windows_aarch64_gnullvm 0.53.0", - "windows_aarch64_msvc 0.53.0", - "windows_i686_gnu 0.53.0", - "windows_i686_gnullvm 0.53.0", - "windows_i686_msvc 0.53.0", - "windows_x86_64_gnu 0.53.0", - "windows_x86_64_gnullvm 0.53.0", - "windows_x86_64_msvc 0.53.0", + "windows-link 0.2.1", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", ] [[package]] @@ -4511,9 +4449,9 @@ checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_gnullvm" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" [[package]] name = "windows_aarch64_msvc" @@ -4529,9 +4467,9 @@ checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_aarch64_msvc" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" [[package]] name = "windows_i686_gnu" @@ -4547,9 +4485,9 @@ checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnu" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" [[package]] name = "windows_i686_gnullvm" @@ -4559,9 +4497,9 @@ checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_gnullvm" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" [[package]] name = "windows_i686_msvc" @@ -4577,9 +4515,9 @@ checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_i686_msvc" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" [[package]] name = "windows_x86_64_gnu" @@ -4595,9 +4533,9 @@ checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnu" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" [[package]] name = "windows_x86_64_gnullvm" @@ -4613,9 +4551,9 @@ checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_gnullvm" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" [[package]] name = "windows_x86_64_msvc" @@ -4631,9 +4569,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "windows_x86_64_msvc" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" [[package]] name = "winnow" @@ -4844,9 +4782,9 @@ dependencies = [ [[package]] name = "zeroize" -version = "1.8.1" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" [[package]] name = "zerotrie" From e7d9cec4f001956b57f2319d00dfe8c9545b7eaf Mon Sep 17 00:00:00 2001 From: buhenxihuan <1127751018@qq.com> Date: Wed, 15 Oct 2025 16:02:31 +0800 Subject: [PATCH 4/4] update fdt guide doc --- doc/FDT_Configuration_Guide.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/FDT_Configuration_Guide.md b/doc/FDT_Configuration_Guide.md index 741a9f4..bb895a5 100644 --- a/doc/FDT_Configuration_Guide.md +++ b/doc/FDT_Configuration_Guide.md @@ -44,7 +44,7 @@ AxVisor 会优先使用提供的设备树文件,并根据以下配置更新其 - CPU 节点根据 [base] 部分的 `phys_cpu_ids` 更新 - 内存节点根据 [kernel] 部分的 `memory_regions` 更新 -注意:当使用预定义设备树文件时,[devices] 部分的 `passthrough_devices` 和 `excluded_devices` 配置将被忽略。 +注意:当使用预定义设备树文件时,[devices] 部分的 `passthrough_devices` 中如果有规范化的[Name,Base-Ipa,Base-Pa,Length,Alloc-Irq]设备配置,则axvisor会直接按照 `passthrough_devices`中的配置给guest映射设备内存,设备树中的解析则会被忽略,只是将更改过内存和cpu的预定义设备树文件直接传给guest。 ### 3.2 动态生成设备树 @@ -88,6 +88,7 @@ dtb_path = "tmp/linux.dtb" # 设备树文件路径(空字符串表示 dtb_load_addr = 0x8000_0000 # 设备树加载地址 # 内存区域配置,格式为 (基地址, 大小, 标志, 映射类型) +其中映射类型0为MAP_Alloc(由host负责,随机分配内存),1为Map_Identical(由host负责1:1给guest映射内存,但是起始地址随机),2为MAP_Reserved(由host负责,将host中一块标记为reserved的内存完全1:1映射给guest,起始地址和配置一致) memory_regions = [ [0x8000_0000, 0x1000_0000, 0x7, 0], # 系统 RAM 1G MAP_IDENTICAL ]