On Tue, 2013-12-10 at 03:05 +0100, Alexander Graf wrote:
> On 09.12.2013, at 22:18, Scott Wood <[email protected]> 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: [email protected]; [email protected]; 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 <[email protected]>
> >>> Cc: Bharat Bhushan <[email protected]>
> >>> ---
> >>> 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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html