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(a)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