diff options
author | Andreas Kling <kling@serenityos.org> | 2022-08-19 12:14:46 +0200 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2022-08-19 12:14:57 +0200 |
commit | a84d893af862a40bd2c093a4b1d0eb6e7f1640da (patch) | |
tree | 27443eb5f57d097302c7fc537e54a66278d19db0 /Kernel/Memory | |
parent | 037f1ae9794222b11640eed9c9a26a19a58f5c8a (diff) | |
download | serenity-a84d893af862a40bd2c093a4b1d0eb6e7f1640da.zip |
Kernel/x86: Re-enable interrupts ASAP when handling page faults
As soon as we've saved CR2 (the faulting address), we can re-enable
interrupt processing. This should make the kernel more responsive under
heavy fault loads.
Diffstat (limited to 'Kernel/Memory')
-rw-r--r-- | Kernel/Memory/AnonymousVMObject.cpp | 1 | ||||
-rw-r--r-- | Kernel/Memory/MemoryManager.cpp | 2 | ||||
-rw-r--r-- | Kernel/Memory/Region.cpp | 3 |
3 files changed, 0 insertions, 6 deletions
diff --git a/Kernel/Memory/AnonymousVMObject.cpp b/Kernel/Memory/AnonymousVMObject.cpp index 2ee446e81f..cfff86ff52 100644 --- a/Kernel/Memory/AnonymousVMObject.cpp +++ b/Kernel/Memory/AnonymousVMObject.cpp @@ -317,7 +317,6 @@ size_t AnonymousVMObject::cow_pages() const PageFaultResponse AnonymousVMObject::handle_cow_fault(size_t page_index, VirtualAddress vaddr) { - VERIFY_INTERRUPTS_DISABLED(); SpinlockLocker lock(m_lock); if (is_volatile()) { diff --git a/Kernel/Memory/MemoryManager.cpp b/Kernel/Memory/MemoryManager.cpp index b623c7ee94..d15a143c91 100644 --- a/Kernel/Memory/MemoryManager.cpp +++ b/Kernel/Memory/MemoryManager.cpp @@ -715,8 +715,6 @@ Region* MemoryManager::find_region_from_vaddr(VirtualAddress vaddr) PageFaultResponse MemoryManager::handle_page_fault(PageFault const& fault) { - VERIFY_INTERRUPTS_DISABLED(); - auto faulted_in_range = [&fault](auto const* start, auto const* end) { return fault.vaddr() >= VirtualAddress { start } && fault.vaddr() < VirtualAddress { end }; }; diff --git a/Kernel/Memory/Region.cpp b/Kernel/Memory/Region.cpp index 4e6e3ce68b..c69004b451 100644 --- a/Kernel/Memory/Region.cpp +++ b/Kernel/Memory/Region.cpp @@ -402,7 +402,6 @@ PageFaultResponse Region::handle_fault(PageFault const& fault) PageFaultResponse Region::handle_zero_fault(size_t page_index_in_region) { - VERIFY_INTERRUPTS_DISABLED(); VERIFY(vmobject().is_anonymous()); SpinlockLocker locker(vmobject().m_lock); @@ -444,7 +443,6 @@ PageFaultResponse Region::handle_zero_fault(size_t page_index_in_region) PageFaultResponse Region::handle_cow_fault(size_t page_index_in_region) { - VERIFY_INTERRUPTS_DISABLED(); auto current_thread = Thread::current(); if (current_thread) current_thread->did_cow_fault(); @@ -461,7 +459,6 @@ PageFaultResponse Region::handle_cow_fault(size_t page_index_in_region) PageFaultResponse Region::handle_inode_fault(size_t page_index_in_region) { - VERIFY_INTERRUPTS_DISABLED(); VERIFY(vmobject().is_inode()); VERIFY(!s_mm_lock.is_locked_by_current_processor()); VERIFY(!g_scheduler_lock.is_locked_by_current_processor()); |