RE: [PATCH] powerpc/kvm/booke: Fix build break due to stack frame size warning

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> -----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




[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux