|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] Where and How the P2M table and M2P table create?
hi
this may help you。。。
hvm_vcpu_initialise
- .vcpu_initialise = vmx_vcpu_initialise,
- vmx_create_vmcs
- construct_vmcs
- if ( paging_mode_hap(d) )
{
struct p2m_domain *p2m = p2m_get_hostp2m(d);
struct ept_data *ept = &p2m->ept;
ept->asr = pagetable_get_pfn(p2m_get_pagetable(p2m));
__vmwrite(EPT_POINTER, ept_get_eptp(ept));
}
main --> main_create --> create_domain --> libxl_domain_create_new
--> do_domain_create --> initiate_domain_create --> libxl__bootloader_run
--> libxl__device_disk_local_initiate_detach --> local_device_detach_cb
--> bootloader_local_detached_cb --> domcreate_bootloader_done -->
libxl__domain_build
--> libxl__build_hvm --> libxl__build_dom --> xc_dom_boot_mem_init -->
meminit_hvm
--> xc_domain_populate_physmap
--> err = do_memory_op(xch, XENMEM_populate_physmap, &reservation);
- do_memory_op(xch, XENMEM_populate_physmap, &reservation) (memory.c)
- populate_physmap
- is_domain_direct_mapped
- mfn = gpfn
- put_page
- else
- page = alloc_domheap_pages(d, a->extent_order, a->memflags);
- mfn = page_to_mfn(page);
- guest_physmap_add_page(d, gpfn, mfn, a->extent_order);
- guest_physmap_add_entry(d, gfn, mfn, page_order, p2m_ram_rw)
/* First, remove m->p mappings for existing p->m mappings */
- for ( i = 0; i < (1UL << page_order); i++ )
- omfn = p2m->get_entry(p2m, gfn + i, &ot, &a, 0, NULL, NULL);
- mfn = _mfn(ept_entry->mfn)
- set_gpfn_from_mfn
- _set_gpfn_from_mfn(mfn, pfn)
- machine_to_phys_mapping[(mfn)] = (entry)
/* Then, look for m->p mappings for this range and deal with them */
/* Now, actually do the two-way mapping */
- rc = p2m_set_entry(p2m, gfn, _mfn(mfn), page_order, t,
p2m->default_access);
- set_gpfn_from_mfn(mfn+i, gfn+i);
>Hi,alls,
>
>As we know,in xen ,when create shadow page table and EPT page table,we need
>the p2m and m2p.I want to know when are the p2m been created.Was it created at
>the time of the creation of the domainU?Or at the beginning is a empty table
>and in the subsequent gradually established?
>
>And how was it been created?
>
>Thanks!
>
>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |