endchoice
+choice
+ prompt "x2APIC default destination mode"
+ default X2APIC_LOGICAL
+ ---help---
+ Specify default destination mode for x2APIC.
+
+ If unsure, choose "Logical".
+
+config X2APIC_LOGICAL
+ bool "Logical mode"
+ ---help---
+ Use Logical Destination mode.
+
+ When using this mode APICs are addressed using the Logical
+ Destination mode, which allows for optimized IPI sending,
+ but also reduces the amount of vectors available for external
+ interrupts when compared to physical mode.
+
+config X2APIC_PHYS
+ bool "Physical mode"
+ ---help---
+ Use Physical Destination mode.
+
+ When using this mode APICs are addressed using the Physical
+ Destination mode, which allows using all dynamic vectors on
+ each CPU independently.
+
+endchoice
+
config GUEST
bool
.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)
* 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_PHYS) &&
+ !(acpi_gbl_FADT.flags & ACPI_FADT_APIC_CLUSTER));
}
else if ( !x2apic_phys )
switch ( iommu_intremap )