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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id A645FC433EF for ; Fri, 18 Feb 2022 06:31:34 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2F5BE6B0078; Fri, 18 Feb 2022 01:31:34 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 2B0696B007B; Fri, 18 Feb 2022 01:31:34 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0F7B16B007D; Fri, 18 Feb 2022 01:31:34 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0086.hostedemail.com [216.40.44.86]) by kanga.kvack.org (Postfix) with ESMTP id F05D36B0078 for ; Fri, 18 Feb 2022 01:31:33 -0500 (EST) Received: from smtpin10.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id A6B39181AC9C6 for ; Fri, 18 Feb 2022 06:31:33 +0000 (UTC) X-FDA: 79154929266.10.0FA73DC Received: from spam.unicloud.com (gw.haihefund.cn [220.194.70.58]) by imf12.hostedemail.com (Postfix) with ESMTP id E239D40006 for ; Fri, 18 Feb 2022 06:31:30 +0000 (UTC) Received: from eage.unicloud.com ([220.194.70.35]) by spam.unicloud.com with ESMTP id 21I6Up2B052790; Fri, 18 Feb 2022 14:30:51 +0800 (GMT-8) (envelope-from luofei@unicloud.com) Received: from zgys-ex-mb09.Unicloud.com (10.10.0.24) by zgys-ex-mb11.Unicloud.com (10.10.0.28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2375.17; Fri, 18 Feb 2022 14:30:50 +0800 Received: from zgys-ex-mb09.Unicloud.com ([fe80::eda0:6815:ca71:5aa]) by zgys-ex-mb09.Unicloud.com ([fe80::eda0:6815:ca71:5aa%16]) with mapi id 15.01.2375.017; Fri, 18 Feb 2022 14:30:50 +0800 From: =?gb2312?B?wt63yQ==?= To: =?gb2312?B?SE9SSUdVQ0hJIE5BT1lBKNylv9qhodax0rIp?= CC: "tony.luck@intel.com" , "bp@alien8.de" , "tglx@linutronix.de" , "mingo@redhat.com" , "dave.hansen@linux.intel.com" , "x86@kernel.org" , "akpm@linux-foundation.org" , "hpa@zytor.com" , "linux-edac@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-mm@kvack.org" Subject: =?gb2312?B?tPC4tDogW1BBVENIIHYyXSBody9wb2lzb246IEFkZCBpbi11c2UgaHVnZXBh?= =?gb2312?B?Z2UgZmlsdGVyIGp1ZGdlbWVudCBhbmQgYXZvaWQgZmlsdGVyIHBhZ2UgaW1w?= =?gb2312?Q?act_on_mce_handler?= Thread-Topic: [PATCH v2] hw/poison: Add in-use hugepage filter judgement and avoid filter page impact on mce handler Thread-Index: AQHYI6qR/XM6ywPKaEul1btJCX+6qKyYHBcAgAC4Y3U= Date: Fri, 18 Feb 2022 06:30:50 +0000 Message-ID: <1bdf929216be4816bad82c8902cd174c@unicloud.com> References: <20220217030038.1552124-1-luofei@unicloud.com>,<20220218030814.GA2955567@hori.linux.bs1.fc.nec.co.jp> In-Reply-To: <20220218030814.GA2955567@hori.linux.bs1.fc.nec.co.jp> Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.10.1.7] Content-Type: multipart/alternative; boundary="_000_1bdf929216be4816bad82c8902cd174cunicloudcom_" MIME-Version: 1.0 X-DNSRBL: X-MAIL:spam.unicloud.com 21I6Up2B052790 X-Rspamd-Queue-Id: E239D40006 X-Stat-Signature: imu4wo31et8xks5uq4p38f64gbsjshrh X-Rspam-User: Authentication-Results: imf12.hostedemail.com; dkim=none; spf=pass (imf12.hostedemail.com: domain of luofei@unicloud.com designates 220.194.70.58 as permitted sender) smtp.mailfrom=luofei@unicloud.com; dmarc=none X-Rspamd-Server: rspam05 X-HE-Tag: 1645165890-989969 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: --_000_1bdf929216be4816bad82c8902cd174cunicloudcom_ Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 Pj4gQWZ0ZXIgc3VjY2Vzc2Z1bGx5IG9idGFpbmluZyB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRo ZSBodWdlDQo+PiBwYWdlLCBpdCBpcyBzdGlsbCBuZWNlc3NhcnkgdG8gY2FsbCBod3BvaXNvbl9m aWx0ZXIoKSB0byBtYWtlIGENCj4+IGZpbHRlciBqdWRnZW1lbnQsIG90aGVyd2lzZSB0aGUgZmls dGVyIGh1Z2VwYWdlIHdpbGwgYmUgdW5tYXBlZA0KPj4gYW5kIHRoZSByZWxhdGVkIHByb2Nlc3Mg bWF5IGJlIGtpbGxlZC4NCj4+DQo+PiBBbHNvIHdoZW4gdGhlIGh1Z2UgcGFnZSBtZWV0cyB0aGUg ZmlsdGVyIGNvbmRpdGlvbnMsIGl0IHNob3VsZA0KPj4gbm90IGJlIHJlZ2FyZGVkIGFzIHN1Y2Nl c3NmdWwgbWVtb3J5X2ZhaWx1cmUoKSBwcm9jZXNzaW5nIGZvcg0KPj4gbWNlIGhhbmRsZXIsIGJ1 dCBzaG91bGQgcmV0dXJuIGEgdmFsdWUgdG8gaW5mb3JtIHRoZSBjYWxsZXIsDQo+PiBvdGhlcndp c2UgdGhlIGNhbGxlciByZWdhcmRzIHRoZSBlcnJvciBwYWdlIGhhcyBiZWVuIGlkZW50aWZpZWQN Cj4+IGFuZCBpc29sYXRlZCwgd2hpY2ggbWF5IGxlYWQgdG8gY2FsbGluZyBzZXRfbWNlX25vc3Bl YygpIHRvIGNoYW5nZQ0KPj4gcGFnZSBhdHRyaWJ1dGUsIGV0Yy4NCj4+DQo+PiBTaWduZWQtb2Zm LWJ5OiBsdW9mZWkgPGx1b2ZlaUB1bmljbG91ZC5jb20+DQo+DQo+VGhpcyBwYXRjaCBzZWVtcyB0 byBkbyB0d28gc2VwYXJhdGUgdGhpbmdzIChpbnRyb2R1Y2luZyBNRl9NQ0VfSEFORExFLA0KPmFu ZCBhZGRpbmcgaHdwb2lzb25fZmlsdGVyKCkgaW4gbWVtb3J5X2ZhaWx1cmVfaHVnZXRsYigpKSwg c28gY291bGQgeW91DQo+c2VwYXJhdGUgdGhlIHBhdGNoIGludG8gdHdvPw0KDQpZZXMsIHRoZXNl IHR3byB0aGluZ3MgYXJlIG5vdCB2ZXJ5IHJlbGF0ZWQsIEkgd2lsbCBzdWJtaXQgdHdvIHBhdGNo ZXMgdG8NCg0KZGVzY3JpYmUgdGhlbSBzZXBhcmF0bGV5LiA6KQ0KDQo+PiAtDQo+PiAtICAgICAv Kg0KPj4gLSAgICAgICogLUVIV1BPSVNPTiBmcm9tIG1lbW9yeV9mYWlsdXJlKCkgbWVhbnMgdGhh dCBpdCBhbHJlYWR5IHNlbnQgU0lHQlVTDQo+PiAtICAgICAgKiB0byB0aGUgY3VycmVudCBwcm9j ZXNzIHdpdGggdGhlIHByb3BlciBlcnJvciBpbmZvLCBzbyBubyBuZWVkIHRvDQo+PiAtICAgICAg KiBzZW5kIFNJR0JVUyBoZXJlIGFnYWluLg0KPj4gLSAgICAgICovDQo+PiAtICAgICBpZiAocmV0 ID09IC1FSFdQT0lTT04pDQo+PiArICAgICB9IGVsc2UgaWYgKHJldCA9PSAtRUhXUE9JU09OIHx8 IHJldCA9PSAxKQ0KPj4gKyAgICAgICAgICAgICAvKg0KPj4gKyAgICAgICAgICAgICAgKiAtRUhX UE9JU09OIGZyb20gbWVtb3J5X2ZhaWx1cmUoKSBtZWFucyB0aGF0IGl0IGFscmVhZHkgc2VudCBT SUdCVVMNCj4+ICsgICAgICAgICAgICAgICogdG8gdGhlIGN1cnJlbnQgcHJvY2VzcyB3aXRoIHRo ZSBwcm9wZXIgZXJyb3IgaW5mbywgc28gbm8gbmVlZCB0bw0KPj4gKyAgICAgICAgICAgICAgKiBz ZW5kIFNJR0JVUyBoZXJlIGFnYWluLg0KPj4gKyAgICAgICAgICAgICAgKg0KPj4gKyAgICAgICAg ICAgICAgKiAxIG1lYW5zIGl0J3MgYSBmaWx0ZXIgcGFnZSwgbm8gbmVlZCB0byBkZWFsIHdpdGgu DQo+PiArICAgICAgICAgICAgICAqLw0KPg0KPlRoZSBuZXcgcmV0dXJuIGNvZGUgMSBzZWVtcyB0 byBiZSBoYW5kbGVkIGluIHRoZSBzYW1lIG1hbm5lciBhcyAtRUhXUE9JU09OLA0KPnNvIGhvdyBh Ym91dCBzaW1wbHkgdXNpbmcgLUVIV1BPSVNPTiBhcyByZXR1cm4gY29kZSBmb3IgdGhlIG5ldyBj YXNlPw0KPlRoZW4sIHRoZSBtZWFuaW5nIG9mIC1FSFdQT0lTT04gYXQgdGhpcyBjb250ZXh0IHdv dWxkIGNoYW5nZSBsaWtlIGJlbG93Og0KPg0KPiAgICAgICAgLyoNCj4tICAgICAgICAqIC1FSFdQ T0lTT04gZnJvbSBtZW1vcnlfZmFpbHVyZSgpIG1lYW5zIHRoYXQgaXQgYWxyZWFkeSBzZW50IFNJ R0JVUw0KPi0gICAgICAgICogdG8gdGhlIGN1cnJlbnQgcHJvY2VzcyB3aXRoIHRoZSBwcm9wZXIg ZXJyb3IgaW5mbywgc28gbm8gbmVlZCB0bw0KPi0gICAgICAgICogc2VuZCBTSUdCVVMgaGVyZSBh Z2Fpbi4NCj4rICAgICAgICAqIC1FSFdQT0lTT04gZnJvbSBtZW1vcnlfZmFpbHVyZSgpIG1lYW5z IHRoYXQgbWVtb3J5X2ZhaWx1cmUoKSBkaWQNCj4rICAgICAgICAqIG5vdCBoYW5kbGUgdGhlIGVy cm9yIGV2ZW50IGZvciB0aGUgZm9sbG93aW5nIHJlYXNvbjoNCj4rICAgICAgICAqICAgLSBTSUdC VVMgaGFzIGFscmVhZHkgYmVlbiBzZW50IHRvIHRoZSBjdXJyZW50IHByb2Nlc3Mgd2l0aCB0aGUN Cj4rICAgICAgICAqICAgICBwcm9wZXIgZXJyb3IgaW5mbywgb3INCj4rICAgICAgICAqICAgLSBo d3BvaXNvbl9maWx0ZXIoKSBmaWx0ZXJlZCB0aGUgZXZlbnQsDQo+KyAgICAgICAgKiBzbyBubyBu ZWVkIHRvIGRlYWwgd2l0aCBpdCBtb3JlLg0KPiAgICAgICAgICAqLw0KDQoNClllcywgaGVyZSAt RUhXUE9JU09OIGNhbiByZXByZXNlbnQgdGhlIHNhbWUgY2FzZSwgSSB3aWxsIGp1c3QgdXNlIC1F SFdQT0lTT04NCg0KdG8gc2ltcGxpZnk6KQ0KDQoNClRoYW5rcw0KDQpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXw0Kt6K8/sjLOiBIT1JJR1VDSEkgTkFPWUEo3KW/2qGh1rHSsikgPG5h b3lhLmhvcmlndWNoaUBuZWMuY29tPg0Kt6LLzcqxvOQ6IDIwMjLE6jLUwjE4yNUgMTE6MDg6MTQN CsrVvP7Iyzogwt63yQ0Ks63LzTogdG9ueS5sdWNrQGludGVsLmNvbTsgYnBAYWxpZW44LmRlOyB0 Z2x4QGxpbnV0cm9uaXguZGU7IG1pbmdvQHJlZGhhdC5jb207IGRhdmUuaGFuc2VuQGxpbnV4Lmlu dGVsLmNvbTsgeDg2QGtlcm5lbC5vcmc7IGFrcG1AbGludXgtZm91bmRhdGlvbi5vcmc7IGhwYUB6 eXRvci5jb207IGxpbnV4LWVkYWNAdmdlci5rZXJuZWwub3JnOyBsaW51eC1rZXJuZWxAdmdlci5r ZXJuZWwub3JnOyBsaW51eC1tbUBrdmFjay5vcmcNCtb3zOI6IFJlOiBbUEFUQ0ggdjJdIGh3L3Bv aXNvbjogQWRkIGluLXVzZSBodWdlcGFnZSBmaWx0ZXIganVkZ2VtZW50IGFuZCBhdm9pZCBmaWx0 ZXIgcGFnZSBpbXBhY3Qgb24gbWNlIGhhbmRsZXINCg0KT24gV2VkLCBGZWIgMTYsIDIwMjIgYXQg MTA6MDA6MzhQTSAtMDUwMCwgbHVvZmVpIHdyb3RlOg0KPiBBZnRlciBzdWNjZXNzZnVsbHkgb2J0 YWluaW5nIHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIGh1Z2UNCj4gcGFnZSwgaXQgaXMgc3Rp bGwgbmVjZXNzYXJ5IHRvIGNhbGwgaHdwb2lzb25fZmlsdGVyKCkgdG8gbWFrZSBhDQo+IGZpbHRl ciBqdWRnZW1lbnQsIG90aGVyd2lzZSB0aGUgZmlsdGVyIGh1Z2VwYWdlIHdpbGwgYmUgdW5tYXBl ZA0KPiBhbmQgdGhlIHJlbGF0ZWQgcHJvY2VzcyBtYXkgYmUga2lsbGVkLg0KPg0KPiBBbHNvIHdo ZW4gdGhlIGh1Z2UgcGFnZSBtZWV0cyB0aGUgZmlsdGVyIGNvbmRpdGlvbnMsIGl0IHNob3VsZA0K PiBub3QgYmUgcmVnYXJkZWQgYXMgc3VjY2Vzc2Z1bCBtZW1vcnlfZmFpbHVyZSgpIHByb2Nlc3Np bmcgZm9yDQo+IG1jZSBoYW5kbGVyLCBidXQgc2hvdWxkIHJldHVybiBhIHZhbHVlIHRvIGluZm9y bSB0aGUgY2FsbGVyLA0KPiBvdGhlcndpc2UgdGhlIGNhbGxlciByZWdhcmRzIHRoZSBlcnJvciBw YWdlIGhhcyBiZWVuIGlkZW50aWZpZWQNCj4gYW5kIGlzb2xhdGVkLCB3aGljaCBtYXkgbGVhZCB0 byBjYWxsaW5nIHNldF9tY2Vfbm9zcGVjKCkgdG8gY2hhbmdlDQo+IHBhZ2UgYXR0cmlidXRlLCBl dGMuDQo+DQo+IFNpZ25lZC1vZmYtYnk6IGx1b2ZlaSA8bHVvZmVpQHVuaWNsb3VkLmNvbT4NCg0K VGhpcyBwYXRjaCBzZWVtcyB0byBkbyB0d28gc2VwYXJhdGUgdGhpbmdzIChpbnRyb2R1Y2luZyBN Rl9NQ0VfSEFORExFLA0KYW5kIGFkZGluZyBod3BvaXNvbl9maWx0ZXIoKSBpbiBtZW1vcnlfZmFp bHVyZV9odWdldGxiKCkpLCBzbyBjb3VsZCB5b3UNCnNlcGFyYXRlIHRoZSBwYXRjaCBpbnRvIHR3 bz8NCg0KPiAtLS0NCj4gIGFyY2gveDg2L2tlcm5lbC9jcHUvbWNlL2NvcmUuYyB8IDIyICsrKysr KysrKysrLS0tLS0tLS0tLS0NCj4gIGluY2x1ZGUvbGludXgvbW0uaCAgICAgICAgICAgICB8ICAx ICsNCj4gIG1tL21lbW9yeS1mYWlsdXJlLmMgICAgICAgICAgICB8IDI1ICsrKysrKysrKysrKysr KysrKysrKysrLS0NCj4gIDMgZmlsZXMgY2hhbmdlZCwgMzUgaW5zZXJ0aW9ucygrKSwgMTMgZGVs ZXRpb25zKC0pDQo+DQo+IGRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvY3B1L21jZS9jb3Jl LmMgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L21jZS9jb3JlLmMNCj4gaW5kZXggNTgxOGI4MzdmZDRk Li5jMmI5OWM2MDIyNWYgMTAwNjQ0DQo+IC0tLSBhL2FyY2gveDg2L2tlcm5lbC9jcHUvbWNlL2Nv cmUuYw0KPiArKysgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L21jZS9jb3JlLmMNCj4gQEAgLTYxMiw3 ICs2MTIsNyBAQCBzdGF0aWMgaW50IHVjX2RlY29kZV9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJf YmxvY2sgKm5iLCB1bnNpZ25lZCBsb25nIHZhbCwNCj4gICAgICAgICAgICAgICAgcmV0dXJuIE5P VElGWV9ET05FOw0KPg0KPiAgICAgICAgcGZuID0gbWNlLT5hZGRyID4+IFBBR0VfU0hJRlQ7DQo+ IC0gICAgIGlmICghbWVtb3J5X2ZhaWx1cmUocGZuLCAwKSkgew0KPiArICAgICBpZiAoIW1lbW9y eV9mYWlsdXJlKHBmbiwgTUZfTUNFX0hBTkRMRSkpIHsNCj4gICAgICAgICAgICAgICAgc2V0X21j ZV9ub3NwZWMocGZuLCB3aG9sZV9wYWdlKG1jZSkpOw0KPiAgICAgICAgICAgICAgICBtY2UtPmtm bGFncyB8PSBNQ0VfSEFORExFRF9VQzsNCj4gICAgICAgIH0NCj4gQEAgLTEyODYsNyArMTI4Niw3 IEBAIHN0YXRpYyB2b2lkIGtpbGxfbWVfbm93KHN0cnVjdCBjYWxsYmFja19oZWFkICpjaCkNCj4g IHN0YXRpYyB2b2lkIGtpbGxfbWVfbWF5YmUoc3RydWN0IGNhbGxiYWNrX2hlYWQgKmNiKQ0KPiAg ew0KPiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpwID0gY29udGFpbmVyX29mKGNiLCBzdHJ1 Y3QgdGFza19zdHJ1Y3QsIG1jZV9raWxsX21lKTsNCj4gLSAgICAgaW50IGZsYWdzID0gTUZfQUNU SU9OX1JFUVVJUkVEOw0KPiArICAgICBpbnQgZmxhZ3MgPSBNRl9BQ1RJT05fUkVRVUlSRUQgfCBN Rl9NQ0VfSEFORExFOw0KPiAgICAgICAgaW50IHJldDsNCj4NCj4gICAgICAgIHAtPm1jZV9jb3Vu dCA9IDA7DQo+IEBAIC0xMzAwLDE0ICsxMzAwLDE0IEBAIHN0YXRpYyB2b2lkIGtpbGxfbWVfbWF5 YmUoc3RydWN0IGNhbGxiYWNrX2hlYWQgKmNiKQ0KPiAgICAgICAgICAgICAgICBzZXRfbWNlX25v c3BlYyhwLT5tY2VfYWRkciA+PiBQQUdFX1NISUZULCBwLT5tY2Vfd2hvbGVfcGFnZSk7DQo+ICAg ICAgICAgICAgICAgIHN5bmNfY29yZSgpOw0KPiAgICAgICAgICAgICAgICByZXR1cm47DQo+IC0g ICAgIH0NCj4gLQ0KPiAtICAgICAvKg0KPiAtICAgICAgKiAtRUhXUE9JU09OIGZyb20gbWVtb3J5 X2ZhaWx1cmUoKSBtZWFucyB0aGF0IGl0IGFscmVhZHkgc2VudCBTSUdCVVMNCj4gLSAgICAgICog dG8gdGhlIGN1cnJlbnQgcHJvY2VzcyB3aXRoIHRoZSBwcm9wZXIgZXJyb3IgaW5mbywgc28gbm8g bmVlZCB0bw0KPiAtICAgICAgKiBzZW5kIFNJR0JVUyBoZXJlIGFnYWluLg0KPiAtICAgICAgKi8N Cj4gLSAgICAgaWYgKHJldCA9PSAtRUhXUE9JU09OKQ0KPiArICAgICB9IGVsc2UgaWYgKHJldCA9 PSAtRUhXUE9JU09OIHx8IHJldCA9PSAxKQ0KPiArICAgICAgICAgICAgIC8qDQo+ICsgICAgICAg ICAgICAgICogLUVIV1BPSVNPTiBmcm9tIG1lbW9yeV9mYWlsdXJlKCkgbWVhbnMgdGhhdCBpdCBh bHJlYWR5IHNlbnQgU0lHQlVTDQo+ICsgICAgICAgICAgICAgICogdG8gdGhlIGN1cnJlbnQgcHJv Y2VzcyB3aXRoIHRoZSBwcm9wZXIgZXJyb3IgaW5mbywgc28gbm8gbmVlZCB0bw0KPiArICAgICAg ICAgICAgICAqIHNlbmQgU0lHQlVTIGhlcmUgYWdhaW4uDQo+ICsgICAgICAgICAgICAgICoNCj4g KyAgICAgICAgICAgICAgKiAxIG1lYW5zIGl0J3MgYSBmaWx0ZXIgcGFnZSwgbm8gbmVlZCB0byBk ZWFsIHdpdGguDQo+ICsgICAgICAgICAgICAgICovDQoNClRoZSBuZXcgcmV0dXJuIGNvZGUgMSBz ZWVtcyB0byBiZSBoYW5kbGVkIGluIHRoZSBzYW1lIG1hbm5lciBhcyAtRUhXUE9JU09OLA0Kc28g aG93IGFib3V0IHNpbXBseSB1c2luZyAtRUhXUE9JU09OIGFzIHJldHVybiBjb2RlIGZvciB0aGUg bmV3IGNhc2U/DQpUaGVuLCB0aGUgbWVhbmluZyBvZiAtRUhXUE9JU09OIGF0IHRoaXMgY29udGV4 dCB3b3VsZCBjaGFuZ2UgbGlrZSBiZWxvdzoNCg0KICAgICAgICAgLyoNCi0gICAgICAgICogLUVI V1BPSVNPTiBmcm9tIG1lbW9yeV9mYWlsdXJlKCkgbWVhbnMgdGhhdCBpdCBhbHJlYWR5IHNlbnQg U0lHQlVTDQotICAgICAgICAqIHRvIHRoZSBjdXJyZW50IHByb2Nlc3Mgd2l0aCB0aGUgcHJvcGVy IGVycm9yIGluZm8sIHNvIG5vIG5lZWQgdG8NCi0gICAgICAgICogc2VuZCBTSUdCVVMgaGVyZSBh Z2Fpbi4NCisgICAgICAgICogLUVIV1BPSVNPTiBmcm9tIG1lbW9yeV9mYWlsdXJlKCkgbWVhbnMg dGhhdCBtZW1vcnlfZmFpbHVyZSgpIGRpZA0KKyAgICAgICAgKiBub3QgaGFuZGxlIHRoZSBlcnJv ciBldmVudCBmb3IgdGhlIGZvbGxvd2luZyByZWFzb246DQorICAgICAgICAqICAgLSBTSUdCVVMg aGFzIGFscmVhZHkgYmVlbiBzZW50IHRvIHRoZSBjdXJyZW50IHByb2Nlc3Mgd2l0aCB0aGUNCisg ICAgICAgICogICAgIHByb3BlciBlcnJvciBpbmZvLCBvcg0KKyAgICAgICAgKiAgIC0gaHdwb2lz b25fZmlsdGVyKCkgZmlsdGVyZWQgdGhlIGV2ZW50LA0KKyAgICAgICAgKiBzbyBubyBuZWVkIHRv IGRlYWwgd2l0aCBpdCBtb3JlLg0KICAgICAgICAgICovDQoNCg0KVGhhbmtzLA0KTmFveWEgSG9y aWd1Y2hpDQoNCj4gICAgICAgICAgICAgICAgcmV0dXJuOw0KPg0KPiAgICAgICAgcHJfZXJyKCJN ZW1vcnkgZXJyb3Igbm90IHJlY292ZXJlZCIpOw0KPiBAQCAtMTMyMCw3ICsxMzIwLDcgQEAgc3Rh dGljIHZvaWQga2lsbF9tZV9uZXZlcihzdHJ1Y3QgY2FsbGJhY2tfaGVhZCAqY2IpDQo+DQo+ICAg ICAgICBwLT5tY2VfY291bnQgPSAwOw0KPiAgICAgICAgcHJfZXJyKCJLZXJuZWwgYWNjZXNzZWQg cG9pc29uIGluIHVzZXIgc3BhY2UgYXQgJWxseFxuIiwgcC0+bWNlX2FkZHIpOw0KPiAtICAgICBp ZiAoIW1lbW9yeV9mYWlsdXJlKHAtPm1jZV9hZGRyID4+IFBBR0VfU0hJRlQsIDApKQ0KPiArICAg ICBpZiAoIW1lbW9yeV9mYWlsdXJlKHAtPm1jZV9hZGRyID4+IFBBR0VfU0hJRlQsIE1GX01DRV9I QU5ETEUpKQ0KPiAgICAgICAgICAgICAgICBzZXRfbWNlX25vc3BlYyhwLT5tY2VfYWRkciA+PiBQ QUdFX1NISUZULCBwLT5tY2Vfd2hvbGVfcGFnZSk7DQo+ICB9DQo+DQo+IGRpZmYgLS1naXQgYS9p bmNsdWRlL2xpbnV4L21tLmggYi9pbmNsdWRlL2xpbnV4L21tLmgNCj4gaW5kZXggMjEzY2M1Njli MTkyLi5mNDcwM2Y5NDhlOWEgMTAwNjQ0DQo+IC0tLSBhL2luY2x1ZGUvbGludXgvbW0uaA0KPiAr KysgYi9pbmNsdWRlL2xpbnV4L21tLmgNCj4gQEAgLTMxODgsNiArMzE4OCw3IEBAIGVudW0gbWZf ZmxhZ3Mgew0KPiAgICAgICAgTUZfTVVTVF9LSUxMID0gMSA8PCAyLA0KPiAgICAgICAgTUZfU09G VF9PRkZMSU5FID0gMSA8PCAzLA0KPiAgICAgICAgTUZfVU5QT0lTT04gPSAxIDw8IDQsDQo+ICsg ICAgIE1GX01DRV9IQU5ETEUgPSAxIDw8IDUsDQo+ICB9Ow0KPiAgZXh0ZXJuIGludCBtZW1vcnlf ZmFpbHVyZSh1bnNpZ25lZCBsb25nIHBmbiwgaW50IGZsYWdzKTsNCj4gIGV4dGVybiB2b2lkIG1l bW9yeV9mYWlsdXJlX3F1ZXVlKHVuc2lnbmVkIGxvbmcgcGZuLCBpbnQgZmxhZ3MpOw0KPiBkaWZm IC0tZ2l0IGEvbW0vbWVtb3J5LWZhaWx1cmUuYyBiL21tL21lbW9yeS1mYWlsdXJlLmMNCj4gaW5k ZXggOTdhOWVkOGY4N2E5Li4xYTBiZDkxYTY4NWIgMTAwNjQ0DQo+IC0tLSBhL21tL21lbW9yeS1m YWlsdXJlLmMNCj4gKysrIGIvbW0vbWVtb3J5LWZhaWx1cmUuYw0KPiBAQCAtMTUyNiw3ICsxNTI2 LDEwIEBAIHN0YXRpYyBpbnQgbWVtb3J5X2ZhaWx1cmVfaHVnZXRsYih1bnNpZ25lZCBsb25nIHBm biwgaW50IGZsYWdzKQ0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFRlc3RD bGVhclBhZ2VIV1BvaXNvbihoZWFkKSkNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbnVtX3BvaXNvbmVkX3BhZ2VzX2RlYygpOw0KPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdW5sb2NrX3BhZ2UoaGVhZCk7DQo+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJldHVybiAwOw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmxh Z3MgJiBNRl9NQ0VfSEFORExFKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJldHVybiAxOw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7DQo+ICAgICAgICAg ICAgICAgICAgICAgICAgfQ0KPiAgICAgICAgICAgICAgICAgICAgICAgIHVubG9ja19wYWdlKGhl YWQpOw0KPiAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IE1GX0ZBSUxFRDsNCj4gQEAgLTE1 NDUsNiArMTU0OCwxNyBAQCBzdGF0aWMgaW50IG1lbW9yeV9mYWlsdXJlX2h1Z2V0bGIodW5zaWdu ZWQgbG9uZyBwZm4sIGludCBmbGFncykNCj4gICAgICAgIGxvY2tfcGFnZShoZWFkKTsNCj4gICAg ICAgIHBhZ2VfZmxhZ3MgPSBoZWFkLT5mbGFnczsNCj4NCj4gKyAgICAgaWYgKGh3cG9pc29uX2Zp bHRlcihwKSkgew0KPiArICAgICAgICAgICAgIGlmIChUZXN0Q2xlYXJQYWdlSFdQb2lzb24oaGVh ZCkpDQo+ICsgICAgICAgICAgICAgICAgICAgICBudW1fcG9pc29uZWRfcGFnZXNfZGVjKCk7DQo+ ICsgICAgICAgICAgICAgcHV0X3BhZ2UocCk7DQo+ICsgICAgICAgICAgICAgaWYgKGZsYWdzICYg TUZfTUNFX0hBTkRMRSkNCj4gKyAgICAgICAgICAgICAgICAgICAgIHJlcyA9IDE7DQo+ICsgICAg ICAgICAgICAgZWxzZQ0KPiArICAgICAgICAgICAgICAgICAgICAgcmVzID0gMDsNCj4gKyAgICAg ICAgICAgICBnb3RvIG91dDsNCj4gKyAgICAgfQ0KPiArDQo+ICAgICAgICAvKg0KPiAgICAgICAg ICogVE9ETzogaHdwb2lzb24gZm9yIHB1ZC1zaXplZCBodWdldGxiIGRvZXNuJ3Qgd29yayByaWdo dCBub3csIHNvDQo+ICAgICAgICAgKiBzaW1wbHkgZGlzYWJsZSBpdC4gSW4gb3JkZXIgdG8gbWFr ZSBpdCB3b3JrIHByb3Blcmx5LCB3ZSBuZWVkDQo+IEBAIC0xNjEzLDcgKzE2MjcsMTAgQEAgc3Rh dGljIGludCBtZW1vcnlfZmFpbHVyZV9kZXZfcGFnZW1hcCh1bnNpZ25lZCBsb25nIHBmbiwgaW50 IGZsYWdzLA0KPiAgICAgICAgICAgICAgICBnb3RvIG91dDsNCj4NCj4gICAgICAgIGlmIChod3Bv aXNvbl9maWx0ZXIocGFnZSkpIHsNCj4gLSAgICAgICAgICAgICByYyA9IDA7DQo+ICsgICAgICAg ICAgICAgaWYgKGZsYWdzICYgTUZfTUNFX0hBTkRMRSkNCj4gKyAgICAgICAgICAgICAgICAgICAg IHJjID0gMTsNCj4gKyAgICAgICAgICAgICBlbHNlDQo+ICsgICAgICAgICAgICAgICAgICAgICBy YyA9IDA7DQo+ICAgICAgICAgICAgICAgIGdvdG8gdW5sb2NrOw0KPiAgICAgICAgfQ0KPg0KPiBA QCAtMTgzNyw2ICsxODU0LDEwIEBAIGludCBtZW1vcnlfZmFpbHVyZSh1bnNpZ25lZCBsb25nIHBm biwgaW50IGZsYWdzKQ0KPiAgICAgICAgICAgICAgICAgICAgICAgIG51bV9wb2lzb25lZF9wYWdl c19kZWMoKTsNCj4gICAgICAgICAgICAgICAgdW5sb2NrX3BhZ2UocCk7DQo+ICAgICAgICAgICAg ICAgIHB1dF9wYWdlKHApOw0KPiArICAgICAgICAgICAgIGlmIChmbGFncyAmIE1GX01DRV9IQU5E TEUpDQo+ICsgICAgICAgICAgICAgICAgICAgICByZXMgPSAxOw0KPiArICAgICAgICAgICAgIGVs c2UNCj4gKyAgICAgICAgICAgICAgICAgICAgIHJlcyA9IDA7DQo+ICAgICAgICAgICAgICAgIGdv dG8gdW5sb2NrX211dGV4Ow0KPiAgICAgICAgfQ0KPg0KPiAtLQ0KPiAyLjI3LjANCg== --_000_1bdf929216be4816bad82c8902cd174cunicloudcom_ Content-Type: text/html; charset="gb2312" Content-Transfer-Encoding: quoted-printable

