I have some code below that shows the first steps of creating a pfn  
to mfn lookup table in dom0.  This code is based on similar code in  
the libxc library.  The code works on paravirtualized domains, but  
not HVM domains.
{
        ...
        live_shinfo = xa_mmap_mfn(
            instance, PROT_READ, instance->info.shared_info_frame);
        if (live_shinfo == NULL){
            goto error_exit;
        }
	/* live_shinfo->arch.pfn_to_mfn_frame_list_list == NULL here for HVM  
domains */
        live_pfn_to_mfn_frame_list_list = xa_mmap_mfn(
            instance, PROT_READ, live_shinfo- 
>arch.pfn_to_mfn_frame_list_list);
        if (live_pfn_to_mfn_frame_list_list == NULL){
            goto error_exit;
        }
        ...
}
void *xa_mmap_mfn (xa_instance_t *instance, int prot, unsigned long mfn)
{
    return xc_map_foreign_range(
        instance->xc_handle, instance->domain_id, XC_PAGE_SIZE,  
prot, mfn);
}
 When I run this code to setup the pfn to mfn mapping for an HVM  
domain, the value of live_shinfo->arch.pfn_to_mfn_frame_list_list is  
NULL where shown by the comment above.  However, for a  
paravirtualized domain, everything works as expected (i.e., the value  
is not NULL and is used to successfully build the lookup table).
 Could someone help me understand why this difference exists and what  
I need to do to build the analogous lookup table for an HVM domain?
Thanks,
bryan
-
Bryan D. Payne
Graduate Student, Computer Science
Georgia Tech Information Security Center
http://www.bryanpayne.org
 
 
smime.p7s 
Description: S/MIME cryptographic signature 
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
 
 |