Skip to content

Commit 97e3c54

Browse files
bjzhjingrbradford
authored andcommitted
loader: Rename high memory field for loader trait and functions
High memory is defined in linux boot protocol where the protected-mode kernel was relocated. It could be passed by VMM to loader to specify where is the bottom line of kernel image to be loaded. Rename it here to follow the linux boot protocol definition. Signed-off-by: Cathy Zhang <cathy.zhang@intel.com>
1 parent b71ddaa commit 97e3c54

File tree

1 file changed

+22
-22
lines changed

1 file changed

+22
-22
lines changed

src/loader/mod.rs

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -125,8 +125,8 @@ pub trait KernelLoader {
125125
guest_mem: &M,
126126
kernel_start: Option<GuestAddress>,
127127
kernel_image: &mut F,
128-
lowest_kernel_start: Option<GuestAddress>,
129-
) -> Result<(KernelLoaderResult)>
128+
highmem_start_address: Option<GuestAddress>,
129+
) -> Result<KernelLoaderResult>
130130
where
131131
F: Read + Seek;
132132
}
@@ -143,16 +143,16 @@ impl KernelLoader for Elf {
143143
/// * `guest_mem` - The guest memory region the kernel is written to.
144144
/// * `kernel_start` - The offset into 'guest_mem' at which to load the kernel.
145145
/// * `kernel_image` - Input vmlinux image.
146-
/// * `lowest_kernel_start` - This is the start of the high memory, kernel should above it.
146+
/// * `highmem_start_address` - This is the start of the high memory, kernel should above it.
147147
///
148148
/// # Returns
149149
/// * KernelLoaderResult
150150
fn load<F, M: GuestMemory>(
151151
guest_mem: &M,
152152
kernel_start: Option<GuestAddress>,
153153
kernel_image: &mut F,
154-
lowest_kernel_start: Option<GuestAddress>,
155-
) -> Result<(KernelLoaderResult)>
154+
highmem_start_address: Option<GuestAddress>,
155+
) -> Result<KernelLoaderResult>
156156
where
157157
F: Read + Seek,
158158
{
@@ -182,8 +182,8 @@ impl KernelLoader for Elf {
182182
if (ehdr.e_phoff as usize) < mem::size_of::<elf::Elf64_Ehdr>() {
183183
return Err(Error::InvalidProgramHeaderOffset);
184184
}
185-
if (lowest_kernel_start.is_some())
186-
&& ((ehdr.e_entry as u64) < lowest_kernel_start.unwrap().raw_value())
185+
if (highmem_start_address.is_some())
186+
&& ((ehdr.e_entry as u64) < highmem_start_address.unwrap().raw_value())
187187
{
188188
return Err(Error::InvalidEntryAddress);
189189
}
@@ -252,16 +252,16 @@ impl KernelLoader for BzImage {
252252
/// * `guest_mem` - The guest memory where the kernel image is loaded.
253253
/// * `kernel_start` - The offset into 'guest_mem' at which to load the kernel.
254254
/// * `kernel_image` - Input bzImage image.
255-
/// * `lowest_kernel_start` - This is the start of the high memory, kernel should above it.
255+
/// * `highmem_start_address` - This is the start of the high memory, kernel should above it.
256256
///
257257
/// # Returns
258258
/// * KernelLoaderResult
259259
fn load<F, M: GuestMemory>(
260260
guest_mem: &M,
261261
kernel_start: Option<GuestAddress>,
262262
kernel_image: &mut F,
263-
lowest_kernel_start: Option<GuestAddress>,
264-
) -> Result<(KernelLoaderResult)>
263+
highmem_start_address: Option<GuestAddress>,
264+
) -> Result<KernelLoaderResult>
265265
where
266266
F: Read + Seek,
267267
{
@@ -298,8 +298,8 @@ impl KernelLoader for BzImage {
298298

299299
// verify bzImage validation by checking if code32_start, the defaults to the address of
300300
// the kernel is not lower than high memory.
301-
if (lowest_kernel_start.is_some())
302-
&& (u64::from(boot_header.code32_start) < lowest_kernel_start.unwrap().raw_value())
301+
if (highmem_start_address.is_some())
302+
&& (u64::from(boot_header.code32_start) < highmem_start_address.unwrap().raw_value())
303303
{
304304
return Err(Error::InvalidKernelStartAddress);
305305
}
@@ -396,14 +396,14 @@ mod test {
396396
let gm = create_guest_mem();
397397
let image = make_bzImage();
398398
let mut kernel_start = GuestAddress(0x200000);
399-
let mut lowest_kernel_start = GuestAddress(0x0);
399+
let mut highmem_start_address = GuestAddress(0x0);
400400

401401
// load bzImage with good kernel_start and himem_start setting
402402
let mut loader_result = BzImage::load(
403403
&gm,
404404
Some(kernel_start),
405405
&mut Cursor::new(&image),
406-
Some(lowest_kernel_start),
406+
Some(highmem_start_address),
407407
)
408408
.unwrap();
409409
assert_eq!(0x53726448, loader_result.setup_header.unwrap().header);
@@ -429,7 +429,7 @@ mod test {
429429
&gm,
430430
None,
431431
&mut Cursor::new(&image),
432-
Some(lowest_kernel_start),
432+
Some(highmem_start_address),
433433
)
434434
.unwrap();
435435
assert_eq!(0x53726448, loader_result.setup_header.unwrap().header);
@@ -448,12 +448,12 @@ mod test {
448448

449449
// load bzImage with a bad himem setting
450450
kernel_start = GuestAddress(0x1000);
451-
lowest_kernel_start = GuestAddress(0x200000);
451+
highmem_start_address = GuestAddress(0x200000);
452452
let x = BzImage::load(
453453
&gm,
454454
Some(kernel_start),
455455
&mut Cursor::new(&image),
456-
Some(lowest_kernel_start),
456+
Some(highmem_start_address),
457457
);
458458
assert_eq!(x.is_ok(), false);
459459
println!("load bzImage with bad himem setting \n");
@@ -464,12 +464,12 @@ mod test {
464464
let gm = create_guest_mem();
465465
let image = make_elf_bin();
466466
let kernel_addr = GuestAddress(0x200000);
467-
let mut lowest_kernel_start = GuestAddress(0x0);
467+
let mut highmem_start_address = GuestAddress(0x0);
468468
let mut loader_result = Elf::load(
469469
&gm,
470470
Some(kernel_addr),
471471
&mut Cursor::new(&image),
472-
Some(lowest_kernel_start),
472+
Some(highmem_start_address),
473473
)
474474
.unwrap();
475475
println!(
@@ -487,22 +487,22 @@ mod test {
487487
&gm,
488488
None,
489489
&mut Cursor::new(&image),
490-
Some(lowest_kernel_start),
490+
Some(highmem_start_address),
491491
)
492492
.unwrap();
493493
println!(
494494
"load elf at address {:8x} \n",
495495
loader_result.kernel_load.raw_value()
496496
);
497497

498-
lowest_kernel_start = GuestAddress(0xa00000);
498+
highmem_start_address = GuestAddress(0xa00000);
499499
assert_eq!(
500500
Err(Error::InvalidEntryAddress),
501501
Elf::load(
502502
&gm,
503503
None,
504504
&mut Cursor::new(&image),
505-
Some(lowest_kernel_start)
505+
Some(highmem_start_address)
506506
)
507507
);
508508
}

0 commit comments

Comments
 (0)