mirror of
https://github.com/asterinas/asterinas.git
synced 2025-06-08 21:06:48 +00:00
Clear User bits of non-leaf PTE in boot pagetable
This commit is contained in:
parent
7f3a332101
commit
e669d38d2d
@ -136,11 +136,9 @@ impl<E: PageTableEntryTrait, C: PagingConstsTrait> BootPageTable<E, C> {
|
|||||||
let root_pt = crate::arch::mm::current_page_table_paddr() / C::BASE_PAGE_SIZE;
|
let root_pt = crate::arch::mm::current_page_table_paddr() / C::BASE_PAGE_SIZE;
|
||||||
// Make sure the 2 available bits are not set for firmware page tables.
|
// Make sure the 2 available bits are not set for firmware page tables.
|
||||||
dfs_walk_on_leave::<E, C>(root_pt, C::NR_LEVELS, &mut |pte: &mut E| {
|
dfs_walk_on_leave::<E, C>(root_pt, C::NR_LEVELS, &mut |pte: &mut E| {
|
||||||
let prop = pte.prop();
|
let mut prop = pte.prop();
|
||||||
pte.set_prop(PageProperty::new(
|
prop.flags |= PTE_POINTS_TO_FIRMWARE_PT;
|
||||||
prop.flags | PTE_POINTS_TO_FIRMWARE_PT,
|
pte.set_prop(prop);
|
||||||
prop.cache,
|
|
||||||
));
|
|
||||||
});
|
});
|
||||||
Self {
|
Self {
|
||||||
root_pt,
|
root_pt,
|
||||||
@ -271,11 +269,7 @@ impl<E: PageTableEntryTrait, C: PagingConstsTrait> BootPageTable<E, C> {
|
|||||||
let vaddr = paddr_to_vaddr(frame_paddr) as *mut u8;
|
let vaddr = paddr_to_vaddr(frame_paddr) as *mut u8;
|
||||||
unsafe { core::ptr::write_bytes(vaddr, 0, PAGE_SIZE) };
|
unsafe { core::ptr::write_bytes(vaddr, 0, PAGE_SIZE) };
|
||||||
|
|
||||||
let mut pte = E::new_pt(frame_paddr);
|
E::new_pt(frame_paddr)
|
||||||
let prop = pte.prop();
|
|
||||||
pte.set_prop(PageProperty::new(prop.flags, prop.cache));
|
|
||||||
|
|
||||||
pte
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(ktest)]
|
#[cfg(ktest)]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user