Skip to content

Commit 096fb53

Browse files
committed
tool: remove deprecated code patching child frame caps into parents
Signed-off-by: Krishnan Winter <krishnanwinter1@gmail.com>
1 parent fa1ed76 commit 096fb53

File tree

1 file changed

+6
-73
lines changed

1 file changed

+6
-73
lines changed

tool/microkit/src/main.rs

Lines changed: 6 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -2027,6 +2027,8 @@ fn build_system(
20272027
}
20282028
}
20292029

2030+
let mut frame_cap = BASE_FRAME_CAP;
2031+
20302032
for (pd_idx, _) in system.protection_domains.iter().enumerate() {
20312033
for maybe_child_pd in system.protection_domains.iter() {
20322034
if maybe_child_pd.parent.is_some_and(|x| x == pd_idx) {
@@ -2038,7 +2040,7 @@ fn build_system(
20382040
config,
20392041
InvocationArgs::CnodeMint {
20402042
cnode: cnode_objs[pd_idx].cap_addr,
2041-
dest_index: BASE_FRAME_CAP,
2043+
dest_index: frame_cap,
20422044
dest_depth: PD_CAP_BITS,
20432045
src_root: root_cnode_cap,
20442046
src_obj: mr_pages[mr][0].cap_addr,
@@ -2064,85 +2066,16 @@ fn build_system(
20642066

20652067
for mr_idx in 0..mr_pages[mr].len() {
20662068
let vaddr = mp.vaddr + mr.page_size_bytes() * mr_idx as u64;
2067-
let minted_cap = BASE_FRAME_CAP + mr_idx as u64;
2069+
let minted_cap = frame_cap + mr_idx as u64;
20682070

20692071
all_child_page_tables[pd_idx]
20702072
.as_mut()
20712073
.unwrap()[maybe_child_pd.id.unwrap() as usize]
20722074
.add_page_at_vaddr(vaddr, minted_cap, mr.page_size);
20732075
}
2074-
}
2075-
}
2076-
}
2077-
}
2078-
}
20792076

2080-
let mut sorted_mp_mr_pairs: Vec<(&SysMap, &SysMemoryRegion, String)> = vec![];
2081-
for pd in system.protection_domains.iter() {
2082-
for map_set in [&pd.maps, &pd_extra_maps[pd]] {
2083-
for mp in map_set {
2084-
let mr = all_mr_by_name[mp.mr.as_str()];
2085-
let id = mr.name.clone() + " " + &pd.name;
2086-
sorted_mp_mr_pairs.push((mp, mr, id));
2087-
}
2088-
}
2089-
}
2090-
sorted_mp_mr_pairs.sort_by(|a, b| a.1.name.cmp(&b.1.name));
2091-
let mut frame_cap = BASE_FRAME_CAP;
2092-
2093-
// If a pd has a parent, we mint the child's frame caps into the parent's vspace
2094-
// We additionally place these frame caps into the corresponding page in our copy of the tables
2095-
for (pd_idx, parent) in system.protection_domains.iter().enumerate() {
2096-
for (_maybe_child_idx, maybe_child_pd) in system.protection_domains.iter().enumerate() {
2097-
if let Some(parent_idx) = maybe_child_pd.parent {
2098-
if parent_idx == pd_idx && parent.child_pts {
2099-
for mp_mr_pair in &sorted_mp_mr_pairs {
2100-
let child_mp = mp_mr_pair.0;
2101-
let child_mr = mp_mr_pair.1;
2102-
let name = &mp_mr_pair.2;
2103-
if name.contains(&maybe_child_pd.name) {
2104-
let mut invocation = Invocation::new(
2105-
config,
2106-
InvocationArgs::CnodeMint {
2107-
cnode: cnode_objs[pd_idx].cap_addr,
2108-
dest_index: frame_cap,
2109-
dest_depth: PD_CAP_BITS,
2110-
src_root: root_cnode_cap,
2111-
src_obj: mr_pages[child_mr][0].cap_addr,
2112-
src_depth: config.cap_address_bits,
2113-
rights: (Rights::Read as u64 | Rights::Write as u64),
2114-
badge: 0,
2115-
},
2116-
);
2117-
2118-
invocation.repeat(
2119-
mr_pages[child_mr].len() as u32,
2120-
InvocationArgs::CnodeMint {
2121-
cnode: 0,
2122-
dest_index: 1,
2123-
dest_depth: 0,
2124-
src_root: 0,
2125-
src_obj: 1,
2126-
src_depth: 0,
2127-
rights: 0,
2128-
badge: 0,
2129-
},
2130-
);
2131-
2132-
for mr_idx in 0..mr_pages[child_mr].len() {
2133-
let vaddr = child_mp.vaddr + child_mr.page_size_bytes() * mr_idx as u64;
2134-
let minted_cap = frame_cap + mr_idx as u64;
2135-
2136-
// Check if we have a small or large page.
2137-
all_child_page_tables[parent_idx]
2138-
.as_mut()
2139-
.unwrap()[maybe_child_pd.id.unwrap() as usize]
2140-
.add_page_at_vaddr(vaddr, minted_cap, child_mr.page_size);
2141-
}
2142-
2143-
frame_cap += mr_pages[child_mr].len() as u64;
2144-
system_invocations.push(invocation);
2145-
}
2077+
frame_cap += mr_pages[mr].len() as u64;
2078+
system_invocations.push(invocation);
21462079
}
21472080
}
21482081
}

0 commit comments

Comments
 (0)