diff --git a/grub-2.00-Fix-module-trampoline-for-ppc.patch b/grub-2.00-Fix-module-trampoline-for-ppc.patch new file mode 100644 index 0000000..60cde3a --- /dev/null +++ b/grub-2.00-Fix-module-trampoline-for-ppc.patch @@ -0,0 +1,120 @@ +Return-Path: benh@au1.ibm.com +Received: from zmta03.collab.prod.int.phx2.redhat.com (LHLO + zmta03.collab.prod.int.phx2.redhat.com) (10.5.5.33) by + zmail14.collab.prod.int.phx2.redhat.com with LMTP; Sun, 13 May 2012 + 23:43:23 -0400 (EDT) +Received: from localhost (localhost.localdomain [127.0.0.1]) + by zmta03.collab.prod.int.phx2.redhat.com (Postfix) with ESMTP id A92D5F0BC1 + for ; Sun, 13 May 2012 23:43:23 -0400 (EDT) +Received: from zmta03.collab.prod.int.phx2.redhat.com ([127.0.0.1]) + by localhost (zmta03.collab.prod.int.phx2.redhat.com [127.0.0.1]) (amavisd-new, port 10024) + with ESMTP id KDt5yD-zSoXe for ; + Sun, 13 May 2012 23:43:23 -0400 (EDT) +Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) + by zmta03.collab.prod.int.phx2.redhat.com (Postfix) with ESMTP id 951A2F0843 + for ; Sun, 13 May 2012 23:43:23 -0400 (EDT) +Received: from mx1.redhat.com (ext-mx12.extmail.prod.ext.phx2.redhat.com [10.5.110.17]) + by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id q4E3hNWo019302 + for ; Sun, 13 May 2012 23:43:23 -0400 +Received: from bastion.fedoraproject.org (bastion02.phx2.fedoraproject.org [10.5.126.11]) + by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id q4E3hLtl006033 + for ; Sun, 13 May 2012 23:43:21 -0400 +Received: by bastion02.phx2.fedoraproject.org (Postfix) + id 1B8B34040D; Mon, 14 May 2012 03:43:21 +0000 (UTC) +Delivered-To: pjones@fedoraproject.org +Received: from mx2.redhat.com (ext-mx01.rdu.redhat.com [10.11.45.6]) + by bastion02.phx2.fedoraproject.org (Postfix) with ESMTP id AF73B402BC + for ; Mon, 14 May 2012 03:43:20 +0000 (UTC) +Received: from e23smtp06.au.ibm.com (e23smtp06.au.ibm.com [202.81.31.148]) + by mx2.redhat.com (8.13.8/8.13.8) with ESMTP id q4E3h5JZ014320 + for ; Sun, 13 May 2012 23:43:11 -0400 +Received: from /spool/local + by e23smtp06.au.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted + for from ; + Mon, 14 May 2012 03:37:12 +1000 +Received: from d23relay03.au.ibm.com (202.81.31.245) + by e23smtp06.au.ibm.com (202.81.31.212) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; + Mon, 14 May 2012 03:37:09 +1000 +Received: from d23av04.au.ibm.com (d23av04.au.ibm.com [9.190.235.139]) + by d23relay03.au.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id q4E3gcbg60358704 + for ; Mon, 14 May 2012 13:42:38 +1000 +Received: from d23av04.au.ibm.com (loopback [127.0.0.1]) + by d23av04.au.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id q4E3gb1m003356 + for ; Mon, 14 May 2012 13:42:37 +1000 +Received: from ozlabs.au.ibm.com (ozlabs.au.ibm.com [9.190.163.12]) + by d23av04.au.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id q4E3gbsI003349; + Mon, 14 May 2012 13:42:37 +1000 +Received: from [10.61.2.137] (haven.au.ibm.com [9.190.164.82]) + (using SSLv3 with cipher AES256-SHA (256/256 bits)) + (Client did not present a certificate) + by ozlabs.au.ibm.com (Postfix) with ESMTPSA id B60A073A09; + Mon, 14 May 2012 13:42:37 +1000 (EST) +Message-ID: <1336966957.6727.15.camel@pasglop> +Subject: [PATCH] grub: Fix module trampoline for powerpc +From: Benjamin Herrenschmidt +To: Brent Baude , pjones@fedoraproject.org +Cc: hamzy@us.ibm.com, Josh Boyer +Date: Mon, 14 May 2012 13:42:37 +1000 +Organization: IBM Australia +Content-Type: text/plain; charset="UTF-8" +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 +x-cbid: 12051317-7014-0000-0000-0000011BC8AA +X-RedHat-Spam-Score: -5.01 (RCVD_IN_DNSWL_HI,T_RP_MATCHES_RCVD) +X-RedHat-Spam-Score: -5.011 (RCVD_IN_DNSWL_HI,SPF_PASS,T_RP_MATCHES_RCVD) +X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 +X-Scanned-By: MIMEDefang 2.68 on 10.5.110.17 +X-Scanned-By: MIMEDefang 2.67 on 10.11.45.6 + +[ --- snip --- ] + +Not sure who to send that to, I picked Peter as he's in +the rpm log as author of the of the powerpc patches, +feel free to do whatever with that one, it should ultimately +go to upstream grub I suppose ... + +Without this, grub doesn't work for me at all with fc17 beta + +[ --- snip --- ] + +The trampoline generated by grub powerpc's dl.c to call from +modules into the main grub code uses r0 as a scratch register. + +However, nowadays, gcc can (and will) generate function calls +to spill registers to the stack (well, it's even stupid enough +to do it when there's only one register to save ! go figure....) + +Those calls happen during the function prolog, before the +return address has been saved on the stack, typically it's held +in r0 at this stage. Since those calls will hit the trampoline +in grub, which clobbers r0, this will clobber the return address +and cause a crash. + +This patch changes the trampolines to use r12 instead which +is safe to use in our case. + +Note: It might be better to actually link those low level gcc +support functions statically into the modules but that's beyond +the level of grub hacking I'm prepared to do today. + +Signed-off-by: Benjamin Herrenschmidt +--- +diff --git a/grub-core/kern/powerpc/dl.c b/grub-core/kern/powerpc/dl.c +index b8a2b50..0a8ec85 100644 +--- a/grub-core/kern/powerpc/dl.c ++++ b/grub-core/kern/powerpc/dl.c +@@ -89,9 +89,9 @@ struct trampoline + + static const struct trampoline trampoline_template = + { +- 0x3c000000, +- 0x60000000, +- 0x7c0903a6, ++ 0x3d800000, ++ 0x618c0000, ++ 0x7d8903a6, + 0x4e800420, + }; + + + diff --git a/grub2.spec b/grub2.spec index deebae9..0528d68 100644 --- a/grub2.spec +++ b/grub2.spec @@ -41,6 +41,7 @@ Patch4: grub-1.99-Fix-tests-of-zeroed-partition.patch Patch5: grub-1.99-ppc-terminfo.patch Patch7: grub-2.00~beta4-add-support-for-PowerMac-HFS-partitions.patch Patch8: grub2-2.0-no-png-in-texi.patch +Patch9: grub-2.00-Fix-module-trampoline-for-ppc.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) @@ -388,6 +389,9 @@ fi %endif %changelog +* Mon May 14 2012 Peter Jones - 2.0-0.27.beta5 +- Fix module trampolining on ppc (benh) + * Thu May 10 2012 Peter Jones - 2.0-0.27.beta5 - Fix license of theme (mizmo) Resolves: rhbz#820713