From: Andrei Borzenkov <arvidjaar@gmail.com>
To: The development of GNU GRUB <grub-devel@gnu.org>
Cc: Paulo Flabiano Smorigo <pfsmorigo@br.ibm.com>,
pfsmorigo@linux.vnet.ibm.com
Subject: Re: [RFC PATCH 0/3] grub powerpc64 little-endian enablement
Date: Fri, 26 Sep 2014 19:52:02 +0400 [thread overview]
Message-ID: <20140926195202.7e9388b9@opensuse.site> (raw)
In-Reply-To: <20140925224803.GB10470@beren.chocolate>
В Thu, 25 Sep 2014 19:48:04 -0300
Paulo Flabiano Smorigo <pfsmorigo@linux.vnet.ibm.com> пишет:
> Sun, Sep 21, 2014 at 06:24:25PM +0400, Andrei Borzenkov wrote:
> > В Sun, 21 Sep 2014 17:58:44 +0400
> > Andrei Borzenkov <arvidjaar@gmail.com> пишет:
> >
> > > В Thu, 28 Aug 2014 16:56:02 -0300
> > > Paulo Flabiano Smorigo <pfsmorigo@linux.vnet.ibm.com> пишет:
> > >
> > > > From: Paulo Flabiano Smorigo <pfsmorigo@br.ibm.com>
> > > >
> > > > 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
> > Grub-devel@gnu.org
> > 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
>
>
With this patch it works. I'm really surprised - the same sources built
on different platform (ppc BE) did work without problems. I do not
understand how this can be possible if the problem was in specific CPU
mode. It should have been the same in both cases ...
next prev parent reply other threads:[~2014-09-26 15:52 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-28 19:56 [RFC PATCH 0/3] grub powerpc64 little-endian enablement Paulo Flabiano Smorigo
2014-08-28 19:56 ` [RFC PATCH 1/3] Add powerpc little-endian (ppc64le) flags Paulo Flabiano Smorigo
2014-09-17 22:04 ` Paulo Flabiano Smorigo
2014-09-19 13:48 ` Colin Watson
2014-09-21 16:05 ` Vladimir 'φ-coder/phcoder' Serbinenko
2014-08-28 19:56 ` [RFC PATCH 2/3] Files reorganization and include some libgcc fuctions Paulo Flabiano Smorigo
2014-09-08 2:16 ` Colin Watson
2014-09-17 21:43 ` Paulo Flabiano Smorigo
2014-09-19 14:03 ` Colin Watson
2014-09-21 16:07 ` Vladimir 'φ-coder/phcoder' Serbinenko
2014-08-28 19:56 ` [RFC PATCH 3/3] Suport for bi-endianess in elf file Paulo Flabiano Smorigo
2015-06-16 16:44 ` Andrei Borzenkov
2014-09-21 13:58 ` [RFC PATCH 0/3] grub powerpc64 little-endian enablement Andrei Borzenkov
2014-09-21 14:24 ` Andrei Borzenkov
2014-09-25 22:48 ` Paulo Flabiano Smorigo
2014-09-26 15:52 ` Andrei Borzenkov [this message]
2014-09-26 18:18 ` Paulo Flabiano Smorigo
2015-06-15 17:15 ` Andrei Borzenkov
2015-06-16 12:36 ` Paulo Flabiano Smorigo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140926195202.7e9388b9@opensuse.site \
--to=arvidjaar@gmail.com \
--cc=grub-devel@gnu.org \
--cc=pfsmorigo@br.ibm.com \
--cc=pfsmorigo@linux.vnet.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).