Commit b36b0fe9 authored by David Woodhouse's avatar David Woodhouse Committed by Juergen Gross
Browse files

x86/xen: Add xen_no_vector_callback option to test PCI INTX delivery



It's useful to be able to test non-vector event channel delivery, to make
sure Linux will work properly on older Xen which doesn't have it.

It's also useful for those working on Xen and Xen-compatible hypervisors,
because there are guest kernels still in active use which use PCI INTX
even when vector delivery is available.

Signed-off-by: default avatarDavid Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: default avatarBoris Ostrovsky <boris.ostrovsky@oracle.com>
Link: https://lore.kernel.org/r/20210106153958.584169-4-dwmw2@infradead.org


Signed-off-by: default avatarJuergen Gross <jgross@suse.com>
parent 8f4fd86a
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -5964,6 +5964,10 @@
			This option is obsoleted by the "nopv" option, which
			has equivalent effect for XEN platform.

	xen_no_vector_callback
			[KNL,X86,XEN] Disable the vector callback for Xen
			event channel interrupts.

	xen_scrub_pages=	[XEN]
			Boolean option to control scrubbing pages before giving them back
			to Xen, for use by other domains. Can be also changed at runtime
+10 −1
Original line number Diff line number Diff line
@@ -188,6 +188,8 @@ static int xen_cpu_dead_hvm(unsigned int cpu)
       return 0;
}

static bool no_vector_callback __initdata;

static void __init xen_hvm_guest_init(void)
{
	if (xen_pv_domain())
@@ -207,7 +209,7 @@ static void __init xen_hvm_guest_init(void)

	xen_panic_handler_init();

	if (xen_feature(XENFEAT_hvm_callback_vector))
	if (!no_vector_callback && xen_feature(XENFEAT_hvm_callback_vector))
		xen_have_vector_callback = 1;

	xen_hvm_smp_init();
@@ -233,6 +235,13 @@ static __init int xen_parse_nopv(char *arg)
}
early_param("xen_nopv", xen_parse_nopv);

static __init int xen_parse_no_vector_callback(char *arg)
{
	no_vector_callback = true;
	return 0;
}
early_param("xen_no_vector_callback", xen_parse_no_vector_callback);

bool __init xen_hvm_need_lapic(void)
{
	if (xen_pv_domain())