mirror of
https://github.com/reactos/reactos.git
synced 2024-10-25 07:26:45 +00:00
- Zero early-allocated pages for PFN DB itself, as suggested on the ros-dev mailing list, and hyperspace mapping seems to work, at least on x86. Fixes the "warm reboot-bug" in 2nd stage.
svn path=/trunk/; revision=32400
This commit is contained in:
parent
cc6beed26a
commit
e86380de7f
|
@ -386,8 +386,7 @@ MmInitializePageList(VOID)
|
|||
MmStats.NrTotalPages = MmStats.NrFreePages + MmStats.NrSystemPages + MmStats.NrUserPages;
|
||||
MmInitializeBalancer(MmStats.NrFreePages, MmStats.NrSystemPages);
|
||||
}
|
||||
#endif
|
||||
|
||||
#else
|
||||
VOID
|
||||
NTAPI
|
||||
MmInitializePageList()
|
||||
|
@ -427,8 +426,7 @@ MmInitializePageList()
|
|||
if (!MmIsPagePresent(NULL, Address))
|
||||
{
|
||||
/* Use one of our highest usable pages */
|
||||
Pfn = MiFreeDescriptor->BasePage + MiFreeDescriptor->PageCount - 1;
|
||||
MiFreeDescriptor->PageCount--;
|
||||
Pfn = MmAllocEarlyPage();
|
||||
|
||||
/* Set the PFN */
|
||||
Status = MmCreateVirtualMappingForKernel(Address,
|
||||
|
@ -579,6 +577,7 @@ MmInitializePageList()
|
|||
MmStats.NrTotalPages = MmStats.NrFreePages + MmStats.NrSystemPages + MmStats.NrUserPages;
|
||||
MmInitializeBalancer(MmStats.NrFreePages, MmStats.NrSystemPages);
|
||||
}
|
||||
#endif
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
|
@ -945,7 +944,9 @@ MmAllocPage(ULONG Consumer, SWAPENTRY SavedSwapEntry)
|
|||
{
|
||||
/* Allocate an early page -- we'll account for it later */
|
||||
KeReleaseSpinLock(&PageListLock, oldIrql);
|
||||
return MmAllocEarlyPage();
|
||||
PfnOffset = MmAllocEarlyPage();
|
||||
MiZeroPage(PfnOffset);
|
||||
return PfnOffset;
|
||||
}
|
||||
|
||||
DPRINT1("MmAllocPage(): Out of memory\n");
|
||||
|
|
Loading…
Reference in a new issue