Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 3 Apr 2012 09:33:56 -0400
From:      vasanth rao naik sabavat <vasanth.raonaik@gmail.com>
To:        freebsd-hackers@freebsd.org
Subject:   question about amd64 pagetable page allocation.
Message-ID:  <CAAuizBhUuWvbYjZewO5LgHPuGfi37mW0sJFAKs-YN-G1ZbNAUQ@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
Hi,

I am trying to understand the page table page allocation for a process in
FBSD6.1. I see that the page table pages are allocated by vm_page_alloc().
I believe the virtual address for this allocated page can be derived by
PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m)), however when I compare this address with
the virtual address accessed in pmap_remove_pages() they are not the same.

The virtual address of a *PTE in pmap_remove_pages() is something like
*0xffff800000643200
*
However, the virtual address of the page allocated by vm_page_alloc() is  *
0xffffff033c6a0000

*I would also like to understand the importance of loc_PTmap, I believe the
pmap_remove_pages() is derving the page table page addresses from loc_PTmap?
(kgdb) p loc_PTmap
Cannot access memory at address 0xffff800000000000

How do we relate the loc_PTmap to the page table pages allocated by
vm_page_alloc() in _pmap_allocpte().

Thanks,
Vasanth



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAAuizBhUuWvbYjZewO5LgHPuGfi37mW0sJFAKs-YN-G1ZbNAUQ>