>> After succ= essfully obtaining the reference count of the huge
>> page, it is s= till necessary to call hwpoison_filter() to make a
>> filter judgem= ent, otherwise the filter hugepage will be unmaped
>> and the relat= ed process may be killed.
>>
>> Also when the= huge page meets the filter conditions, it should
>> not be regard= ed as successful memory_failure() processing for
>> mce handler, = but should return a value to inform the caller,
>> otherwise the= caller regards the error page has been identified
>> and isolated,= which may lead to calling set_mce_nospec() to change
>> page attribut= e, etc.
>>
>> Signed-off-by= : luofei <luofei@unicloud.com>
>
>This patch seems t= o do two separate things (introducing MF_MCE_HANDLE,
>and adding hwpoiso= n_filter() in memory_failure_hugetlb()), so could you
>separate the patch= into two?

Yes, these two things are not very related, I will submit two patches to

describe them separatley. :)

>> -
>> -  =    /*
>> -  =     * -EHWPOISON from memory_failure() means that it already= sent SIGBUS
>> -  =     * to the current process with the proper error info, so = no need to
>> -  =     * send SIGBUS here again.
>> -  =     */
>> -  =    if (ret =3D=3D -EHWPOISON)
>> + &n= bsp;   } else if (ret =3D=3D -EHWPOISON || ret =3D=3D 1) >> + &n= bsp;           /*<= br style=3D"color:rgb(33,33,33); font-family:"Microsoft YaHei UI"= ,"Microsoft YaHei",=CE=A2=C8=ED=D1=C5=BA=DA,SimSun,=CB=CE=CC=E5,s= ans-serif,serif,EmojiFont; font-size:13.3333px"> >> + &n= bsp;            * -E= HWPOISON from memory_failure() means that it already sent SIGBUS
>> + &n= bsp;            * to= the current process with the proper error info, so no need to
>> + &n= bsp;            * se= nd SIGBUS here again.
>> + &n= bsp;            *
>> + &n= bsp;            * 1 = means it's a filter page, no need to deal with.
>> + &n= bsp;            */
>
>The new return cod= e 1 seems to be handled in the same manner as -EHWPOISON,
>so how about simpl= y using -EHWPOISON as return code for the new case?
>Then, the meaning = of -EHWPOISON at this context would change like below:
>
>    &nbs= p;   /*
>-   = ;     * -EHWPOISON from memory_failure() means that it = already sent SIGBUS
>-   = ;     * to the current process with the proper error in= fo, so no need to
>-   = ;     * send SIGBUS here again.
>+  &= nbsp;     * -EHWPOISON from memory_failure() means that= memory_failure() did
>+  &= nbsp;     * not handle the error event for the followin= g reason:
>+  &= nbsp;     *   - SIGBUS has already been sent = to the current process with the
>+  &= nbsp;     *     proper error info, = or
>+  &= nbsp;     *   - hwpoison_filter() filtered th= e event,
>+  &= nbsp;     * so no need to deal with it more.
>    &nbs= p;     */


