> -----Original Message----- > From: Wood Scott-B07421 > Sent: Saturday, November 23, 2013 3:22 AM > To: Alexander Graf > Cc: kvm-ppc@xxxxxxxxxxxxxxx; kvm@xxxxxxxxxxxxxxx; 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@xxxxxxxxxxxxx> > Cc: Bharat Bhushan <r65777@xxxxxxxxxxxxx> > --- > 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" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html