mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2026-08-05 02:19:16 +00:00
arch: preserve error chain for memmap table
On-behalf-of: SAP philipp.schuster@sap.com Signed-off-by: Philipp Schuster <philipp.schuster@cyberus-technology.de>
This commit is contained in:
committed by
Rob Bradford
parent
67a661aff0
commit
f607d0143d
+3
-1
@@ -35,7 +35,9 @@ pub enum Error {
|
|||||||
#[error("The memory map table extends past the end of guest memory")]
|
#[error("The memory map table extends past the end of guest memory")]
|
||||||
MemmapTablePastRamEnd,
|
MemmapTablePastRamEnd,
|
||||||
#[error("Error writing memory map table to guest memory")]
|
#[error("Error writing memory map table to guest memory")]
|
||||||
MemmapTableSetup,
|
MemmapTableSetup(#[source] vm_memory::GuestMemoryError),
|
||||||
|
#[error("Error generating memory map table")]
|
||||||
|
MemmapTableGeneration,
|
||||||
#[error("The hvm_start_info structure extends past the end of guest memory")]
|
#[error("The hvm_start_info structure extends past the end of guest memory")]
|
||||||
StartInfoPastRamEnd,
|
StartInfoPastRamEnd,
|
||||||
#[error("Error writing hvm_start_info to guest memory")]
|
#[error("Error writing hvm_start_info to guest memory")]
|
||||||
|
|||||||
@@ -1140,8 +1140,9 @@ pub fn generate_ram_ranges(guest_mem: &GuestMemoryMmap) -> super::Result<Vec<Ram
|
|||||||
// Generate the first usable physical memory range before the gap. The e820 map
|
// Generate the first usable physical memory range before the gap. The e820 map
|
||||||
// should only report memory above 1MiB.
|
// should only report memory above 1MiB.
|
||||||
let first_ram_range = {
|
let first_ram_range = {
|
||||||
let (first_region_start, first_region_end) =
|
let (first_region_start, first_region_end) = ram_regions
|
||||||
ram_regions.first().ok_or(super::Error::MemmapTableSetup)?;
|
.first()
|
||||||
|
.ok_or(super::Error::MemmapTableGeneration)?;
|
||||||
let high_ram_start = layout::HIGH_RAM_START.raw_value();
|
let high_ram_start = layout::HIGH_RAM_START.raw_value();
|
||||||
let mem_32bit_reserved_start = layout::MEM_32BIT_RESERVED_START.raw_value();
|
let mem_32bit_reserved_start = layout::MEM_32BIT_RESERVED_START.raw_value();
|
||||||
|
|
||||||
@@ -1154,7 +1155,7 @@ pub fn generate_ram_ranges(guest_mem: &GuestMemoryMmap) -> super::Result<Vec<Ram
|
|||||||
high_ram_start: 0x{high_ram_start:08x}, mem_32bit_reserved_start: 0x{mem_32bit_reserved_start:08x}"
|
high_ram_start: 0x{high_ram_start:08x}, mem_32bit_reserved_start: 0x{mem_32bit_reserved_start:08x}"
|
||||||
);
|
);
|
||||||
|
|
||||||
return Err(super::Error::MemmapTableSetup);
|
return Err(super::Error::MemmapTableGeneration);
|
||||||
}
|
}
|
||||||
|
|
||||||
info!(
|
info!(
|
||||||
@@ -1265,7 +1266,7 @@ fn configure_pvh(
|
|||||||
for memmap_entry in memmap {
|
for memmap_entry in memmap {
|
||||||
guest_mem
|
guest_mem
|
||||||
.write_obj(memmap_entry, memmap_start_addr)
|
.write_obj(memmap_entry, memmap_start_addr)
|
||||||
.map_err(|_| super::Error::MemmapTableSetup)?;
|
.map_err(super::Error::MemmapTableSetup)?;
|
||||||
memmap_start_addr =
|
memmap_start_addr =
|
||||||
memmap_start_addr.unchecked_add(mem::size_of::<hvm_memmap_table_entry>() as u64);
|
memmap_start_addr.unchecked_add(mem::size_of::<hvm_memmap_table_entry>() as u64);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user