diff options
Diffstat (limited to 'arch/powerpc/kernel')
| -rw-r--r-- | arch/powerpc/kernel/cputable.c | 4 | ||||
| -rw-r--r-- | arch/powerpc/kernel/hw_breakpoint.c | 12 | ||||
| -rw-r--r-- | arch/powerpc/kernel/vmlinux.lds.S | 6 | 
3 files changed, 16 insertions, 6 deletions
| diff --git a/arch/powerpc/kernel/cputable.c b/arch/powerpc/kernel/cputable.c index e745abc5457a..245be4fafe13 100644 --- a/arch/powerpc/kernel/cputable.c +++ b/arch/powerpc/kernel/cputable.c @@ -2193,11 +2193,13 @@ static struct cpu_spec * __init setup_cpu_spec(unsigned long offset,  		 * oprofile_cpu_type already has a value, then we are  		 * possibly overriding a real PVR with a logical one,  		 * and, in that case, keep the current value for -		 * oprofile_cpu_type. +		 * oprofile_cpu_type. Futhermore, let's ensure that the +		 * fix for the PMAO bug is enabled on compatibility mode.  		 */  		if (old.oprofile_cpu_type != NULL) {  			t->oprofile_cpu_type = old.oprofile_cpu_type;  			t->oprofile_type = old.oprofile_type; +			t->cpu_features |= old.cpu_features & CPU_FTR_PMAO_BUG;  		}  	} diff --git a/arch/powerpc/kernel/hw_breakpoint.c b/arch/powerpc/kernel/hw_breakpoint.c index 2462cd7c565c..d0854320bb50 100644 --- a/arch/powerpc/kernel/hw_breakpoint.c +++ b/arch/powerpc/kernel/hw_breakpoint.c @@ -331,11 +331,13 @@ int hw_breakpoint_handler(struct die_args *args)  	}  	info->type &= ~HW_BRK_TYPE_EXTRANEOUS_IRQ; -	if (!dar_within_range(regs->dar, info)) -		info->type |= HW_BRK_TYPE_EXTRANEOUS_IRQ; - -	if (!IS_ENABLED(CONFIG_PPC_8xx) && !stepping_handler(regs, bp, info)) -		goto out; +	if (IS_ENABLED(CONFIG_PPC_8xx)) { +		if (!dar_within_range(regs->dar, info)) +			info->type |= HW_BRK_TYPE_EXTRANEOUS_IRQ; +	} else { +		if (!stepping_handler(regs, bp, info)) +			goto out; +	}  	/*  	 * As a policy, the callback is invoked in a 'trigger-after-execute' diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S index b4c89a1acebb..a32d478a7f41 100644 --- a/arch/powerpc/kernel/vmlinux.lds.S +++ b/arch/powerpc/kernel/vmlinux.lds.S @@ -303,6 +303,12 @@ SECTIONS  		*(.branch_lt)  	} +#ifdef CONFIG_DEBUG_INFO_BTF +	.BTF : AT(ADDR(.BTF) - LOAD_OFFSET) { +		*(.BTF) +	} +#endif +  	.opd : AT(ADDR(.opd) - LOAD_OFFSET) {  		__start_opd = .;  		KEEP(*(.opd)) |