Always check shootdown reqs when locking addrsp.

This commit is contained in:
4lDO2
2024-03-04 15:17:23 +01:00
parent 3a592b9079
commit 1f8d7bc67c
13 changed files with 78 additions and 56 deletions
+5 -6
View File
@@ -244,9 +244,9 @@ pub unsafe fn debugger(target_id: Option<crate::context::ContextId>) {
// Switch to context page table to ensure syscall debug and stack dump will work
if let Some(ref space) = context.addr_space {
let was_new = spaces.insert(space.inner.read().table.utable.table().phys().data());
RmmA::set_table(TableKind::User, space.inner.read().table.utable.table().phys());
check_consistency(&mut space.inner.write(), was_new, &mut tree);
let was_new = spaces.insert(space.acquire_read().table.utable.table().phys().data());
RmmA::set_table(TableKind::User, space.acquire_read().table.utable.table().phys());
check_consistency(&mut space.acquire_write(), was_new, &mut tree);
}
println!("status: {:?}", context.status);
@@ -260,7 +260,7 @@ pub unsafe fn debugger(target_id: Option<crate::context::ContextId>) {
);
}
if let Some(ref addr_space) = context.addr_space {
let addr_space = addr_space.inner.read();
let addr_space = addr_space.acquire_read();
if !addr_space.grants.is_empty() {
println!("grants:");
for (base, info) in addr_space.grants.iter() {
@@ -285,8 +285,7 @@ pub unsafe fn debugger(target_id: Option<crate::context::ContextId>) {
for _ in 0..64 {
if context.addr_space.as_ref().map_or(false, |space| {
space
.inner
.read()
.acquire_read()
.table
.utable
.translate(crate::paging::VirtualAddress::new(rsp))