[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen master] x86/Kconfig: add option for default x2APIC destination mode
commit eb40ae41b658e0421e4275c14dd18c7377b0752a Author: Roger Pau Monné <roger.pau@xxxxxxxxxx> AuthorDate: Wed Jul 6 13:06:57 2022 +0200 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Wed Jul 6 13:06:57 2022 +0200 x86/Kconfig: add option for default x2APIC destination mode Allow setting the default x2APIC destination mode from Kconfig to Physical. Note the default destination mode is still Logical (Cluster) mode. Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx> Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx> --- xen/arch/x86/Kconfig | 18 ++++++++++++++++++ xen/arch/x86/genapic/x2apic.c | 6 ++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/xen/arch/x86/Kconfig b/xen/arch/x86/Kconfig index 1e31edc99f..6bed72b791 100644 --- a/xen/arch/x86/Kconfig +++ b/xen/arch/x86/Kconfig @@ -226,6 +226,24 @@ config XEN_ALIGN_2M endchoice +config X2APIC_PHYSICAL + bool "x2APIC Physical Destination mode" + help + Use x2APIC Physical Destination mode by default when available. + + When using this mode APICs are addressed using the Physical + Destination mode, which allows using all dynamic vectors on each + CPU independently. + + Physical Destination has the benefit of having more vectors available + for external interrupts, but it also makes the delivery of multi + destination inter processor interrupts (IPIs) slightly slower than + Logical Destination mode. + + The mode when this option is not selected is Logical Destination. + + If unsure, say N. + config GUEST bool diff --git a/xen/arch/x86/genapic/x2apic.c b/xen/arch/x86/genapic/x2apic.c index de5032f202..7dfc793514 100644 --- a/xen/arch/x86/genapic/x2apic.c +++ b/xen/arch/x86/genapic/x2apic.c @@ -228,7 +228,7 @@ static struct notifier_block x2apic_cpu_nfb = { .notifier_call = update_clusterinfo }; -static s8 __initdata x2apic_phys = -1; /* By default we use logical cluster mode. */ +static int8_t __initdata x2apic_phys = -1; boolean_param("x2apic_phys", x2apic_phys); const struct genapic *__init apic_x2apic_probe(void) @@ -241,7 +241,9 @@ const struct genapic *__init apic_x2apic_probe(void) * the usage of the high 16 bits to hold the cluster ID. */ x2apic_phys = !iommu_intremap || - (acpi_gbl_FADT.flags & ACPI_FADT_APIC_PHYSICAL); + (acpi_gbl_FADT.flags & ACPI_FADT_APIC_PHYSICAL) || + (IS_ENABLED(CONFIG_X2APIC_PHYSICAL) && + !(acpi_gbl_FADT.flags & ACPI_FADT_APIC_CLUSTER)); } else if ( !x2apic_phys ) switch ( iommu_intremap ) -- generated by git-patchbot for /home/xen/git/xen.git#master
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |