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
|