|
@@ -282,18 +282,10 @@ static int __init xen_guest_init(void)
|
|
{
|
|
{
|
|
struct xen_add_to_physmap xatp;
|
|
struct xen_add_to_physmap xatp;
|
|
struct shared_info *shared_info_page = NULL;
|
|
struct shared_info *shared_info_page = NULL;
|
|
- struct resource res;
|
|
|
|
- phys_addr_t grant_frames;
|
|
|
|
|
|
|
|
if (!xen_domain())
|
|
if (!xen_domain())
|
|
return 0;
|
|
return 0;
|
|
|
|
|
|
- if (of_address_to_resource(xen_node, GRANT_TABLE_PHYSADDR, &res)) {
|
|
|
|
- pr_err("Xen grant table base address not found\n");
|
|
|
|
- return -ENODEV;
|
|
|
|
- }
|
|
|
|
- grant_frames = res.start;
|
|
|
|
-
|
|
|
|
xen_events_irq = irq_of_parse_and_map(xen_node, 0);
|
|
xen_events_irq = irq_of_parse_and_map(xen_node, 0);
|
|
if (!xen_events_irq) {
|
|
if (!xen_events_irq) {
|
|
pr_err("Xen event channel interrupt not found\n");
|
|
pr_err("Xen event channel interrupt not found\n");
|
|
@@ -328,7 +320,10 @@ static int __init xen_guest_init(void)
|
|
if (xen_vcpu_info == NULL)
|
|
if (xen_vcpu_info == NULL)
|
|
return -ENOMEM;
|
|
return -ENOMEM;
|
|
|
|
|
|
- if (gnttab_setup_auto_xlat_frames(grant_frames)) {
|
|
|
|
|
|
+ xen_auto_xlat_grant_frames.count = gnttab_max_grant_frames();
|
|
|
|
+ if (xen_xlate_map_ballooned_pages(&xen_auto_xlat_grant_frames.pfn,
|
|
|
|
+ &xen_auto_xlat_grant_frames.vaddr,
|
|
|
|
+ xen_auto_xlat_grant_frames.count)) {
|
|
free_percpu(xen_vcpu_info);
|
|
free_percpu(xen_vcpu_info);
|
|
return -ENOMEM;
|
|
return -ENOMEM;
|
|
}
|
|
}
|