From patchwork Wed Nov 18 15:15:49 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Paoloni, Gabriele" X-Patchwork-Id: 11915495 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=-13.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, LOTS_OF_MONEY,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable 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 77F62C6379D for ; Wed, 18 Nov 2020 15:16:09 +0000 (UTC) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id D0BF724752 for ; Wed, 18 Nov 2020 15:16:08 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=lists.elisa.tech header.i=@lists.elisa.tech header.b="W3HokcR1" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D0BF724752 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=bounce+72012+177+5278000+9232812@lists.elisa.tech X-Received: by 127.0.0.2 with SMTP id 7GwFYY5279335xtBJtj4ePsj; Wed, 18 Nov 2020 07:16:08 -0800 X-Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mx.groups.io with SMTP id smtpd.web11.25811.1605712566847477229 for ; Wed, 18 Nov 2020 07:16:06 -0800 IronPort-SDR: gn7SQdi7dC4hYBwmcJFLwPgJHz/L3P+yj31zrMTX6yA1U87FjGEZ6NMJ5ioxxs/oW0b86LwH3B i8UW8S5T1xKQ== X-IronPort-AV: E=McAfee;i="6000,8403,9808"; a="170348287" X-IronPort-AV: E=Sophos;i="5.77,486,1596524400"; d="scan'208";a="170348287" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Nov 2020 07:16:00 -0800 IronPort-SDR: GYtp/eQEMJHox3iSJRYa0KY4b4v4TwS7rbVt7DlVD6PBO5ZpAkMbHz9LG3SGZhf51VhcE8MPWI ebHCf7THJvWg== X-IronPort-AV: E=Sophos;i="5.77,486,1596524400"; d="scan'208";a="359492070" X-Received: from paolonig001.ir.intel.com ([163.33.183.93]) by fmsmga004-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Nov 2020 07:15:58 -0800 From: "Paoloni, Gabriele" To: tony.luck@intel.com, bp@alien8.de, tglx@linutronix.de, mingo@redhat.com, x86@kernel.org, hpa@zytor.com, linux-edac@vger.kernel.org, linux-kernel@vger.kernel.org Cc: gabriele.paoloni@intel.com, linux-safety@lists.elisa.tech Subject: [linux-safety] [PATCH 1/4] x86/mce: do not overwrite no_way_out if mce_end() fails Date: Wed, 18 Nov 2020 15:15:49 +0000 Message-Id: <20201118151552.1412-2-gabriele.paoloni@intel.com> In-Reply-To: <20201118151552.1412-1-gabriele.paoloni@intel.com> References: <20201118151552.1412-1-gabriele.paoloni@intel.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: Sender: linux-safety@lists.elisa.tech List-Id: Mailing-List: list linux-safety@lists.elisa.tech; contact linux-safety+owner@lists.elisa.tech List-Post: X-Gm-Message-State: GZ8aeICdpnUX0zzbrSArm6fpx5278000AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=lists.elisa.tech; q=dns/txt; s=20140610; t=1605712568; bh=1lM/6sTOqF3QD+E/PbXR4pFK7x0hwGXh+OlvHueLRMg=; h=Cc:Content-Type:Date:From:Subject:To; b=W3HokcR1rNSO56Tfj+AYKJ/0JMweh81KR5XavRCJIrL1Cvpz0x9fAv5f0tze+hJoNyh d9eIyrh1OKJaIOa2k3oUU848W6pIR2KDxYDzl0MNDLd5ZwmGxw6GB2xOgGbW/0erSx79s +UtRm9mailCW0a1DSK8TV8SLI547gYkYyWo= Currently if mce_end() fails no_way_out is set equal to worst. worst is the worst severirty that was found in the MCA banks associated to the current CPU; however at this point no_way_out could be already set by mca_start() by looking at all severities of all CPUs that entered the MCE handler. if mce_end() fails we first check if no_way_out is already set and if so we stick to it, otherwise we use the local worst value Signed-off-by: Gabriele Paoloni Reviewed-by: Tony Luck --- arch/x86/kernel/cpu/mce/core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/x86/kernel/cpu/mce/core.c b/arch/x86/kernel/cpu/mce/core.c index 4102b866e7c0..b990892c6766 100644 --- a/arch/x86/kernel/cpu/mce/core.c +++ b/arch/x86/kernel/cpu/mce/core.c @@ -1385,7 +1385,7 @@ noinstr void do_machine_check(struct pt_regs *regs) */ if (!lmce) { if (mce_end(order) < 0) - no_way_out = worst >= MCE_PANIC_SEVERITY; + no_way_out = no_way_out ? no_way_out : worst >= MCE_PANIC_SEVERITY; } else { /* * If there was a fatal machine check we should have