x86, apic, 32-bit: add self-IPI methods
authorIngo Molnar <mingo@elte.hu>
Fri, 30 Jan 2009 22:42:18 +0000 (23:42 +0100)
committerIngo Molnar <mingo@elte.hu>
Fri, 30 Jan 2009 22:42:18 +0000 (23:42 +0100)
Impact: fix rare crash on 32-bit

The 32-bit APIC drivers had their send_IPI_self vectors set to NULL,
but ioapic_retrigger_irq() depends on it being always set. Fix it.

Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/bigsmp_32.c
arch/x86/kernel/es7000_32.c
arch/x86/kernel/numaq_32.c
arch/x86/kernel/probe_32.c
arch/x86/kernel/summit_32.c

index ab645c9..47a62f4 100644 (file)
@@ -252,7 +252,7 @@ struct genapic apic_bigsmp = {
        .send_IPI_mask_allbutself       = NULL,
        .send_IPI_allbutself            = bigsmp_send_IPI_allbutself,
        .send_IPI_all                   = bigsmp_send_IPI_all,
-       .send_IPI_self                  = NULL,
+       .send_IPI_self                  = default_send_IPI_self,
 
        .wakeup_cpu                     = NULL,
        .trampoline_phys_low            = DEFAULT_TRAMPOLINE_PHYS_LOW,
index b5b50e8..d6184c1 100644 (file)
@@ -786,7 +786,7 @@ struct genapic apic_es7000 = {
        .send_IPI_mask_allbutself       = NULL,
        .send_IPI_allbutself            = es7000_send_IPI_allbutself,
        .send_IPI_all                   = es7000_send_IPI_all,
-       .send_IPI_self                  = NULL,
+       .send_IPI_self                  = default_send_IPI_self,
 
        .wakeup_cpu                     = NULL,
 
index c143b32..947748e 100644 (file)
@@ -554,7 +554,7 @@ struct genapic apic_numaq = {
        .send_IPI_mask_allbutself       = NULL,
        .send_IPI_allbutself            = numaq_send_IPI_allbutself,
        .send_IPI_all                   = numaq_send_IPI_all,
-       .send_IPI_self                  = NULL,
+       .send_IPI_self                  = default_send_IPI_self,
 
        .wakeup_cpu                     = NULL,
        .trampoline_phys_low            = NUMAQ_TRAMPOLINE_PHYS_LOW,
index 3f12a40..22337b7 100644 (file)
@@ -116,7 +116,7 @@ struct genapic apic_default = {
        .send_IPI_mask_allbutself       = default_send_IPI_mask_allbutself_logical,
        .send_IPI_allbutself            = default_send_IPI_allbutself,
        .send_IPI_all                   = default_send_IPI_all,
-       .send_IPI_self                  = NULL,
+       .send_IPI_self                  = default_send_IPI_self,
 
        .wakeup_cpu                     = NULL,
        .trampoline_phys_low            = DEFAULT_TRAMPOLINE_PHYS_LOW,
index ecb41b9..1e733ef 100644 (file)
@@ -588,7 +588,7 @@ struct genapic apic_summit = {
        .send_IPI_mask_allbutself       = NULL,
        .send_IPI_allbutself            = summit_send_IPI_allbutself,
        .send_IPI_all                   = summit_send_IPI_all,
-       .send_IPI_self                  = NULL,
+       .send_IPI_self                  = default_send_IPI_self,
 
        .wakeup_cpu                     = NULL,
        .trampoline_phys_low            = DEFAULT_TRAMPOLINE_PHYS_LOW,