http://www.superheterodyne.net/reactos/freelist_remove_type.diff
This removes the redundant notion of .Flags.Type in freelist, and leaves only the non-redundant MM_PHYSICAL_PAGE_BIOS. MM_PHYSICAL_PAGE_FREE is reported when the page has a 0 reference count and MM_PHYSICAL_PAGE_USED is reported when the reference count is nonzero.
A function, MmGetPageType is added to replace the old functionality.
Init memory being freed seems to cause a lot of grief. I'm going to see if there's a way to decentralize how those pages are set up, given that the method used to dispose of them is spread out too.
art yerkes wrote:
http://www.superheterodyne.net/reactos/freelist_remove_type.diff
This removes the redundant notion of .Flags.Type in freelist, and leaves only the non-redundant MM_PHYSICAL_PAGE_BIOS. MM_PHYSICAL_PAGE_FREE is reported when the page has a 0 reference count and MM_PHYSICAL_PAGE_USED is reported when the reference count is nonzero.
A function, MmGetPageType is added to replace the old functionality.
I get this on-boot during first-stage, before I even see the installer screen:
(ntoskrnl\mm\freelist.c:816) Freeing page with flags 2 KeBugCheck at ntoskrnl\mm\freelist.c:817
*** Fatal System Error: 0x00000000 (0x00000000,0x00000000,0x00000000,0x00000000)
<ntoskrnl.exe:2722 (ntoskrnl/ke/bug.c:1089 (KeBugCheck))> <ntoskrnl.exe:523fd (ntoskrnl/mm/freelist.c:817 (MmDereferencePage))> <ntoskrnl.exe:50b1c (ntoskrnl/mm/balance.c:111 (MmReleasePageMemoryConsumer))> <ntoskrnl.exe:8f110 (ntoskrnl/mm/i386/page.c:1022 (MmDeleteVirtualMapping))> <ntoskrnl.exe:34fcf (ntoskrnl/io/iomgr/driver.c:803 (IopInitializeBootDrivers))> <ntoskrnl.exe:ab245 (ntoskrnl/io/iomgr/iomgr.c:512 (IoInitSystem))> <ntoskrnl.exe:214e1 (ntoskrnl/ex/init.c:1168 (Phase1InitializationDiscard))> <ntoskrnl.exe:21a1a (ntoskrnl/ex/init.c:1235 (Phase1Initialization))> <ntoskrnl.exe:7b314 (ntoskrnl/ps/thread.c:158 (PspSystemThreadStartup))>
Does the old patch (already commited) conflict with this one?
Init memory being freed seems to cause a lot of grief. I'm going to see if there's a way to decentralize how those pages are set up, given that the method used to dispose of them is spread out too.
I suggest disabling init memory freeing for now, I've slowly taken out functions of INIT_FUNCTION for some time now, since I never really trusted the system.