diff options
| author | Matteo Gmür <matteo.gmuer1@ost.ch> | 2024-11-12 08:50:05 +0000 |
|---|---|---|
| committer | Matteo Gmür <matteo.gmuer1@ost.ch> | 2024-11-12 08:50:05 +0000 |
| commit | f45fdae9913a9d8e003cf681621e71516b2054b5 (patch) | |
| tree | a519e803ff5af8f730bc7e3785d5a739440e582b /arch | |
| parent | 0ca0c40c197c214288ad2ed1179ae9ae28c50194 (diff) | |
| download | teachos-f45fdae9913a9d8e003cf681621e71516b2054b5.tar.xz teachos-f45fdae9913a9d8e003cf681621e71516b2054b5.zip | |
Add notes on why system crashes
Diffstat (limited to 'arch')
| -rw-r--r-- | arch/x86_64/include/arch/memory/paging/active_page_table.hpp | 7 | ||||
| -rw-r--r-- | arch/x86_64/src/kernel/main.cpp | 2 |
2 files changed, 6 insertions, 3 deletions
diff --git a/arch/x86_64/include/arch/memory/paging/active_page_table.hpp b/arch/x86_64/include/arch/memory/paging/active_page_table.hpp index c7d835a..c5b972b 100644 --- a/arch/x86_64/include/arch/memory/paging/active_page_table.hpp +++ b/arch/x86_64/include/arch/memory/paging/active_page_table.hpp @@ -166,8 +166,11 @@ namespace teachos::arch::memory::paging } // TODO: Flushing only specifc page does not work and cause temporary_page.map_table_frame to return an invalid // page table (Memory inside buffer shows nothing) - cpu::tlb_flush(page.start_address()); - // cpu::tlb_flush_all(); + // cpu::tlb_flush(page.start_address()); + // This is the case, because we have unmapped the active page and it is completly invalid, if we only flush one + // page, the other pages which are huge still exist in the cache and can therefore still be accessed. But because + // they are huge pages the temporary page is not mapped correctly. + cpu::tlb_flush_all(); } private: diff --git a/arch/x86_64/src/kernel/main.cpp b/arch/x86_64/src/kernel/main.cpp index f9b252d..679fb8d 100644 --- a/arch/x86_64/src/kernel/main.cpp +++ b/arch/x86_64/src/kernel/main.cpp @@ -25,7 +25,7 @@ namespace teachos::arch::kernel memory::cpu::set_efer_bit(memory::cpu::efer_flags::NXE); memory::paging::kernel_mapper kernel(allocator, memory_information); - auto & active_table = kernel.remap_kernel(); + kernel.remap_kernel(); video::vga::text::write("Kernel remapping successfull", video::vga::text::common_attributes::green_on_black); // TODO: Map heap virtual pages with active table |
