mirror of
https://github.com/reactos/reactos.git
synced 2024-06-30 18:01:07 +00:00
[NTOS:MM]
- Get rid of MiNonPagedSystemSize, which is misleading because MmNumberOfSystemPtes can change throughout the startup process, thus invalidating this size variable - Correctly reserve the system PTE space and nonpaged pool expansion space in MiInitSystemMemoryAreas Should fix the remaining "Bad PTE" bug checks when running out of kernel address space. CORE-11533 #resolve CORE-11160 CORE-10611 CORE-11926 CORE-11873 CORE-11554 #comment This should be fixed with r72869, please retest. svn path=/trunk/; revision=72869
This commit is contained in:
parent
8e21414853
commit
076a3c9cb7
|
@ -245,6 +245,7 @@ MiInitMachineDependent(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
|
|||
PMMPTE StartPde, EndPde, PointerPte, LastPte;
|
||||
MMPTE TempPde, TempPte;
|
||||
PVOID NonPagedPoolExpansionVa;
|
||||
SIZE_T NonPagedSystemSize;
|
||||
KIRQL OldIrql;
|
||||
PMMPFN Pfn1;
|
||||
ULONG Flags;
|
||||
|
@ -298,9 +299,9 @@ MiInitMachineDependent(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
|
|||
// nonpaged pool expansion (above) and the system PTEs. Note that it is
|
||||
// then aligned to a PDE boundary (4MB).
|
||||
//
|
||||
MiNonPagedSystemSize = (MmNumberOfSystemPtes + 1) * PAGE_SIZE;
|
||||
NonPagedSystemSize = (MmNumberOfSystemPtes + 1) * PAGE_SIZE;
|
||||
MmNonPagedSystemStart = (PVOID)((ULONG_PTR)MmNonPagedPoolStart -
|
||||
MiNonPagedSystemSize);
|
||||
NonPagedSystemSize);
|
||||
MmNonPagedSystemStart = (PVOID)((ULONG_PTR)MmNonPagedSystemStart &
|
||||
~(PDE_MAPPED_VA - 1));
|
||||
|
||||
|
|
|
@ -527,7 +527,6 @@ extern SIZE_T MmMaximumNonPagedPoolInBytes;
|
|||
extern PFN_NUMBER MmMaximumNonPagedPoolInPages;
|
||||
extern PFN_NUMBER MmSizeOfPagedPoolInPages;
|
||||
extern PVOID MmNonPagedSystemStart;
|
||||
extern SIZE_T MiNonPagedSystemSize;
|
||||
extern PVOID MmNonPagedPoolStart;
|
||||
extern PVOID MmNonPagedPoolExpansionStart;
|
||||
extern PVOID MmNonPagedPoolEnd;
|
||||
|
|
|
@ -94,7 +94,6 @@ ULONG MmMaxAdditionNonPagedPoolPerMb = 400 * 1024;
|
|||
// http://www.ditii.com/2007/09/28/windows-memory-management-x86-virtual-address-space/
|
||||
//
|
||||
PVOID MmNonPagedSystemStart;
|
||||
SIZE_T MiNonPagedSystemSize;
|
||||
PVOID MmNonPagedPoolStart;
|
||||
PVOID MmNonPagedPoolExpansionStart;
|
||||
PVOID MmNonPagedPoolEnd = MI_NONPAGED_POOL_END;
|
||||
|
|
|
@ -370,14 +370,15 @@ INIT_FUNCTION
|
|||
MiBuildSystemPteSpace(VOID)
|
||||
{
|
||||
PMMPTE PointerPte;
|
||||
SIZE_T NonPagedSystemSize;
|
||||
|
||||
/* Use the default numer of system PTEs */
|
||||
/* Use the default number of system PTEs */
|
||||
MmNumberOfSystemPtes = MI_NUMBER_SYSTEM_PTES;
|
||||
MiNonPagedSystemSize = (MmNumberOfSystemPtes + 1) * PAGE_SIZE;
|
||||
NonPagedSystemSize = (MmNumberOfSystemPtes + 1) * PAGE_SIZE;
|
||||
|
||||
/* Put system PTEs at the start of the system VA space */
|
||||
MiSystemPteSpaceStart = MmNonPagedSystemStart;
|
||||
MiSystemPteSpaceEnd = (PUCHAR)MiSystemPteSpaceStart + MiNonPagedSystemSize;
|
||||
MiSystemPteSpaceEnd = (PUCHAR)MiSystemPteSpaceStart + NonPagedSystemSize;
|
||||
|
||||
/* Map the PPEs and PDEs for the system PTEs */
|
||||
MiMapPPEs(MiSystemPteSpaceStart, MiSystemPteSpaceEnd);
|
||||
|
|
|
@ -88,8 +88,11 @@ MiInitSystemMemoryAreas(VOID)
|
|||
// ReactOS requires a memory area to keep the initial NP area off-bounds
|
||||
MiCreateArm3StaticMemoryArea(MmNonPagedPoolStart, MmSizeOfNonPagedPoolInBytes, FALSE);
|
||||
|
||||
// System NP
|
||||
MiCreateArm3StaticMemoryArea(MmNonPagedSystemStart, MiNonPagedSystemSize, FALSE);
|
||||
// System PTE space
|
||||
MiCreateArm3StaticMemoryArea(MmNonPagedSystemStart, (MmNumberOfSystemPtes + 1) * PAGE_SIZE, FALSE);
|
||||
|
||||
// Nonpaged pool expansion space
|
||||
MiCreateArm3StaticMemoryArea(MmNonPagedPoolExpansionStart, (ULONG_PTR)MmNonPagedPoolEnd - (ULONG_PTR)MmNonPagedPoolExpansionStart, FALSE);
|
||||
|
||||
// System view space
|
||||
MiCreateArm3StaticMemoryArea(MiSystemViewStart, MmSystemViewSize, FALSE);
|
||||
|
|
Loading…
Reference in a new issue