Yes, here -EHWPOISON can represent the same case, I will just use -EHWPOISON

to simplify:)


Thanks


=B7=A2=BC=FE=C8=CB: HORIG= UCHI NAOYA(=DC=A5=BF=DA=A1=A1=D6=B1=D2=B2) <naoya.horiguchi@nec.com><= br> =B7=A2=CB=CD=CA=B1=BC=E4: 2022=C4=EA2=D4=C218=C8=D5 11:08:14
=CA=D5=BC=FE=C8=CB: =C2=DE=B7=C9
=B3=AD=CB=CD: tony.luck@intel.com; bp@alien8.de; tglx@linutronix.de;= mingo@redhat.com; dave.hansen@linux.intel.com; x86@kernel.org; akpm@linux-= foundation.org; hpa@zytor.com; linux-edac@vger.kernel.org; linux-kernel@vge= r.kernel.org; linux-mm@kvack.org
=D6=F7=CC=E2: Re: [PATCH v2] hw/poison: Add in-use hugepage filter j= udgement and avoid filter page impact on mce handler
 
On Wed, Feb 16, 2022 at 10:00:38PM -0500, luofei w= rote:
> After successfully obtaining the reference count of the huge
> page, it is still necessary to call hwpoison_filter() to make a
> filter judgement, otherwise the filter hugepage will be unmaped
> and the related process may be killed.
>
> Also when the huge page meets the filter conditions, it should
> not be regarded as successful memory_failure() processing for
> mce handler, but should return a value to inform the caller,
> otherwise the caller regards the error page has been identified
> and isolated, which may lead to calling set_mce_nospec() to change
> page attribute, etc.
>
> Signed-off-by: luofei <luofei@unicloud.com>

