Re: [PATCH v7 07/11] powerpc/powernv: Add platform support for stop instruction
> > > > > > @@ -439,7 +540,18 @@ timebase_resync: > > > */ > > > bne cr4,clear_lock > > > > > > - /* Restore per core state */ > > > + /* > > > + * First thread in the core to wake up and its waking up > > > with > > > + * complete hypervisor state loss. Restore per core > > > hypervisor > > > + * state. > > > + */ > > > +BEGIN_FTR_SECTION > > > + ld r4,_PTCR(r1) > > > + mtspr SPRN_PTCR,r4 > > > + ld r4,_RPR(r1) > > > + mtspr SPRN_RPR,r4 > > RPR looks wrong here. This should be on POWER8 too. > > > > This has changed since v6 and not noted in the v7 comments. Why are > > you > > changing this now? > > > RPR is a per-core resource in P9. So with this patch, RPR will continue > to be restored per-subcore in P8 and will restored once per core in P9. Ok, thanks for the explanation. Mikey
Re: [PATCH v7 07/11] powerpc/powernv: Add platform support for stop instruction
> > > > > > @@ -439,7 +540,18 @@ timebase_resync: > > > */ > > > bne cr4,clear_lock > > > > > > - /* Restore per core state */ > > > + /* > > > + * First thread in the core to wake up and its waking up > > > with > > > + * complete hypervisor state loss. Restore per core > > > hypervisor > > > + * state. > > > + */ > > > +BEGIN_FTR_SECTION > > > + ld r4,_PTCR(r1) > > > + mtspr SPRN_PTCR,r4 > > > + ld r4,_RPR(r1) > > > + mtspr SPRN_RPR,r4 > > RPR looks wrong here. This should be on POWER8 too. > > > > This has changed since v6 and not noted in the v7 comments. Why are > > you > > changing this now? > > > RPR is a per-core resource in P9. So with this patch, RPR will continue > to be restored per-subcore in P8 and will restored once per core in P9. Ok, thanks for the explanation. Mikey
Re: [PATCH v7 07/11] powerpc/powernv: Add platform support for stop instruction
On 07/08/2016 07:50 AM, Michael Neuling wrote: > >> diff --git a/arch/powerpc/include/asm/cpuidle.h >> b/arch/powerpc/include/asm/cpuidle.h >> index d2f99ca..3d7fc06 100644 >> --- a/arch/powerpc/include/asm/cpuidle.h >> +++ b/arch/powerpc/include/asm/cpuidle.h >> @@ -13,6 +13,8 @@ >> #ifndef __ASSEMBLY__ >> extern u32 pnv_fastsleep_workaround_at_entry[]; >> extern u32 pnv_fastsleep_workaround_at_exit[]; >> + >> +extern u64 pnv_first_deep_stop_state; > > mpe asked a question about this which you neither answered or addressed. > "Should this have some safe initial value?" > > I'm thinking we could do this which is what you have in the init call. >u64 pnv_first_deep_stop_state = MAX_STOP_STATE; > I missed the comment. I'll make the change. > >> @@ -439,7 +540,18 @@ timebase_resync: >> */ >> bne cr4,clear_lock >> >> -/* Restore per core state */ >> +/* >> + * First thread in the core to wake up and its waking up with >> + * complete hypervisor state loss. Restore per core hypervisor >> + * state. >> + */ >> +BEGIN_FTR_SECTION >> +ld r4,_PTCR(r1) >> +mtspr SPRN_PTCR,r4 >> +ld r4,_RPR(r1) >> +mtspr SPRN_RPR,r4 > > RPR looks wrong here. This should be on POWER8 too. > > This has changed since v6 and not noted in the v7 comments. Why are you > changing this now? > RPR is a per-core resource in P9. So with this patch, RPR will continue to be restored per-subcore in P8 and will restored once per core in P9. >> +END_FTR_SECTION_IFSET(CPU_FTR_ARCH_300) >> + >> ld r4,_TSCR(r1) >> mtspr SPRN_TSCR,r4 >> ld r4,_WORC(r1) >> @@ -461,9 +573,7 @@ common_exit: >> >> /* Waking up from winkle */ >> >> -/* Restore per thread state */ >> -bl __restore_cpu_power8 >> - >> +BEGIN_MMU_FTR_SECTION >> /* Restore SLB from PACA */ >> ld r8,PACA_SLBSHADOWPTR(r13) >> >> @@ -477,6 +587,9 @@ common_exit: >> slbmte r6,r5 >> 1: addir8,r8,16 >> .endr >> +END_MMU_FTR_SECTION_IFCLR(MMU_FTR_RADIX) >> + >> +/* Restore per thread state */ > > This FTR section is too big It ends up at 25 instructions with the loop. > Probably better like this: > > BEGIN_MMU_FTR_SECTION > b no_segments > END_MMU_FTR_SECTION_IFSET(MMU_FTR_RADIX) > /* Restore SLB from PACA */ > ld r8,PACA_SLBSHADOWPTR(r13) > > .rept SLB_NUM_BOLTED > li r3, SLBSHADOW_SAVEAREA > LDX_BE r5, r8, r3 > addir3, r3, 8 > LDX_BE r6, r8, r3 > andis. r7,r5,SLB_ESID_V@h > beq 1f > slbmte r6,r5 > 1:addir8,r8,16 > .endr > > no_segments: > Cool. Will make the change. Thanks, Shreyas
Re: [PATCH v7 07/11] powerpc/powernv: Add platform support for stop instruction
On 07/08/2016 07:50 AM, Michael Neuling wrote: > >> diff --git a/arch/powerpc/include/asm/cpuidle.h >> b/arch/powerpc/include/asm/cpuidle.h >> index d2f99ca..3d7fc06 100644 >> --- a/arch/powerpc/include/asm/cpuidle.h >> +++ b/arch/powerpc/include/asm/cpuidle.h >> @@ -13,6 +13,8 @@ >> #ifndef __ASSEMBLY__ >> extern u32 pnv_fastsleep_workaround_at_entry[]; >> extern u32 pnv_fastsleep_workaround_at_exit[]; >> + >> +extern u64 pnv_first_deep_stop_state; > > mpe asked a question about this which you neither answered or addressed. > "Should this have some safe initial value?" > > I'm thinking we could do this which is what you have in the init call. >u64 pnv_first_deep_stop_state = MAX_STOP_STATE; > I missed the comment. I'll make the change. > >> @@ -439,7 +540,18 @@ timebase_resync: >> */ >> bne cr4,clear_lock >> >> -/* Restore per core state */ >> +/* >> + * First thread in the core to wake up and its waking up with >> + * complete hypervisor state loss. Restore per core hypervisor >> + * state. >> + */ >> +BEGIN_FTR_SECTION >> +ld r4,_PTCR(r1) >> +mtspr SPRN_PTCR,r4 >> +ld r4,_RPR(r1) >> +mtspr SPRN_RPR,r4 > > RPR looks wrong here. This should be on POWER8 too. > > This has changed since v6 and not noted in the v7 comments. Why are you > changing this now? > RPR is a per-core resource in P9. So with this patch, RPR will continue to be restored per-subcore in P8 and will restored once per core in P9. >> +END_FTR_SECTION_IFSET(CPU_FTR_ARCH_300) >> + >> ld r4,_TSCR(r1) >> mtspr SPRN_TSCR,r4 >> ld r4,_WORC(r1) >> @@ -461,9 +573,7 @@ common_exit: >> >> /* Waking up from winkle */ >> >> -/* Restore per thread state */ >> -bl __restore_cpu_power8 >> - >> +BEGIN_MMU_FTR_SECTION >> /* Restore SLB from PACA */ >> ld r8,PACA_SLBSHADOWPTR(r13) >> >> @@ -477,6 +587,9 @@ common_exit: >> slbmte r6,r5 >> 1: addir8,r8,16 >> .endr >> +END_MMU_FTR_SECTION_IFCLR(MMU_FTR_RADIX) >> + >> +/* Restore per thread state */ > > This FTR section is too big It ends up at 25 instructions with the loop. > Probably better like this: > > BEGIN_MMU_FTR_SECTION > b no_segments > END_MMU_FTR_SECTION_IFSET(MMU_FTR_RADIX) > /* Restore SLB from PACA */ > ld r8,PACA_SLBSHADOWPTR(r13) > > .rept SLB_NUM_BOLTED > li r3, SLBSHADOW_SAVEAREA > LDX_BE r5, r8, r3 > addir3, r3, 8 > LDX_BE r6, r8, r3 > andis. r7,r5,SLB_ESID_V@h > beq 1f > slbmte r6,r5 > 1:addir8,r8,16 > .endr > > no_segments: > Cool. Will make the change. Thanks, Shreyas
Re: [PATCH v7 07/11] powerpc/powernv: Add platform support for stop instruction
> diff --git a/arch/powerpc/include/asm/cpuidle.h > b/arch/powerpc/include/asm/cpuidle.h > index d2f99ca..3d7fc06 100644 > --- a/arch/powerpc/include/asm/cpuidle.h > +++ b/arch/powerpc/include/asm/cpuidle.h > @@ -13,6 +13,8 @@ > #ifndef __ASSEMBLY__ > extern u32 pnv_fastsleep_workaround_at_entry[]; > extern u32 pnv_fastsleep_workaround_at_exit[]; > + > +extern u64 pnv_first_deep_stop_state; mpe asked a question about this which you neither answered or addressed. "Should this have some safe initial value?" I'm thinking we could do this which is what you have in the init call. u64 pnv_first_deep_stop_state = MAX_STOP_STATE; > @@ -439,7 +540,18 @@ timebase_resync: > */ > bne cr4,clear_lock > > - /* Restore per core state */ > + /* > + * First thread in the core to wake up and its waking up with > + * complete hypervisor state loss. Restore per core hypervisor > + * state. > + */ > +BEGIN_FTR_SECTION > + ld r4,_PTCR(r1) > + mtspr SPRN_PTCR,r4 > + ld r4,_RPR(r1) > + mtspr SPRN_RPR,r4 RPR looks wrong here. This should be on POWER8 too. This has changed since v6 and not noted in the v7 comments. Why are you changing this now? > +END_FTR_SECTION_IFSET(CPU_FTR_ARCH_300) > + > ld r4,_TSCR(r1) > mtspr SPRN_TSCR,r4 > ld r4,_WORC(r1) > @@ -461,9 +573,7 @@ common_exit: > > /* Waking up from winkle */ > > - /* Restore per thread state */ > - bl __restore_cpu_power8 > - > +BEGIN_MMU_FTR_SECTION > /* Restore SLB from PACA */ > ld r8,PACA_SLBSHADOWPTR(r13) > > @@ -477,6 +587,9 @@ common_exit: > slbmte r6,r5 > 1: addir8,r8,16 > .endr > +END_MMU_FTR_SECTION_IFCLR(MMU_FTR_RADIX) > + > + /* Restore per thread state */ This FTR section is too big It ends up at 25 instructions with the loop. Probably better like this: BEGIN_MMU_FTR_SECTION b no_segments END_MMU_FTR_SECTION_IFSET(MMU_FTR_RADIX) /* Restore SLB from PACA */ ld r8,PACA_SLBSHADOWPTR(r13) .rept SLB_NUM_BOLTED li r3, SLBSHADOW_SAVEAREA LDX_BE r5, r8, r3 addir3, r3, 8 LDX_BE r6, r8, r3 andis. r7,r5,SLB_ESID_V@h beq 1f slbmte r6,r5 1: addir8,r8,16 .endr no_segments:
Re: [PATCH v7 07/11] powerpc/powernv: Add platform support for stop instruction
> diff --git a/arch/powerpc/include/asm/cpuidle.h > b/arch/powerpc/include/asm/cpuidle.h > index d2f99ca..3d7fc06 100644 > --- a/arch/powerpc/include/asm/cpuidle.h > +++ b/arch/powerpc/include/asm/cpuidle.h > @@ -13,6 +13,8 @@ > #ifndef __ASSEMBLY__ > extern u32 pnv_fastsleep_workaround_at_entry[]; > extern u32 pnv_fastsleep_workaround_at_exit[]; > + > +extern u64 pnv_first_deep_stop_state; mpe asked a question about this which you neither answered or addressed. "Should this have some safe initial value?" I'm thinking we could do this which is what you have in the init call. u64 pnv_first_deep_stop_state = MAX_STOP_STATE; > @@ -439,7 +540,18 @@ timebase_resync: > */ > bne cr4,clear_lock > > - /* Restore per core state */ > + /* > + * First thread in the core to wake up and its waking up with > + * complete hypervisor state loss. Restore per core hypervisor > + * state. > + */ > +BEGIN_FTR_SECTION > + ld r4,_PTCR(r1) > + mtspr SPRN_PTCR,r4 > + ld r4,_RPR(r1) > + mtspr SPRN_RPR,r4 RPR looks wrong here. This should be on POWER8 too. This has changed since v6 and not noted in the v7 comments. Why are you changing this now? > +END_FTR_SECTION_IFSET(CPU_FTR_ARCH_300) > + > ld r4,_TSCR(r1) > mtspr SPRN_TSCR,r4 > ld r4,_WORC(r1) > @@ -461,9 +573,7 @@ common_exit: > > /* Waking up from winkle */ > > - /* Restore per thread state */ > - bl __restore_cpu_power8 > - > +BEGIN_MMU_FTR_SECTION > /* Restore SLB from PACA */ > ld r8,PACA_SLBSHADOWPTR(r13) > > @@ -477,6 +587,9 @@ common_exit: > slbmte r6,r5 > 1: addir8,r8,16 > .endr > +END_MMU_FTR_SECTION_IFCLR(MMU_FTR_RADIX) > + > + /* Restore per thread state */ This FTR section is too big It ends up at 25 instructions with the loop. Probably better like this: BEGIN_MMU_FTR_SECTION b no_segments END_MMU_FTR_SECTION_IFSET(MMU_FTR_RADIX) /* Restore SLB from PACA */ ld r8,PACA_SLBSHADOWPTR(r13) .rept SLB_NUM_BOLTED li r3, SLBSHADOW_SAVEAREA LDX_BE r5, r8, r3 addir3, r3, 8 LDX_BE r6, r8, r3 andis. r7,r5,SLB_ESID_V@h beq 1f slbmte r6,r5 1: addir8,r8,16 .endr no_segments:
[PATCH v7 07/11] powerpc/powernv: Add platform support for stop instruction
POWER ISA v3 defines a new idle processor core mechanism. In summary, a) new instruction named stop is added. This instruction replaces instructions like nap, sleep, rvwinkle. b) new per thread SPR named Processor Stop Status and Control Register (PSSCR) is added which controls the behavior of stop instruction. PSSCR layout: -- | PLS | /// | SD | ESL | EC | PSLL | /// | TR | MTL | RL | -- 0 4 41 4243 44 4854 5660 PSSCR key fields: Bits 0:3 - Power-Saving Level Status. This field indicates the lowest power-saving state the thread entered since stop instruction was last executed. Bit 42 - Enable State Loss 0 - No state is lost irrespective of other fields 1 - Allows state loss Bits 44:47 - Power-Saving Level Limit This limits the power-saving level that can be entered into. Bits 60:63 - Requested Level Used to specify which power-saving level must be entered on executing stop instruction This patch adds support for stop instruction and PSSCR handling. Reviewed-by: Gautham R. ShenoySigned-off-by: Shreyas B. Prabhu --- Changes in v7 = - LMRR, LMSER and ADSR not restored since its not necessary - power_stop0, power_stop renamed to power9_idle and power_idle_stop - PSSCR template is now a macro instead of storing in paca - power9_idle in C file instead of assembly - Fixed TOC related bug - Handling subcore within FTR section - Functions in idle.c reordered and broken into multiple functions - calling __restore_cpu_power8/9 via cur_cpu_spec->cpu_restore Changes in v6 = - Save/restore new P9 SPRs when using deep idle states Changes in v4: == - Added PSSCR layout to commit message - Improved / Fixed comments - Fixed whitespace error in paca.h - Using MAX_POSSIBLE_STOP_STATE macro instead of hardcoding 0xF as max possible stop state Changes in v3: == - Instead of introducing new file idle_power_stop.S, P9 idle support is added to idle_power_common.S using CPU_FTR sections. - Fixed r4 reg clobbering in power_stop0 - Improved comments Changes in v2: == - Using CPU_FTR_ARCH_300 bit instead of CPU_FTR_STOP_INST arch/powerpc/include/asm/cpuidle.h| 2 + arch/powerpc/include/asm/kvm_book3s_asm.h | 2 +- arch/powerpc/include/asm/opal-api.h | 11 +- arch/powerpc/include/asm/ppc-opcode.h | 4 + arch/powerpc/include/asm/processor.h | 2 + arch/powerpc/include/asm/reg.h| 10 ++ arch/powerpc/kernel/idle_book3s.S | 189 -- arch/powerpc/platforms/powernv/idle.c | 174 ++- 8 files changed, 328 insertions(+), 66 deletions(-) diff --git a/arch/powerpc/include/asm/cpuidle.h b/arch/powerpc/include/asm/cpuidle.h index d2f99ca..3d7fc06 100644 --- a/arch/powerpc/include/asm/cpuidle.h +++ b/arch/powerpc/include/asm/cpuidle.h @@ -13,6 +13,8 @@ #ifndef __ASSEMBLY__ extern u32 pnv_fastsleep_workaround_at_entry[]; extern u32 pnv_fastsleep_workaround_at_exit[]; + +extern u64 pnv_first_deep_stop_state; #endif #endif diff --git a/arch/powerpc/include/asm/kvm_book3s_asm.h b/arch/powerpc/include/asm/kvm_book3s_asm.h index 72b6225..d318d43 100644 --- a/arch/powerpc/include/asm/kvm_book3s_asm.h +++ b/arch/powerpc/include/asm/kvm_book3s_asm.h @@ -162,7 +162,7 @@ struct kvmppc_book3s_shadow_vcpu { /* Values for kvm_state */ #define KVM_HWTHREAD_IN_KERNEL 0 -#define KVM_HWTHREAD_IN_NAP1 +#define KVM_HWTHREAD_IN_IDLE 1 #define KVM_HWTHREAD_IN_KVM2 #endif /* __ASM_KVM_BOOK3S_ASM_H__ */ diff --git a/arch/powerpc/include/asm/opal-api.h b/arch/powerpc/include/asm/opal-api.h index 72b5f27..6de1e4e 100644 --- a/arch/powerpc/include/asm/opal-api.h +++ b/arch/powerpc/include/asm/opal-api.h @@ -166,13 +166,20 @@ /* Device tree flags */ -/* Flags set in power-mgmt nodes in device tree if - * respective idle states are supported in the platform. +/* + * Flags set in power-mgmt nodes in device tree describing + * idle states that are supported in the platform. */ + +#define OPAL_PM_TIMEBASE_STOP 0x0002 +#define OPAL_PM_LOSE_HYP_CONTEXT 0x2000 +#define OPAL_PM_LOSE_FULL_CONTEXT 0x4000 #define OPAL_PM_NAP_ENABLED0x0001 #define OPAL_PM_SLEEP_ENABLED 0x0002 #define OPAL_PM_WINKLE_ENABLED 0x0004 #define OPAL_PM_SLEEP_ENABLED_ER1 0x0008 /* with workaround */ +#define OPAL_PM_STOP_INST_FAST 0x0010 +#define OPAL_PM_STOP_INST_DEEP 0x0020 /* * OPAL_CONFIG_CPU_IDLE_STATE parameters diff --git a/arch/powerpc/include/asm/ppc-opcode.h b/arch/powerpc/include/asm/ppc-opcode.h index 9de9df1..81657a1 100644 ---
[PATCH v7 07/11] powerpc/powernv: Add platform support for stop instruction
POWER ISA v3 defines a new idle processor core mechanism. In summary, a) new instruction named stop is added. This instruction replaces instructions like nap, sleep, rvwinkle. b) new per thread SPR named Processor Stop Status and Control Register (PSSCR) is added which controls the behavior of stop instruction. PSSCR layout: -- | PLS | /// | SD | ESL | EC | PSLL | /// | TR | MTL | RL | -- 0 4 41 4243 44 4854 5660 PSSCR key fields: Bits 0:3 - Power-Saving Level Status. This field indicates the lowest power-saving state the thread entered since stop instruction was last executed. Bit 42 - Enable State Loss 0 - No state is lost irrespective of other fields 1 - Allows state loss Bits 44:47 - Power-Saving Level Limit This limits the power-saving level that can be entered into. Bits 60:63 - Requested Level Used to specify which power-saving level must be entered on executing stop instruction This patch adds support for stop instruction and PSSCR handling. Reviewed-by: Gautham R. Shenoy Signed-off-by: Shreyas B. Prabhu --- Changes in v7 = - LMRR, LMSER and ADSR not restored since its not necessary - power_stop0, power_stop renamed to power9_idle and power_idle_stop - PSSCR template is now a macro instead of storing in paca - power9_idle in C file instead of assembly - Fixed TOC related bug - Handling subcore within FTR section - Functions in idle.c reordered and broken into multiple functions - calling __restore_cpu_power8/9 via cur_cpu_spec->cpu_restore Changes in v6 = - Save/restore new P9 SPRs when using deep idle states Changes in v4: == - Added PSSCR layout to commit message - Improved / Fixed comments - Fixed whitespace error in paca.h - Using MAX_POSSIBLE_STOP_STATE macro instead of hardcoding 0xF as max possible stop state Changes in v3: == - Instead of introducing new file idle_power_stop.S, P9 idle support is added to idle_power_common.S using CPU_FTR sections. - Fixed r4 reg clobbering in power_stop0 - Improved comments Changes in v2: == - Using CPU_FTR_ARCH_300 bit instead of CPU_FTR_STOP_INST arch/powerpc/include/asm/cpuidle.h| 2 + arch/powerpc/include/asm/kvm_book3s_asm.h | 2 +- arch/powerpc/include/asm/opal-api.h | 11 +- arch/powerpc/include/asm/ppc-opcode.h | 4 + arch/powerpc/include/asm/processor.h | 2 + arch/powerpc/include/asm/reg.h| 10 ++ arch/powerpc/kernel/idle_book3s.S | 189 -- arch/powerpc/platforms/powernv/idle.c | 174 ++- 8 files changed, 328 insertions(+), 66 deletions(-) diff --git a/arch/powerpc/include/asm/cpuidle.h b/arch/powerpc/include/asm/cpuidle.h index d2f99ca..3d7fc06 100644 --- a/arch/powerpc/include/asm/cpuidle.h +++ b/arch/powerpc/include/asm/cpuidle.h @@ -13,6 +13,8 @@ #ifndef __ASSEMBLY__ extern u32 pnv_fastsleep_workaround_at_entry[]; extern u32 pnv_fastsleep_workaround_at_exit[]; + +extern u64 pnv_first_deep_stop_state; #endif #endif diff --git a/arch/powerpc/include/asm/kvm_book3s_asm.h b/arch/powerpc/include/asm/kvm_book3s_asm.h index 72b6225..d318d43 100644 --- a/arch/powerpc/include/asm/kvm_book3s_asm.h +++ b/arch/powerpc/include/asm/kvm_book3s_asm.h @@ -162,7 +162,7 @@ struct kvmppc_book3s_shadow_vcpu { /* Values for kvm_state */ #define KVM_HWTHREAD_IN_KERNEL 0 -#define KVM_HWTHREAD_IN_NAP1 +#define KVM_HWTHREAD_IN_IDLE 1 #define KVM_HWTHREAD_IN_KVM2 #endif /* __ASM_KVM_BOOK3S_ASM_H__ */ diff --git a/arch/powerpc/include/asm/opal-api.h b/arch/powerpc/include/asm/opal-api.h index 72b5f27..6de1e4e 100644 --- a/arch/powerpc/include/asm/opal-api.h +++ b/arch/powerpc/include/asm/opal-api.h @@ -166,13 +166,20 @@ /* Device tree flags */ -/* Flags set in power-mgmt nodes in device tree if - * respective idle states are supported in the platform. +/* + * Flags set in power-mgmt nodes in device tree describing + * idle states that are supported in the platform. */ + +#define OPAL_PM_TIMEBASE_STOP 0x0002 +#define OPAL_PM_LOSE_HYP_CONTEXT 0x2000 +#define OPAL_PM_LOSE_FULL_CONTEXT 0x4000 #define OPAL_PM_NAP_ENABLED0x0001 #define OPAL_PM_SLEEP_ENABLED 0x0002 #define OPAL_PM_WINKLE_ENABLED 0x0004 #define OPAL_PM_SLEEP_ENABLED_ER1 0x0008 /* with workaround */ +#define OPAL_PM_STOP_INST_FAST 0x0010 +#define OPAL_PM_STOP_INST_DEEP 0x0020 /* * OPAL_CONFIG_CPU_IDLE_STATE parameters diff --git a/arch/powerpc/include/asm/ppc-opcode.h b/arch/powerpc/include/asm/ppc-opcode.h index 9de9df1..81657a1 100644 --- a/arch/powerpc/include/asm/ppc-opcode.h +++