Gregor Anich schrieb:
Hi!
I have changed the memory manager to allow mapping of sections from \Device\PhysicalMemory which are outside of RAM - this gets NVIDIA OpenGL working. I hope my changes are correct (according to Hartmuts suggestions in this mail: http://reactos.com:8080/archives/public/ros-kernel/2004-August/004444.html)
I changed MmProbeAndLockPages to set MDL_IO_SPACE in the MdlFlags of the Mdl if one of the Pfns described in the MDL is outside of the RAM (>= MmPageArraySize) which is then used in MmMapLockedPagesSpecifyCache to decide wether to call MmCreateVirtualMapping or MmCreateVirtualMappingUnsafe (in order to prevent bugchecks in mm/freelist.c when Pfns are checked against MmPageArraySize)
- blight
Ros-dev mailing list Ros-dev@reactos.com http://reactos.com:8080/mailman/listinfo/ros-dev
Hi,
I think that your patch isn't complete.
- Mapping of physical memory for \Device\PhysicalMemory in section.c: We should use MmCreateVirtualMappingForKernel instead of MmCreateVirtualMappingUnsafe because MmCreateVirtualMappingUnsafe marks the pages as mapped in the pfn array. If MmCreateVirtualMappingForKernel is used for mapping the pages, the delete functions like MmUnmapViewOfxxx and MmFreeMemoryArea must also use other functions.
- Lock the pages with MmProbeAndLockPages in mdl.c: MmProbeAndLockPages may crash ros in some situations. On error there is no check which unmap/unlock function must be use. Possible we must check the type of the memory area for eache address and page.
- Hartmut