From patchwork Thu Feb 13 16:46:00 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yazen Ghannam X-Patchwork-Id: 13973717 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2087.outbound.protection.outlook.com [40.107.223.87]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AC48824167A; Thu, 13 Feb 2025 16:46:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.223.87 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739465197; cv=fail; b=NPccm1NsblQdLBi/9QxSIPZ+0KPraRkiyiLs7zsQ6/dV4aAXBbRAsYRt6gUNi6GTJMq2H9ZqAdcHa20Ftdo3GhyKpaQndcFVUTBgjPpOQ81oB1/FCCy987G3GY45y41WkmiJVoOkTXaDXLkMwr8sVy46irbuWsn6w+W2kzC5wMI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739465197; c=relaxed/simple; bh=JbP71n3S9Shqg2TJB+J7jyPMEuxwUnk3AvjCZ/vZc4k=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=crBF283Duqqh0ZqNI2HpNSgJSQRmQmxdmDmv+H0C+f+joOCup1WdYOieNitH0okbj+rFVf0j9GBYQ4d7zS4kJGUhM1NpRdiqE9qXR0wV0AE1heJDzinEo6TojeBP90VbNbSSjMdyaPjlsyHuNFNFjhSAK2xhJ5cNZdqbrNbRcYQ= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=Ud/VwPhc; arc=fail smtp.client-ip=40.107.223.87 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="Ud/VwPhc" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=KUj+Nd+M/vP5CeCW3US+n8cf06VR+1SjDF8hI2+ixB6+dgqVrFyOMK3JnlrZuEn1fDKjrcYhB6OFu+rvI3ozsbqtpsAmVa5bvCofgzASFNGPv268/jotQl5HvgJ4E/Jq1yip6M97X7CIHxjZbcRzOoBKzP1WbVHEjfwnVdlG7NZRDOgwWxxlxYitvqIgdTPcfe6CotDbGY+OLRYw7TfdOVyJES9xG0DZj+bMRYb2dqlMK8xPEbkIwMzVeUmio0UxlrFVcIHgwg4CB7jDTUPTX2FhPnRg5M+irYy/fqygJVBMpWwPewNGEXTJL6EQlZvOyVMriyzjCYdqQNKdXszQlQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=My3mE0qKd1QNNNmBGBLGtywRlzLm+Yx6cSd2tHQUta8=; b=NU/F3uVCmX33/GBjY7LNOs6qsMXRdAaHyXh+GM04JaAPt4G6Tp4KYl0F2Z0Qh4QyWicHSuWPkEM5YCFOA9/q1Ys82w22DOTQ7R6kb+SMMMCa/gZJY3aeIAj99l/Zt5iqqUypi0NI+w6wV6Wc2LTCq8MTPOGqiO/ADvTymGWMaj6A88Td/wie49WfKjx7jF8HKRdqdk6FgVfP2PHapdGpOsz7Mqxg+sFHqVNU9JtUiQ2PHbWA3AYxu34m9i4LkzPk8xO1LHW9ixoFv9DpAZIX7yI+qmRLrhaj4MA34+AJZZxjgErM+zJ7t284oUV2jhFJFTepYlhnm79BtCPILje0PA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=My3mE0qKd1QNNNmBGBLGtywRlzLm+Yx6cSd2tHQUta8=; b=Ud/VwPhcW1cnrWF5nYD7Hl9bZZ77FpC4jUOpKybLq1ssE4pi38SvTPhP1nNGivcTGbPckbmdWaqOH0Ez2TTZ4uezLsEZ76j4Bu0TtJHnja51Wd6AekZ3s4PvBeAT+m8QOf9OJn2EFiEi7hDroqtcF1AM95dLahmENI+W0Tls1XA= Received: from DM6PR11CA0011.namprd11.prod.outlook.com (2603:10b6:5:190::24) by BY5PR12MB4116.namprd12.prod.outlook.com (2603:10b6:a03:210::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8422.18; Thu, 13 Feb 2025 16:46:33 +0000 Received: from DS1PEPF0001709C.namprd05.prod.outlook.com (2603:10b6:5:190:cafe::cb) by DM6PR11CA0011.outlook.office365.com (2603:10b6:5:190::24) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8445.13 via Frontend Transport; Thu, 13 Feb 2025 16:46:32 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by DS1PEPF0001709C.mail.protection.outlook.com (10.167.18.106) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8445.10 via Frontend Transport; Thu, 13 Feb 2025 16:46:32 +0000 Received: from [127.0.1.1] (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Thu, 13 Feb 2025 10:46:29 -0600 From: Yazen Ghannam Date: Thu, 13 Feb 2025 16:46:00 +0000 Subject: [PATCH v2 11/16] x86/mce: Move machine_check_poll() status checks to helper functions Precedence: bulk X-Mailing-List: linux-edac@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-ID: <20250213-wip-mca-updates-v2-11-3636547fe05f@amd.com> References: <20250213-wip-mca-updates-v2-0-3636547fe05f@amd.com> In-Reply-To: <20250213-wip-mca-updates-v2-0-3636547fe05f@amd.com> To: , Tony Luck CC: , , , Yazen Ghannam X-Mailer: b4 0.15-dev-e27d6 X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS1PEPF0001709C:EE_|BY5PR12MB4116:EE_ X-MS-Office365-Filtering-Correlation-Id: fc2bc03e-2809-4655-f8d3-08dd4c4df8df X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|36860700013|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?utf-8?q?pBJ0cQnKsHkYuXLPDzlUXARmEsv//lA?= =?utf-8?q?ftzig/zWZxri8XC5TeHJyZLP2lxqL5tlanH7KKYd7oqnAs5QWfPPcCXSByH5D6cae?= =?utf-8?q?FGGL7AlNVS1kEjnQML3afUWRQyCyiu7KE2G7V0NU+yZ7hjbOFHMAaMTOeJnBdN4rt?= =?utf-8?q?L7WOVcQJuxYlKPhcvpgrYjqZcBjoil3O21FWBxjQGfqJirAkLVQG6dY3W/GVpBmz4?= =?utf-8?q?WeSmJuDva5QLvIr71BXgzolVWO2yy8Tk9N0ixo9s4EC+vGrMO4uLuNDPaE4nT1lXm?= =?utf-8?q?pe+NFxjamBVKfD1SbjeC9q8sd9tT4b/XgyGnezUE2EiKDR+wuUVMffGu8jCV1+NNW?= =?utf-8?q?mK9ZIVeFwRbUDNxVZBQSSgG/SSVo/WD9htx6HEj56NVrDEsUsgj+My9OYuV/pMHQP?= =?utf-8?q?EH6xLSyFEeFHHT2V6GEnlsqDs17d/97xV1tKf0P+wG+ryE9mEfa6wR2ki/kmheGrg?= =?utf-8?q?chLxeOex0/KQAkwGV3uxVUMCxSTwRvEInzOu0yAxccyVIY6QbgODmaFfHxSabHhYQ?= =?utf-8?q?1AhJFeMM8vdxLuEnm95/2E/pHMJpk+jJZvR7f7tK/Sk8AulCec9SsTiXrNvX9LbO6?= =?utf-8?q?ilMovDimTu50gD5BxJhXB3jm/DQyXssy8zqD40W2NOct+C+xV3RTH1nxr+QQH85IA?= =?utf-8?q?p58aPCdnK48TC1zzGmpoMsbmSL1uLy8YVBlaCDMiEri1vkiA+fzMfmGxXrOIuQGiQ?= =?utf-8?q?RwAo+51rtmYTrerqTJhIWCjTX27yWBW23uoG3fq/+h9nCFumlQq0zrkx7wuX8peFg?= =?utf-8?q?Y1JecoWCRsv+rsq1U4/Pj65ff+L5bj9PXIjJe5Uo0joyJaqJVOmP6fNKD8gxiDutr?= =?utf-8?q?LXtGJONZiQc5L4+Xnz1cBqMZ6fmzM7dGW8WztwhJrOo6sh/HHPTkhK/Uge9anPSgq?= =?utf-8?q?VpH/VIcRi0rtoBI/gQII1gi8R1kJdpDYVj5qefLusOIhM1gfKTWs1lCAG8AuyN2zO?= =?utf-8?q?MWxyo5pCAValBTztwLAmwo36JGwSru9EJKKIXJneY2kgsFwprln4kIgcaY59Dw0sA?= =?utf-8?q?mB821bUYnpUT4ryt6uDfhkgAF99DLZNmhTbhLPTmoloSWT41g8Ea4PzRXgG7vFQsd?= =?utf-8?q?TzYdoPyWX7qbnrKumXd0Mt/90KWJN3sTnWs1w+463W3iajgs7KjPz/MfqTtBTF0oT?= =?utf-8?q?k8yQbpE6WRwdM2DAAR+huaq+6DhRpfGj3QsWMn4j5/vDez+jTnHSxhgLvhmNVvsNA?= =?utf-8?q?waP5JkR4+2N+UP9Py/BhjDlRzVYTSDkPDtu7ZrE5uCAzbccCojR7i38mHVJ++Nf9B?= =?utf-8?q?R6aeidzwpIRR+64yj5wFLvLyhBA87zIQsriCt0mVjxxeJXSH3G34ozFAdGXDQjvN1?= =?utf-8?q?Tn4hObEGsZnigzjq6HGPYMAaXSaZJAK7gvdTh8Dufbc3hAWnZGxrtEqABKYoTFxtp?= =?utf-8?q?KY0PPqM6gHbM+T+FR4g0L1osI83GwIbLGetkJ0raNCWBSqovjJwh5A=3D?= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(36860700013)(376014)(1800799024);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Feb 2025 16:46:32.6536 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: fc2bc03e-2809-4655-f8d3-08dd4c4df8df X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS1PEPF0001709C.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB4116 There are a number of generic and vendor-specific status checks in machine_check_poll(). These are used to determine if an error should be skipped. Move these into helper functions. Future vendor-specific checks will be added to the helpers. Signed-off-by: Yazen Ghannam --- Notes: Link: https://lore.kernel.org/r/20240523155641.2805411-5-yazen.ghannam@amd.com v1->v2: * Change log_poll_error() to should_log_poll_error(). * Keep code comment. arch/x86/kernel/cpu/mce/core.c | 88 +++++++++++++++++++++++------------------- 1 file changed, 48 insertions(+), 40 deletions(-) diff --git a/arch/x86/kernel/cpu/mce/core.c b/arch/x86/kernel/cpu/mce/core.c index 1ea52f6259a4..372e8b078dd5 100644 --- a/arch/x86/kernel/cpu/mce/core.c +++ b/arch/x86/kernel/cpu/mce/core.c @@ -692,6 +692,52 @@ static noinstr void mce_read_aux(struct mce_hw_err *err, int i) DEFINE_PER_CPU(unsigned, mce_poll_count); +/* + * Newer Intel systems that support software error + * recovery need to make additional checks. Other + * CPUs should skip over uncorrected errors, but log + * everything else. + */ +static bool ser_should_log_poll_error(struct mce *m) +{ + /* Log "not enabled" (speculative) errors */ + if (!(m->status & MCI_STATUS_EN)) + return true; + + /* + * Log UCNA (SDM: 15.6.3 "UCR Error Classification") + * UC == 1 && PCC == 0 && S == 0 + */ + if (!(m->status & MCI_STATUS_PCC) && !(m->status & MCI_STATUS_S)) + return true; + + return false; +} + +static bool should_log_poll_error(enum mcp_flags flags, struct mce_hw_err *err) +{ + struct mce *m = &err->m; + + /* If this entry is not valid, ignore it. */ + if (!(m->status & MCI_STATUS_VAL)) + return false; + + /* + * If we are logging everything (at CPU online) or this + * is a corrected error, then we must log it. + */ + if ((flags & MCP_UC) || !(m->status & MCI_STATUS_UC)) + return true; + + if (mca_cfg.ser) + return ser_should_log_poll_error(m); + + if (m->status & MCI_STATUS_UC) + return false; + + return true; +} + /* * Poll for corrected events or events that happened before reset. * Those are just logged through /dev/mcelog. @@ -743,48 +789,10 @@ void machine_check_poll(enum mcp_flags flags, mce_banks_t *b) if (!mca_cfg.cmci_disabled) mce_track_storm(m); - /* If this entry is not valid, ignore it */ - if (!(m->status & MCI_STATUS_VAL)) + /* Verify that the error should be logged based on hardware conditions. */ + if (!should_log_poll_error(flags, &err)) continue; - /* - * If we are logging everything (at CPU online) or this - * is a corrected error, then we must log it. - */ - if ((flags & MCP_UC) || !(m->status & MCI_STATUS_UC)) - goto log_it; - - /* - * Newer Intel systems that support software error - * recovery need to make additional checks. Other - * CPUs should skip over uncorrected errors, but log - * everything else. - */ - if (!mca_cfg.ser) { - if (m->status & MCI_STATUS_UC) - continue; - goto log_it; - } - - /* Log "not enabled" (speculative) errors */ - if (!(m->status & MCI_STATUS_EN)) - goto log_it; - - /* - * Log UCNA (SDM: 15.6.3 "UCR Error Classification") - * UC == 1 && PCC == 0 && S == 0 - */ - if (!(m->status & MCI_STATUS_PCC) && !(m->status & MCI_STATUS_S)) - goto log_it; - - /* - * Skip anything else. Presumption is that our read of this - * bank is racing with a machine check. Leave the log alone - * for do_machine_check() to deal with it. - */ - continue; - -log_it: mce_read_aux(&err, i); m->severity = mce_severity(m, NULL, NULL, false); /*