diff options
Diffstat (limited to 'arch/powerpc/kernel')
25 files changed, 67 insertions, 27 deletions
diff --git a/arch/powerpc/kernel/cacheinfo.c b/arch/powerpc/kernel/cacheinfo.c index 01fe9ce2837..a3c684b4c86 100644 --- a/arch/powerpc/kernel/cacheinfo.c +++ b/arch/powerpc/kernel/cacheinfo.c @@ -19,6 +19,7 @@  #include <linux/notifier.h>  #include <linux/of.h>  #include <linux/percpu.h> +#include <linux/slab.h>  #include <asm/prom.h>  #include "cacheinfo.h" diff --git a/arch/powerpc/kernel/dma.c b/arch/powerpc/kernel/dma.c index 6215062caf8..6c1df5757cd 100644 --- a/arch/powerpc/kernel/dma.c +++ b/arch/powerpc/kernel/dma.c @@ -8,6 +8,7 @@  #include <linux/device.h>  #include <linux/dma-mapping.h>  #include <linux/dma-debug.h> +#include <linux/gfp.h>  #include <linux/lmb.h>  #include <asm/bug.h>  #include <asm/abs_addr.h> diff --git a/arch/powerpc/kernel/head_fsl_booke.S b/arch/powerpc/kernel/head_fsl_booke.S index 25793bb0e78..72552654799 100644 --- a/arch/powerpc/kernel/head_fsl_booke.S +++ b/arch/powerpc/kernel/head_fsl_booke.S @@ -747,9 +747,6 @@ finish_tlb_load:  #else  	rlwimi	r12, r11, 26, 27, 31	/* extract WIMGE from pte */  #endif -#ifdef CONFIG_SMP -	ori	r12, r12, MAS2_M -#endif  	mtspr	SPRN_MAS2, r12  #ifdef CONFIG_PTE_64BIT @@ -887,13 +884,17 @@ KernelSPE:  	lwz	r3,_MSR(r1)  	oris	r3,r3,MSR_SPE@h  	stw	r3,_MSR(r1)	/* enable use of SPE after return */ +#ifdef CONFIG_PRINTK  	lis	r3,87f@h  	ori	r3,r3,87f@l  	mr	r4,r2		/* current */  	lwz	r5,_NIP(r1)  	bl	printk +#endif  	b	ret_from_except +#ifdef CONFIG_PRINTK  87:	.string	"SPE used in kernel  (task=%p, pc=%x)  \n" +#endif  	.align	4,0  #endif /* CONFIG_SPE */ diff --git a/arch/powerpc/kernel/ibmebus.c b/arch/powerpc/kernel/ibmebus.c index a4c8b38b0ba..71cf280da18 100644 --- a/arch/powerpc/kernel/ibmebus.c +++ b/arch/powerpc/kernel/ibmebus.c @@ -42,6 +42,7 @@  #include <linux/dma-mapping.h>  #include <linux/interrupt.h>  #include <linux/of.h> +#include <linux/slab.h>  #include <linux/of_platform.h>  #include <asm/ibmebus.h>  #include <asm/abs_addr.h> diff --git a/arch/powerpc/kernel/iommu.c b/arch/powerpc/kernel/iommu.c index 5547ae6e6b0..ec94f906ea4 100644 --- a/arch/powerpc/kernel/iommu.c +++ b/arch/powerpc/kernel/iommu.c @@ -42,12 +42,7 @@  #define DBG(...) -#ifdef CONFIG_IOMMU_VMERGE -static int novmerge = 0; -#else -static int novmerge = 1; -#endif - +static int novmerge;  static int protect4gb = 1;  static void __iommu_free(struct iommu_table *, dma_addr_t, unsigned int); diff --git a/arch/powerpc/kernel/kprobes.c b/arch/powerpc/kernel/kprobes.c index 3fd1af90211..b36f074524a 100644 --- a/arch/powerpc/kernel/kprobes.c +++ b/arch/powerpc/kernel/kprobes.c @@ -31,6 +31,7 @@  #include <linux/preempt.h>  #include <linux/module.h>  #include <linux/kdebug.h> +#include <linux/slab.h>  #include <asm/cacheflush.h>  #include <asm/sstep.h>  #include <asm/uaccess.h> diff --git a/arch/powerpc/kernel/lparcfg.c b/arch/powerpc/kernel/lparcfg.c index d09d1c61515..c2c70e1b32c 100644 --- a/arch/powerpc/kernel/lparcfg.c +++ b/arch/powerpc/kernel/lparcfg.c @@ -24,6 +24,7 @@  #include <linux/proc_fs.h>  #include <linux/init.h>  #include <linux/seq_file.h> +#include <linux/slab.h>  #include <asm/uaccess.h>  #include <asm/iseries/hv_lp_config.h>  #include <asm/lppaca.h> diff --git a/arch/powerpc/kernel/misc.S b/arch/powerpc/kernel/misc.S index 2d29752cbe1..22e507c8a55 100644 --- a/arch/powerpc/kernel/misc.S +++ b/arch/powerpc/kernel/misc.S @@ -127,3 +127,29 @@ _GLOBAL(__setup_cpu_power7)  _GLOBAL(__restore_cpu_power7)  	/* place holder */  	blr + +/* + * Get a minimal set of registers for our caller's nth caller. + * r3 = regs pointer, r5 = n. + * + * We only get R1 (stack pointer), NIP (next instruction pointer) + * and LR (link register).  These are all we can get in the + * general case without doing complicated stack unwinding, but + * fortunately they are enough to do a stack backtrace, which + * is all we need them for. + */ +_GLOBAL(perf_arch_fetch_caller_regs) +	mr	r6,r1 +	cmpwi	r5,0 +	mflr	r4 +	ble	2f +	mtctr	r5 +1:	PPC_LL	r6,0(r6) +	bdnz	1b +	PPC_LL	r4,PPC_LR_STKOFF(r6) +2:	PPC_LL	r7,0(r6) +	PPC_LL	r7,PPC_LR_STKOFF(r7) +	PPC_STL	r6,GPR1-STACK_FRAME_OVERHEAD(r3) +	PPC_STL	r4,_NIP-STACK_FRAME_OVERHEAD(r3) +	PPC_STL	r7,_LINK-STACK_FRAME_OVERHEAD(r3) +	blr diff --git a/arch/powerpc/kernel/of_platform.c b/arch/powerpc/kernel/of_platform.c index 666d08db319..6c1dfc3ff8b 100644 --- a/arch/powerpc/kernel/of_platform.c +++ b/arch/powerpc/kernel/of_platform.c @@ -17,7 +17,6 @@  #include <linux/init.h>  #include <linux/module.h>  #include <linux/mod_devicetable.h> -#include <linux/slab.h>  #include <linux/pci.h>  #include <linux/of.h>  #include <linux/of_device.h> diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c index f3c42ce516e..0c0567e5840 100644 --- a/arch/powerpc/kernel/pci-common.c +++ b/arch/powerpc/kernel/pci-common.c @@ -26,6 +26,7 @@  #include <linux/syscalls.h>  #include <linux/irq.h>  #include <linux/vmalloc.h> +#include <linux/slab.h>  #include <asm/processor.h>  #include <asm/io.h> diff --git a/arch/powerpc/kernel/pci_32.c b/arch/powerpc/kernel/pci_32.c index c13668cf36d..e7db5b48004 100644 --- a/arch/powerpc/kernel/pci_32.c +++ b/arch/powerpc/kernel/pci_32.c @@ -14,6 +14,7 @@  #include <linux/irq.h>  #include <linux/list.h>  #include <linux/of.h> +#include <linux/slab.h>  #include <asm/processor.h>  #include <asm/io.h> diff --git a/arch/powerpc/kernel/pci_dn.c b/arch/powerpc/kernel/pci_dn.c index d5e36e5dc7c..d56b35ee7f7 100644 --- a/arch/powerpc/kernel/pci_dn.c +++ b/arch/powerpc/kernel/pci_dn.c @@ -23,6 +23,7 @@  #include <linux/pci.h>  #include <linux/string.h>  #include <linux/init.h> +#include <linux/gfp.h>  #include <asm/io.h>  #include <asm/prom.h> diff --git a/arch/powerpc/kernel/perf_event.c b/arch/powerpc/kernel/perf_event.c index 5120bd44f69..08460a2e9f4 100644 --- a/arch/powerpc/kernel/perf_event.c +++ b/arch/powerpc/kernel/perf_event.c @@ -1287,7 +1287,7 @@ static void perf_event_interrupt(struct pt_regs *regs)  		irq_exit();  } -void hw_perf_event_setup(int cpu) +static void power_pmu_setup(int cpu)  {  	struct cpu_hw_events *cpuhw = &per_cpu(cpu_hw_events, cpu); @@ -1297,6 +1297,23 @@ void hw_perf_event_setup(int cpu)  	cpuhw->mmcr[0] = MMCR0_FC;  } +static int __cpuinit +power_pmu_notifier(struct notifier_block *self, unsigned long action, void *hcpu) +{ +	unsigned int cpu = (long)hcpu; + +	switch (action & ~CPU_TASKS_FROZEN) { +	case CPU_UP_PREPARE: +		power_pmu_setup(cpu); +		break; + +	default: +		break; +	} + +	return NOTIFY_OK; +} +  int register_power_pmu(struct power_pmu *pmu)  {  	if (ppmu) @@ -1314,5 +1331,7 @@ int register_power_pmu(struct power_pmu *pmu)  		freeze_events_kernel = MMCR0_FCHV;  #endif /* CONFIG_PPC64 */ +	perf_cpu_notifier(power_pmu_notifier); +  	return 0;  } diff --git a/arch/powerpc/kernel/proc_powerpc.c b/arch/powerpc/kernel/proc_powerpc.c index 1ed3b8d7981..c8ae3714e79 100644 --- a/arch/powerpc/kernel/proc_powerpc.c +++ b/arch/powerpc/kernel/proc_powerpc.c @@ -19,7 +19,6 @@  #include <linux/init.h>  #include <linux/mm.h>  #include <linux/proc_fs.h> -#include <linux/slab.h>  #include <linux/kernel.h>  #include <asm/machdep.h> diff --git a/arch/powerpc/kernel/prom_init.c b/arch/powerpc/kernel/prom_init.c index 5f306c4946e..97d4bd9442d 100644 --- a/arch/powerpc/kernel/prom_init.c +++ b/arch/powerpc/kernel/prom_init.c @@ -653,6 +653,7 @@ static void __init early_cmdline_parse(void)  #else  #define OV5_CMO			0x00  #endif +#define OV5_TYPE1_AFFINITY	0x80	/* Type 1 NUMA affinity */  /* Option Vector 6: IBM PAPR hints */  #define OV6_LINUX		0x02	/* Linux is our OS */ @@ -706,7 +707,7 @@ static unsigned char ibm_architecture_vec[] = {  	OV5_DONATE_DEDICATE_CPU | OV5_MSI,  	0,  	OV5_CMO, -	0, +	OV5_TYPE1_AFFINITY,  	0,  	0,  	0, diff --git a/arch/powerpc/kernel/rtas.c b/arch/powerpc/kernel/rtas.c index fd0d29493fd..74367841615 100644 --- a/arch/powerpc/kernel/rtas.c +++ b/arch/powerpc/kernel/rtas.c @@ -23,6 +23,7 @@  #include <linux/completion.h>  #include <linux/cpumask.h>  #include <linux/lmb.h> +#include <linux/slab.h>  #include <asm/prom.h>  #include <asm/rtas.h> diff --git a/arch/powerpc/kernel/rtas_flash.c b/arch/powerpc/kernel/rtas_flash.c index a85117d5c9a..bfc2abafac4 100644 --- a/arch/powerpc/kernel/rtas_flash.c +++ b/arch/powerpc/kernel/rtas_flash.c @@ -15,6 +15,7 @@  #include <linux/module.h>  #include <linux/init.h> +#include <linux/slab.h>  #include <linux/proc_fs.h>  #include <asm/delay.h>  #include <asm/uaccess.h> diff --git a/arch/powerpc/kernel/rtasd.c b/arch/powerpc/kernel/rtasd.c index 2e4832ab210..4190eae7850 100644 --- a/arch/powerpc/kernel/rtasd.c +++ b/arch/powerpc/kernel/rtasd.c @@ -20,6 +20,7 @@  #include <linux/spinlock.h>  #include <linux/cpu.h>  #include <linux/workqueue.h> +#include <linux/slab.h>  #include <asm/uaccess.h>  #include <asm/io.h> diff --git a/arch/powerpc/kernel/setup_32.c b/arch/powerpc/kernel/setup_32.c index b152de3e64d..8f58986c2ad 100644 --- a/arch/powerpc/kernel/setup_32.c +++ b/arch/powerpc/kernel/setup_32.c @@ -39,7 +39,6 @@  #include <asm/serial.h>  #include <asm/udbg.h>  #include <asm/mmu_context.h> -#include <asm/swiotlb.h>  #include "setup.h" @@ -343,11 +342,6 @@ void __init setup_arch(char **cmdline_p)  		ppc_md.setup_arch();  	if ( ppc_md.progress ) ppc_md.progress("arch: exit", 0x3eab); -#ifdef CONFIG_SWIOTLB -	if (ppc_swiotlb_enable) -		swiotlb_init(1); -#endif -  	paging_init();  	/* Initialize the MMU context management stuff */ diff --git a/arch/powerpc/kernel/setup_64.c b/arch/powerpc/kernel/setup_64.c index 63547394048..914389158a9 100644 --- a/arch/powerpc/kernel/setup_64.c +++ b/arch/powerpc/kernel/setup_64.c @@ -61,7 +61,6 @@  #include <asm/xmon.h>  #include <asm/udbg.h>  #include <asm/kexec.h> -#include <asm/swiotlb.h>  #include <asm/mmu_context.h>  #include "setup.h" @@ -541,11 +540,6 @@ void __init setup_arch(char **cmdline_p)  	if (ppc_md.setup_arch)  		ppc_md.setup_arch(); -#ifdef CONFIG_SWIOTLB -	if (ppc_swiotlb_enable) -		swiotlb_init(1); -#endif -  	paging_init();  	/* Initialize the MMU context management stuff */ diff --git a/arch/powerpc/kernel/smp-tbsync.c b/arch/powerpc/kernel/smp-tbsync.c index a5e54526403..03e45c4a9ef 100644 --- a/arch/powerpc/kernel/smp-tbsync.c +++ b/arch/powerpc/kernel/smp-tbsync.c @@ -10,6 +10,7 @@  #include <linux/smp.h>  #include <linux/unistd.h>  #include <linux/init.h> +#include <linux/slab.h>  #include <asm/atomic.h>  #include <asm/smp.h>  #include <asm/time.h> diff --git a/arch/powerpc/kernel/softemu8xx.c b/arch/powerpc/kernel/softemu8xx.c index 23c8c5e7dc4..af0e8290b4f 100644 --- a/arch/powerpc/kernel/softemu8xx.c +++ b/arch/powerpc/kernel/softemu8xx.c @@ -21,7 +21,6 @@  #include <linux/stddef.h>  #include <linux/unistd.h>  #include <linux/ptrace.h> -#include <linux/slab.h>  #include <linux/user.h>  #include <linux/interrupt.h> diff --git a/arch/powerpc/kernel/sys_ppc32.c b/arch/powerpc/kernel/sys_ppc32.c index c5a4732bcc4..19471a1cef1 100644 --- a/arch/powerpc/kernel/sys_ppc32.c +++ b/arch/powerpc/kernel/sys_ppc32.c @@ -41,6 +41,7 @@  #include <linux/ptrace.h>  #include <linux/elf.h>  #include <linux/ipc.h> +#include <linux/slab.h>  #include <asm/ptrace.h>  #include <asm/types.h> diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c index 696626a2e83..29d128eb6c4 100644 --- a/arch/powerpc/kernel/traps.c +++ b/arch/powerpc/kernel/traps.c @@ -21,7 +21,6 @@  #include <linux/stddef.h>  #include <linux/unistd.h>  #include <linux/ptrace.h> -#include <linux/slab.h>  #include <linux/user.h>  #include <linux/interrupt.h>  #include <linux/init.h> diff --git a/arch/powerpc/kernel/vio.c b/arch/powerpc/kernel/vio.c index 77f64218abf..82237176a2a 100644 --- a/arch/powerpc/kernel/vio.c +++ b/arch/powerpc/kernel/vio.c @@ -17,6 +17,7 @@  #include <linux/types.h>  #include <linux/device.h>  #include <linux/init.h> +#include <linux/slab.h>  #include <linux/console.h>  #include <linux/module.h>  #include <linux/mm.h>  |