mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-03-07 03:56:06 +07:00
powerpc/kvm/booke: Fix build break due to stack frame size warning
Commit ce11e48b7f
("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>
Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
parent
3d3319b45e
commit
f5f972102d
@ -35,7 +35,7 @@ extern void giveup_vsx(struct task_struct *);
|
|||||||
extern void enable_kernel_spe(void);
|
extern void enable_kernel_spe(void);
|
||||||
extern void giveup_spe(struct task_struct *);
|
extern void giveup_spe(struct task_struct *);
|
||||||
extern void load_up_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
|
#ifndef CONFIG_SMP
|
||||||
extern void discard_lazy_cpu_state(void);
|
extern void discard_lazy_cpu_state(void);
|
||||||
|
@ -339,7 +339,7 @@ static void set_debug_reg_defaults(struct thread_struct *thread)
|
|||||||
#endif
|
#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
|
* 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);
|
mtmsr(mfmsr() & ~MSR_DE);
|
||||||
|
|
||||||
mtspr(SPRN_IAC1, thread->debug.iac1);
|
mtspr(SPRN_IAC1, debug->iac1);
|
||||||
mtspr(SPRN_IAC2, thread->debug.iac2);
|
mtspr(SPRN_IAC2, debug->iac2);
|
||||||
#if CONFIG_PPC_ADV_DEBUG_IACS > 2
|
#if CONFIG_PPC_ADV_DEBUG_IACS > 2
|
||||||
mtspr(SPRN_IAC3, thread->debug.iac3);
|
mtspr(SPRN_IAC3, debug->iac3);
|
||||||
mtspr(SPRN_IAC4, thread->debug.iac4);
|
mtspr(SPRN_IAC4, debug->iac4);
|
||||||
#endif
|
#endif
|
||||||
mtspr(SPRN_DAC1, thread->debug.dac1);
|
mtspr(SPRN_DAC1, debug->dac1);
|
||||||
mtspr(SPRN_DAC2, thread->debug.dac2);
|
mtspr(SPRN_DAC2, debug->dac2);
|
||||||
#if CONFIG_PPC_ADV_DEBUG_DVCS > 0
|
#if CONFIG_PPC_ADV_DEBUG_DVCS > 0
|
||||||
mtspr(SPRN_DVC1, thread->debug.dvc1);
|
mtspr(SPRN_DVC1, debug->dvc1);
|
||||||
mtspr(SPRN_DVC2, thread->debug.dvc2);
|
mtspr(SPRN_DVC2, debug->dvc2);
|
||||||
#endif
|
#endif
|
||||||
mtspr(SPRN_DBCR0, thread->debug.dbcr0);
|
mtspr(SPRN_DBCR0, debug->dbcr0);
|
||||||
mtspr(SPRN_DBCR1, thread->debug.dbcr1);
|
mtspr(SPRN_DBCR1, debug->dbcr1);
|
||||||
#ifdef CONFIG_BOOKE
|
#ifdef CONFIG_BOOKE
|
||||||
mtspr(SPRN_DBCR2, thread->debug.dbcr2);
|
mtspr(SPRN_DBCR2, debug->dbcr2);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
@ -371,11 +371,11 @@ static void prime_debug_regs(struct thread_struct *thread)
|
|||||||
* debug registers, set the debug registers from the values
|
* debug registers, set the debug registers from the values
|
||||||
* stored in the new thread.
|
* 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)
|
if ((current->thread.debug.dbcr0 & DBCR0_IDM)
|
||||||
|| (new_thread->debug.dbcr0 & DBCR0_IDM))
|
|| (new_debug->dbcr0 & DBCR0_IDM))
|
||||||
prime_debug_regs(new_thread);
|
prime_debug_regs(new_debug);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(switch_booke_debug_regs);
|
EXPORT_SYMBOL_GPL(switch_booke_debug_regs);
|
||||||
#else /* !CONFIG_PPC_ADV_DEBUG_REGS */
|
#else /* !CONFIG_PPC_ADV_DEBUG_REGS */
|
||||||
@ -683,7 +683,7 @@ struct task_struct *__switch_to(struct task_struct *prev,
|
|||||||
#endif /* CONFIG_SMP */
|
#endif /* CONFIG_SMP */
|
||||||
|
|
||||||
#ifdef CONFIG_PPC_ADV_DEBUG_REGS
|
#ifdef CONFIG_PPC_ADV_DEBUG_REGS
|
||||||
switch_booke_debug_regs(&new->thread);
|
switch_booke_debug_regs(&new->thread.debug);
|
||||||
#else
|
#else
|
||||||
/*
|
/*
|
||||||
* For PPC_BOOK3S_64, we use the hw-breakpoint interfaces that would
|
* For PPC_BOOK3S_64, we use the hw-breakpoint interfaces that would
|
||||||
|
@ -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 kvmppc_vcpu_run(struct kvm_run *kvm_run, struct kvm_vcpu *vcpu)
|
||||||
{
|
{
|
||||||
int ret, s;
|
int ret, s;
|
||||||
struct thread_struct thread;
|
struct debug_reg debug;
|
||||||
#ifdef CONFIG_PPC_FPU
|
#ifdef CONFIG_PPC_FPU
|
||||||
struct thread_fp_state fp;
|
struct thread_fp_state fp;
|
||||||
int fpexc_mode;
|
int fpexc_mode;
|
||||||
@ -723,9 +723,9 @@ int kvmppc_vcpu_run(struct kvm_run *kvm_run, struct kvm_vcpu *vcpu)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Switch to guest debug context */
|
/* Switch to guest debug context */
|
||||||
thread.debug = vcpu->arch.shadow_dbg_reg;
|
debug = vcpu->arch.shadow_dbg_reg;
|
||||||
switch_booke_debug_regs(&thread);
|
switch_booke_debug_regs(&debug);
|
||||||
thread.debug = current->thread.debug;
|
debug = current->thread.debug;
|
||||||
current->thread.debug = vcpu->arch.shadow_dbg_reg;
|
current->thread.debug = vcpu->arch.shadow_dbg_reg;
|
||||||
|
|
||||||
kvmppc_fix_ee_before_entry();
|
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. */
|
We also get here with interrupts enabled. */
|
||||||
|
|
||||||
/* Switch back to user space debug context */
|
/* Switch back to user space debug context */
|
||||||
switch_booke_debug_regs(&thread);
|
switch_booke_debug_regs(&debug);
|
||||||
current->thread.debug = thread.debug;
|
current->thread.debug = debug;
|
||||||
|
|
||||||
#ifdef CONFIG_PPC_FPU
|
#ifdef CONFIG_PPC_FPU
|
||||||
kvmppc_save_guest_fp(vcpu);
|
kvmppc_save_guest_fp(vcpu);
|
||||||
|
Loading…
Reference in New Issue
Block a user