Sfoglia il codice sorgente

x86, apic, 32-bit: add self-IPI methods

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>
Ingo Molnar 16 anni fa
parent
commit
6b64ee02da

+ 1 - 1
arch/x86/kernel/bigsmp_32.c

@@ -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,

+ 1 - 1
arch/x86/kernel/es7000_32.c

@@ -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,
 

+ 1 - 1
arch/x86/kernel/numaq_32.c

@@ -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,

+ 1 - 1
arch/x86/kernel/probe_32.c

@@ -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,

+ 1 - 1
arch/x86/kernel/summit_32.c

@@ -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,