x86/xen: Add xen_no_vector_callback option to test PCI INTX delivery
[ Upstream commit b36b0fe96af13460278bf9b173beced1bd15f85d ] 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 <dwmw@amazon.co.uk> Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com> Link: https://lore.kernel.org/r/20210106153958.584169-4-dwmw2@infradead.org Signed-off-by: Juergen Gross <jgross@suse.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
a09d4e7acd
commit
5fa6987258
@ -5452,6 +5452,10 @@
|
|||||||
This option is obsoleted by the "nopv" option, which
|
This option is obsoleted by the "nopv" option, which
|
||||||
has equivalent effect for XEN platform.
|
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]
|
xen_scrub_pages= [XEN]
|
||||||
Boolean option to control scrubbing pages before giving them back
|
Boolean option to control scrubbing pages before giving them back
|
||||||
to Xen, for use by other domains. Can be also changed at runtime
|
to Xen, for use by other domains. Can be also changed at runtime
|
||||||
|
@ -175,6 +175,8 @@ static int xen_cpu_dead_hvm(unsigned int cpu)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool no_vector_callback __initdata;
|
||||||
|
|
||||||
static void __init xen_hvm_guest_init(void)
|
static void __init xen_hvm_guest_init(void)
|
||||||
{
|
{
|
||||||
if (xen_pv_domain())
|
if (xen_pv_domain())
|
||||||
@ -194,7 +196,7 @@ static void __init xen_hvm_guest_init(void)
|
|||||||
|
|
||||||
xen_panic_handler_init();
|
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_have_vector_callback = 1;
|
||||||
|
|
||||||
xen_hvm_smp_init();
|
xen_hvm_smp_init();
|
||||||
@ -220,6 +222,13 @@ static __init int xen_parse_nopv(char *arg)
|
|||||||
}
|
}
|
||||||
early_param("xen_nopv", xen_parse_nopv);
|
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)
|
bool __init xen_hvm_need_lapic(void)
|
||||||
{
|
{
|
||||||
if (xen_pv_domain())
|
if (xen_pv_domain())
|
||||||
|
Loading…
Reference in New Issue
Block a user