This patch seems to do two separate things (introducing MF_MCE_HANDLE,
and adding hwpoison_filter() in memory_failure_hugetlb()), so could you
separate the patch into two?

> ---
>  arch/x86/kernel/cpu/mce/core.c | 22 +++++= 3;+++++-----------
>  include/linux/mm.h       &nbs= p;     |  1 +
>  mm/memory-failure.c       &nb= sp;    | 25 +++++++++= 3;+++++++++++++--
>  3 files changed, 35 insertions(+), 13 deletions(-)
>
> diff --git a/arch/x86/kernel/cpu/mce/core.c b/arch/x86/kernel/cpu/mce/= core.c
> index 5818b837fd4d..c2b99c60225f 100644
> --- a/arch/x86/kernel/cpu/mce/core.c
> +++ b/arch/x86/kernel/cpu/mce/core.c
> @@ -612,7 +612,7 @@ static int uc_decode_notifier(struct notifier_= block *nb, unsigned long val,
>            = ;    return NOTIFY_DONE;

>        pfn =3D mce->addr >>= ; PAGE_SHIFT;
> -     if (!memory_failure(pfn, 0)) {
> +     if (!memory_failure(pfn, MF_MCE_HANDLE))= {
>            = ;    set_mce_nospec(pfn, whole_page(mce));
>            = ;    mce->kflags |=3D MCE_HANDLED_UC;
>        }
> @@ -1286,7 +1286,7 @@ static void kill_me_now(struct callback_head= *ch)
>  static void kill_me_maybe(struct callback_head *cb)
>  {
>        struct task_struct *p =3D co= ntainer_of(cb, struct task_struct, mce_kill_me);
> -     int flags =3D MF_ACTION_REQUIRED;
> +     int flags =3D MF_ACTION_REQUIRED | MF_MC= E_HANDLE;
>        int ret;

>        p->mce_count =3D 0;
> @@ -1300,14 +1300,14 @@ static void kill_me_maybe(struct callback_= head *cb)
>            = ;    set_mce_nospec(p->mce_addr >> PAGE_SHIFT, p-&g= t;mce_whole_page);
>            = ;    sync_core();
>            = ;    return;
> -     }
> -
> -     /*
> -      * -EHWPOISON from memory_failure() mea= ns that it already sent SIGBUS
> -      * to the current process with the prop= er error info, so no need to
> -      * send SIGBUS here again.
> -      */
> -     if (ret =3D=3D -EHWPOISON)
> +     } else if (ret =3D=3D -EHWPOISON || ret = =3D=3D 1)
> +           = ;  /*
> +           = ;   * -EHWPOISON from memory_failure() means that it already sent= SIGBUS
> +           = ;   * to the current process with the proper error info, so no ne= ed to
> +           = ;   * send SIGBUS here again.
> +           = ;   *
> +           = ;   * 1 means it's a filter page, no need to deal with.
> +           = ;   */

The new return code 1 seems to be handled in the same manner as -EHWPOISON,=
so how about simply using -EHWPOISON as return code for the new case?
Then, the meaning of -EHWPOISON at this context would change like below:
         /*
-        * -EHWPOISON from memory_failur= e() means that it already sent SIGBUS
-        * to the current process with t= he proper error info, so no need to
-        * send SIGBUS here again.
+        * -EHWPOISON from memory_fa= ilure() means that memory_failure() did
+        * not handle the error even= t for the following reason:
+        *   - SIGBUS has = already been sent to the current process with the
+        *     p= roper error info, or
+        *   - hwpoison_fi= lter() filtered the event,
+        * so no need to deal with i= t more.
          */


Thanks,
Naoya Horiguchi

>            = ;    return;

>        pr_err("Memory error no= t recovered");
> @@ -1320,7 +1320,7 @@ static void kill_me_never(struct callback_he= ad *cb)

>        p->mce_count =3D 0;
>        pr_err("Kernel accessed= poison in user space at %llx\n", p->mce_addr);
> -     if (!memory_failure(p->mce_addr >> = PAGE_SHIFT, 0))
> +     if (!memory_failure(p->mce_addr >&= gt; PAGE_SHIFT, MF_MCE_HANDLE))
>            = ;    set_mce_nospec(p->mce_addr >> PAGE_SHIFT, p-&g= t;mce_whole_page);
>  }

