mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 10:11:27 +01:00
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:
1 parent
8eeae8c2b4
commit
eb40ae41b6
2 files changed
+22
-2
No files matched your search
@@ -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
|
||||
|
||||
|
||||
@@ -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 )
|
||||
|
||||