Skip to content

Commit 63340a3

Browse files
Update uefi dependency to v0.20 (#360)
1 parent bb92e9e commit 63340a3

File tree

4 files changed

+46
-46
lines changed

4 files changed

+46
-46
lines changed

Cargo.lock

+25-4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/runner/src/lib.rs

+18-13
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,6 @@
11
use bootloader::BootConfig;
22
use bootloader::DiskImageBuilder;
3-
use std::{io::Read, path::Path, process::Command};
4-
5-
const QEMU_ARGS: &[&str] = &[
6-
"-device",
7-
"isa-debug-exit,iobase=0xf4,iosize=0x04",
8-
"-serial",
9-
"stdio",
10-
"-display",
11-
"none",
12-
"--no-reboot",
13-
];
14-
const SEPARATOR: &str = "\n____________________________________\n";
3+
use std::path::Path;
154

165
pub fn run_test_kernel(kernel_binary_path: &str) {
176
run_test_kernel_internal(kernel_binary_path, None, None)
@@ -98,11 +87,27 @@ pub fn run_test_kernel_on_uefi_pxe(out_tftp_path: &Path) {
9887
run_qemu(args);
9988
}
10089

90+
#[cfg(any(feature = "uefi", feature = "bios"))]
10191
fn run_qemu<'a, A>(args: A)
10292
where
10393
A: IntoIterator<Item = &'a str>,
10494
{
105-
use std::process::Stdio;
95+
use std::{
96+
io::Read,
97+
process::{Command, Stdio},
98+
};
99+
100+
const QEMU_ARGS: &[&str] = &[
101+
"-device",
102+
"isa-debug-exit,iobase=0xf4,iosize=0x04",
103+
"-serial",
104+
"stdio",
105+
"-display",
106+
"none",
107+
"--no-reboot",
108+
];
109+
110+
const SEPARATOR: &str = "\n____________________________________\n";
106111

107112
let mut run_cmd = Command::new("qemu-system-x86_64");
108113
run_cmd.args(args);

uefi/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,6 @@ bootloader_api = { workspace = true }
1313
bootloader-x86_64-common = { workspace = true }
1414
bootloader-boot-config = { workspace = true }
1515
log = "0.4.14"
16-
uefi = "0.18.0"
1716
x86_64 = "0.14.8"
1817
serde-json-core = "0.5.0"
18+
uefi = "0.20.0"

uefi/src/main.rs

+2-28
Original file line numberDiff line numberDiff line change
@@ -136,37 +136,11 @@ fn main_inner(image: Handle, mut st: SystemTable<Boot>) -> Status {
136136
}
137137
);
138138

139-
let mmap_storage = {
140-
let mut memory_map_size = st.boot_services().memory_map_size();
141-
loop {
142-
let ptr = st
143-
.boot_services()
144-
.allocate_pool(MemoryType::LOADER_DATA, memory_map_size.map_size)
145-
.expect("Failed to allocate memory for mmap storage");
146-
147-
let storage = unsafe { slice::from_raw_parts_mut(ptr, memory_map_size.map_size) };
148-
149-
if st.boot_services().memory_map(storage).is_ok() {
150-
break storage;
151-
}
152-
153-
// By measuring the size here, we can find out exactly how much we need.
154-
// We may hit this code twice, if the map allocation ends up spanning more pages.
155-
memory_map_size = st.boot_services().memory_map_size();
156-
// allocated memory region was not big enough -> free it again
157-
st.boot_services()
158-
.free_pool(ptr)
159-
.expect("Failed to free temporary memory for memory map!");
160-
}
161-
};
162-
163139
log::trace!("exiting boot services");
164-
let (system_table, memory_map) = st
165-
.exit_boot_services(image, mmap_storage)
166-
.expect("Failed to exit boot services");
140+
let (system_table, memory_map) = st.exit_boot_services();
167141

168142
let mut frame_allocator =
169-
LegacyFrameAllocator::new(memory_map.copied().map(UefiMemoryDescriptor));
143+
LegacyFrameAllocator::new(memory_map.entries().copied().map(UefiMemoryDescriptor));
170144

171145
let page_tables = create_page_tables(&mut frame_allocator);
172146
let mut ramdisk_len = 0u64;

0 commit comments

Comments
 (0)