4Meg Virtual Pages @ 0x80000000

Using Softice and the page cmd: It appears (on a 64Meg RAM system) that the
virtual address range 0x80000000 - 0x9FFFFFFF is mapped using 4M pages to
physical addresses 0x00000000 - 0x1FFFFFFF, and it appears that these pages
are present. The question is: what does this mean/imply??? What am I
missing or not understanding?

Also in a user mode application, if I use the page cmd again to find a
physical address for the user mode address and then use the phys cmd to
find all virtual addresses that point to that physical page, it points at 2
pages, 1 the user mode virtual address, and the other into the 0x80000000
region. Is a PPTE used in this case?

Note: the system is running WINNT 4.0 service pack 3.


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

> Using Softice and the page cmd: It appears (on a 64Meg RAM system) that
the

virtual address range 0x80000000 - 0x9FFFFFFF is mapped using 4M pages to
physical addresses 0x00000000 - 0x1FFFFFFF, and it appears that these
pages
are present. The question is: what does this mean/imply???

Yes. Under most system configurations, first 512MB physical are mapped as
0x80000000-0x9fffffff virtual, and there are no ways of altering this.

This thing is called “kseg0”.

One of the purposes seems to be - to simplify MmMapLockedPages. If you have
a single-page MDL and the physical address is below 512MB, then just add
0x80000000 to the physical address to get the virtual address without
touching the system PTEs.
Unmap is a no-op for such a MDL.

Linux uses the similar thing to optimize kmap() and kunmap().

Max


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com