From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756803AbbEVINx (ORCPT ); Fri, 22 May 2015 04:13:53 -0400 Received: from mga14.intel.com ([192.55.52.115]:45778 "EHLO mga14.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756032AbbEVINu (ORCPT ); Fri, 22 May 2015 04:13:50 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.13,474,1427785200"; d="asc'?scan'208";a="575316390" Date: Fri, 22 May 2015 17:06:55 -0400 From: "Chen, Gong" To: Borislav Petkov Cc: linux-kernel@vger.kernel.org, tony.luck@intel.com Subject: Re: [PATCH 1/4 Rebase] x86, MCE: Provide a lock-less memory pool to save error record Message-ID: <20150522210655.GA4930@gchen.bj.intel.com> References: <1432150538-3120-1-git-send-email-gong.chen@linux.intel.com> <1432150538-3120-2-git-send-email-gong.chen@linux.intel.com> <20150520103610.GC3645@pd.tnic> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="ibTvN161/egqYuK8" Content-Disposition: inline In-Reply-To: <20150520103610.GC3645@pd.tnic> X-PGP-Key-ID: A43922C7 User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --ibTvN161/egqYuK8 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Wed, May 20, 2015 at 12:36:10PM +0200, Borislav Petkov wrote: > Date: Wed, 20 May 2015 12:36:10 +0200 > From: Borislav Petkov > To: "Chen, Gong" > Cc: linux-kernel@vger.kernel.org, tony.luck@intel.com > Subject: Re: [PATCH 1/4 Rebase] x86, MCE: Provide a lock-less memory pool > to save error record > User-Agent: Mutt/1.5.23 (2014-03-12) >=20 > On Wed, May 20, 2015 at 03:35:35PM -0400, Chen, Gong wrote: > > printk is not safe to use in MCE context. Add a lockless memory > > allocator pool to save error records in MCE context. Issual of those > > records will be delayed to a context safe to do printk. This idea is > > inspired by APEI/GHES driver. > >=20 > > We're very conservative and allocate only two pages for it but since > > we're going to use those pages throughout the system's lifetime, we > > allocate them statically to avoid early boot time allocation woes. > >=20 > > Signed-off-by: Chen, Gong > > Link: http://lkml.kernel.org/r/1407830375-11087-1-git-send-email-gong.c= hen@linux.intel.com > > [Boris: rewrite. ] > > Signed-off-by: Borislav Petkov > > --- > > arch/x86/Kconfig | 1 + > > arch/x86/include/uapi/asm/mce.h | 3 +- > > arch/x86/kernel/cpu/mcheck/Makefile | 2 +- > > arch/x86/kernel/cpu/mcheck/mce-genpool.c | 102 ++++++++++++++++++++++= ++++++++ > > arch/x86/kernel/cpu/mcheck/mce-internal.h | 12 ++++ > > arch/x86/kernel/cpu/mcheck/mce.c | 8 ++- > > 6 files changed, 125 insertions(+), 3 deletions(-) > > create mode 100644 arch/x86/kernel/cpu/mcheck/mce-genpool.c >=20 > Applied, thanks... >=20 > > diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mch= eck/mce.c > > index e535533d5ab8..ba91777a7ad8 100644 > > --- a/arch/x86/kernel/cpu/mcheck/mce.c > > +++ b/arch/x86/kernel/cpu/mcheck/mce.c > > @@ -115,7 +115,7 @@ static void (*quirk_no_way_out)(int bank, struct mc= e *m, struct pt_regs *regs); > > * CPU/chipset specific EDAC code can register a notifier call here to= print > > * MCE errors in a human-readable form. > > */ > > -static ATOMIC_NOTIFIER_HEAD(x86_mce_decoder_chain); > > +ATOMIC_NOTIFIER_HEAD(x86_mce_decoder_chain); > > =20 > > /* Do initial initialization of a struct mce */ > > void mce_setup(struct mce *m) > > @@ -1688,6 +1688,12 @@ void mcheck_cpu_init(struct cpuinfo_x86 *c) > > if (mca_cfg.disabled) > > return; > > =20 > > + if (mce_genpool_init()) { > > + mca_cfg.disabled =3D true; > > + pr_emerg("Couldn't allocate MCE records pool!\n"); > > + return; > > + } > > + > > if (__mcheck_cpu_ancient_init(c)) > > return; >=20 > ... and moved this pool initialization right before we assign > machine_check_vector so that we don't do it unnecessarily if we return > earlier due to missing MCA features/MCA not enabled. >=20 IIRC, I don't need to post a new patch again, right? --ibTvN161/egqYuK8 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: Digital signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAEBAgAGBQJVX5puAAoJEI01n1+kOSLH9RcP/RbNlUJdRDuNiLEpN/KQTYDy 8xWKu7X5+M6PAEGjB+m4MSZBjXXIdU6j01HYTZzNbkt+9wKMuRR5Bo24Zu2ieikM 2Uk01MUTqGfZrbDgW8LrTbVj3VkjA1tjoulSL7tF80q6F1UaAD7Y/Li4uX4Pttv5 G8JEW2mydKx1ljXXEzm/0hPaoKyqtK0hJZ8RAXZTwXRsRZG2yyJOJVg5VmPxosfa oU4eL2z2etCCRWcBTcqxWDggEA06uVnDdHrcctnVusaHDlTzCK3ZIqEVwrbs4loD TQEABbJ9NW2Ij+S+4e3gMpCYAkFXAOcFVAjFT/YwSXbh8W4L4EkaNwDWZML1fR+0 FZTHyJwo04oRFZJfjv1moNuL9rce3OlML/uCGBnqhYKj46z5eyiY79DN7V5QoPmB Gzcpy+reQMSSHkrhJIxZJk7lACvOhEbucD5GQ3zhkNgYcTkaEzkd5BbZuK28fW31 lgqHnvHlbQUt5L+NxiujNpHSCnzT4BPWwAVv44LASVhMnQsmqCqu5qaVlY8jMyLe IM83SSV/ihyfAxcxp2Si631kuy/VfXBfMFn+A1pzGEybnKEiKPhwSXfbnxQfMvMS Br/p0U16NoVz9FhrE3FuFmoWWV7TDV9HJQIXGoeIvzAlvXImm8bSjHJJ00umB6/F fLKVLahrRhBAmSlEYZim =VXEq -----END PGP SIGNATURE----- --ibTvN161/egqYuK8--