From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]) by bombadil.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lWFbs-006tOj-8G for kexec@lists.infradead.org; Tue, 13 Apr 2021 09:45:29 +0000 Date: Tue, 13 Apr 2021 17:45:15 +0800 From: Baoquan He Subject: Re: [PATCH] x86/efi: Do not release sub-1MB memory regions when the crashkernel option is specified Message-ID: <20210413094515.GD4282@MiWiFi-R3L-srv> References: <20210412011347.GA4282@MiWiFi-R3L-srv> <8FAA2A0E-0A09-4308-B936-CDD2C0568BAE@amacapital.net> <20210412095231.GC4282@MiWiFi-R3L-srv> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: 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: Andy Lutomirski Cc: "H. Peter Anvin" , Lianbo Jiang , LKML , linux-efi , Platform Driver , X86 ML , Ard Biesheuvel , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Darren Hart , Andy Shevchenko , kexec@lists.infradead.org, Dave Young T24gMDQvMTIvMjEgYXQgMDg6MjRhbSwgQW5keSBMdXRvbWlyc2tpIHdyb3RlOgo+IE9uIE1vbiwg QXByIDEyLCAyMDIxIGF0IDI6NTIgQU0gQmFvcXVhbiBIZSA8YmhlQHJlZGhhdC5jb20+IHdyb3Rl Ogo+ID4KPiA+IE9uIDA0LzExLzIxIGF0IDA2OjQ5cG0sIEFuZHkgTHV0b21pcnNraSB3cm90ZToK PiA+ID4KPiA+ID4KPiA+ID4gPiBPbiBBcHIgMTEsIDIwMjEsIGF0IDY6MTQgUE0sIEJhb3F1YW4g SGUgPGJoZUByZWRoYXQuY29tPiB3cm90ZToKPiA+ID4gPgo+ID4gPiA+IO+7v09uIDA0LzA5LzIx IGF0IDA3OjU5cG0sIEguIFBldGVyIEFudmluIHdyb3RlOgo+ID4gPiA+PiBXaHkgZG9uJ3Qgd2Ug ZG8gdGhpcyB1bmNvbmRpdGlvbmFsbHk/IEF0IHRoZSB2ZXJ5IGJlc3Qgd2UgZ2FpbiBoYWxmIGEg bWVnYWJ5dGUgb2YgbWVtb3J5IChleGNlcHQgdGhlIHRyYW1wb2xpbmUsIHdoaWNoIGhhcyB0byBs aXZlIHRoZXJlLCBidXQgaXQgaXMgb25seSBhIGZldyBraWxvYnl0ZXMuKQo+ID4gPiA+Cj4gPiA+ ID4gVGhpcyBpcyBhIGdyZWF0IHN1Z2dlc3Rpb24sIHRoYW5rcy4gSSB0aGluayB3ZSBjYW4gZml4 IGl0IGluIHRoaXMgd2F5IHRvCj4gPiA+ID4gbWFrZSBjb2RlIHNpbXBsZXIuIFRoZW4gdGhlIHNw ZWNpZmljIGNhcmluZyBvZiByZWFsIG1vZGUgaW4KPiA+ID4gPiBlZmlfZnJlZV9ib290X3NlcnZp Y2VzKCkgY2FuIGJlIHJlbW92ZWQgdG9vLgo+ID4gPiA+Cj4gPiA+Cj4gPiA+IFRoaXMgd2hvbGUg c2l0dWF0aW9uIG1ha2VzIG1lIHRoaW5rIHRoYXQgdGhlIGNvZGUgaXMgYnVnZ3kgYmVmb3JlIGFu ZCBidWdneSBhZnRlci4KPiA+ID4KPiA+ID4gVGhlIGlzc3VlIGhlcmUgKEkgdGhpbmspIGlzIHRo YXQgdmFyaW91cyBwaWVjZXMgb2YgY29kZSB3YW50IHRvIHJlc2VydmUgc3BlY2lmaWMgcGllY2Vz IG9mIG90aGVyd2lzZS1hdmFpbGFibGUgbG93IG1lbW9yeSBmb3IgdGhlaXIgb3duIG5lZmFyaW91 cyB1c2VzLiBJIGRvbuKAmXQga25vdyAqd2h5KiBjcmFzaCBrZXJuZWwgbmVlZHMgdGhpcywgYnV0 IHRoYXQgZG9lc27igJl0IG1hdHRlciB0b28gbXVjaC4KPiA+Cj4gPiBLZHVtcCBrZXJuZWwgYWxz byBuZWVkIGdvIHRocm91Z2ggcmVhbCBtb2RlIGNvZGUgcGF0aCBkdXJpbmcgYm9vdHVwLiBJdAo+ ID4gaXMgbm90IGRpZmZlcmVudCB0aGFuIG5vcm1hbCBrZXJuZWwgZXhjZXB0IHRoYXQgaXQgc2tp cHMgdGhlIGZpcm13YXJlCj4gPiByZXNldHRpbmcuIFNvIGtkdW1wIGtlcm5lbCBuZWVkcyBsb3cg MU0gYXMgc3lzdGVtIFJBTSBqdXN0IGFzIG5vcm1hbAo+ID4ga2VybmVsIGRvZXMuIEhlcmUgd2Ug cmVzZXJ2ZSB0aGUgd2hvbGUgbG93IDFNIHdpdGggbWVtYmxvY2tfcmVzZXJ2ZSgpCj4gPiB0byBh dm9pZCBhbnkgbGF0ZXIga2VybmVsIG9yIGRyaXZlciBkYXRhIHJlc2lkZSBpbiB0aGlzIGFyZWEu IE90aGVyd2lzZSwKPiA+IHdlIG5lZWQgZHVtcCB0aGUgY29udGVudCBvZiB0aGlzIGFyZWEgdG8g dm1jb3JlLiBBcyB3ZSBrbm93LCB3aGVuIGNyYXNoCj4gPiBoYXBwZW5lZCwgdGhlIG9sZCBtZW1v cnkgb2YgMXN0IGtlcm5lbCBzaG91bGQgYmUgdW50b3VjaGVkIHVudGlsIHZtY29yZQo+ID4gZHVt cGluZyByZWFkIG91dCBpdHMgY29udGVudC4gTWVhbndoaWxlLCBrZHVtcCBrZXJuZWwgbmVlZCBy ZXVzZSBsb3cgMU0uCj4gPiBJbiB0aGUgcGFzdCwgd2UgdXNlZCBhIGJhY2sgdXAgcmVnaW9uIHRv IGNvcHkgb3V0IHRoZSBsb3cgMU0gYXJlYSwgYW5kCj4gPiBtYXAgdGhlIGJhY2sgdXAgcmVnaW9u IGludG8gdGhlIGxvdyAxTSBhcmVhIGluIHZtY29yZSBlbGYgZmlsZS4gSW4KPiA+IDZmNTk5ZDg0 MjMxZmQyNyAoIng4Ni9rZHVtcDogQWx3YXlzIHJlc2VydmUgdGhlIGxvdyAxTSB3aGVuIHRoZSBj cmFzaGtlcm5lbAo+ID4gb3B0aW9uIGlzIHNwZWNpZmllZCIpLCB3ZSBjaGFuZ2VkIHRvIGxvY2sg dGhlIHdob2xlIGxvdyAxTSB0byBhdm9pZAo+ID4gd3JpdHRpbmcgYW55IGtlcm5lbCBkYXRhIGlu dG8sIGxpa2UgdGhpcyB3ZSBjYW4gc2tpcCB0aGlzIGFyZWEgd2hlbgo+ID4gZHVtcGluZyB2bWNv cmUuCj4gPgo+ID4gQWJvdmUgaXMgd2h5IHdlIHRyeSB0byBtZW1ibG9jayByZXNlcnZlIHRoZSB3 aG9sZSBsb3cgMU0uIFdlIGRvbid0IHdhbnQKPiA+IHRvIHVzZSBpdCwganVzdCBkb24ndCB3YW50 IGFueW9uZSB0byB1c2UgaXQgaW4gMXN0IGtlcm5lbC4KPiA+Cj4gPiA+Cj4gPiA+IEkgcHJvcG9z ZSB0aGF0IHRoZSByaWdodCBzb2x1dGlvbiBpcyB0byBnaXZlIGxvdy1tZW1vcnktcmVzZXJ2aW5n IGNvZGUgcGF0aHMgdHdvIGNoYW5jZXMgdG8gZG8gd2hhdCB0aGV5IG5lZWQ6IG9uY2UgYXQgdGhl IHZlcnkgYmVnaW5uaW5nIGFuZCBvbmNlIGFmdGVyIEVGSSBib290IHNlcnZpY2VzIGFyZSBmcmVl ZC4KPiA+ID4KPiA+ID4gQWx0ZXJuYXRpdmVseSwganVzdCByZXNlcnZlICphbGwqIG90aGVyd2lz ZSB1bnVzZWQgc3ViIDFNIG1lbW9yeSB1cCBmcm9udCwgdGhlbiByZWxlYXNlIGl0IHJpZ2h0IGFm dGVyIHJlbGVhc2luZyBib290IHNlcnZpY2VzLCBhbmQgdGhlbiBpbnZva2UgdGhlIHNwZWNpYWwg Y2FzZXMgZXhhY3RseSBvbmNlLgo+ID4KPiA+IEkgYW0gbm90IHN1cmUgaWYgSSBnb3QgYm90aCBz dWdnZXN0ZWQgd2F5cyBjbGVhcmx5LiBUaGV5IGxvb2sgYSBsaXR0bGUKPiA+IGNvbXBsaWNhdGVk IGluIG91ciBjYXNlLiBBcyBJIGV4cGxhaW5lZCBhdCBhYm92ZSwgd2Ugd2FudCB0aGUgd2hvbGUg bG93Cj4gPiAxTSBsb2NrZWQgdXAsIG5vdCBvbmUgcGllY2Ugb3Igc29tZSBwaWVjZXMgb2YgaXQu Cj4gCj4gTXkgc2Vjb25kIHN1Z2dlc3Rpb24gaXMgcHJvYmFibHkgdGhlIGJldHRlciBvbmUuICBI ZXJlIGl0IGlzLCBjb25jcmV0ZWx5Ogo+IAo+IFRoZSBlYXJseSAocHJlLWZyZWVfZWZpX2Jvb3Rf c2VydmljZXMpIGNvZGUganVzdCByZXNlcnZlcyBhbGwKPiBhdmFpbGFibGUgc3ViLTFNIG1lbW9y eSB1bmNvbmRpdGlvbmFsbHksIGJ1dCBpdCBzcGVjaWFsbHkgbWFya3MgaXQgYXMKPiByZXNlcnZl ZC1idXQtYXZhaWxhYmxlLWxhdGVyLiAgV2Ugc3RvcCBhbGxvY2F0aW5nIHRoZSB0cmFtcG9saW5l IHBhZ2UKPiBhdCB0aGlzIHN0YWdlLgo+IAo+IEluIGZyZWVfZWZpX2Jvb3Rfc2VydmljZXMsIGlu c3RlYWQgb2YgKmZyZWVpbmcqIHRoZSBzdWItMU0gbWVtb3J5LCB3ZQo+IHN0aWNrIGl0IGluIHRo ZSBwaWxlIG9mIHJlc2VydmVkIG1lbW9yeSBjcmVhdGVkIGluIHRoZSBlYXJseSBzdGVwLgo+IFRo aXMgbWF5IGludm9sdmUgc3BsaXR0aW5nIGEgYmxvY2ssIGtpbmQgb2YgbGlrZSB0aGUgY3VycmVu dAo+IHRyYW1wb2xpbmUgbGF0ZSBhbGxvY2F0aW9uIHdvcmtzLgo+IAo+IFRoZW4sICphZnRlciog ZnJlZV9lZmlfYm9vdF9zZXJ2aWNlcygpLCB3ZSBydW4gYSBzaW5nbGUgYmxvY2sgb2YgY29kZQo+ IHRoYXQgbGV0cyBldmVyeXRoaW5nIHRoYXQgd2FudHMgc3ViLTFNIGNvZGUgY2xhaW0gc29tZS4g IFRoaXMgbWVhbnMKPiB0aGF0IHRoZSB0cmFtcG9saW5lIGdldHMgYWxsb2NhdGVkIGFuZCwgaWYg Y3Jhc2hrZXJuZWwgd2FudHMgdG8gY2xhaW0KPiBldmVyeXRoaW5nIGVsc2UsIGl0IGNhbi4gIEFm dGVyIHRoYXQsIGV2ZXJ5dGhpbmcgc3RpbGwgdW5jbGFpbWVkIGdldHMKPiBmcmVlZC4KCnZvaWQg X19pbml0IHNldHVwX2FyY2goY2hhciAqKmNtZGxpbmVfcCkKewouLi4KCWVmaV9yZXNlcnZlX2Jv b3Rfc2VydmljZXMoKTsKCWU4MjBfX21lbWJsb2NrX2FsbG9jX3Jlc2VydmVkX21wY19uZXcoKTsK I2lmZGVmIENPTkZJR19YODZfQ0hFQ0tfQklPU19DT1JSVVBUSU9OCiAgICAgICAgc2V0dXBfYmlv c19jb3JydXB0aW9uX2NoZWNrKCk7CiNlbmRpZgogICAgICAgIHJlc2VydmVfcmVhbF9tb2RlKCk7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAoKICAgICAgICB0cmltX3BsYXRmb3JtX21lbW9yeV9yYW5nZXMoKTsKICAgICAgICB0cmlt X2xvd19tZW1vcnlfcmFuZ2UoKTsKLi4uCn0KCkFmdGVyIGVmaV9yZXNlcnZlX2Jvb3Rfc2Vydmlj ZXMoKSwgdGhlcmUgYXJlIHNldmVyYWwgZnVuY3Rpb24gY2FsbGluZyB0bwpyZXF1aXJlIG1lbW9y eSByZXNlcnZhdGlvbiB1bmRlciBsb3cgMU0uCgoKYXNtbGlua2FnZSBfX3Zpc2libGUgdm9pZCBf X2luaXQgX19ub19zYW5pdGl6ZV9hZGRyZXNzIHN0YXJ0X2tlcm5lbCh2b2lkKSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKewouLi4KCXNldHVwX2FyY2goJmNvbW1hbmRfbGluZSk7Ci4uLgoJbW1faW5pdCgpOwoJ CS0tPiBtZW1faW5pdCgpOwoJCQkgLS0+bWVtYmxvY2tfZnJlZV9hbGwoKTsKCi4uLgojaWZkZWYg Q09ORklHX1g4NgogICAgICAgIGlmIChlZmlfZW5hYmxlZChFRklfUlVOVElNRV9TRVJWSUNFUykp CiAgICAgICAgICAgICAgICBlZmlfZW50ZXJfdmlydHVhbF9tb2RlKCk7CgkJCS0tPmVmaV9mcmVl X2Jvb3Rfc2VydmljZXMoKTsKCQkJCS0tPm1lbWJsb2NrX2ZyZWVfbGF0ZSgpOwojZW5kaWYKLi4u Cn0KClNvIGZyb20gdGhlIGNvZGUgZmxvdywgd2UgY2FuIHNlZSB0aGF0IGJ1ZGR5IGFsbG9jYXRv ciBpcyBidWlsdCBpbgptbV9pbml0KCkgd2hpY2ggcHV0cyBhbGwgbWVtb3J5IGZyb20gbWVtYmxv Y2subWVtb3J5IGV4Y2x1ZGluZwptZW1ibG9jay5yZXNlcnZlZCBpbnRvIGJ1ZGR5LiBBbmQgbXVj aCBsYXRlciwgd2UgY2FsbAplZmlfZnJlZV9ib290X3NlcnZpY2VzKCkgdG8gcmVsZWFzZSB0aG9z ZSByZXNlcnZlZCBlZmkgYm9vdCBtZW1vcnkgaW50bwpidWRkeSB0b28uCgpBcmUgeW91IHN1Z2dl c3Rpbmcgd2Ugc2hvdWxkIGRvIHRoZSBtZW1vcnkgcmVzZXJ2YXRpb24gZnJvbSBsb3cgMU0KYWZ0 ZXIgZWZpX2ZyZWVfYm9vdF9zZXJ2aWNlcygpPyBUbyByZXF1aXJlIG1lbW9yeSBwYWdlcyBmcm9t IGJ1ZGR5IGZvcgp0aGVtPyBQbGVhc2UgaGVscCBwb2ludCBvdXQgbXkgbWlzdW5kZXJzdGFuZGlu ZyBpZiBoYXZlIGFueS4KCldpdGggbXkgdW5kZXJzdGFuZGluZywgaW4gbm9uLWVmaSBjYXNlLCB3 ZSBoYXZlIGRvbmUgdGhlIG1lbW9yeQpyZXNlcnZhdGlvbiB3aXRoIG1lbWJsb2NrX3Jlc2VydmUo KSwgZS5nCmU4MjBfX21lbWJsb2NrX2FsbG9jX3Jlc2VydmVkX21wY19uZXcsIHJlc2VydmVfcmVh bF9tb2RlKCkgYXJlIGNhbGxpbmcKdG8gZG8uIEp1c3QgZWZpX3Jlc2VydmV8ZnJlZV9ib290X3Nl cnZpY2VzKCkgYnJlYWsgdGhlbSB3aGVuIGVmaSBpcwplbmFibGVkLiBXZSBjYW4gZG8gdGhlbSBh Z2FpbiBpbiBlZmlfZnJlZV9ib290X3NlcnZpY2VzKCkganVzdCBsaWtlIHRoZQpyZWFsX21vZGUg cmVzZXJ2YXRpb24gZG9lcy4KClRoYW5rcwpCYW9xdWFuCgoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18Ka2V4ZWMgbWFpbGluZyBsaXN0CmtleGVjQGxpc3Rz LmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5m by9rZXhlYwo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.3 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 15EB0C433ED for ; Tue, 13 Apr 2021 09:45:29 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E8D6A613B6 for ; Tue, 13 Apr 2021 09:45:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230273AbhDMJpr (ORCPT ); Tue, 13 Apr 2021 05:45:47 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:50094 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229712AbhDMJpq (ORCPT ); Tue, 13 Apr 2021 05:45:46 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1618307126; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=FovRzir69GjJpIMDPymDt6UWLVisdeK1mUh5/bQVIT4=; b=GwtLLUsivVQIz3Jlppk0CWOwA0QXRaNCLUWZwA+1o3AcLms/FY0CU5CxidsE1f3tX28/bt tsGFc4tBw3qQOWQn7pS4I5YkeoMflmWzxUYM48hzxkKutKm7vHrgV99qVAn6CHvL4Y0t8o mCFa84Y0bml7fVQxJkvY6aodXbBuo7s= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-359-DSoJS-4tMJCTwZ6FU43IpA-1; Tue, 13 Apr 2021 05:45:24 -0400 X-MC-Unique: DSoJS-4tMJCTwZ6FU43IpA-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 7D91D87A841; Tue, 13 Apr 2021 09:45:22 +0000 (UTC) Received: from localhost (ovpn-12-38.pek2.redhat.com [10.72.12.38]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 6F4CB6E51F; Tue, 13 Apr 2021 09:45:18 +0000 (UTC) Date: Tue, 13 Apr 2021 17:45:15 +0800 From: Baoquan He To: Andy Lutomirski Cc: "H. Peter Anvin" , Lianbo Jiang , LKML , linux-efi , Platform Driver , X86 ML , Ard Biesheuvel , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Darren Hart , Andy Shevchenko , kexec@lists.infradead.org, Dave Young Subject: Re: [PATCH] x86/efi: Do not release sub-1MB memory regions when the crashkernel option is specified Message-ID: <20210413094515.GD4282@MiWiFi-R3L-srv> References: <20210412011347.GA4282@MiWiFi-R3L-srv> <8FAA2A0E-0A09-4308-B936-CDD2C0568BAE@amacapital.net> <20210412095231.GC4282@MiWiFi-R3L-srv> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.10.1 (2018-07-13) X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 Precedence: bulk List-ID: X-Mailing-List: linux-efi@vger.kernel.org On 04/12/21 at 08:24am, Andy Lutomirski wrote: > On Mon, Apr 12, 2021 at 2:52 AM Baoquan He wrote: > > > > On 04/11/21 at 06:49pm, Andy Lutomirski wrote: > > > > > > > > > > On Apr 11, 2021, at 6:14 PM, Baoquan He wrote: > > > > > > > > On 04/09/21 at 07:59pm, H. Peter Anvin wrote: > > > >> Why don't we do this unconditionally? At the very best we gain half a megabyte of memory (except the trampoline, which has to live there, but it is only a few kilobytes.) > > > > > > > > This is a great suggestion, thanks. I think we can fix it in this way to > > > > make code simpler. Then the specific caring of real mode in > > > > efi_free_boot_services() can be removed too. > > > > > > > > > > This whole situation makes me think that the code is buggy before and buggy after. > > > > > > The issue here (I think) is that various pieces of code want to reserve specific pieces of otherwise-available low memory for their own nefarious uses. I don’t know *why* crash kernel needs this, but that doesn’t matter too much. > > > > Kdump kernel also need go through real mode code path during bootup. It > > is not different than normal kernel except that it skips the firmware > > resetting. So kdump kernel needs low 1M as system RAM just as normal > > kernel does. Here we reserve the whole low 1M with memblock_reserve() > > to avoid any later kernel or driver data reside in this area. Otherwise, > > we need dump the content of this area to vmcore. As we know, when crash > > happened, the old memory of 1st kernel should be untouched until vmcore > > dumping read out its content. Meanwhile, kdump kernel need reuse low 1M. > > In the past, we used a back up region to copy out the low 1M area, and > > map the back up region into the low 1M area in vmcore elf file. In > > 6f599d84231fd27 ("x86/kdump: Always reserve the low 1M when the crashkernel > > option is specified"), we changed to lock the whole low 1M to avoid > > writting any kernel data into, like this we can skip this area when > > dumping vmcore. > > > > Above is why we try to memblock reserve the whole low 1M. We don't want > > to use it, just don't want anyone to use it in 1st kernel. > > > > > > > > I propose that the right solution is to give low-memory-reserving code paths two chances to do what they need: once at the very beginning and once after EFI boot services are freed. > > > > > > Alternatively, just reserve *all* otherwise unused sub 1M memory up front, then release it right after releasing boot services, and then invoke the special cases exactly once. > > > > I am not sure if I got both suggested ways clearly. They look a little > > complicated in our case. As I explained at above, we want the whole low > > 1M locked up, not one piece or some pieces of it. > > My second suggestion is probably the better one. Here it is, concretely: > > The early (pre-free_efi_boot_services) code just reserves all > available sub-1M memory unconditionally, but it specially marks it as > reserved-but-available-later. We stop allocating the trampoline page > at this stage. > > In free_efi_boot_services, instead of *freeing* the sub-1M memory, we > stick it in the pile of reserved memory created in the early step. > This may involve splitting a block, kind of like the current > trampoline late allocation works. > > Then, *after* free_efi_boot_services(), we run a single block of code > that lets everything that wants sub-1M code claim some. This means > that the trampoline gets allocated and, if crashkernel wants to claim > everything else, it can. After that, everything still unclaimed gets > freed. void __init setup_arch(char **cmdline_p) { ... efi_reserve_boot_services(); e820__memblock_alloc_reserved_mpc_new(); #ifdef CONFIG_X86_CHECK_BIOS_CORRUPTION setup_bios_corruption_check(); #endif reserve_real_mode(); trim_platform_memory_ranges(); trim_low_memory_range(); ... } After efi_reserve_boot_services(), there are several function calling to require memory reservation under low 1M. asmlinkage __visible void __init __no_sanitize_address start_kernel(void) { ... setup_arch(&command_line); ... mm_init(); --> mem_init(); -->memblock_free_all(); ... #ifdef CONFIG_X86 if (efi_enabled(EFI_RUNTIME_SERVICES)) efi_enter_virtual_mode(); -->efi_free_boot_services(); -->memblock_free_late(); #endif ... } So from the code flow, we can see that buddy allocator is built in mm_init() which puts all memory from memblock.memory excluding memblock.reserved into buddy. And much later, we call efi_free_boot_services() to release those reserved efi boot memory into buddy too. Are you suggesting we should do the memory reservation from low 1M after efi_free_boot_services()? To require memory pages from buddy for them? Please help point out my misunderstanding if have any. With my understanding, in non-efi case, we have done the memory reservation with memblock_reserve(), e.g e820__memblock_alloc_reserved_mpc_new, reserve_real_mode() are calling to do. Just efi_reserve|free_boot_services() break them when efi is enabled. We can do them again in efi_free_boot_services() just like the real_mode reservation does. Thanks Baoquan