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

[Xen-devel] Some tables used when shadowable

Hi, I find there are several kinds of tables are used when shadowsable. They
are defined as follow:
 struct arch_vcpu
    pagetable_t guest_table;            /* (MFN) guest notion of cr3 */
    pagetable_t shadow_table[4];        /* (MFN) shadow(s) of guest */
    pagetable_t monitor_table;          /* (MFN) hypervisor PT (for HVM) */
    unsigned long cr3;                  /* (MA) value to install in HW CR3

I am confused by these tables. My understanding as follow:

1.      guest_table
Does guest_table point to MFN of page tables which constructed used by guest
where it convert from? guest_cr[3] or hw_cr[3]?
What is it used? Does it used for VMM when emulating? such as: when guest
generate page fault, it will trigger VM exit, 
then VMM read GUEST_CR3 and convert GUEST_CR3 to MFN ïthen store the MFN in
guest_table, now because the MFN is the guest physical
address ,so VMM will convert it to the machine physical address via P2M
table? right?

2. shadow_table
hw_cr[3] and GUEST_CR3  both point to shadow_table, right?

3. monitor_table
I am not sure the use of monitor_table.
Does it used for VMM access guest's address space?
And I find HOST_CR3 point to monitor tableïwhy HOST_CR3 pointing it?
I think HOST_CR3 should point to VMM's page table when VM exit, then VMM can
access address space itself. But why HOST_CR3 don't point to the page table

Anyone help me? 

View this message in context: 
Sent from the Xen - Dev mailing list archive at Nabble.com.

Xen-devel mailing list



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