summary refs log tree commit diff
path: root/kernel_loader
diff options
context:
space:
mode:
authorTristan Muntsinger <muntsinger@google.com>2018-12-21 16:01:56 -0800
committerchrome-bot <chrome-bot@chromium.org>2019-01-28 14:17:10 -0800
commit4133b0120d1e16cafbb373b2ae17a214b594038b (patch)
tree177506988846e4b86e639cdb963bbaba0c4e6ca9 /kernel_loader
parentf052cfefc8d6d27fa068c34190615db1819b8fef (diff)
downloadcrosvm-4133b0120d1e16cafbb373b2ae17a214b594038b.tar
crosvm-4133b0120d1e16cafbb373b2ae17a214b594038b.tar.gz
crosvm-4133b0120d1e16cafbb373b2ae17a214b594038b.tar.bz2
crosvm-4133b0120d1e16cafbb373b2ae17a214b594038b.tar.lz
crosvm-4133b0120d1e16cafbb373b2ae17a214b594038b.tar.xz
crosvm-4133b0120d1e16cafbb373b2ae17a214b594038b.tar.zst
crosvm-4133b0120d1e16cafbb373b2ae17a214b594038b.zip
crosvm: x86_64 guest support for android device-tree
This device tree is derived from the Android fstab file which is
provided via command line flag.

BUG=chromium:922737
TEST=None
CQ-DEPEND=CL:1415390
CQ-DEPEND=CL:1415270

Change-Id: Idd007c844f84cab3ff37be16a718f14e5f630312
Reviewed-on: https://chromium-review.googlesource.com/1370058
Commit-Ready: Daniel Verkamp <dverkamp@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Dylan Reid <dgreid@chromium.org>
Diffstat (limited to 'kernel_loader')
-rw-r--r--kernel_loader/src/lib.rs10
1 files changed, 7 insertions, 3 deletions
diff --git a/kernel_loader/src/lib.rs b/kernel_loader/src/lib.rs
index b0fdf66..ecc5a34 100644
--- a/kernel_loader/src/lib.rs
+++ b/kernel_loader/src/lib.rs
@@ -76,7 +76,7 @@ pub fn load_kernel<F>(
     guest_mem: &GuestMemory,
     kernel_start: GuestAddress,
     kernel_image: &mut F,
-) -> Result<()>
+) -> Result<u64>
 where
     F: Read + Seek,
 {
@@ -117,6 +117,8 @@ where
             .map_err(|_| Error::ReadProgramHeader)?
     };
 
+    let mut kernel_end = 0;
+
     // Read in each section pointed to by the program headers.
     for phdr in &phdrs {
         if phdr.p_type != elf::PT_LOAD || phdr.p_filesz == 0 {
@@ -133,9 +135,11 @@ where
         guest_mem
             .read_to_memory(mem_offset, kernel_image, phdr.p_filesz as usize)
             .map_err(|_| Error::ReadKernelImage)?;
+
+        kernel_end = mem_offset.offset() + phdr.p_memsz;
     }
 
-    Ok(())
+    Ok(kernel_end)
 }
 
 /// Writes the command line string to the given memory slice.
@@ -236,7 +240,7 @@ mod test {
         let kernel_addr = GuestAddress(0x0);
         let image = make_elf_bin();
         assert_eq!(
-            Ok(()),
+            Ok(16613),
             load_kernel(&gm, kernel_addr, &mut Cursor::new(&image))
         );
     }