|
@@ -200,7 +200,7 @@ static int xen_hvm_console_init(void)
|
|
{
|
|
{
|
|
int r;
|
|
int r;
|
|
uint64_t v = 0;
|
|
uint64_t v = 0;
|
|
- unsigned long mfn;
|
|
|
|
|
|
+ unsigned long gfn;
|
|
struct xencons_info *info;
|
|
struct xencons_info *info;
|
|
|
|
|
|
if (!xen_hvm_domain())
|
|
if (!xen_hvm_domain())
|
|
@@ -217,7 +217,7 @@ static int xen_hvm_console_init(void)
|
|
}
|
|
}
|
|
/*
|
|
/*
|
|
* If the toolstack (or the hypervisor) hasn't set these values, the
|
|
* If the toolstack (or the hypervisor) hasn't set these values, the
|
|
- * default value is 0. Even though mfn = 0 and evtchn = 0 are
|
|
|
|
|
|
+ * default value is 0. Even though gfn = 0 and evtchn = 0 are
|
|
* theoretically correct values, in practice they never are and they
|
|
* theoretically correct values, in practice they never are and they
|
|
* mean that a legacy toolstack hasn't initialized the pv console correctly.
|
|
* mean that a legacy toolstack hasn't initialized the pv console correctly.
|
|
*/
|
|
*/
|
|
@@ -229,8 +229,8 @@ static int xen_hvm_console_init(void)
|
|
r = hvm_get_parameter(HVM_PARAM_CONSOLE_PFN, &v);
|
|
r = hvm_get_parameter(HVM_PARAM_CONSOLE_PFN, &v);
|
|
if (r < 0 || v == 0)
|
|
if (r < 0 || v == 0)
|
|
goto err;
|
|
goto err;
|
|
- mfn = v;
|
|
|
|
- info->intf = xen_remap(mfn << PAGE_SHIFT, PAGE_SIZE);
|
|
|
|
|
|
+ gfn = v;
|
|
|
|
+ info->intf = xen_remap(gfn << PAGE_SHIFT, PAGE_SIZE);
|
|
if (info->intf == NULL)
|
|
if (info->intf == NULL)
|
|
goto err;
|
|
goto err;
|
|
info->vtermno = HVC_COOKIE;
|
|
info->vtermno = HVC_COOKIE;
|
|
@@ -375,7 +375,6 @@ static int xencons_connect_backend(struct xenbus_device *dev,
|
|
int ret, evtchn, devid, ref, irq;
|
|
int ret, evtchn, devid, ref, irq;
|
|
struct xenbus_transaction xbt;
|
|
struct xenbus_transaction xbt;
|
|
grant_ref_t gref_head;
|
|
grant_ref_t gref_head;
|
|
- unsigned long mfn;
|
|
|
|
|
|
|
|
ret = xenbus_alloc_evtchn(dev, &evtchn);
|
|
ret = xenbus_alloc_evtchn(dev, &evtchn);
|
|
if (ret)
|
|
if (ret)
|
|
@@ -390,10 +389,6 @@ static int xencons_connect_backend(struct xenbus_device *dev,
|
|
irq, &domU_hvc_ops, 256);
|
|
irq, &domU_hvc_ops, 256);
|
|
if (IS_ERR(info->hvc))
|
|
if (IS_ERR(info->hvc))
|
|
return PTR_ERR(info->hvc);
|
|
return PTR_ERR(info->hvc);
|
|
- if (xen_pv_domain())
|
|
|
|
- mfn = virt_to_gfn(info->intf);
|
|
|
|
- else
|
|
|
|
- mfn = __pa(info->intf) >> PAGE_SHIFT;
|
|
|
|
ret = gnttab_alloc_grant_references(1, &gref_head);
|
|
ret = gnttab_alloc_grant_references(1, &gref_head);
|
|
if (ret < 0)
|
|
if (ret < 0)
|
|
return ret;
|
|
return ret;
|
|
@@ -402,7 +397,7 @@ static int xencons_connect_backend(struct xenbus_device *dev,
|
|
if (ref < 0)
|
|
if (ref < 0)
|
|
return ref;
|
|
return ref;
|
|
gnttab_grant_foreign_access_ref(ref, info->xbdev->otherend_id,
|
|
gnttab_grant_foreign_access_ref(ref, info->xbdev->otherend_id,
|
|
- mfn, 0);
|
|
|
|
|
|
+ virt_to_gfn(info->intf), 0);
|
|
|
|
|
|
again:
|
|
again:
|
|
ret = xenbus_transaction_start(&xbt);
|
|
ret = xenbus_transaction_start(&xbt);
|