Skip to content

Commit

Permalink
x86/xen: Add xen_no_vector_callback option to test PCI INTX delivery
Browse files Browse the repository at this point in the history
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: David Woodhouse <[email protected]>
Reviewed-by: Boris Ostrovsky <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Juergen Gross <[email protected]>
  • Loading branch information
dwmw2 authored and jgross1 committed Jan 13, 2021
1 parent 8f4fd86 commit b36b0fe
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 1 deletion.
4 changes: 4 additions & 0 deletions Documentation/admin-guide/kernel-parameters.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
11 changes: 10 additions & 1 deletion arch/x86/xen/enlighten_hvm.c
Original file line number Diff line number Diff line change
Expand Up @@ -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())
Expand All @@ -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();
Expand All @@ -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())
Expand Down

0 comments on commit b36b0fe

Please sign in to comment.