[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] Page table and memory management


  • To: xen-devel@xxxxxxxxxxxxxxxxxxxxx
  • From: Richard <judicator3@xxxxxxxxx>
  • Date: Wed, 2 Mar 2005 22:07:39 -0500
  • Delivery-date: Thu, 03 Mar 2005 05:44:23 +0000
  • Domainkey-signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:reply-to:to:subject:mime-version:content-type:content-transfer-encoding; b=IN43Mc6Wos3LSIQHw3tTQqLvlknpm5KDwjinoK+kfWuRIKbgUd8kCexJ3ZCX/xJFgV9uIAEP5We/RG/Sz7hC8M6KTaj6wXi0sZrhHN0q/eC6FIz0X7MhwnDvlt+h2nBAExYp0FIGELWtvDSUyD1HLnW0ZX2qfL7OCanBZ5KUaxY=
  • List-id: List for Xen developers <xen-devel.lists.sourceforge.net>

Hello,

I am having some problems to update the page table entries of my
domain with the hypervisor call do_mmu_update().

With 2 level paging XEN refers to the page global directory (PGD) as
level2 and page tables (PT) as level1. I am taking a page frame that
my domain owns, I am going to use that page frame as a page table
(level1 PT) and I am adding the 'address' of that page frame as an
entry of my page global directory (level2 PGD). So my request
'mmu_update_t' to the hypercall do_mmu_update() looks like this.

mmu_update_t.ptr = machine address of PGD entry that I want to update
mmu_update_t.val = machine frame number of PT with appropriate flags

do_mmu_update() and its helper functions in xen/arch/x86/memory.c do
many checks. One of the checks is to verify the flags in '(struct
pfn_info).u.inuse.type_info'. The upper bits of 'type_info' contain
the type of the page frame: PGT_none, PGT_l1_page_table,
PGT_l2_page_table etc ...

In my case, do_mmu_update() verifies that the page frame that I am
going to use as a page table is actually of type PGT_l1_page_table.
Therefore, I cannot just take any random page frame that my domain
owns and use it as page table.

How do I create a new page table ? 
How do I register a page frame that I own with XEN so that I can use
it as a page table ?

I am trying to see how XenoLinux is doing its page table allocation.
>From what I can see, function pte_alloc_map() in mm/memory.c is not
doing anything special. It is just getting a free page frame and using
the function pmd_populate() to use that page frame as a page table.
Function pmd_populate() uses macro set_pmd() that expands to function
xen_l2_entry_update() to update the (PGD) level2 page tables.

Thanks
Richard


-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.