grub-devel
[Top][All Lists]
Advanced

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

Re: [RFC PATCH 0/3] grub powerpc64 little-endian enablement


From: Paulo Flabiano Smorigo
Subject: Re: [RFC PATCH 0/3] grub powerpc64 little-endian enablement
Date: Thu, 25 Sep 2014 19:48:04 -0300
User-agent: Mutt/1.5.22.1 (2013-10-16)

Sun, Sep 21, 2014 at 06:24:25PM +0400, Andrei Borzenkov wrote:
> В Sun, 21 Sep 2014 17:58:44 +0400
> Andrei Borzenkov <address@hidden> пишет:
> 
> > В Thu, 28 Aug 2014 16:56:02 -0300
> > Paulo Flabiano Smorigo <address@hidden> пишет:
> > 
> > > From: Paulo Flabiano Smorigo <address@hidden>
> > > 
> > > Hi,
> > > 
> > > At the beginning of the year we provide a patchset that enabled GRUB for
> > > little-endian PowerPC. Our approach at the time was to build GRUB itself 
> > > and
> > > its tools in 64-bit little-endian. One of the reasons of build in 64-bit 
> > > is
> > > to avoid 32-bit dependencies in the distro and build a system entirely 
> > > 64-bit.
> > > 
> > > This patchset was not welcomed at the time because it would bring a
> > > high-maintainance-cost, without real gain since it could just be 
> > > cross-compiled.
> > > 
> > > After that, Brent Baude, Vladmir (phcoder) and I started to work in a 
> > > solution
> > > that would cross-compile but without 32-bit dependencies. This patchset 
> > > is the
> > > result of this new approach. It's based on the work of Brent Baude, 
> > > Vladimir
> > > (phcoder), and Tomohiro.
> > > 
> > > It can be devided in two parts:
> > > 
> > >   1) Skip libgcc dependency just for ppc64el (patch 1 and 2);
> > >   2) Check elf endianess and byteswap if necessary (patch 3);
> > > 
> > > The result is GRUB itself in 32-bit BE and its tools in 64-bit LE. This 
> > > solution
> > > satisfies the needs of the distros. I tested it in three different 
> > > distros, in
> > > both endianess and it's fine.
> > > 
> > 
> > Unfortunately I'm still not able to boot this version on QEMU. I build
> > on openSUSE for three acrhs - ppc, ppc64, ppc64le. First two are OK and
> > boot successfully. Third one does not work - it ends up in exception. I
> > get initial GRUB greeting and that's all.
> > 
> > Same problem I got with Vladimir libgcc patch series.
> > 
> > It could be toolkit issue of course; but still it would need fixing
> > before we can merge it.
> > 
> > Could you help in debugging this issue? I have near to zero experience
> > with PPC; I can do what you tell me, but not much more.
> > 
> > I run it with
> > 
> > qemu-system-ppc64 -M pseries -cdrom /tmp/grub2-ppc64le.iso -boot d
> > 
> > Attached is screenshot of error.
> > 
> > 
> 
> And here is the difference in generated code in case it helps (one
> random module as example) ...
> 
> --- /tmp/a1   2014-09-21 18:19:59.316494117 +0400
> +++ /tmp/a2   2014-09-21 18:20:06.169398736 +0400
> @@ -1,5 +1,5 @@
>  
> -usr.ppc/lib/grub2/powerpc-ieee1275/ext2.mod:     file format elf32-powerpc
> +usr.ppc64le/lib/grub2/powerpc-ieee1275/ext2.mod:     file format 
> elf32-powerpc
>  
>  
>  Disassembly of section .text:
> @@ -18,15 +18,15 @@ Disassembly of section .text:
>    28:        38 21 00 10     addi    r1,r1,16
>    2c:        7c 08 03 a6     mtlr    r0
>    30:        4e 80 00 20     blr
> -  34:        94 21 ff a0     stwu    r1,-96(r1)
> +  34:        94 21 ff 90     stwu    r1,-112(r1)
>    38:        38 e3 00 28     addi    r7,r3,40
>    3c:        7d 80 00 26     mfcr    r12
>    40:        39 23 00 14     addi    r9,r3,20
>    44:        7c 08 02 a6     mflr    r0
>    48:        39 43 00 18     addi    r10,r3,24
> -  4c:        bf 61 00 4c     stmw    r27,76(r1)
> -  50:        90 01 00 64     stw     r0,100(r1)
> -  54:        91 81 00 48     stw     r12,72(r1)
> +  4c:        bf 61 00 5c     stmw    r27,92(r1)
> +  50:        90 01 00 74     stw     r0,116(r1)
> +  54:        91 81 00 58     stw     r12,88(r1)
>    58:        3b c4 ff ff     addi    r30,r4,-1
>    5c:        7c 7f 1b 78     mr      r31,r3
>    60:        7c bc 2b 78     mr      r28,r5
> @@ -103,10 +103,10 @@ Disassembly of section .text:
>   17c:        2f 83 00 00     cmpwi   cr7,r3,0
>   180:        41 9e 00 08     beq     cr7,188 <grub_mod_init-0xd50>
>   184:        81 3d 00 00     lwz     r9,0(r29)
> - 188:        81 81 00 48     lwz     r12,72(r1)
> - 18c:        39 61 00 60     addi    r11,r1,96
> + 188:        81 81 00 58     lwz     r12,88(r1)
> + 18c:        39 61 00 70     addi    r11,r1,112
>   190:        7d 23 4b 78     mr      r3,r9
> - 194:        7d 80 81 20     mtcrf   8,r12
> + 194:        7d 90 81 20     mtocrf  8,r12
>   198:        48 00 00 00     b       198 <grub_mod_init-0xd40>
>   19c:        94 21 ff e0     stwu    r1,-32(r1)
>   1a0:        7c 08 02 a6     mflr    r0
> @@ -234,10 +234,10 @@ Disassembly of section .text:
>   388:        39 61 00 20     addi    r11,r1,32
>   38c:        80 69 00 00     lwz     r3,0(r9)
>   390:        48 00 00 00     b       390 <grub_mod_init-0xb48>
> - 394:        94 21 ff b0     stwu    r1,-80(r1)
> + 394:        94 21 ff a0     stwu    r1,-96(r1)
>   398:        7c 08 02 a6     mflr    r0
> - 39c:        be 61 00 1c     stmw    r19,28(r1)
> - 3a0:        90 01 00 54     stw     r0,84(r1)
> + 39c:        be 61 00 2c     stmw    r19,44(r1)
> + 3a0:        90 01 00 64     stw     r0,100(r1)
>   3a4:        7c df 33 78     mr      r31,r6
>   3a8:        7c be 2b 78     mr      r30,r5
>   3ac:        83 63 00 00     lwz     r27,0(r3)
> @@ -489,12 +489,12 @@ Disassembly of section .text:
>   784:        48 00 00 0c     b       790 <grub_mod_init-0x748>
>   788:        7f c3 f3 78     mr      r3,r30
>   78c:        7f e4 fb 78     mr      r4,r31
> - 790:        39 61 00 50     addi    r11,r1,80
> + 790:        39 61 00 60     addi    r11,r1,96
>   794:        48 00 00 00     b       794 <grub_mod_init-0x744>
> - 798:        94 21 ff e0     stwu    r1,-32(r1)
> + 798:        94 21 ff d0     stwu    r1,-48(r1)
>   79c:        7c 08 02 a6     mflr    r0
> - 7a0:        bf a1 00 14     stmw    r29,20(r1)
> - 7a4:        90 01 00 24     stw     r0,36(r1)
> + 7a0:        bf a1 00 24     stmw    r29,36(r1)
> + 7a4:        90 01 00 34     stw     r0,52(r1)
>   7a8:        3f a0 00 00     lis     r29,0
>   7ac:        7c 9e 23 78     mr      r30,r4
>   7b0:        83 e3 00 00     lwz     r31,0(r3)
> @@ -525,7 +525,7 @@ Disassembly of section .text:
>   814:        7f e3 fb 78     mr      r3,r31
>   818:        48 00 00 01     bl      818 <grub_mod_init-0x6c0>
>   81c:        3d 20 00 00     lis     r9,0
> - 820:        39 61 00 20     addi    r11,r1,32
> + 820:        39 61 00 30     addi    r11,r1,48
>   824:        80 69 00 00     lwz     r3,0(r9)
>   828:        48 00 00 00     b       828 <grub_mod_init-0x6b0>
>   82c:        94 21 ff e0     stwu    r1,-32(r1)
> @@ -555,13 +555,13 @@ Disassembly of section .text:
>   88c:        39 61 00 20     addi    r11,r1,32
>   890:        80 69 00 00     lwz     r3,0(r9)
>   894:        48 00 00 00     b       894 <grub_mod_init-0x644>
> - 898:        94 21 ff d0     stwu    r1,-48(r1)
> + 898:        94 21 ff c0     stwu    r1,-64(r1)
>   89c:        7c 6b 1b 78     mr      r11,r3
>   8a0:        7c 08 02 a6     mflr    r0
>   8a4:        7c a6 2b 78     mr      r6,r5
>   8a8:        38 ab 00 08     addi    r5,r11,8
> - 8ac:        bf c1 00 28     stmw    r30,40(r1)
> - 8b0:        90 01 00 34     stw     r0,52(r1)
> + 8ac:        bf c1 00 38     stmw    r30,56(r1)
> + 8b0:        90 01 00 44     stw     r0,68(r1)
>   8b4:        3b cb 00 70     addi    r30,r11,112
>   8b8:        7c 80 23 78     mr      r0,r4
>   8bc:        80 63 00 00     lwz     r3,0(r3)
> @@ -584,7 +584,7 @@ Disassembly of section .text:
>   900:        7d 64 5b 78     mr      r4,r11
>   904:        7c 05 03 78     mr      r5,r0
>   908:        48 00 00 01     bl      908 <grub_mod_init-0x5d0>
> - 90c:        39 61 00 30     addi    r11,r1,48
> + 90c:        39 61 00 40     addi    r11,r1,64
>   910:        48 00 00 00     b       910 <grub_mod_init-0x5c8>
>   914:        7c 68 1b 78     mr      r8,r3
>   918:        80 63 00 44     lwz     r3,68(r3)
> @@ -596,10 +596,10 @@ Disassembly of section .text:
>   930:        81 08 00 14     lwz     r8,20(r8)
>   934:        38 63 01 5c     addi    r3,r3,348
>   938:        4b ff ff 60     b       898 <grub_mod_init-0x640>
> - 93c:        94 21 fe c0     stwu    r1,-320(r1)
> + 93c:        94 21 fe b0     stwu    r1,-336(r1)
>   940:        7c 08 02 a6     mflr    r0
> - 944:        be c1 01 18     stmw    r22,280(r1)
> - 948:        90 01 01 44     stw     r0,324(r1)
> + 944:        be c1 01 28     stmw    r22,296(r1)
> + 948:        90 01 01 54     stw     r0,340(r1)
>   94c:        7c 7f 1b 78     mr      r31,r3
>   950:        7c 9a 23 78     mr      r26,r4
>   954:        7c b9 2b 78     mr      r25,r5
> @@ -715,7 +715,7 @@ Disassembly of section .text:
>   b0c:        2f 83 00 00     cmpwi   cr7,r3,0
>   b10:        41 9e fe b0     beq     cr7,9c0 <grub_mod_init-0x518>
>   b14:        38 60 00 01     li      r3,1
> - b18:        39 61 01 40     addi    r11,r1,320
> + b18:        39 61 01 50     addi    r11,r1,336
>   b1c:        48 00 00 00     b       b1c <grub_mod_init-0x3bc>
>   b20:        94 21 ff d0     stwu    r1,-48(r1)
>   b24:        39 20 00 00     li      r9,0
> @@ -769,10 +769,10 @@ Disassembly of section .text:
>   be4:        39 61 00 30     addi    r11,r1,48
>   be8:        80 7f 00 00     lwz     r3,0(r31)
>   bec:        48 00 00 00     b       bec <grub_mod_init-0x2ec>
> - bf0:        94 21 ff f0     stwu    r1,-16(r1)
> + bf0:        94 21 ff e0     stwu    r1,-32(r1)
>   bf4:        7c 08 02 a6     mflr    r0
> - bf8:        bf c1 00 08     stmw    r30,8(r1)
> - bfc:        90 01 00 14     stw     r0,20(r1)
> + bf8:        bf c1 00 18     stmw    r30,24(r1)
> + bfc:        90 01 00 24     stw     r0,36(r1)
>   c00:        7c 7f 1b 78     mr      r31,r3
>   c04:        81 23 00 88     lwz     r9,136(r3)
>   c08:        2f 89 00 00     cmpwi   cr7,r9,0
> @@ -821,7 +821,7 @@ Disassembly of section .text:
>   cb4:        7d 20 fc 2c     lwbrx   r9,0,r31
>   cb8:        7f c3 f3 78     mr      r3,r30
>   cbc:        7d 5e 49 ae     stbx    r10,r30,r9
> - cc0:        39 61 00 10     addi    r11,r1,16
> + cc0:        39 61 00 20     addi    r11,r1,32
>   cc4:        48 00 00 00     b       cc4 <grub_mod_init-0x214>
>   cc8:        94 21 ff d0     stwu    r1,-48(r1)
>   ccc:        7c 08 02 a6     mflr    r0
> @@ -878,14 +878,14 @@ Disassembly of section .text:
>   d98:        4e 80 04 21     bctrl
>   d9c:        39 61 00 30     addi    r11,r1,48
>   da0:        48 00 00 00     b       da0 <grub_mod_init-0x138>
> - da4:        94 21 ff d0     stwu    r1,-48(r1)
> + da4:        94 21 ff c0     stwu    r1,-64(r1)
>   da8:        39 20 00 00     li      r9,0
>   dac:        7c 08 02 a6     mflr    r0
> - db0:        bf 41 00 18     stmw    r26,24(r1)
> + db0:        bf 41 00 28     stmw    r26,40(r1)
>   db4:        3f a0 00 00     lis     r29,0
>   db8:        7c 7f 1b 78     mr      r31,r3
>   dbc:        80 7d 00 00     lwz     r3,0(r29)
> - dc0:        90 01 00 34     stw     r0,52(r1)
> + dc0:        90 01 00 44     stw     r0,68(r1)
>   dc4:        7c 9a 23 78     mr      r26,r4
>   dc8:        91 21 00 08     stw     r9,8(r1)
>   dcc:        48 00 00 01     bl      dcc <grub_mod_init-0x10c>
> @@ -953,23 +953,23 @@ Disassembly of section .text:
>   ec4:        80 7b 00 00     lwz     r3,0(r27)
>   ec8:        48 00 00 01     bl      ec8 <grub_mod_init-0x10>
>   ecc:        7f a3 eb 78     mr      r3,r29
> - ed0:        39 61 00 30     addi    r11,r1,48
> + ed0:        39 61 00 40     addi    r11,r1,64
>   ed4:        48 00 00 00     b       ed4 <grub_mod_init-0x4>
>  
>  00000ed8 <grub_mod_init>:
> - ed8:        94 21 ff f0     stwu    r1,-16(r1)
> + ed8:        94 21 ff e0     stwu    r1,-32(r1)
>   edc:        3c 80 00 00     lis     r4,0
>   ee0:        7c 08 02 a6     mflr    r0
>   ee4:        38 84 00 00     addi    r4,r4,0
> - ee8:        93 e1 00 0c     stw     r31,12(r1)
> + ee8:        93 e1 00 1c     stw     r31,28(r1)
>   eec:        7c 7f 1b 78     mr      r31,r3
>   ef0:        3c 60 00 00     lis     r3,0
> - ef4:        90 01 00 14     stw     r0,20(r1)
> + ef4:        90 01 00 24     stw     r0,36(r1)
>   ef8:        38 63 00 00     addi    r3,r3,0
>   efc:        48 00 00 01     bl      efc <grub_mod_init+0x24>
>   f00:        3d 20 00 00     lis     r9,0
>   f04:        93 e9 00 00     stw     r31,0(r9)
> - f08:        39 61 00 10     addi    r11,r1,16
> + f08:        39 61 00 20     addi    r11,r1,32
>   f0c:        48 00 00 00     b       f0c <grub_mod_init+0x34>
>  
>  00000f10 <grub_mod_fini>:
> 
> 
> _______________________________________________
> Grub-devel mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/grub-devel


Hi Andrei,

I find out that VSX was the culprit. Can you please take a look at this
patch?
http://lists.gnu.org/archive/html/grub-devel/2014-09/msg00077.html


-- 
Paulo Flabiano Smorigo
IBM Linux Technology Center




reply via email to

[Prev in Thread] Current Thread [Next in Thread]