multikernel
multikernel copied to clipboard
[mm] Unsafe Virtual Memory in MPPA-256
Description
In MPPA-256 TLB shootdown is currently supported (https://github.com/nanvix/hal/issues/578).
As a consequence of this limitation, we can not guarantee the correct semantics for a multithread application that works on the remote memory. For instance, consider the following example:
- Thread A allocates a chunk of memory
M1
- Thread A and B read/write to
M1
- Thread A tries to access some page in
M1
that is not in the page cache - A page fault exception is triggered and the page cache daemon runs
- The page cache dameon finds out that the page cache is full and evicts one page to remote memory
- The target page is fetched and the TLB of thread A is updated acordingly
- Thread B has an outdated TLB, thus it writes to unsafe memory addresses
Related Isues
- https://github.com/nanvix/hal/issues/578