#
e98ad6fc |
|
14-Sep-2022 |
David Karoly <karolyd577@gmail.com> |
kernel/x86/pae: fix build with TRACE enabled Change-Id: Ifbf979608978a66ad6d2b9af8002c39f1f205422 Reviewed-on: https://review.haiku-os.org/c/haiku/+/5661 Reviewed-by: waddlesplash <waddlesplash@gmail.com> Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
|
#
057fe191 |
|
01-Sep-2021 |
Augustin Cavalier <waddlesplash@gmail.com> |
kernel: Break thread-related AutoLockers into a separate header. Including thread.h brings a massive array of things with it from the kernel thread arch headers, team and thread definitions, hash tables, linked lists, Referenceable, etc. that the vast majority of AutoLock.h consumers neither want nor need. So, put these in a separate header, and adjust all consumers of these lockers to include the new file. This change exposes the fact that a lot of files were inadvertently making use of headers included indirectly through thread.h. Those will be fixed in the next commit.
|
#
dde876f9 |
|
14-Apr-2018 |
Jérôme Duval <jerome.duval@gmail.com> |
kernel: pae paging: align *TableEntry() with 64bit paging use SetTableEntry() in PutPageTableInPageDir() and PutPageTableEntryInTable().
|
#
0a4cbd78 |
|
07-Dec-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
X86VMTranslationMapPAE: Extend kernel tracing * Beside the physical address also print the PTE flags. * Also trace Protect(), ClearFlags(), ClearAccessedAndModified().
|
#
736fe5bc |
|
05-Dec-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Fix build with TRANSLATION_MAP_TRACING enabled
|
#
372b309a |
|
05-Dec-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
X86VMTranslationMapPAE: Fix gcc 2 warning ... which due to the reactivated -Werror causes the build to fail.
|
#
7b83ce11 |
|
04-Dec-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Add KDL command "mapping" * VMTranslationMap: - Add DebugPrintMappingInfo(): Given a virtual address it is supposed to print the paging structure information for that address. To be implemented by derived classes. - Add DebugGetReverseMappingInfo(): Given a physical addresss it is supposed to find all virtual addresses mapped to it. To be implemented by derived classes. * X86VMTranslationMapPAE: Implement the new methods DebugPrintMappingInfo() and DebugGetReverseMappingInfo(). * Add KDL command "mapping". It supports both virtual address lookups and reverse lookups.
|
#
372a6663 |
|
17-Sep-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
X86VMTranslationMapPAE: Add some ktracing for page (un)mapping
|
#
6508ce9f |
|
17-Sep-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
X86VMTranslationMapPAE::Map(): More info in assert
|
#
be573dcd |
|
22-Apr-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
arch: make sure not to set NX-bit when it is reserved
|
#
966f2076 |
|
06-Mar-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
x86: enable data execution prevention Set execute disable bit for any page that belongs to area with neither B_EXECUTE_AREA nor B_KERNEL_EXECUTE_AREA set. In order to take advanage of NX bit in 32 bit protected mode PAE must be enabled. Thus, from now on it is also enabled when the CPU supports NX bit. vm_page_fault() takes additional argument which indicates whether page fault was caused by an illegal instruction fetch.
|
#
e276cc04 |
|
05-Jul-2012 |
Alex Smith <alex@alex-smith.me.uk> |
Finished implementation of x86_64 paging. * vm_init now runs up until create_preloaded_image_areas(), which needs fixing to handle ELF64. * Not completely tested. I know Map(), Unmap() and Query() work fine, the other methods have not been tested as the kernel doesn't boot far enough for any of them to be called yet. As far as I know they're correct, though. * Not yet implemented the destructor for X86VMTranslationMap64Bit or Init() for a user address space.
|
#
643cf35e |
|
03-Dec-2011 |
Michael Lotz <mmlr@mlotz.ch> |
Add debug helper functions to mark pages present. They can be used to mark pages as present/non-present without actually unmapping them. Marking pages as non-present causes every access to fault. We can use that for debugging as it allows us to "read protect" individual kernel pages.
|
#
4535495d |
|
10-Jan-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Merged the signals branch into trunk, with these changes: * The team and thread kernel structures have been renamed to Team and Thread respectively and moved into the new BKernel namespace. * Several (kernel add-on) sources have been converted from C to C++ since private kernel headers are included that are no longer C compatible. Changes after merging: * Fixed gcc 2 build (warnings mainly in the scary firewire bus manager). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40196 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
506894b6 |
|
30-Aug-2010 |
Axel Dörfler <axeld@pinc-software.de> |
* Return an error on initialization error. This fixes CID 1566. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38461 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b9447668 |
|
10-Jul-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Moved the vm_page initialization from vm_page.cpp:vm_page_init() to the new vm_page::Init(). * Made vm_page::wired_count private and added accessor methods. * Added VMCache::fWiredPagesCount (the number of wired pages the cache contains) and accessor methods. * Made more use of vm_page::IsMapped(). * vm_copy_on_write_area(): Added vm_page_reservation* parameter that can be used to request a special handling for wired pages. If given the wired pages are replaced by copies and the original pages are moved to the upper cache. * vm_copy_area(): - We don't need to do any wired ranges handling, if the source area is a B_SHARED_AREA, since we don't touch the area's mappings in this case. - We no longer wait for wired ranges of the concerned areas to disappear. Instead we use the new vm_copy_on_write_area() feature and just let it copy the wired pages. This fixes #6288, an issue introduced with the use of user mutexes in libroot: When executing multiple concurrent fork()s all but the first one would wait on the fork mutex, which (being a user mutex) would wire a page that the vm_copy_area() of the first fork() would wait for. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37460 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
2a81a992 |
|
21-Jun-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Optimized implementations for UnmapPages() and UnmapArea(). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37193 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
8bcc0694 |
|
21-Jun-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Simplifications and indentation correction. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37191 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
c6f52e83 |
|
21-Jun-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Missed in r37187: Use the new VMTranslationMap::[Accessed]PageUnmapped() helper methods to avoid code duplication. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37188 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
96732e86 |
|
13-Jun-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
X86VMTranslationMap{32bit,PAE}::UnmapPage(): Added some helpful output to asserts. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37128 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
68b53104 |
|
11-Jun-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Implemented X86VMTranslationMapPAE and X86PagingStructuresPAE destruction. * Implemented X86VMTranslationMapPAE::QueryInterrupt(). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37100 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b35f3d13 |
|
10-Jun-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
X86VMTranslationMapPAE::Init(): Implemented the initialization for userland maps. Now we can at least fully boot in qemu with one CPU. A few things still need to be implemented, though. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37090 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
0c4c918a |
|
10-Jun-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Fleshed out most of the unimplemented methods. The kernel boots up to the creation of the initial shell, now. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37085 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
5b4d62a2 |
|
08-Jun-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Skeleton classes for PAE support. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37066 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
0a4cbd786c7970d571a0468e920d9db9de0dfdfb |
|
07-Dec-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
X86VMTranslationMapPAE: Extend kernel tracing * Beside the physical address also print the PTE flags. * Also trace Protect(), ClearFlags(), ClearAccessedAndModified().
|
#
736fe5bc63e80e95657a12d10d517f718ec91f35 |
|
05-Dec-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Fix build with TRANSLATION_MAP_TRACING enabled
|
#
372b309a4aa490d1fdde97694e3b8678c1e28b13 |
|
05-Dec-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
X86VMTranslationMapPAE: Fix gcc 2 warning ... which due to the reactivated -Werror causes the build to fail.
|
#
7b83ce1142f92bfe60462d33ffd3a215944c7319 |
|
04-Dec-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Add KDL command "mapping" * VMTranslationMap: - Add DebugPrintMappingInfo(): Given a virtual address it is supposed to print the paging structure information for that address. To be implemented by derived classes. - Add DebugGetReverseMappingInfo(): Given a physical addresss it is supposed to find all virtual addresses mapped to it. To be implemented by derived classes. * X86VMTranslationMapPAE: Implement the new methods DebugPrintMappingInfo() and DebugGetReverseMappingInfo(). * Add KDL command "mapping". It supports both virtual address lookups and reverse lookups.
|
#
372a66634410cf0450e426716c14ad42d40c0da4 |
|
17-Sep-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
X86VMTranslationMapPAE: Add some ktracing for page (un)mapping
|
#
6508ce9f521fa173b64b11cb35dff85c8bf86558 |
|
17-Sep-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
X86VMTranslationMapPAE::Map(): More info in assert
|
#
be573dcd88b099c4ba98dcf3c63300231f207a37 |
|
22-Apr-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
arch: make sure not to set NX-bit when it is reserved
|
#
966f207668d19610dae34d5331150e3742815bcf |
|
06-Mar-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
x86: enable data execution prevention Set execute disable bit for any page that belongs to area with neither B_EXECUTE_AREA nor B_KERNEL_EXECUTE_AREA set. In order to take advanage of NX bit in 32 bit protected mode PAE must be enabled. Thus, from now on it is also enabled when the CPU supports NX bit. vm_page_fault() takes additional argument which indicates whether page fault was caused by an illegal instruction fetch.
|
#
e276cc0457a4ddb3f137504e220ee5e839f132d4 |
|
05-Jul-2012 |
Alex Smith <alex@alex-smith.me.uk> |
Finished implementation of x86_64 paging. * vm_init now runs up until create_preloaded_image_areas(), which needs fixing to handle ELF64. * Not completely tested. I know Map(), Unmap() and Query() work fine, the other methods have not been tested as the kernel doesn't boot far enough for any of them to be called yet. As far as I know they're correct, though. * Not yet implemented the destructor for X86VMTranslationMap64Bit or Init() for a user address space.
|
#
643cf35ee8b8ba35ef88ca9daba4ca9ab65cf1ff |
|
03-Dec-2011 |
Michael Lotz <mmlr@mlotz.ch> |
Add debug helper functions to mark pages present. They can be used to mark pages as present/non-present without actually unmapping them. Marking pages as non-present causes every access to fault. We can use that for debugging as it allows us to "read protect" individual kernel pages.
|
#
4535495d80c86e19e2610e7444a4fcefe3e0f8e6 |
|
10-Jan-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Merged the signals branch into trunk, with these changes: * The team and thread kernel structures have been renamed to Team and Thread respectively and moved into the new BKernel namespace. * Several (kernel add-on) sources have been converted from C to C++ since private kernel headers are included that are no longer C compatible. Changes after merging: * Fixed gcc 2 build (warnings mainly in the scary firewire bus manager). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40196 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
506894b6a88c329c7bcbd626499fbbea8d332b5a |
|
30-Aug-2010 |
Axel Dörfler <axeld@pinc-software.de> |
* Return an error on initialization error. This fixes CID 1566. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38461 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b9447668707741085389f650383b018d33d7d0bf |
|
10-Jul-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Moved the vm_page initialization from vm_page.cpp:vm_page_init() to the new vm_page::Init(). * Made vm_page::wired_count private and added accessor methods. * Added VMCache::fWiredPagesCount (the number of wired pages the cache contains) and accessor methods. * Made more use of vm_page::IsMapped(). * vm_copy_on_write_area(): Added vm_page_reservation* parameter that can be used to request a special handling for wired pages. If given the wired pages are replaced by copies and the original pages are moved to the upper cache. * vm_copy_area(): - We don't need to do any wired ranges handling, if the source area is a B_SHARED_AREA, since we don't touch the area's mappings in this case. - We no longer wait for wired ranges of the concerned areas to disappear. Instead we use the new vm_copy_on_write_area() feature and just let it copy the wired pages. This fixes #6288, an issue introduced with the use of user mutexes in libroot: When executing multiple concurrent fork()s all but the first one would wait on the fork mutex, which (being a user mutex) would wire a page that the vm_copy_area() of the first fork() would wait for. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37460 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
2a81a99203854619934782be0316f3f4c3a1ddf6 |
|
21-Jun-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Optimized implementations for UnmapPages() and UnmapArea(). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37193 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
8bcc0694ad931bc1bb988ec925f4819dd1a0577e |
|
21-Jun-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Simplifications and indentation correction. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37191 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
c6f52e83280eeebb23e68c686a2dda6071d3a180 |
|
21-Jun-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Missed in r37187: Use the new VMTranslationMap::[Accessed]PageUnmapped() helper methods to avoid code duplication. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37188 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
96732e8650592415bcd28e13b3188ed754504b57 |
|
13-Jun-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
X86VMTranslationMap{32bit,PAE}::UnmapPage(): Added some helpful output to asserts. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37128 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
68b53104ba4f01a0399a1a32710388faf3805d4d |
|
11-Jun-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Implemented X86VMTranslationMapPAE and X86PagingStructuresPAE destruction. * Implemented X86VMTranslationMapPAE::QueryInterrupt(). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37100 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b35f3d132cd1db0f828794dcf6a04d638e4d0018 |
|
10-Jun-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
X86VMTranslationMapPAE::Init(): Implemented the initialization for userland maps. Now we can at least fully boot in qemu with one CPU. A few things still need to be implemented, though. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37090 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
0c4c918a3da495a74d756206a8b7c3dbf1286109 |
|
10-Jun-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Fleshed out most of the unimplemented methods. The kernel boots up to the creation of the initial shell, now. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37085 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
5b4d62a2618dd2ae37b975e4ca283b410f39f9c7 |
|
08-Jun-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Skeleton classes for PAE support. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37066 a95241bf-73f2-0310-859d-f6bbb57e9c96
|