Esempio n. 1
0
static int __init xen_pvh_gnttab_setup(void)
{
	if (!xen_pvh_domain())
		return -ENODEV;

	return xlated_setup_gnttab_pages();
}
Esempio n. 2
0
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;
}