From nobody Tue Jun 16 17:01:52 2026 Received: from mail-pg1-f171.google.com (mail-pg1-f171.google.com [209.85.215.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 34A453FE64D for ; Thu, 30 Apr 2026 08:45:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777538748; cv=none; b=G+Y9PiSLGyp2b5NRSuUDQPgD2FiTOdvcGva2GiL3yl++00QNzNQc7MLg9GyY5p768BWc69UHt6TrfOAUqK9W1/JsmeHtnahsAPNxue8EZ79QhPxaerwUHqTuKAWpFBZsfiZW6/+jZum77jlfFs2qGS3WDbi2nmJc7/wj4kGj7nY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777538748; c=relaxed/simple; bh=zNaOZflB6e7Ft0qawBELaCQa5FF6U9GlVXigu47nyZU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=CsQtWGJdZl78VHb0U/QKFffOHpZx/qZZYW8AHHWB/uUzOysZ8eFdxpSD6hWGquaPi4s/choB1OeJ6eW5aDgvD1tNiI+edV+VOe8N2u8I7Xk0sOglrQlkkITTVAyww07YdZVmXf++7m6WWlfAYQ5uzdIWyeX3+ABa1TEIZ4vVvRM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=VbldwNAh; arc=none smtp.client-ip=209.85.215.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="VbldwNAh" Received: by mail-pg1-f171.google.com with SMTP id 41be03b00d2f7-c70f91776fcso251932a12.0 for ; Thu, 30 Apr 2026 01:45:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777538746; x=1778143546; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=3oAnsdCQW1OoUyOR2rZp3Ze+AtzgHFux/tBtnjVyiIM=; b=VbldwNAh9eie+oYXd7bchSx2udfaUM5gNxVPLrW90ZjN+RNY1SoskRjcZJmY+ORZUh byQBsltZe9zCF4PUA9hasbtbOBUDxS04P/dPLTN7uPAnXEH1KBtoP9q9Ea7H5R1shXWK 2H1hDx5fhYXRek9rcSHh80zKNjp0IhVIB+ypY5KR8/zFnxUUIz2ohN6GV/ff2pIJHa+0 TepWg2vekKpnjs92+emuSabSpPsPAaiyCGvYVSd0+q/yo47BADrnEU1dkEvyPGKF/DLC i59bknEW76DWP734/BcLVQyC7dNsFIFpdsoBp74Tt4uSYTgO3NJyoSMAOY9toyNcwkNE 7U5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777538746; x=1778143546; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=3oAnsdCQW1OoUyOR2rZp3Ze+AtzgHFux/tBtnjVyiIM=; b=TwmZKJgaW9hz4SlJmVwAXIxXCk8bnHpNSUvup0Mmxl2uYsQUc5s346xeRAMS788qOz ENT8opgq+7rvweqwZJT+acpWRoY8kYGZ8mlaHsfEaM8K2UEjrNhLn1coUs5S9VUZPTdz c3ckSaAbBF5L9M0nNLAthJLbK/xnaNAbYdZ8F197FVf7LZDK/JmLpgqO2+0bYHrhaaAY gj/SDtn2r783nduDOebpkr+kFEdsC6YEk11xsQCJ+jBJ163+GFEX04qQ4GSQ/xTNGALv 0ZrezuWkk/mSowxPmgoR3epiAgH9zLWn+wjO7Yad7ElT2bnPt2+cn16u8vzgqfbik5oP anWQ== X-Forwarded-Encrypted: i=1; AFNElJ8nRT9bX68DV+jSnk/kyg8Ewhz2as8pzbL48zLeLnBnwy/uIVVsLea0nfm9TxnpAl8sbsdcj6W64esdRhA=@vger.kernel.org X-Gm-Message-State: AOJu0Yy5ruFsI+UI9NXP7mGue7IKNojFFCwlW8xIZD7gRqTSnqQyGgCE TgOU9GIDVbe28ondKM+OFHOrGwOjpq0B3AT3zWMJ8vjXSOhbcp5xjA9u X-Gm-Gg: AeBDiev7GE4/unTlC4wv7WVE57enXYJQ1JoBZnAIJYUUao8RUlgiTApP9HohCqkRIUs m4sZWcMaB67JZKXanZr2lWnQlXZGDgfMkd7f/t8H0Jm3D0qwHY8H4P8x95+MvyJIVosvy+pvQpD lv8kUMEOdT/a1i+2Z6tgUyKWApAMN3k3aOEG0Nmn+G4Lt70KxMHvteos11PrIpPeh0IMS2SI2pW 7UipZnVJzC2Y/BTjjT0rBf65LWd7dWzXPc4DHZwLsNeYhcVtAUVLv4Pm9bBKVMkL9HVHumk4/lb yqFrZ/Q4oTUNRuAnTuRBZ0+JqeP+sX1rq2z6ptz06QDKbd91s/peOme6zB5oUC8ThOUH/Afda9K 4Y0u26k30KqP2hrgor5Lu/DzBFBoMTqqAtrsBDi4jUcwBy0NjSg3kYEJ/PvM5rv3SDQYgfuADj7 c7lmtn3eRbZUVwQj3RS5EK1mWSxtuKFYdcoGqBfXgxEDWVHDZkRJDax7cDKL/o3S+PIbR1MHY= X-Received: by 2002:a05:6a21:99a3:b0:3a0:129a:9748 with SMTP id adf61e73a8af0-3a3cf64411amr2293644637.25.1777538746470; Thu, 30 Apr 2026 01:45:46 -0700 (PDT) Received: from pop-os.. ([103.100.151.4]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c7fd606a079sm4133130a12.12.2026.04.30.01.45.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Apr 2026 01:45:46 -0700 (PDT) From: Tushar Tibude To: mchehab@kernel.org, bp@alien8.de, tony.luck@intel.com, linux-edac@vger.kernel.org, linux-kernel@vger.kernel.org Cc: qiuxu.zhuo@intel.com, Tushar Tibude Subject: [PATCH 1/3] EDAC: i5000: disable error reporting at teardown and refactor helper Date: Thu, 30 Apr 2026 14:12:21 +0530 Message-ID: <20260430084223.9298-2-tushar.tibude1000@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430084223.9298-1-tushar.tibude1000@gmail.com> References: <20260430084223.9298-1-tushar.tibude1000@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" If error reporting is enabled during initialization but initialization fails immediately after, or during normal driver teardown, error reporting is left enabled in the mask register even after exit. Replace i5000_enable_error_reporting() with i5000_set_error_reporting() to combine enabling/disabling. Disable reporting at initialization failure and driver exit, before call to i5000_put_devices() for cleanup. This ensures clean hardware handling by disabling any unused error reporting bits before exiting. Signed-off-by: Tushar Tibude --- drivers/edac/i5000_edac.c | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/drivers/edac/i5000_edac.c b/drivers/edac/i5000_edac.c index 471b8540d..c0faf55f7 100644 --- a/drivers/edac/i5000_edac.c +++ b/drivers/edac/i5000_edac.c @@ -352,6 +352,9 @@ struct i5000_pvt { /* Actual values for this controller */ int maxch; /* Max channels */ int maxdimmperch; /* Max DIMMs per channel */ + + /* Hardware error reporting status */ + bool enabled_error_reporting; }; =20 /* I5000 MCH error information retrieved from Hardware */ @@ -1302,10 +1305,10 @@ static int i5000_init_csrows(struct mem_ctl_info *m= ci) } =20 /* - * i5000_enable_error_reporting - * Turn on the memory reporting features of the hardware + * i5000_set_error_reporting + * Turn on/off the memory reporting features of the hardware */ -static void i5000_enable_error_reporting(struct mem_ctl_info *mci) +static void i5000_set_error_reporting(struct mem_ctl_info *mci, bool enabl= e) { struct i5000_pvt *pvt; u32 fbd_error_mask; @@ -1316,8 +1319,11 @@ static void i5000_enable_error_reporting(struct mem_= ctl_info *mci) pci_read_config_dword(pvt->branchmap_werrors, EMASK_FBD, &fbd_error_mask); =20 - /* Enable with a '0' */ - fbd_error_mask &=3D ~(ENABLE_EMASK_ALL); + /* Enable with 0, disable with 1 */ + if (enable) + fbd_error_mask &=3D ~(ENABLE_EMASK_ALL); + else + fbd_error_mask |=3D ENABLE_EMASK_ALL; =20 pci_write_config_dword(pvt->branchmap_werrors, EMASK_FBD, fbd_error_mask); @@ -1435,17 +1441,19 @@ static int i5000_probe1(struct pci_dev *pdev, int d= ev_idx) if (i5000_init_csrows(mci)) { edac_dbg(0, "MC: Setting mci->edac_cap to EDAC_FLAG_NONE because i5000_i= nit_csrows() returned nonzero value\n"); mci->edac_cap =3D EDAC_FLAG_NONE; /* no csrows found */ + pvt->enabled_error_reporting =3D false; } else { edac_dbg(1, "MC: Enable error reporting now\n"); - i5000_enable_error_reporting(mci); + i5000_set_error_reporting(mci, true); + pvt->enabled_error_reporting =3D true; } =20 /* add this new MC control structure to EDAC's list of MCs */ if (edac_mc_add_mc(mci)) { edac_dbg(0, "MC: failed edac_mc_add_mc()\n"); - /* FIXME: perhaps some code should go here that disables error - * reporting if we just enabled it - */ + /* Disable error reporting if we previously enabled it */ + if (pvt->enabled_error_reporting) + i5000_set_error_reporting(mci, false); goto fail1; } =20 @@ -1503,6 +1511,7 @@ static int i5000_init_one(struct pci_dev *pdev, const= struct pci_device_id *id) static void i5000_remove_one(struct pci_dev *pdev) { struct mem_ctl_info *mci; + struct i5000_pvt *pvt; =20 edac_dbg(0, "\n"); =20 @@ -1512,6 +1521,12 @@ static void i5000_remove_one(struct pci_dev *pdev) if ((mci =3D edac_mc_del_mc(&pdev->dev)) =3D=3D NULL) return; =20 + pvt =3D mci->pvt_info; + + /* Disable error reporting on teardown */ + if (pvt->enabled_error_reporting) + i5000_set_error_reporting(mci, false); + /* retrieve references to resources, and free those resources */ i5000_put_devices(mci); edac_mc_free(mci); --=20 2.43.0 From nobody Tue Jun 16 17:01:52 2026 Received: from mail-pg1-f174.google.com (mail-pg1-f174.google.com [209.85.215.174]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3A4E437F8C4 for ; Thu, 30 Apr 2026 08:45:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777538760; cv=none; b=PNQm0Au0TD8Wd0MFfYJb+A5h/UHJ8nmzYfUP+hsD5GpWB1bqexTudhhR78JbIVXjh939p/l2Zc5zxt+tFY9M7zzLU8jQ9El5VQFgCNxMTNt80pk0lliT+WRgx/3w1+HHAZ7NyOz0tyioVf0yrg0jj4lGb1ZPMBb5Ja+ucdMMo+w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777538760; c=relaxed/simple; bh=Ooim/KmN2nIFhfxh8aMEiGhHhv+ALWQIlikK5bIHVnc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=b7gc9Eox2BJ6wySlikftHF6XA666LTJlW+VU4d7l0a3hUUw+QDcbeVzK/6SXxM0acsV3Z3pskFlGIlV49Y+9LuZpW6c8xgXrfCkZFJJYinkkvTiZKjUl04lhK4SI6Vbko+nKoIoUu4M4hf/gxKiCXTi1/ls0xbU37oyDiw4wZ1o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=XmsLhSg9; arc=none smtp.client-ip=209.85.215.174 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="XmsLhSg9" Received: by mail-pg1-f174.google.com with SMTP id 41be03b00d2f7-c7da372b87eso245794a12.0 for ; Thu, 30 Apr 2026 01:45:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777538758; x=1778143558; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=mutyOT3fXaewYxCKG2QeOjrqfAyJlSp13BZm4O0zTHE=; b=XmsLhSg9nllSgZRvz4lzKX/yI4H6nsMuiZoF/fGK94IgZ8G7Qs5lvXv3QoLAaS6Sts VpZYJ7Aa/fzS7q4F090JdDtWsJOaSdKBME7kTvr4zS/GQvH01V6eVGoNF7JjERfkdH7W +FXuXssAfXOxC6HWIVDhby6SSaVYMhAkZspCrI4i2A75qRSWEGnLtORR21ZKl6jY5JqA mvhQn9poNdzapIX3lPZceE7gS3F694LyTa6RczzJ3BYlzAH2XlWetFC6bMtPH3K5MZSX CO84LNDx51NELpX1te+2CfoGb8BkfZmyWG5rkRxtt6W2E6VHpT30hbTo3Ms+2LcEwEMn cvDw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777538758; x=1778143558; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=mutyOT3fXaewYxCKG2QeOjrqfAyJlSp13BZm4O0zTHE=; b=qsZaZptOUYxQvyvDKzL6bS1UIyU/UB9PtMOFic8a30xoL6szuTLaMT2Tz2aA3wo+nI Ku4aY0wzHxMb+ng1A6AUt6wpKaia4OyuOnB67pomzwE1pTmmimMJj8Zct+CednZgfmpE /T/uVfdovSPKjFFENVJ5Sqo+JvYb3cxtrN0qM4YSNFqru9wG5cDKvVvwMYtZqaVceMgy WnVTzgHhonA+3IKsFjoAO6R+QXE+d0R2tCMT0dBAk4dcRSec5HjqFh/Sqaeyhjtba/iY M9uNLVUcMJtNBFHEVmRVx4sG9LGQKhvsMW9Y6OhRzdpOOO/JKLYOyy730KozH5GlRPx+ VgBw== X-Forwarded-Encrypted: i=1; AFNElJ+gjX7MCFHGRCUI1C/JdM/Q9iabLdieaSmgCnAT4qc+IgQ4aLdGKUWIvI/VGn7NFv9CHtlJU2EBGz2ZNzQ=@vger.kernel.org X-Gm-Message-State: AOJu0YzLQK29JXmy4DJFw8zG23yVyQQ13gXz/LJxeXyX0PPWcm6pnxA8 sfSPzd42+fdYpSAnD348vkol/hrKvO/uJvUszFf2pCVMJZz+n42cjZ1l X-Gm-Gg: AeBDieuB2O+USHfqOOJXNHndzW+1OCRTDc8orSMIVP3/619jMurTBBT7fH7LmIODdAl L+oOoa27XxxqaPPj/mTDA+6QMfg0zSrxZyBQ6HmYsDeEGF9KbUufP0qz8BYECUz0Nx5aZQ5A1Nr fxEttPjIQxGlDwj7HJkZIqe/1ob8iO6fokex2DVBQ+0ITLqw+KyZhhm5OOvLuUdUd3+6SdqYFyb NP2wfd1bhU+lN/8SAxtobTsMqZ9X0V8Ji9+4xB52EBYsphiotbNdqMJbtJVPu2DceOQyqWJ9pnG B+zL8ZCKAEy0FKqTtD7t4PAhYFEZZqJD24Z4BmPexLm53nxb2AU+CXAnkK1JlLS2ZTVVGEvOcG4 peW2cMRzohQMvRDaeWhygYeHfnPoL8TBnPcRZr3akmBCD6OPxuTF4cA1bRA+6tScDZ2vRpCwqV3 hi8ohM7BfdpoeivRKEuCE1FDPMY/KwclaqOG5SETOxYuO9T5XL8DxoBA8KDsnjM7P1y85CeNgXH YMFEESWSg== X-Received: by 2002:a05:6a20:1592:b0:398:79a8:5bf4 with SMTP id adf61e73a8af0-3a3cf7d6566mr2347823637.37.1777538758481; Thu, 30 Apr 2026 01:45:58 -0700 (PDT) Received: from pop-os.. ([103.100.151.4]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c7fd606a079sm4133130a12.12.2026.04.30.01.45.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Apr 2026 01:45:58 -0700 (PDT) From: Tushar Tibude To: mchehab@kernel.org, bp@alien8.de, tony.luck@intel.com, linux-edac@vger.kernel.org, linux-kernel@vger.kernel.org Cc: qiuxu.zhuo@intel.com, Tushar Tibude Subject: [PATCH 2/3] EDAC: i5100: disable error reporting at teardown and create helper Date: Thu, 30 Apr 2026 14:12:22 +0530 Message-ID: <20260430084223.9298-3-tushar.tibude1000@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430084223.9298-1-tushar.tibude1000@gmail.com> References: <20260430084223.9298-1-tushar.tibude1000@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Error reporting is enabled during init but not reverted when init fails. It is also not disabled at normal driver teardown. Create i5100_set_error_reporting() to enable/disable reporting. Move enable reporting write to after initialization success. Disable reporting at driver teardown. Signed-off-by: Tushar Tibude --- drivers/edac/i5100_edac.c | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/drivers/edac/i5100_edac.c b/drivers/edac/i5100_edac.c index d470afe65..d30919ceb 100644 --- a/drivers/edac/i5100_edac.c +++ b/drivers/edac/i5100_edac.c @@ -859,6 +859,21 @@ static void i5100_init_csrows(struct mem_ctl_info *mci) } } =20 +static void i5100_set_error_reporting(struct pci_dev *pdev, bool enable) +{ + u32 dw; + + pci_read_config_dword(pdev, I5100_EMASK_MEM, &dw); + + /* Enable with 0, disable with 1 */ + if (enable) + dw &=3D ~I5100_FERR_NF_MEM_ANY_MASK; + else + dw |=3D I5100_FERR_NF_MEM_ANY_MASK; + + pci_write_config_dword(pdev, I5100_EMASK_MEM, dw); +} + /*************************************************************************= *** * Error injection routines *************************************************************************= ***/ @@ -1004,11 +1019,6 @@ static int i5100_init_one(struct pci_dev *pdev, cons= t struct pci_device_id *id) pci_read_config_dword(pdev, I5100_MS, &dw); ranksperch =3D !!(dw & (1 << 8)) * 2 + 4; =20 - /* enable error reporting... */ - pci_read_config_dword(pdev, I5100_EMASK_MEM, &dw); - dw &=3D ~I5100_FERR_NF_MEM_ANY_MASK; - pci_write_config_dword(pdev, I5100_EMASK_MEM, dw); - /* device 21, func 0, Channel 0 Memory Map, Error Flag/Mask, etc... */ ch0mm =3D pci_get_device_func(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_5100_21, 0); @@ -1125,6 +1135,9 @@ static int i5100_init_one(struct pci_dev *pdev, const= struct pci_device_id *id) =20 i5100_setup_debugfs(mci); =20 + /* Enable error reporting on success */ + i5100_set_error_reporting(pdev, true); + return ret; =20 bail_scrub: @@ -1169,6 +1182,9 @@ static void i5100_remove_one(struct pci_dev *pdev) =20 priv =3D mci->pvt_info; =20 + /* Disable error reporting at teardown */ + i5100_set_error_reporting(pdev, false); + edac_debugfs_remove_recursive(priv->debugfs); =20 priv->scrub_enable =3D 0; --=20 2.43.0 From nobody Tue Jun 16 17:01:52 2026 Received: from mail-pg1-f175.google.com (mail-pg1-f175.google.com [209.85.215.175]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CAC4B3FE667 for ; Thu, 30 Apr 2026 08:46:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777538767; cv=none; b=H1bRRvPj9kEm3J3aAI42RjhKimrKNPCIH0ycpa+G4ysk7nGuTZJ/3lAS+eQOp6t0xR9zXSzg9pRZe81JnDih2wyjqBQlX7mrLy0mz5n/tn/+v01EN8SDcGdltF+LUeZKMo+DetZhMfwP92jD+b4EFdHJC29a2o+cZ2QT/3Qb80I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777538767; c=relaxed/simple; bh=M09yHag7up4F6kPXAiAdNXxj3svLe/ZEuWUuZV0Sj+U=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=JmvkjU5CObQ+2wsUFZMe7VZs9oK4Cve9QbThGY+N68i9loKdydWEbNg1oQd7UT0HXhkLdoQE0E85rsqWG3cj8mbn5jaV0u+ilod2L2/cXNKv4gckL4vnRpOjxLBauxm4DoyW8UILm4Xxng5rtxUGCNUshvZOUt7QUJzx2vAW6Xc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=nyWRZmkY; arc=none smtp.client-ip=209.85.215.175 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="nyWRZmkY" Received: by mail-pg1-f175.google.com with SMTP id 41be03b00d2f7-c7358a7a8d1so372804a12.3 for ; Thu, 30 Apr 2026 01:46:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777538765; x=1778143565; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=CqWhyLhoWLxiaF5WQsCMkEz/2G7cVXnnU/08nqY6P74=; b=nyWRZmkYUpUbqUCT52rzL/qe5+zinO2og9ZtPqMJ1z4XM943sj6Nx/0gSZ4nDc7c2s kE1YQT5W8ySzcNvA+xyYt80Vdu+QHpbhPcLXYn6paFn3pse/ShO2zUGTVmvMIouyq9me 1orAmzRyNTTE+yeVBOqFL0A3Xj6/gwssHmary6nigjTRy0zKm3mTorVQeK7mBjRuD4/B qgx16SdZ72ZXDoeJS8ktV3+RC9cIFADe3l5T/GltbvGZ1H4kNoq8+4wclBYaaX8CUe+X aB6vVAhHipk4Dcur/zZto5eWU1S9UtK6sPwka5nn61yGGqGbrqn6aZAo6wTYzOi7DgqP hBQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777538765; x=1778143565; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=CqWhyLhoWLxiaF5WQsCMkEz/2G7cVXnnU/08nqY6P74=; b=AeX09CoDlwIGxbr4CBF+Ibo7UZrVjqnkuSquJ+qtdaWOV8INEFqiWg09/kHanY1gfT n9Iks4+nje+Q3NWU8krSlQeq1NmUarkNEtimLX+FFF3MhPXzmyMG69Z4P34D1oswxr18 IMzuZ9GmBdWacarPnBBUUPK7aELAyZoRJMKzhSrkx+eiEoWHdeJ3EL18HzQewbL1uFBh R/P9TAmACgfWv+v2VeTHg0Sndk5VD4UbbaR9kHKRFvbpcN3YjieQUgVa7OIeZE/i98b3 BrwQNE/UeKbsypJXhkCNe1z9fZ7Rg+gnVovQNenfSuo5+eXdzHkz6dNjrthgBYMb8Ogy eDSw== X-Forwarded-Encrypted: i=1; AFNElJ93hXkPwaBZk5s4SLZYGKvlwn7cfroTNZcLcfHlSu5ucbGlU7Tfct29QpjWovpNpPrQ8MlVD+22SBs66Tg=@vger.kernel.org X-Gm-Message-State: AOJu0YwtckVGvtaICPWTyJUjOMkLra8rglN73aCaVM739VuozXb4q1Yk m20TY/qNOUsqefq/sqsZV8Km1hvlL26hLHbs6+FaFeeaBd3renwjoI2z X-Gm-Gg: AeBDieuH1qqsAIhYPmrAVYv/iSBzNZLkhQcmnYx7LB4QsTYbzo4y5MI9CqFQH7A0H6l +ikkcjJmddh//uujn070sKECT0WtM8xwqcCtvwht5GLmiK9PeYjUaGxyw+V0tKq4tdgDgFJwBPQ ZQAS1zMaDfEjq3DV9H5YCt+Gb+NxYzI6EGf5BFPFCo79sjkW+GdHHgm1S6TJUliZCom+lFiRwre yq3WfzTRy5byLDGqbJJnuhd3pUTYympAWgV9DirHAzWWtgUxBLJYUT74C6BFStIwrTAa+IFakm3 NkEQPokpXzP2oxa28Lb9MMxrVK8ami7dRzaMLWz+Uey+T2ex0j6swtfJ0aYidM71hMxMW5SulLN Vc4m07zSMbPxdvvTVpeuP+eb5/vY9u/0K+syEuIHR4dx3etrhfmbUvGVywtzADtDp4vN5J4d75P mV1q0IolMFpCcBr3ShCEWWPi2REQ3VHj9xPYhJbfpL/l1tcD3KmYFrlraOXQi1Kqvcf2VuNyg= X-Received: by 2002:a05:6a20:9143:b0:398:77ae:8d8b with SMTP id adf61e73a8af0-3a3cf565b34mr2351455637.10.1777538765020; Thu, 30 Apr 2026 01:46:05 -0700 (PDT) Received: from pop-os.. ([103.100.151.4]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c7fd606a079sm4133130a12.12.2026.04.30.01.46.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Apr 2026 01:46:04 -0700 (PDT) From: Tushar Tibude To: mchehab@kernel.org, bp@alien8.de, tony.luck@intel.com, linux-edac@vger.kernel.org, linux-kernel@vger.kernel.org Cc: qiuxu.zhuo@intel.com, Tushar Tibude Subject: [PATCH 3/3] EDAC: i5400: disable error reporting at teardown and refactor helper Date: Thu, 30 Apr 2026 14:12:23 +0530 Message-ID: <20260430084223.9298-4-tushar.tibude1000@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430084223.9298-1-tushar.tibude1000@gmail.com> References: <20260430084223.9298-1-tushar.tibude1000@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" If error reporting is enabled during initialization but initialization fails immediately after, or during normal driver teardown, error reporting is left enabled in the mask register even after exit. Replace i5400_enable_error_reporting() with i5400_set_error_reporting() to combine enabling/disabling. Disable reporting at initialization failure and driver exit, before call to i5400_put_devices() for cleanup. This ensures clean hardware handling by disabling any unused error reporting bits before exiting. Signed-off-by: Tushar Tibude --- drivers/edac/i5400_edac.c | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/drivers/edac/i5400_edac.c b/drivers/edac/i5400_edac.c index fb49a1d1d..ae4f92989 100644 --- a/drivers/edac/i5400_edac.c +++ b/drivers/edac/i5400_edac.c @@ -353,6 +353,9 @@ struct i5400_pvt { /* Actual values for this controller */ int maxch; /* Max channels */ int maxdimmperch; /* Max DIMMs per channel */ + + /* Hardware error reporting status */ + bool enabled_error_reporting; }; =20 /* I5400 MCH error information retrieved from Hardware */ @@ -1223,10 +1226,10 @@ static int i5400_init_dimms(struct mem_ctl_info *mc= i) } =20 /* - * i5400_enable_error_reporting - * Turn on the memory reporting features of the hardware + * i5400_set_error_reporting + * Turn on/off the memory reporting features of the hardware */ -static void i5400_enable_error_reporting(struct mem_ctl_info *mci) +static void i5400_set_error_reporting(struct mem_ctl_info *mci, bool enabl= e) { struct i5400_pvt *pvt; u32 fbd_error_mask; @@ -1237,8 +1240,11 @@ static void i5400_enable_error_reporting(struct mem_= ctl_info *mci) pci_read_config_dword(pvt->branchmap_werrors, EMASK_FBD, &fbd_error_mask); =20 - /* Enable with a '0' */ - fbd_error_mask &=3D ~(ENABLE_EMASK_ALL); + /* Enable with 0, disable with 1 */ + if (enable) + fbd_error_mask &=3D ~(ENABLE_EMASK_ALL); + else + fbd_error_mask |=3D ENABLE_EMASK_ALL; =20 pci_write_config_dword(pvt->branchmap_werrors, EMASK_FBD, fbd_error_mask); @@ -1319,17 +1325,19 @@ static int i5400_probe1(struct pci_dev *pdev, int d= ev_idx) if (i5400_init_dimms(mci)) { edac_dbg(0, "MC: Setting mci->edac_cap to EDAC_FLAG_NONE because i5400_i= nit_dimms() returned nonzero value\n"); mci->edac_cap =3D EDAC_FLAG_NONE; /* no dimms found */ + pvt->enabled_error_reporting =3D false; } else { edac_dbg(1, "MC: Enable error reporting now\n"); - i5400_enable_error_reporting(mci); + i5400_set_error_reporting(mci, true); + pvt->enabled_error_reporting =3D true; } =20 /* add this new MC control structure to EDAC's list of MCs */ if (edac_mc_add_mc(mci)) { edac_dbg(0, "MC: failed edac_mc_add_mc()\n"); - /* FIXME: perhaps some code should go here that disables error - * reporting if we just enabled it - */ + /* Disable error reporting if we just enabled it */ + if (pvt->enabled_error_reporting) + i5400_set_error_reporting(mci, false); goto fail1; } =20 @@ -1387,6 +1395,7 @@ static int i5400_init_one(struct pci_dev *pdev, const= struct pci_device_id *id) static void i5400_remove_one(struct pci_dev *pdev) { struct mem_ctl_info *mci; + struct i5400_pvt *pvt; =20 edac_dbg(0, "\n"); =20 @@ -1397,6 +1406,12 @@ static void i5400_remove_one(struct pci_dev *pdev) if (!mci) return; =20 + pvt =3D mci->pvt_info; + + /* Disable error reporting on teardown */ + if (pvt->enabled_error_reporting) + i5400_set_error_reporting(mci, false); + /* retrieve references to resources, and free those resources */ i5400_put_devices(mci); =20 --=20 2.43.0