From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: linuxppc-dev@ozlabs.org
Subject: [PATCH 09/18] powerpc/pmac/smp: Consolidate 32-bit and 64-bit PowerMac cpu_die in one file
Date: Tue, 8 Mar 2011 17:37:21 +1100 [thread overview]
Message-ID: <1299566250-10516-10-git-send-email-benh@kernel.crashing.org> (raw)
In-Reply-To: <1299566250-10516-1-git-send-email-benh@kernel.crashing.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
---
arch/powerpc/platforms/powermac/pmac.h | 1 -
arch/powerpc/platforms/powermac/setup.c | 56 -----------------------------
arch/powerpc/platforms/powermac/smp.c | 58 +++++++++++++++++++++++++++++--
3 files changed, 55 insertions(+), 60 deletions(-)
diff --git a/arch/powerpc/platforms/powermac/pmac.h b/arch/powerpc/platforms/powermac/pmac.h
index f0bc08f..20468f4 100644
--- a/arch/powerpc/platforms/powermac/pmac.h
+++ b/arch/powerpc/platforms/powermac/pmac.h
@@ -33,7 +33,6 @@ extern void pmac_setup_pci_dma(void);
extern void pmac_check_ht_link(void);
extern void pmac_setup_smp(void);
-extern void pmac32_cpu_die(void);
extern void low_cpu_die(void) __attribute__((noreturn));
extern int pmac_nvram_init(void);
diff --git a/arch/powerpc/platforms/powermac/setup.c b/arch/powerpc/platforms/powermac/setup.c
index d5aceb7..aa45281 100644
--- a/arch/powerpc/platforms/powermac/setup.c
+++ b/arch/powerpc/platforms/powermac/setup.c
@@ -650,51 +650,6 @@ static int pmac_pci_probe_mode(struct pci_bus *bus)
return PCI_PROBE_NORMAL;
return PCI_PROBE_DEVTREE;
}
-
-#ifdef CONFIG_HOTPLUG_CPU
-/* access per cpu vars from generic smp.c */
-DECLARE_PER_CPU(int, cpu_state);
-
-static void pmac64_cpu_die(void)
-{
- /*
- * turn off as much as possible, we'll be
- * kicked out as this will only be invoked
- * on core99 platforms for now ...
- */
-
- printk(KERN_INFO "CPU#%d offline\n", smp_processor_id());
- __get_cpu_var(cpu_state) = CPU_DEAD;
- smp_wmb();
-
- /*
- * during the path that leads here preemption is disabled,
- * reenable it now so that when coming up preempt count is
- * zero correctly
- */
- preempt_enable();
-
- /*
- * hard-disable interrupts for the non-NAP case, the NAP code
- * needs to re-enable interrupts (but soft-disables them)
- */
- hard_irq_disable();
-
- while (1) {
- /* let's not take timer interrupts too often ... */
- set_dec(0x7fffffff);
-
- /* should always be true at this point */
- if (cpu_has_feature(CPU_FTR_CAN_NAP))
- power4_cpu_offline_powersave();
- else {
- HMT_low();
- HMT_very_low();
- }
- }
-}
-#endif /* CONFIG_HOTPLUG_CPU */
-
#endif /* CONFIG_PPC64 */
define_machine(powermac) {
@@ -726,15 +681,4 @@ define_machine(powermac) {
.pcibios_after_init = pmac_pcibios_after_init,
.phys_mem_access_prot = pci_phys_mem_access_prot,
#endif
-#ifdef CONFIG_HOTPLUG_CPU
-#ifdef CONFIG_PPC64
- .cpu_die = pmac64_cpu_die,
-#endif
-#ifdef CONFIG_PPC32
- .cpu_die = pmac32_cpu_die,
-#endif
-#endif
-#if defined(CONFIG_HOTPLUG_CPU) && defined(CONFIG_PPC32)
- .cpu_die = generic_mach_cpu_die,
-#endif
};
diff --git a/arch/powerpc/platforms/powermac/smp.c b/arch/powerpc/platforms/powermac/smp.c
index eda4709..50e15b4 100644
--- a/arch/powerpc/platforms/powermac/smp.c
+++ b/arch/powerpc/platforms/powermac/smp.c
@@ -865,7 +865,7 @@ static void __devinit smp_core99_setup_cpu(int cpu_nr)
}
-#if defined(CONFIG_HOTPLUG_CPU) && defined(CONFIG_PPC32)
+#ifdef CONFIG_HOTPLUG_CPU
static int smp_core99_cpu_disable(void)
{
@@ -878,7 +878,9 @@ static int smp_core99_cpu_disable(void)
return 0;
}
-void pmac32_cpu_die(void)
+#ifdef CONFIG_PPC32
+
+static void pmac_cpu_die(void)
{
local_irq_disable();
idle_task_exit();
@@ -889,7 +891,52 @@ void pmac32_cpu_die(void)
low_cpu_die();
}
-#endif /* CONFIG_HOTPLUG_CPU && CONFIG_PP32 */
+#else /* CONFIG_PPC32 */
+
+static void pmac_cpu_die(void)
+{
+ local_irq_disable();
+ idle_task_exit();
+
+ /*
+ * turn off as much as possible, we'll be
+ * kicked out as this will only be invoked
+ * on core99 platforms for now ...
+ */
+
+ printk(KERN_INFO "CPU#%d offline\n", smp_processor_id());
+ __get_cpu_var(cpu_state) = CPU_DEAD;
+ smp_wmb();
+
+ /*
+ * during the path that leads here preemption is disabled,
+ * reenable it now so that when coming up preempt count is
+ * zero correctly
+ */
+ preempt_enable();
+
+ /*
+ * hard-disable interrupts for the non-NAP case, the NAP code
+ * needs to re-enable interrupts (but soft-disables them)
+ */
+ hard_irq_disable();
+
+ while (1) {
+ /* let's not take timer interrupts too often ... */
+ set_dec(0x7fffffff);
+
+ /* should always be true at this point */
+ if (cpu_has_feature(CPU_FTR_CAN_NAP))
+ power4_cpu_offline_powersave();
+ else {
+ HMT_low();
+ HMT_very_low();
+ }
+ }
+}
+
+#endif /* else CONFIG_PPC32 */
+#endif /* CONFIG_HOTPLUG_CPU */
/* Core99 Macs (dual G4s and G5s) */
struct smp_ops_t core99_smp_ops = {
@@ -933,5 +980,10 @@ void __init pmac_setup_smp(void)
smp_ops = &psurge_smp_ops;
}
#endif /* CONFIG_PPC32 */
+
+#ifdef CONFIG_HOTPLUG_CPU
+ ppc_md.cpu_die = pmac_cpu_die;
+#endif
}
+
--
1.7.1
next prev parent reply other threads:[~2011-03-08 6:37 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-03-08 6:37 [PATCHES] powerpc: Cleanup and fix CPU hotplug Benjamin Herrenschmidt
2011-03-08 6:37 ` [PATCH 01/18] powerpc: Make decrementer interrupt robust against offlined CPUs Benjamin Herrenschmidt
2011-03-10 8:01 ` Michael Ellerman
2011-03-08 6:37 ` [PATCH 02/18] powerpc/smp: soft-replugged CPUs must go back to start_secondary Benjamin Herrenschmidt
2011-03-08 6:37 ` [PATCH 03/18] powerpc/smp: Fix generic_mach_cpu_die() Benjamin Herrenschmidt
2011-03-08 6:37 ` [PATCH 04/18] powerpc/smp: Remove unused generic_cpu_enable() Benjamin Herrenschmidt
2011-03-08 6:37 ` [PATCH 05/18] powerpc/smp: Remove unused smp_ops->cpu_enable() Benjamin Herrenschmidt
2011-03-08 6:37 ` [PATCH 06/18] powerpc/pmac/smp: Fix 32-bit PowerMac cpu_die Benjamin Herrenschmidt
2011-03-08 6:37 ` [PATCH 07/18] powerpc/pmac/smp: Rename fixup_irqs() to migrate_irqs() and use it on ppc32 Benjamin Herrenschmidt
2011-03-08 6:37 ` [PATCH 08/18] powerpc/pmac/smp: Fixup smp_core99_cpu_disable() and use it on 64-bit Benjamin Herrenschmidt
2011-03-08 6:37 ` Benjamin Herrenschmidt [this message]
2011-03-08 6:37 ` [PATCH 10/18] powerpc/pmac/smp: Remove HMT changes for PowerMac offline code Benjamin Herrenschmidt
2011-03-08 6:37 ` [PATCH 11/18] powerpc/pmac/smp: Properly NAP offlined CPU on G5 Benjamin Herrenschmidt
2011-03-08 6:37 ` [PATCH 12/18] powerpc/pmac: Rename cpu_state in therm_pm72 to avoid collision Benjamin Herrenschmidt
2011-03-08 6:37 ` [PATCH 13/18] powerpc/smp: Add a smp_ops->bringup_up() done callback Benjamin Herrenschmidt
2011-03-08 6:37 ` [PATCH 14/18] powerpc/pmac/smp: Fix CPU hotplug crashes on some machines Benjamin Herrenschmidt
2011-03-08 6:37 ` [PATCH 15/18] powerpc/smp: Don't expose per-cpu "cpu_state" array Benjamin Herrenschmidt
2011-03-29 5:37 ` Michael Ellerman
2011-03-29 8:13 ` Benjamin Herrenschmidt
2011-03-08 6:37 ` [PATCH 16/18] powerpc/smp: Create idle threads on demand and properly reset them Benjamin Herrenschmidt
2011-03-08 6:37 ` [PATCH 17/18] powerpc/smp: Increase vdso_data->processorCount, not just decrease it Benjamin Herrenschmidt
2011-03-10 3:41 ` Michael Ellerman
2011-03-10 3:46 ` Benjamin Herrenschmidt
2011-03-08 6:37 ` [PATCH 18/18] powerpc/pmac/smp: Remove no-longer needed preempt workaround Benjamin Herrenschmidt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1299566250-10516-10-git-send-email-benh@kernel.crashing.org \
--to=benh@kernel.crashing.org \
--cc=linuxppc-dev@ozlabs.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).