Commit 2510d09e authored by Thomas Gleixner's avatar Thomas Gleixner

x86/apic/flat64: Remove the IPI shorthand decision logic

All callers of apic->send_IPI_all() and apic->send_IPI_allbutself() contain
the decision logic for shorthand invocation already and invoke
send_IPI_mask() if the prereqisites are not satisfied.

Remove the now redundant decision logic in the APIC code and the duplicate
helper in probe_64.c.
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Acked-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lkml.kernel.org/r/20190722105221.042964120@linutronix.de
parent dea97863
...@@ -468,10 +468,6 @@ static inline unsigned default_get_apic_id(unsigned long x) ...@@ -468,10 +468,6 @@ static inline unsigned default_get_apic_id(unsigned long x)
#define TRAMPOLINE_PHYS_LOW 0x467 #define TRAMPOLINE_PHYS_LOW 0x467
#define TRAMPOLINE_PHYS_HIGH 0x469 #define TRAMPOLINE_PHYS_HIGH 0x469
#ifdef CONFIG_X86_64
extern void apic_send_IPI_self(int vector);
#endif
extern void generic_bigsmp_probe(void); extern void generic_bigsmp_probe(void);
#ifdef CONFIG_X86_LOCAL_APIC #ifdef CONFIG_X86_LOCAL_APIC
......
...@@ -76,33 +76,6 @@ flat_send_IPI_mask_allbutself(const struct cpumask *cpumask, int vector) ...@@ -76,33 +76,6 @@ flat_send_IPI_mask_allbutself(const struct cpumask *cpumask, int vector)
_flat_send_IPI_mask(mask, vector); _flat_send_IPI_mask(mask, vector);
} }
static void flat_send_IPI_allbutself(int vector)
{
int cpu = smp_processor_id();
if (IS_ENABLED(CONFIG_HOTPLUG_CPU) || vector == NMI_VECTOR) {
if (!cpumask_equal(cpu_online_mask, cpumask_of(cpu))) {
unsigned long mask = cpumask_bits(cpu_online_mask)[0];
if (cpu < BITS_PER_LONG)
__clear_bit(cpu, &mask);
_flat_send_IPI_mask(mask, vector);
}
} else if (num_online_cpus() > 1) {
__default_send_IPI_shortcut(APIC_DEST_ALLBUT, vector);
}
}
static void flat_send_IPI_all(int vector)
{
if (vector == NMI_VECTOR) {
flat_send_IPI_mask(cpu_online_mask, vector);
} else {
__default_send_IPI_shortcut(APIC_DEST_ALLINC, vector);
}
}
static unsigned int flat_get_apic_id(unsigned long x) static unsigned int flat_get_apic_id(unsigned long x)
{ {
return (x >> 24) & 0xFF; return (x >> 24) & 0xFF;
...@@ -164,9 +137,9 @@ static struct apic apic_flat __ro_after_init = { ...@@ -164,9 +137,9 @@ static struct apic apic_flat __ro_after_init = {
.send_IPI = default_send_IPI_single, .send_IPI = default_send_IPI_single,
.send_IPI_mask = flat_send_IPI_mask, .send_IPI_mask = flat_send_IPI_mask,
.send_IPI_mask_allbutself = flat_send_IPI_mask_allbutself, .send_IPI_mask_allbutself = flat_send_IPI_mask_allbutself,
.send_IPI_allbutself = flat_send_IPI_allbutself, .send_IPI_allbutself = default_send_IPI_allbutself,
.send_IPI_all = flat_send_IPI_all, .send_IPI_all = default_send_IPI_all,
.send_IPI_self = apic_send_IPI_self, .send_IPI_self = default_send_IPI_self,
.inquire_remote_apic = default_inquire_remote_apic, .inquire_remote_apic = default_inquire_remote_apic,
...@@ -216,16 +189,6 @@ static void physflat_init_apic_ldr(void) ...@@ -216,16 +189,6 @@ static void physflat_init_apic_ldr(void)
*/ */
} }
static void physflat_send_IPI_allbutself(int vector)
{
default_send_IPI_mask_allbutself_phys(cpu_online_mask, vector);
}
static void physflat_send_IPI_all(int vector)
{
default_send_IPI_mask_sequence_phys(cpu_online_mask, vector);
}
static int physflat_probe(void) static int physflat_probe(void)
{ {
if (apic == &apic_physflat || num_possible_cpus() > 8 || if (apic == &apic_physflat || num_possible_cpus() > 8 ||
...@@ -267,9 +230,9 @@ static struct apic apic_physflat __ro_after_init = { ...@@ -267,9 +230,9 @@ static struct apic apic_physflat __ro_after_init = {
.send_IPI = default_send_IPI_single_phys, .send_IPI = default_send_IPI_single_phys,
.send_IPI_mask = default_send_IPI_mask_sequence_phys, .send_IPI_mask = default_send_IPI_mask_sequence_phys,
.send_IPI_mask_allbutself = default_send_IPI_mask_allbutself_phys, .send_IPI_mask_allbutself = default_send_IPI_mask_allbutself_phys,
.send_IPI_allbutself = physflat_send_IPI_allbutself, .send_IPI_allbutself = default_send_IPI_allbutself,
.send_IPI_all = physflat_send_IPI_all, .send_IPI_all = default_send_IPI_all,
.send_IPI_self = apic_send_IPI_self, .send_IPI_self = default_send_IPI_self,
.inquire_remote_apic = default_inquire_remote_apic, .inquire_remote_apic = default_inquire_remote_apic,
......
...@@ -36,13 +36,6 @@ void __init default_setup_apic_routing(void) ...@@ -36,13 +36,6 @@ void __init default_setup_apic_routing(void)
x86_platform.apic_post_init(); x86_platform.apic_post_init();
} }
/* Same for both flat and physical. */
void apic_send_IPI_self(int vector)
{
__default_send_IPI_shortcut(APIC_DEST_SELF, vector);
}
int __init default_acpi_madt_oem_check(char *oem_id, char *oem_table_id) int __init default_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
{ {
struct apic **drv; struct apic **drv;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment