Skip to content

Commit

Permalink
[POWERPC] Make crash.c work on 32-bit and 64-bit
Browse files Browse the repository at this point in the history
To compile kexec on 32-bit we need a few more bits and pieces. Rather
than add empty definitions, we can make crash.c work on 32-bit, with
only a couple of kludges.

Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Paul Mackerras <paulus@samba.org>
  • Loading branch information
Michael Ellerman authored and Paul Mackerras committed Aug 17, 2006
1 parent 47585d8 commit b6f35b4
Show file tree
Hide file tree
Showing 5 changed files with 14 additions and 8 deletions.
4 changes: 2 additions & 2 deletions arch/powerpc/kernel/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,9 @@ pci64-$(CONFIG_PPC64) += pci_64.o pci_dn.o pci_iommu.o \
pci_direct_iommu.o iomap.o
pci32-$(CONFIG_PPC32) := pci_32.o
obj-$(CONFIG_PCI) += $(pci64-y) $(pci32-y)
kexec-$(CONFIG_PPC64) := machine_kexec_64.o crash.o
kexec-$(CONFIG_PPC64) := machine_kexec_64.o
kexec-$(CONFIG_PPC32) := machine_kexec_32.o
obj-$(CONFIG_KEXEC) += machine_kexec.o $(kexec-y)
obj-$(CONFIG_KEXEC) += machine_kexec.o crash.o $(kexec-y)

ifeq ($(CONFIG_PPC_ISERIES),y)
$(obj)/head_64.o: $(obj)/lparmap.s
Expand Down
11 changes: 11 additions & 0 deletions arch/powerpc/kernel/crash.c
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
/* This keeps a track of which one is crashing cpu. */
int crashing_cpu = -1;
static cpumask_t cpus_in_crash = CPU_MASK_NONE;
cpumask_t cpus_in_sr = CPU_MASK_NONE;

static u32 *append_elf_note(u32 *buf, char *name, unsigned type, void *data,
size_t data_len)
Expand Down Expand Up @@ -139,7 +140,13 @@ void crash_ipi_callback(struct pt_regs *regs)

if (ppc_md.kexec_cpu_down)
ppc_md.kexec_cpu_down(1, 1);

#ifdef CONFIG_PPC64
kexec_smp_wait();
#else
for (;;); /* FIXME */
#endif

/* NOTREACHED */
}

Expand Down Expand Up @@ -255,7 +262,11 @@ static void crash_kexec_prepare_cpus(int cpu)
*
* do this if kexec in setup.c ?
*/
#ifdef CONFIG_PPC64
smp_release_cpus();
#else
/* FIXME */
#endif
}

void crash_kexec_secondary(struct pt_regs *regs)
Expand Down
1 change: 0 additions & 1 deletion arch/powerpc/kernel/machine_kexec_64.c
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
*/


#include <linux/cpumask.h>
#include <linux/kexec.h>
#include <linux/smp.h>
#include <linux/thread_info.h>
Expand Down
3 changes: 0 additions & 3 deletions arch/powerpc/kernel/traps.c
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,6 @@

#ifdef CONFIG_PPC64 /* XXX */
#define _IO_BASE pci_io_base
#ifdef CONFIG_KEXEC
cpumask_t cpus_in_sr = CPU_MASK_NONE;
#endif
#endif

#ifdef CONFIG_DEBUGGER
Expand Down
3 changes: 1 addition & 2 deletions include/asm-powerpc/kexec.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
#endif

#ifndef __ASSEMBLY__
#include <linux/cpumask.h>

#ifdef CONFIG_KEXEC

Expand Down Expand Up @@ -109,7 +110,6 @@ static inline void crash_setup_regs(struct pt_regs *newregs,

#define MAX_NOTE_BYTES 1024

#ifdef __powerpc64__
extern void kexec_smp_wait(void); /* get and clear naca physid, wait for
master to copy new code to 0 */
extern int crashing_cpu;
Expand All @@ -119,7 +119,6 @@ static inline int kexec_sr_activated(int cpu)
{
return cpu_isset(cpu,cpus_in_sr);
}
#endif /* __powerpc64 __ */

struct kimage;
struct pt_regs;
Expand Down

0 comments on commit b6f35b4

Please sign in to comment.