Message ID | 1385157149-22233-1-git-send-email-scottwood@freescale.com |
---|---|
State | New, archived |
Headers | show |
> -----Original Message----- > From: Wood Scott-B07421 > Sent: Saturday, November 23, 2013 3:22 AM > To: Alexander Graf > Cc: kvm-ppc@vger.kernel.org; kvm@vger.kernel.org; Wood Scott-B07421; Bhushan > Bharat-R65777 > Subject: [PATCH] powerpc/kvm/booke: Fix build break due to stack frame size > warning > > Commit ce11e48b7fdd256ec68b932a89b397a790566031 ("KVM: PPC: E500: Add > userspace debug stub support") added "struct thread_struct" to the > stack of kvmppc_vcpu_run(). thread_struct is 1152 bytes on my build, > compared to 48 bytes for the recently-introduced "struct debug_reg". > Use the latter instead. > > This fixes the following error: > > cc1: warnings being treated as errors > arch/powerpc/kvm/booke.c: In function 'kvmppc_vcpu_run': > arch/powerpc/kvm/booke.c:760:1: error: the frame size of 1424 bytes is larger > than 1024 bytes > make[2]: *** [arch/powerpc/kvm/booke.o] Error 1 > make[1]: *** [arch/powerpc/kvm] Error 2 > make[1]: *** Waiting for unfinished jobs.... > > Signed-off-by: Scott Wood <scottwood@freescale.com> > Cc: Bharat Bhushan <r65777@freescale.com> > --- > Build tested only. Bharat, please test. Tested with qemu debug stub; It works fine -Bharat > > arch/powerpc/include/asm/switch_to.h | 2 +- > arch/powerpc/kernel/process.c | 32 ++++++++++++++++---------------- > arch/powerpc/kvm/booke.c | 12 ++++++------ > 3 files changed, 23 insertions(+), 23 deletions(-) > > diff --git a/arch/powerpc/include/asm/switch_to.h > b/arch/powerpc/include/asm/switch_to.h > index 9ee1261..aace905 100644 > --- a/arch/powerpc/include/asm/switch_to.h > +++ b/arch/powerpc/include/asm/switch_to.h > @@ -35,7 +35,7 @@ extern void giveup_vsx(struct task_struct *); > extern void enable_kernel_spe(void); > extern void giveup_spe(struct task_struct *); > extern void load_up_spe(struct task_struct *); > -extern void switch_booke_debug_regs(struct thread_struct *new_thread); > +extern void switch_booke_debug_regs(struct debug_reg *new_debug); > > #ifndef CONFIG_SMP > extern void discard_lazy_cpu_state(void); > diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c > index 3386d8a..4a96556 100644 > --- a/arch/powerpc/kernel/process.c > +++ b/arch/powerpc/kernel/process.c > @@ -339,7 +339,7 @@ static void set_debug_reg_defaults(struct thread_struct > *thread) > #endif > } > > -static void prime_debug_regs(struct thread_struct *thread) > +static void prime_debug_regs(struct debug_reg *debug) > { > /* > * We could have inherited MSR_DE from userspace, since > @@ -348,22 +348,22 @@ static void prime_debug_regs(struct thread_struct *thread) > */ > mtmsr(mfmsr() & ~MSR_DE); > > - mtspr(SPRN_IAC1, thread->debug.iac1); > - mtspr(SPRN_IAC2, thread->debug.iac2); > + mtspr(SPRN_IAC1, debug->iac1); > + mtspr(SPRN_IAC2, debug->iac2); > #if CONFIG_PPC_ADV_DEBUG_IACS > 2 > - mtspr(SPRN_IAC3, thread->debug.iac3); > - mtspr(SPRN_IAC4, thread->debug.iac4); > + mtspr(SPRN_IAC3, debug->iac3); > + mtspr(SPRN_IAC4, debug->iac4); > #endif > - mtspr(SPRN_DAC1, thread->debug.dac1); > - mtspr(SPRN_DAC2, thread->debug.dac2); > + mtspr(SPRN_DAC1, debug->dac1); > + mtspr(SPRN_DAC2, debug->dac2); > #if CONFIG_PPC_ADV_DEBUG_DVCS > 0 > - mtspr(SPRN_DVC1, thread->debug.dvc1); > - mtspr(SPRN_DVC2, thread->debug.dvc2); > + mtspr(SPRN_DVC1, debug->dvc1); > + mtspr(SPRN_DVC2, debug->dvc2); > #endif > - mtspr(SPRN_DBCR0, thread->debug.dbcr0); > - mtspr(SPRN_DBCR1, thread->debug.dbcr1); > + mtspr(SPRN_DBCR0, debug->dbcr0); > + mtspr(SPRN_DBCR1, debug->dbcr1); > #ifdef CONFIG_BOOKE > - mtspr(SPRN_DBCR2, thread->debug.dbcr2); > + mtspr(SPRN_DBCR2, debug->dbcr2); > #endif > } > /* > @@ -371,11 +371,11 @@ static void prime_debug_regs(struct thread_struct *thread) > * debug registers, set the debug registers from the values > * stored in the new thread. > */ > -void switch_booke_debug_regs(struct thread_struct *new_thread) > +void switch_booke_debug_regs(struct debug_reg *new_debug) > { > if ((current->thread.debug.dbcr0 & DBCR0_IDM) > - || (new_thread->debug.dbcr0 & DBCR0_IDM)) > - prime_debug_regs(new_thread); > + || (new_debug->dbcr0 & DBCR0_IDM)) > + prime_debug_regs(new_debug); > } > EXPORT_SYMBOL_GPL(switch_booke_debug_regs); > #else /* !CONFIG_PPC_ADV_DEBUG_REGS */ > @@ -683,7 +683,7 @@ struct task_struct *__switch_to(struct task_struct *prev, > #endif /* CONFIG_SMP */ > > #ifdef CONFIG_PPC_ADV_DEBUG_REGS > - switch_booke_debug_regs(&new->thread); > + switch_booke_debug_regs(&new->thread.debug); > #else > /* > * For PPC_BOOK3S_64, we use the hw-breakpoint interfaces that would > diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c > index 53e65a2..0591e05 100644 > --- a/arch/powerpc/kvm/booke.c > +++ b/arch/powerpc/kvm/booke.c > @@ -681,7 +681,7 @@ int kvmppc_core_check_requests(struct kvm_vcpu *vcpu) > int kvmppc_vcpu_run(struct kvm_run *kvm_run, struct kvm_vcpu *vcpu) > { > int ret, s; > - struct thread_struct thread; > + struct debug_reg debug; > #ifdef CONFIG_PPC_FPU > struct thread_fp_state fp; > int fpexc_mode; > @@ -723,9 +723,9 @@ int kvmppc_vcpu_run(struct kvm_run *kvm_run, struct kvm_vcpu > *vcpu) > #endif > > /* Switch to guest debug context */ > - thread.debug = vcpu->arch.shadow_dbg_reg; > - switch_booke_debug_regs(&thread); > - thread.debug = current->thread.debug; > + debug = vcpu->arch.shadow_dbg_reg; > + switch_booke_debug_regs(&debug); > + debug = current->thread.debug; > current->thread.debug = vcpu->arch.shadow_dbg_reg; > > kvmppc_fix_ee_before_entry(); > @@ -736,8 +736,8 @@ int kvmppc_vcpu_run(struct kvm_run *kvm_run, struct kvm_vcpu > *vcpu) > We also get here with interrupts enabled. */ > > /* Switch back to user space debug context */ > - switch_booke_debug_regs(&thread); > - current->thread.debug = thread.debug; > + switch_booke_debug_regs(&debug); > + current->thread.debug = debug; > > #ifdef CONFIG_PPC_FPU > kvmppc_save_guest_fp(vcpu); > -- > 1.8.1.2 -- To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Mon, 2013-11-25 at 04:26 -0600, Bharat Bhushan wrote: > > > -----Original Message----- > > From: Wood Scott-B07421 > > Sent: Saturday, November 23, 2013 3:22 AM > > To: Alexander Graf > > Cc: kvm-ppc@vger.kernel.org; kvm@vger.kernel.org; Wood Scott-B07421; Bhushan > > Bharat-R65777 > > Subject: [PATCH] powerpc/kvm/booke: Fix build break due to stack frame size > > warning > > > > Commit ce11e48b7fdd256ec68b932a89b397a790566031 ("KVM: PPC: E500: Add > > userspace debug stub support") added "struct thread_struct" to the > > stack of kvmppc_vcpu_run(). thread_struct is 1152 bytes on my build, > > compared to 48 bytes for the recently-introduced "struct debug_reg". > > Use the latter instead. > > > > This fixes the following error: > > > > cc1: warnings being treated as errors > > arch/powerpc/kvm/booke.c: In function 'kvmppc_vcpu_run': > > arch/powerpc/kvm/booke.c:760:1: error: the frame size of 1424 bytes is larger > > than 1024 bytes > > make[2]: *** [arch/powerpc/kvm/booke.o] Error 1 > > make[1]: *** [arch/powerpc/kvm] Error 2 > > make[1]: *** Waiting for unfinished jobs.... > > > > Signed-off-by: Scott Wood <scottwood@freescale.com> > > Cc: Bharat Bhushan <r65777@freescale.com> > > --- > > Build tested only. Bharat, please test. > > Tested with qemu debug stub; It works fine > > -Bharat Alex, are you going to take this through your tree? -Scott -- To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 09.12.2013, at 22:18, Scott Wood <scottwood@freescale.com> wrote: > On Mon, 2013-11-25 at 04:26 -0600, Bharat Bhushan wrote: >> >>> -----Original Message----- >>> From: Wood Scott-B07421 >>> Sent: Saturday, November 23, 2013 3:22 AM >>> To: Alexander Graf >>> Cc: kvm-ppc@vger.kernel.org; kvm@vger.kernel.org; Wood Scott-B07421; Bhushan >>> Bharat-R65777 >>> Subject: [PATCH] powerpc/kvm/booke: Fix build break due to stack frame size >>> warning >>> >>> Commit ce11e48b7fdd256ec68b932a89b397a790566031 ("KVM: PPC: E500: Add >>> userspace debug stub support") added "struct thread_struct" to the >>> stack of kvmppc_vcpu_run(). thread_struct is 1152 bytes on my build, >>> compared to 48 bytes for the recently-introduced "struct debug_reg". >>> Use the latter instead. >>> >>> This fixes the following error: >>> >>> cc1: warnings being treated as errors >>> arch/powerpc/kvm/booke.c: In function 'kvmppc_vcpu_run': >>> arch/powerpc/kvm/booke.c:760:1: error: the frame size of 1424 bytes is larger >>> than 1024 bytes >>> make[2]: *** [arch/powerpc/kvm/booke.o] Error 1 >>> make[1]: *** [arch/powerpc/kvm] Error 2 >>> make[1]: *** Waiting for unfinished jobs.... >>> >>> Signed-off-by: Scott Wood <scottwood@freescale.com> >>> Cc: Bharat Bhushan <r65777@freescale.com> >>> --- >>> Build tested only. Bharat, please test. >> >> Tested with qemu debug stub; It works fine >> >> -Bharat > > Alex, are you going to take this through your tree? Sure. Do you want this for 3.13 or 3.14? Since I don't see the breakage with my compilers I'd queue it for 3.14, but whatever works for you works for me. Also Bharat, could you please make that a real "Tested-by" line? Alex -- To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Tue, 2013-12-10 at 03:05 +0100, Alexander Graf wrote: > On 09.12.2013, at 22:18, Scott Wood <scottwood@freescale.com> wrote: > > > On Mon, 2013-11-25 at 04:26 -0600, Bharat Bhushan wrote: > >> > >>> -----Original Message----- > >>> From: Wood Scott-B07421 > >>> Sent: Saturday, November 23, 2013 3:22 AM > >>> To: Alexander Graf > >>> Cc: kvm-ppc@vger.kernel.org; kvm@vger.kernel.org; Wood Scott-B07421; Bhushan > >>> Bharat-R65777 > >>> Subject: [PATCH] powerpc/kvm/booke: Fix build break due to stack frame size > >>> warning > >>> > >>> Commit ce11e48b7fdd256ec68b932a89b397a790566031 ("KVM: PPC: E500: Add > >>> userspace debug stub support") added "struct thread_struct" to the > >>> stack of kvmppc_vcpu_run(). thread_struct is 1152 bytes on my build, > >>> compared to 48 bytes for the recently-introduced "struct debug_reg". > >>> Use the latter instead. > >>> > >>> This fixes the following error: > >>> > >>> cc1: warnings being treated as errors > >>> arch/powerpc/kvm/booke.c: In function 'kvmppc_vcpu_run': > >>> arch/powerpc/kvm/booke.c:760:1: error: the frame size of 1424 bytes is larger > >>> than 1024 bytes > >>> make[2]: *** [arch/powerpc/kvm/booke.o] Error 1 > >>> make[1]: *** [arch/powerpc/kvm] Error 2 > >>> make[1]: *** Waiting for unfinished jobs.... > >>> > >>> Signed-off-by: Scott Wood <scottwood@freescale.com> > >>> Cc: Bharat Bhushan <r65777@freescale.com> > >>> --- > >>> Build tested only. Bharat, please test. > >> > >> Tested with qemu debug stub; It works fine > >> > >> -Bharat > > > > Alex, are you going to take this through your tree? > > Sure. Do you want this for 3.13 or 3.14? Since I don't see the breakage > with my compilers I'd queue it for 3.14, but whatever works for you > works for me. 3.13 please. All I need to do to trigger the build break is enable KVM with corenet64_smp_defconfig with GCC 4.5. Oddly, I don't see it with newer GCCs (4.7.3 or 4.8.0). It looks like it may be a bug in the stack frame warning in those newer versions. This is the code from 4.8.0: 0000000000000e8c <.kvmppc_vcpu_run>: .kvmppc_vcpu_run(): /home/scott/fsl/git/linux/upstream/arch/powerpc/kvm/booke.c:682 e8c: 7c 08 02 a6 mflr r0 e90: fb 41 ff d0 std r26,-48(r1) e94: 7c 7a 1b 78 mr r26,r3 e98: fb a1 ff e8 std r29,-24(r1) e9c: fb c1 ff f0 std r30,-16(r1) ea0: 7c 9e 23 78 mr r30,r4 ea4: fb e1 ff f8 std r31,-8(r1) ea8: f8 01 00 10 std r0,16(r1) eac: fb 21 ff c8 std r25,-56(r1) eb0: fb 61 ff d8 std r27,-40(r1) eb4: fb 81 ff e0 std r28,-32(r1) eb8: f8 21 fe 41 stdu r1,-448(r1) /home/scott/fsl/git/linux/upstream/arch/powerpc/kvm/booke.c:690 ebc: 89 44 08 a9 lbz r10,2217(r4) /home/scott/fsl/git/linux/upstream/arch/powerpc/kvm/booke.c:682 ec0: 7c 3f 0b 78 mr r31,r1 ec4: e9 21 00 00 ld r9,0(r1) /home/scott/fsl/git/linux/upstream/arch/powerpc/kvm/booke.c:690 ec8: 2f 8a 00 00 cmpwi cr7,r10,0 /home/scott/fsl/git/linux/upstream/arch/powerpc/kvm/booke.c:682 ecc: f9 21 fb 41 stdu r9,-1216(r1) ed0: 3b a1 00 af addi r29,r1,175 ed4: 7b bd 06 64 rldicr r29,r29,0,57 The instruction at 0xecc expands the stack by 1216 bytes, on top of the already allocated stack frame of 448 bytes. I'm not sure why it's creating a secondary stack frame in this odd way. GCC 4.5, which produces the warning, does this instead: 0000000000000eb8 <.kvmppc_vcpu_run>: kvmppc_vcpu_run(): /home/scott/fsl/git/linux/upstream/arch/powerpc/kvm/booke.c:682 eb8: 7c 08 02 a6 mflr r0 ebc: fb 61 ff d8 std r27,-40(r1) ec0: 7c 7b 1b 78 mr r27,r3 ec4: fb e1 ff f8 std r31,-8(r1) ec8: 7c 9f 23 78 mr r31,r4 ecc: f8 01 00 10 std r0,16(r1) ed0: fb 41 ff d0 std r26,-48(r1) ed4: fb 81 ff e0 std r28,-32(r1) ed8: fb a1 ff e8 std r29,-24(r1) edc: f8 21 f9 d1 stdu r1,-1584(r1) -Scott -- To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 11.12.2013, at 00:11, Scott Wood <scottwood@freescale.com> wrote: > On Tue, 2013-12-10 at 03:05 +0100, Alexander Graf wrote: >> On 09.12.2013, at 22:18, Scott Wood <scottwood@freescale.com> wrote: >> >>> On Mon, 2013-11-25 at 04:26 -0600, Bharat Bhushan wrote: >>>> >>>>> -----Original Message----- >>>>> From: Wood Scott-B07421 >>>>> Sent: Saturday, November 23, 2013 3:22 AM >>>>> To: Alexander Graf >>>>> Cc: kvm-ppc@vger.kernel.org; kvm@vger.kernel.org; Wood Scott-B07421; Bhushan >>>>> Bharat-R65777 >>>>> Subject: [PATCH] powerpc/kvm/booke: Fix build break due to stack frame size >>>>> warning >>>>> >>>>> Commit ce11e48b7fdd256ec68b932a89b397a790566031 ("KVM: PPC: E500: Add >>>>> userspace debug stub support") added "struct thread_struct" to the >>>>> stack of kvmppc_vcpu_run(). thread_struct is 1152 bytes on my build, >>>>> compared to 48 bytes for the recently-introduced "struct debug_reg". >>>>> Use the latter instead. >>>>> >>>>> This fixes the following error: >>>>> >>>>> cc1: warnings being treated as errors >>>>> arch/powerpc/kvm/booke.c: In function 'kvmppc_vcpu_run': >>>>> arch/powerpc/kvm/booke.c:760:1: error: the frame size of 1424 bytes is larger >>>>> than 1024 bytes >>>>> make[2]: *** [arch/powerpc/kvm/booke.o] Error 1 >>>>> make[1]: *** [arch/powerpc/kvm] Error 2 >>>>> make[1]: *** Waiting for unfinished jobs.... >>>>> >>>>> Signed-off-by: Scott Wood <scottwood@freescale.com> >>>>> Cc: Bharat Bhushan <r65777@freescale.com> >>>>> --- >>>>> Build tested only. Bharat, please test. >>>> >>>> Tested with qemu debug stub; It works fine >>>> >>>> -Bharat >>> >>> Alex, are you going to take this through your tree? >> >> Sure. Do you want this for 3.13 or 3.14? Since I don't see the breakage >> with my compilers I'd queue it for 3.14, but whatever works for you >> works for me. > > 3.13 please. All I need to do to trigger the build break is enable KVM > with corenet64_smp_defconfig with GCC 4.5. Thanks, applied to the for-3.13 branch. Alex -- To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 11.12.2013, at 00:11, Scott Wood <scottwood@freescale.com> wrote: > On Tue, 2013-12-10 at 03:05 +0100, Alexander Graf wrote: >> On 09.12.2013, at 22:18, Scott Wood <scottwood@freescale.com> wrote: >> >>> On Mon, 2013-11-25 at 04:26 -0600, Bharat Bhushan wrote: >>>> >>>>> -----Original Message----- >>>>> From: Wood Scott-B07421 >>>>> Sent: Saturday, November 23, 2013 3:22 AM >>>>> To: Alexander Graf >>>>> Cc: kvm-ppc@vger.kernel.org; kvm@vger.kernel.org; Wood Scott-B07421; Bhushan >>>>> Bharat-R65777 >>>>> Subject: [PATCH] powerpc/kvm/booke: Fix build break due to stack frame size >>>>> warning >>>>> >>>>> Commit ce11e48b7fdd256ec68b932a89b397a790566031 ("KVM: PPC: E500: Add >>>>> userspace debug stub support") added "struct thread_struct" to the >>>>> stack of kvmppc_vcpu_run(). thread_struct is 1152 bytes on my build, >>>>> compared to 48 bytes for the recently-introduced "struct debug_reg". >>>>> Use the latter instead. >>>>> >>>>> This fixes the following error: >>>>> >>>>> cc1: warnings being treated as errors >>>>> arch/powerpc/kvm/booke.c: In function 'kvmppc_vcpu_run': >>>>> arch/powerpc/kvm/booke.c:760:1: error: the frame size of 1424 bytes is larger >>>>> than 1024 bytes >>>>> make[2]: *** [arch/powerpc/kvm/booke.o] Error 1 >>>>> make[1]: *** [arch/powerpc/kvm] Error 2 >>>>> make[1]: *** Waiting for unfinished jobs.... >>>>> >>>>> Signed-off-by: Scott Wood <scottwood@freescale.com> >>>>> Cc: Bharat Bhushan <r65777@freescale.com> >>>>> --- >>>>> Build tested only. Bharat, please test. >>>> >>>> Tested with qemu debug stub; It works fine >>>> >>>> -Bharat >>> >>> Alex, are you going to take this through your tree? >> >> Sure. Do you want this for 3.13 or 3.14? Since I don't see the breakage >> with my compilers I'd queue it for 3.14, but whatever works for you >> works for me. > > 3.13 please. All I need to do to trigger the build break is enable KVM > with corenet64_smp_defconfig with GCC 4.5. Thanks, applied to the for-3.13 branch. Alex -- To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/arch/powerpc/include/asm/switch_to.h b/arch/powerpc/include/asm/switch_to.h index 9ee1261..aace905 100644 --- a/arch/powerpc/include/asm/switch_to.h +++ b/arch/powerpc/include/asm/switch_to.h @@ -35,7 +35,7 @@ extern void giveup_vsx(struct task_struct *); extern void enable_kernel_spe(void); extern void giveup_spe(struct task_struct *); extern void load_up_spe(struct task_struct *); -extern void switch_booke_debug_regs(struct thread_struct *new_thread); +extern void switch_booke_debug_regs(struct debug_reg *new_debug); #ifndef CONFIG_SMP extern void discard_lazy_cpu_state(void); diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c index 3386d8a..4a96556 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c @@ -339,7 +339,7 @@ static void set_debug_reg_defaults(struct thread_struct *thread) #endif } -static void prime_debug_regs(struct thread_struct *thread) +static void prime_debug_regs(struct debug_reg *debug) { /* * We could have inherited MSR_DE from userspace, since @@ -348,22 +348,22 @@ static void prime_debug_regs(struct thread_struct *thread) */ mtmsr(mfmsr() & ~MSR_DE); - mtspr(SPRN_IAC1, thread->debug.iac1); - mtspr(SPRN_IAC2, thread->debug.iac2); + mtspr(SPRN_IAC1, debug->iac1); + mtspr(SPRN_IAC2, debug->iac2); #if CONFIG_PPC_ADV_DEBUG_IACS > 2 - mtspr(SPRN_IAC3, thread->debug.iac3); - mtspr(SPRN_IAC4, thread->debug.iac4); + mtspr(SPRN_IAC3, debug->iac3); + mtspr(SPRN_IAC4, debug->iac4); #endif - mtspr(SPRN_DAC1, thread->debug.dac1); - mtspr(SPRN_DAC2, thread->debug.dac2); + mtspr(SPRN_DAC1, debug->dac1); + mtspr(SPRN_DAC2, debug->dac2); #if CONFIG_PPC_ADV_DEBUG_DVCS > 0 - mtspr(SPRN_DVC1, thread->debug.dvc1); - mtspr(SPRN_DVC2, thread->debug.dvc2); + mtspr(SPRN_DVC1, debug->dvc1); + mtspr(SPRN_DVC2, debug->dvc2); #endif - mtspr(SPRN_DBCR0, thread->debug.dbcr0); - mtspr(SPRN_DBCR1, thread->debug.dbcr1); + mtspr(SPRN_DBCR0, debug->dbcr0); + mtspr(SPRN_DBCR1, debug->dbcr1); #ifdef CONFIG_BOOKE - mtspr(SPRN_DBCR2, thread->debug.dbcr2); + mtspr(SPRN_DBCR2, debug->dbcr2); #endif } /* @@ -371,11 +371,11 @@ static void prime_debug_regs(struct thread_struct *thread) * debug registers, set the debug registers from the values * stored in the new thread. */ -void switch_booke_debug_regs(struct thread_struct *new_thread) +void switch_booke_debug_regs(struct debug_reg *new_debug) { if ((current->thread.debug.dbcr0 & DBCR0_IDM) - || (new_thread->debug.dbcr0 & DBCR0_IDM)) - prime_debug_regs(new_thread); + || (new_debug->dbcr0 & DBCR0_IDM)) + prime_debug_regs(new_debug); } EXPORT_SYMBOL_GPL(switch_booke_debug_regs); #else /* !CONFIG_PPC_ADV_DEBUG_REGS */ @@ -683,7 +683,7 @@ struct task_struct *__switch_to(struct task_struct *prev, #endif /* CONFIG_SMP */ #ifdef CONFIG_PPC_ADV_DEBUG_REGS - switch_booke_debug_regs(&new->thread); + switch_booke_debug_regs(&new->thread.debug); #else /* * For PPC_BOOK3S_64, we use the hw-breakpoint interfaces that would diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c index 53e65a2..0591e05 100644 --- a/arch/powerpc/kvm/booke.c +++ b/arch/powerpc/kvm/booke.c @@ -681,7 +681,7 @@ int kvmppc_core_check_requests(struct kvm_vcpu *vcpu) int kvmppc_vcpu_run(struct kvm_run *kvm_run, struct kvm_vcpu *vcpu) { int ret, s; - struct thread_struct thread; + struct debug_reg debug; #ifdef CONFIG_PPC_FPU struct thread_fp_state fp; int fpexc_mode; @@ -723,9 +723,9 @@ int kvmppc_vcpu_run(struct kvm_run *kvm_run, struct kvm_vcpu *vcpu) #endif /* Switch to guest debug context */ - thread.debug = vcpu->arch.shadow_dbg_reg; - switch_booke_debug_regs(&thread); - thread.debug = current->thread.debug; + debug = vcpu->arch.shadow_dbg_reg; + switch_booke_debug_regs(&debug); + debug = current->thread.debug; current->thread.debug = vcpu->arch.shadow_dbg_reg; kvmppc_fix_ee_before_entry(); @@ -736,8 +736,8 @@ int kvmppc_vcpu_run(struct kvm_run *kvm_run, struct kvm_vcpu *vcpu) We also get here with interrupts enabled. */ /* Switch back to user space debug context */ - switch_booke_debug_regs(&thread); - current->thread.debug = thread.debug; + switch_booke_debug_regs(&debug); + current->thread.debug = debug; #ifdef CONFIG_PPC_FPU kvmppc_save_guest_fp(vcpu);
Commit ce11e48b7fdd256ec68b932a89b397a790566031 ("KVM: PPC: E500: Add userspace debug stub support") added "struct thread_struct" to the stack of kvmppc_vcpu_run(). thread_struct is 1152 bytes on my build, compared to 48 bytes for the recently-introduced "struct debug_reg". Use the latter instead. This fixes the following error: cc1: warnings being treated as errors arch/powerpc/kvm/booke.c: In function 'kvmppc_vcpu_run': arch/powerpc/kvm/booke.c:760:1: error: the frame size of 1424 bytes is larger than 1024 bytes make[2]: *** [arch/powerpc/kvm/booke.o] Error 1 make[1]: *** [arch/powerpc/kvm] Error 2 make[1]: *** Waiting for unfinished jobs.... Signed-off-by: Scott Wood <scottwood@freescale.com> Cc: Bharat Bhushan <r65777@freescale.com> --- Build tested only. Bharat, please test. arch/powerpc/include/asm/switch_to.h | 2 +- arch/powerpc/kernel/process.c | 32 ++++++++++++++++---------------- arch/powerpc/kvm/booke.c | 12 ++++++------ 3 files changed, 23 insertions(+), 23 deletions(-)