> diff --git a/include/linux/mm.h b/include/linux/mm.h
> index 213cc569b192..f4703f948e9a 100644
> --- a/include/linux/mm.h
> +++ b/include/linux/mm.h
> @@ -3188,6 +3188,7 @@ enum mf_flags {
>        MF_MUST_KILL =3D 1 << = 2,
>        MF_SOFT_OFFLINE =3D 1 <&l= t; 3,
>        MF_UNPOISON =3D 1 << 4= ,
> +     MF_MCE_HANDLE =3D 1 << 5,
>  };
>  extern int memory_failure(unsigned long pfn, int flags);
>  extern void memory_failure_queue(unsigned long pfn, int flags);<= br> > diff --git a/mm/memory-failure.c b/mm/memory-failure.c
> index 97a9ed8f87a9..1a0bd91a685b 100644
> --- a/mm/memory-failure.c
> +++ b/mm/memory-failure.c
> @@ -1526,7 +1526,10 @@ static int memory_failure_hugetlb(unsigned = long pfn, int flags)
>            = ;            &n= bsp;       if (TestClearPageHWPoison(head)) >            = ;            &n= bsp;            = ;   num_poisoned_pages_dec();
>            = ;            &n= bsp;       unlock_page(head);
> -           &nb= sp;            =      return 0;
> +           = ;            &n= bsp;     if (flags & MF_MCE_HANDLE)
> +           = ;            &n= bsp;            = ; return 1;
> +           = ;            &n= bsp;     else
> +           = ;            &n= bsp;            = ; return 0;
>            = ;            }
>            = ;            unlock_= page(head);
>            = ;            res =3D= MF_FAILED;
> @@ -1545,6 +1548,17 @@ static int memory_failure_hugetlb(unsigned = long pfn, int flags)
>        lock_page(head);
>        page_flags =3D head->flag= s;

