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]

 



On Tue, 2013-12-10 at 03:05 +0100, Alexander Graf wrote:
> On 09.12.2013, at 22:18, Scott Wood <scottwood@xxxxxxxxxxxxx> 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@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
> > 
> > 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" 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