• Home
  • Raw
  • Download

Lines Matching +full:use +full:- +full:kernel

2 // Use of this source code is governed by a BSD-style license that can be
5 //! Linux arm64 kernel loader.
6 //! <https://www.kernel.org/doc/Documentation/arm64/booting.txt>
8 use std::cmp::max;
9 use std::io;
10 use std::io::BufRead;
11 use std::io::Read;
12 use std::io::Seek;
13 use std::io::SeekFrom;
14 use std::mem::size_of_val;
16 use base::warn;
17 use base::FileGetLen;
18 use base::FileReadWriteAtVolatile;
19 use base::VolatileSlice;
20 use data_model::Le32;
21 use data_model::Le64;
22 use lz4_flex::frame::FrameDecoder as Lz4FrameDecoder;
23 use resources::AddressRange;
24 use vm_memory::GuestAddress;
25 use vm_memory::GuestMemory;
26 use zerocopy::AsBytes;
27 use zerocopy::FromBytes;
28 use zerocopy::FromZeroes;
30 use crate::Error;
31 use crate::LoadedKernel;
32 use crate::Result;
57 fn parse_load_addr(&self, kernel_start: GuestAddress) -> Result<GuestAddress> { in parse_load_addr()
89 ) -> Result<LoadedKernel> in load_arm64_kernel()
122 ) -> Result<LoadedKernel> { in load_arm64_kernel_from_reader()
126 // Read and parse the kernel header. in load_arm64_kernel_from_reader()
132 // Write the parsed kernel header to memory. Avoid rewinding the reader back to the start. in load_arm64_kernel_from_reader()
137 // Continue reading from the source and copy the kernel image into GuestMemory. in load_arm64_kernel_from_reader()
176 ) -> Result<LoadedKernel> { in load_arm64_kernel_lz4()
189 use std::fs::File;
190 use std::io::Seek;
191 use std::io::SeekFrom;
192 use std::io::Write;
194 use tempfile::tempfile;
195 use vm_memory::GuestAddress;
196 use vm_memory::GuestMemory;
198 use crate::load_arm64_kernel;
199 use crate::load_arm64_kernel_lz4;
200 use crate::Error;
204 fn create_guest_mem() -> GuestMemory { in create_guest_mem()
209 fn write_valid_kernel() -> File { in write_valid_kernel()
239 let kernel = load_arm64_kernel(&gm, kernel_addr, &mut f).unwrap(); in load_arm64_valid() localVariable
240 assert_eq!(kernel.address_range.start, 0x107_0000); in load_arm64_valid()
241 assert_eq!(kernel.address_range.end, 0x1E3_3807); in load_arm64_valid()
242 assert_eq!(kernel.size, 0xDC_3808); in load_arm64_valid()
243 assert_eq!(kernel.entry, GuestAddress(0x107_0000)); in load_arm64_valid()
255 let kernel = load_arm64_kernel(&gm, kernel_addr, &mut f).unwrap(); in load_arm64_image_size_zero() localVariable
256 assert_eq!(kernel.address_range.start, 0x28_0000); in load_arm64_image_size_zero()
257 assert_eq!(kernel.address_range.end, 0x104_3807); in load_arm64_image_size_zero()
258 assert_eq!(kernel.size, 0xDC_3808); in load_arm64_image_size_zero()
259 assert_eq!(kernel.entry, GuestAddress(0x28_0000)); in load_arm64_image_size_zero()
277 fn write_valid_kernel_lz4() -> File { in write_valid_kernel_lz4()
328 fn write_valid_kernel_lz4_legacy() -> File { in write_valid_kernel_lz4_legacy()
363 let kernel = load_arm64_kernel_lz4(&gm, kernel_addr, &mut f).unwrap(); in load_arm64_lz4_valid() localVariable
364 assert_eq!(kernel.address_range.start, 0x107_0000); in load_arm64_lz4_valid()
365 assert_eq!(kernel.address_range.end, 0x1E3_3807); in load_arm64_lz4_valid()
366 assert_eq!(kernel.size, 0xDC_3808); in load_arm64_lz4_valid()
367 assert_eq!(kernel.entry, GuestAddress(0x107_0000)); in load_arm64_lz4_valid()
403 let kernel = load_arm64_kernel_lz4(&gm, kernel_addr, &mut f).unwrap(); in load_arm64_lz4_legacy_valid() localVariable
404 assert_eq!(kernel.address_range.start, 0x107_0000); in load_arm64_lz4_legacy_valid()
405 assert_eq!(kernel.address_range.end, 0x1E3_3807); in load_arm64_lz4_legacy_valid()
406 assert_eq!(kernel.size, 0xDC_3808); in load_arm64_lz4_legacy_valid()
407 assert_eq!(kernel.entry, GuestAddress(0x107_0000)); in load_arm64_lz4_legacy_valid()