|
|
|
|
|
|
|
|
|
|
xen-devel
Re: [Xen-devel] Page table and memory management
Hi,
I think the flow graph in the previous email was too big and might not
display properly:
do_mmu_update
|
|
/---------------------------------\
| |
| |
\/ \/
mod_l2_entry do_extended_command
| |
| |
\/ |
get_page_from_l2e |
| |
| |
\---------------------------------/
|
|
\/
get_page_and_type_from_pagenr
|
|
\/
get_page_type
Richard
On Thu, 3 Mar 2005 17:00:17 -0500, Richard <judicator3@xxxxxxxxx> wrote:
> Hi Keir,
>
> I am still having trouble to edit the page table entries with the
> mmu_update hypercall.
> I am actually updating the mini-os. The mem management in mini-os is
> pretty outdated. For example, it assumes that the initial page tables
> are placed at the top of available memory and hence does not count
> properly the total amount of pages that have been allocated to the
> domain. I am extending the initial PGD and PT given to mini-os at boot
> time to map the available memory that I can use.
>
> I tried to first pin a level 1 page frame before inserting it as an
> entry in the level 2 PGD.
> Whether I pin a level1 page frame first or I start using it directly
> as a page table, it does not matter the mmu_update hypercall still
> fails.
>
> I traced through the XEN code, in the file arch/x86/memory.c. Whether
> excuting a MMU_NORMAL_PT_UPDATE or a MMU_EXTENDED_COMMAND type of
> command, the function do_mmu_update() eventually calls the helper
> function get_page_and_type_from_pagenr() which in turns call the
> function get_page_type(). Below I drew a call graph.
>
> do_mmu_update
> |
> |
>
> /------------------------------------------------------------------------------\
> |
> |
> \/
> \/
> mod_l2_entry
> do_extended_command
> |
> |
> \/
> |
> get_page_from_l2e
> |
> |
> |
> |
> |
>
> \------------------------------------------------------------------------------/
> |
> \/
> get_page_and_type_from_pagenr
> |
> \/
> get_page_type
>
> The get_page_type() checks the upperbits of the 'typeinfo' field of
> the page frame to make sure it is of type 'PGT_l1_page_table'.
> get_page_type() also does another check to verify that the 'typeinfo'
> field also contains the 10 upper bits of the virtual address that this
> page frame is suppose to eventually map to.
>
> > Xen will automatically infer the type when you attach an L1 to an
> > existing L2. Xen will infer the L2 type when the L2 gets used as
> > current pagetable base.
> So I do not see where XEN is automatically inferring the L1 type when
> I am inserting for the 1st time the L1 page frame into the L2. In
> order to use a page frame as an L1 page table, I have to find a way to
> tell XEN to update the corresponding typeinfo field in order to pass
> the verification in get_page_type().
>
> 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
|
|
|
|
|