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@citrix.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
This commit is contained in:
Roger Pau Monné authored and Jan Beulich committed 2022-07-06 13:06:57 +02:00
1 parent 8eeae8c2b4
commit eb40ae41b6
2 files changed
+22 -2

No files matched your search

+18
View File
@@ -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
+4 -2
View File
@@ -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 )
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.