Account for the physical map area in the kernel VM space. Fixes #9547.
The physical memory map area was not included in the kernel virtual address space range (it was below KERNEL_BASE). This caused problems if an I/O operation took place on physical memory mapped there (the bad address error seen in #9547 was occurring in lock_memory_etc()). Changed KERNEL_BASE and KERNEL_SIZE to cover the area and add a null area that covers all of it. Also changed X86VMTranslationMap64Bit to handle large pages in Query(), as the physical map area uses large pages.
This commit is contained in:
@@ -30,8 +30,8 @@
|
||||
// address where the kernel is loaded to: the kernel is loaded in the top 2GB
|
||||
// of the virtual address space as required by GCC's kernel code model. The
|
||||
// whole kernel address space is the top 512GB of the address space.
|
||||
#define KERNEL_BASE 0xffffff8000000000
|
||||
#define KERNEL_SIZE 0x8000000000
|
||||
#define KERNEL_BASE 0xffffff0000000000
|
||||
#define KERNEL_SIZE 0x10000000000
|
||||
#define KERNEL_TOP (KERNEL_BASE + (KERNEL_SIZE - 1))
|
||||
#define KERNEL_LOAD_BASE 0xffffffff80000000
|
||||
|
||||
|
||||
Reference in New Issue
Block a user