From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from [222.73.24.84] (helo=song.cn.fujitsu.com) by merlin.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1UDXp6-0008JU-8j for kexec@lists.infradead.org; Thu, 07 Mar 2013 10:13:18 +0000 Message-ID: <513867D2.7090501@cn.fujitsu.com> Date: Thu, 07 Mar 2013 18:11:30 +0800 From: Zhang Yanfei MIME-Version: 1.0 Subject: Re: [PATCH v2 15/20] kexec: fill note buffers by NT_VMCORE_PAD notes in page-size boundary References: <20130302083447.31252.93914.stgit@localhost6.localdomain6> <20130302083714.31252.17863.stgit@localhost6.localdomain6> In-Reply-To: <20130302083714.31252.17863.stgit@localhost6.localdomain6> 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: HATAYAMA Daisuke Cc: kexec@lists.infradead.org, heiko.carstens@de.ibm.com, linux-kernel@vger.kernel.org, lisa.mitchell@hp.com, kumagai-atsushi@mxc.nes.nec.co.jp, ebiederm@xmission.com, akpm@linux-foundation.org, cpw@sgi.com, vgoyal@redhat.com 5LqOIDIwMTPlubQwM+aciDAy5pelIDE2OjM3LCBIQVRBWUFNQSBEYWlzdWtlIOWGmemBkzoKPiBG aWxsIGJvdGggY3Jhc2hfbm90ZXMgYW5kIHZtY29yZWluZm9fbm90ZSBidWZmZXJzIGJ5IE5UX1ZN Q09SRV9QQUQKPiBub3RlIHR5cGUgdG8gbWFrZSB0aGVtIHNhdGlzZnkgbW1hcCgpJ3MgcGFnZS1z aXplIGJvdW5kYXJ5Cj4gcmVxdWlyZW1lbnQuCj4gCj4gU28gZmFyLCBlbmQgb2Ygbm90ZSBzZWdt ZW50cyBoYXMgYmVlbiBtYXJrZWQgYnkgemVyby1maWxsZWQgZWxmCj4gaGVhZGVyLiBJbnN0ZWFk LCB0aGlzIHBhdGNoIHdyaXRlcyBOVF9WTUNPUkVfUEFEIG5vdGUgaW4gdGhlIGVuZCBvZgo+IG5v dGUgc2VnbWVudHMgdW50aWwgdGhlIG9mZnNldCBvbiBwYWdlLXNpemUgYm91bmRhcnkuCgoKSW4g dGhlIGNvZGVzIGJlbG93LCBpdCBzZWVtcyB0aGF0IHlvdSBhc3NpZ24gbmFtZSAiVk1DT1JFSU5G TyIgZm9yCm5vdGUgdHlwZSBOVF9WTUNPUkVfUEFELCByaWdodD8gVGhpcyBpcyBraW5kIG9mIHdp cmVkLCBpIHRoaW5rLiBUaGlzCm5hbWUgaGFzIGJlZW4gdXNlZCBmb3IgTlRfVk1DT1JFX0RFQlVH SU5GTyBub3RlIGFscmVhZHkuIFdoeSBub3Qgc29tZXRoaW5nCmxpa2UgIlZNQ09SRVBBRCIgb3Ig IlBBRCI/Cgo+IAo+IFNpZ25lZC1vZmYtYnk6IEhBVEFZQU1BIERhaXN1a2UgPGQuaGF0YXlhbWFA anAuZnVqaXRzdS5jb20+Cj4gLS0tCj4gCj4gIGFyY2gvczM5MC9pbmNsdWRlL2FzbS9rZXhlYy5o IHwgICAgNyArKysrLS0KPiAgaW5jbHVkZS9saW51eC9rZXhlYy5oICAgICAgICAgfCAgIDEyICsr KysrKy0tLS0tCj4gIGtlcm5lbC9rZXhlYy5jICAgICAgICAgICAgICAgIHwgICA0NiArKysrKysr KysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQo+ICAzIGZpbGVzIGNoYW5nZWQsIDQw IGluc2VydGlvbnMoKyksIDI1IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9hcmNoL3Mz OTAvaW5jbHVkZS9hc20va2V4ZWMuaCBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9rZXhlYy5oCj4g aW5kZXggNjk0YmNkNi4uMmE1MzFjZSAxMDA2NDQKPiAtLS0gYS9hcmNoL3MzOTAvaW5jbHVkZS9h c20va2V4ZWMuaAo+ICsrKyBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9rZXhlYy5oCj4gQEAgLTQx LDggKzQxLDggQEAKPiAgLyoKPiAgICogU2l6ZSBmb3IgczM5MHggRUxGIG5vdGVzIHBlciBDUFUK PiAgICoKPiAtICogU2V2ZW4gbm90ZXMgcGx1cyB6ZXJvIG5vdGUgYXQgdGhlIGVuZDogcHJzdGF0 dXMsIGZwcmVnc2V0LCB0aW1lciwKPiAtICogdG9kX2NtcCwgdG9kX3JlZywgY29udHJvbCByZWdz LCBhbmQgcHJlZml4Cj4gKyAqIFNldmVuIG5vdGVzIHBsdXMgbm90ZSB3aXRoIE5UX1ZNQ09SRV9Q QUQgdHlwZSBhdCB0aGUgZW5kOiBwcnN0YXR1cywKPiArICogZnByZWdzZXQsIHRpbWVyLCB0b2Rf Y21wLCB0b2RfcmVnLCBjb250cm9sIHJlZ3MsIGFuZCBwcmVmaXgKPiAgICovCj4gICNkZWZpbmUg S0VYRUNfTk9URV9CWVRFUyBcCj4gIAkoQUxJR04oc2l6ZW9mKHN0cnVjdCBlbGZfbm90ZSksIDQp ICogOCArIFwKPiBAQCAtNTMsNyArNTMsOCBAQAo+ICAJIEFMSUdOKHNpemVvZih1NjQpLCA0KSAr IFwKPiAgCSBBTElHTihzaXplb2YodTMyKSwgNCkgKyBcCj4gIAkgQUxJR04oc2l6ZW9mKHU2NCkg KiAxNiwgNCkgKyBcCj4gLQkgQUxJR04oc2l6ZW9mKHUzMiksIDQpIFwKPiArCSBBTElHTihzaXpl b2YodTMyKSwgNCkgKyBcCj4gKwkgVk1DT1JFSU5GT19OT1RFX05BTUVfQllURVMgXAo+ICAJKQo+ ICAKPiAgLyogUHJvdmlkZSBhIGR1bW15IGRlZmluaXRpb24gdG8gYXZvaWQgYnVpbGQgZmFpbHVy ZXMuICovCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgva2V4ZWMuaCBiL2luY2x1ZGUvbGlu dXgva2V4ZWMuaAo+IGluZGV4IDUxMTM1NzAuLjY1OTI5MzUgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVk ZS9saW51eC9rZXhlYy5oCj4gKysrIGIvaW5jbHVkZS9saW51eC9rZXhlYy5oCj4gQEAgLTQ3LDE0 ICs0NywxNiBAQAo+ICAjZGVmaW5lIEtFWEVDX0NPUkVfTk9URV9OQU1FX0JZVEVTIEFMSUdOKHNp emVvZihLRVhFQ19DT1JFX05PVEVfTkFNRSksIDQpCj4gICNkZWZpbmUgS0VYRUNfQ09SRV9OT1RF X0RFU0NfQllURVMgQUxJR04oc2l6ZW9mKHN0cnVjdCBlbGZfcHJzdGF0dXMpLCA0KQo+ICAvKgo+ IC0gKiBUaGUgcGVyLWNwdSBub3RlcyBhcmVhIGlzIGEgbGlzdCBvZiBub3RlcyB0ZXJtaW5hdGVk IGJ5IGEgIk5VTEwiCj4gLSAqIG5vdGUgaGVhZGVyLiAgRm9yIGtkdW1wLCB0aGUgY29kZSBpbiB2 bWNvcmUuYyBydW5zIGluIHRoZSBjb250ZXh0Cj4gLSAqIG9mIHRoZSBzZWNvbmQga2VybmVsIHRv IGNvbWJpbmUgdGhlbSBpbnRvIG9uZSBub3RlLgo+ICsgKiBUaGUgcGVyLWNwdSBub3RlcyBhcmVh IGlzIGEgbGlzdCBvZiBub3RlcyB0ZXJtaW5hdGVkIGJ5IGEgbm90ZQo+ICsgKiBoZWFkZXIgd2l0 aCBOVF9WTUNPUkVfUEFEIHR5cGUuIEZvciBrZHVtcCwgdGhlIGNvZGUgaW4gdm1jb3JlLmMKPiAr ICogcnVucyBpbiB0aGUgY29udGV4dCBvZiB0aGUgc2Vjb25kIGtlcm5lbCB0byBjb21iaW5lIHRo ZW0gaW50byBvbmUKPiArICogbm90ZS4KPiAgICovCj4gICNpZm5kZWYgS0VYRUNfTk9URV9CWVRF Uwo+ICAjZGVmaW5lIEtFWEVDX05PVEVfQllURVMgKCAoS0VYRUNfTk9URV9IRUFEX0JZVEVTICog MikgKwkJXAo+ICAJCQkgICAgS0VYRUNfQ09SRV9OT1RFX05BTUVfQllURVMgKwkJXAo+IC0JCQkg ICAgS0VYRUNfQ09SRV9OT1RFX0RFU0NfQllURVMgKQo+ICsJCQkgICAgS0VYRUNfQ09SRV9OT1RF X0RFU0NfQllURVMgKwkJXAo+ICsJCQkgICAgVk1DT1JFSU5GT19OT1RFX05BTUVfQllURVMpCj4g ICNlbmRpZgo+ICAKPiAgLyoKPiBAQCAtMTg3LDcgKzE4OSw3IEBAIGV4dGVybiBzdHJ1Y3Qga2lt YWdlICprZXhlY19jcmFzaF9pbWFnZTsKPiAgI2RlZmluZSBWTUNPUkVJTkZPX05PVEVfTkFNRV9C WVRFUyBBTElHTihzaXplb2YoVk1DT1JFSU5GT19OT1RFX05BTUUpLCA0KQo+ICAjZGVmaW5lIFZN Q09SRUlORk9fTk9URV9TSVpFICAgICAgIEFMSUdOKEtFWEVDX05PVEVfSEVBRF9CWVRFUyoyCVwK PiAgCQkJCQkgK1ZNQ09SRUlORk9fQllURVMJCVwKPiAtCQkJCQkgK1ZNQ09SRUlORk9fTk9URV9O QU1FX0JZVEVTLAlcCj4gKwkJCQkJICtWTUNPUkVJTkZPX05PVEVfTkFNRV9CWVRFUyoyLAlcCj4g IAkJCQkJIFBBR0VfU0laRSkKPiAgCj4gIC8qIExvY2F0aW9uIG9mIGEgcmVzZXJ2ZWQgcmVnaW9u IHRvIGhvbGQgdGhlIGNyYXNoIGtlcm5lbC4KPiBkaWZmIC0tZ2l0IGEva2VybmVsL2tleGVjLmMg Yi9rZXJuZWwva2V4ZWMuYwo+IGluZGV4IDY1OTdiODIuLmZiZGMwZjAgMTAwNjQ0Cj4gLS0tIGEv a2VybmVsL2tleGVjLmMKPiArKysgYi9rZXJuZWwva2V4ZWMuYwo+IEBAIC00MCw2ICs0MCw3IEBA Cj4gIAo+ICAvKiBQZXIgY3B1IG1lbW9yeSBmb3Igc3RvcmluZyBjcHUgc3RhdGVzIGluIGNhc2Ug b2Ygc3lzdGVtIGNyYXNoLiAqLwo+ICBub3RlX2J1Zl90IF9fcGVyY3B1ICpjcmFzaF9ub3RlczsK PiArc3RhdGljIHNpemVfdCBjcmFzaF9ub3Rlc19zaXplID0gQUxJR04oc2l6ZW9mKG5vdGVfYnVm X3QpLCBQQUdFX1NJWkUpOwo+ICAKPiAgLyogdm1jb3JlaW5mbyBzdHVmZiAqLwo+ICBzdGF0aWMg dW5zaWduZWQgY2hhciB2bWNvcmVpbmZvX2RhdGFbVk1DT1JFSU5GT19CWVRFU107Cj4gQEAgLTEx NzcsNiArMTE3OCw3IEBAIHVubG9jazoKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiAgCj4gKy8qIElm IEBkYXRhIGlzIE5VTEwsIGZpbGwgQGJ1ZiB3aXRoIDAgaW4gQGRhdGFfbGVuIGJ5dGVzLiAqLwo+ ICBzdGF0aWMgdTMyICphcHBlbmRfZWxmX25vdGUodTMyICpidWYsIGNoYXIgKm5hbWUsIHVuc2ln bmVkIHR5cGUsIHZvaWQgKmRhdGEsCj4gIAkJCSAgICBzaXplX3QgZGF0YV9sZW4pCj4gIHsKPiBA QCAtMTE4OSwyNiArMTE5MSwzNiBAQCBzdGF0aWMgdTMyICphcHBlbmRfZWxmX25vdGUodTMyICpi dWYsIGNoYXIgKm5hbWUsIHVuc2lnbmVkIHR5cGUsIHZvaWQgKmRhdGEsCj4gIAlidWYgKz0gKHNp emVvZihub3RlKSArIDMpLzQ7Cj4gIAltZW1jcHkoYnVmLCBuYW1lLCBub3RlLm5fbmFtZXN6KTsK PiAgCWJ1ZiArPSAobm90ZS5uX25hbWVzeiArIDMpLzQ7Cj4gLQltZW1jcHkoYnVmLCBkYXRhLCBu b3RlLm5fZGVzY3N6KTsKPiArCWlmIChkYXRhKQo+ICsJCW1lbWNweShidWYsIGRhdGEsIG5vdGUu bl9kZXNjc3opOwo+ICsJZWxzZQo+ICsJCW1lbXNldChidWYsIDAsIG5vdGUubl9kZXNjc3opOwo+ ICAJYnVmICs9IChub3RlLm5fZGVzY3N6ICsgMykvNDsKPiAgCj4gIAlyZXR1cm4gYnVmOwo+ICB9 Cj4gIAo+IC1zdGF0aWMgdm9pZCBmaW5hbF9ub3RlKHUzMiAqYnVmKQo+ICtzdGF0aWMgdm9pZCBm aW5hbF9ub3RlKHUzMiAqYnVmLCBzaXplX3QgYnVmX2xlbiwgc2l6ZV90IGRhdGFfbGVuKQo+ICB7 Cj4gLQlzdHJ1Y3QgZWxmX25vdGUgbm90ZTsKPiArCXNpemVfdCB1c2VkX2J5dGVzLCBwYWRfaGRy X3NpemU7Cj4gIAo+IC0Jbm90ZS5uX25hbWVzeiA9IDA7Cj4gLQlub3RlLm5fZGVzY3N6ID0gMDsK PiAtCW5vdGUubl90eXBlICAgPSAwOwo+IC0JbWVtY3B5KGJ1ZiwgJm5vdGUsIHNpemVvZihub3Rl KSk7Cj4gKwlwYWRfaGRyX3NpemUgPSBLRVhFQ19OT1RFX0hFQURfQllURVMgKyBWTUNPUkVJTkZP X05PVEVfTkFNRV9CWVRFUzsKPiArCj4gKwkvKgo+ICsJICoga2VlcCBzcGFjZSBmb3IgRUxGIG5v dGUgaGVhZGVyIGFuZCAiVk1DT1JFSU5GTyIgbmFtZSB0bwo+ICsJICogdGVybWluYXRlIEVMRiBz ZWdtZW50IGJ5IE5UX1ZNQ09SRV9QQUQgbm90ZS4KPiArCSAqLwo+ICsJQlVHX09OKGRhdGFfbGVu ICsgcGFkX2hkcl9zaXplID4gYnVmX2xlbik7Cj4gKwo+ICsJdXNlZF9ieXRlcyA9IGRhdGFfbGVu ICsgcGFkX2hkcl9zaXplOwo+ICsJYXBwZW5kX2VsZl9ub3RlKGJ1ZiwgVk1DT1JFSU5GT19OT1RF X05BTUUsIE5UX1ZNQ09SRV9QQUQsIE5VTEwsCj4gKwkJCXJvdW5kdXAodXNlZF9ieXRlcywgUEFH RV9TSVpFKSAtIHVzZWRfYnl0ZXMpOwo+ICB9Cj4gIAo+ICB2b2lkIGNyYXNoX3NhdmVfY3B1KHN0 cnVjdCBwdF9yZWdzICpyZWdzLCBpbnQgY3B1KQo+ICB7Cj4gIAlzdHJ1Y3QgZWxmX3Byc3RhdHVz IHByc3RhdHVzOwo+IC0JdTMyICpidWY7Cj4gKwl1MzIgKmJ1ZiwgKmJ1Zl9lbmQ7Cj4gIAo+ICAJ aWYgKChjcHUgPCAwKSB8fCAoY3B1ID49IG5yX2NwdV9pZHMpKQo+ICAJCXJldHVybjsKPiBAQCAt MTIyNiwxNiArMTIzOCwxNSBAQCB2b2lkIGNyYXNoX3NhdmVfY3B1KHN0cnVjdCBwdF9yZWdzICpy ZWdzLCBpbnQgY3B1KQo+ICAJbWVtc2V0KCZwcnN0YXR1cywgMCwgc2l6ZW9mKHByc3RhdHVzKSk7 Cj4gIAlwcnN0YXR1cy5wcl9waWQgPSBjdXJyZW50LT5waWQ7Cj4gIAllbGZfY29yZV9jb3B5X2tl cm5lbF9yZWdzKCZwcnN0YXR1cy5wcl9yZWcsIHJlZ3MpOwo+IC0JYnVmID0gYXBwZW5kX2VsZl9u b3RlKGJ1ZiwgS0VYRUNfQ09SRV9OT1RFX05BTUUsIE5UX1BSU1RBVFVTLAo+IC0JCSAgICAgIAkg ICAgICAmcHJzdGF0dXMsIHNpemVvZihwcnN0YXR1cykpOwo+IC0JZmluYWxfbm90ZShidWYpOwo+ ICsJYnVmX2VuZCA9IGFwcGVuZF9lbGZfbm90ZShidWYsIEtFWEVDX0NPUkVfTk9URV9OQU1FLCBO VF9QUlNUQVRVUywKPiArCQkJCSAgJnByc3RhdHVzLCBzaXplb2YocHJzdGF0dXMpKTsKPiArCWZp bmFsX25vdGUoYnVmX2VuZCwgY3Jhc2hfbm90ZXNfc2l6ZSwgKGJ1Zl9lbmQgLSBidWYpICogc2l6 ZW9mKHUzMikpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50IF9faW5pdCBjcmFzaF9ub3Rlc19tZW1v cnlfaW5pdCh2b2lkKQo+ICB7Cj4gIAkvKiBBbGxvY2F0ZSBtZW1vcnkgZm9yIHNhdmluZyBjcHUg cmVnaXN0ZXJzLiAqLwo+IC0JY3Jhc2hfbm90ZXMgPSBfX2FsbG9jX3BlcmNwdShyb3VuZHVwKHNp emVvZihub3RlX2J1Zl90KSwgUEFHRV9TSVpFKSwKPiAtCQkJCSAgICAgUEFHRV9TSVpFKTsKPiAr CWNyYXNoX25vdGVzID0gX19hbGxvY19wZXJjcHUoY3Jhc2hfbm90ZXNfc2l6ZSwgUEFHRV9TSVpF KTsKPiAgCWlmICghY3Jhc2hfbm90ZXMpIHsKPiAgCQlwcmludGsoIktleGVjOiBNZW1vcnkgYWxs b2NhdGlvbiBmb3Igc2F2aW5nIGNwdSByZWdpc3RlciIKPiAgCQkiIHN0YXRlcyBmYWlsZWRcbiIp Owo+IEBAIC0xNDM0LDEzICsxNDQ1LDE0IEBAIGludCBfX2luaXQgcGFyc2VfY3Jhc2hrZXJuZWxf bG93KGNoYXIgKmNtZGxpbmUsCj4gIAo+ICBzdGF0aWMgdm9pZCB1cGRhdGVfdm1jb3JlaW5mb19u b3RlKHZvaWQpCj4gIHsKPiAtCXUzMiAqYnVmID0gdm1jb3JlaW5mb19ub3RlOwo+ICsJdTMyICpi dWYgPSB2bWNvcmVpbmZvX25vdGUsICpidWZfZW5kOwo+ICAKPiAgCWlmICghdm1jb3JlaW5mb19z aXplKQo+ICAJCXJldHVybjsKPiAtCWJ1ZiA9IGFwcGVuZF9lbGZfbm90ZShidWYsIFZNQ09SRUlO Rk9fTk9URV9OQU1FLCBOVF9WTUNPUkVfREVCVUdJTkZPLAo+IC0JCQkgICAgICB2bWNvcmVpbmZv X2RhdGEsIHZtY29yZWluZm9fc2l6ZSk7Cj4gLQlmaW5hbF9ub3RlKGJ1Zik7Cj4gKwlidWZfZW5k ID0gYXBwZW5kX2VsZl9ub3RlKGJ1ZiwgVk1DT1JFSU5GT19OT1RFX05BTUUsIE5UX1ZNQ09SRV9E RUJVR0lORk8sCj4gKwkJCQkgIHZtY29yZWluZm9fZGF0YSwgdm1jb3JlaW5mb19zaXplKTsKPiAr CWZpbmFsX25vdGUoYnVmX2VuZCwgc2l6ZW9mKHZtY29yZWluZm9fbm90ZSksCj4gKwkJICAgKGJ1 Zl9lbmQgLSBidWYpICogc2l6ZW9mKHUzMikpOwo+ICB9Cj4gIAo+ICB2b2lkIGNyYXNoX3NhdmVf dm1jb3JlaW5mbyh2b2lkKQo+IAo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCj4ga2V4ZWMgbWFpbGluZyBsaXN0Cj4ga2V4ZWNAbGlzdHMuaW5mcmFk ZWFkLm9yZwo+IGh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8va2V4 ZWMKPiAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpr ZXhlYyBtYWlsaW5nIGxpc3QKa2V4ZWNAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMu aW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2tleGVjCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756039Ab3CGKNF (ORCPT ); Thu, 7 Mar 2013 05:13:05 -0500 Received: from cn.fujitsu.com ([222.73.24.84]:8870 "EHLO song.cn.fujitsu.com" rhost-flags-OK-FAIL-OK-OK) by vger.kernel.org with ESMTP id S932532Ab3CGKND convert rfc822-to-8bit (ORCPT ); Thu, 7 Mar 2013 05:13:03 -0500 X-IronPort-AV: E=Sophos;i="4.84,801,1355068800"; d="scan'208";a="6831229" Message-ID: <513867D2.7090501@cn.fujitsu.com> Date: Thu, 07 Mar 2013 18:11:30 +0800 From: Zhang Yanfei User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:10.0.8) Gecko/20121012 Thunderbird/10.0.8 MIME-Version: 1.0 To: HATAYAMA Daisuke CC: vgoyal@redhat.com, ebiederm@xmission.com, cpw@sgi.com, kumagai-atsushi@mxc.nes.nec.co.jp, lisa.mitchell@hp.com, heiko.carstens@de.ibm.com, akpm@linux-foundation.org, kexec@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v2 15/20] kexec: fill note buffers by NT_VMCORE_PAD notes in page-size boundary References: <20130302083447.31252.93914.stgit@localhost6.localdomain6> <20130302083714.31252.17863.stgit@localhost6.localdomain6> In-Reply-To: <20130302083714.31252.17863.stgit@localhost6.localdomain6> X-MIMETrack: Itemize by SMTP Server on mailserver/fnst(Release 8.5.3|September 15, 2011) at 2013/03/07 18:11:51, Serialize by Router on mailserver/fnst(Release 8.5.3|September 15, 2011) at 2013/03/07 18:11:53 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8BIT Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 于 2013年03月02日 16:37, HATAYAMA Daisuke 写道: > Fill both crash_notes and vmcoreinfo_note buffers by NT_VMCORE_PAD > note type to make them satisfy mmap()'s page-size boundary > requirement. > > So far, end of note segments has been marked by zero-filled elf > header. Instead, this patch writes NT_VMCORE_PAD note in the end of > note segments until the offset on page-size boundary. In the codes below, it seems that you assign name "VMCOREINFO" for note type NT_VMCORE_PAD, right? This is kind of wired, i think. This name has been used for NT_VMCORE_DEBUGINFO note already. Why not something like "VMCOREPAD" or "PAD"? > > Signed-off-by: HATAYAMA Daisuke > --- > > arch/s390/include/asm/kexec.h | 7 ++++-- > include/linux/kexec.h | 12 ++++++----- > kernel/kexec.c | 46 ++++++++++++++++++++++++++--------------- > 3 files changed, 40 insertions(+), 25 deletions(-) > > diff --git a/arch/s390/include/asm/kexec.h b/arch/s390/include/asm/kexec.h > index 694bcd6..2a531ce 100644 > --- a/arch/s390/include/asm/kexec.h > +++ b/arch/s390/include/asm/kexec.h > @@ -41,8 +41,8 @@ > /* > * Size for s390x ELF notes per CPU > * > - * Seven notes plus zero note at the end: prstatus, fpregset, timer, > - * tod_cmp, tod_reg, control regs, and prefix > + * Seven notes plus note with NT_VMCORE_PAD type at the end: prstatus, > + * fpregset, timer, tod_cmp, tod_reg, control regs, and prefix > */ > #define KEXEC_NOTE_BYTES \ > (ALIGN(sizeof(struct elf_note), 4) * 8 + \ > @@ -53,7 +53,8 @@ > ALIGN(sizeof(u64), 4) + \ > ALIGN(sizeof(u32), 4) + \ > ALIGN(sizeof(u64) * 16, 4) + \ > - ALIGN(sizeof(u32), 4) \ > + ALIGN(sizeof(u32), 4) + \ > + VMCOREINFO_NOTE_NAME_BYTES \ > ) > > /* Provide a dummy definition to avoid build failures. */ > diff --git a/include/linux/kexec.h b/include/linux/kexec.h > index 5113570..6592935 100644 > --- a/include/linux/kexec.h > +++ b/include/linux/kexec.h > @@ -47,14 +47,16 @@ > #define KEXEC_CORE_NOTE_NAME_BYTES ALIGN(sizeof(KEXEC_CORE_NOTE_NAME), 4) > #define KEXEC_CORE_NOTE_DESC_BYTES ALIGN(sizeof(struct elf_prstatus), 4) > /* > - * The per-cpu notes area is a list of notes terminated by a "NULL" > - * note header. For kdump, the code in vmcore.c runs in the context > - * of the second kernel to combine them into one note. > + * The per-cpu notes area is a list of notes terminated by a note > + * header with NT_VMCORE_PAD type. For kdump, the code in vmcore.c > + * runs in the context of the second kernel to combine them into one > + * note. > */ > #ifndef KEXEC_NOTE_BYTES > #define KEXEC_NOTE_BYTES ( (KEXEC_NOTE_HEAD_BYTES * 2) + \ > KEXEC_CORE_NOTE_NAME_BYTES + \ > - KEXEC_CORE_NOTE_DESC_BYTES ) > + KEXEC_CORE_NOTE_DESC_BYTES + \ > + VMCOREINFO_NOTE_NAME_BYTES) > #endif > > /* > @@ -187,7 +189,7 @@ extern struct kimage *kexec_crash_image; > #define VMCOREINFO_NOTE_NAME_BYTES ALIGN(sizeof(VMCOREINFO_NOTE_NAME), 4) > #define VMCOREINFO_NOTE_SIZE ALIGN(KEXEC_NOTE_HEAD_BYTES*2 \ > +VMCOREINFO_BYTES \ > - +VMCOREINFO_NOTE_NAME_BYTES, \ > + +VMCOREINFO_NOTE_NAME_BYTES*2, \ > PAGE_SIZE) > > /* Location of a reserved region to hold the crash kernel. > diff --git a/kernel/kexec.c b/kernel/kexec.c > index 6597b82..fbdc0f0 100644 > --- a/kernel/kexec.c > +++ b/kernel/kexec.c > @@ -40,6 +40,7 @@ > > /* Per cpu memory for storing cpu states in case of system crash. */ > note_buf_t __percpu *crash_notes; > +static size_t crash_notes_size = ALIGN(sizeof(note_buf_t), PAGE_SIZE); > > /* vmcoreinfo stuff */ > static unsigned char vmcoreinfo_data[VMCOREINFO_BYTES]; > @@ -1177,6 +1178,7 @@ unlock: > return ret; > } > > +/* If @data is NULL, fill @buf with 0 in @data_len bytes. */ > static u32 *append_elf_note(u32 *buf, char *name, unsigned type, void *data, > size_t data_len) > { > @@ -1189,26 +1191,36 @@ static u32 *append_elf_note(u32 *buf, char *name, unsigned type, void *data, > buf += (sizeof(note) + 3)/4; > memcpy(buf, name, note.n_namesz); > buf += (note.n_namesz + 3)/4; > - memcpy(buf, data, note.n_descsz); > + if (data) > + memcpy(buf, data, note.n_descsz); > + else > + memset(buf, 0, note.n_descsz); > buf += (note.n_descsz + 3)/4; > > return buf; > } > > -static void final_note(u32 *buf) > +static void final_note(u32 *buf, size_t buf_len, size_t data_len) > { > - struct elf_note note; > + size_t used_bytes, pad_hdr_size; > > - note.n_namesz = 0; > - note.n_descsz = 0; > - note.n_type = 0; > - memcpy(buf, ¬e, sizeof(note)); > + pad_hdr_size = KEXEC_NOTE_HEAD_BYTES + VMCOREINFO_NOTE_NAME_BYTES; > + > + /* > + * keep space for ELF note header and "VMCOREINFO" name to > + * terminate ELF segment by NT_VMCORE_PAD note. > + */ > + BUG_ON(data_len + pad_hdr_size > buf_len); > + > + used_bytes = data_len + pad_hdr_size; > + append_elf_note(buf, VMCOREINFO_NOTE_NAME, NT_VMCORE_PAD, NULL, > + roundup(used_bytes, PAGE_SIZE) - used_bytes); > } > > void crash_save_cpu(struct pt_regs *regs, int cpu) > { > struct elf_prstatus prstatus; > - u32 *buf; > + u32 *buf, *buf_end; > > if ((cpu < 0) || (cpu >= nr_cpu_ids)) > return; > @@ -1226,16 +1238,15 @@ void crash_save_cpu(struct pt_regs *regs, int cpu) > memset(&prstatus, 0, sizeof(prstatus)); > prstatus.pr_pid = current->pid; > elf_core_copy_kernel_regs(&prstatus.pr_reg, regs); > - buf = append_elf_note(buf, KEXEC_CORE_NOTE_NAME, NT_PRSTATUS, > - &prstatus, sizeof(prstatus)); > - final_note(buf); > + buf_end = append_elf_note(buf, KEXEC_CORE_NOTE_NAME, NT_PRSTATUS, > + &prstatus, sizeof(prstatus)); > + final_note(buf_end, crash_notes_size, (buf_end - buf) * sizeof(u32)); > } > > static int __init crash_notes_memory_init(void) > { > /* Allocate memory for saving cpu registers. */ > - crash_notes = __alloc_percpu(roundup(sizeof(note_buf_t), PAGE_SIZE), > - PAGE_SIZE); > + crash_notes = __alloc_percpu(crash_notes_size, PAGE_SIZE); > if (!crash_notes) { > printk("Kexec: Memory allocation for saving cpu register" > " states failed\n"); > @@ -1434,13 +1445,14 @@ int __init parse_crashkernel_low(char *cmdline, > > static void update_vmcoreinfo_note(void) > { > - u32 *buf = vmcoreinfo_note; > + u32 *buf = vmcoreinfo_note, *buf_end; > > if (!vmcoreinfo_size) > return; > - buf = append_elf_note(buf, VMCOREINFO_NOTE_NAME, NT_VMCORE_DEBUGINFO, > - vmcoreinfo_data, vmcoreinfo_size); > - final_note(buf); > + buf_end = append_elf_note(buf, VMCOREINFO_NOTE_NAME, NT_VMCORE_DEBUGINFO, > + vmcoreinfo_data, vmcoreinfo_size); > + final_note(buf_end, sizeof(vmcoreinfo_note), > + (buf_end - buf) * sizeof(u32)); > } > > void crash_save_vmcoreinfo(void) > > > _______________________________________________ > kexec mailing list > kexec@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/kexec >