From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Zheng, Lv" Subject: RE: [RFC PATCH 5/5] GHES: Make NMI handler have a single reader Date: Wed, 29 Apr 2015 00:24:40 +0000 Message-ID: <1AE640813FDE7649BE1B193DEA596E880270FAD9@SHSMSX101.ccr.corp.intel.com> References: <1427448178-20689-1-git-send-email-bp@alien8.de> <1427448178-20689-6-git-send-email-bp@alien8.de> <1AE640813FDE7649BE1B193DEA596E880270F835@SHSMSX101.ccr.corp.intel.com> <20150428135913.GD19025@pd.tnic> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com ([192.55.52.88]:8639 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1031191AbbD2AYr (ORCPT ); Tue, 28 Apr 2015 20:24:47 -0400 In-Reply-To: <20150428135913.GD19025@pd.tnic> Content-Language: en-US Sender: linux-acpi-owner@vger.kernel.org List-Id: linux-acpi@vger.kernel.org To: Borislav Petkov Cc: linux-edac , Jiri Kosina , Borislav Petkov , "Rafael J. Wysocki" , Len Brown , "Luck, Tony" , Tomasz Nowicki , "Chen, Gong" , Wolfram Sang , Naoya Horiguchi , "linux-acpi@vger.kernel.org" , "linux-kernel@vger.kernel.org" SGksDQoNCj4gRnJvbTogQm9yaXNsYXYgUGV0a292IFttYWlsdG86YnBAYWxpZW44LmRlXQ0KPiBT ZW50OiBUdWVzZGF5LCBBcHJpbCAyOCwgMjAxNSA5OjU5IFBNDQo+IFN1YmplY3Q6IFJlOiBbUkZD IFBBVENIIDUvNV0gR0hFUzogTWFrZSBOTUkgaGFuZGxlciBoYXZlIGEgc2luZ2xlIHJlYWRlcg0K PiANCj4gT24gVHVlLCBBcHIgMjgsIDIwMTUgYXQgMDE6Mzg6NDFQTSArMDAwMCwgWmhlbmcsIEx2 IHdyb3RlOg0KPiA+ID4gLQlyYXdfc3Bpbl9sb2NrKCZnaGVzX25taV9sb2NrKTsNCj4gPiA+ICsJ aWYgKCFhdG9taWNfYWRkX3VubGVzcygmZ2hlc19pbl9ubWksIDEsIDEpKQ0KPiA+ID4gKwkJcmV0 dXJuIHJldDsNCj4gPiA+ICsNCj4gPg0KPiA+IGlmIChhdG9taWNfY21weGNoZygmZ2hlc19pbl9u bWksIDAsIDEpKQ0KPiA+IAlyZXR1cm4gcmV0Ow0KPiANCj4gT2ssIG5vdyBJIHVuZGVyc3RhbmQg d2hhdCB5b3UgbWVhbi4NCj4gDQo+IFdlIGFic29sdXRlbHkgd2FudCB0byB1c2UgYXRvbWljX2Fk ZF91bmxlc3MoKSBiZWNhdXNlIHdlIGdldCB0byBzYXZlIHVzDQo+IHRoZSBleHBlbnNpdmUNCj4g DQo+IAlMT0NLOyBDTVBYQ0hHDQo+IA0KPiBpZiB0aGUgdmFsdWUgd2FzIGFscmVhZHkgMS4gV2hp Y2ggaXMgZXhhY3RseSB3aGF0IHRoaXMgcGF0Y2ggaXMgdHJ5aW5nDQo+IHRvIGF2b2lkIC0gYSB0 aHVuZGVyaW5nIGhlcmQgb2YgY29yZXMgQ01QWENIR2luZyBhIGdsb2JhbCB2YXJpYWJsZS4NCg0K SU1PLCBvbiBtb3N0IGFyY2hpdGVjdHVyZXMsIHRoZSAiY21wIiBwYXJ0IHNob3VsZCB3b3JrIGp1 c3QgbGlrZSB3aGF0IHlvdSd2ZSBkb25lIHdpdGggImlmIi4NCkFuZCBvbiBzb21lIGFyY2hpdGVj dHVyZXMsIGlmIHRoZSAieGNoZyIgZG9lc24ndCBoYXBwZW4sIHRoZSAiY21wIiBwYXJ0IGV2ZW4g d29uJ3QgY2F1c2UgYSBwaXBlIGxpbmUgaGF6YXJkLg0KDQpUaGFua3MgYW5kIGJlc3QgcmVnYXJk cw0KLUx2DQoNCg0KPiANCj4gSS5lLiwNCj4gDQo+IAltb3ZsCWdoZXNfaW5fbm1pKCVyaXApLCAl ZWN4CSMgTUVNWyhjb25zdCBpbnQgKikmZ2hlc19pbl9ubWldLCBjDQo+IAljbXBsCSQxLCAlZWN4 CSMsIGMNCj4gCWplCS5MMzExCSMsCQkJCTwtLS0gZXhpdCBoZXJlIGlmIGdoZXNfaW5fbm1pID09 IDEuDQo+IAlsZWFsCTEoJXJjeCksICVlZHgJIywgRC4zNzE2Mw0KPiAJbW92bAklZWN4LCAlZWF4 CSMgYywgYw0KPiAjQVBQDQo+ICMgMTc3ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2F0b21pYy5o IiAxDQo+IAkucHVzaHNlY3Rpb24gLnNtcF9sb2NrcywiYSINCj4gLmJhbGlnbiA0DQo+IC5sb25n IDY3MWYgLSAuDQo+IC5wb3BzZWN0aW9uDQo+IDY3MToNCj4gCWxvY2s7IGNtcHhjaGdsICVlZHgs Z2hlc19pbl9ubWkoJXJpcCkJIyBELjM3MTYzLCBNRU1bKHZvbGF0aWxlIHUzMiAqKSZnaGVzX2lu X25taV0NCj4gIyAwICIiIDINCj4gI05PX0FQUA0KPiANCj4gLS0NCj4gUmVnYXJkcy9HcnVzcywN Cj4gICAgIEJvcmlzLg0KPiANCj4gRUNPIHRpcCAjMTAxOiBUcmltIHlvdXIgbWFpbHMgd2hlbiB5 b3UgcmVwbHkuDQo+IC0tDQo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1031302AbbD2AYv (ORCPT ); Tue, 28 Apr 2015 20:24:51 -0400 Received: from mga01.intel.com ([192.55.52.88]:8639 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1031191AbbD2AYr (ORCPT ); Tue, 28 Apr 2015 20:24:47 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.11,667,1422950400"; d="scan'208";a="486936792" From: "Zheng, Lv" To: Borislav Petkov CC: linux-edac , Jiri Kosina , Borislav Petkov , "Rafael J. Wysocki" , "Len Brown" , "Luck, Tony" , Tomasz Nowicki , "Chen, Gong" , Wolfram Sang , Naoya Horiguchi , "linux-acpi@vger.kernel.org" , "linux-kernel@vger.kernel.org" Subject: RE: [RFC PATCH 5/5] GHES: Make NMI handler have a single reader Thread-Topic: [RFC PATCH 5/5] GHES: Make NMI handler have a single reader Thread-Index: AQHQaG/ro4UZP9zjdEyK4aA7ppX1rp1imlXQ//+FsoCAATPzQA== Date: Wed, 29 Apr 2015 00:24:40 +0000 Message-ID: <1AE640813FDE7649BE1B193DEA596E880270FAD9@SHSMSX101.ccr.corp.intel.com> References: <1427448178-20689-1-git-send-email-bp@alien8.de> <1427448178-20689-6-git-send-email-bp@alien8.de> <1AE640813FDE7649BE1B193DEA596E880270F835@SHSMSX101.ccr.corp.intel.com> <20150428135913.GD19025@pd.tnic> In-Reply-To: <20150428135913.GD19025@pd.tnic> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by nfs id t3T0Ou1k022943 Hi, > From: Borislav Petkov [mailto:bp@alien8.de] > Sent: Tuesday, April 28, 2015 9:59 PM > Subject: Re: [RFC PATCH 5/5] GHES: Make NMI handler have a single reader > > On Tue, Apr 28, 2015 at 01:38:41PM +0000, Zheng, Lv wrote: > > > - raw_spin_lock(&ghes_nmi_lock); > > > + if (!atomic_add_unless(&ghes_in_nmi, 1, 1)) > > > + return ret; > > > + > > > > if (atomic_cmpxchg(&ghes_in_nmi, 0, 1)) > > return ret; > > Ok, now I understand what you mean. > > We absolutely want to use atomic_add_unless() because we get to save us > the expensive > > LOCK; CMPXCHG > > if the value was already 1. Which is exactly what this patch is trying > to avoid - a thundering herd of cores CMPXCHGing a global variable. IMO, on most architectures, the "cmp" part should work just like what you've done with "if". And on some architectures, if the "xchg" doesn't happen, the "cmp" part even won't cause a pipe line hazard. Thanks and best regards -Lv > > I.e., > > movl ghes_in_nmi(%rip), %ecx # MEM[(const int *)&ghes_in_nmi], c > cmpl $1, %ecx #, c > je .L311 #, <--- exit here if ghes_in_nmi == 1. > leal 1(%rcx), %edx #, D.37163 > movl %ecx, %eax # c, c > #APP > # 177 "./arch/x86/include/asm/atomic.h" 1 > .pushsection .smp_locks,"a" > .balign 4 > .long 671f - . > .popsection > 671: > lock; cmpxchgl %edx,ghes_in_nmi(%rip) # D.37163, MEM[(volatile u32 *)&ghes_in_nmi] > # 0 "" 2 > #NO_APP > > -- > Regards/Gruss, > Boris. > > ECO tip #101: Trim your mails when you reply. > -- {.n++%ݶw{.n+{G{ayʇڙ,jfhz_(階ݢj"mG?&~iOzv^m ?I