> +     if (hwpoison_filter(p)) {
> +           = ;  if (TestClearPageHWPoison(head))
> +           = ;          num_poisoned_pages_= dec();
> +           = ;  put_page(p);
> +           = ;  if (flags & MF_MCE_HANDLE)
> +           = ;          res =3D 1;
> +           = ;  else
> +           = ;          res =3D 0;
> +           = ;  goto out;
> +     }
> +
>        /*
>         * TODO: hwpoison for p= ud-sized hugetlb doesn't work right now, so
>         * simply disable it. I= n order to make it work properly, we need
> @@ -1613,7 +1627,10 @@ static int memory_failure_dev_pagemap(unsig= ned long pfn, int flags,
>            = ;    goto out;

>        if (hwpoison_filter(page)) {=
> -           &nb= sp; rc =3D 0;
> +           = ;  if (flags & MF_MCE_HANDLE)
> +           = ;          rc =3D 1;
> +           = ;  else
> +           = ;          rc =3D 0;
>            = ;    goto unlock;
>        }

> @@ -1837,6 +1854,10 @@ int memory_failure(unsigned long pfn, int f= lags)
>            = ;            num_poi= soned_pages_dec();
>            = ;    unlock_page(p);
>            = ;    put_page(p);
> +           = ;  if (flags & MF_MCE_HANDLE)
> +           = ;          res =3D 1;
> +           = ;  else
> +           = ;          res =3D 0;
>            = ;    goto unlock_mutex;
>        }

> --
> 2.27.0
--_000_1bdf929216be4816bad82c8902cd174cunicloudcom_--