From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail-yh0-f51.google.com ([209.85.213.51]) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1XGtaN-0007lq-31 for kexec@lists.infradead.org; Mon, 11 Aug 2014 17:40:43 +0000 Received: by mail-yh0-f51.google.com with SMTP id f73so6434438yha.24 for ; Mon, 11 Aug 2014 10:40:21 -0700 (PDT) Date: Mon, 11 Aug 2014 12:40:18 -0500 From: Shaun Ruffell Subject: Re: [PATCH 11/15] purgatory: Core purgatory functionality Message-ID: <20140811174017.GD12610@digium.com> References: <1403814824-7587-1-git-send-email-vgoyal@redhat.com> <1403814824-7587-12-git-send-email-vgoyal@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <1403814824-7587-12-git-send-email-vgoyal@redhat.com> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "kexec" Errors-To: kexec-bounces+dwmw2=infradead.org@lists.infradead.org To: Vivek Goyal Cc: mjg59@srcf.ucam.org, bhe@redhat.com, greg@kroah.com, kexec@lists.infradead.org, linux-kernel@vger.kernel.org, bp@alien8.de, ebiederm@xmission.com, hpa@zytor.com, akpm@linux-foundation.org, dyoung@redhat.com, chaowang@redhat.com RllJLCBpdCBsb29rcyBsaWtlIHRoZSBmb2xsb3dpbmcgcGF0Y2ggKGNvbW1pdHRlZCBpbgo4ZmM1 YjRkNDEyMWM5NTQ4MmIyNTgzKSBhZGRzIGEgbmV3IHJlcXVpcmVtZW50IHRvIHVzZSBhdCBsZWFz dCBnY2MKNC40IHRvIGJ1aWxkIHRoZSBrZXJuZWw/CgpPbiBUaHUsIEp1biAyNiwgMjAxNCBhdCAw NDozMzo0MFBNIC0wNDAwLCBWaXZlayBHb3lhbCB3cm90ZToKPiBDcmVhdGUgYSBzdGFuZCBhbG9u ZSByZWxvY2F0YWJsZSBvYmplY3QgcHVyZ2F0b3J5IHdoaWNoIHJ1bnMgYmV0d2VlbiB0d28KPiBr ZXJuZWxzLiBUaGlzIG5hbWUsIGNvbmNlcHQgYW5kIHNvbWUgY29kZSBoYXMgYmVlbiB0YWtlbiBm cm9tIGtleGVjLXRvb2xzLgo+IElkZWEgaXMgdGhhdCB0aGlzIGNvZGUgcnVucyBhZnRlciBhIGNy YXNoIGFuZCBpdCBydW5zIGluIG1pbmltYWwgZW52aXJvbm1lbnQuCj4gU28ga2VlcCBpdCBzZXBh cmF0ZSBmcm9tIHJlc3Qgb2YgdGhlIGtlcm5lbCBhbmQgaW4gbG9uZyB0ZXJtIHdlIHdpbGwgaGF2 ZQo+IHRvIHByYWN0aWNhbGx5IGRvIG5vIG1haW50ZW5hbmNlIG9mIHRoaXMgY29kZS4KPiAKPiBU aGlzIGNvZGUgYWxzbyBoYXMgdGhlIGxvZ2ljIHRvIGRvIHZlcmlmeSBzaGEyNTYgaGFzaGVzIG9m IHZhcmlvdXMKPiBzZWdtZW50cyB3aGljaCBoYXZlIGJlZW4gbG9hZGVkIGludG8gbWVtb3J5LiBT byBmaXJzdCB3ZSB2ZXJpZnkgdGhhdAo+IHRoZSBrZXJuZWwgd2UgYXJlIGp1bXBpbmcgdG8gaXMg ZmluZSBhbmQgaGFzIG5vdCBiZWVuIGNvcnJ1cHRlZCBhbmQKPiBtYWtlIHByb2dyZXNzIG9ubHkg aWYgY2hlY3N1bXMgYXJlIHZlcmlmaWVkLgo+IAo+IFRoaXMgY29kZSBhbHNvIHRha2VzIGNhcmUg b2YgY29weWluZyBzb21lIG1lbW9yeSBjb250ZW50cyB0byBiYWNrdXAgcmVnaW9uLgo+IAo+IFNp Z25lZC1vZmYtYnk6IFZpdmVrIEdveWFsIDx2Z295YWxAcmVkaGF0LmNvbT4KPiAtLS0KPiAgYXJj aC94ODYvS2J1aWxkICAgICAgICAgICAgICAgICAgIHwgICA0ICsrCj4gIGFyY2gveDg2L01ha2Vm aWxlICAgICAgICAgICAgICAgICB8ICAgOCArKysKPiAgYXJjaC94ODYvcHVyZ2F0b3J5L01ha2Vm aWxlICAgICAgIHwgIDMwICsrKysrKysrKysrCj4gIGFyY2gveDg2L3B1cmdhdG9yeS9lbnRyeTY0 LlMgICAgICB8IDEwMSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICBh cmNoL3g4Ni9wdXJnYXRvcnkvcHVyZ2F0b3J5LmMgICAgfCAgNzIgKysrKysrKysrKysrKysrKysr KysrKysrKysrCj4gIGFyY2gveDg2L3B1cmdhdG9yeS9zZXR1cC14ODZfNjQuUyB8ICA1OCArKysr KysrKysrKysrKysrKysrKysrCj4gIGFyY2gveDg2L3B1cmdhdG9yeS9zdGFjay5TICAgICAgICB8 ICAxOSArKysrKysrCj4gIGFyY2gveDg2L3B1cmdhdG9yeS9zdHJpbmcuYyAgICAgICB8ICAxMyAr KysrKwo+ICA4IGZpbGVzIGNoYW5nZWQsIDMwNSBpbnNlcnRpb25zKCspCj4gIGNyZWF0ZSBtb2Rl IDEwMDY0NCBhcmNoL3g4Ni9wdXJnYXRvcnkvTWFrZWZpbGUKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0 IGFyY2gveDg2L3B1cmdhdG9yeS9lbnRyeTY0LlMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gv eDg2L3B1cmdhdG9yeS9wdXJnYXRvcnkuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC94ODYv cHVyZ2F0b3J5L3NldHVwLXg4Nl82NC5TCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL3g4Ni9w dXJnYXRvcnkvc3RhY2suUwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC94ODYvcHVyZ2F0b3J5 L3N0cmluZy5jCj4gCgpbc25pcF0KCj4gZGlmZiAtLWdpdCBhL2FyY2gveDg2L3B1cmdhdG9yeS9N YWtlZmlsZSBiL2FyY2gveDg2L3B1cmdhdG9yeS9NYWtlZmlsZQo+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0Cj4gaW5kZXggMDAwMDAwMC4uZTU4MjlkZAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9hcmNo L3g4Ni9wdXJnYXRvcnkvTWFrZWZpbGUKPiBAQCAtMCwwICsxLDMwIEBACj4gK3B1cmdhdG9yeS15 IDo9IHB1cmdhdG9yeS5vIHN0YWNrLm8gc2V0dXAteDg2XyQoQklUUykubyBzaGEyNTYubyBlbnRy eTY0Lm8gc3RyaW5nLm8KPiArCj4gK3RhcmdldHMgKz0gJChwdXJnYXRvcnkteSkKPiArUFVSR0FU T1JZX09CSlMgPSAkKGFkZHByZWZpeCAkKG9iaikvLCQocHVyZ2F0b3J5LXkpKQo+ICsKPiArTERG TEFHU19wdXJnYXRvcnkucm8gOj0gLWUgcHVyZ2F0b3J5X3N0YXJ0IC1yIC0tbm8tdW5kZWZpbmVk IC1ub3N0ZGxpYiAteiBub2RlZmF1bHRsaWIKPiArdGFyZ2V0cyArPSBwdXJnYXRvcnkucm8KPiAr Cj4gKyMgRGVmYXVsdCBLQlVJTERfQ0ZMQUdTIGNhbiBoYXZlIC1wZyBvcHRpb24gc2V0IHdoZW4g RlRSQUNFIGlzIGVuYWJsZWQuIFRoYXQKPiArIyBpbiB0dXJuIGxlYXZlcyBzb21lIHVuZGVmaW5l ZCBzeW1ib2xzIGxpa2UgX19mZW50cnlfXyBpbiBwdXJnYXRvcnkgYW5kIG5vdAo+ICsjIHN1cmUg aG93IHRvIHJlbG9jYXRlIHRob3NlLiBMaWtlIGtleGVjLXRvb2xzLCB1c2UgY3VzdG9tIGZsYWdz Lgo+ICsKPiArS0JVSUxEX0NGTEFHUyA6PSAtZm5vLXN0cmljdC1hbGlhc2luZyAtV2FsbCAtV3N0 cmljdC1wcm90b3R5cGVzIC1mbm8temVyby1pbml0aWFsaXplZC1pbi1ic3MgLWZuby1idWlsdGlu IC1mZnJlZXN0YW5kaW5nIC1jIC1NRCAtT3MgLW1jbW9kZWw9bGFyZ2UKClRoZSBhYm92ZSAiLW1j bW9kZWw9bGFyZ2UiIGNvbXBpbGVyIGZsYWcgcHJvZHVjZXMgdGhlIGZvbGxvd2luZyBvdXRwdXQg b24gR0NDIDQuMS4yLgoKICAkIG1ha2UgbW9kdWxlc19wcmVwYXJlIDsgZ2NjIC0tdmVyc2lvbgog ICAgQ0hLICAgICBpbmNsdWRlL2NvbmZpZy9rZXJuZWwucmVsZWFzZQogICAgQ0hLICAgICBpbmNs dWRlL2dlbmVyYXRlZC91YXBpL2xpbnV4L3ZlcnNpb24uaAogICAgQ0hLICAgICBpbmNsdWRlL2dl bmVyYXRlZC91dHNyZWxlYXNlLmgKICAgIENDICAgICAgYXJjaC94ODYvcHVyZ2F0b3J5L3B1cmdh dG9yeS5vCiAgYXJjaC94ODYvcHVyZ2F0b3J5L3B1cmdhdG9yeS5jOjE6IHNvcnJ5LCB1bmltcGxl bWVudGVkOiBjb2RlIG1vZGVsIOKAmGxhcmdl4oCZIG5vdCBzdXBwb3J0ZWQgeWV0CiAgbWFrZVsx XTogKioqIFthcmNoL3g4Ni9wdXJnYXRvcnkvcHVyZ2F0b3J5Lm9dIEVycm9yIDEKICBtYWtlOiAq KiogW2FyY2hwcmVwYXJlXSBFcnJvciAyCiAgZ2NjIChHQ0MpIDQuMS4yIDIwMDgwNzA0IChSZWQg SGF0IDQuMS4yLTU0KQogIENvcHlyaWdodCAoQykgMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KICBUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHNlZSB0aGUgc291cmNlIGZvciBjb3B5 aW5nIGNvbmRpdGlvbnMuICBUaGVyZSBpcyBOTwogIHdhcnJhbnR5OyBub3QgZXZlbiBmb3IgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgoKSSBkaWQg YSBxdWljayBzZWFyY2ggZm9yIGEgZGlzY3Vzc2lvbiB0aGUgaW5kaWNhdGVzIHRoaXMgY29tcGls ZXIgaXMgbm93Cm9mZmljaWFsbHkgdG9vIG9sZCB0byBidWlsZCB0aGUga2VybmVsIGJ1dCBkaWQg bm90IGZpbmQgb25lLgoKSWYgdGhpcyBpcyByZXF1aXJlZCwgbWF5YmUgRG9jdW1lbnRhdGlvbi9D aGFuZ2VzIG5lZWRzIHRvIGJlIHVwZGF0ZWQKd2l0aCB0aGUgbmV3IG1pbmltdW0gcmVxdWlyZWQg dmVyc2lvbj8KCkNoZWVycywKU2hhdW4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmtleGVjIG1haWxpbmcgbGlzdAprZXhlY0BsaXN0cy5pbmZyYWRlYWQu b3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8va2V4ZWMK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754017AbaHKRk1 (ORCPT ); Mon, 11 Aug 2014 13:40:27 -0400 Received: from mail-yh0-f47.google.com ([209.85.213.47]:50404 "EHLO mail-yh0-f47.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753321AbaHKRkW (ORCPT ); Mon, 11 Aug 2014 13:40:22 -0400 Date: Mon, 11 Aug 2014 12:40:18 -0500 From: Shaun Ruffell To: Vivek Goyal Cc: linux-kernel@vger.kernel.org, kexec@lists.infradead.org, ebiederm@xmission.com, hpa@zytor.com, mjg59@srcf.ucam.org, greg@kroah.com, bp@alien8.de, dyoung@redhat.com, chaowang@redhat.com, bhe@redhat.com, akpm@linux-foundation.org Subject: Re: [PATCH 11/15] purgatory: Core purgatory functionality Message-ID: <20140811174017.GD12610@digium.com> References: <1403814824-7587-1-git-send-email-vgoyal@redhat.com> <1403814824-7587-12-git-send-email-vgoyal@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <1403814824-7587-12-git-send-email-vgoyal@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org FYI, it looks like the following patch (committed in 8fc5b4d4121c95482b2583) adds a new requirement to use at least gcc 4.4 to build the kernel? On Thu, Jun 26, 2014 at 04:33:40PM -0400, Vivek Goyal wrote: > Create a stand alone relocatable object purgatory which runs between two > kernels. This name, concept and some code has been taken from kexec-tools. > Idea is that this code runs after a crash and it runs in minimal environment. > So keep it separate from rest of the kernel and in long term we will have > to practically do no maintenance of this code. > > This code also has the logic to do verify sha256 hashes of various > segments which have been loaded into memory. So first we verify that > the kernel we are jumping to is fine and has not been corrupted and > make progress only if checsums are verified. > > This code also takes care of copying some memory contents to backup region. > > Signed-off-by: Vivek Goyal > --- > arch/x86/Kbuild | 4 ++ > arch/x86/Makefile | 8 +++ > arch/x86/purgatory/Makefile | 30 +++++++++++ > arch/x86/purgatory/entry64.S | 101 ++++++++++++++++++++++++++++++++++++++ > arch/x86/purgatory/purgatory.c | 72 +++++++++++++++++++++++++++ > arch/x86/purgatory/setup-x86_64.S | 58 ++++++++++++++++++++++ > arch/x86/purgatory/stack.S | 19 +++++++ > arch/x86/purgatory/string.c | 13 +++++ > 8 files changed, 305 insertions(+) > create mode 100644 arch/x86/purgatory/Makefile > create mode 100644 arch/x86/purgatory/entry64.S > create mode 100644 arch/x86/purgatory/purgatory.c > create mode 100644 arch/x86/purgatory/setup-x86_64.S > create mode 100644 arch/x86/purgatory/stack.S > create mode 100644 arch/x86/purgatory/string.c > [snip] > diff --git a/arch/x86/purgatory/Makefile b/arch/x86/purgatory/Makefile > new file mode 100644 > index 0000000..e5829dd > --- /dev/null > +++ b/arch/x86/purgatory/Makefile > @@ -0,0 +1,30 @@ > +purgatory-y := purgatory.o stack.o setup-x86_$(BITS).o sha256.o entry64.o string.o > + > +targets += $(purgatory-y) > +PURGATORY_OBJS = $(addprefix $(obj)/,$(purgatory-y)) > + > +LDFLAGS_purgatory.ro := -e purgatory_start -r --no-undefined -nostdlib -z nodefaultlib > +targets += purgatory.ro > + > +# Default KBUILD_CFLAGS can have -pg option set when FTRACE is enabled. That > +# in turn leaves some undefined symbols like __fentry__ in purgatory and not > +# sure how to relocate those. Like kexec-tools, use custom flags. > + > +KBUILD_CFLAGS := -fno-strict-aliasing -Wall -Wstrict-prototypes -fno-zero-initialized-in-bss -fno-builtin -ffreestanding -c -MD -Os -mcmodel=large The above "-mcmodel=large" compiler flag produces the following output on GCC 4.1.2. $ make modules_prepare ; gcc --version CHK include/config/kernel.release CHK include/generated/uapi/linux/version.h CHK include/generated/utsrelease.h CC arch/x86/purgatory/purgatory.o arch/x86/purgatory/purgatory.c:1: sorry, unimplemented: code model ‘large’ not supported yet make[1]: *** [arch/x86/purgatory/purgatory.o] Error 1 make: *** [archprepare] Error 2 gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-54) Copyright (C) 2006 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. I did a quick search for a discussion the indicates this compiler is now officially too old to build the kernel but did not find one. If this is required, maybe Documentation/Changes needs to be updated with the new minimum required version? Cheers, Shaun