From nobody Fri Dec 19 14:21:16 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 96AA7220F36; Mon, 19 May 2025 21:36:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747690612; cv=none; b=LrX2TkrR8Tn8dqwIR2A7Od5jQwStZ5JQN70rbczz6+ojx5uFKsWQOfw8dFZGyKACSDsTFQ1cGMLucj51TnyksaTRNyhWkF05XQ3cuAMh+Xk5QbFFt5WTvz6j95iOXEXo/r0UndnPEDq22Aha9GvFziBVXuT1NP/EtK6ks1Wb4Os= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747690612; c=relaxed/simple; bh=Rmt2heU6dug23EMo4ln+VZFctJP/Iwk2j1rEAWVVSVs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=cR6DF3KnvZct0UogEuuu+K1xE6WQW7Bj2C3UBzS3LfwtyqTQf75gnjZleazp2qbA/gxoaXqbFJCaIXG4ojFkUDWmJYU5pZ/HP/sWMfJeUn9OIx34dln1Tn3RutRtBPV06cUqVJklcZcZctYiwbyRpnho8VufxKAMAvMH5Gk/IlA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=eo5z15Z2; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="eo5z15Z2" Received: by smtp.kernel.org (Postfix) with ESMTPSA id CC607C4CEE9; Mon, 19 May 2025 21:36:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1747690612; bh=Rmt2heU6dug23EMo4ln+VZFctJP/Iwk2j1rEAWVVSVs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=eo5z15Z2eHGhQkhi/Q7GvMAxBnuxma/8Bjv8ZKt1J52ogJmmgXmpX0WWdutBAyxg5 TxWeKm8AVa1HxJjSYQaUbRXgqBVycXmy44sHLl2wVcInLYKSG37obTq2OHc6jg8i9C oKiifw6tz9MrIxqZ4bcDi0h9s3sp9Zm1QgnizO6vO6+8EdGd3NNjm0HT/IsoC3pE9U A0jNHIuM+KXLpiYPiE0Q/N/t0yYcn8J8opxTCkVepcYorqEGEHohnJevYWveGB0nas I6nWrHT0Nz1cTLMTNE8JczR1fLBCahbn9ca69ug8xYgdpMxmK6X8pMkNKA1wXJ3tmd E3K4NFc4eyMSQ== From: Bjorn Helgaas To: linux-pci@vger.kernel.org Cc: Jon Pan-Doh , Karolina Stolarek , Martin Petersen , Ben Fuller , Drew Walton , Anil Agrawal , Tony Luck , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , Sathyanarayanan Kuppuswamy , Lukas Wunner , Jonathan Cameron , Sargun Dhillon , "Paul E . McKenney" , Mahesh J Salgaonkar , Oliver O'Halloran , Kai-Heng Feng , Keith Busch , Robert Richter , Terry Bowman , Shiju Jose , Dave Jiang , linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, Bjorn Helgaas Subject: [PATCH v6 01/16] PCI/DPC: Initialize aer_err_info before using it Date: Mon, 19 May 2025 16:35:43 -0500 Message-ID: <20250519213603.1257897-2-helgaas@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250519213603.1257897-1-helgaas@kernel.org> References: <20250519213603.1257897-1-helgaas@kernel.org> 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" From: Bjorn Helgaas Previously the struct aer_err_info "info" was allocated on the stack without being initialized, so it contained junk except for the fields we explicitly set later. Initialize "info" at declaration so it starts as all zeroes. Signed-off-by: Bjorn Helgaas Reviewed-by: Kuppuswamy Sathyanarayanan Tested-by: Krzysztof Wilczy=C5=84ski --- drivers/pci/pcie/dpc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/pci/pcie/dpc.c b/drivers/pci/pcie/dpc.c index df42f15c9829..fe7719238456 100644 --- a/drivers/pci/pcie/dpc.c +++ b/drivers/pci/pcie/dpc.c @@ -258,7 +258,7 @@ static int dpc_get_aer_uncorrect_severity(struct pci_de= v *dev, void dpc_process_error(struct pci_dev *pdev) { u16 cap =3D pdev->dpc_cap, status, source, reason, ext_reason; - struct aer_err_info info; + struct aer_err_info info =3D { 0 }; =20 pci_read_config_word(pdev, cap + PCI_EXP_DPC_STATUS, &status); pci_read_config_word(pdev, cap + PCI_EXP_DPC_SOURCE_ID, &source); --=20 2.43.0 From nobody Fri Dec 19 14:21:16 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 4F76F22173A; Mon, 19 May 2025 21:36:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747690614; cv=none; b=g1OPu/3SFWrFxTQD5VS+th2CTwXeiItudVYnr5DMW4sXSG67uAN/wVYOavs8MLzir0xJ3kABAPjqWTrlttRpeX5TOyvn0t47JyOnLah/eGeyAjj5CDSQC1P6dKZ/eGvwR0As+9OH1jnNGmRKBpxz5ap67g0tj9cn2t8xnzVEOvc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747690614; c=relaxed/simple; bh=+bqxRBjhgwSoTFiDYStp5ueMmN82QsImzLSTRRiEMWc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=tw6mg0LuXu9Fp3CAhARuU6N5E7+W1WuIpyCbv7FHfoA730RtGrnFtOiLaODeOecr1O4hYx0F9eTYJfkSWA+lqjIntrhkrr3imJ919aiT5J4OIgNC/L9HmkhrUNakP1WuB0FSVqkf64TiuSH21ow8SJ0h5IZ5+j9ErABse1mpTUg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=bDLiRZen; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="bDLiRZen" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9287BC4CEEB; Mon, 19 May 2025 21:36:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1747690613; bh=+bqxRBjhgwSoTFiDYStp5ueMmN82QsImzLSTRRiEMWc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=bDLiRZenfvqKwifJYzTamJzuhJ1agNDwCXkYwMZEMv2Srorta8c1cGqCf0yxstMFW X/TWtWIbwXunZP7Pj3foV7nPc5bOv90eWWp4RczOrIFyjVpd99A3aHh7LN5rxF4Oo+ eD+/GRgmt81Pw4Bs2c26xYu7/4lSa3a9ZWwsux/sUfl8rQYmAqdLmG/DUm9gydcDSG I3qBsBg5xSIfPQhAOimqMY4/Dg+Wmmxlg62iPYSY3R4C3nCSQSgvvcYZD7lLQV4WV2 VMVZ7m3TdA98NXehGK1m6mke9uxfmGe9mrcSOd22y4Ytwy1s8+F8z9Z5NM2n604iq5 y59RovsT1PPGg== From: Bjorn Helgaas To: linux-pci@vger.kernel.org Cc: Jon Pan-Doh , Karolina Stolarek , Martin Petersen , Ben Fuller , Drew Walton , Anil Agrawal , Tony Luck , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , Sathyanarayanan Kuppuswamy , Lukas Wunner , Jonathan Cameron , Sargun Dhillon , "Paul E . McKenney" , Mahesh J Salgaonkar , Oliver O'Halloran , Kai-Heng Feng , Keith Busch , Robert Richter , Terry Bowman , Shiju Jose , Dave Jiang , linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, Bjorn Helgaas Subject: [PATCH v6 02/16] PCI/DPC: Log Error Source ID only when valid Date: Mon, 19 May 2025 16:35:44 -0500 Message-ID: <20250519213603.1257897-3-helgaas@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250519213603.1257897-1-helgaas@kernel.org> References: <20250519213603.1257897-1-helgaas@kernel.org> 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" From: Bjorn Helgaas DPC Error Source ID is only valid when the DPC Trigger Reason indicates that DPC was triggered due to reception of an ERR_NONFATAL or ERR_FATAL Message (PCIe r6.0, sec 7.9.14.5). When DPC was triggered by ERR_NONFATAL (PCI_EXP_DPC_STATUS_TRIGGER_RSN_NFE) or ERR_FATAL (PCI_EXP_DPC_STATUS_TRIGGER_RSN_FE) from a downstream device, log the Error Source ID (decoded into domain/bus/device/function). Don't print the source otherwise, since it's not valid. For DPC trigger due to reception of ERR_NONFATAL or ERR_FATAL, the dmesg logging changes: - pci 0000:00:01.0: DPC: containment event, status:0x000d source:0x0200 - pci 0000:00:01.0: DPC: ERR_FATAL detected + pci 0000:00:01.0: DPC: containment event, status:0x000d, ERR_FATAL rece= ived from 0000:02:00.0 and when DPC triggered for other reasons, where DPC Error Source ID is undefined, e.g., unmasked uncorrectable error: - pci 0000:00:01.0: DPC: containment event, status:0x0009 source:0x0200 - pci 0000:00:01.0: DPC: unmasked uncorrectable error detected + pci 0000:00:01.0: DPC: containment event, status:0x0009: unmasked uncor= rectable error detected Previously the "containment event" message was at KERN_INFO and the "%s detected" message was at KERN_WARNING. Now the single message is at KERN_WARNING. Signed-off-by: Bjorn Helgaas Reviewed-by: Kuppuswamy Sathyanarayanan Tested-by: Krzysztof Wilczy=C5=84ski --- drivers/pci/pcie/dpc.c | 45 ++++++++++++++++++++++++++---------------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/drivers/pci/pcie/dpc.c b/drivers/pci/pcie/dpc.c index fe7719238456..315bf2bfd570 100644 --- a/drivers/pci/pcie/dpc.c +++ b/drivers/pci/pcie/dpc.c @@ -261,25 +261,36 @@ void dpc_process_error(struct pci_dev *pdev) struct aer_err_info info =3D { 0 }; =20 pci_read_config_word(pdev, cap + PCI_EXP_DPC_STATUS, &status); - pci_read_config_word(pdev, cap + PCI_EXP_DPC_SOURCE_ID, &source); - - pci_info(pdev, "containment event, status:%#06x source:%#06x\n", - status, source); =20 reason =3D status & PCI_EXP_DPC_STATUS_TRIGGER_RSN; - ext_reason =3D status & PCI_EXP_DPC_STATUS_TRIGGER_RSN_EXT; - pci_warn(pdev, "%s detected\n", - (reason =3D=3D PCI_EXP_DPC_STATUS_TRIGGER_RSN_UNCOR) ? - "unmasked uncorrectable error" : - (reason =3D=3D PCI_EXP_DPC_STATUS_TRIGGER_RSN_NFE) ? - "ERR_NONFATAL" : - (reason =3D=3D PCI_EXP_DPC_STATUS_TRIGGER_RSN_FE) ? - "ERR_FATAL" : - (ext_reason =3D=3D PCI_EXP_DPC_STATUS_TRIGGER_RSN_RP_PIO) ? - "RP PIO error" : - (ext_reason =3D=3D PCI_EXP_DPC_STATUS_TRIGGER_RSN_SW_TRIGGER) ? - "software trigger" : - "reserved error"); + + switch (reason) { + case PCI_EXP_DPC_STATUS_TRIGGER_RSN_UNCOR: + pci_warn(pdev, "containment event, status:%#06x: unmasked uncorrectable = error detected\n", + status); + break; + case PCI_EXP_DPC_STATUS_TRIGGER_RSN_NFE: + case PCI_EXP_DPC_STATUS_TRIGGER_RSN_FE: + pci_read_config_word(pdev, cap + PCI_EXP_DPC_SOURCE_ID, + &source); + pci_warn(pdev, "containment event, status:%#06x, %s received from %04x:%= 02x:%02x.%d\n", + status, + (reason =3D=3D PCI_EXP_DPC_STATUS_TRIGGER_RSN_FE) ? + "ERR_FATAL" : "ERR_NONFATAL", + pci_domain_nr(pdev->bus), PCI_BUS_NUM(source), + PCI_SLOT(source), PCI_FUNC(source)); + return; + case PCI_EXP_DPC_STATUS_TRIGGER_RSN_IN_EXT: + ext_reason =3D status & PCI_EXP_DPC_STATUS_TRIGGER_RSN_EXT; + pci_warn(pdev, "containment event, status:%#06x: %s detected\n", + status, + (ext_reason =3D=3D PCI_EXP_DPC_STATUS_TRIGGER_RSN_RP_PIO) ? + "RP PIO error" : + (ext_reason =3D=3D PCI_EXP_DPC_STATUS_TRIGGER_RSN_SW_TRIGGER) ? + "software trigger" : + "reserved error"); + break; + } =20 /* show RP PIO error detail information */ if (pdev->dpc_rp_extensions && --=20 2.43.0 From nobody Fri Dec 19 14:21:16 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 07E73221DB1; Mon, 19 May 2025 21:36:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747690616; cv=none; b=LFxVVaAmJw6AteQAXACGufhS9SKm51+I0tKr0qVH2l4FXYvsnIVHGPMseB+Vl85RKRBsRa8OiuHfUi02Zu/c4v8+evmlKPm0gG+79Y6fyKDx/KP9vT8Y1ZzmibY+fzFLSmn7HdjXdkusne6lSoZvRsxWe0rLeGTgF33S9F9y3Tk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747690616; c=relaxed/simple; bh=caXZ1WGEnf9oWC5EzQaaFcADISQqBUgQ3akXbu0NKUM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=iUoRCAuRXsMwK1U3XqoBTQE5jwPogIzoNvwRAp5W+ZsOzOkp9aLemIw1UuRlQN8R9V+usy7lf/jw4kMNMxOIMiIfe5nbJfvtPUpmVymBHL80gudoTciin4BzQvSIxPOJ01oPEUxT32F7CV6trv9HSfzQf28or0Taon4VUeS1EWg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=R1bwFFIu; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="R1bwFFIu" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 443CAC4CEE9; Mon, 19 May 2025 21:36:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1747690615; bh=caXZ1WGEnf9oWC5EzQaaFcADISQqBUgQ3akXbu0NKUM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=R1bwFFIuLBwn5HIOUVuCokpM2sEveKn2NklZUFgfQ7lD/iNGSPcoRPewAynMtBUCG h/gb+5z4+AiMoNEGS1rcvxwxio/DIRI/nuTk5D0SW/0N48+kwEGdkcFa+KHPRogRbr jGCfJDg48RyHiT3mgC818ltUZ1GeSJ7e32nx4RmFPfdSFEzxgnUv0DaNCtWTdGJnoU 5iU2Lm1K8znsMmiG/0VdPN3T84yVZXAen8gdlVe69On8qDmCdmW1gflcrvheAkm8KV uAEQGhUPGll4/QyfQ4sVz1eDw3CSRTjfA/q/SZvlwx4RCXa2ikLUvOb7BeUQEeYMD0 zygUgypXYL3bQ== From: Bjorn Helgaas To: linux-pci@vger.kernel.org Cc: Jon Pan-Doh , Karolina Stolarek , Martin Petersen , Ben Fuller , Drew Walton , Anil Agrawal , Tony Luck , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , Sathyanarayanan Kuppuswamy , Lukas Wunner , Jonathan Cameron , Sargun Dhillon , "Paul E . McKenney" , Mahesh J Salgaonkar , Oliver O'Halloran , Kai-Heng Feng , Keith Busch , Robert Richter , Terry Bowman , Shiju Jose , Dave Jiang , linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, Bjorn Helgaas Subject: [PATCH v6 03/16] PCI/AER: Consolidate Error Source ID logging in aer_print_port_info() Date: Mon, 19 May 2025 16:35:45 -0500 Message-ID: <20250519213603.1257897-4-helgaas@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250519213603.1257897-1-helgaas@kernel.org> References: <20250519213603.1257897-1-helgaas@kernel.org> 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" From: Bjorn Helgaas Previously we decoded the AER Error Source ID in two places. Consolidate them so both places use aer_print_port_info(). Add a "details" parameter so we can add a note when we didn't find any downstream devices with errors logged in their AER Capability. When we didn't read any error details from the source device, we logged two messages: one in aer_isr_one_error() and another in find_source_device(). Since they both contain the same information, only log the first one when when find_source_device() has found error details. This changes the dmesg logging when we found no devices with errors logged: - pci 0000:00:01.0: AER: Correctable error message received from 0000:02:= 00.0 - pci 0000:00:01.0: AER: found no error details for 0000:02:00.0 + pci 0000:00:01.0: AER: Correctable error message received from 0000:02:= 00.0 (no details found) Signed-off-by: Bjorn Helgaas Reviewed-by: Ilpo J=C3=A4rvinen Tested-by: Krzysztof Wilczy=C5=84ski --- drivers/pci/pcie/aer.c | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/drivers/pci/pcie/aer.c b/drivers/pci/pcie/aer.c index a1cf8c7ef628..b8494ccd935b 100644 --- a/drivers/pci/pcie/aer.c +++ b/drivers/pci/pcie/aer.c @@ -733,16 +733,17 @@ void aer_print_error(struct pci_dev *dev, struct aer_= err_info *info) info->severity, info->tlp_header_valid, &info->tlp); } =20 -static void aer_print_port_info(struct pci_dev *dev, struct aer_err_info *= info) +static void aer_print_port_info(struct pci_dev *dev, struct aer_err_info *= info, + const char *details) { u8 bus =3D info->id >> 8; u8 devfn =3D info->id & 0xff; =20 - pci_info(dev, "%s%s error message received from %04x:%02x:%02x.%d\n", + pci_info(dev, "%s%s error message received from %04x:%02x:%02x.%d%s\n", info->multi_error_valid ? "Multiple " : "", aer_error_severity_string[info->severity], pci_domain_nr(dev->bus), bus, PCI_SLOT(devfn), - PCI_FUNC(devfn)); + PCI_FUNC(devfn), details); } =20 #ifdef CONFIG_ACPI_APEI_PCIEAER @@ -926,13 +927,13 @@ static bool find_source_device(struct pci_dev *parent, else pci_walk_bus(parent->subordinate, find_device_iter, e_info); =20 + /* + * If we didn't find any devices with errors logged in the AER + * Capability, just print the Error Source ID from the Root Port or + * RCEC that received an ERR_* Message. + */ if (!e_info->error_dev_num) { - u8 bus =3D e_info->id >> 8; - u8 devfn =3D e_info->id & 0xff; - - pci_info(parent, "found no error details for %04x:%02x:%02x.%d\n", - pci_domain_nr(parent->bus), bus, PCI_SLOT(devfn), - PCI_FUNC(devfn)); + aer_print_port_info(parent, e_info, " (no details found)"); return false; } return true; @@ -1297,10 +1298,11 @@ static void aer_isr_one_error(struct aer_rpc *rpc, e_info.multi_error_valid =3D 1; else e_info.multi_error_valid =3D 0; - aer_print_port_info(pdev, &e_info); =20 - if (find_source_device(pdev, &e_info)) + if (find_source_device(pdev, &e_info)) { + aer_print_port_info(pdev, &e_info, ""); aer_process_err_devices(&e_info); + } } =20 if (e_src->status & PCI_ERR_ROOT_UNCOR_RCV) { @@ -1316,10 +1318,10 @@ static void aer_isr_one_error(struct aer_rpc *rpc, else e_info.multi_error_valid =3D 0; =20 - aer_print_port_info(pdev, &e_info); - - if (find_source_device(pdev, &e_info)) + if (find_source_device(pdev, &e_info)) { + aer_print_port_info(pdev, &e_info, ""); aer_process_err_devices(&e_info); + } } } =20 --=20 2.43.0 From nobody Fri Dec 19 14:21:16 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 2FE0E221D9E; Mon, 19 May 2025 21:36:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747690617; cv=none; b=BQo5w/jnWO8QQVVCGeuTK4UswiuCYvLxtT6uiWVaPSL1LqHh07qtFrrJMb0p/sT6MiONns+kfmL37ZQwp03I9hS+6tazkLj4Nx8fUafApZsWgD35s/0eWe0gE0ub2rkllTVyY+Up4SmsoEtqVj9FIt2TI0y+RL2TnGB/7guikUY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747690617; c=relaxed/simple; bh=DulaQY6ernJiaxTu28SIKrpHEXWBgTCvlzTG5LfrQA8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=aQk7ukRZGtvvXiUmfvkoWHpUC/X13HcwUj/z7DgEPoYOk+EnP/4TjdHTqR9YEIXmvhMyGuSb+6jCJb+W+tWXQ+VOqGRO7DfSdeqQdZSPZVUpEpkgsLkH1ViWHJKOAk0Ovvu4X6tL/BUi/RAeZ67viN5j1vtmvBYa2iNXD78QYzs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=fTnNXU7m; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="fTnNXU7m" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D89EDC4CEE9; Mon, 19 May 2025 21:36:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1747690617; bh=DulaQY6ernJiaxTu28SIKrpHEXWBgTCvlzTG5LfrQA8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=fTnNXU7mDGJfOvaHgjsFPzu8rMdbjnqqbs3rxFyPOEwKP0a0NVn/WQGfFoLpoaFuX mhxT3R0NBa56lgjvAbcvsq//vRcK6G9graqeXgjuYxFSWBvxXudsIsAqJWIQu8IX+X 6oHceZioe/o6WKpQfxeAABaqf/SLA/Al66RL3xIcdqt8upxheGG4LcqQ3pCWLXQVbu dSsrmd9PfaK9Qx/7IcxZS92u1EJs4xIdqWRel3KzpneHQ1fJyE0SfeVMqR0pZ0ueNO nCFCW+aAdEVa4LALIq++CLJ5VpXwggu9t01J7hh/xGVRMNgBbcFTsBybWXNs2NveUR +p3/Y77CJOL8w== From: Bjorn Helgaas To: linux-pci@vger.kernel.org Cc: Jon Pan-Doh , Karolina Stolarek , Martin Petersen , Ben Fuller , Drew Walton , Anil Agrawal , Tony Luck , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , Sathyanarayanan Kuppuswamy , Lukas Wunner , Jonathan Cameron , Sargun Dhillon , "Paul E . McKenney" , Mahesh J Salgaonkar , Oliver O'Halloran , Kai-Heng Feng , Keith Busch , Robert Richter , Terry Bowman , Shiju Jose , Dave Jiang , linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, Bjorn Helgaas Subject: [PATCH v6 04/16] PCI/AER: Extract bus/dev/fn in aer_print_port_info() with PCI_BUS_NUM(), etc Date: Mon, 19 May 2025 16:35:46 -0500 Message-ID: <20250519213603.1257897-5-helgaas@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250519213603.1257897-1-helgaas@kernel.org> References: <20250519213603.1257897-1-helgaas@kernel.org> 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" From: Bjorn Helgaas Use PCI_BUS_NUM(), PCI_SLOT(), PCI_FUNC() to extract the bus number, device, and function number directly from the Error Source ID. There's no need to shift and mask it explicitly. Signed-off-by: Bjorn Helgaas Reviewed-by: Ilpo J=C3=A4rvinen Reviewed-by: Kuppuswamy Sathyanarayanan Tested-by: Krzysztof Wilczy=C5=84ski --- drivers/pci/pcie/aer.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/pci/pcie/aer.c b/drivers/pci/pcie/aer.c index b8494ccd935b..dc8a50e0a2b7 100644 --- a/drivers/pci/pcie/aer.c +++ b/drivers/pci/pcie/aer.c @@ -736,14 +736,13 @@ void aer_print_error(struct pci_dev *dev, struct aer_= err_info *info) static void aer_print_port_info(struct pci_dev *dev, struct aer_err_info *= info, const char *details) { - u8 bus =3D info->id >> 8; - u8 devfn =3D info->id & 0xff; + u16 source =3D info->id; =20 pci_info(dev, "%s%s error message received from %04x:%02x:%02x.%d%s\n", info->multi_error_valid ? "Multiple " : "", aer_error_severity_string[info->severity], - pci_domain_nr(dev->bus), bus, PCI_SLOT(devfn), - PCI_FUNC(devfn), details); + pci_domain_nr(dev->bus), PCI_BUS_NUM(source), + PCI_SLOT(source), PCI_FUNC(source), details); } =20 #ifdef CONFIG_ACPI_APEI_PCIEAER --=20 2.43.0 From nobody Fri Dec 19 14:21:16 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 2185C221FD7; Mon, 19 May 2025 21:36:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747690619; cv=none; b=ZxV9Wu5Ii97Z9fHGcP6BKkfZ3dpKx0Tmqs4rELivn68jNnijnvVKYgc3cYFYJ8V9wF+EdsQ9wu7B8sY21CPqPCyOaM2smrvLgCrPEBQ/gWu9O02sy358Nv+mUSXwegmDkFPlKl0tZrfxsOQf8KKQegyebkKq6xcREH9pMXqrmgo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747690619; c=relaxed/simple; bh=A1yGfiEGjU/jCFLLlMoihWTgBNPiIjwSNSe9WDii04I=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=OVLH4/edKtUJr5oXx3uR6ws8wmhMYwGJhJ+jGRYFdR/ksx6bS7KVTkddHj4FSNuPVZxiFzf2OD4bRYSeBgwUn9vXOgXUr6sHIj+elncE7xxgC5VKmWHXv18hIBZTs+zSx3f4WiLws0UjmivvHiig2cWc6pFE64wc2VvFuMyfhe8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=e0u+lzw8; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="e0u+lzw8" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6D435C4CEE9; Mon, 19 May 2025 21:36:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1747690618; bh=A1yGfiEGjU/jCFLLlMoihWTgBNPiIjwSNSe9WDii04I=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=e0u+lzw8mDvA9gp+eW5zaUTMK0Yi1JFv7zXkVhXfkvjhywdPzm3i6FkxnY/W5BMhf o9js162JL5kbYNpLaZ2Z4NpqGKhJGWDLa4Mk26f0Zd7JGJrz+ttfR2UP7q+z1zvs86 3mskUEo8sBxYpq0Tli0DkBX6WDmGDRwpMGkBE7y62gkAzroOgWt4FmhTC7iV8mvpL0 zSHTVwK/lC3UnYDlIqFtfbaymQcBWk4CkQrm3he+H3bnRisxkBZ+ue5iW0Kj5XXvlR kGLvwaULc7n4egAQd9sxJ5ejSLW3czHNk71051pve/VlFo6Gulg7eFYyE7kyrSm18F R7bHyL54YolvA== From: Bjorn Helgaas To: linux-pci@vger.kernel.org Cc: Jon Pan-Doh , Karolina Stolarek , Martin Petersen , Ben Fuller , Drew Walton , Anil Agrawal , Tony Luck , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , Sathyanarayanan Kuppuswamy , Lukas Wunner , Jonathan Cameron , Sargun Dhillon , "Paul E . McKenney" , Mahesh J Salgaonkar , Oliver O'Halloran , Kai-Heng Feng , Keith Busch , Robert Richter , Terry Bowman , Shiju Jose , Dave Jiang , linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, Bjorn Helgaas Subject: [PATCH v6 05/16] PCI/AER: Rename aer_print_port_info() to aer_print_source() Date: Mon, 19 May 2025 16:35:47 -0500 Message-ID: <20250519213603.1257897-6-helgaas@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250519213603.1257897-1-helgaas@kernel.org> References: <20250519213603.1257897-1-helgaas@kernel.org> 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" From: Jon Pan-Doh Rename aer_print_port_info() to aer_print_source() to be more descriptive. This logs the Error Source ID logged by a Root Port or Root Complex Event Collector when it receives an ERR_COR, ERR_NONFATAL, or ERR_FATAL Message. [bhelgaas: aer_print_rp_info() -> aer_print_source()] Link: https://lore.kernel.org/r/20250321015806.954866-5-pandoh@google.com Signed-off-by: Jon Pan-Doh Signed-off-by: Bjorn Helgaas Reviewed-by: Ilpo J=C3=A4rvinen Reviewed-by: Kuppuswamy Sathyanarayanan Tested-by: Krzysztof Wilczy=C5=84ski --- drivers/pci/pcie/aer.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/pci/pcie/aer.c b/drivers/pci/pcie/aer.c index dc8a50e0a2b7..eb42d50b2def 100644 --- a/drivers/pci/pcie/aer.c +++ b/drivers/pci/pcie/aer.c @@ -733,8 +733,8 @@ void aer_print_error(struct pci_dev *dev, struct aer_er= r_info *info) info->severity, info->tlp_header_valid, &info->tlp); } =20 -static void aer_print_port_info(struct pci_dev *dev, struct aer_err_info *= info, - const char *details) +static void aer_print_source(struct pci_dev *dev, struct aer_err_info *inf= o, + const char *details) { u16 source =3D info->id; =20 @@ -932,7 +932,7 @@ static bool find_source_device(struct pci_dev *parent, * RCEC that received an ERR_* Message. */ if (!e_info->error_dev_num) { - aer_print_port_info(parent, e_info, " (no details found)"); + aer_print_source(parent, e_info, " (no details found)"); return false; } return true; @@ -1299,7 +1299,7 @@ static void aer_isr_one_error(struct aer_rpc *rpc, e_info.multi_error_valid =3D 0; =20 if (find_source_device(pdev, &e_info)) { - aer_print_port_info(pdev, &e_info, ""); + aer_print_source(pdev, &e_info, ""); aer_process_err_devices(&e_info); } } @@ -1318,7 +1318,7 @@ static void aer_isr_one_error(struct aer_rpc *rpc, e_info.multi_error_valid =3D 0; =20 if (find_source_device(pdev, &e_info)) { - aer_print_port_info(pdev, &e_info, ""); + aer_print_source(pdev, &e_info, ""); aer_process_err_devices(&e_info); } } --=20 2.43.0 From nobody Fri Dec 19 14:21:16 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 52ED3221D9E; Mon, 19 May 2025 21:37:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747690620; cv=none; b=Ue2WLykSp45dZe2iK8AMFKanylaMPZnySZFT+HuiHN2NzgWH9J5vo4PWUhPpXP45Zazf7RgCHVByQWiITBKPmz1tt9XrR9gHbRuh3FfETWuxAoQZso0DDrReVY0nqrNJ39M13nmuTAMNhUZtENtewhBVL5xFp+rRqwmBJnAvWQc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747690620; c=relaxed/simple; bh=TvyG8I4ePW9JSyZ32FkDAV75N1u5mKKeii8+CFDAmM8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Opp5hc0bfhTfXcdkSq05k6hGZfBuL/bXjCL3Y9XPypbdHp6GUcqO+2fYdpuI/XmB5bYYf3rycg6RortdCXSHHwHP2u5z94AZUsUZISq1ccseV9TCm3pmyaoQ8z+24u0UPLFiw0yCsk9UOZubMNYze/7uYT1LBtpAf0gvGj9thXk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=BRYz141r; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="BRYz141r" Received: by smtp.kernel.org (Postfix) with ESMTPSA id F22E1C4CEE9; Mon, 19 May 2025 21:36:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1747690620; bh=TvyG8I4ePW9JSyZ32FkDAV75N1u5mKKeii8+CFDAmM8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=BRYz141rcAmN3WnJ1iiASwcwkipbTGnqlUFiu0+OteHSQtfwWqorpAy9NdMdyxMu+ zM/I+hwR/vSjp1/t0mPFWecVrukY4qFmwHLFVImobHKKpogPT0eOlSvHno5FNtteJi sNdmlIHpk5BDl+BtaLXTolIsyFbyT8ErsEvonrQglO7FQ1JTZ9cx8WImHvro0R93e6 v7JnAy+n7R6El4ZzGydO1Gh+OAAtkRBlPzyoqshRRNs16AgpRZjea/kVyvwq8ZSssQ Dy+Y3Jk0Rf6lp3Q2QWsf4fEPoo5sxMpteiyLAIQE0JqTpWnkuv0929L2+mZIO4SlSm saTJunZO1nb/w== From: Bjorn Helgaas To: linux-pci@vger.kernel.org Cc: Jon Pan-Doh , Karolina Stolarek , Martin Petersen , Ben Fuller , Drew Walton , Anil Agrawal , Tony Luck , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , Sathyanarayanan Kuppuswamy , Lukas Wunner , Jonathan Cameron , Sargun Dhillon , "Paul E . McKenney" , Mahesh J Salgaonkar , Oliver O'Halloran , Kai-Heng Feng , Keith Busch , Robert Richter , Terry Bowman , Shiju Jose , Dave Jiang , linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, Bjorn Helgaas Subject: [PATCH v6 06/16] PCI/AER: Move aer_print_source() earlier in file Date: Mon, 19 May 2025 16:35:48 -0500 Message-ID: <20250519213603.1257897-7-helgaas@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250519213603.1257897-1-helgaas@kernel.org> References: <20250519213603.1257897-1-helgaas@kernel.org> 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" From: Bjorn Helgaas Move aer_print_source() earlier in the file so a future change can use it from aer_print_error(), where it's easier to rate limit it. Signed-off-by: Bjorn Helgaas Reviewed-by: Ilpo J=C3=A4rvinen Reviewed-by: Kuppuswamy Sathyanarayanan Tested-by: Krzysztof Wilczy=C5=84ski --- drivers/pci/pcie/aer.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/drivers/pci/pcie/aer.c b/drivers/pci/pcie/aer.c index eb42d50b2def..95a4cab1d517 100644 --- a/drivers/pci/pcie/aer.c +++ b/drivers/pci/pcie/aer.c @@ -696,6 +696,18 @@ static void __aer_print_error(struct pci_dev *dev, pci_dev_aer_stats_incr(dev, info); } =20 +static void aer_print_source(struct pci_dev *dev, struct aer_err_info *inf= o, + const char *details) +{ + u16 source =3D info->id; + + pci_info(dev, "%s%s error message received from %04x:%02x:%02x.%d%s\n", + info->multi_error_valid ? "Multiple " : "", + aer_error_severity_string[info->severity], + pci_domain_nr(dev->bus), PCI_BUS_NUM(source), + PCI_SLOT(source), PCI_FUNC(source), details); +} + void aer_print_error(struct pci_dev *dev, struct aer_err_info *info) { int layer, agent; @@ -733,18 +745,6 @@ void aer_print_error(struct pci_dev *dev, struct aer_e= rr_info *info) info->severity, info->tlp_header_valid, &info->tlp); } =20 -static void aer_print_source(struct pci_dev *dev, struct aer_err_info *inf= o, - const char *details) -{ - u16 source =3D info->id; - - pci_info(dev, "%s%s error message received from %04x:%02x:%02x.%d%s\n", - info->multi_error_valid ? "Multiple " : "", - aer_error_severity_string[info->severity], - pci_domain_nr(dev->bus), PCI_BUS_NUM(source), - PCI_SLOT(source), PCI_FUNC(source), details); -} - #ifdef CONFIG_ACPI_APEI_PCIEAER int cper_severity_to_aer(int cper_severity) { --=20 2.43.0 From nobody Fri Dec 19 14:21:16 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 E5CBB222598; Mon, 19 May 2025 21:37:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747690622; cv=none; b=uBg2bVbZixgA+FP7fgPyxZAQT5MXiYq2preYMxotLVIHny5U+1G4BfeIq5ELUJgN+avxG7IHY3ReDPUAu7scqMJMXz7V5Jxs397uLn2vipmxGNxIMiBSxZNPZO74jQSUxMdJWTmkLJEp1h7s313T5qpkgy6o0bhwGhISF+1QzSw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747690622; c=relaxed/simple; bh=gCT9zdwjoP3FNraWNBiZ8smNlAkNybhV2cLRnGajjKs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=LtRvooNzkZeQ7bChHpIWXKT7KDgEBqF9RQBXZu6Kb6AzhzbQFwQCQVwC2xliugrKutAjCMXtfIoSDm5amr7WGY7OTup0L01Qpu+azHNAbsxnwpBZKzMBLLaxJWmnGKRUWcE6q0Mk9I4x+pzSZl8JuxpgTN7vzDxj51XgMvEzhg4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=OrPiLiDm; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="OrPiLiDm" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9314CC4CEE4; Mon, 19 May 2025 21:37:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1747690621; bh=gCT9zdwjoP3FNraWNBiZ8smNlAkNybhV2cLRnGajjKs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=OrPiLiDmpSu1WJ9nom0wJOy2FCbHU+YnPGTo/5Xn6QMvGmqMH8IfwtPy5yvmyNVEd R2sM5OyxvvFe/Tz5dljMdsncNBsacd4eve4DtjhvqOxObvbe6v1+w+2uBC2aNhYknY AqgX5PLViSDcmjXnohR9JM7/CWiFGkyEmtr8xZgGfvnd/P8JdZ5F6RGGMkEZfq5qrV ageQzsUsWVRZPMzrux9eMn6Wyl24eHibuYpvNOTzST9Y0U4EQar52V35DI8Y+CH/Uz boXmkSdE1ntQmUs+cVICZ98h/5zuHrkFPcQyedXSevJR8P65fVOiYgvpSWD1RnxTXk mkaTa3l2mKbnA== From: Bjorn Helgaas To: linux-pci@vger.kernel.org Cc: Jon Pan-Doh , Karolina Stolarek , Martin Petersen , Ben Fuller , Drew Walton , Anil Agrawal , Tony Luck , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , Sathyanarayanan Kuppuswamy , Lukas Wunner , Jonathan Cameron , Sargun Dhillon , "Paul E . McKenney" , Mahesh J Salgaonkar , Oliver O'Halloran , Kai-Heng Feng , Keith Busch , Robert Richter , Terry Bowman , Shiju Jose , Dave Jiang , linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, Bjorn Helgaas Subject: [PATCH v6 07/16] PCI/AER: Initialize aer_err_info before using it Date: Mon, 19 May 2025 16:35:49 -0500 Message-ID: <20250519213603.1257897-8-helgaas@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250519213603.1257897-1-helgaas@kernel.org> References: <20250519213603.1257897-1-helgaas@kernel.org> 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" From: Bjorn Helgaas Previously the struct aer_err_info "e_info" was allocated on the stack without being initialized, so it contained junk except for the fields we explicitly set later. Initialize "e_info" at declaration with a designated initializer list, which initializes the other members to zero. Signed-off-by: Bjorn Helgaas Reviewed-by: Ilpo J=C3=A4rvinen Reviewed-by: Kuppuswamy Sathyanarayanan Tested-by: Krzysztof Wilczy=C5=84ski --- drivers/pci/pcie/aer.c | 37 ++++++++++++++++--------------------- 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/drivers/pci/pcie/aer.c b/drivers/pci/pcie/aer.c index 95a4cab1d517..40f003eca1c5 100644 --- a/drivers/pci/pcie/aer.c +++ b/drivers/pci/pcie/aer.c @@ -1281,7 +1281,7 @@ static void aer_isr_one_error(struct aer_rpc *rpc, struct aer_err_source *e_src) { struct pci_dev *pdev =3D rpc->rpd; - struct aer_err_info e_info; + u32 status =3D e_src->status; =20 pci_rootport_aer_stats_incr(pdev, e_src); =20 @@ -1289,14 +1289,13 @@ static void aer_isr_one_error(struct aer_rpc *rpc, * There is a possibility that both correctable error and * uncorrectable error being logged. Report correctable error first. */ - if (e_src->status & PCI_ERR_ROOT_COR_RCV) { - e_info.id =3D ERR_COR_ID(e_src->id); - e_info.severity =3D AER_CORRECTABLE; - - if (e_src->status & PCI_ERR_ROOT_MULTI_COR_RCV) - e_info.multi_error_valid =3D 1; - else - e_info.multi_error_valid =3D 0; + if (status & PCI_ERR_ROOT_COR_RCV) { + int multi =3D status & PCI_ERR_ROOT_MULTI_COR_RCV; + struct aer_err_info e_info =3D { + .id =3D ERR_COR_ID(e_src->id), + .severity =3D AER_CORRECTABLE, + .multi_error_valid =3D multi ? 1 : 0, + }; =20 if (find_source_device(pdev, &e_info)) { aer_print_source(pdev, &e_info, ""); @@ -1304,18 +1303,14 @@ static void aer_isr_one_error(struct aer_rpc *rpc, } } =20 - if (e_src->status & PCI_ERR_ROOT_UNCOR_RCV) { - e_info.id =3D ERR_UNCOR_ID(e_src->id); - - if (e_src->status & PCI_ERR_ROOT_FATAL_RCV) - e_info.severity =3D AER_FATAL; - else - e_info.severity =3D AER_NONFATAL; - - if (e_src->status & PCI_ERR_ROOT_MULTI_UNCOR_RCV) - e_info.multi_error_valid =3D 1; - else - e_info.multi_error_valid =3D 0; + if (status & PCI_ERR_ROOT_UNCOR_RCV) { + int fatal =3D status & PCI_ERR_ROOT_FATAL_RCV; + int multi =3D status & PCI_ERR_ROOT_MULTI_UNCOR_RCV; + struct aer_err_info e_info =3D { + .id =3D ERR_UNCOR_ID(e_src->id), + .severity =3D fatal ? AER_FATAL : AER_NONFATAL, + .multi_error_valid =3D multi ? 1 : 0, + }; =20 if (find_source_device(pdev, &e_info)) { aer_print_source(pdev, &e_info, ""); --=20 2.43.0 From nobody Fri Dec 19 14:21:16 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 EADDD222595; Mon, 19 May 2025 21:37:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747690624; cv=none; b=DtV1o4HtgKgh97Jqo++t+BQWtfDVW0YmwGp6egFd0nzPiaOnA4ocsNZRyk9SMfYmcVFAj328dXefvNMNW+xUMC29vbh4HARamWfy0q611Jm/lu3iTdjtWmNaoqeeU0J79kUBxnxK7DanxWBhjvFis+55dFlS6OmmoXDU7ob784w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747690624; c=relaxed/simple; bh=aIk3s78Pjc+1Yr5MfxrprcdbuGy62ZG0jyrmmvahF1c=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Zx7ojkGzxN9kMgaX/hn6NewgwpKXJesjwRzrMn20rLMNQex+H3w18sOBLhjyw+mRj/+eivaJCP8cf/B+f+grqXZSIKzzGuYPK6u7Fi/eOkUuos9Lf22AQZKoTRgVTCxE6kEigP3GlKu5pdV9l0IiaMDg3nkStrFpD6mjoLcBNv0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=CWRWJyaC; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="CWRWJyaC" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3E541C4CEE4; Mon, 19 May 2025 21:37:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1747690623; bh=aIk3s78Pjc+1Yr5MfxrprcdbuGy62ZG0jyrmmvahF1c=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=CWRWJyaCEr9Wq1Bq7IbazqaALn2KniioErpwVjFrt6dwkUCcPXEnkfR/99bzOTsUT /4xhjS4UByA6qTpir4SoXPYs9tJRj5w3wBOYBAqLN1XN7dxkwzQV3qNCnkODW+kGS7 GZ11Eq/6Y1Pe2dT+JeQ2AhtLshsgdqjsHty2QmnONvhrUTG4alCX60FYL1uoLmTuXt hIPzTrLlJ15jmQU5A7E/40edQhPyZQfJKIt+saC5FprcEMa4vjvuoU0260YVEiQQLb OW3uN++ML5A3STxwyNdzvBOeO5vm6qHRyZHmxeuTA16ZYeDLeftimstnUdjhcrn0dV 99inID0+bH+nA== From: Bjorn Helgaas To: linux-pci@vger.kernel.org Cc: Jon Pan-Doh , Karolina Stolarek , Martin Petersen , Ben Fuller , Drew Walton , Anil Agrawal , Tony Luck , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , Sathyanarayanan Kuppuswamy , Lukas Wunner , Jonathan Cameron , Sargun Dhillon , "Paul E . McKenney" , Mahesh J Salgaonkar , Oliver O'Halloran , Kai-Heng Feng , Keith Busch , Robert Richter , Terry Bowman , Shiju Jose , Dave Jiang , linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, Bjorn Helgaas Subject: [PATCH v6 08/16] PCI/AER: Simplify pci_print_aer() Date: Mon, 19 May 2025 16:35:50 -0500 Message-ID: <20250519213603.1257897-9-helgaas@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250519213603.1257897-1-helgaas@kernel.org> References: <20250519213603.1257897-1-helgaas@kernel.org> 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" From: Bjorn Helgaas Simplify pci_print_aer() by initializing the struct aer_err_info "info" with a designated initializer list (it was previously initialized with memset()) and using pci_name(). Signed-off-by: Bjorn Helgaas Reviewed-by: Ilpo J=C3=A4rvinen Tested-by: Krzysztof Wilczy=C5=84ski --- drivers/pci/pcie/aer.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/pci/pcie/aer.c b/drivers/pci/pcie/aer.c index 40f003eca1c5..73d618354f6a 100644 --- a/drivers/pci/pcie/aer.c +++ b/drivers/pci/pcie/aer.c @@ -765,7 +765,10 @@ void pci_print_aer(struct pci_dev *dev, int aer_severi= ty, { int layer, agent, tlp_header_valid =3D 0; u32 status, mask; - struct aer_err_info info; + struct aer_err_info info =3D { + .severity =3D aer_severity, + .first_error =3D PCI_ERR_CAP_FEP(aer->cap_control), + }; =20 if (aer_severity =3D=3D AER_CORRECTABLE) { status =3D aer->cor_status; @@ -776,14 +779,11 @@ void pci_print_aer(struct pci_dev *dev, int aer_sever= ity, tlp_header_valid =3D status & AER_LOG_TLP_MASKS; } =20 - layer =3D AER_GET_LAYER_ERROR(aer_severity, status); - agent =3D AER_GET_AGENT(aer_severity, status); - - memset(&info, 0, sizeof(info)); - info.severity =3D aer_severity; info.status =3D status; info.mask =3D mask; - info.first_error =3D PCI_ERR_CAP_FEP(aer->cap_control); + + layer =3D AER_GET_LAYER_ERROR(aer_severity, status); + agent =3D AER_GET_AGENT(aer_severity, status); =20 pci_err(dev, "aer_status: 0x%08x, aer_mask: 0x%08x\n", status, mask); __aer_print_error(dev, &info); @@ -797,7 +797,7 @@ void pci_print_aer(struct pci_dev *dev, int aer_severit= y, if (tlp_header_valid) pcie_print_tlp_log(dev, &aer->header_log, dev_fmt(" ")); =20 - trace_aer_event(dev_name(&dev->dev), (status & ~mask), + trace_aer_event(pci_name(dev), (status & ~mask), aer_severity, tlp_header_valid, &aer->header_log); } EXPORT_SYMBOL_NS_GPL(pci_print_aer, "CXL"); --=20 2.43.0 From nobody Fri Dec 19 14:21:16 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 73F83223DDA; Mon, 19 May 2025 21:37:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747690625; cv=none; b=ckpJZusi7knBPdqXBIkREXEBogEZivOr+jsZqtv7nVytV1vmTpPScJKu70cspWkWeXadJNs3jLjnMnUaObpD8VB4IL7Bh0OJgKk9mg7PhBdtEdItdI66/sbRMb1NfVmXNN+iQKSX45JpakiXuzSBu1huI8fq7QaYhM2cYVUYlY8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747690625; c=relaxed/simple; bh=8K5sDprPkS4frD6Ujl8cJhUCTK82u2aJfFFj51dk78M=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=VugHrlnleclMoMHNxFK1QsOQJaGiODhqjUSA83TzvoEBFX3KW0D7xMWxg59LptJ51BOtCx/tULiPoOe3lCGg75c4JuE6bP7PMzwWKj9Ub2Msp1rBx+zmXlTpwUMLM0CcffHMrsWepYC79KwfpO91JWMzDLYA6EDkm3HimxcXpiQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=FanzLzd/; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="FanzLzd/" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C125CC4CEE4; Mon, 19 May 2025 21:37:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1747690624; bh=8K5sDprPkS4frD6Ujl8cJhUCTK82u2aJfFFj51dk78M=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=FanzLzd/XC+i2vgwSpoMtnfHCvFE+ndlzC5zS1V9xrvW3pvtPwg76YudFotYWcrYP /0VZyV4Tc/h9XKxBYf6IV8Iis5rD3sBS8sazMTTzYFGYs2eSf0dQWTionBZWQYmJbc mPGaauRPG+HkczhJPGbN866GWbGq/V3bSGpy3YEYEwWHyORMWnyUegPZp4vVHmO0Oz I58sZ0UjIv9txf8aVRTL7g3qN7VqbMU/jkBx/2pj6tyNhSBMGMjHUtzcPfmcv9RE7M bFYMb0xGqPOneMpdqAqdhzPaFMzT/1bqaTQfMGUlT9uSqPlaESsJaHJRGWc+pcj4I4 fDXmBtKn8IxDQ== From: Bjorn Helgaas To: linux-pci@vger.kernel.org Cc: Jon Pan-Doh , Karolina Stolarek , Martin Petersen , Ben Fuller , Drew Walton , Anil Agrawal , Tony Luck , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , Sathyanarayanan Kuppuswamy , Lukas Wunner , Jonathan Cameron , Sargun Dhillon , "Paul E . McKenney" , Mahesh J Salgaonkar , Oliver O'Halloran , Kai-Heng Feng , Keith Busch , Robert Richter , Terry Bowman , Shiju Jose , Dave Jiang , linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, Bjorn Helgaas Subject: [PATCH v6 09/16] PCI/AER: Update statistics early in logging Date: Mon, 19 May 2025 16:35:51 -0500 Message-ID: <20250519213603.1257897-10-helgaas@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250519213603.1257897-1-helgaas@kernel.org> References: <20250519213603.1257897-1-helgaas@kernel.org> 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" From: Bjorn Helgaas There are two AER logging entry points: - aer_print_error() is used by DPC (dpc_process_error()) and native AER handling (aer_process_err_devices()). - pci_print_aer() is used by GHES (aer_recover_work_func()) and CXL (cxl_handle_rdport_errors()) Both use __aer_print_error() to print the AER error bits. Previously __aer_print_error() also incremented the AER statistics via pci_dev_aer_stats_incr(). Call pci_dev_aer_stats_incr() early in the entry points instead of in __aer_print_error() so we update the statistics even if the actual printing of error bits is rate limited by a future change. Signed-off-by: Bjorn Helgaas Reviewed-by: Ilpo J=C3=A4rvinen Reviewed-by: Kuppuswamy Sathyanarayanan Tested-by: Krzysztof Wilczy=C5=84ski --- drivers/pci/pcie/aer.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/pci/pcie/aer.c b/drivers/pci/pcie/aer.c index 73d618354f6a..eb80c382187d 100644 --- a/drivers/pci/pcie/aer.c +++ b/drivers/pci/pcie/aer.c @@ -693,7 +693,6 @@ static void __aer_print_error(struct pci_dev *dev, aer_printk(level, dev, " [%2d] %-22s%s\n", i, errmsg, info->first_error =3D=3D i ? " (First)" : ""); } - pci_dev_aer_stats_incr(dev, info); } =20 static void aer_print_source(struct pci_dev *dev, struct aer_err_info *inf= o, @@ -714,6 +713,8 @@ void aer_print_error(struct pci_dev *dev, struct aer_er= r_info *info) int id =3D pci_dev_id(dev); const char *level; =20 + pci_dev_aer_stats_incr(dev, info); + if (!info->status) { pci_err(dev, "PCIe Bus Error: severity=3D%s, type=3DInaccessible, (Unreg= istered Agent ID)\n", aer_error_severity_string[info->severity]); @@ -782,6 +783,8 @@ void pci_print_aer(struct pci_dev *dev, int aer_severit= y, info.status =3D status; info.mask =3D mask; =20 + pci_dev_aer_stats_incr(dev, &info); + layer =3D AER_GET_LAYER_ERROR(aer_severity, status); agent =3D AER_GET_AGENT(aer_severity, status); =20 --=20 2.43.0 From nobody Fri Dec 19 14:21:16 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 042A222424C; Mon, 19 May 2025 21:37:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747690627; cv=none; b=dP03CjZ50ym55VqUxnE7lZY6ztyn72Wg+D8IMWbf6+oLPf4xh/6zLx8QVdMRieqO0ACgTA49mIjps95AgLMXK8AwYqxQZatsTpG/P4Y3CogtFSUrxTkQDUWBR3PgLqJuQsxP0UyvBIqKKaCWHL60NeemPbsres08NZl7crjmj8M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747690627; c=relaxed/simple; bh=NAhGtd5JfzeBCzQA1T4NEmRuVhhFv6g9vasKC+2bs3E=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=omI5on8dy3AEtKod09HEgXtqIFoVVBZfR0fFwxnMFLTinC6B5J8TNGNjutrG0DTb/rBynSv/VV91IbOr9TOPKhNjg6AgNXJZOjD7IT3+Wa4z3ahnalv6K3hh4HA6iBerDAePyFVuFBC+C9401YPrusK7oAZEXdp39nMdyW8XxQs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=gAAYFKyt; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="gAAYFKyt" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4DA77C4CEE4; Mon, 19 May 2025 21:37:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1747690626; bh=NAhGtd5JfzeBCzQA1T4NEmRuVhhFv6g9vasKC+2bs3E=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=gAAYFKytJKXtguC5OPN1vhjjWORgKkZigyL38b0hhsQXwcn4lVNVWyJadazNUOw2e Uj40NWIQbfSHMR1iNgSam3gqXtzMymyBWMJtEGvbXCtG4uUfL+YxwT7ZZKwChpfcc/ JQRK1MP4GmjKcBUkEv/7ICdkHqIYkpKfkfr+VRiuWrIjXUdshB/XWAP2IflgiHgOX/ Dpsy6Asz22yeMeR0l7LHgZx/fxDsgR5Yt3qq2os9g53ntjlEv6yWLfH1oiyScwDqqw XS6b0kFhQzFoQ4DnzDLUpXb6sA3gZgjx9eDKxMVoQ/AFklCNrf5uCsVPMQ/61IHR+a NaAFQQqbXNz2g== From: Bjorn Helgaas To: linux-pci@vger.kernel.org Cc: Jon Pan-Doh , Karolina Stolarek , Martin Petersen , Ben Fuller , Drew Walton , Anil Agrawal , Tony Luck , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , Sathyanarayanan Kuppuswamy , Lukas Wunner , Jonathan Cameron , Sargun Dhillon , "Paul E . McKenney" , Mahesh J Salgaonkar , Oliver O'Halloran , Kai-Heng Feng , Keith Busch , Robert Richter , Terry Bowman , Shiju Jose , Dave Jiang , linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, Bjorn Helgaas Subject: [PATCH v6 10/16] PCI/AER: Combine trace_aer_event() with statistics updates Date: Mon, 19 May 2025 16:35:52 -0500 Message-ID: <20250519213603.1257897-11-helgaas@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250519213603.1257897-1-helgaas@kernel.org> References: <20250519213603.1257897-1-helgaas@kernel.org> 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" From: Bjorn Helgaas As with the AER statistics, we always want to emit trace events, even if the actual dmesg logging is rate limited. Call trace_aer_event() directly from pci_dev_aer_stats_incr(), where we update the statistics. Signed-off-by: Bjorn Helgaas Reviewed-by: Ilpo J=C3=A4rvinen Reviewed-by: Kuppuswamy Sathyanarayanan Tested-by: Krzysztof Wilczy=C5=84ski --- drivers/pci/pcie/aer.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/pci/pcie/aer.c b/drivers/pci/pcie/aer.c index eb80c382187d..4683a99c7568 100644 --- a/drivers/pci/pcie/aer.c +++ b/drivers/pci/pcie/aer.c @@ -625,6 +625,9 @@ static void pci_dev_aer_stats_incr(struct pci_dev *pdev, u64 *counter =3D NULL; struct aer_stats *aer_stats =3D pdev->aer_stats; =20 + trace_aer_event(pci_name(pdev), (info->status & ~info->mask), + info->severity, info->tlp_header_valid, &info->tlp); + if (!aer_stats) return; =20 @@ -741,9 +744,6 @@ void aer_print_error(struct pci_dev *dev, struct aer_er= r_info *info) out: if (info->id && info->error_dev_num > 1 && info->id =3D=3D id) pci_err(dev, " Error of this Agent is reported first\n"); - - trace_aer_event(dev_name(&dev->dev), (info->status & ~info->mask), - info->severity, info->tlp_header_valid, &info->tlp); } =20 #ifdef CONFIG_ACPI_APEI_PCIEAER @@ -782,6 +782,9 @@ void pci_print_aer(struct pci_dev *dev, int aer_severit= y, =20 info.status =3D status; info.mask =3D mask; + info.tlp_header_valid =3D tlp_header_valid; + if (tlp_header_valid) + info.tlp =3D aer->header_log; =20 pci_dev_aer_stats_incr(dev, &info); =20 @@ -799,9 +802,6 @@ void pci_print_aer(struct pci_dev *dev, int aer_severit= y, =20 if (tlp_header_valid) pcie_print_tlp_log(dev, &aer->header_log, dev_fmt(" ")); - - trace_aer_event(pci_name(dev), (status & ~mask), - aer_severity, tlp_header_valid, &aer->header_log); } EXPORT_SYMBOL_NS_GPL(pci_print_aer, "CXL"); =20 --=20 2.43.0 From nobody Fri Dec 19 14:21:16 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 90348220689; Mon, 19 May 2025 21:37:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747690628; cv=none; b=djr2QPRcfTlsef29ytdTH7WyeK9mr4eGxnoTUYMGyLTGP2B4EwFr5r1kQfh3riz1qyaUAju4jkc0WGG8sFcT2hkaAuQ38G5SgG2O5T7BQU8jxCM++ewexZPhxg0ZQLuZr61Ac9I9q8i2W69MLmCotDfxWjzSsc56FnC9zrqPXc4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747690628; c=relaxed/simple; bh=0fgRb7smdbJxtWhXJfFNuU3g4uIG5BjvmPrF/6j6wsY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=h4m3teZYGGaMhDTLWB41XxmBl7VKa6plqzhSLoDgfNWk44rg4aI/riZ4nBUMVVU2FhhSCzD+hPueUBXLS4ZjNVJI9cCAd4plczk/ZrIGKfxMsyjb124Kb/N2C2TvhAJSjPSL2mW9D24sXv6hTn/tTDBjFMElu+SHB2r+fjRYw64= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=VwkJyDWm; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="VwkJyDWm" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D4CB8C4CEE4; Mon, 19 May 2025 21:37:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1747690628; bh=0fgRb7smdbJxtWhXJfFNuU3g4uIG5BjvmPrF/6j6wsY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=VwkJyDWmVXRv6RpivqQ72Uim6E032744c1wHkxMcbh6KKd7y52KCcVF9wBOMgrFh/ xViYGysieiKy/ajE4DERSli4ABxri9lJVuiEHwlZfu2SCI3U1vJj2v4hBC++yQD2uz pUp5oB/EECi2miKsALvnvhmu7vYrPVyDcePX/+bIk9mEMUvpCYiy6hSyKKG9UF4HWA fXI9ZrsjvlQAr/8aH63sBsGZu92ngd5DF2PtCSNY+21WCmisfP3jDpylnd3RYMiqhg dxuiOeT3uH8UBCLP2XDnfbe9gLJAB+tq4y+NaLxYTuYK3YN16OXzYL7syC9qFLQ/u8 /L+YvRDIMZ7UA== From: Bjorn Helgaas To: linux-pci@vger.kernel.org Cc: Jon Pan-Doh , Karolina Stolarek , Martin Petersen , Ben Fuller , Drew Walton , Anil Agrawal , Tony Luck , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , Sathyanarayanan Kuppuswamy , Lukas Wunner , Jonathan Cameron , Sargun Dhillon , "Paul E . McKenney" , Mahesh J Salgaonkar , Oliver O'Halloran , Kai-Heng Feng , Keith Busch , Robert Richter , Terry Bowman , Shiju Jose , Dave Jiang , linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, Bjorn Helgaas Subject: [PATCH v6 11/16] PCI/AER: Check log level once and remember it Date: Mon, 19 May 2025 16:35:53 -0500 Message-ID: <20250519213603.1257897-12-helgaas@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250519213603.1257897-1-helgaas@kernel.org> References: <20250519213603.1257897-1-helgaas@kernel.org> 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" From: Karolina Stolarek When reporting an AER error, we check its type multiple times to determine the log level for each message. Do this check only in the top-level functions (aer_isr_one_error(), pci_print_aer()) and save the level in struct aer_err_info. [bhelgaas: save log level in struct aer_err_info instead of passing it as a parameter] Link: https://lore.kernel.org/r/20250321015806.954866-2-pandoh@google.com Signed-off-by: Karolina Stolarek Signed-off-by: Bjorn Helgaas Reviewed-by: Ilpo J=C3=A4rvinen Reviewed-by: Kuppuswamy Sathyanarayanan Tested-by: Krzysztof Wilczy=C5=84ski --- drivers/pci/pci.h | 1 + drivers/pci/pcie/aer.c | 21 ++++++++++----------- drivers/pci/pcie/dpc.c | 1 + 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h index b81e99cd4b62..705f9ef58acc 100644 --- a/drivers/pci/pci.h +++ b/drivers/pci/pci.h @@ -588,6 +588,7 @@ static inline bool pci_dev_test_and_set_removed(struct = pci_dev *dev) struct aer_err_info { struct pci_dev *dev[AER_MAX_MULTI_ERR_DEVICES]; int error_dev_num; + const char *level; /* printk level */ =20 unsigned int id:16; =20 diff --git a/drivers/pci/pcie/aer.c b/drivers/pci/pcie/aer.c index 4683a99c7568..73b03a195b14 100644 --- a/drivers/pci/pcie/aer.c +++ b/drivers/pci/pcie/aer.c @@ -672,21 +672,18 @@ static void pci_rootport_aer_stats_incr(struct pci_de= v *pdev, } } =20 -static void __aer_print_error(struct pci_dev *dev, - struct aer_err_info *info) +static void __aer_print_error(struct pci_dev *dev, struct aer_err_info *in= fo) { const char **strings; unsigned long status =3D info->status & ~info->mask; - const char *level, *errmsg; + const char *level =3D info->level; + const char *errmsg; int i; =20 - if (info->severity =3D=3D AER_CORRECTABLE) { + if (info->severity =3D=3D AER_CORRECTABLE) strings =3D aer_correctable_error_string; - level =3D KERN_WARNING; - } else { + else strings =3D aer_uncorrectable_error_string; - level =3D KERN_ERR; - } =20 for_each_set_bit(i, &status, 32) { errmsg =3D strings[i]; @@ -714,7 +711,7 @@ void aer_print_error(struct pci_dev *dev, struct aer_er= r_info *info) { int layer, agent; int id =3D pci_dev_id(dev); - const char *level; + const char *level =3D info->level; =20 pci_dev_aer_stats_incr(dev, info); =20 @@ -727,8 +724,6 @@ void aer_print_error(struct pci_dev *dev, struct aer_er= r_info *info) layer =3D AER_GET_LAYER_ERROR(info->severity, info->status); agent =3D AER_GET_AGENT(info->severity, info->status); =20 - level =3D (info->severity =3D=3D AER_CORRECTABLE) ? KERN_WARNING : KERN_E= RR; - aer_printk(level, dev, "PCIe Bus Error: severity=3D%s, type=3D%s, (%s)\n", aer_error_severity_string[info->severity], aer_error_layer[layer], aer_agent_string[agent]); @@ -774,9 +769,11 @@ void pci_print_aer(struct pci_dev *dev, int aer_severi= ty, if (aer_severity =3D=3D AER_CORRECTABLE) { status =3D aer->cor_status; mask =3D aer->cor_mask; + info.level =3D KERN_WARNING; } else { status =3D aer->uncor_status; mask =3D aer->uncor_mask; + info.level =3D KERN_ERR; tlp_header_valid =3D status & AER_LOG_TLP_MASKS; } =20 @@ -1297,6 +1294,7 @@ static void aer_isr_one_error(struct aer_rpc *rpc, struct aer_err_info e_info =3D { .id =3D ERR_COR_ID(e_src->id), .severity =3D AER_CORRECTABLE, + .level =3D KERN_WARNING, .multi_error_valid =3D multi ? 1 : 0, }; =20 @@ -1312,6 +1310,7 @@ static void aer_isr_one_error(struct aer_rpc *rpc, struct aer_err_info e_info =3D { .id =3D ERR_UNCOR_ID(e_src->id), .severity =3D fatal ? AER_FATAL : AER_NONFATAL, + .level =3D KERN_ERR, .multi_error_valid =3D multi ? 1 : 0, }; =20 diff --git a/drivers/pci/pcie/dpc.c b/drivers/pci/pcie/dpc.c index 315bf2bfd570..34af0ea45c0d 100644 --- a/drivers/pci/pcie/dpc.c +++ b/drivers/pci/pcie/dpc.c @@ -252,6 +252,7 @@ static int dpc_get_aer_uncorrect_severity(struct pci_de= v *dev, else info->severity =3D AER_NONFATAL; =20 + info->level =3D KERN_WARNING; return 1; } =20 --=20 2.43.0 From nobody Fri Dec 19 14:21:16 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 2FE1F225413; Mon, 19 May 2025 21:37:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747690631; cv=none; b=p37uh/G9hWla7+hnMRm5wv4SmUDA/Vr8eoa5CMR6mYQOb9zhQgCL9JdUbBNaiKoZyZR/R39gjnH08a6A27boFXyxYjwPgnJ9C8mCnroWPFC11zGDyVboVecmMX2sc0iv5lwbQyGpZN/IOQ+TX7UcNeYMuEkqqEA4sDY90rCpS9w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747690631; c=relaxed/simple; bh=wOlbd/AhG2UEes21QN0n7WyeptntoS/yWob+FRL5Zr0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=n/o8gMcT4qVnr93J8OiFq1E7BwDHMI0iUw0okU6/HwLEg147Yck5SW4GUJI0RhYB6cH4dH/U3YCw/V/M1srUGVmfsbMaUrxlcdH7juy/siM6rkfYaJ2KQlOfEFrfu5zR9284JZkwmH8aKeUapoAZPeZAsR4AbnSOF0Dv1EzoC/s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=i3gP4m9a; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="i3gP4m9a" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8109EC4CEE4; Mon, 19 May 2025 21:37:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1747690629; bh=wOlbd/AhG2UEes21QN0n7WyeptntoS/yWob+FRL5Zr0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=i3gP4m9aPW2NsVE0xy/MHN/v0To6ljSLAxEBCwGF4MfF5EU8G3soT+MZBuMT1XmkQ gPwl0jolukEG+ok4nCEziW/vgY6CUiu46p9Mb3n6tv8An5fzPgk69f8gUZ2bKJ7ZtE BonoNkfpV/Q8FpsCbecgLiOvewlHuPnS+FLXq72RiyvMFfQ8G9g4he+YUmib8GNeRW rUd2GXGM/IcI5tGX3LVmFcpjw57h6qRMye5WD4/f/BQmPdkvXcj3umMqdT7JeEAeu3 qpeAnioifLP4Kiysktj1aIPLtIk+dyaRW+LryYsqJFtCdhXF+g2/hu9Yj2qy+lExzj URhun88hwlWjw== From: Bjorn Helgaas To: linux-pci@vger.kernel.org Cc: Jon Pan-Doh , Karolina Stolarek , Martin Petersen , Ben Fuller , Drew Walton , Anil Agrawal , Tony Luck , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , Sathyanarayanan Kuppuswamy , Lukas Wunner , Jonathan Cameron , Sargun Dhillon , "Paul E . McKenney" , Mahesh J Salgaonkar , Oliver O'Halloran , Kai-Heng Feng , Keith Busch , Robert Richter , Terry Bowman , Shiju Jose , Dave Jiang , linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, Bjorn Helgaas Subject: [PATCH v6 12/16] PCI/AER: Make all pci_print_aer() log levels depend on error type Date: Mon, 19 May 2025 16:35:54 -0500 Message-ID: <20250519213603.1257897-13-helgaas@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250519213603.1257897-1-helgaas@kernel.org> References: <20250519213603.1257897-1-helgaas@kernel.org> 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" From: Karolina Stolarek Some existing logs in pci_print_aer() log with error severity by default. Convert them to depend on error type (consistent with rest of AER logging). Link: https://lore.kernel.org/r/20250321015806.954866-3-pandoh@google.com Signed-off-by: Karolina Stolarek Signed-off-by: Bjorn Helgaas Reviewed-by: Ilpo J=C3=A4rvinen Reviewed-by: Kuppuswamy Sathyanarayanan Tested-by: Krzysztof Wilczy=C5=84ski --- drivers/pci/pcie/aer.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/drivers/pci/pcie/aer.c b/drivers/pci/pcie/aer.c index 73b03a195b14..06a7dda20846 100644 --- a/drivers/pci/pcie/aer.c +++ b/drivers/pci/pcie/aer.c @@ -788,15 +788,21 @@ void pci_print_aer(struct pci_dev *dev, int aer_sever= ity, layer =3D AER_GET_LAYER_ERROR(aer_severity, status); agent =3D AER_GET_AGENT(aer_severity, status); =20 - pci_err(dev, "aer_status: 0x%08x, aer_mask: 0x%08x\n", status, mask); + aer_printk(info.level, dev, "aer_status: 0x%08x, aer_mask: 0x%08x\n", + status, mask); __aer_print_error(dev, &info); - pci_err(dev, "aer_layer=3D%s, aer_agent=3D%s\n", - aer_error_layer[layer], aer_agent_string[agent]); + aer_printk(info.level, dev, "aer_layer=3D%s, aer_agent=3D%s\n", + aer_error_layer[layer], aer_agent_string[agent]); =20 if (aer_severity !=3D AER_CORRECTABLE) - pci_err(dev, "aer_uncor_severity: 0x%08x\n", - aer->uncor_severity); + aer_printk(info.level, dev, "aer_uncor_severity: 0x%08x\n", + aer->uncor_severity); =20 + /* + * pcie_print_tlp_log() uses KERN_ERR, but we only call it when + * tlp_header_valid is set, and info.level is always KERN_ERR in + * that case. + */ if (tlp_header_valid) pcie_print_tlp_log(dev, &aer->header_log, dev_fmt(" ")); } --=20 2.43.0 From nobody Fri Dec 19 14:21:16 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 E63E822579E; Mon, 19 May 2025 21:37:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747690632; cv=none; b=dRzDetqOQA3aut73I/3G0GEl/iljc+s5N3+oXmluT+N9ZitOt0qhCH/N6jFv+YGBks8NW7dqSpf+lk9l0v5wfaOAq+5fn5n8Nk5W7AIz6VMqTIfzw59glrCB/1/D2vgpuDD4AXGdLh9Fm0sDZJPwu4T87CCa9lI+R/XqD5qQa8Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747690632; c=relaxed/simple; bh=gyTffYIyVHu/5mrxLUkN3VCblYgURBDMeOg8PlZXd/Y=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=m5E8UnK4zAoqO29TXB7Mj3GSWgGyMOTjIE/ZqeGi2ppfV6rieDC7JhzbGN2x1+0KG5RQpGDKkoRhs5Bum67U20EFbYfxFXt1L2Yio3voXd3ToI/LLTZ0hu3bZ3ocj7VW8Xm3pxb1AQOvE0VF9+ShfZekSJl88fUk1C0nsmR43L4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ScPn6Vtm; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ScPn6Vtm" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 36AF3C4CEE9; Mon, 19 May 2025 21:37:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1747690631; bh=gyTffYIyVHu/5mrxLUkN3VCblYgURBDMeOg8PlZXd/Y=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ScPn6VtmrlcZmG6H6TNWgNVU8DCGTrwM66otpxLKrHpcKbsCE+7wboo7W9kWvol33 2EapjOnvBzOmRr/pG88R7RSFeIEoAEzLU/hYuX8rmctpOOJZhFmLXP1CTlvPNYegn/ z8o5kWipr4a9rk0DDNDiqS8bFjdby5Nwi6d+kkYcusyQOwSSRFApixaO+XbcT6oPZ/ EYUg/8lwXJDCpRtK9tiWWVX2/BjSEkjM1PcXiKWslbC1EkX1F8f5mT/0TGUyupeK6i SFsEerDrrkdVvnxiprY8WKAOWqVeOvo5ibVRq2TOmOC/J4R0Q7ZQz/m96DuDM1oPqO J6FifV6+H30yg== From: Bjorn Helgaas To: linux-pci@vger.kernel.org Cc: Jon Pan-Doh , Karolina Stolarek , Martin Petersen , Ben Fuller , Drew Walton , Anil Agrawal , Tony Luck , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , Sathyanarayanan Kuppuswamy , Lukas Wunner , Jonathan Cameron , Sargun Dhillon , "Paul E . McKenney" , Mahesh J Salgaonkar , Oliver O'Halloran , Kai-Heng Feng , Keith Busch , Robert Richter , Terry Bowman , Shiju Jose , Dave Jiang , linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, Bjorn Helgaas Subject: [PATCH v6 13/16] PCI/AER: Rename struct aer_stats to aer_report Date: Mon, 19 May 2025 16:35:55 -0500 Message-ID: <20250519213603.1257897-14-helgaas@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250519213603.1257897-1-helgaas@kernel.org> References: <20250519213603.1257897-1-helgaas@kernel.org> 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" From: Karolina Stolarek Update name to reflect the broader definition of structs/variables that are stored (e.g. ratelimits). This is a preparatory patch for adding rate limit support. Link: https://lore.kernel.org/r/20250321015806.954866-6-pandoh@google.com Signed-off-by: Karolina Stolarek Signed-off-by: Bjorn Helgaas Reviewed-by: Ilpo J=C3=A4rvinen Reviewed-by: Kuppuswamy Sathyanarayanan Tested-by: Krzysztof Wilczy=C5=84ski --- drivers/pci/pcie/aer.c | 50 +++++++++++++++++++++--------------------- include/linux/pci.h | 2 +- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/drivers/pci/pcie/aer.c b/drivers/pci/pcie/aer.c index 06a7dda20846..da62032bf024 100644 --- a/drivers/pci/pcie/aer.c +++ b/drivers/pci/pcie/aer.c @@ -54,11 +54,11 @@ struct aer_rpc { DECLARE_KFIFO(aer_fifo, struct aer_err_source, AER_ERROR_SOURCES_MAX); }; =20 -/* AER stats for the device */ -struct aer_stats { +/* AER report for the device */ +struct aer_report { =20 /* - * Fields for all AER capable devices. They indicate the errors + * Stats for all AER capable devices. They indicate the errors * "as seen by this device". Note that this may mean that if an * Endpoint is causing problems, the AER counters may increment * at its link partner (e.g. Root Port) because the errors will be @@ -80,7 +80,7 @@ struct aer_stats { u64 dev_total_nonfatal_errs; =20 /* - * Fields for Root Ports & Root Complex Event Collectors only; these + * Stats for Root Ports & Root Complex Event Collectors only; these * indicate the total number of ERR_COR, ERR_FATAL, and ERR_NONFATAL * messages received by the Root Port / Event Collector, INCLUDING the * ones that are generated internally (by the Root Port itself) @@ -377,7 +377,7 @@ void pci_aer_init(struct pci_dev *dev) if (!dev->aer_cap) return; =20 - dev->aer_stats =3D kzalloc(sizeof(struct aer_stats), GFP_KERNEL); + dev->aer_report =3D kzalloc(sizeof(*dev->aer_report), GFP_KERNEL); =20 /* * We save/restore PCI_ERR_UNCOR_MASK, PCI_ERR_UNCOR_SEVER, @@ -398,8 +398,8 @@ void pci_aer_init(struct pci_dev *dev) =20 void pci_aer_exit(struct pci_dev *dev) { - kfree(dev->aer_stats); - dev->aer_stats =3D NULL; + kfree(dev->aer_report); + dev->aer_report =3D NULL; } =20 #define AER_AGENT_RECEIVER 0 @@ -537,10 +537,10 @@ static const char *aer_agent_string[] =3D { { \ unsigned int i; \ struct pci_dev *pdev =3D to_pci_dev(dev); \ - u64 *stats =3D pdev->aer_stats->stats_array; \ + u64 *stats =3D pdev->aer_report->stats_array; \ size_t len =3D 0; \ \ - for (i =3D 0; i < ARRAY_SIZE(pdev->aer_stats->stats_array); i++) {\ + for (i =3D 0; i < ARRAY_SIZE(pdev->aer_report->stats_array); i++) {\ if (strings_array[i]) \ len +=3D sysfs_emit_at(buf, len, "%s %llu\n", \ strings_array[i], \ @@ -551,7 +551,7 @@ static const char *aer_agent_string[] =3D { i, stats[i]); \ } \ len +=3D sysfs_emit_at(buf, len, "TOTAL_%s %llu\n", total_string, \ - pdev->aer_stats->total_field); \ + pdev->aer_report->total_field); \ return len; \ } \ static DEVICE_ATTR_RO(name) @@ -572,7 +572,7 @@ aer_stats_dev_attr(aer_dev_nonfatal, dev_nonfatal_errs, char *buf) \ { \ struct pci_dev *pdev =3D to_pci_dev(dev); \ - return sysfs_emit(buf, "%llu\n", pdev->aer_stats->field); \ + return sysfs_emit(buf, "%llu\n", pdev->aer_report->field); \ } \ static DEVICE_ATTR_RO(name) =20 @@ -599,7 +599,7 @@ static umode_t aer_stats_attrs_are_visible(struct kobje= ct *kobj, struct device *dev =3D kobj_to_dev(kobj); struct pci_dev *pdev =3D to_pci_dev(dev); =20 - if (!pdev->aer_stats) + if (!pdev->aer_report) return 0; =20 if ((a =3D=3D &dev_attr_aer_rootport_total_err_cor.attr || @@ -623,28 +623,28 @@ static void pci_dev_aer_stats_incr(struct pci_dev *pd= ev, unsigned long status =3D info->status & ~info->mask; int i, max =3D -1; u64 *counter =3D NULL; - struct aer_stats *aer_stats =3D pdev->aer_stats; + struct aer_report *aer_report =3D pdev->aer_report; =20 trace_aer_event(pci_name(pdev), (info->status & ~info->mask), info->severity, info->tlp_header_valid, &info->tlp); =20 - if (!aer_stats) + if (!aer_report) return; =20 switch (info->severity) { case AER_CORRECTABLE: - aer_stats->dev_total_cor_errs++; - counter =3D &aer_stats->dev_cor_errs[0]; + aer_report->dev_total_cor_errs++; + counter =3D &aer_report->dev_cor_errs[0]; max =3D AER_MAX_TYPEOF_COR_ERRS; break; case AER_NONFATAL: - aer_stats->dev_total_nonfatal_errs++; - counter =3D &aer_stats->dev_nonfatal_errs[0]; + aer_report->dev_total_nonfatal_errs++; + counter =3D &aer_report->dev_nonfatal_errs[0]; max =3D AER_MAX_TYPEOF_UNCOR_ERRS; break; case AER_FATAL: - aer_stats->dev_total_fatal_errs++; - counter =3D &aer_stats->dev_fatal_errs[0]; + aer_report->dev_total_fatal_errs++; + counter =3D &aer_report->dev_fatal_errs[0]; max =3D AER_MAX_TYPEOF_UNCOR_ERRS; break; } @@ -656,19 +656,19 @@ static void pci_dev_aer_stats_incr(struct pci_dev *pd= ev, static void pci_rootport_aer_stats_incr(struct pci_dev *pdev, struct aer_err_source *e_src) { - struct aer_stats *aer_stats =3D pdev->aer_stats; + struct aer_report *aer_report =3D pdev->aer_report; =20 - if (!aer_stats) + if (!aer_report) return; =20 if (e_src->status & PCI_ERR_ROOT_COR_RCV) - aer_stats->rootport_total_cor_errs++; + aer_report->rootport_total_cor_errs++; =20 if (e_src->status & PCI_ERR_ROOT_UNCOR_RCV) { if (e_src->status & PCI_ERR_ROOT_FATAL_RCV) - aer_stats->rootport_total_fatal_errs++; + aer_report->rootport_total_fatal_errs++; else - aer_stats->rootport_total_nonfatal_errs++; + aer_report->rootport_total_nonfatal_errs++; } } =20 diff --git a/include/linux/pci.h b/include/linux/pci.h index 0e8e3fd77e96..4b11a90107cb 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -346,7 +346,7 @@ struct pci_dev { u8 hdr_type; /* PCI header type (`multi' flag masked out) */ #ifdef CONFIG_PCIEAER u16 aer_cap; /* AER capability offset */ - struct aer_stats *aer_stats; /* AER stats for this device */ + struct aer_report *aer_report; /* AER report for this device */ #endif #ifdef CONFIG_PCIEPORTBUS struct rcec_ea *rcec_ea; /* RCEC cached endpoint association */ --=20 2.43.0 From nobody Fri Dec 19 14:21:16 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 6A19F226888; Mon, 19 May 2025 21:37:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747690633; cv=none; b=rs083EwPVI0nLJD6RdtAcTrneaxpxjQwQtPbBpkdx2mptdGZu7os/V1gwPDAxYNVQn125c7pzGRUxwoeUnqC/KUatqBYnU1slGZYAjacqkuoBFeR2xT6g1K5RHo4Jz+hs9T0jdZNoP6LVx8RDQ1Mf04FJwEdL2kzR//RE+dYq8U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747690633; c=relaxed/simple; bh=pEzxMI1RPs1BcxgvGz2M9/A2tzz16x+dpGmkomDUbRE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=fM4/yymgt0nFMdjDjXTiMC8wnOYPafSDRYpxX8KsGWWmdaAj8dtk67dyAiXY7TWtc4K5FWq2R4yQ+lHR0WijP1U6uE2Q5r3lLrHq4ig+N7xN6KQlyL4cbjz+FKjSTjqh6xTk82HoK0UqxNZR1DEdw4Ou1jNVZwBtLyQy6FCIwIE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=lN3dFeon; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="lN3dFeon" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B8C0EC4CEE4; Mon, 19 May 2025 21:37:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1747690632; bh=pEzxMI1RPs1BcxgvGz2M9/A2tzz16x+dpGmkomDUbRE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=lN3dFeonzOxnEeK4/kIGrTtTf3uh5A8IISmo14XUj6cKz7P0lZQDC+HL1xgb3VhQe 9RQ167qx5Ein2TbOrW6x0Wf3OLPswgJBu9YL6e61EbWLlv6unNAWbUKV7SxJpm4VSt TYC9mePBKuh7kPFZq1jLidI/yh7+05FRbaBkoFzRr8+o4K4WSuaEqODL27zo6Y3YlH CflnR6LSgBEAJ4w8cFRRgNPMZAJ3PEGzu4KZQuVgCgA8QYnyptyOgTR4vE7JlYgvHq 1peTN5j0uw59iAnICPzDTWNStMcFcauHrKX225kFjXPmJxqVg1TXhTKA8cKtUCTbxu XziTIzsVbm25g== From: Bjorn Helgaas To: linux-pci@vger.kernel.org Cc: Jon Pan-Doh , Karolina Stolarek , Martin Petersen , Ben Fuller , Drew Walton , Anil Agrawal , Tony Luck , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , Sathyanarayanan Kuppuswamy , Lukas Wunner , Jonathan Cameron , Sargun Dhillon , "Paul E . McKenney" , Mahesh J Salgaonkar , Oliver O'Halloran , Kai-Heng Feng , Keith Busch , Robert Richter , Terry Bowman , Shiju Jose , Dave Jiang , linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, Bjorn Helgaas Subject: [PATCH v6 14/16] PCI/AER: Introduce ratelimit for error logs Date: Mon, 19 May 2025 16:35:56 -0500 Message-ID: <20250519213603.1257897-15-helgaas@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250519213603.1257897-1-helgaas@kernel.org> References: <20250519213603.1257897-1-helgaas@kernel.org> 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" From: Jon Pan-Doh Spammy devices can flood kernel logs with AER errors and slow/stall execution. Add per-device ratelimits for AER correctable and uncorrectable errors that use the kernel defaults (10 per 5s). There are two AER logging entry points: - aer_print_error() is used by DPC and native AER - pci_print_aer() is used by GHES and CXL The native AER aer_print_error() case includes a loop that may log details from multiple devices. This is ratelimited by the union of ratelimits for these devices, set by add_error_device(), which collects the devices. If no such device is found, the Error Source message is ratelimited by the Root Port or RCEC that received the ERR_* message. The DPC aer_print_error() case is currently not ratelimited. The GHES and CXL pci_print_aer() cases are ratelimited by the Error Source device. Sargun at Meta reported internally that a flood of AER errors causes RCU CPU stall warnings and CSD-lock warnings. Tested using aer-inject[1]. Sent 11 AER errors. Observed 10 errors logged while AER stats (cat /sys/bus/pci/devices//aer_dev_correctable) show true count of 11. [1] https://git.kernel.org/pub/scm/linux/kernel/git/gong.chen/aer-inject.git [bhelgaas: commit log, factor out trace_aer_event() and aer_print_rp_info() changes to previous patches, collect single aer_err_info.ratelimit as union of ratelimits of all error source devices] Link: https://lore.kernel.org/r/20250321015806.954866-7-pandoh@google.com Reported-by: Sargun Dhillon Signed-off-by: Jon Pan-Doh Signed-off-by: Bjorn Helgaas Tested-by: Krzysztof Wilczy=C5=84ski --- drivers/pci/pci.h | 3 ++- drivers/pci/pcie/aer.c | 49 ++++++++++++++++++++++++++++++++++++------ drivers/pci/pcie/dpc.c | 1 + 3 files changed, 46 insertions(+), 7 deletions(-) diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h index 705f9ef58acc..65c466279ade 100644 --- a/drivers/pci/pci.h +++ b/drivers/pci/pci.h @@ -593,7 +593,8 @@ struct aer_err_info { unsigned int id:16; =20 unsigned int severity:2; /* 0:NONFATAL | 1:FATAL | 2:COR */ - unsigned int __pad1:5; + unsigned int ratelimit:1; /* 0=3Dskip, 1=3Dprint */ + unsigned int __pad1:4; unsigned int multi_error_valid:1; =20 unsigned int first_error:5; diff --git a/drivers/pci/pcie/aer.c b/drivers/pci/pcie/aer.c index da62032bf024..c335e0bb9f51 100644 --- a/drivers/pci/pcie/aer.c +++ b/drivers/pci/pcie/aer.c @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include @@ -88,6 +89,10 @@ struct aer_report { u64 rootport_total_cor_errs; u64 rootport_total_fatal_errs; u64 rootport_total_nonfatal_errs; + + /* Ratelimits for errors */ + struct ratelimit_state cor_log_ratelimit; + struct ratelimit_state uncor_log_ratelimit; }; =20 #define AER_LOG_TLP_MASKS (PCI_ERR_UNC_POISON_TLP| \ @@ -379,6 +384,11 @@ void pci_aer_init(struct pci_dev *dev) =20 dev->aer_report =3D kzalloc(sizeof(*dev->aer_report), GFP_KERNEL); =20 + ratelimit_state_init(&dev->aer_report->cor_log_ratelimit, + DEFAULT_RATELIMIT_INTERVAL, DEFAULT_RATELIMIT_BURST); + ratelimit_state_init(&dev->aer_report->uncor_log_ratelimit, + DEFAULT_RATELIMIT_INTERVAL, DEFAULT_RATELIMIT_BURST); + /* * We save/restore PCI_ERR_UNCOR_MASK, PCI_ERR_UNCOR_SEVER, * PCI_ERR_COR_MASK, and PCI_ERR_CAP. Root and Root Complex Event @@ -672,6 +682,18 @@ static void pci_rootport_aer_stats_incr(struct pci_dev= *pdev, } } =20 +static int aer_ratelimit(struct pci_dev *dev, unsigned int severity) +{ + struct ratelimit_state *ratelimit; + + if (severity =3D=3D AER_CORRECTABLE) + ratelimit =3D &dev->aer_report->cor_log_ratelimit; + else + ratelimit =3D &dev->aer_report->uncor_log_ratelimit; + + return __ratelimit(ratelimit); +} + static void __aer_print_error(struct pci_dev *dev, struct aer_err_info *in= fo) { const char **strings; @@ -715,6 +737,9 @@ void aer_print_error(struct pci_dev *dev, struct aer_er= r_info *info) =20 pci_dev_aer_stats_incr(dev, info); =20 + if (!info->ratelimit) + return; + if (!info->status) { pci_err(dev, "PCIe Bus Error: severity=3D%s, type=3DInaccessible, (Unreg= istered Agent ID)\n", aer_error_severity_string[info->severity]); @@ -785,6 +810,9 @@ void pci_print_aer(struct pci_dev *dev, int aer_severit= y, =20 pci_dev_aer_stats_incr(dev, &info); =20 + if (!aer_ratelimit(dev, info.severity)) + return; + layer =3D AER_GET_LAYER_ERROR(aer_severity, status); agent =3D AER_GET_AGENT(aer_severity, status); =20 @@ -815,8 +843,14 @@ EXPORT_SYMBOL_NS_GPL(pci_print_aer, "CXL"); */ static int add_error_device(struct aer_err_info *e_info, struct pci_dev *d= ev) { + /* + * Ratelimit AER log messages. Generally we add the Error Source + * device, but there are is_error_source() cases that can result in + * multiple devices being added here, so we OR them all together. + */ if (e_info->error_dev_num < AER_MAX_MULTI_ERR_DEVICES) { e_info->dev[e_info->error_dev_num] =3D pci_dev_get(dev); + e_info->ratelimit |=3D aer_ratelimit(dev, e_info->severity); e_info->error_dev_num++; return 0; } @@ -914,7 +948,7 @@ static int find_device_iter(struct pci_dev *dev, void *= data) * e_info->error_dev_num and e_info->dev[], based on the given information. */ static bool find_source_device(struct pci_dev *parent, - struct aer_err_info *e_info) + struct aer_err_info *e_info) { struct pci_dev *dev =3D parent; int result; @@ -935,10 +969,12 @@ static bool find_source_device(struct pci_dev *parent, /* * If we didn't find any devices with errors logged in the AER * Capability, just print the Error Source ID from the Root Port or - * RCEC that received an ERR_* Message. + * RCEC that received an ERR_* Message, ratelimited by the RP or + * RCEC. */ if (!e_info->error_dev_num) { - aer_print_source(parent, e_info, " (no details found)"); + if (aer_ratelimit(parent, e_info->severity)) + aer_print_source(parent, e_info, " (no details found)"); return false; } return true; @@ -1147,9 +1183,10 @@ static void aer_recover_work_func(struct work_struct= *work) pdev =3D pci_get_domain_bus_and_slot(entry.domain, entry.bus, entry.devfn); if (!pdev) { - pr_err("no pci_dev for %04x:%02x:%02x.%x\n", - entry.domain, entry.bus, - PCI_SLOT(entry.devfn), PCI_FUNC(entry.devfn)); + pr_err_ratelimited("%04x:%02x:%02x.%x: no pci_dev found\n", + entry.domain, entry.bus, + PCI_SLOT(entry.devfn), + PCI_FUNC(entry.devfn)); continue; } pci_print_aer(pdev, entry.severity, entry.regs); diff --git a/drivers/pci/pcie/dpc.c b/drivers/pci/pcie/dpc.c index 34af0ea45c0d..597df7790f36 100644 --- a/drivers/pci/pcie/dpc.c +++ b/drivers/pci/pcie/dpc.c @@ -301,6 +301,7 @@ void dpc_process_error(struct pci_dev *pdev) else if (reason =3D=3D PCI_EXP_DPC_STATUS_TRIGGER_RSN_UNCOR && dpc_get_aer_uncorrect_severity(pdev, &info) && aer_get_device_error_info(pdev, &info)) { + info.ratelimit =3D 1; /* no ratelimiting */ aer_print_error(pdev, &info); pci_aer_clear_nonfatal_status(pdev); pci_aer_clear_fatal_status(pdev); --=20 2.43.0 From nobody Fri Dec 19 14:21:16 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 05DFE226D1F; Mon, 19 May 2025 21:37:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747690635; cv=none; b=TgMW+6qVQ60SDWMBSiRKuw2etu6hrcWAYTGB/fn33FFL56wIk5Gv5dHK1o2CgoWGYMxJHae2cKOxGjmwn6/XAfRmmEPJOGAtflbnymi4dpDRdl54HwvRrHVAfMBDj67u7f1Wp6Q4ndPOkCr5FfaFSpqUprj3zi7lAM00BwmyV5A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747690635; c=relaxed/simple; bh=909bKlpGXpejs6alzRrtkNNoVbidxfjnR8RhC93JgX0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=GLIh31DcR9TGqUQrZX+9r1zTFkM2zcJuJv7dAs6qkn+CfnVTbewC9drtI0IGPMs10uV/B0eI5XdkYc4v6PBKXUskRmA0n34vZlWQciyXPZGlIiBGaGbPW+8620EPY6BjYCry+z6FSk2gx/4CATddKqMqnJHMfaOS68wOg30yfbA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=N0WtaEvg; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="N0WtaEvg" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 447FAC4CEE9; Mon, 19 May 2025 21:37:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1747690634; bh=909bKlpGXpejs6alzRrtkNNoVbidxfjnR8RhC93JgX0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=N0WtaEvgXAzOSk9iDG8i/BZrjzO6AGUdr9aPPpLa2T8Ze5lwku1J0lo6iD8vdJcIy beoRBdYA6S0glwT3cdvYmet34cpc5K0od22JQ0ScSeDnVipX1eYOoy4F/gv8RKi9Ui 3wAUHYsd6CGCc36udQz7WFL8Me+OvicF9x+5I7CQLfrE8ukBB7oqEN1EjH4uY5asSG vQbCO8kxhiUNJZ7OwSpryzBcebvWZTu6O7sOWwxgWillMZwAjNURM+0TpG4HUIWiMo Hueh7xZWZ0WBB47iYJWQnPKbmpdpOjoTLwDeKvg08CCfsHqhCSaeHIb/OckfveUeNQ SXDn+SHgtYp0w== From: Bjorn Helgaas To: linux-pci@vger.kernel.org Cc: Jon Pan-Doh , Karolina Stolarek , Martin Petersen , Ben Fuller , Drew Walton , Anil Agrawal , Tony Luck , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , Sathyanarayanan Kuppuswamy , Lukas Wunner , Jonathan Cameron , Sargun Dhillon , "Paul E . McKenney" , Mahesh J Salgaonkar , Oliver O'Halloran , Kai-Heng Feng , Keith Busch , Robert Richter , Terry Bowman , Shiju Jose , Dave Jiang , linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, Bjorn Helgaas Subject: [PATCH v6 15/16] PCI/AER: Add ratelimits to PCI AER Documentation Date: Mon, 19 May 2025 16:35:57 -0500 Message-ID: <20250519213603.1257897-16-helgaas@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250519213603.1257897-1-helgaas@kernel.org> References: <20250519213603.1257897-1-helgaas@kernel.org> 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" From: Jon Pan-Doh Add ratelimits section for rationale and defaults. Signed-off-by: Karolina Stolarek Signed-off-by: Jon Pan-Doh Signed-off-by: Bjorn Helgaas Reviewed-by: Kuppuswamy Sathyanarayanan Acked-by: Paul E. McKenney Tested-by: Krzysztof Wilczy=C5=84ski --- Documentation/PCI/pcieaer-howto.rst | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Documentation/PCI/pcieaer-howto.rst b/Documentation/PCI/pcieae= r-howto.rst index f013f3b27c82..896d2a232a90 100644 --- a/Documentation/PCI/pcieaer-howto.rst +++ b/Documentation/PCI/pcieaer-howto.rst @@ -85,6 +85,17 @@ In the example, 'Requester ID' means the ID of the devic= e that sent the error message to the Root Port. Please refer to PCIe specs for other fields. =20 +AER Ratelimits +-------------- + +Since error messages can be generated for each transaction, we may see +large volumes of errors reported. To prevent spammy devices from flooding +the console/stalling execution, messages are throttled by device and error +type (correctable vs. uncorrectable). + +AER uses the default ratelimit of DEFAULT_RATELIMIT_BURST (10 events) over +DEFAULT_RATELIMIT_INTERVAL (5 seconds). + AER Statistics / Counters ------------------------- =20 --=20 2.43.0 From nobody Fri Dec 19 14:21:16 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 1A173227E95; Mon, 19 May 2025 21:37:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747690636; cv=none; b=gNX3ibm9KejvgoxFx5l+92xT6+fT10vttB7+6pVO12QIY739MyZZXBI8l1f+4e0OTcFDHTGyRV9NI5ozweSPxiM/itK+ETiWaJ5K6FNQIJnY5GtSr+NVF233kU7Bw00Us4g7ADRFaV/6ftfRFlN+VM7oTNRhLrXru1OvnNsdA8A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747690636; c=relaxed/simple; bh=12/NRUft87RDeqIIYKl8SbdG7KYjWdZEJIx6gghpJCI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=mxrXdDKj9mIGKpHGFknHvXkfbd018S6xCOLOwXfJ7B4edvoweU0GCOrGGI16oHZImrigOVO17ObLNr+uTJwch27jOwT/p8TwHGYR4bOJ8Y1422qiEylGB8K9k2qrWORjTQRLxcqzE3zbLPDPcMyBixdfvx/DJiTmL/8rLJZChxw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=in/YHymP; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="in/YHymP" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C9E29C4CEEB; Mon, 19 May 2025 21:37:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1747690636; bh=12/NRUft87RDeqIIYKl8SbdG7KYjWdZEJIx6gghpJCI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=in/YHymPRXWbK35wvQKFGaNCJZBQ8UibZjrxnnVuSCYvfhUchO3AG2tByDNuvrdgG 3GvCHmis0plvbOBpd4DPFMFEOk9golJRoIiyPEXlIrvtvG5Egs8VUkqpWA87cnQ5ey aCEwhrQtgEa3Tqjp7PU3UTpj8DjCXWq/Sd2ZXy6PCjt//O2ypHpfrgrvEiS++zwUw8 n+PyqU9WivhUVOQ8wSIilkAfq8bJaIEXCTYIj8ouMtc5bXixcnKvq8UU4rMricA2M3 VEgt7j7M6yBvDs0yUBzYFTACByp0ZJ2qqhBoGjv/EMmeRC7TavLmUwZA8JrnfnxtrB vJzlSvHjYCD3Q== From: Bjorn Helgaas To: linux-pci@vger.kernel.org Cc: Jon Pan-Doh , Karolina Stolarek , Martin Petersen , Ben Fuller , Drew Walton , Anil Agrawal , Tony Luck , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , Sathyanarayanan Kuppuswamy , Lukas Wunner , Jonathan Cameron , Sargun Dhillon , "Paul E . McKenney" , Mahesh J Salgaonkar , Oliver O'Halloran , Kai-Heng Feng , Keith Busch , Robert Richter , Terry Bowman , Shiju Jose , Dave Jiang , linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, Bjorn Helgaas Subject: [PATCH v6 16/16] PCI/AER: Add sysfs attributes for log ratelimits Date: Mon, 19 May 2025 16:35:58 -0500 Message-ID: <20250519213603.1257897-17-helgaas@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250519213603.1257897-1-helgaas@kernel.org> References: <20250519213603.1257897-1-helgaas@kernel.org> 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" From: Jon Pan-Doh Allow userspace to read/write log ratelimits per device (including enable/disable). Create aer/ sysfs directory to store them and any future aer configs. Update AER sysfs ABI filename to reflect the broader scope of AER sysfs attributes (e.g. stats and ratelimits). Documentation/ABI/testing/sysfs-bus-pci-devices-aer_stats -> sysfs-bus-pci-devices-aer Tested using aer-inject[1]. Configured correctable log ratelimit to 5. Sent 6 AER errors. Observed 5 errors logged while AER stats (cat /sys/bus/pci/devices//aer_dev_correctable) shows 6. Disabled ratelimiting and sent 6 more AER errors. Observed all 6 errors logged and accounted in AER stats (12 total errors). [1] https://git.kernel.org/pub/scm/linux/kernel/git/gong.chen/aer-inject.git Signed-off-by: Karolina Stolarek Signed-off-by: Jon Pan-Doh Signed-off-by: Bjorn Helgaas Acked-by: Paul E. McKenney Reviewed-by: Kuppuswamy Sathyanarayanan Tested-by: Krzysztof Wilczy=C5=84ski --- ...es-aer_stats =3D> sysfs-bus-pci-devices-aer} | 34 +++++++ Documentation/PCI/pcieaer-howto.rst | 5 +- drivers/pci/pci-sysfs.c | 1 + drivers/pci/pci.h | 1 + drivers/pci/pcie/aer.c | 99 +++++++++++++++++++ 5 files changed, 139 insertions(+), 1 deletion(-) rename Documentation/ABI/testing/{sysfs-bus-pci-devices-aer_stats =3D> sys= fs-bus-pci-devices-aer} (77%) diff --git a/Documentation/ABI/testing/sysfs-bus-pci-devices-aer_stats b/Do= cumentation/ABI/testing/sysfs-bus-pci-devices-aer similarity index 77% rename from Documentation/ABI/testing/sysfs-bus-pci-devices-aer_stats rename to Documentation/ABI/testing/sysfs-bus-pci-devices-aer index d1f67bb81d5d..771204197b71 100644 --- a/Documentation/ABI/testing/sysfs-bus-pci-devices-aer_stats +++ b/Documentation/ABI/testing/sysfs-bus-pci-devices-aer @@ -117,3 +117,37 @@ Date: July 2018 KernelVersion: 4.19.0 Contact: linux-pci@vger.kernel.org, rajatja@google.com Description: Total number of ERR_NONFATAL messages reported to rootport. + +PCIe AER ratelimits +------------------- + +These attributes show up under all the devices that are AER capable. +They represent configurable ratelimits of logs per error type. + +See Documentation/PCI/pcieaer-howto.rst for more info on ratelimits. + +What: /sys/bus/pci/devices//aer/ratelimit_log_enable +Date: March 2025 +KernelVersion: 6.15.0 +Contact: linux-pci@vger.kernel.org, pandoh@google.com +Description: Writing 1/0 enables/disables AER log ratelimiting. Reading + gets whether or not AER is currently enabled. Enabled by + default. + +What: /sys/bus/pci/devices//aer/ratelimit_burst_cor_log +Date: March 2025 +KernelVersion: 6.15.0 +Contact: linux-pci@vger.kernel.org, pandoh@google.com +Description: Ratelimit burst for correctable error logs. Writing a value + changes the number of errors (burst) allowed per interval + (5 second window) before ratelimiting. Reading gets the + current ratelimit burst. + +What: /sys/bus/pci/devices//aer/ratelimit_burst_uncor_log +Date: March 2025 +KernelVersion: 6.15.0 +Contact: linux-pci@vger.kernel.org, pandoh@google.com +Description: Ratelimit burst for uncorrectable error logs. Writing a + value changes the number of errors (burst) allowed per + interval (5 second window) before ratelimiting. Reading + gets the current ratelimit burst. diff --git a/Documentation/PCI/pcieaer-howto.rst b/Documentation/PCI/pcieae= r-howto.rst index 896d2a232a90..043cdb3194be 100644 --- a/Documentation/PCI/pcieaer-howto.rst +++ b/Documentation/PCI/pcieaer-howto.rst @@ -96,12 +96,15 @@ type (correctable vs. uncorrectable). AER uses the default ratelimit of DEFAULT_RATELIMIT_BURST (10 events) over DEFAULT_RATELIMIT_INTERVAL (5 seconds). =20 +Ratelimits are exposed in the form of sysfs attributes and configurable. +See Documentation/ABI/testing/sysfs-bus-pci-devices-aer. + AER Statistics / Counters ------------------------- =20 When PCIe AER errors are captured, the counters / statistics are also expo= sed in the form of sysfs attributes which are documented at -Documentation/ABI/testing/sysfs-bus-pci-devices-aer_stats +Documentation/ABI/testing/sysfs-bus-pci-devices-aer. =20 Developer Guide =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c index c6cda56ca52c..278de99b00ce 100644 --- a/drivers/pci/pci-sysfs.c +++ b/drivers/pci/pci-sysfs.c @@ -1805,6 +1805,7 @@ const struct attribute_group *pci_dev_attr_groups[] = =3D { &pcie_dev_attr_group, #ifdef CONFIG_PCIEAER &aer_stats_attr_group, + &aer_attr_group, #endif #ifdef CONFIG_PCIEASPM &aspm_ctrl_attr_group, diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h index 65c466279ade..a3261e842d6d 100644 --- a/drivers/pci/pci.h +++ b/drivers/pci/pci.h @@ -963,6 +963,7 @@ void pci_no_aer(void); void pci_aer_init(struct pci_dev *dev); void pci_aer_exit(struct pci_dev *dev); extern const struct attribute_group aer_stats_attr_group; +extern const struct attribute_group aer_attr_group; void pci_aer_clear_fatal_status(struct pci_dev *dev); int pci_aer_clear_status(struct pci_dev *dev); int pci_aer_raw_clear_status(struct pci_dev *dev); diff --git a/drivers/pci/pcie/aer.c b/drivers/pci/pcie/aer.c index c335e0bb9f51..42df5cb963b3 100644 --- a/drivers/pci/pcie/aer.c +++ b/drivers/pci/pcie/aer.c @@ -627,6 +627,105 @@ const struct attribute_group aer_stats_attr_group =3D= { .is_visible =3D aer_stats_attrs_are_visible, }; =20 +/* + * Ratelimit enable toggle + * 0: disabled with ratelimit.interval =3D 0 + * 1: enabled with ratelimit.interval =3D nonzero + */ +static ssize_t ratelimit_log_enable_show(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + struct pci_dev *pdev =3D to_pci_dev(dev); + bool enabled =3D pdev->aer_report->cor_log_ratelimit.interval !=3D 0; + + return sysfs_emit(buf, "%d\n", enabled); +} + +static ssize_t ratelimit_log_enable_store(struct device *dev, + struct device_attribute *attr, + const char *buf, size_t count) +{ + struct pci_dev *pdev =3D to_pci_dev(dev); + bool enable; + int interval; + + if (!capable(CAP_SYS_ADMIN)) + return -EPERM; + + if (kstrtobool(buf, &enable) < 0) + return -EINVAL; + + if (enable) + interval =3D DEFAULT_RATELIMIT_INTERVAL; + else + interval =3D 0; + + pdev->aer_report->cor_log_ratelimit.interval =3D interval; + pdev->aer_report->uncor_log_ratelimit.interval =3D interval; + + return count; +} +static DEVICE_ATTR_RW(ratelimit_log_enable); + +#define aer_ratelimit_burst_attr(name, ratelimit) \ + static ssize_t \ + name##_show(struct device *dev, struct device_attribute *attr, \ + char *buf) \ +{ \ + struct pci_dev *pdev =3D to_pci_dev(dev); \ + \ + return sysfs_emit(buf, "%d\n", \ + pdev->aer_report->ratelimit.burst); \ +} \ + \ + static ssize_t \ + name##_store(struct device *dev, struct device_attribute *attr, \ + const char *buf, size_t count) \ +{ \ + struct pci_dev *pdev =3D to_pci_dev(dev); \ + int burst; \ + \ + if (!capable(CAP_SYS_ADMIN)) \ + return -EPERM; \ + \ + if (kstrtoint(buf, 0, &burst) < 0) \ + return -EINVAL; \ + \ + pdev->aer_report->ratelimit.burst =3D burst; \ + \ + return count; \ +} \ +static DEVICE_ATTR_RW(name) + +aer_ratelimit_burst_attr(ratelimit_burst_cor_log, cor_log_ratelimit); +aer_ratelimit_burst_attr(ratelimit_burst_uncor_log, uncor_log_ratelimit); + +static struct attribute *aer_attrs[] =3D { + &dev_attr_ratelimit_log_enable.attr, + &dev_attr_ratelimit_burst_cor_log.attr, + &dev_attr_ratelimit_burst_uncor_log.attr, + NULL +}; + +static umode_t aer_attrs_are_visible(struct kobject *kobj, + struct attribute *a, int n) +{ + struct device *dev =3D kobj_to_dev(kobj); + struct pci_dev *pdev =3D to_pci_dev(dev); + + if (!pdev->aer_report) + return 0; + + return a->mode; +} + +const struct attribute_group aer_attr_group =3D { + .name =3D "aer", + .attrs =3D aer_attrs, + .is_visible =3D aer_attrs_are_visible, +}; + static void pci_dev_aer_stats_incr(struct pci_dev *pdev, struct aer_err_info *info) { --=20 2.43.0