diff --git a/arch/src/aarch64/fdt.rs b/arch/src/aarch64/fdt.rs index b5afffa9e..ab33996f8 100644 --- a/arch/src/aarch64/fdt.rs +++ b/arch/src/aarch64/fdt.rs @@ -255,10 +255,10 @@ fn create_memory_node( } } } else { - let mem_size = guest_mem.last_addr().raw_value() - super::layout::RAM_START + 1; + let mem_size = guest_mem.last_addr().raw_value() - super::layout::RAM_START.raw_value() + 1; // See https://github.com/torvalds/linux/blob/master/Documentation/devicetree/booting-without-of.txt#L960 // for an explanation of this. - let mem_reg_prop = [super::layout::RAM_START as u64, mem_size as u64]; + let mem_reg_prop = [super::layout::RAM_START.raw_value() as u64, mem_size as u64]; let memory_node = fdt.begin_node("memory")?; fdt.property_string("device_type", "memory")?; diff --git a/arch/src/aarch64/layout.rs b/arch/src/aarch64/layout.rs index 13aaa1ae6..8a7fc25cb 100644 --- a/arch/src/aarch64/layout.rs +++ b/arch/src/aarch64/layout.rs @@ -86,7 +86,7 @@ pub const PCI_MMCONFIG_SIZE: u64 = 256 << 20; pub const PCI_MMIO_CONFIG_SIZE_PER_SEGMENT: u64 = 4096 * 256; /// Start of RAM. -pub const RAM_START: u64 = 0x4000_0000; +pub const RAM_START: GuestAddress = GuestAddress(0x4000_0000); /// Kernel command line maximum size. /// As per `arch/arm64/include/uapi/asm/setup.h`. @@ -94,11 +94,11 @@ pub const CMDLINE_MAX_SIZE: usize = 2048; /// FDT is at the beginning of RAM. /// Maximum size of the device tree blob as specified in https://www.kernel.org/doc/Documentation/arm64/booting.txt. -pub const FDT_START: u64 = RAM_START; +pub const FDT_START: u64 = RAM_START.0; pub const FDT_MAX_SIZE: usize = 0x20_0000; /// Put ACPI table above dtb -pub const ACPI_START: u64 = RAM_START + FDT_MAX_SIZE as u64; +pub const ACPI_START: u64 = RAM_START.0 + FDT_MAX_SIZE as u64; pub const ACPI_MAX_SIZE: usize = 0x20_0000; pub const RSDP_POINTER: GuestAddress = GuestAddress(ACPI_START); diff --git a/arch/src/aarch64/mod.rs b/arch/src/aarch64/mod.rs index b6c1fb3fd..71724c04a 100644 --- a/arch/src/aarch64/mod.rs +++ b/arch/src/aarch64/mod.rs @@ -108,7 +108,7 @@ pub fn arch_memory_regions(size: GuestUsize) -> Vec<(GuestAddress, usize, Region ), // 1 GiB ~ : Ram ( - GuestAddress(layout::RAM_START), + layout::RAM_START, (size - ram_deduction) as usize, RegionType::Ram, ), @@ -212,7 +212,7 @@ mod tests { fn test_arch_memory_regions_dram() { let regions = arch_memory_regions((1usize << 32) as u64); //4GB assert_eq!(5, regions.len()); - assert_eq!(GuestAddress(layout::RAM_START), regions[4].0); + assert_eq!(layout::RAM_START, regions[4].0); assert_eq!(((1 << 32) - layout::UEFI_SIZE) as usize, regions[4].1); assert_eq!(RegionType::Ram, regions[4].2); } diff --git a/vmm/src/vm.rs b/vmm/src/vm.rs index 8d5c9e5db..bf89b96f9 100644 --- a/vmm/src/vm.rs +++ b/vmm/src/vm.rs @@ -2986,16 +2986,12 @@ mod tests { use arch::aarch64::gic::kvm::create_gic; use arch::aarch64::layout; use arch::{DeviceType, MmioDeviceInfo}; - use vm_memory::GuestAddress; const LEN: u64 = 4096; #[test] fn test_create_fdt_with_devices() { - let regions = vec![( - GuestAddress(layout::RAM_START), - (layout::FDT_MAX_SIZE + 0x1000) as usize, - )]; + let regions = vec![(layout::RAM_START, (layout::FDT_MAX_SIZE + 0x1000) as usize)]; let mem = GuestMemoryMmap::from_ranges(®ions).expect("Cannot initialize memory"); let dev_info: HashMap<(DeviceType, std::string::String), MmioDeviceInfo> = [