[ros-diffs] [tkreuzer] 53825: [NTOSKRNL] - Session space address layout is architecture specific, move its initialization into MiInitializeSesseionSpaceLayout() in architecture specific file - Use dedicated co...

tkreuzer at svn.reactos.org tkreuzer at svn.reactos.org
Sat Sep 24 08:52:26 UTC 2011


Author: tkreuzer
Date: Sat Sep 24 08:52:26 2011
New Revision: 53825

URL: http://svn.reactos.org/svn/reactos?rev=53825&view=rev
Log:
[NTOSKRNL]
- Session space address layout is architecture specific, move its initialization into MiInitializeSesseionSpaceLayout() in architecture specific file
- Use dedicated constants for setting MmSystemRangeStart, MmUserProbeAddress and MmHighestUserAddress isnetad of making assumptions.

Modified:
    trunk/reactos/ntoskrnl/include/internal/amd64/mm.h
    trunk/reactos/ntoskrnl/mm/ARM3/i386/init.c
    trunk/reactos/ntoskrnl/mm/ARM3/miarm.h
    trunk/reactos/ntoskrnl/mm/ARM3/mminit.c
    trunk/reactos/ntoskrnl/mm/amd64/init.c

Modified: trunk/reactos/ntoskrnl/include/internal/amd64/mm.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/include/internal/amd64/mm.h?rev=53825&r1=53824&r2=53825&view=diff
==============================================================================
--- trunk/reactos/ntoskrnl/include/internal/amd64/mm.h [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/include/internal/amd64/mm.h [iso-8859-1] Sat Sep 24 08:52:26 2011
@@ -11,6 +11,9 @@
 #define PAE_PAGE_MASK(x)	((x)&(~0xfffLL))
 
 /* Memory layout base addresses */
+#define MI_HIGHEST_USER_ADDRESS         (PVOID)0x000007FFFFFEFFFFULL
+#define MI_USER_PROBE_ADDRESS           (PVOID)0x000007FFFFFF0000ULL
+#define MI_DEFAULT_SYSTEM_RANGE_START   (PVOID)0xFFFF080000000000ULL
 #define HYPER_SPACE                            0xFFFFF70000000000ULL
 #define HYPER_SPACE_END                        0xFFFFF77FFFFFFFFFULL
 #define MI_SESSION_SPACE_MINIMUM        (PVOID)0xFFFFF90000000000ULL

Modified: trunk/reactos/ntoskrnl/mm/ARM3/i386/init.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/mm/ARM3/i386/init.c?rev=53825&r1=53824&r2=53825&view=diff
==============================================================================
--- trunk/reactos/ntoskrnl/mm/ARM3/i386/init.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/mm/ARM3/i386/init.c [iso-8859-1] Sat Sep 24 08:52:26 2011
@@ -29,9 +29,82 @@
 MMPTE PrototypePte = {{(MM_READWRITE << MM_PTE_SOFTWARE_PROTECTION_BITS) |
                       PTE_PROTOTYPE | (MI_PTE_LOOKUP_NEEDED << PAGE_SHIFT)}};
 
-extern PFN_NUMBER MiNumberOfFreePages;
 
 /* PRIVATE FUNCTIONS **********************************************************/
+
+VOID
+NTAPI
+INIT_FUNCTION
+MiInitializeSessionSpaceLayout()
+{
+    //
+    // Set the size of session view, pool, and image
+    //
+    MmSessionSize = MI_SESSION_SIZE;
+    MmSessionViewSize = MI_SESSION_VIEW_SIZE;
+    MmSessionPoolSize = MI_SESSION_POOL_SIZE;
+    MmSessionImageSize = MI_SESSION_IMAGE_SIZE;
+
+    //
+    // Set the size of system view
+    //
+    MmSystemViewSize = MI_SYSTEM_VIEW_SIZE;
+
+    //
+    // This is where it all ends
+    //
+    MiSessionImageEnd = (PVOID)PTE_BASE;
+
+    //
+    // This is where we will load Win32k.sys and the video driver
+    //
+    MiSessionImageStart = (PVOID)((ULONG_PTR)MiSessionImageEnd -
+                                  MmSessionImageSize);
+
+    //
+    // So the view starts right below the session working set (itself below
+    // the image area)
+    //
+    MiSessionViewStart = (PVOID)((ULONG_PTR)MiSessionImageEnd -
+                                 MmSessionImageSize -
+                                 MI_SESSION_WORKING_SET_SIZE -
+                                 MmSessionViewSize);
+
+    //
+    // Session pool follows
+    //
+    MiSessionPoolEnd = MiSessionViewStart;
+    MiSessionPoolStart = (PVOID)((ULONG_PTR)MiSessionPoolEnd -
+                                 MmSessionPoolSize);
+
+    //
+    // And it all begins here
+    //
+    MmSessionBase = MiSessionPoolStart;
+
+    //
+    // Sanity check that our math is correct
+    //
+    ASSERT((ULONG_PTR)MmSessionBase + MmSessionSize == PTE_BASE);
+
+    //
+    // Session space ends wherever image session space ends
+    //
+    MiSessionSpaceEnd = MiSessionImageEnd;
+
+    //
+    // System view space ends at session space, so now that we know where
+    // this is, we can compute the base address of system view space itself.
+    //
+    MiSystemViewStart = (PVOID)((ULONG_PTR)MmSessionBase -
+                                MmSystemViewSize);
+
+    /* Compute the PTE addresses for all the addresses we carved out */
+    MiSessionImagePteStart = MiAddressToPte(MiSessionImageStart);
+    MiSessionImagePteEnd = MiAddressToPte(MiSessionImageEnd);
+    MiSessionBasePte = MiAddressToPte(MmSessionBase);
+    MiSessionLastPte = MiAddressToPte(MiSessionSpaceEnd);
+}
 
 VOID
 NTAPI

Modified: trunk/reactos/ntoskrnl/mm/ARM3/miarm.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/mm/ARM3/miarm.h?rev=53825&r1=53824&r2=53825&view=diff
==============================================================================
--- trunk/reactos/ntoskrnl/mm/ARM3/miarm.h [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/mm/ARM3/miarm.h [iso-8859-1] Sat Sep 24 08:52:26 2011
@@ -28,6 +28,9 @@
 
 #define MI_SYSTEM_VIEW_SIZE                     (16 * _1MB)
 
+#define MI_HIGHEST_USER_ADDRESS                 (PVOID)0x7FFEFFFF
+#define MI_USER_PROBE_ADDRESS                   (PVOID)0x7FFF0000
+#define MI_DEFAULT_SYSTEM_RANGE_START           (PVOID)0x80000000
 #define MI_SYSTEM_CACHE_WS_START                (PVOID)0xC0C00000
 #define MI_PAGED_POOL_START                     (PVOID)0xE1000000
 #define MI_NONPAGED_POOL_END                    (PVOID)0xFFBE0000
@@ -526,6 +529,14 @@
 extern ULONG MmSystemPageColor;
 extern ULONG MmProcessColorSeed;
 extern PMMWSL MmWorkingSetList;
+extern PFN_NUMBER MiNumberOfFreePages;
+extern SIZE_T MmSessionViewSize;
+extern SIZE_T MmSessionPoolSize;
+extern SIZE_T MmSessionImageSize;
+extern PVOID MiSystemViewStart;
+extern PVOID MiSessionPoolEnd;     // 0xBE000000
+extern PVOID MiSessionPoolStart;   // 0xBD000000
+extern PVOID MiSessionViewStart;   // 0xBE000000
 
 //
 // Figures out the hardware bits for a PTE
@@ -910,6 +921,10 @@
     IN PLOADER_PARAMETER_BLOCK LoaderBlock
 );
 
+VOID
+NTAPI
+MiInitializeSessionSpaceLayout();
+
 NTSTATUS
 NTAPI
 MiInitMachineDependent(

Modified: trunk/reactos/ntoskrnl/mm/ARM3/mminit.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/mm/ARM3/mminit.c?rev=53825&r1=53824&r2=53825&view=diff
==============================================================================
--- trunk/reactos/ntoskrnl/mm/ARM3/mminit.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/mm/ARM3/mminit.c [iso-8859-1] Sat Sep 24 08:52:26 2011
@@ -410,7 +410,7 @@
         if (Descriptor->MemoryType != LoaderBad)
         {
             /* Count this in the total of pages */
-            MmNumberOfPhysicalPages += Descriptor->PageCount;
+            MmNumberOfPhysicalPages += (PFN_COUNT)Descriptor->PageCount;
         }
 
         /* Check if this is the new lowest page */
@@ -1898,9 +1898,9 @@
         //
         // Define the basic user vs. kernel address space separation
         //
-        MmSystemRangeStart = (PVOID)KSEG0_BASE;
-        MmUserProbeAddress = (ULONG_PTR)MmSystemRangeStart - 0x10000;
-        MmHighestUserAddress = (PVOID)(MmUserProbeAddress - 1);
+        MmSystemRangeStart = (PVOID)MI_DEFAULT_SYSTEM_RANGE_START;
+        MmUserProbeAddress = (ULONG_PTR)MI_HIGHEST_USER_ADDRESS;
+        MmHighestUserAddress = (PVOID)MI_HIGHEST_USER_ADDRESS;
 
         /* Highest PTE and PDE based on the addresses above */
         MiHighestUserPte = MiAddressToPte(MmHighestUserAddress);
@@ -1922,73 +1922,8 @@
         MmBootImageSize = (MmBootImageSize + PDE_MAPPED_VA - 1) & ~(PDE_MAPPED_VA - 1);
         ASSERT((MmBootImageSize % PDE_MAPPED_VA) == 0);
 
-        //
-        // Set the size of session view, pool, and image
-        //
-        MmSessionSize = MI_SESSION_SIZE;
-        MmSessionViewSize = MI_SESSION_VIEW_SIZE;
-        MmSessionPoolSize = MI_SESSION_POOL_SIZE;
-        MmSessionImageSize = MI_SESSION_IMAGE_SIZE;
-
-        //
-        // Set the size of system view
-        //
-        MmSystemViewSize = MI_SYSTEM_VIEW_SIZE;
-
-        //
-        // This is where it all ends
-        //
-        MiSessionImageEnd = (PVOID)PTE_BASE;
-
-        //
-        // This is where we will load Win32k.sys and the video driver
-        //
-        MiSessionImageStart = (PVOID)((ULONG_PTR)MiSessionImageEnd -
-                                      MmSessionImageSize);
-
-        //
-        // So the view starts right below the session working set (itself below
-        // the image area)
-        //
-        MiSessionViewStart = (PVOID)((ULONG_PTR)MiSessionImageEnd -
-                                     MmSessionImageSize -
-                                     MI_SESSION_WORKING_SET_SIZE -
-                                     MmSessionViewSize);
-
-        //
-        // Session pool follows
-        //
-        MiSessionPoolEnd = MiSessionViewStart;
-        MiSessionPoolStart = (PVOID)((ULONG_PTR)MiSessionPoolEnd -
-                                     MmSessionPoolSize);
-
-        //
-        // And it all begins here
-        //
-        MmSessionBase = MiSessionPoolStart;
-
-        //
-        // Sanity check that our math is correct
-        //
-        ASSERT((ULONG_PTR)MmSessionBase + MmSessionSize == PTE_BASE);
-
-        //
-        // Session space ends wherever image session space ends
-        //
-        MiSessionSpaceEnd = MiSessionImageEnd;
-
-        //
-        // System view space ends at session space, so now that we know where
-        // this is, we can compute the base address of system view space itself.
-        //
-        MiSystemViewStart = (PVOID)((ULONG_PTR)MmSessionBase -
-                                    MmSystemViewSize);
-
-        /* Compute the PTE addresses for all the addresses we carved out */
-        MiSessionImagePteStart = MiAddressToPte(MiSessionImageStart);
-        MiSessionImagePteEnd = MiAddressToPte(MiSessionImageEnd);
-        MiSessionBasePte = MiAddressToPte(MmSessionBase);
-        MiSessionLastPte = MiAddressToPte(MiSessionSpaceEnd);
+        /* Initialize session space address layout */
+        MiInitializeSessionSpaceLayout();
 
         /* Initialize the user mode image list */
         InitializeListHead(&MmLoadedUserImageList);

Modified: trunk/reactos/ntoskrnl/mm/amd64/init.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/mm/amd64/init.c?rev=53825&r1=53824&r2=53825&view=diff
==============================================================================
--- trunk/reactos/ntoskrnl/mm/amd64/init.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/mm/amd64/init.c [iso-8859-1] Sat Sep 24 08:52:26 2011
@@ -40,16 +40,16 @@
 
 /* Sizes */
 ///SIZE_T MmSessionSize = MI_SESSION_SIZE;
-SIZE_T MmSessionViewSize = MI_SESSION_VIEW_SIZE;
-SIZE_T MmSessionPoolSize = MI_SESSION_POOL_SIZE;
-SIZE_T MmSessionImageSize = MI_SESSION_IMAGE_SIZE;
-SIZE_T MmSystemViewSize = MI_SYSTEM_VIEW_SIZE;
+extern SIZE_T MmSessionViewSize;
+extern SIZE_T MmSessionPoolSize;
+extern SIZE_T MmSessionImageSize;
+extern SIZE_T MmSystemViewSize;
 SIZE_T MiNonPagedSystemSize;
 
 /* Address ranges */
-ULONG64 MmUserProbeAddress = 0x7FFFFFF0000ULL;
-PVOID MmHighestUserAddress = (PVOID)0x7FFFFFEFFFFULL;
-PVOID MmSystemRangeStart = (PVOID)0xFFFF080000000000ULL;
+//ULONG64 MmUserProbeAddress = 0x7FFFFFF0000ULL;
+//PVOID MmHighestUserAddress = (PVOID)0x7FFFFFEFFFFULL;
+//PVOID MmSystemRangeStart = (PVOID)0xFFFF080000000000ULL;
 PVOID MmSessionBase;                            // FFFFF90000000000 = MiSessionPoolStart
 PVOID MiSessionPoolStart;                       // FFFFF90000000000 = MiSessionPoolEnd - MmSessionPoolSize
 PVOID MiSessionPoolEnd;                         //                  = MiSessionViewStart
@@ -75,7 +75,6 @@
 
 PMEMORY_ALLOCATION_DESCRIPTOR MxFreeDescriptor;
 MEMORY_ALLOCATION_DESCRIPTOR MxOldFreeDescriptor;
-ULONG MiNumberDescriptors = 0;
 PFN_NUMBER MiSystemPages = 0;
 BOOLEAN MiIncludeType[LoaderMaximum];
 
@@ -88,90 +87,51 @@
 
 /* FUNCTIONS *****************************************************************/
 
+VOID
+NTAPI
+INIT_FUNCTION
+MiInitializeSessionSpaceLayout()
+{
+    MmSessionViewSize = MI_SESSION_VIEW_SIZE;
+    MmSessionPoolSize = MI_SESSION_POOL_SIZE;
+    MmSessionImageSize = MI_SESSION_IMAGE_SIZE;
+    MmSystemViewSize = MI_SYSTEM_VIEW_SIZE;
+
+    /* Set up session space */
+    MiSessionSpaceEnd = (PVOID)MI_SESSION_SPACE_END;
+
+    /* This is where we will load Win32k.sys and the video driver */
+    MiSessionImageEnd = MiSessionSpaceEnd;
+    MiSessionImageStart = (PCHAR)MiSessionImageEnd - MmSessionImageSize;
+
+    /* The view starts right below the session working set (itself below
+     * the image area) */
+    MiSessionViewEnd = MI_SESSION_VIEW_END;
+    MiSessionViewStart = (PCHAR)MiSessionViewEnd - MmSessionViewSize;
+    ASSERT(IS_PAGE_ALIGNED(MiSessionViewStart));
+
+    /* Session pool follows */
+    MiSessionPoolEnd = MiSessionViewStart;
+    MiSessionPoolStart = (PCHAR)MiSessionPoolEnd - MmSessionPoolSize;
+    ASSERT(IS_PAGE_ALIGNED(MiSessionPoolStart));
+
+    /* And it all begins here */
+    MmSessionBase = MiSessionPoolStart;
+
+    /* System view space ends at session space, so now that we know where
+     * this is, we can compute the base address of system view space itself. */
+    MiSystemViewStart = (PCHAR)MmSessionBase - MmSystemViewSize;
+    ASSERT(IS_PAGE_ALIGNED(MiSystemViewStart));
+
+    /* Sanity checks */
+    ASSERT(MiSessionViewEnd <= MiSessionImageStart);
+    ASSERT(MmSessionBase <= MiSessionPoolStart);
+}
+
 ULONG
 NoDbgPrint(const char *Format, ...)
 {
     return 0;
-}
-
-VOID
-NTAPI
-MiEvaluateMemoryDescriptors(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
-{
-    PMEMORY_ALLOCATION_DESCRIPTOR Descriptor;
-    PLIST_ENTRY ListEntry;
-    PFN_NUMBER LastPage;
-    ULONG i;
-
-    /* Get the size of the boot loader's image allocations */
-    MmBootImageSize = KeLoaderBlock->Extension->LoaderPagesSpanned * PAGE_SIZE;
-    MmBootImageSize = ROUND_UP(MmBootImageSize, 4 * 1024 * 1024);
-
-    /* Instantiate memory that we don't consider RAM/usable */
-    for (i = 0; i < LoaderMaximum; i++) MiIncludeType[i] = TRUE;
-    MiIncludeType[LoaderBad] = FALSE;
-    MiIncludeType[LoaderFirmwarePermanent] = FALSE;
-    MiIncludeType[LoaderSpecialMemory] = FALSE;
-    MiIncludeType[LoaderBBTMemory] = FALSE;
-
-    /* Loop the memory descriptors */
-    for (ListEntry = LoaderBlock->MemoryDescriptorListHead.Flink;
-         ListEntry != &LoaderBlock->MemoryDescriptorListHead;
-         ListEntry = ListEntry->Flink)
-    {
-        /* Get the memory descriptor */
-        Descriptor = CONTAINING_RECORD(ListEntry,
-                                       MEMORY_ALLOCATION_DESCRIPTOR,
-                                       ListEntry);
-
-        /* Count it */
-        MiNumberDescriptors++;
-
-        /* Skip pages that are not part of the PFN database */
-        if (!MiIncludeType[Descriptor->MemoryType])
-        {
-            continue;
-        }
-
-        /* Add this to the total of pages */
-        MmNumberOfPhysicalPages += (PFN_COUNT)Descriptor->PageCount;
-
-        /* Check if this is the new lowest page */
-        if (Descriptor->BasePage < MmLowestPhysicalPage)
-        {
-            /* Update the lowest page */
-            MmLowestPhysicalPage = Descriptor->BasePage;
-        }
-
-        /* Check if this is the new highest page */
-        LastPage = Descriptor->BasePage + Descriptor->PageCount - 1;
-        if (LastPage > MmHighestPhysicalPage)
-        {
-            /* Update the highest page */
-            MmHighestPhysicalPage = LastPage;
-        }
-
-        /* Check if this is currently free memory */
-        if ((Descriptor->MemoryType == LoaderFree) ||
-            (Descriptor->MemoryType == LoaderLoadedProgram) ||
-            (Descriptor->MemoryType == LoaderFirmwareTemporary) ||
-            (Descriptor->MemoryType == LoaderOsloaderStack))
-        {
-            /* Check if this is the largest memory descriptor */
-            if (Descriptor->PageCount > MxFreePageCount)
-            {
-                /* For now, it is */
-                MxFreeDescriptor = Descriptor;
-                MxFreePageBase = Descriptor->BasePage;
-                MxFreePageCount = Descriptor->PageCount;
-            }
-        }
-        else
-        {
-            /* Add it to the amount of system used pages */
-            MiSystemPages += Descriptor->PageCount;
-        }
-    }
 }
 
 PFN_NUMBER
@@ -342,41 +302,6 @@
 
 
 VOID
-NTAPI
-MiInitializeSessionSpace(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
-{
-    /* Set up session space */
-    MiSessionSpaceEnd = (PVOID)MI_SESSION_SPACE_END;
-
-    /* This is where we will load Win32k.sys and the video driver */
-    MiSessionImageEnd = MiSessionSpaceEnd;
-    MiSessionImageStart = (PCHAR)MiSessionImageEnd - MmSessionImageSize;
-
-    /* The view starts right below the session working set (itself below
-     * the image area) */
-    MiSessionViewEnd = MI_SESSION_VIEW_END;
-    MiSessionViewStart = (PCHAR)MiSessionViewEnd - MmSessionViewSize;
-    ASSERT(IS_PAGE_ALIGNED(MiSessionViewStart));
-
-    /* Session pool follows */
-    MiSessionPoolEnd = MiSessionViewStart;
-    MiSessionPoolStart = (PCHAR)MiSessionPoolEnd - MmSessionPoolSize;
-    ASSERT(IS_PAGE_ALIGNED(MiSessionPoolStart));
-
-    /* And it all begins here */
-    MmSessionBase = MiSessionPoolStart;
-
-    /* System view space ends at session space, so now that we know where
-     * this is, we can compute the base address of system view space itself. */
-    MiSystemViewStart = (PCHAR)MmSessionBase - MmSystemViewSize;
-    ASSERT(IS_PAGE_ALIGNED(MiSystemViewStart));
-
-    /* Sanity checks */
-    ASSERT(MiSessionViewEnd <= MiSessionImageStart);
-    ASSERT(MmSessionBase <= MiSessionPoolStart);
-}
-
-VOID
 MiInitializePageTable()
 {
     ULONG64 PxePhysicalAddress;
@@ -603,92 +528,6 @@
 
     /* Set the counter to maximum */
     MiFirstReservedZeroingPte->u.Hard.PageFrameNumber = MI_ZERO_PTES - 1;
-}
-
-VOID
-NTAPI
-MiBuildPhysicalMemoryBlock(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
-{
-    PPHYSICAL_MEMORY_DESCRIPTOR Buffer;
-    PMEMORY_ALLOCATION_DESCRIPTOR Descriptor;
-    PLIST_ENTRY ListEntry;
-    PFN_NUMBER NextPage = -1;
-    PULONG Bitmap;
-    ULONG Runs = 0;
-    ULONG_PTR Size;
-
-    /* Calculate size for the PFN bitmap */
-    Size = ROUND_UP(MmHighestPhysicalPage + 1, sizeof(ULONG));
-
-    /* Allocate the PFN bitmap */
-    Bitmap = ExAllocatePoolWithTag(NonPagedPool, Size, '  mM');
-
-    /* Allocate enough memory for the physical memory block */
-    Buffer = ExAllocatePoolWithTag(NonPagedPool,
-                                   sizeof(PHYSICAL_MEMORY_DESCRIPTOR) +
-                                   sizeof(PHYSICAL_MEMORY_RUN) *
-                                   (MiNumberDescriptors - 1),
-                                   'lMmM');
-    if (!Bitmap || !Buffer)
-    {
-        /* This is critical */
-        KeBugCheckEx(INSTALL_MORE_MEMORY,
-                     MmNumberOfPhysicalPages,
-                     MmLowestPhysicalPage,
-                     MmHighestPhysicalPage,
-                     0x101);
-    }
-
-    /* Initialize the bitmap and clear all bits */
-    RtlInitializeBitMap(&MiPfnBitMap,
-                        Bitmap,
-                        (ULONG)MmHighestPhysicalPage + 1);
-    RtlClearAllBits(&MiPfnBitMap);
-
-    /* Loop the memory descriptors */
-    for (ListEntry = LoaderBlock->MemoryDescriptorListHead.Flink;
-         ListEntry != &LoaderBlock->MemoryDescriptorListHead;
-         ListEntry = ListEntry->Flink)
-    {
-        /* Get the memory descriptor */
-        Descriptor = CONTAINING_RECORD(ListEntry,
-                                       MEMORY_ALLOCATION_DESCRIPTOR,
-                                       ListEntry);
-
-        /* Skip pages that are not part of the PFN database */
-        if (!MiIncludeType[Descriptor->MemoryType])
-        {
-            continue;
-        }
-
-        /* Does the memory block begin where the last ended? */
-        if (Descriptor->BasePage == NextPage)
-        {
-            /* Add it to the current run */
-            Buffer->Run[Runs - 1].PageCount += Descriptor->PageCount;
-        }
-        else
-        {
-            /* Create a new run */
-            Runs++;
-            Buffer->Run[Runs - 1].BasePage = Descriptor->BasePage;
-            Buffer->Run[Runs - 1].PageCount = Descriptor->PageCount;
-        }
-
-        /* Set the bits in the PFN bitmap */
-        RtlSetBits(&MiPfnBitMap,
-                   (ULONG)Descriptor->BasePage,
-                   (ULONG)Descriptor->PageCount);
-
-        /* Set the next page */
-        NextPage = Descriptor->BasePage + Descriptor->PageCount;
-    }
-
-    // FIXME: allocate a buffer of better size
-
-    Buffer->NumberOfRuns = Runs;
-    Buffer->NumberOfPages = MmNumberOfPhysicalPages;
-    MmPhysicalMemoryBlock = Buffer;
 }
 
 VOID
@@ -824,16 +663,13 @@
         MmBootImageSize = ROUND_UP(MmBootImageSize, PAGE_SIZE);
 
         /* Parse memory descriptors, find free pages */
-        MiEvaluateMemoryDescriptors(LoaderBlock);
+        //MiEvaluateMemoryDescriptors(LoaderBlock);
 
         /* Start PFN database at hardcoded address */
         MmPfnDatabase = MI_PFN_DATABASE;
 
         /* Prepare PFN database mappings */
         MiPreparePfnDatabse(LoaderBlock);
-
-        /* Initialize the session space */
-        MiInitializeSessionSpace(LoaderBlock);
 
         /* Initialize some mappings */
         MiInitializePageTable();
@@ -859,7 +695,7 @@
         MiBuildSystemPteSpace();
 
         /* Build the physical memory block */
-        MiBuildPhysicalMemoryBlock(LoaderBlock);
+        //MiBuildPhysicalMemoryBlock(LoaderBlock);
 
         /* Size up paged pool and build the shadow system page directory */
         //MiBuildPagedPool();




More information about the Ros-diffs mailing list