static int __init xen_pvh_gnttab_setup(void) { if (!xen_pvh_domain()) return -ENODEV; return xlated_setup_gnttab_pages(); }
static int gnttab_setup(void) { int rc; unsigned int max_nr_gframes; max_nr_gframes = gnttab_max_grant_frames(); if (max_nr_gframes < nr_grant_frames) return -ENOSYS; if (xen_pv_domain() && xen_feature(XENFEAT_auto_translated_physmap) && !gnttab_shared.addr) { rc = xlated_setup_gnttab_pages((unsigned long)max_nr_gframes, &gnttab_shared.addr); if (rc != 0) return rc; } if (xen_pv_domain()) return gnttab_map(0, nr_grant_frames - 1); if (gnttab_shared.addr == NULL) { gnttab_shared.addr = xen_remap(xen_hvm_resume_frames, PAGE_SIZE * max_nr_gframes); if (gnttab_shared.addr == NULL) { printk(KERN_WARNING "Failed to ioremap gnttab share frames!"); return -ENOMEM; } } gnttab_map(0, nr_grant_frames - 1); return 0; }