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 1ll619-000lvz-8Z for kexec@lists.infradead.org; Mon, 24 May 2021 08:32:57 +0000 Date: Mon, 24 May 2021 16:32:39 +0800 From: Baoquan He Subject: Re: [PATCH] x86/efi: Do not release sub-1MB memory regions when the crashkernel option is specified Message-ID: <20210524083239.GA2872@MiWiFi-R3L-srv> References: <20210412011347.GA4282@MiWiFi-R3L-srv> <8FAA2A0E-0A09-4308-B936-CDD2C0568BAE@amacapital.net> <20210412095231.GC4282@MiWiFi-R3L-srv> <20210413094515.GD4282@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: lijiang , andy@infradead.org Cc: linux-kernel@vger.kernel.org, linux-efi@vger.kernel.org, platform-driver-x86@vger.kernel.org, x86@kernel.org, ardb@kernel.org, tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, dvhart@infradead.org, kexec@lists.infradead.org, hpa@zytor.com, Dave Young SGkgTGlhbmJvLAoKT24gMDUvMjQvMjEgYXQgMTE6MDBhbSwgbGlqaWFuZyB3cm90ZToKPiBBbHNv IGFkZCBtYWlsIGxpc3RzIGFuZCBtb3JlIHBlb3BsZSBpbiB0aGUgY2MgbGlzdC4KPiAKPiBUaGFu a3MuCj4gTGlhbmJvCj4gCj4gCj4gT24gRnJpLCBNYXkgMjEsIDIwMjEgYXQgODozNiBQTSBsaWpp YW5nIDxsaWppYW5nQHJlZGhhdC5jb20+IHdyb3RlOgo+IAo+ID4gSGksIEJhb3F1YW4sIEFuZHkK PiA+IFNvcnJ5IGZvciB0aGUgbGF0ZSByZXBseS4KPiA+Cj4gPiBPbiBUdWUsIEFwciAxMywgMjAy MSBhdCA1OjQ1IFBNIEJhb3F1YW4gSGUgPGJoZUByZWRoYXQuY29tPiB3cm90ZToKPiA+Cj4gPj4g T24gMDQvMTIvMjEgYXQgMDg6MjRhbSwgQW5keSBMdXRvbWlyc2tpIHdyb3RlOgo+ID4+ID4gT24g TW9uLCBBcHIgMTIsIDIwMjEgYXQgMjo1MiBBTSBCYW9xdWFuIEhlIDxiaGVAcmVkaGF0LmNvbT4g d3JvdGU6Cj4gPj4gPiA+Cj4gPj4gPiA+IE9uIDA0LzExLzIxIGF0IDA2OjQ5cG0sIEFuZHkgTHV0 b21pcnNraSB3cm90ZToKPiA+PiA+ID4gPgo+ID4+ID4gPiA+Cj4gPj4gPiA+ID4gPiBPbiBBcHIg MTEsIDIwMjEsIGF0IDY6MTQgUE0sIEJhb3F1YW4gSGUgPGJoZUByZWRoYXQuY29tPiB3cm90ZToK PiA+PiA+ID4gPiA+Cj4gPj4gPiA+ID4gPiDvu79PbiAwNC8wOS8yMSBhdCAwNzo1OXBtLCBILiBQ ZXRlciBBbnZpbiB3cm90ZToKPiA+PiA+ID4gPiA+PiBXaHkgZG9uJ3Qgd2UgZG8gdGhpcyB1bmNv bmRpdGlvbmFsbHk/IEF0IHRoZSB2ZXJ5IGJlc3Qgd2UgZ2Fpbgo+ID4+IGhhbGYgYSBtZWdhYnl0 ZSBvZiBtZW1vcnkgKGV4Y2VwdCB0aGUgdHJhbXBvbGluZSwgd2hpY2ggaGFzIHRvIGxpdmUgdGhl cmUsCj4gPj4gYnV0IGl0IGlzIG9ubHkgYSBmZXcga2lsb2J5dGVzLikKPiA+PiA+ID4gPiA+Cj4g Pj4gPiA+ID4gPiBUaGlzIGlzIGEgZ3JlYXQgc3VnZ2VzdGlvbiwgdGhhbmtzLiBJIHRoaW5rIHdl IGNhbiBmaXggaXQgaW4gdGhpcwo+ID4+IHdheSB0bwo+ID4+ID4gPiA+ID4gbWFrZSBjb2RlIHNp bXBsZXIuIFRoZW4gdGhlIHNwZWNpZmljIGNhcmluZyBvZiByZWFsIG1vZGUgaW4KPiA+PiA+ID4g PiA+IGVmaV9mcmVlX2Jvb3Rfc2VydmljZXMoKSBjYW4gYmUgcmVtb3ZlZCB0b28uCj4gPj4gPiA+ ID4gPgo+ID4+ID4gPiA+Cj4gPj4gPiA+ID4gVGhpcyB3aG9sZSBzaXR1YXRpb24gbWFrZXMgbWUg dGhpbmsgdGhhdCB0aGUgY29kZSBpcyBidWdneSBiZWZvcmUKPiA+PiBhbmQgYnVnZ3kgYWZ0ZXIu Cj4gPj4gPiA+ID4KPiA+PiA+ID4gPiBUaGUgaXNzdWUgaGVyZSAoSSB0aGluaykgaXMgdGhhdCB2 YXJpb3VzIHBpZWNlcyBvZiBjb2RlIHdhbnQgdG8KPiA+PiByZXNlcnZlIHNwZWNpZmljIHBpZWNl cyBvZiBvdGhlcndpc2UtYXZhaWxhYmxlIGxvdyBtZW1vcnkgZm9yIHRoZWlyIG93bgo+ID4+IG5l ZmFyaW91cyB1c2VzLiBJIGRvbuKAmXQga25vdyAqd2h5KiBjcmFzaCBrZXJuZWwgbmVlZHMgdGhp cywgYnV0IHRoYXQKPiA+PiBkb2VzbuKAmXQgbWF0dGVyIHRvbyBtdWNoLgo+ID4+ID4gPgo+ID4+ ID4gPiBLZHVtcCBrZXJuZWwgYWxzbyBuZWVkIGdvIHRocm91Z2ggcmVhbCBtb2RlIGNvZGUgcGF0 aCBkdXJpbmcgYm9vdHVwLgo+ID4+IEl0Cj4gPj4gPiA+IGlzIG5vdCBkaWZmZXJlbnQgdGhhbiBu b3JtYWwga2VybmVsIGV4Y2VwdCB0aGF0IGl0IHNraXBzIHRoZSBmaXJtd2FyZQo+ID4+ID4gPiBy ZXNldHRpbmcuIFNvIGtkdW1wIGtlcm5lbCBuZWVkcyBsb3cgMU0gYXMgc3lzdGVtIFJBTSBqdXN0 IGFzIG5vcm1hbAo+ID4+ID4gPiBrZXJuZWwgZG9lcy4gSGVyZSB3ZSByZXNlcnZlIHRoZSB3aG9s ZSBsb3cgMU0gd2l0aCBtZW1ibG9ja19yZXNlcnZlKCkKPiA+PiA+ID4gdG8gYXZvaWQgYW55IGxh dGVyIGtlcm5lbCBvciBkcml2ZXIgZGF0YSByZXNpZGUgaW4gdGhpcyBhcmVhLgo+ID4+IE90aGVy d2lzZSwKPiA+PiA+ID4gd2UgbmVlZCBkdW1wIHRoZSBjb250ZW50IG9mIHRoaXMgYXJlYSB0byB2 bWNvcmUuIEFzIHdlIGtub3csIHdoZW4KPiA+PiBjcmFzaAo+ID4+ID4gPiBoYXBwZW5lZCwgdGhl IG9sZCBtZW1vcnkgb2YgMXN0IGtlcm5lbCBzaG91bGQgYmUgdW50b3VjaGVkIHVudGlsCj4gPj4g dm1jb3JlCj4gPj4gPiA+IGR1bXBpbmcgcmVhZCBvdXQgaXRzIGNvbnRlbnQuIE1lYW53aGlsZSwg a2R1bXAga2VybmVsIG5lZWQgcmV1c2UgbG93Cj4gPj4gMU0uCj4gPj4gPiA+IEluIHRoZSBwYXN0 LCB3ZSB1c2VkIGEgYmFjayB1cCByZWdpb24gdG8gY29weSBvdXQgdGhlIGxvdyAxTSBhcmVhLCBh bmQKPiA+PiA+ID4gbWFwIHRoZSBiYWNrIHVwIHJlZ2lvbiBpbnRvIHRoZSBsb3cgMU0gYXJlYSBp biB2bWNvcmUgZWxmIGZpbGUuIEluCj4gPj4gPiA+IDZmNTk5ZDg0MjMxZmQyNyAoIng4Ni9rZHVt cDogQWx3YXlzIHJlc2VydmUgdGhlIGxvdyAxTSB3aGVuIHRoZQo+ID4+IGNyYXNoa2VybmVsCj4g Pj4gPiA+IG9wdGlvbiBpcyBzcGVjaWZpZWQiKSwgd2UgY2hhbmdlZCB0byBsb2NrIHRoZSB3aG9s ZSBsb3cgMU0gdG8gYXZvaWQKPiA+PiA+ID4gd3JpdHRpbmcgYW55IGtlcm5lbCBkYXRhIGludG8s IGxpa2UgdGhpcyB3ZSBjYW4gc2tpcCB0aGlzIGFyZWEgd2hlbgo+ID4+ID4gPiBkdW1waW5nIHZt Y29yZS4KPiA+PiA+ID4KPiA+PiA+ID4gQWJvdmUgaXMgd2h5IHdlIHRyeSB0byBtZW1ibG9jayBy ZXNlcnZlIHRoZSB3aG9sZSBsb3cgMU0uIFdlIGRvbid0Cj4gPj4gd2FudAo+ID4+ID4gPiB0byB1 c2UgaXQsIGp1c3QgZG9uJ3Qgd2FudCBhbnlvbmUgdG8gdXNlIGl0IGluIDFzdCBrZXJuZWwuCj4g Pj4gPiA+Cj4gPj4gPiA+ID4KPiA+PiA+ID4gPiBJIHByb3Bvc2UgdGhhdCB0aGUgcmlnaHQgc29s dXRpb24gaXMgdG8gZ2l2ZSBsb3ctbWVtb3J5LXJlc2VydmluZwo+ID4+IGNvZGUgcGF0aHMgdHdv IGNoYW5jZXMgdG8gZG8gd2hhdCB0aGV5IG5lZWQ6IG9uY2UgYXQgdGhlIHZlcnkgYmVnaW5uaW5n IGFuZAo+ID4+IG9uY2UgYWZ0ZXIgRUZJIGJvb3Qgc2VydmljZXMgYXJlIGZyZWVkLgo+ID4+ID4g PiA+Cj4gPj4gPiA+ID4gQWx0ZXJuYXRpdmVseSwganVzdCByZXNlcnZlICphbGwqIG90aGVyd2lz ZSB1bnVzZWQgc3ViIDFNIG1lbW9yeSB1cAo+ID4+IGZyb250LCB0aGVuIHJlbGVhc2UgaXQgcmln aHQgYWZ0ZXIgcmVsZWFzaW5nIGJvb3Qgc2VydmljZXMsIGFuZCB0aGVuIGludm9rZQo+ID4+IHRo ZSBzcGVjaWFsIGNhc2VzIGV4YWN0bHkgb25jZS4KPiA+PiA+ID4KPiA+PiA+ID4gSSBhbSBub3Qg c3VyZSBpZiBJIGdvdCBib3RoIHN1Z2dlc3RlZCB3YXlzIGNsZWFybHkuIFRoZXkgbG9vayBhIGxp dHRsZQo+ID4+ID4gPiBjb21wbGljYXRlZCBpbiBvdXIgY2FzZS4gQXMgSSBleHBsYWluZWQgYXQg YWJvdmUsIHdlIHdhbnQgdGhlIHdob2xlCj4gPj4gbG93Cj4gPj4gPiA+IDFNIGxvY2tlZCB1cCwg bm90IG9uZSBwaWVjZSBvciBzb21lIHBpZWNlcyBvZiBpdC4KPiA+PiA+Cj4gPj4gPiBNeSBzZWNv bmQgc3VnZ2VzdGlvbiBpcyBwcm9iYWJseSB0aGUgYmV0dGVyIG9uZS4gIEhlcmUgaXQgaXMsCj4g Pj4gY29uY3JldGVseToKPiA+PiA+Cj4gPj4gPiBUaGUgZWFybHkgKHByZS1mcmVlX2VmaV9ib290 X3NlcnZpY2VzKSBjb2RlIGp1c3QgcmVzZXJ2ZXMgYWxsCj4gPj4gPiBhdmFpbGFibGUgc3ViLTFN IG1lbW9yeSB1bmNvbmRpdGlvbmFsbHksIGJ1dCBpdCBzcGVjaWFsbHkgbWFya3MgaXQgYXMKPiA+ PiA+IHJlc2VydmVkLWJ1dC1hdmFpbGFibGUtbGF0ZXIuICBXZSBzdG9wIGFsbG9jYXRpbmcgdGhl IHRyYW1wb2xpbmUgcGFnZQo+ID4+ID4gYXQgdGhpcyBzdGFnZS4KPiA+PiA+Cj4gPj4gPiBJbiBm cmVlX2VmaV9ib290X3NlcnZpY2VzLCBpbnN0ZWFkIG9mICpmcmVlaW5nKiB0aGUgc3ViLTFNIG1l bW9yeSwgd2UKPiA+PiA+IHN0aWNrIGl0IGluIHRoZSBwaWxlIG9mIHJlc2VydmVkIG1lbW9yeSBj cmVhdGVkIGluIHRoZSBlYXJseSBzdGVwLgo+ID4+ID4gVGhpcyBtYXkgaW52b2x2ZSBzcGxpdHRp bmcgYSBibG9jaywga2luZCBvZiBsaWtlIHRoZSBjdXJyZW50Cj4gPj4gPiB0cmFtcG9saW5lIGxh dGUgYWxsb2NhdGlvbiB3b3Jrcy4KPiA+PiA+Cj4gPj4gPiBUaGVuLCAqYWZ0ZXIqIGZyZWVfZWZp X2Jvb3Rfc2VydmljZXMoKSwgd2UgcnVuIGEgc2luZ2xlIGJsb2NrIG9mIGNvZGUKPiA+PiA+IHRo YXQgbGV0cyBldmVyeXRoaW5nIHRoYXQgd2FudHMgc3ViLTFNIGNvZGUgY2xhaW0gc29tZS4gIFRo aXMgbWVhbnMKPiA+PiA+IHRoYXQgdGhlIHRyYW1wb2xpbmUgZ2V0cyBhbGxvY2F0ZWQgYW5kLCBp ZiBjcmFzaGtlcm5lbCB3YW50cyB0byBjbGFpbQo+ID4+ID4gZXZlcnl0aGluZyBlbHNlLCBpdCBj YW4uICBBZnRlciB0aGF0LCBldmVyeXRoaW5nIHN0aWxsIHVuY2xhaW1lZCBnZXRzCj4gPj4gPiBm cmVlZC4KPiA+Pgo+ID4+IHZvaWQgX19pbml0IHNldHVwX2FyY2goY2hhciAqKmNtZGxpbmVfcCkK PiA+PiB7Cj4gPj4gLi4uCj4gPj4gICAgICAgICBlZmlfcmVzZXJ2ZV9ib290X3NlcnZpY2VzKCk7 Cj4gPj4gICAgICAgICBlODIwX19tZW1ibG9ja19hbGxvY19yZXNlcnZlZF9tcGNfbmV3KCk7Cj4g Pj4gI2lmZGVmIENPTkZJR19YODZfQ0hFQ0tfQklPU19DT1JSVVBUSU9OCj4gPj4gICAgICAgICBz ZXR1cF9iaW9zX2NvcnJ1cHRpb25fY2hlY2soKTsKPiA+PiAjZW5kaWYKPiA+PiAgICAgICAgIHJl c2VydmVfcmVhbF9tb2RlKCk7Cj4gPj4KPiA+Pgo+ID4+ICAgICAgICAgdHJpbV9wbGF0Zm9ybV9t ZW1vcnlfcmFuZ2VzKCk7Cj4gPj4gICAgICAgICB0cmltX2xvd19tZW1vcnlfcmFuZ2UoKTsKPiA+ PiAuLi4KPiA+PiB9Cj4gPj4KPiA+PiBBZnRlciBlZmlfcmVzZXJ2ZV9ib290X3NlcnZpY2VzKCks IHRoZXJlIGFyZSBzZXZlcmFsIGZ1bmN0aW9uIGNhbGxpbmcgdG8KPiA+PiByZXF1aXJlIG1lbW9y eSByZXNlcnZhdGlvbiB1bmRlciBsb3cgMU0uCj4gPj4KPiA+Pgo+ID4+IGFzbWxpbmthZ2UgX192 aXNpYmxlIHZvaWQgX19pbml0IF9fbm9fc2FuaXRpemVfYWRkcmVzcwo+ID4+IHN0YXJ0X2tlcm5l bCh2b2lkKQo+ID4+Cj4gPj4gewo+ID4+IC4uLgo+ID4+ICAgICAgICAgc2V0dXBfYXJjaCgmY29t bWFuZF9saW5lKTsKPiA+PiAuLi4KPiA+PiAgICAgICAgIG1tX2luaXQoKTsKPiA+PiAgICAgICAg ICAgICAgICAgLS0+IG1lbV9pbml0KCk7Cj4gPj4gICAgICAgICAgICAgICAgICAgICAgICAgIC0t Pm1lbWJsb2NrX2ZyZWVfYWxsKCk7Cj4gPj4KPiA+PiAuLi4KPiA+PiAjaWZkZWYgQ09ORklHX1g4 Ngo+ID4+ICAgICAgICAgaWYgKGVmaV9lbmFibGVkKEVGSV9SVU5USU1FX1NFUlZJQ0VTKSkKPiA+ PiAgICAgICAgICAgICAgICAgZWZpX2VudGVyX3ZpcnR1YWxfbW9kZSgpOwo+ID4+ICAgICAgICAg ICAgICAgICAgICAgICAgIC0tPmVmaV9mcmVlX2Jvb3Rfc2VydmljZXMoKTsKPiA+PiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0tPm1lbWJsb2NrX2ZyZWVfbGF0ZSgpOwo+ID4+ICNl bmRpZgo+ID4+IC4uLgo+ID4+IH0KPiA+Pgo+ID4+IFNvIGZyb20gdGhlIGNvZGUgZmxvdywgd2Ug Y2FuIHNlZSB0aGF0IGJ1ZGR5IGFsbG9jYXRvciBpcyBidWlsdCBpbgo+ID4+IG1tX2luaXQoKSB3 aGljaCBwdXRzIGFsbCBtZW1vcnkgZnJvbSBtZW1ibG9jay5tZW1vcnkgZXhjbHVkaW5nCj4gPj4g bWVtYmxvY2sucmVzZXJ2ZWQgaW50byBidWRkeS4gQW5kIG11Y2ggbGF0ZXIsIHdlIGNhbGwKPiA+ PiBlZmlfZnJlZV9ib290X3NlcnZpY2VzKCkgdG8gcmVsZWFzZSB0aG9zZSByZXNlcnZlZCBlZmkg Ym9vdCBtZW1vcnkgaW50bwo+ID4+IGJ1ZGR5IHRvby4KPiA+Pgo+ID4+IEFyZSB5b3Ugc3VnZ2Vz dGluZyB3ZSBzaG91bGQgZG8gdGhlIG1lbW9yeSByZXNlcnZhdGlvbiBmcm9tIGxvdyAxTQo+ID4+ IGFmdGVyIGVmaV9mcmVlX2Jvb3Rfc2VydmljZXMoKT8gVG8gcmVxdWlyZSBtZW1vcnkgcGFnZXMg ZnJvbSBidWRkeSBmb3IKPiA+PiB0aGVtPyBQbGVhc2UgaGVscCBwb2ludCBvdXQgbXkgbWlzdW5k ZXJzdGFuZGluZyBpZiBoYXZlIGFueS4KPiA+Pgo+ID4+IFdpdGggbXkgdW5kZXJzdGFuZGluZywg aW4gbm9uLWVmaSBjYXNlLCB3ZSBoYXZlIGRvbmUgdGhlIG1lbW9yeQo+ID4+IHJlc2VydmF0aW9u IHdpdGggbWVtYmxvY2tfcmVzZXJ2ZSgpLCBlLmcKPiA+PiBlODIwX19tZW1ibG9ja19hbGxvY19y ZXNlcnZlZF9tcGNfbmV3LCByZXNlcnZlX3JlYWxfbW9kZSgpIGFyZSBjYWxsaW5nCj4gPj4gdG8g ZG8uIEp1c3QgZWZpX3Jlc2VydmV8ZnJlZV9ib290X3NlcnZpY2VzKCkgYnJlYWsgdGhlbSB3aGVu IGVmaSBpcwo+ID4+Cj4gPgo+ID4gIFllcy4gQnV0IEFuZHkgYWxzbyBzdWdnZXN0ZWQgdG8gcmVz ZXJ2ZSBhbGwgYXZhaWxhYmxlIHN1Yi0xTSBtZW1vcnkKPiA+ICoqdW5jb25kaXRpb25hbGx5KioK PiA+IGluIHRoZSBlYXJseSBjb2RlLgo+ID4KPiA+IGVuYWJsZWQuIFdlIGNhbiBkbyB0aGVtIGFn YWluIGluIGVmaV9mcmVlX2Jvb3Rfc2VydmljZXMoKSBqdXN0IGxpa2UgdGhlCj4gPj4gcmVhbF9t b2RlIHJlc2VydmF0aW9uIGRvZXMuCj4gPj4KPiA+Cj4gPiBEbyB5b3UgbWVhbiB0byBjYWxsIHRo ZSBtZW1ibG9ja19yZXNlcnZlKCkgaW4KPiA+IHRoZSBlZmlfZnJlZV9ib290X3NlcnZpY2VzKCk/ IE9yIGFueXRoaW5nIGVsc2U/Cj4gPiBXb3VsZCB5b3UgbWluZCBzaGFyaW5nIG1vcmUgZGV0YWls cyBhYm91dCB0aGlzPwoKSG1tLCBtYXliZSBuby4gVGhlcmUncyBubyBjaGFuY2UgdG8gY2FsbCBt ZW1ibG9ja19yZXNlcnZlKCkgYWZ0ZXIgCm1lbWJsb2NrX2ZyZWVfbGF0ZSgpLgoKSSBzdWdnZXN0 ZWQgbWFraW5nIGNoYW5nZSBpbiBlZmlfZnJlZV9ib290X3NlcnZpY2VzKCkgYmVjYXVzZSB0aGUK c2ltaWxhciBwcm9ibGVtIGhhcyBiZWVuIGVuY291bnRlcmVkIGJ5IEFuZHkgaGltc2VsZiBhbmQg Zml4ZWQgaW4KZWZpX2ZyZWVfYm9vdF9zZXJ2aWNlcygpLiBQbGVhc2UgY2hlY2sgYmVsb3cgY29t bWl0IGZvciByZWZlcmVuY2UuClRoZSBwYXRjaCBkZXNjcmliZWQgdGhlIHBoZW5lbWVub24sIHdo aWxlIGV4cGxhaW5lZCB3aHkgaW4gY29kZQpjb21tZW50LgoKY29tbWl0IDViYzY1M2I3MzE4MjE3 YzU0MjQ0YTE0ZjI0OGYxZjA3YWJlMGE4NjUKQXV0aG9yOiBBbmR5IEx1dG9taXJza2kgPGx1dG9A a2VybmVsLm9yZz4KRGF0ZTogICBXZWQgQXVnIDEwIDAyOjI5OjE3IDIwMTYgLTA3MDAKCiAgICB4 ODYvZWZpOiBBbGxvY2F0ZSBhIHRyYW1wb2xpbmUgaWYgbmVlZGVkIGluIGVmaV9mcmVlX2Jvb3Rf c2VydmljZXMoKQoKU28gd2UgY291bGQgaGFuZGxlIGl0IGluIHRoZSBzYW1lIHBsYWNlIGJ5IGV4 dGVuZGluZyB0aGUgYXJlYSB0byB0aGUKd2hvbGUgbG93LTFNIHVuY29uZGl0aW9uYWxseS4gVGhp cyBpcyAxc3Qgd2F5IG9mIHRocmVlIEkgY2FuIHRoaW5rIG9mLgoKVGhlIG90aGVyIHR3byBhcmU6 CjIpIE1vdmUgZWZpX3Jlc2VydmVfYm9vdF9zZXJ2aWNlcygpIGRvd24gdG8gYmUgYWJvdmUgaW5p dF9tZW1fbWFwcGluZygpLgp1bnRpbCBpbml0X21lbV9tYXBwaW5nKCksIHdlIHN0b3AgcmVzZXJ2 aW5nIG1lbW9yeSBmcm9tIGxvdy0xTSB3aXRoCm1lbWJsb2NrX3Jlc2VydmUoKS4gVGhlIGNoYW5n ZSBpcyBsaWtlIGJlbG93OgoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9zZXR1cC5jIGIv YXJjaC94ODYva2VybmVsL3NldHVwLmMKaW5kZXggNzI5MjBhZjBiM2MwLi45M2IyMTA2ZDIwNTAg MTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9zZXR1cC5jCisrKyBiL2FyY2gveDg2L2tlcm5l bC9zZXR1cC5jCkBAIC0xMDY3LDcgKzEwNjcsNiBAQCB2b2lkIF9faW5pdCBzZXR1cF9hcmNoKGNo YXIgKipjbWRsaW5lX3ApCiAJICogVGhlIEVGSSBzcGVjaWZpY2F0aW9uIHNheXMgdGhhdCBib290 IHNlcnZpY2UgY29kZSB3b24ndCBiZQogCSAqIGNhbGxlZCBhZnRlciBFeGl0Qm9vdFNlcnZpY2Vz KCkuIFRoaXMgaXMsIGluIGZhY3QsIGEgbGllLgogCSAqLwotCWVmaV9yZXNlcnZlX2Jvb3Rfc2Vy dmljZXMoKTsKIAogCS8qIHByZWFsbG9jYXRlIDRrIGZvciBtcHRhYmxlIG1wYyAqLwogCWU4MjBf X21lbWJsb2NrX2FsbG9jX3Jlc2VydmVkX21wY19uZXcoKTsKQEAgLTEwOTAsNiArMTA4OSw4IEBA IHZvaWQgX19pbml0IHNldHVwX2FyY2goY2hhciAqKmNtZGxpbmVfcCkKIAkgKi8KIAl0cmltX3Nu Yl9tZW1vcnkoKTsKIAorCWVmaV9yZXNlcnZlX2Jvb3Rfc2VydmljZXMoKTsKKwogCWluaXRfbWVt X21hcHBpbmcoKTsKIAogCWlkdF9zZXR1cF9lYXJseV9wZigpOwoKCjMpIERvIGl0IGluIGVmaV9y ZXNlcnZlX2Jvb3Rfc2VydmljZXMoKSBhcyB5b3UgYXJlIGRvaW5nIGluIHRoaXMgcGF0Y2guCgpJ IHByZWZlciB0aGUgMXN0IGFuZCAybmQgd2F5LgoKQW5kIGJ5IHRoZSB3YXksIHRoZSBvcmlnaW5h bCBjb2RlIG9mIGNvbW1pdCA1YmM2NTNiNzMxODIxKCJ4ODYvZWZpOiBBbGxvY2F0ZQphIHRyYW1w b2xpbmUgaWYgbmVlZGVkIGluIGVmaV9mcmVlX2Jvb3Rfc2VydmljZXMoKSIpIGNvdWxkIGJlIGJ1 Z2d5LiBJCnJlbWVtYmVyIHlvdSBldmVyIHBhc3RlZCB0aGUgYm9vdCBsb2cgb2Ygc3lzdGVtIHdo ZXJlIHlvdSByZXByb2R1Y2VkCmlzc3VlIGFuZCB0ZXN0ZWQgdGhlIHRlc3RlZCBwYXRjaCwgdGhl cmUgYXJlIHRocmVlIHNlcGFyYXRlIHBhZ2VzIGZyb20KbG93LTFNIHJlc2VydmVkIGJ5IGJvb3Qg c2VydmljZXMuIElmIGFueSBvZiB0aGVtIGZhbGxzIGludG8gcmVhbCBtb2RlCmFyZWEsIGl0IHdp bGwgYnJlYWsgdGhlIGZpeCBvZiBjb21taXQgNWJjNjUzYjczMTgyMS4KClRoYW5rcwpCYW9xdWFu Cgo+ID4KPiA+IGRpZmYgLS1naXQgYS9hcmNoL3g4Ni9wbGF0Zm9ybS9lZmkvcXVpcmtzLmMKPiA+ IGIvYXJjaC94ODYvcGxhdGZvcm0vZWZpL3F1aXJrcy5jCj4gPiBpbmRleCA3ODUwMTExMDA4YTgu LmQwMmYxMmE2MDQ1NyAxMDA2NDQKPiA+IC0tLSBhL2FyY2gveDg2L3BsYXRmb3JtL2VmaS9xdWly a3MuYwo+ID4gKysrIGIvYXJjaC94ODYvcGxhdGZvcm0vZWZpL3F1aXJrcy5jCj4gPiBAQCAtNDUz LDYgKzQ1Myw4IEBAIHZvaWQgX19pbml0IGVmaV9mcmVlX2Jvb3Rfc2VydmljZXModm9pZCkKPiA+ ICAgICAgICAgICAgICAgICBtZW1ibG9ja19mcmVlX2xhdGUoc3RhcnQsIHNpemUpOwo+ID4gICAg ICAgICB9Cj4gPgo+ID4gKyAgICAgICBtZW1ibG9ja19yZXNlcnZlKDAsIDE8PDIwKTsKPiA+ICsK PiA+ICAgICAgICAgaWYgKCFudW1fZW50cmllcykKPiA+ICAgICAgICAgICAgICAgICByZXR1cm47 Cj4gPgo+ID4gVGhhbmtzLgo+ID4gTGlhbmJvCj4gPgo+ID4KPiA+IFRoYW5rcwo+ID4+IEJhb3F1 YW4KPiA+Pgo+ID4KCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwprZXhlYyBtYWlsaW5nIGxpc3QKa2V4ZWNAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8v bGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2tleGVjCg== 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=-12.6 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham 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 E00E5C47080 for ; Mon, 24 May 2021 08:32:53 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id C300061241 for ; Mon, 24 May 2021 08:32:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232420AbhEXIeU (ORCPT ); Mon, 24 May 2021 04:34:20 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:29707 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232422AbhEXIeU (ORCPT ); Mon, 24 May 2021 04:34:20 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1621845172; 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=J2440jf5xR5Xu8OmRT8dNrdYNpeIAuaDPlOXqgxmmMQ=; b=U4qiwqlwxalft1XDefB9m7EWnDQteoe1ea+YR/LgiVOW4dkjukMqZonM5lpPhvQLleHrwa yWKJqa6E3xm55S3uQDVV3HZosthLNwYu3Jc6gEoPGKaVJHe+loZeWdMEqm5klCek8s8fnC F/jLLS2AS6IWH0EO0BIHIu8sd5XfaEE= 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-459-xPt4C06uPRqVjI7bRbTR4w-1; Mon, 24 May 2021 04:32:50 -0400 X-MC-Unique: xPt4C06uPRqVjI7bRbTR4w-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 0F76C803622; Mon, 24 May 2021 08:32:48 +0000 (UTC) Received: from localhost (ovpn-12-68.pek2.redhat.com [10.72.12.68]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 70D011B49D; Mon, 24 May 2021 08:32:42 +0000 (UTC) Date: Mon, 24 May 2021 16:32:39 +0800 From: Baoquan He To: lijiang , andy@infradead.org Cc: linux-kernel@vger.kernel.org, linux-efi@vger.kernel.org, platform-driver-x86@vger.kernel.org, x86@kernel.org, ardb@kernel.org, tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, dvhart@infradead.org, kexec@lists.infradead.org, hpa@zytor.com, Dave Young Subject: Re: [PATCH] x86/efi: Do not release sub-1MB memory regions when the crashkernel option is specified Message-ID: <20210524083239.GA2872@MiWiFi-R3L-srv> References: <20210412011347.GA4282@MiWiFi-R3L-srv> <8FAA2A0E-0A09-4308-B936-CDD2C0568BAE@amacapital.net> <20210412095231.GC4282@MiWiFi-R3L-srv> <20210413094515.GD4282@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 Hi Lianbo, On 05/24/21 at 11:00am, lijiang wrote: > Also add mail lists and more people in the cc list. > > Thanks. > Lianbo > > > On Fri, May 21, 2021 at 8:36 PM lijiang wrote: > > > Hi, Baoquan, Andy > > Sorry for the late reply. > > > > On Tue, Apr 13, 2021 at 5:45 PM Baoquan He wrote: > > > >> 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 > >> > > > > Yes. But Andy also suggested to reserve all available sub-1M memory > > **unconditionally** > > in the early code. > > > > enabled. We can do them again in efi_free_boot_services() just like the > >> real_mode reservation does. > >> > > > > Do you mean to call the memblock_reserve() in > > the efi_free_boot_services()? Or anything else? > > Would you mind sharing more details about this? Hmm, maybe no. There's no chance to call memblock_reserve() after memblock_free_late(). I suggested making change in efi_free_boot_services() because the similar problem has been encountered by Andy himself and fixed in efi_free_boot_services(). Please check below commit for reference. The patch described the phenemenon, while explained why in code comment. commit 5bc653b7318217c54244a14f248f1f07abe0a865 Author: Andy Lutomirski Date: Wed Aug 10 02:29:17 2016 -0700 x86/efi: Allocate a trampoline if needed in efi_free_boot_services() So we could handle it in the same place by extending the area to the whole low-1M unconditionally. This is 1st way of three I can think of. The other two are: 2) Move efi_reserve_boot_services() down to be above init_mem_mapping(). until init_mem_mapping(), we stop reserving memory from low-1M with memblock_reserve(). The change is like below: diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c index 72920af0b3c0..93b2106d2050 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c @@ -1067,7 +1067,6 @@ void __init setup_arch(char **cmdline_p) * The EFI specification says that boot service code won't be * called after ExitBootServices(). This is, in fact, a lie. */ - efi_reserve_boot_services(); /* preallocate 4k for mptable mpc */ e820__memblock_alloc_reserved_mpc_new(); @@ -1090,6 +1089,8 @@ void __init setup_arch(char **cmdline_p) */ trim_snb_memory(); + efi_reserve_boot_services(); + init_mem_mapping(); idt_setup_early_pf(); 3) Do it in efi_reserve_boot_services() as you are doing in this patch. I prefer the 1st and 2nd way. And by the way, the original code of commit 5bc653b731821("x86/efi: Allocate a trampoline if needed in efi_free_boot_services()") could be buggy. I remember you ever pasted the boot log of system where you reproduced issue and tested the tested patch, there are three separate pages from low-1M reserved by boot services. If any of them falls into real mode area, it will break the fix of commit 5bc653b731821. Thanks Baoquan > > > > diff --git a/arch/x86/platform/efi/quirks.c > > b/arch/x86/platform/efi/quirks.c > > index 7850111008a8..d02f12a60457 100644 > > --- a/arch/x86/platform/efi/quirks.c > > +++ b/arch/x86/platform/efi/quirks.c > > @@ -453,6 +453,8 @@ void __init efi_free_boot_services(void) > > memblock_free_late(start, size); > > } > > > > + memblock_reserve(0, 1<<20); > > + > > if (!num_entries) > > return; > > > > Thanks. > > Lianbo > > > > > > Thanks > >> Baoquan > >> > >