diff options
author | David Rientjes <rientjes@google.com> | 2014-02-05 02:55:01 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2014-02-09 09:15:08 -0500 |
commit | 465822cfc8cb850ba76046965cc7b6fd1f8c3d73 (patch) | |
tree | 4d652719f6dd8864a85f8455381c23cfe6495305 | |
parent | d3c63ae1e2e35e4250390c079dc3fb7291347f5c (diff) |
x86/apic: Switch wait_for_init_deassert() to a bool flag
Now that there is only a single wait_for_init_deassert()
function, just convert the member of struct apic to a bool to
determine whether we need to wait for init_deassert to become
non-zero.
There are no more callers of default_wait_for_init_deassert(),
so fold it into the caller.
Signed-off-by: David Rientjes <rientjes@google.com>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/alpine.DEB.2.02.1402042354010.7839@chino.kir.corp.google.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
-rw-r--r-- | arch/x86/include/asm/apic.h | 8 | ||||
-rw-r--r-- | arch/x86/kernel/apic/apic_flat_64.c | 4 | ||||
-rw-r--r-- | arch/x86/kernel/apic/apic_noop.c | 3 | ||||
-rw-r--r-- | arch/x86/kernel/apic/apic_numachip.c | 2 | ||||
-rw-r--r-- | arch/x86/kernel/apic/bigsmp_32.c | 3 | ||||
-rw-r--r-- | arch/x86/kernel/apic/es7000_32.c | 6 | ||||
-rw-r--r-- | arch/x86/kernel/apic/numaq_32.c | 3 | ||||
-rw-r--r-- | arch/x86/kernel/apic/probe_32.c | 3 | ||||
-rw-r--r-- | arch/x86/kernel/apic/summit_32.c | 3 | ||||
-rw-r--r-- | arch/x86/kernel/apic/x2apic_cluster.c | 2 | ||||
-rw-r--r-- | arch/x86/kernel/apic/x2apic_phys.c | 2 | ||||
-rw-r--r-- | arch/x86/kernel/apic/x2apic_uv_x.c | 2 | ||||
-rw-r--r-- | arch/x86/kernel/smpboot.c | 5 |
13 files changed, 17 insertions, 29 deletions
diff --git a/arch/x86/include/asm/apic.h b/arch/x86/include/asm/apic.h index 2ef701381e2a..c1d3074b8514 100644 --- a/arch/x86/include/asm/apic.h +++ b/arch/x86/include/asm/apic.h | |||
@@ -351,7 +351,7 @@ struct apic { | |||
351 | int trampoline_phys_low; | 351 | int trampoline_phys_low; |
352 | int trampoline_phys_high; | 352 | int trampoline_phys_high; |
353 | 353 | ||
354 | void (*wait_for_init_deassert)(atomic_t *deassert); | 354 | bool wait_for_init_deassert; |
355 | void (*smp_callin_clear_local_apic)(void); | 355 | void (*smp_callin_clear_local_apic)(void); |
356 | void (*inquire_remote_apic)(int apicid); | 356 | void (*inquire_remote_apic)(int apicid); |
357 | 357 | ||
@@ -517,12 +517,6 @@ extern int default_cpu_present_to_apicid(int mps_cpu); | |||
517 | extern int default_check_phys_apicid_present(int phys_apicid); | 517 | extern int default_check_phys_apicid_present(int phys_apicid); |
518 | #endif | 518 | #endif |
519 | 519 | ||
520 | static inline void default_wait_for_init_deassert(atomic_t *deassert) | ||
521 | { | ||
522 | while (!atomic_read(deassert)) | ||
523 | cpu_relax(); | ||
524 | } | ||
525 | |||
526 | extern void generic_bigsmp_probe(void); | 520 | extern void generic_bigsmp_probe(void); |
527 | 521 | ||
528 | 522 | ||
diff --git a/arch/x86/kernel/apic/apic_flat_64.c b/arch/x86/kernel/apic/apic_flat_64.c index 2c621a6b901a..7c1b29479513 100644 --- a/arch/x86/kernel/apic/apic_flat_64.c +++ b/arch/x86/kernel/apic/apic_flat_64.c | |||
@@ -198,7 +198,7 @@ static struct apic apic_flat = { | |||
198 | 198 | ||
199 | .trampoline_phys_low = DEFAULT_TRAMPOLINE_PHYS_LOW, | 199 | .trampoline_phys_low = DEFAULT_TRAMPOLINE_PHYS_LOW, |
200 | .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH, | 200 | .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH, |
201 | .wait_for_init_deassert = NULL, | 201 | .wait_for_init_deassert = false, |
202 | .smp_callin_clear_local_apic = NULL, | 202 | .smp_callin_clear_local_apic = NULL, |
203 | .inquire_remote_apic = default_inquire_remote_apic, | 203 | .inquire_remote_apic = default_inquire_remote_apic, |
204 | 204 | ||
@@ -314,7 +314,7 @@ static struct apic apic_physflat = { | |||
314 | 314 | ||
315 | .trampoline_phys_low = DEFAULT_TRAMPOLINE_PHYS_LOW, | 315 | .trampoline_phys_low = DEFAULT_TRAMPOLINE_PHYS_LOW, |
316 | .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH, | 316 | .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH, |
317 | .wait_for_init_deassert = NULL, | 317 | .wait_for_init_deassert = false, |
318 | .smp_callin_clear_local_apic = NULL, | 318 | .smp_callin_clear_local_apic = NULL, |
319 | .inquire_remote_apic = default_inquire_remote_apic, | 319 | .inquire_remote_apic = default_inquire_remote_apic, |
320 | 320 | ||
diff --git a/arch/x86/kernel/apic/apic_noop.c b/arch/x86/kernel/apic/apic_noop.c index 191ce75c0e54..8c7c98249c20 100644 --- a/arch/x86/kernel/apic/apic_noop.c +++ b/arch/x86/kernel/apic/apic_noop.c | |||
@@ -172,8 +172,7 @@ struct apic apic_noop = { | |||
172 | .trampoline_phys_low = DEFAULT_TRAMPOLINE_PHYS_LOW, | 172 | .trampoline_phys_low = DEFAULT_TRAMPOLINE_PHYS_LOW, |
173 | .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH, | 173 | .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH, |
174 | 174 | ||
175 | .wait_for_init_deassert = NULL, | 175 | .wait_for_init_deassert = false, |
176 | |||
177 | .smp_callin_clear_local_apic = NULL, | 176 | .smp_callin_clear_local_apic = NULL, |
178 | .inquire_remote_apic = NULL, | 177 | .inquire_remote_apic = NULL, |
179 | 178 | ||
diff --git a/arch/x86/kernel/apic/apic_numachip.c b/arch/x86/kernel/apic/apic_numachip.c index 3e67f9e3d7ef..a5b45df8bc88 100644 --- a/arch/x86/kernel/apic/apic_numachip.c +++ b/arch/x86/kernel/apic/apic_numachip.c | |||
@@ -248,7 +248,7 @@ static const struct apic apic_numachip __refconst = { | |||
248 | .wakeup_secondary_cpu = numachip_wakeup_secondary, | 248 | .wakeup_secondary_cpu = numachip_wakeup_secondary, |
249 | .trampoline_phys_low = DEFAULT_TRAMPOLINE_PHYS_LOW, | 249 | .trampoline_phys_low = DEFAULT_TRAMPOLINE_PHYS_LOW, |
250 | .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH, | 250 | .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH, |
251 | .wait_for_init_deassert = NULL, | 251 | .wait_for_init_deassert = false, |
252 | .smp_callin_clear_local_apic = NULL, | 252 | .smp_callin_clear_local_apic = NULL, |
253 | .inquire_remote_apic = NULL, /* REMRD not supported */ | 253 | .inquire_remote_apic = NULL, /* REMRD not supported */ |
254 | 254 | ||
diff --git a/arch/x86/kernel/apic/bigsmp_32.c b/arch/x86/kernel/apic/bigsmp_32.c index d50e3640d5ae..e4840aa7a255 100644 --- a/arch/x86/kernel/apic/bigsmp_32.c +++ b/arch/x86/kernel/apic/bigsmp_32.c | |||
@@ -199,8 +199,7 @@ static struct apic apic_bigsmp = { | |||
199 | .trampoline_phys_low = DEFAULT_TRAMPOLINE_PHYS_LOW, | 199 | .trampoline_phys_low = DEFAULT_TRAMPOLINE_PHYS_LOW, |
200 | .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH, | 200 | .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH, |
201 | 201 | ||
202 | .wait_for_init_deassert = default_wait_for_init_deassert, | 202 | .wait_for_init_deassert = true, |
203 | |||
204 | .smp_callin_clear_local_apic = NULL, | 203 | .smp_callin_clear_local_apic = NULL, |
205 | .inquire_remote_apic = default_inquire_remote_apic, | 204 | .inquire_remote_apic = default_inquire_remote_apic, |
206 | 205 | ||
diff --git a/arch/x86/kernel/apic/es7000_32.c b/arch/x86/kernel/apic/es7000_32.c index d03d57e0a806..6f8f8b348a39 100644 --- a/arch/x86/kernel/apic/es7000_32.c +++ b/arch/x86/kernel/apic/es7000_32.c | |||
@@ -652,8 +652,7 @@ static struct apic __refdata apic_es7000_cluster = { | |||
652 | .trampoline_phys_low = 0x467, | 652 | .trampoline_phys_low = 0x467, |
653 | .trampoline_phys_high = 0x469, | 653 | .trampoline_phys_high = 0x469, |
654 | 654 | ||
655 | .wait_for_init_deassert = NULL, | 655 | .wait_for_init_deassert = false, |
656 | |||
657 | /* Nothing to do for most platforms, since cleared by the INIT cycle: */ | 656 | /* Nothing to do for most platforms, since cleared by the INIT cycle: */ |
658 | .smp_callin_clear_local_apic = NULL, | 657 | .smp_callin_clear_local_apic = NULL, |
659 | .inquire_remote_apic = default_inquire_remote_apic, | 658 | .inquire_remote_apic = default_inquire_remote_apic, |
@@ -716,8 +715,7 @@ static struct apic __refdata apic_es7000 = { | |||
716 | .trampoline_phys_low = 0x467, | 715 | .trampoline_phys_low = 0x467, |
717 | .trampoline_phys_high = 0x469, | 716 | .trampoline_phys_high = 0x469, |
718 | 717 | ||
719 | .wait_for_init_deassert = default_wait_for_init_deassert, | 718 | .wait_for_init_deassert = true, |
720 | |||
721 | /* Nothing to do for most platforms, since cleared by the INIT cycle: */ | 719 | /* Nothing to do for most platforms, since cleared by the INIT cycle: */ |
722 | .smp_callin_clear_local_apic = NULL, | 720 | .smp_callin_clear_local_apic = NULL, |
723 | .inquire_remote_apic = default_inquire_remote_apic, | 721 | .inquire_remote_apic = default_inquire_remote_apic, |
diff --git a/arch/x86/kernel/apic/numaq_32.c b/arch/x86/kernel/apic/numaq_32.c index 1e42e8f305ee..030ea1c04f72 100644 --- a/arch/x86/kernel/apic/numaq_32.c +++ b/arch/x86/kernel/apic/numaq_32.c | |||
@@ -505,8 +505,7 @@ static struct apic __refdata apic_numaq = { | |||
505 | .trampoline_phys_high = NUMAQ_TRAMPOLINE_PHYS_HIGH, | 505 | .trampoline_phys_high = NUMAQ_TRAMPOLINE_PHYS_HIGH, |
506 | 506 | ||
507 | /* We don't do anything here because we use NMI's to boot instead */ | 507 | /* We don't do anything here because we use NMI's to boot instead */ |
508 | .wait_for_init_deassert = NULL, | 508 | .wait_for_init_deassert = false, |
509 | |||
510 | .smp_callin_clear_local_apic = numaq_smp_callin_clear_local_apic, | 509 | .smp_callin_clear_local_apic = numaq_smp_callin_clear_local_apic, |
511 | .inquire_remote_apic = NULL, | 510 | .inquire_remote_apic = NULL, |
512 | 511 | ||
diff --git a/arch/x86/kernel/apic/probe_32.c b/arch/x86/kernel/apic/probe_32.c index eb35ef9ee63f..cceb352c968c 100644 --- a/arch/x86/kernel/apic/probe_32.c +++ b/arch/x86/kernel/apic/probe_32.c | |||
@@ -119,8 +119,7 @@ static struct apic apic_default = { | |||
119 | .trampoline_phys_low = DEFAULT_TRAMPOLINE_PHYS_LOW, | 119 | .trampoline_phys_low = DEFAULT_TRAMPOLINE_PHYS_LOW, |
120 | .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH, | 120 | .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH, |
121 | 121 | ||
122 | .wait_for_init_deassert = default_wait_for_init_deassert, | 122 | .wait_for_init_deassert = true, |
123 | |||
124 | .smp_callin_clear_local_apic = NULL, | 123 | .smp_callin_clear_local_apic = NULL, |
125 | .inquire_remote_apic = default_inquire_remote_apic, | 124 | .inquire_remote_apic = default_inquire_remote_apic, |
126 | 125 | ||
diff --git a/arch/x86/kernel/apic/summit_32.c b/arch/x86/kernel/apic/summit_32.c index 00146f9b0254..b656128611cd 100644 --- a/arch/x86/kernel/apic/summit_32.c +++ b/arch/x86/kernel/apic/summit_32.c | |||
@@ -532,8 +532,7 @@ static struct apic apic_summit = { | |||
532 | .trampoline_phys_low = DEFAULT_TRAMPOLINE_PHYS_LOW, | 532 | .trampoline_phys_low = DEFAULT_TRAMPOLINE_PHYS_LOW, |
533 | .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH, | 533 | .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH, |
534 | 534 | ||
535 | .wait_for_init_deassert = default_wait_for_init_deassert, | 535 | .wait_for_init_deassert = true, |
536 | |||
537 | .smp_callin_clear_local_apic = NULL, | 536 | .smp_callin_clear_local_apic = NULL, |
538 | .inquire_remote_apic = default_inquire_remote_apic, | 537 | .inquire_remote_apic = default_inquire_remote_apic, |
539 | 538 | ||
diff --git a/arch/x86/kernel/apic/x2apic_cluster.c b/arch/x86/kernel/apic/x2apic_cluster.c index cac85ee6913f..e66766bf1641 100644 --- a/arch/x86/kernel/apic/x2apic_cluster.c +++ b/arch/x86/kernel/apic/x2apic_cluster.c | |||
@@ -279,7 +279,7 @@ static struct apic apic_x2apic_cluster = { | |||
279 | 279 | ||
280 | .trampoline_phys_low = DEFAULT_TRAMPOLINE_PHYS_LOW, | 280 | .trampoline_phys_low = DEFAULT_TRAMPOLINE_PHYS_LOW, |
281 | .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH, | 281 | .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH, |
282 | .wait_for_init_deassert = NULL, | 282 | .wait_for_init_deassert = false, |
283 | .smp_callin_clear_local_apic = NULL, | 283 | .smp_callin_clear_local_apic = NULL, |
284 | .inquire_remote_apic = NULL, | 284 | .inquire_remote_apic = NULL, |
285 | 285 | ||
diff --git a/arch/x86/kernel/apic/x2apic_phys.c b/arch/x86/kernel/apic/x2apic_phys.c index de231e328cae..6d600ebf6c12 100644 --- a/arch/x86/kernel/apic/x2apic_phys.c +++ b/arch/x86/kernel/apic/x2apic_phys.c | |||
@@ -133,7 +133,7 @@ static struct apic apic_x2apic_phys = { | |||
133 | 133 | ||
134 | .trampoline_phys_low = DEFAULT_TRAMPOLINE_PHYS_LOW, | 134 | .trampoline_phys_low = DEFAULT_TRAMPOLINE_PHYS_LOW, |
135 | .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH, | 135 | .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH, |
136 | .wait_for_init_deassert = NULL, | 136 | .wait_for_init_deassert = false, |
137 | .smp_callin_clear_local_apic = NULL, | 137 | .smp_callin_clear_local_apic = NULL, |
138 | .inquire_remote_apic = NULL, | 138 | .inquire_remote_apic = NULL, |
139 | 139 | ||
diff --git a/arch/x86/kernel/apic/x2apic_uv_x.c b/arch/x86/kernel/apic/x2apic_uv_x.c index d263b1307de1..7834389ba5be 100644 --- a/arch/x86/kernel/apic/x2apic_uv_x.c +++ b/arch/x86/kernel/apic/x2apic_uv_x.c | |||
@@ -396,7 +396,7 @@ static struct apic __refdata apic_x2apic_uv_x = { | |||
396 | .wakeup_secondary_cpu = uv_wakeup_secondary, | 396 | .wakeup_secondary_cpu = uv_wakeup_secondary, |
397 | .trampoline_phys_low = DEFAULT_TRAMPOLINE_PHYS_LOW, | 397 | .trampoline_phys_low = DEFAULT_TRAMPOLINE_PHYS_LOW, |
398 | .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH, | 398 | .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH, |
399 | .wait_for_init_deassert = NULL, | 399 | .wait_for_init_deassert = false, |
400 | .smp_callin_clear_local_apic = NULL, | 400 | .smp_callin_clear_local_apic = NULL, |
401 | .inquire_remote_apic = NULL, | 401 | .inquire_remote_apic = NULL, |
402 | 402 | ||
diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c index a32da804252e..c77acc69ecf6 100644 --- a/arch/x86/kernel/smpboot.c +++ b/arch/x86/kernel/smpboot.c | |||
@@ -122,8 +122,9 @@ static void smp_callin(void) | |||
122 | * Since CPU0 is not wakened up by INIT, it doesn't wait for the IPI. | 122 | * Since CPU0 is not wakened up by INIT, it doesn't wait for the IPI. |
123 | */ | 123 | */ |
124 | cpuid = smp_processor_id(); | 124 | cpuid = smp_processor_id(); |
125 | if (apic->wait_for_init_deassert && cpuid != 0) | 125 | if (apic->wait_for_init_deassert && cpuid) |
126 | apic->wait_for_init_deassert(&init_deasserted); | 126 | while (!atomic_read(&init_deasserted)) |
127 | cpu_relax(); | ||
127 | 128 | ||
128 | /* | 129 | /* |
129 | * (This works even if the APIC is not enabled.) | 130 | * (This works even if the APIC is not enabled.) |