Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/1.2/patches/2233127/?format=api
{ "id": 2233127, "url": "http://patchwork.ozlabs.org/api/1.2/patches/2233127/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-pci/patch/20260505173029.2718246-8-terry.bowman@amd.com/", "project": { "id": 28, "url": "http://patchwork.ozlabs.org/api/1.2/projects/28/?format=api", "name": "Linux PCI development", "link_name": "linux-pci", "list_id": "linux-pci.vger.kernel.org", "list_email": "linux-pci@vger.kernel.org", "web_url": null, "scm_url": null, "webscm_url": null, "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20260505173029.2718246-8-terry.bowman@amd.com>", "list_archive_url": null, "date": "2026-05-05T17:30:25", "name": "[v17,07/11] PCI/CXL: Add RCH support to CXL handlers", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "cc8b1c5214d96882eada95b42b6011072aac74bc", "submitter": { "id": 82124, "url": "http://patchwork.ozlabs.org/api/1.2/people/82124/?format=api", "name": "Bowman, Terry", "email": "Terry.Bowman@amd.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/linux-pci/patch/20260505173029.2718246-8-terry.bowman@amd.com/mbox/", "series": [ { "id": 502875, "url": "http://patchwork.ozlabs.org/api/1.2/series/502875/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-pci/list/?series=502875", "date": "2026-05-05T17:30:19", "name": "Enable CXL PCIe Port Protocol Error handling and logging", "version": 17, "mbox": "http://patchwork.ozlabs.org/series/502875/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2233127/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2233127/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "\n <linux-pci+bounces-53771-incoming=patchwork.ozlabs.org@vger.kernel.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "linux-pci@vger.kernel.org" ], "Delivered-To": "patchwork-incoming@legolas.ozlabs.org", "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=amd.com header.i=@amd.com header.a=rsa-sha256\n header.s=selector1 header.b=20NprxnM;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=172.234.253.10; helo=sea.lore.kernel.org;\n envelope-from=linux-pci+bounces-53771-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)", "smtp.subspace.kernel.org;\n\tdkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com\n header.b=\"20NprxnM\"", "smtp.subspace.kernel.org;\n arc=fail smtp.client-ip=52.101.62.35", "smtp.subspace.kernel.org;\n dmarc=pass (p=quarantine dis=none) header.from=amd.com", "smtp.subspace.kernel.org;\n spf=fail smtp.mailfrom=amd.com" ], "Received": [ "from sea.lore.kernel.org (sea.lore.kernel.org [172.234.253.10])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g95Gd3N4jz1yJ0\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 06 May 2026 03:34:01 +1000 (AEST)", "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id 41B1E3094AD6\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 5 May 2026 17:32:19 +0000 (UTC)", "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 171F14A2E24;\n\tTue, 5 May 2026 17:32:18 +0000 (UTC)", "from DM5PR21CU001.outbound.protection.outlook.com\n (mail-centralusazon11011035.outbound.protection.outlook.com [52.101.62.35])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 884F638E5F9;\n\tTue, 5 May 2026 17:32:16 +0000 (UTC)", "from DM6PR03CA0097.namprd03.prod.outlook.com (2603:10b6:5:333::30)\n by LV8PR12MB9689.namprd12.prod.outlook.com (2603:10b6:408:296::6) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9891.15; Tue, 5 May\n 2026 17:32:11 +0000", "from DM2PEPF00003FC5.namprd04.prod.outlook.com\n (2603:10b6:5:333:cafe::40) by DM6PR03CA0097.outlook.office365.com\n (2603:10b6:5:333::30) with Microsoft SMTP Server (version=TLS1_3,\n cipher=TLS_AES_256_GCM_SHA384) id 15.20.9870.27 via Frontend Transport; Tue,\n 5 May 2026 17:32:10 +0000", "from satlexmb07.amd.com (165.204.84.17) by\n DM2PEPF00003FC5.mail.protection.outlook.com (10.167.23.23) with Microsoft\n SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.9891.9 via Frontend Transport; Tue, 5 May 2026 17:32:10 +0000", "from ethanolx7ea3host.amd.com (10.180.168.240) by satlexmb07.amd.com\n (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Tue, 5 May\n 2026 12:32:07 -0500" ], "ARC-Seal": [ "i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1778002338; cv=fail;\n b=CHO739tX4gARl+fCNtLRM1Zh2KKhm2E6vY5ngP9otNO37fMwUDOZa2yD0kV0i1SdAFwH4QPXzXNVale/LxI+Oer4zjgljBcFs4MFGNSFi0kbzGaxQlC/Hv8To4HydscsG/+P07cVIBsnKaYAbeEpkTmsgBUbxOb99wPC8BSU0Ec=", "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=e82m5w3BR4hsEt861QiYljOZVABca144VkOC8wwVFxC8lgkKXyuE0iV7KIGrUPFUDpotkeDeSkpfwRJ0RQ2U8xdBroDEXjR+4LmuWU3zclRRQ4zoCaWlaIbhy5Mbj6B8X+P6q1aPi1KPbjrt22mZFveBHLQwGOpYjsWbLaIhSRw3P2Bsxb62Hg8t7VkaPQD/FCNLhNqYkXFLzs9cL8NFWBiNP0IlWoT5ALzqywn8ZQJP5Qm3zrjI1IWlfnOWBGQegz585WWqj9qd9D4n57+4NgSaIFwy6VMQbDNugxQ2zmqgctV4hT1ED3FVRZTyPb8Od6KS/xiJt6UPRIQxDCVGgA==" ], "ARC-Message-Signature": [ "i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1778002338; c=relaxed/simple;\n\tbh=uJJqBQnkFc/+M/S/I/kpQTqJ5kcWo8+dICSVm68JA+U=;\n\th=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References:\n\t MIME-Version:Content-Type;\n b=SL0EN0lX/7bOzi50A+ozrO7Gm2NBpRQYkPQ+ixvl8YPxbybzriBwtO4PkZvh1Xz4Ywp2BwGEsvlMMxjJQRLrPctboITinvQnako3NlwwzwevM03z+5u0Z3vS1MeA11nxBQ084BO+zJvl2xmgcxinNDcVGxsWKMF9ZWxRpyoHjMM=", "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=z/J9DdylZ7SjYLLITJjp/ySfvTV3/KeXze3aVV5QxH4=;\n b=FGR5Kf+zuFWSQiJ87guj32q8oX3yCNha+33CbmSLNmwLp30et8jNFJvB6tDgdL2j58beggF7qRsEBcbFWK+LFWUjpWqr4GUEyUFDT/EZeBxgh/13x9yDnEFzA2buNAxagQHlVui7yxcBAvKOuH8E4W1ml9yLuiWfF781hNQGNdK3d/1vCD6X7rldHTfjQW9lfec9DUzO4iInLHnCPoPD7wc8RmHb8YMp3KDRV6VH8vgwYsFelFUFIuC2KjQG3nG+1Sof0zQtPQ1jB/QUt4F1KiszOdYP2zirSYb36qd2gWEpMh6adNZZjKf97TL5H0Oc7XnpoHSHfXcWoAKc3S9voA==" ], "ARC-Authentication-Results": [ "i=2; smtp.subspace.kernel.org;\n dmarc=pass (p=quarantine dis=none) header.from=amd.com;\n spf=fail smtp.mailfrom=amd.com;\n dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com\n header.b=20NprxnM; arc=fail smtp.client-ip=52.101.62.35", "i=1; mx.microsoft.com 1; spf=pass (sender ip is\n 165.204.84.17) smtp.rcpttodomain=stgolabs.net smtp.mailfrom=amd.com;\n dmarc=pass (p=quarantine sp=quarantine pct=100) action=none\n header.from=amd.com; dkim=none (message not signed); arc=none (0)" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=z/J9DdylZ7SjYLLITJjp/ySfvTV3/KeXze3aVV5QxH4=;\n b=20NprxnMZBYYm/itZQzVzUl+JXjfhskmL2Pu1Kg1pNi1utPHkzNXurngVmppe73SHWrMSxRGr26I0BtoRPZ0Pvo1aPd6XOALkYN6Yg4rMjuBanL1uYhLkJt4IeDODfF8r0ckFnWDH8LNn9ypKSZEeKVdJqdj+C8/+cZHiIh01Yw=", "X-MS-Exchange-Authentication-Results": "spf=pass (sender IP is 165.204.84.17)\n smtp.mailfrom=amd.com; dkim=none (message not signed)\n header.d=none;dmarc=pass action=none header.from=amd.com;", "Received-SPF": "Pass (protection.outlook.com: domain of amd.com designates\n 165.204.84.17 as permitted sender) receiver=protection.outlook.com;\n client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C", "From": "Terry Bowman <terry.bowman@amd.com>", "To": "<dave@stgolabs.net>, <jic23@kernel.org>, <dave.jiang@intel.com>,\n\t<alison.schofield@intel.com>, <djbw@kernel.org>, <bhelgaas@google.com>,\n\t<shiju.jose@huawei.com>, <ming.li@zohomail.com>,\n\t<Smita.KoralahalliChannabasappa@amd.com>, <rrichter@amd.com>,\n\t<dan.carpenter@linaro.org>, <PradeepVineshReddy.Kodamati@amd.com>,\n\t<lukas@wunner.de>, <Benjamin.Cheatham@amd.com>,\n\t<sathyanarayanan.kuppuswamy@linux.intel.com>, <vishal.l.verma@intel.com>,\n\t<alucerop@amd.com>, <ira.weiny@intel.com>, <corbet@lwn.net>,\n\t<rafael@kernel.org>, <xueshuai@linux.alibaba.com>,\n\t<linux-cxl@vger.kernel.org>", "CC": "<linux-kernel@vger.kernel.org>, <linux-pci@vger.kernel.org>,\n\t<linux-acpi@vger.kernel.org>, <linux-doc@vger.kernel.org>,\n\t<terry.bowman@amd.com>", "Subject": "[PATCH v17 07/11] PCI/CXL: Add RCH support to CXL handlers", "Date": "Tue, 5 May 2026 12:30:25 -0500", "Message-ID": "<20260505173029.2718246-8-terry.bowman@amd.com>", "X-Mailer": "git-send-email 2.34.1", "In-Reply-To": "<20260505173029.2718246-1-terry.bowman@amd.com>", "References": "<20260505173029.2718246-1-terry.bowman@amd.com>", "Precedence": "bulk", "X-Mailing-List": "linux-pci@vger.kernel.org", "List-Id": "<linux-pci.vger.kernel.org>", "List-Subscribe": "<mailto:linux-pci+subscribe@vger.kernel.org>", "List-Unsubscribe": "<mailto:linux-pci+unsubscribe@vger.kernel.org>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "7bit", "Content-Type": "text/plain", "X-ClientProxiedBy": "satlexmb08.amd.com (10.181.42.217) To satlexmb07.amd.com\n (10.181.42.216)", "X-EOPAttributedMessage": "0", "X-MS-PublicTrafficType": "Email", "X-MS-TrafficTypeDiagnostic": "DM2PEPF00003FC5:EE_|LV8PR12MB9689:EE_", "X-MS-Office365-Filtering-Correlation-Id": "03d243d6-f822-4103-628b-08deaacc3cd4", "X-MS-Exchange-SenderADCheck": "1", "X-MS-Exchange-AntiSpam-Relay": "0", "X-Microsoft-Antispam": "\n\tBCL:0;ARA:13230040|82310400026|376014|1800799024|7416014|36860700016|921020|22082099003|56012099003|18002099003;", "X-Microsoft-Antispam-Message-Info": "\n\tnkLLT25W6rHJnff16VAn9DnNBwiuCtXIY4fW+1w3PAJ5jxIrnQQnKX977gz9JR2E9Vv8I1dCNpxAvfgMjrGVOcC0ntSRHHXt+KGA5SnkA1Hff2zg34fOfKZzhs0EPC34m7xwfT7fTivkxPfGdN8OVJIcQspezbLWFCIF4qh/bmvW+E65/feqCr13sSB+7R+VVhIxnik98zO9fjygQ/BRMR27/S/gNcQklwJZN/Tj5eg6avTdgQ/6UqQMeKmQYatunTe4VIcFX+1s7rIMrjpTeRgp5y+py82fsPGmWnAzUU8VTwDOyofLpJpc3A6v6l7ovmm0qQTi8ZcXFvtdMQIAVhrLD45HQ2Cko/wL7RT4Bd5aP3b3Ui7zUD/aVU8/KAXTsc5ALzMrezqBXtQCWgo0MGzhRDWrzha8rwci6Ccu2PeKH3YKhkdpEfbyJRt19/6tSjDjAqAfdYaUDpxh4IRE5b6I5QQ6CSoKi0xnThhSuhSvhQSWmVdy/jEamBR/pLNUrD1cBaoSjT6155hw1IICwzFhQYW2FI3staVATuoJPfy5QeXTq69T+bf+/DkpJq5IjRcgGaZ5Gw5p3q7y5ULtGzkjszzIlGUVGZdcCmoGPIWYVx6PVWoGO4s7UD5ZPJTCYaKVFCBO7A7fH0VUBUL7q4x/vCi0I/3GH7wwgqlrBD3eHR3f9kGiDRkaZQ+VVhKEDkb8r2k30YcYTw2zK4LF3fLP155mK8kxhR5w/w5qisi9QVE8ZSIl7azg7tw6CYKbxAzmX2rTj+4lS84NnGGduw==", "X-Forefront-Antispam-Report": "\n\tCIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(376014)(1800799024)(7416014)(36860700016)(921020)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;", "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1", "X-MS-Exchange-AntiSpam-MessageData-0": "\n\tYocQtIonfNXtZ+HJHFJH2WfLMkkTxvJR66BAH0/uJrDgR0RqJApeOLDKjIQpldeZYy6EQqzvhMnnITFChmj2j+dFZK+Kkr+uaEgLdzhBYfl5LxJRpFf2QMqwBaCSd/jwyxxDwKP17+qBDsEi6Ig+0ufIleomd160422m1WJjqwOaXYCDtAXPVGgdx8MkUmkQI80ei5c2krhwpLHA0Bd29VpP004EXY47b0Z2sPEPLLLbrWMqv+iUa3trgjFhuokkVD8xq7lbZvpNnCrEilf7NzYMgeSNcP2KWWnesr5H2ZtO7DHc0uJcmeWmsqZ670+8kd7lJG/kg/iCDJFWnll+xmpHvFcBXsig8a4vMCie11R3sLl22+8kz+6paUhwUyXQ6P6TtYxT7z8FycuUVysl3tUV4obXAiFaj9MxQSlhoxcBZJBMR4bADOUyWkyLjl4K", "X-OriginatorOrg": "amd.com", "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "05 May 2026 17:32:10.3275\n (UTC)", "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 03d243d6-f822-4103-628b-08deaacc3cd4", "X-MS-Exchange-CrossTenant-Id": "3dd8961f-e488-4e60-8e11-a82d994e183d", "X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp": "\n TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb07.amd.com]", "X-MS-Exchange-CrossTenant-AuthSource": "\n\tDM2PEPF00003FC5.namprd04.prod.outlook.com", "X-MS-Exchange-CrossTenant-AuthAs": "Anonymous", "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem", "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "LV8PR12MB9689" }, "content": "Restricted CXL Host (RCH) error handling is a separate path from the\nnew CXL Port error handling flow. Fold RCH error handling into the\nPort flow so both share a common entry point.\n\nUpdate cxl_rch_handle_error_iter() to forward RCH protocol errors\nthrough the AER-CXL kfifo.\n\nUpdate cxl_handle_proto_error() to dispatch RCH errors via\ncxl_handle_rdport_errors(). cxl_handle_rdport_errors() handles both\ncorrectable and uncorrectable RCH protocol errors.\n\nBehavior change: an RCD uncorrectable CXL RAS error now panics via\ncxl_do_recovery(). Before this patch the RCH path returned\nPCI_ERS_RESULT_NEED_RESET via cxl_pci's err_handler. After this patch\nthe same condition panics. This matches the panic policy added in the\ncommon CXL Port protocol error flow. CXL.cachemem traffic cannot be\nsafely recovered from an uncorrectable protocol error in software.\n\nChange cxl_handle_rdport_errors() to take a PCI device instead of a\nCXL device state, matching the new caller context. The error trace events\nemitted from this path now report device=<PCI BDF> instead of device=<memN>,\nmatching the rest of the unified CXL trace events. Userspace consumers keyed\noff the memdev name need to map the PCI BDF back to a memdev.\n\nInclude the RCD Endpoint serial number in RCH log messages so the RCH\ncan be associated with its RCD.\n\nRemove the cxlds->rcd check from cxl_cor_error_detected() and\ncxl_error_detected(). RCH errors are now forwarded by\ncxl_rch_handle_error_iter() through the AER-CXL kfifo to\ncxl_handle_proto_error(), so cxl_pci's err_handler no longer sees\nthem.\n\nSigned-off-by: Terry Bowman <terry.bowman@amd.com>\n\n---\n\nChanges in v16->v17:\n- Drop now-dead cxlds->rcd branches from cxl_{cor_,}error_detected().\n- Drop duplicate subject line from commit body.\n- Document panic-on-uncorrectable behavior change for RCD path.\n- Document trace event device-name change (memN -> PCI BDF) for RCH path.\n- Rewrite cxl_handle_proto_error() RC_END comment to clarify RCD/RCH shared\n interrupt relationship\n- Rewrite commit message\n\nChanges in v16:\n- New commit\n---\n drivers/cxl/core/core.h | 4 ++--\n drivers/cxl/core/ras.c | 14 +++++++++-----\n drivers/cxl/core/ras_rch.c | 8 +++-----\n drivers/pci/pcie/aer_cxl_rch.c | 17 +----------------\n 4 files changed, 15 insertions(+), 28 deletions(-)", "diff": "diff --git a/drivers/cxl/core/core.h b/drivers/cxl/core/core.h\nindex bc36cd1575a4..2c7387506dfb 100644\n--- a/drivers/cxl/core/core.h\n+++ b/drivers/cxl/core/core.h\n@@ -188,7 +188,7 @@ void cxl_handle_cor_ras(struct device *dev, u64 serial,\n \t\t\tvoid __iomem *ras_base);\n void cxl_dport_map_rch_aer(struct cxl_dport *dport);\n void cxl_disable_rch_root_ints(struct cxl_dport *dport);\n-void cxl_handle_rdport_errors(struct cxl_dev_state *cxlds);\n+void cxl_handle_rdport_errors(struct pci_dev *pdev);\n void devm_cxl_dport_ras_setup(struct cxl_dport *dport);\n #else\n static inline int cxl_ras_init(void)\n@@ -205,7 +205,7 @@ static inline void cxl_handle_cor_ras(struct device *dev, u64 serial,\n \t\t\t\t void __iomem *ras_base) { }\n static inline void cxl_dport_map_rch_aer(struct cxl_dport *dport) { }\n static inline void cxl_disable_rch_root_ints(struct cxl_dport *dport) { }\n-static inline void cxl_handle_rdport_errors(struct cxl_dev_state *cxlds) { }\n+static inline void cxl_handle_rdport_errors(struct pci_dev *pdev) { }\n static inline void devm_cxl_dport_ras_setup(struct cxl_dport *dport) { }\n #endif /* CONFIG_CXL_RAS */\n \ndiff --git a/drivers/cxl/core/ras.c b/drivers/cxl/core/ras.c\nindex 0a552d5a236e..1f1dd20623f6 100644\n--- a/drivers/cxl/core/ras.c\n+++ b/drivers/cxl/core/ras.c\n@@ -267,9 +267,6 @@ void cxl_cor_error_detected(struct pci_dev *pdev)\n \t\t\treturn;\n \t\t}\n \n-\t\tif (cxlds->rcd)\n-\t\t\tcxl_handle_rdport_errors(cxlds);\n-\n \t\tcxl_handle_cor_ras(&cxlds->cxlmd->dev, pci_get_dsn(pdev),\n \t\t\t\t cxlmd->endpoint->regs.ras);\n \t}\n@@ -292,8 +289,6 @@ pci_ers_result_t cxl_error_detected(struct pci_dev *pdev,\n \t\t\treturn PCI_ERS_RESULT_DISCONNECT;\n \t\t}\n \n-\t\tif (cxlds->rcd)\n-\t\t\tcxl_handle_rdport_errors(cxlds);\n \t\t/*\n \t\t * A frozen channel indicates an impending reset which is fatal to\n \t\t * CXL.mem operation, and will likely crash the system. On the off\n@@ -329,6 +324,15 @@ EXPORT_SYMBOL_NS_GPL(cxl_error_detected, \"CXL\");\n static void cxl_handle_proto_error(struct pci_dev *pdev, struct cxl_port *port,\n \t\t\t\t struct cxl_dport *dport, int severity)\n {\n+\t/*\n+\t * An RC_END device is an RCD (Restricted CXL Device). Its AER\n+\t * interrupt is shared with the RCH Downstream Port, so handle RCH\n+\t * Downstream Port protocol errors first before processing the RCD's\n+\t * own errors. See CXL spec r3.1 s12.2.\n+\t */\n+\tif (pci_pcie_type(pdev) == PCI_EXP_TYPE_RC_END)\n+\t\tcxl_handle_rdport_errors(pdev);\n+\n \tif (severity == AER_CORRECTABLE) {\n \t\tcxl_handle_cor_ras(&pdev->dev, pci_get_dsn(pdev),\n \t\t\t\t to_ras_base(port, dport));\ndiff --git a/drivers/cxl/core/ras_rch.c b/drivers/cxl/core/ras_rch.c\nindex 61835fbafc0f..cbd02cabefbc 100644\n--- a/drivers/cxl/core/ras_rch.c\n+++ b/drivers/cxl/core/ras_rch.c\n@@ -1,7 +1,6 @@\n // SPDX-License-Identifier: GPL-2.0-only\n /* Copyright(c) 2025 AMD Corporation. All rights reserved. */\n \n-#include <linux/types.h>\n #include <linux/aer.h>\n #include \"cxl.h\"\n #include \"core.h\"\n@@ -95,9 +94,8 @@ static bool cxl_rch_get_aer_severity(struct aer_capability_regs *aer_regs,\n \treturn false;\n }\n \n-void cxl_handle_rdport_errors(struct cxl_dev_state *cxlds)\n+void cxl_handle_rdport_errors(struct pci_dev *pdev)\n {\n-\tstruct pci_dev *pdev = to_pci_dev(cxlds->dev);\n \tstruct aer_capability_regs aer_regs;\n \tstruct cxl_dport *dport;\n \tint severity;\n@@ -115,9 +113,9 @@ void cxl_handle_rdport_errors(struct cxl_dev_state *cxlds)\n \n \tpci_print_aer(pdev, severity, &aer_regs);\n \tif (severity == AER_CORRECTABLE)\n-\t\tcxl_handle_cor_ras(&cxlds->cxlmd->dev, pci_get_dsn(pdev),\n+\t\tcxl_handle_cor_ras(&pdev->dev, pci_get_dsn(pdev),\n \t\t\t\t dport->regs.ras);\n \telse\n-\t\tcxl_handle_ras(&cxlds->cxlmd->dev, pci_get_dsn(pdev),\n+\t\tcxl_handle_ras(&pdev->dev, pci_get_dsn(pdev),\n \t\t\t dport->regs.ras);\n }\ndiff --git a/drivers/pci/pcie/aer_cxl_rch.c b/drivers/pci/pcie/aer_cxl_rch.c\nindex e471eefec9c4..83142eac0cab 100644\n--- a/drivers/pci/pcie/aer_cxl_rch.c\n+++ b/drivers/pci/pcie/aer_cxl_rch.c\n@@ -37,26 +37,11 @@ static bool cxl_error_is_native(struct pci_dev *dev)\n static int cxl_rch_handle_error_iter(struct pci_dev *dev, void *data)\n {\n \tstruct aer_err_info *info = (struct aer_err_info *)data;\n-\tconst struct pci_error_handlers *err_handler;\n \n \tif (!is_cxl_mem_dev(dev) || !cxl_error_is_native(dev))\n \t\treturn 0;\n \n-\tguard(device)(&dev->dev);\n-\n-\terr_handler = dev->driver ? dev->driver->err_handler : NULL;\n-\tif (!err_handler)\n-\t\treturn 0;\n-\n-\tif (info->severity == AER_CORRECTABLE) {\n-\t\tif (err_handler->cor_error_detected)\n-\t\t\terr_handler->cor_error_detected(dev);\n-\t} else if (err_handler->error_detected) {\n-\t\tif (info->severity == AER_NONFATAL)\n-\t\t\terr_handler->error_detected(dev, pci_channel_io_normal);\n-\t\telse if (info->severity == AER_FATAL)\n-\t\t\terr_handler->error_detected(dev, pci_channel_io_frozen);\n-\t}\n+\tcxl_forward_error(dev, info);\n \treturn 0;\n }\n \n", "prefixes": [ "v17", "07/11" ] }