mirror of
https://github.com/RGBCube/serenity
synced 2025-07-10 12:17:35 +00:00
Kernel: Ignore TLB flush requests for user addresses of other processes
If a TLB flush request is broadcast to other processors and the addresses to flush are user mode addresses, we can ignore such a request on the target processor if the page directory currently in use doesn't match the addresses to be flushed. We still need to broadcast to all processors in that case because the other processors may switch to that same page directory at any time.
This commit is contained in:
parent
c630669304
commit
0d44ee6f2b
5 changed files with 25 additions and 12 deletions
|
@ -697,12 +697,12 @@ void MemoryManager::flush_tlb_local(VirtualAddress vaddr, size_t page_count)
|
|||
Processor::flush_tlb_local(vaddr, page_count);
|
||||
}
|
||||
|
||||
void MemoryManager::flush_tlb(VirtualAddress vaddr, size_t page_count)
|
||||
void MemoryManager::flush_tlb(const PageDirectory* page_directory, VirtualAddress vaddr, size_t page_count)
|
||||
{
|
||||
#ifdef MM_DEBUG
|
||||
dbg() << "MM: Flush " << page_count << " pages at " << vaddr;
|
||||
#endif
|
||||
Processor::flush_tlb(vaddr, page_count);
|
||||
Processor::flush_tlb(page_directory, vaddr, page_count);
|
||||
}
|
||||
|
||||
extern "C" PageTableEntry boot_pd3_pt1023[1024];
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue