Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b9d934f2 authored by Boris Ostrovsky's avatar Boris Ostrovsky Committed by David Vrabel
Browse files

xen/console: Update console event channel on resume



After a resume the hypervisor/tools may change console event
channel number. We should re-query it.

Signed-off-by: default avatarBoris Ostrovsky <boris.ostrovsky@oracle.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: default avatarDavid Vrabel <david.vrabel@citrix.com>
parent 16f1cf3b
Loading
Loading
Loading
Loading
+17 −1
Original line number Diff line number Diff line
@@ -299,12 +299,28 @@ static int xen_initial_domain_console_init(void)
	return 0;
}

static void xen_console_update_evtchn(struct xencons_info *info)
{
	if (xen_hvm_domain()) {
		uint64_t v;
		int err;

		err = hvm_get_parameter(HVM_PARAM_CONSOLE_EVTCHN, &v);
		if (!err && v)
			info->evtchn = v;
	} else
		info->evtchn = xen_start_info->console.domU.evtchn;
}

void xen_console_resume(void)
{
	struct xencons_info *info = vtermno_to_xencons(HVC_COOKIE);
	if (info != NULL && info->irq)
	if (info != NULL && info->irq) {
		if (!xen_initial_domain())
			xen_console_update_evtchn(info);
		rebind_evtchn_irq(info->evtchn, info->irq);
	}
}

static void xencons_disconnect_backend(struct xencons_info *info)
{