From nobody Mon Feb 9 01:34:57 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (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 C1F1F28A1F1 for ; Tue, 2 Dec 2025 14:23:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764685388; cv=none; b=Xv7rpXMVuQ3wl9oyFN9+c7/Ad/T4GtqDayUs7tHjvZ6ukRFdT97mC4MDZ+5cPLxkUOAzvdD0AV4efZIoPyWRI0m+gs5FbwYyf3O6DtUVjD0OXkEn58kWatUQgluBplbg/Iq0+xFcxjMS+OAru6TZnwEhIb2PXPU66FZHY9qbJzg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764685388; c=relaxed/simple; bh=5z1ouJ38EhP2+fHSIKbzZu23IGvzKgpnENHaWvqW/bk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Lspvt0u4vzCOEzWZllgJKqM4NAl82iotyUHwG7g1xBo0dGXi6N0dqPNECFR/XUinHf11IXQEnttqpYp7iEUSWE6Ar3fQQJVlylM/fHyerS3/vpoCCrq8XQMPeuUy1GUcjbrBz4MZcPVrmvUJZhYUqlm0UGwV+8MIqhpmrERKFpU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=dfYzBASd; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=FD6jXe5D; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="dfYzBASd"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="FD6jXe5D" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5B27N6aQ2584057 for ; Tue, 2 Dec 2025 14:23:06 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= pvDGlE0S/6XgEh4WV9txDwLAXqVJ3Idv7+GFUaC/Ruo=; b=dfYzBASdItj2/N5g 0VnEqjooYOUbN8kLHVQkeLPtWK67g4wWObSjH8kw8MlGDqBwxECuOXMp146ATx5S 9dmgdEazvUCvGPzV4O8ImZXhy2KKgiNz8b37DCE5ZUiCd442ejhSGI+WtgrHtVdi ekiUpF5fb7gdwFR4gMvZDXai2bEdkPnIzPk/kaohiCLbXzt3lszqz3R2vg+HnIT9 bDve1x0RxRYJbjUyEJ6OD7VTQ49LU0ozA4LxSGMGcITqc6W4w+CKLi44JhFIzQxA SFEsWuETF8bv8x1OPidO9G+1lGOEE2+XkJqA4Jb/m3tkyLTQnpjVTm8OU+IyscY7 uiYLdQ== Received: from mail-pj1-f70.google.com (mail-pj1-f70.google.com [209.85.216.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4asup3h7u6-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 02 Dec 2025 14:23:05 +0000 (GMT) Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-343e262230eso6161837a91.2 for ; Tue, 02 Dec 2025 06:23:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1764685385; x=1765290185; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=pvDGlE0S/6XgEh4WV9txDwLAXqVJ3Idv7+GFUaC/Ruo=; b=FD6jXe5DAm4fNjx1LBcv5M7H3ML6DPzN38bVEyv7Xw/UCMnGAW63drv0KH3tdxcPFh QQd1zPEadHdwPhHNxt0GicrXvNdkch8A0n872JR/nGnvBc6SKyE8Iu1+4WKobJdsufuN /8Nf4btBLaI6Noub5DCjN96erXPZ1V45E392zo76KYUZQH7hbtDO3doHI7YyK9GgY5WA iKUApt20SP68UbYydBhzHFwZo9WlaP3i0+WZwfhrBvTfUI2NtD1U8kLoaVP2+jQ+mjoo s5CGa5vJRVrhp7TuoJYAQTz8172IWorDYDMqV9M9GHJwlIp9xwzL+iSskrJ4+ugyqhf4 cmLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764685385; x=1765290185; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=pvDGlE0S/6XgEh4WV9txDwLAXqVJ3Idv7+GFUaC/Ruo=; b=MESUka4U1bP2aAHJapuCcNvqokB/AnrpGo05PWGmo3ta6RTZL5PFcrqpwrQlkkHARe qprd12MgMyvP/FtHWmPcZuL+hAzdlOGlT8l+FzDtfMqjuBZXrqthg4OjymCHk0rxGNq9 leruvYhsw+gVfkzp1FAS9pOpp387w+LO6Kxv2ghVOxljoMTeC7gKLUV+A4rSKdThMEqV n/L3A6kZzXQd+1VVM1fm3VKdzkzxPPvQQt+6apm2NXbFNG8UDaldbTInSiyoah+UXtqR N++tbLWVis/m06e5+AuR3sP/WRfj8E1niDxtCMRAJbx9WEFZiQU0u4E2g2Nlmlqy6qog rvyA== X-Forwarded-Encrypted: i=1; AJvYcCUEFDYGrJ0bO+KxEDEXBer8Ab6CAh/o2dAexGFotZlahOXLlQSR1cUQUUHIMOwJX58HqGbIEcLjgRzoPSk=@vger.kernel.org X-Gm-Message-State: AOJu0YyqZwXD/OPr3n7Il+V4LajvXoKunSSEUU3NIZrAQ0J4o3PiOFhZ JVwYIYK2uz9rLQ/VQUcRjb1Kn59sEitBW9qdJeXc1zJLNChVJiBnAVfhQzaizoFjmyaNKpEsou3 wF3f3ZK6Z+d6zBg+/jRleUl89Lg5Vy868Xa1MCI1Ok44IXS+sl+UHjYdTdcNoZmBA0ns= X-Gm-Gg: ASbGncvUHY4KrWEJorcOOKjYWmarzu5dfGRSl5Q0jSXwVkuX8NKGFu/gYXC9hd6d+n5 aS+fCKfNNfoPfNNDPjwjJh8i/mWK8eSpOBfyvfAmbjU4AvT8/xg957CZBJACxhxKiYu1/MV9aoh mBLPJXlCnmLuG3WtBW/PdcMP6ByGw6dpmZ+PlpgTIsw+vOq03AUJ+hczubXzOV4ZX1UlGw3qptd WLVz8UcyYZlu09bWjnFPBHUJUFgAXgLbj4miTgcavZ+AX+O50OEz2dAnPxksU39Pr7YZodLZwmG rzqqJ5AlWc5gRm0QtTrSpYwNnkqdB3RsKS90/Y/73vxhLZvqhBOq1r48DWJTcaNkFsEo1D6v1sy vmtNQ+0ODXL0DZqWW/sHP6vK0wXFKLuctuay1nMQ= X-Received: by 2002:a17:90b:4c45:b0:341:3ea2:b625 with SMTP id 98e67ed59e1d1-3475ebfa712mr32702727a91.12.1764685384954; Tue, 02 Dec 2025 06:23:04 -0800 (PST) X-Google-Smtp-Source: AGHT+IFcAutCfpDdRSSnk5MniXuwtr5pZ1zGjMgaerjI8XmJ3h8BcgaKPJR/IPoENuE65rkpJv7/dQ== X-Received: by 2002:a17:90b:4c45:b0:341:3ea2:b625 with SMTP id 98e67ed59e1d1-3475ebfa712mr32702678a91.12.1764685384366; Tue, 02 Dec 2025 06:23:04 -0800 (PST) Received: from [192.168.1.102] ([120.60.68.196]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-be5095a4821sm15659084a12.29.2025.12.02.06.23.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Dec 2025 06:23:03 -0800 (PST) From: Manivannan Sadhasivam Date: Tue, 02 Dec 2025 19:52:48 +0530 Subject: [PATCH v2 1/4] PCI: Enable ACS only after configuring IOMMU for OF platforms Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251202-pci_acs-v2-1-5d2759a71489@oss.qualcomm.com> References: <20251202-pci_acs-v2-0-5d2759a71489@oss.qualcomm.com> In-Reply-To: <20251202-pci_acs-v2-0-5d2759a71489@oss.qualcomm.com> To: Bjorn Helgaas Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, iommu@lists.linux.dev, Naresh Kamboju , Pavankumar Kondeti , Xingang Wang , Marek Szyprowski , Robin Murphy , Jason Gunthorpe , Manivannan Sadhasivam , Manivannan Sadhasivam X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=3924; i=manivannan.sadhasivam@oss.qualcomm.com; h=from:subject:message-id; bh=5z1ouJ38EhP2+fHSIKbzZu23IGvzKgpnENHaWvqW/bk=; b=owEBbQGS/pANAwAKAVWfEeb+kc71AcsmYgBpLvZAK0KxrEsmvfHKka+ak4tP+Htq2wuvd6IOD Gb94sH+n1eJATMEAAEKAB0WIQRnpUMqgUjL2KRYJ5dVnxHm/pHO9QUCaS72QAAKCRBVnxHm/pHO 9TfPCACbwfeix1zhTrWBa2NPzMJrnW85zmPWFT/Qmgjv3jGIXa9W0UdmVZwtwyn5nzAQ94sdyrH zA7N3Wps46qw3ZGtdl1fwzu+dZNkBZnD+3Kdx2l9texP7AIR+FWTZMg9mtxABxxAf9JGLpwJSz5 hezCe0rymO+HB8nl9ehmsnUT6WSnkFoJ2JFixPOCg1X42VOyv5XibQE+X+j1rZ7OQLL0lXcghQl b9M7RvD2fs+Qil4L0S0QkZS+5VLJQq4+2dMy6gMWXiTZQ+IgifVXwv6sPk1sVXzpFDf4vDQGN34 TA7JCsA5LTM0oCeKOSGAKgwvOIhdnVAZ+I1cMv8WWSgV3N8I X-Developer-Key: i=manivannan.sadhasivam@oss.qualcomm.com; a=openpgp; fpr=C668AEC3C3188E4C611465E7488550E901166008 X-Authority-Analysis: v=2.4 cv=MaZhep/f c=1 sm=1 tr=0 ts=692ef649 cx=c_pps a=0uOsjrqzRL749jD1oC5vDA==:117 a=8ziBJk15IZ5r+wOU3RLduA==:17 a=IkcTkHD0fZMA:10 a=wP3pNCr1ah4A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=8jBi6dqPNo5Cx3X94iEA:9 a=QEXdDO2ut3YA:10 a=mQ_c8vxmzFEMiUWkPHU9:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjAyMDExNSBTYWx0ZWRfXxVesuetcSofC xzYz1oP2q+xt8HbBrM+Tq7iSok5WQtzbAZi4GGBsRZRMRVuHE+pgEDIGaa5omrWYFKeOKc1ztBn jvpTfTFfmUMH8MbrEWldGpzwbkgwBAufOU64iqxDPenjG6d8YC6W/tI2NAMPsuejbf3L9+k2L05 rkK7SqRdj5McBvGc9YT4Mm2dg4HJQO5gX+PCZvjovt60ERAMKtNGJMPqe3kNrNTQJjc/cWrLO9U IySY+qvPXAYWLN1xsFFZt7wIl401SXPBsbPcogrw0irOl14vFNRZdg8OCutLUEixcGzUpXQrvVe +fMDAqXkB4k7LfzW32kdZHWX0G7hxb8G4U7XkxOO4PNin3mBrd+ogG4bYWlIopcwyjT9nEGvRot 1xS7eV7rbhue6mWEF8G+9H+Gw+E7Vw== X-Proofpoint-GUID: qGLg-VbUZZxB3tYkaCJxMyRWP-8OG17- X-Proofpoint-ORIG-GUID: qGLg-VbUZZxB3tYkaCJxMyRWP-8OG17- X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-12-01_01,2025-11-27_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 spamscore=0 bulkscore=0 adultscore=0 impostorscore=0 clxscore=1015 lowpriorityscore=0 suspectscore=0 phishscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2512020115 For enabling ACS without the cmdline params, the platform drivers are expected to call pci_request_acs() API which sets a static flag, 'pci_acs_enable' in drivers/pci/pci.c. And this flag is used to enable ACS in pci_enable_acs() helper, which gets called during pci_acs_init(), as per this call stack: -> pci_device_add() -> pci_init_capabilities() -> pci_acs_init() /* check for pci_acs_enable */ -> pci_enable_acs() For the OF platforms, pci_request_acs() is called during of_iommu_configure() during device_add(), as per this call stack: -> device_add() -> iommu_bus_notifier() -> iommu_probe_device() -> pci_dma_configure() -> of_dma_configure() -> of_iommu_configure() /* set pci_acs_enable */ -> pci_request_acs() As seen from both call stacks, pci_enable_acs() is called way before the invocation of pci_request_acs() for the OF platforms. This means, pci_enable_acs() will not enable ACS for the first device that gets enumerated, which is usally the Root Port device. But since the static flag, 'pci_acs_enable' is set *afterwards*, ACS will be enabled for the ACS capable devices enumerated later. To fix this issue, do not call pci_enable_acs() from pci_acs_init(), but only from pci_dma_configure() after calling of_dma_configure(). This makes sure that pci_enable_acs() only gets called after the IOMMU framework has called pci_request_acs(). The ACS enablement flow now looks like: -> pci_device_add() -> pci_init_capabilities() /* Just store the ACS cap */ -> pci_acs_init() -> device_add() ... -> pci_dma_configure() -> of_dma_configure() -> pci_request_acs() -> pci_enable_acs() For the ACPI platforms, pci_request_acs() is called during ACPI initialization time itself, independent of the IOMMU framework. Signed-off-by: Manivannan Sadhasivam Tested-by: Marek Szyprowski Tested-by: Naresh Kamboju --- drivers/pci/pci-driver.c | 8 ++++++++ drivers/pci/pci.c | 8 -------- drivers/pci/pci.h | 1 + 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c index 302d61783f6c..a4ee93497a06 100644 --- a/drivers/pci/pci-driver.c +++ b/drivers/pci/pci-driver.c @@ -1648,6 +1648,14 @@ static int pci_dma_configure(struct device *dev) ret =3D acpi_dma_configure(dev, acpi_get_dma_attr(adev)); } =20 + /* + * Attempt to enable ACS regardless of capability because some Root + * Ports (e.g. those quirked with *_intel_pch_acs_*) do not have + * the standard ACS capability but still support ACS via those + * quirks. + */ + pci_enable_acs(to_pci_dev(dev)); + pci_put_host_bridge_device(bridge); =20 /* @drv may not be valid when we're called from the IOMMU layer */ diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index b14dd064006c..9f594fc6dade 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -3677,14 +3677,6 @@ bool pci_acs_path_enabled(struct pci_dev *start, void pci_acs_init(struct pci_dev *dev) { dev->acs_cap =3D pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ACS); - - /* - * Attempt to enable ACS regardless of capability because some Root - * Ports (e.g. those quirked with *_intel_pch_acs_*) do not have - * the standard ACS capability but still support ACS via those - * quirks. - */ - pci_enable_acs(dev); } =20 void pci_rebar_init(struct pci_dev *pdev) diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h index 36f8c0985430..972b28fc5455 100644 --- a/drivers/pci/pci.h +++ b/drivers/pci/pci.h @@ -917,6 +917,7 @@ static inline resource_size_t pci_resource_alignment(st= ruct pci_dev *dev, } =20 void pci_acs_init(struct pci_dev *dev); +void pci_enable_acs(struct pci_dev *dev); #ifdef CONFIG_PCI_QUIRKS int pci_dev_specific_acs_enabled(struct pci_dev *dev, u16 acs_flags); int pci_dev_specific_enable_acs(struct pci_dev *dev); --=20 2.48.1 From nobody Mon Feb 9 01:34:57 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (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 C03672F5A31 for ; Tue, 2 Dec 2025 14:23:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764685391; cv=none; b=k3ctq15d0iVBclwsCbS6hRjEHWtbQls6RlTMNoesAOH4EeGgury8D33NprNRJIcw6I4a+4qhj1UYcRIlvqij1YVA7ENi6gWfze1n/rcdSy56rnJ3qMWBhCIQ6WVX2vn3E8MKuJrkIY9Ba+rclvhZgB20mBeG704u8bQk6a5RzsE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764685391; c=relaxed/simple; bh=DhqZPv/0aWBnunXhwhTfHEiUQFo6lSXbuazcurYzQjA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=RTSkD2pNc+0ZDJg1Gf4/YJYBD4DsaxKK4hjeh3vMHokEe8RCmYpmnIjl9a9x8brTTax86kZgWNmKhwo1S+zeQR+JviitpdqgdAu9CkIkbMlNIIfgzh7V6TrzLaQTMfOF8+jndFn7EVi+/jxo9hLDufaJ/ZefZU5xEqb/VfBSERE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=B/uLkYr3; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=JxQAQzwA; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="B/uLkYr3"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="JxQAQzwA" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5B26t5TP1146923 for ; Tue, 2 Dec 2025 14:23:09 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= /DcZ/qO2H5yuWrIIc81AedSaXbGKplExVCuz7hlc7lQ=; b=B/uLkYr32qvdAtOj cLnamVoRFfgpYSSOZQLfeqE7fGNRhJKIbr0Jm28gEGmOblFtJNN3Kfe4dhpi0PJ/ c3fmYiz/NSDj+eyBMnWF/AS5irTXPoYslnTLE5yGZb9Fan8qkEZXkdhQD0Ljlaiq 8+SN3be3kjRgUU66cY+Mk41xbXAv/c5B24tw/xyZVIu0RNEmxsflGiuNXvuKAJdT uLErWHPXm7QrZWiFQMRR/6zmb4WZ7Iwuyt5o4wRSgLhntAXdWQmfgtyJ3+qAus/t qi6oLan9JAtVJJpj0ewjXCSbxUvgeS1+jgDbq9x4NiIFU9mBmnA4p5eiiieufBIO 2dv1NA== Received: from mail-pj1-f71.google.com (mail-pj1-f71.google.com [209.85.216.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4asj5eax4d-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 02 Dec 2025 14:23:09 +0000 (GMT) Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-3416dc5754fso9982531a91.1 for ; Tue, 02 Dec 2025 06:23:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1764685388; x=1765290188; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=/DcZ/qO2H5yuWrIIc81AedSaXbGKplExVCuz7hlc7lQ=; b=JxQAQzwAru8bqUVfGdfWuH8ldqWdL6ovIEKBKGgTXACbeNEhzKYH6UiSohDZwBjngX 42eLWkLiQ5d0GsQE7XLlQbhrZzksj9u6nRlMafaf0io6J1foP19xhdxUmTtQgVrpbb3S JF9DGarN2PHbS9BHhi6RdcpmjiQCcNp/LY2gIovNfDAHXrQBfv54T8Nr2q39lXxIgIpx hHC6KC/O2du4oI3NUDoaGaDsnowvOogyn2yrcV3tsUZFYfLdzuRomXSW1Vnc1CGW+EfL BQAhjjsYkB1QhRAn7XMqkUNMJpP/nL7qSHIheUZrl8iAhu7PzNYElzBJJRHdtGIna28L N/IA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764685388; x=1765290188; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=/DcZ/qO2H5yuWrIIc81AedSaXbGKplExVCuz7hlc7lQ=; b=OO9A4+pwpMvXPryOEoguUIplzEywbHEGgTtB/GwaEE6ErOfQ6y64jtsocX5hpKtlr1 ItRTK1Y3aGO0Ug25YTwwwZFXITCP3jxcsoIEvJRIKNLHCHugkimhX0NK6negXLXPqoXS M+qWWuSZtOc44gpw7Hzz7bS/bAmmbDdPUYJyISDq8T+4vONUsweyfDF4/Yb0WAb1OfFo x0TX62/xpUFMlmxyiAvGi2oAqj6pkt//Eop1bSkq6Z/O8sCtmTrC6wVDSVyeQQq8uIMD znHNzeqjWxqROX+a+QIchMq3UCWbzhkVeU//InoxzvQoYuz1jAF/bBcMlf/6nEgGIvIu FR/g== X-Forwarded-Encrypted: i=1; AJvYcCU+g7YqlZhoEjG0BPqt+6HXiM7ANVXfwkuOagVRrXFctiSgHuc4bjifHcRqkPSwPIGZL5R5A7Ct6UdfL5M=@vger.kernel.org X-Gm-Message-State: AOJu0Yw3zHNbxnvZGqvRxS4i+nQ9b7sIKFjM05cCYD+3XW0NB7OKb6Ga JV+JeTHfIrhk0Xl2UMRZmsS+3rsmMJqyCUiLWZoxxCNZBadZXmXK/+V/Nd2Jvvm1k2v1VHAA+9Y QOl5NEgmVMeevHuMImtWR001+2fT5ILgLZOHRrqd6O+O3sQ9FaWPoJn1pLu4BR+jw1d4= X-Gm-Gg: ASbGncv79+8CzBjpewAMfylWVznk4D9SFGRXuFNFxpaDm4Tv2NlFn+dVZ2b0CP2Dmu3 5SkHrnPcJ24B5WX+80nsw4df6NM85CkDoFCObuTUPS0vd+eR45s7WMBC3giV0/QvP266MBZjTFN IPhDaL6B7agC+Slo8ciVBugp+PjcBDojoV53Ngo9vrFRccufX3mSAxm/Q3BhqK2jN597sRd1GH5 vgU7IenROss7idHKI+m33O8gQlq0U5ugArOeYM4Jes96jCbFrLkhdOWCF5nunA2Rs6GX0dTqAy4 WWbZzCX7Lj1OiGynA76wXAHFgLuJ9fyQLZJvTB1LlyAjP2uFHOphsRx4F4xDSlCclC6dvk9ajW7 wXyGalcVq+fzwunnx0nxmH7ykcBvrC8wIlYIU8wc= X-Received: by 2002:a17:90b:3502:b0:341:8bdd:5cf3 with SMTP id 98e67ed59e1d1-34733e55015mr47143842a91.7.1764685388508; Tue, 02 Dec 2025 06:23:08 -0800 (PST) X-Google-Smtp-Source: AGHT+IHmJreXIxtC7QqwcAohA6pn3gbslnhbRvbp4ehG7lAwm1lgqaC+sUN5cC5F2+qBMdTsdTSDcA== X-Received: by 2002:a17:90b:3502:b0:341:8bdd:5cf3 with SMTP id 98e67ed59e1d1-34733e55015mr47143796a91.7.1764685388019; Tue, 02 Dec 2025 06:23:08 -0800 (PST) Received: from [192.168.1.102] ([120.60.68.196]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-be5095a4821sm15659084a12.29.2025.12.02.06.23.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Dec 2025 06:23:07 -0800 (PST) From: Manivannan Sadhasivam Date: Tue, 02 Dec 2025 19:52:49 +0530 Subject: [PATCH v2 2/4] PCI: Cache ACS capabilities Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251202-pci_acs-v2-2-5d2759a71489@oss.qualcomm.com> References: <20251202-pci_acs-v2-0-5d2759a71489@oss.qualcomm.com> In-Reply-To: <20251202-pci_acs-v2-0-5d2759a71489@oss.qualcomm.com> To: Bjorn Helgaas Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, iommu@lists.linux.dev, Naresh Kamboju , Pavankumar Kondeti , Xingang Wang , Marek Szyprowski , Robin Murphy , Jason Gunthorpe , Manivannan Sadhasivam , Manivannan Sadhasivam X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=3778; i=manivannan.sadhasivam@oss.qualcomm.com; h=from:subject:message-id; bh=DhqZPv/0aWBnunXhwhTfHEiUQFo6lSXbuazcurYzQjA=; b=owGbwMvMwMUYOl/w2b+J574ynlZLYsjU++bwaMOrxteL72S1ui6vDb/luSzu78qTHxz2GSUFF jelSR9/0MlozMLAyMUgK6bIkr7UWavR4/SNJRHq02EGsTKBTGHg4hSAiVR/Zv8fzv9IKenA0QAG JuHc585XHRbxvQq00wkWc2e7mjmBqWd7qFCF/WHtgsTvvxkiNLaY5noqqjW0XReduIjJ9eK3q2/ XaPVbJKufUy0su+sTKMb871Z1yplNu0zMwwMC7jIdWakq31zwpuD0Ou+zMdUvpjMrsXT3P+i509 vmrLlQz+fT7uvuq64vl3nemn+heFJ2UnO4q4ahyJK6vqls2uuu7hMSnJfJ1q3jyRxifqH77vT7Q imhpjIPf5WnJGdIL7z6QVIw5Tuj5Oa3+wJncG6926mr9PB3otW7rMwPrJFythkK1lWfOe7sYuiM kBRp+mO/OEJtV7zFrO91tU8brrwruFDGb7ddPHHTjZgOAA== X-Developer-Key: i=manivannan.sadhasivam@oss.qualcomm.com; a=openpgp; fpr=C668AEC3C3188E4C611465E7488550E901166008 X-Proofpoint-GUID: Gh4ZkodRSj8Ne9MIKkoamnKYALjDfwLd X-Authority-Analysis: v=2.4 cv=GMsF0+NK c=1 sm=1 tr=0 ts=692ef64d cx=c_pps a=UNFcQwm+pnOIJct1K4W+Mw==:117 a=8ziBJk15IZ5r+wOU3RLduA==:17 a=IkcTkHD0fZMA:10 a=wP3pNCr1ah4A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=4sYZdrzHdZFwjucz0qEA:9 a=QEXdDO2ut3YA:10 a=uKXjsCUrEbL0IQVhDsJ9:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjAyMDExNSBTYWx0ZWRfXxhcKql+h2OuU Np6qphcl6pHKCC9/vFEHeqmKmda9ECQHNPMXXox7qw7d2gWtd0EpcNvQYiOi0zC6UGdLdhBZgZA hqD4cbnT2C8d6gJj9CqDFEgPIjhvw+IsDDizklut6OAojwRAlL35i5l5eX+cHS9yY8w06fxTXr0 me3OWhI4PWj3uah23fVjV4sw3tZVgO2vP2OyIuCdTPmRZMXTqLN0tFO/lSfm9SUruNGdHedOjGG ilbOpUAfA4bwjdiALw5QVIJoCBOe7jmzUuW1dgf1V/1oivaGHhY4bavjlqSM8boTlv1m0l1VaLz BkTmXOdujwNi1JgZyribGhC9adqtDhiLj6/Mr9CeRfsAa101V7ISVsJUWMxhD24XsSDFjA98I7U AiBHAJIWbc1jBY4uQ1BY398ky8+QoQ== X-Proofpoint-ORIG-GUID: Gh4ZkodRSj8Ne9MIKkoamnKYALjDfwLd X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-12-01_01,2025-11-27_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 lowpriorityscore=0 bulkscore=0 malwarescore=0 impostorscore=0 suspectscore=0 clxscore=1015 adultscore=0 phishscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2512020115 ACS capabilities are the RO values set by the hardware. Cache them to avoid reading it all the time when required and also to override any capability in quirks. Signed-off-by: Manivannan Sadhasivam Tested-by: Marek Szyprowski Tested-by: Naresh Kamboju --- drivers/pci/pci.c | 26 +++++++++++++++----------- include/linux/pci.h | 1 + 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index 9f594fc6dade..4eb5b487c982 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -892,7 +892,6 @@ static const char *disable_acs_redir_param; static const char *config_acs_param; =20 struct pci_acs { - u16 cap; u16 ctrl; u16 fw_ctrl; }; @@ -995,27 +994,27 @@ static void __pci_config_acs(struct pci_dev *dev, str= uct pci_acs *caps, static void pci_std_enable_acs(struct pci_dev *dev, struct pci_acs *caps) { /* Source Validation */ - caps->ctrl |=3D (caps->cap & PCI_ACS_SV); + caps->ctrl |=3D (dev->acs_capabilities & PCI_ACS_SV); =20 /* P2P Request Redirect */ - caps->ctrl |=3D (caps->cap & PCI_ACS_RR); + caps->ctrl |=3D (dev->acs_capabilities & PCI_ACS_RR); =20 /* P2P Completion Redirect */ - caps->ctrl |=3D (caps->cap & PCI_ACS_CR); + caps->ctrl |=3D (dev->acs_capabilities & PCI_ACS_CR); =20 /* Upstream Forwarding */ - caps->ctrl |=3D (caps->cap & PCI_ACS_UF); + caps->ctrl |=3D (dev->acs_capabilities & PCI_ACS_UF); =20 /* Enable Translation Blocking for external devices and noats */ if (pci_ats_disabled() || dev->external_facing || dev->untrusted) - caps->ctrl |=3D (caps->cap & PCI_ACS_TB); + caps->ctrl |=3D (dev->acs_capabilities & PCI_ACS_TB); } =20 /** * pci_enable_acs - enable ACS if hardware support it * @dev: the PCI device */ -static void pci_enable_acs(struct pci_dev *dev) +void pci_enable_acs(struct pci_dev *dev) { struct pci_acs caps; bool enable_acs =3D false; @@ -1031,7 +1030,6 @@ static void pci_enable_acs(struct pci_dev *dev) if (!pos) return; =20 - pci_read_config_word(dev, pos + PCI_ACS_CAP, &caps.cap); pci_read_config_word(dev, pos + PCI_ACS_CTRL, &caps.ctrl); caps.fw_ctrl =3D caps.ctrl; =20 @@ -3543,7 +3541,7 @@ void pci_configure_ari(struct pci_dev *dev) static bool pci_acs_flags_enabled(struct pci_dev *pdev, u16 acs_flags) { int pos; - u16 cap, ctrl; + u16 ctrl; =20 pos =3D pdev->acs_cap; if (!pos) @@ -3554,8 +3552,7 @@ static bool pci_acs_flags_enabled(struct pci_dev *pde= v, u16 acs_flags) * or only required if controllable. Features missing from the * capability field can therefore be assumed as hard-wired enabled. */ - pci_read_config_word(pdev, pos + PCI_ACS_CAP, &cap); - acs_flags &=3D (cap | PCI_ACS_EC); + acs_flags &=3D (pdev->acs_capabilities | PCI_ACS_EC); =20 pci_read_config_word(pdev, pos + PCI_ACS_CTRL, &ctrl); return (ctrl & acs_flags) =3D=3D acs_flags; @@ -3676,7 +3673,14 @@ bool pci_acs_path_enabled(struct pci_dev *start, */ void pci_acs_init(struct pci_dev *dev) { + int pos; + dev->acs_cap =3D pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ACS); + pos =3D dev->acs_cap; + if (!pos) + return; + + pci_read_config_word(dev, pos + PCI_ACS_CAP, &dev->acs_capabilities); } =20 void pci_rebar_init(struct pci_dev *pdev) diff --git a/include/linux/pci.h b/include/linux/pci.h index bf97d49c23cf..c6ee1dfdb0fb 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -543,6 +543,7 @@ struct pci_dev { struct npem *npem; /* Native PCIe Enclosure Management */ #endif u16 acs_cap; /* ACS Capability offset */ + u16 acs_capabilities; /* ACS Capabilities */ u8 supported_speeds; /* Supported Link Speeds Vector */ phys_addr_t rom; /* Physical address if not from BAR */ size_t romlen; /* Length if not from BAR */ --=20 2.48.1 From nobody Mon Feb 9 01:34:57 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 E1EA12F617B for ; Tue, 2 Dec 2025 14:23:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764685396; cv=none; b=T3miTGFpIQUYtz/lcfP3IImwNVEzspuTrfLI6yqPQIu//wjYDdH7cK+tZhjUkaKqrsLcZWbsmzBswK8ljOCJ3Abrgsw7Ak0oAjr8AKsunnL1WrTGvLzk4qBf7hHFbIzCsAGBTf8qybBV8ScJts0XAgPpvBwO9FiiawdHwJ3r57U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764685396; c=relaxed/simple; bh=oM0ISSThfe2iHQAvvM0MrsB3sAcFN54Yba1v/k79Xuc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=KI6WlFwi0fQ5uttySQblkfGjxHpIgO7xTWR4yl7ShbOc9qi7hPG7emjtrL1rHupXHH+r3r5JpgWb01kFpkP71XzoekvS10ZwTARb+qDHgbtjdYIgAdfIup9Bmh8XHVH8MZ7vD4BztdUDr+zkYIz01XF2mLQz7tAJ3dDWH0Fm0Po= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=lqURRuOX; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=GM0LkQMn; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="lqURRuOX"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="GM0LkQMn" Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5B27oIsp1926505 for ; Tue, 2 Dec 2025 14:23:13 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= GRDphVVsp5LhUNJNYA7xXoCBYkOqQfNzQnKNHXq8CQY=; b=lqURRuOXFyU9HwQd 5vMP3R/f1zVgh/LEL0Dr+73H90MfYxQ6gDxM75foN0k3QKGXV85Xt92Bvd5NEM4X BVkcpGQg2I05Hd1iExWRT0LMAB70uHjV69eBdQVmbAA6FX8T4VbdfcqfVxwRf+fQ stweY1l7ixy0vztj5VU44bTpJecgb+wqsBD5KGi1RkzqcAR/cP/vOzK92exv9HTL w+kHfFiePCCSK47pk8pZK817SdfwjfEvXNVQ/tEYFj41avdSaFPGKINiwMmfc9cc cuM7uMtnja0iyswsLYW/++t3DTkHFyzNUuZ2PTECPRYHUwlUDNYUmWUM31kKbQay eypvpw== Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4asm4xtj95-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 02 Dec 2025 14:23:13 +0000 (GMT) Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-7b9321b9312so10092335b3a.1 for ; Tue, 02 Dec 2025 06:23:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1764685393; x=1765290193; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=GRDphVVsp5LhUNJNYA7xXoCBYkOqQfNzQnKNHXq8CQY=; b=GM0LkQMnwzPkU5N3Ra3pzWjCjubn969rAh6mbzCYaE4dC9cXEn/D8um/EOIA5ET36k 08EiVZW39kSWjqdU6EzBc+ABTop97kd2SiwHBRq2hllTSteus66h+Jt6ee/G0Q8ZTJTO TY9qJU72Do9lNEYCNjjDOCymigT+n+wX+N69qNHkupUtww+o5SRwnNNhdMhUNR+uOtPQ L2XSzgNfEyo63hX4OkLtQfMTh29X+f+pedO/ctrB2jjiYkbNGZs5Hhy2m55nV/DU0v6D pBW7zOVjw1jRuWLURS0kMpHlAGv2UQlE6k2AxVJMDrMBKcP2oCbTzh3btuvLBODlRD2M mS8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764685393; x=1765290193; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=GRDphVVsp5LhUNJNYA7xXoCBYkOqQfNzQnKNHXq8CQY=; b=Wrx+8JalEHk+/mSJCDtsjHUjc1V5DZ7oR35PU68WqHTamj1wPPO+nTzUUfkJyLcgAn qMV8ypBqh28Wq7vEx6AAyDA/gGHf700WJlE5uX9DPN5ae2KH4cYf5D1GzLu23/KRRCst /G0uHNm+Z6FAQXIg/S9gjP9VR9BAi6trH1oMbuM+90tgzFR1B1Dqe8L1VWlur2OhVxg7 Imu/sRnOGHKlf5B7EexQO9cTUZjQBrptUKR/6hkXGCgw+a2jOL1qByHaeSO45X9z8Hwx IcjWIp6uXCrTorrUhxURut2vSuAzmOL8nknz1ifZQxIAlqFiE1nZKOl9VCmfSXtVpHuC 5sZA== X-Forwarded-Encrypted: i=1; AJvYcCWI2p2zwKnePQMzU8G5YEK5N/bXvunzeEJtX24a7rDGWpIUInZwpJkzZpGN6q0tAk3HpcmgvGV+NMp8s0g=@vger.kernel.org X-Gm-Message-State: AOJu0Yy6GG2RA451BtpfPJMlJoHo+/eD0CCdCZbrD1kUfJvSncAWZPQ0 aODDiWswLGwiXZ+1ihSZRs4eodRfEhWCxOSnPNObxy4MyrDNaCO4wD7v+4lZR84ohw3f1m5j6WG YNY0ZALr59jM2DMy4GIakhwJsFFQBYf7LEfdW8yA9y6eOn2QX2Tq33/zWG+gXnbYGYm4= X-Gm-Gg: ASbGncuucfXcHZsiOzZf/vEUPrlFlTmvaud7+gituJL34p1toUaK+KIhFBQzON9PqVK EPlGMymCQkJsf2m2OGh3akrhna5UXyAY+GN85/uTabAy6Y+BSNEChWmgJ0LEpfVugaLuwSsPfQ3 A1NfqPDeSkV1tcP5xZf49BX3nmLBUObmeF8A7NRwiqr1w4fvh2yd2HPsg6gCf8r6Gb4nZ4TjA/Q I/Aqpsmd7IaKOi3BpN4sv8eHZ5tteZHSVWqf9YE+i2/eytHHxzq/nQ0UXlLpzsg0Qp7E0u9kRBD kJ+jU+/061WRN4X9HqVZ6mDiZNDIbRrm+OOlPNurdbtOg5CI49oHrTKkApm3j1qyfCj7zTDFtoR e2gXFbfS3ItqyFoqahABaLder92sZJw/fpVv7QCk= X-Received: by 2002:a05:6a21:6da2:b0:35e:5a46:2d6b with SMTP id adf61e73a8af0-36150e26ca3mr50873153637.8.1764685392340; Tue, 02 Dec 2025 06:23:12 -0800 (PST) X-Google-Smtp-Source: AGHT+IEmRMklphSE8VVuEbGA85j8N7H5uZ2KxuEkKiykxwE99ZSiS5YgQWecQiu6eqV5ikDDhCSWqg== X-Received: by 2002:a05:6a21:6da2:b0:35e:5a46:2d6b with SMTP id adf61e73a8af0-36150e26ca3mr50873103637.8.1764685391735; Tue, 02 Dec 2025 06:23:11 -0800 (PST) Received: from [192.168.1.102] ([120.60.68.196]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-be5095a4821sm15659084a12.29.2025.12.02.06.23.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Dec 2025 06:23:11 -0800 (PST) From: Manivannan Sadhasivam Date: Tue, 02 Dec 2025 19:52:50 +0530 Subject: [PATCH v2 3/4] PCI: Disable ACS SV capability for the broken IDT switches Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251202-pci_acs-v2-3-5d2759a71489@oss.qualcomm.com> References: <20251202-pci_acs-v2-0-5d2759a71489@oss.qualcomm.com> In-Reply-To: <20251202-pci_acs-v2-0-5d2759a71489@oss.qualcomm.com> To: Bjorn Helgaas Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, iommu@lists.linux.dev, Naresh Kamboju , Pavankumar Kondeti , Xingang Wang , Marek Szyprowski , Robin Murphy , Jason Gunthorpe , Manivannan Sadhasivam , Manivannan Sadhasivam X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=7289; i=manivannan.sadhasivam@oss.qualcomm.com; h=from:subject:message-id; bh=oM0ISSThfe2iHQAvvM0MrsB3sAcFN54Yba1v/k79Xuc=; b=owEBbQGS/pANAwAKAVWfEeb+kc71AcsmYgBpLvZATIoifLli8Kza8XkZceVvVn5inlfSqDTzg jYBy9E0vLuJATMEAAEKAB0WIQRnpUMqgUjL2KRYJ5dVnxHm/pHO9QUCaS72QAAKCRBVnxHm/pHO 9VgeB/oChngyIc4/wh1yLoqGtD6dV1a075pZRLSOe/aIThC1e6M72oVl5MWzn4DMh312D+aGUYd kdjWoaWP6z+xvgW7myDelsL+9jXCVVqEwqRlhxy/ukeCTn01PxAl+Gnq8O9IEe2ZvvfCXNH61/t QNOJFFDGx0yrXdGqur8orEi7i1RageUArTpIx7ZK280arIuuRb3MCZDukRvT0hRabB9ooBJrouh s/kVg7j6Vm4rX+INquiU70DiFwBHwMDpeO98bNnI4ZsNgLHTo8G2IiGeyD8kwcBkeQfq9+Pa01g fSg1DijCOd6l4rzpBnfMEKUr7dzXl07JGQAMfUryxby6S6PT X-Developer-Key: i=manivannan.sadhasivam@oss.qualcomm.com; a=openpgp; fpr=C668AEC3C3188E4C611465E7488550E901166008 X-Proofpoint-GUID: n4Y2ch_ncukELHw058OlGP24WEkOW3w2 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjAyMDExNSBTYWx0ZWRfX2CVK3r/G+n2b B6ytKh3wYGvPJXeJfD4sEylNx44EvZSmdh4/FJvRXezwysIBvGu9lzsgmEyb+TtB1y4R2VTrSyw FCcsFWmgr8783mpQ1g/9TsMEsFbxwuchmoxF5tugevCLweRl6xKo+2j2QH8qjdaXOjJlCc3Qxk8 /A9vZyf45aIL/sPWIAu/SRMMHB4I0YP330I8QLkyNd4yPFCXy1veLysJbYpMTVVTeAjQPMRC16A nFLwJXM4QWhbByu2BEpi1spXdbCQDGYSVIckeEvLEmmVjPpLxeu6kn/J71ZBVX5BkfQXYaJvZ7A CZhOqKeLLvr0/NY4Sg96k1JYiDESvB5h73C2v7V3giuHv3KOfvzcRAUtVLBKyo0rbHk7xoKOpz8 rFtwjjwcOpKqTMfr1xMUBgW0spUwGw== X-Authority-Analysis: v=2.4 cv=cPTtc1eN c=1 sm=1 tr=0 ts=692ef651 cx=c_pps a=WW5sKcV1LcKqjgzy2JUPuA==:117 a=8ziBJk15IZ5r+wOU3RLduA==:17 a=IkcTkHD0fZMA:10 a=wP3pNCr1ah4A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=DsWDNE5MgSBdAu1L5fIA:9 a=QEXdDO2ut3YA:10 a=OpyuDcXvxspvyRM73sMx:22 X-Proofpoint-ORIG-GUID: n4Y2ch_ncukELHw058OlGP24WEkOW3w2 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-12-01_01,2025-11-27_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 lowpriorityscore=0 bulkscore=0 adultscore=0 malwarescore=0 priorityscore=1501 clxscore=1015 phishscore=0 spamscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2512020115 Some IDT switches behave erratically when ACS Source Validation is enabled. For example, they incorrectly flag an ACS Source Validation error on completions for config read requests even though PCIe r4.0, sec 6.12.1.1, says that completions are never affected by ACS Source Validation. Even though IDT suggests working around this issue by issuing a config write before the first config read, so that the device caches the bus and device number. But it would still be fragile since the device could loose the IDs after the reset and any further access may trigger ACS SV violation. Hence, to properly fix the issue, the respective capability needs to be disabled. Since the ACS Capabilities are RO values, and are cached in the 'pci_dev::acs_capabilities' field, add a new field for broken caps, set it in quirks and use it to remove the broken capabilities in pci_acs_init(). This will allow pci_enable_acs() helper to disable the relevant ACS ctrls. It should be noted that the quirk should be of the fixup_header level, so that it gets called before pci_acs_init(). With this, the previous workaround can now be safely removed. Signed-off-by: Manivannan Sadhasivam Tested-by: Marek Szyprowski Tested-by: Naresh Kamboju --- drivers/pci/pci.c | 1 + drivers/pci/pci.h | 1 - drivers/pci/probe.c | 12 ----------- drivers/pci/quirks.c | 61 ++++++++++++------------------------------------= ---- include/linux/pci.h | 1 + 5 files changed, 16 insertions(+), 60 deletions(-) diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index 4eb5b487c982..6ed35affea06 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -3681,6 +3681,7 @@ void pci_acs_init(struct pci_dev *dev) return; =20 pci_read_config_word(dev, pos + PCI_ACS_CAP, &dev->acs_capabilities); + dev->acs_capabilities &=3D ~dev->acs_broken_cap; } =20 void pci_rebar_init(struct pci_dev *pdev) diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h index 972b28fc5455..56ba7d60d658 100644 --- a/drivers/pci/pci.h +++ b/drivers/pci/pci.h @@ -430,7 +430,6 @@ bool pci_bus_read_dev_vendor_id(struct pci_bus *bus, in= t devfn, u32 *pl, int rrs_timeout); bool pci_bus_generic_read_dev_vendor_id(struct pci_bus *bus, int devfn, u3= 2 *pl, int rrs_timeout); -int pci_idt_bus_quirk(struct pci_bus *bus, int devfn, u32 *pl, int rrs_tim= eout); =20 int pci_setup_device(struct pci_dev *dev); void __pci_size_stdbars(struct pci_dev *dev, int count, diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c index 9cd032dff31e..6f8142cf9487 100644 --- a/drivers/pci/probe.c +++ b/drivers/pci/probe.c @@ -2517,18 +2517,6 @@ bool pci_bus_generic_read_dev_vendor_id(struct pci_b= us *bus, int devfn, u32 *l, bool pci_bus_read_dev_vendor_id(struct pci_bus *bus, int devfn, u32 *l, int timeout) { -#ifdef CONFIG_PCI_QUIRKS - struct pci_dev *bridge =3D bus->self; - - /* - * Certain IDT switches have an issue where they improperly trigger - * ACS Source Validation errors on completions for config reads. - */ - if (bridge && bridge->vendor =3D=3D PCI_VENDOR_ID_IDT && - bridge->device =3D=3D 0x80b5) - return pci_idt_bus_quirk(bus, devfn, l, timeout); -#endif - return pci_bus_generic_read_dev_vendor_id(bus, devfn, l, timeout); } EXPORT_SYMBOL(pci_bus_read_dev_vendor_id); diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index b9c252aa6fe0..a5956726a49f 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -5778,59 +5778,26 @@ DECLARE_PCI_FIXUP_CLASS_RESUME_EARLY(PCI_VENDOR_ID_= NVIDIA, PCI_ANY_ID, PCI_BASE_CLASS_DISPLAY, 16, quirk_nvidia_hda); =20 /* - * Some IDT switches incorrectly flag an ACS Source Validation error on - * completions for config read requests even though PCIe r4.0, sec - * 6.12.1.1, says that completions are never affected by ACS Source - * Validation. Here's the text of IDT 89H32H8G3-YC, erratum #36: + * Some IDT switches behave erratically when ACS Source Validation is enab= led. + * For example, they incorrectly flag an ACS Source Validation error on + * completions for config read requests even though PCIe r4.0, sec 6.12.1.= 1, + * says that completions are never affected by ACS Source Validation. * - * Item #36 - Downstream port applies ACS Source Validation to Completio= ns - * Section 6.12.1.1 of the PCI Express Base Specification 3.1 states that - * completions are never affected by ACS Source Validation. However, - * completions received by a downstream port of the PCIe switch from a - * device that has not yet captured a PCIe bus number are incorrectly - * dropped by ACS Source Validation by the switch downstream port. + * Even though IDT suggests working around this issue by issuing a config = write + * before the first config read, so that the switch caches the bus and dev= ice + * number, it would still be fragile since the device could loose the IDs = after + * the reset. * - * The workaround suggested by IDT is to issue a config write to the - * downstream device before issuing the first config read. This allows the - * downstream device to capture its bus and device numbers (see PCIe r4.0, - * sec 2.2.9), thus avoiding the ACS error on the completion. - * - * However, we don't know when the device is ready to accept the config - * write, so we do config reads until we receive a non-Config Request Retry - * Status, then do the config write. - * - * To avoid hitting the erratum when doing the config reads, we disable ACS - * SV around this process. + * Hence, a reliable fix would be to assume that these switches don't supp= ort + * ACS SV. */ -int pci_idt_bus_quirk(struct pci_bus *bus, int devfn, u32 *l, int timeout) +static void pci_disable_acs_sv(struct pci_dev *dev) { - int pos; - u16 ctrl =3D 0; - bool found; - struct pci_dev *bridge =3D bus->self; - - pos =3D bridge->acs_cap; - - /* Disable ACS SV before initial config reads */ - if (pos) { - pci_read_config_word(bridge, pos + PCI_ACS_CTRL, &ctrl); - if (ctrl & PCI_ACS_SV) - pci_write_config_word(bridge, pos + PCI_ACS_CTRL, - ctrl & ~PCI_ACS_SV); - } + pci_info(dev, "Disabling broken ACS SV\n"); =20 - found =3D pci_bus_generic_read_dev_vendor_id(bus, devfn, l, timeout); - - /* Write Vendor ID (read-only) so the endpoint latches its bus/dev */ - if (found) - pci_bus_write_config_word(bus, devfn, PCI_VENDOR_ID, 0); - - /* Re-enable ACS_SV if it was previously enabled */ - if (ctrl & PCI_ACS_SV) - pci_write_config_word(bridge, pos + PCI_ACS_CTRL, ctrl); - - return found; + dev->acs_broken_cap |=3D PCI_ACS_SV; } +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_IDT, 0x80b5, pci_disable_acs_sv); =20 /* * Microsemi Switchtec NTB uses devfn proxy IDs to move TLPs between diff --git a/include/linux/pci.h b/include/linux/pci.h index c6ee1dfdb0fb..246c0ca34308 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -544,6 +544,7 @@ struct pci_dev { #endif u16 acs_cap; /* ACS Capability offset */ u16 acs_capabilities; /* ACS Capabilities */ + u16 acs_broken_cap; /* Broken ACS Capabilities */ u8 supported_speeds; /* Supported Link Speeds Vector */ phys_addr_t rom; /* Physical address if not from BAR */ size_t romlen; /* Length if not from BAR */ --=20 2.48.1 From nobody Mon Feb 9 01:34:57 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 EAB312222B2 for ; Tue, 2 Dec 2025 14:23:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764685403; cv=none; b=X14GYMCNmI+0SI5tWHngxB2V+YGSNYlWFIxUanNJfVvuMSYdsUbTPWttp1C2tXTdbnXJojjqdvOpKzmFJ/oPDbywgwcQNGZNdgPZAlE7419sx22FogDcTMQU/mWcQhjKfprzShtsm9273imDpejT46WPjz1ID9UuXrftyTMdre8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764685403; c=relaxed/simple; bh=pRTmIB6LMS2I/NMlLkQVrAoVSoFyYgoyBRTO1H+wJzk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=c20pzaqxXyrP53H4Q2asaVKQpdXtcx7bUtL1qYkZnpwM89OH7z6305NP8QnexeWL/jHYvPUqSWFwhHlZ2HVjhCEngldm7pEDPvxWKVjpkaSIafnJ7K4StWbCYunsPHNPmmw7Z80qvBtiib2MiH2s92i9hcWlBEk9AYaduciVAqw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=NIdvMNWc; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=CmZpTjVN; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="NIdvMNWc"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="CmZpTjVN" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5B29T89H3243299 for ; Tue, 2 Dec 2025 14:23:17 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= QIIBjNvOJPz0nM8jdNic3VTJoyxgBAw5GlTLZa5uxBY=; b=NIdvMNWcCR/aQmkb MqL6WBVnr3oz06JX+toYuEG71wniyOjm/mZRuSEixxKK0NTD4lovOmLzdA2HNg4o obDxWEAPmNgGORQxULkxRwbIq/o2KKaCkfJv+pBVXCnXQ3aDnA0/oWMMSSv647Tb TMfIoLmMGfC0xtPkQHubK1Tt/CyvE5a8ogIPHUh1Bu9jy1OCSwT2upFhJwxVLm40 er4qLIgumDnxyrOMXcpG4a6haiY9LkPPr6qSzNTi8m/fsx1R/ADboncP+74NyHlq Xq6k85ebm62SdkMzvr5prP7wuY1xtC6YEnkwGBSFWfZMJ0CmmL6kGiuYSSmryFGj Oeo8ew== Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com [209.85.210.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4aswh50trs-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 02 Dec 2025 14:23:17 +0000 (GMT) Received: by mail-pf1-f200.google.com with SMTP id d2e1a72fcca58-7b8a12f0cb4so5171239b3a.3 for ; Tue, 02 Dec 2025 06:23:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1764685396; x=1765290196; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=QIIBjNvOJPz0nM8jdNic3VTJoyxgBAw5GlTLZa5uxBY=; b=CmZpTjVNk8AWdYF7bwFSKJRJnSmkwdWNboi7vq+X+H+oWUkPf/7eiaBme6iL0evxdI EVHHm2lDcpY+zpMGJ9QbqM+cEG9xPRGn+0CoKhDaVHT2Pm396mwLypNyRN10e1ApEyr5 qnTv92YHeGNa+wQGSgsYpQHaNssQk5TqR99kxMWoAov0SLLAsg6NuDhmFnji5BptJdmd ZEeOZ/WpxDV/U614ZmtFGx4rgF68Gr8F+8OZHTnlngnMBW/XLT3PmQaxKm3IY1GwZv/t LpLe2RybGCthll0An3mCSXy5gt8N2lx8RJEOaEtkB6BUpzRVbP18rsgc32l3vsxNBJCc SiLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764685396; x=1765290196; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=QIIBjNvOJPz0nM8jdNic3VTJoyxgBAw5GlTLZa5uxBY=; b=SqbjRwTbLqoXxroTgx5dSmvnB1LUD5YvbNzJSaOiOU3MxaawDh6nyh7SP7IxGxV/lZ /8AsQDcLik9gqd8dRLaXwOHBfKGwRAQY81FroTB9wfBhWduwuilhPkuCUsli12bZxgaG z+lrp4fY7asUAvBm2NxashrcywD8ATD5uIeLj8P0V4ff8pd8359I4+WuniR6eL67BOmf pKqIOQOiLoGmrlEuIPM1pMsaOtpyxylBXwnaqpx1D4T5WIq+V1t+4b6mKWAHRcwwQtqs HXb4u9tUORweMTyi85uzO+EpbRwCQrRurgOr2fodPaYHp8kmb/u29q+zkwM0Q8iSKFSG 7orQ== X-Forwarded-Encrypted: i=1; AJvYcCWiNq4Alwo076ZD3wzuwHtLE16SDP0D8lZ79h0dQpsBg+lfY+LpSLeoCMHJWPqkcSGI1S18VIPZfNTq4Ac=@vger.kernel.org X-Gm-Message-State: AOJu0YwKJcSVqzZkyDc73eKHTPGyiC22DI6fQjnDbSmOPBYTR5GsO2gG rXHbqsWIjUFLOBDM/hgvsxG7iZKpeImrk0IxEWDBtaNvg1zSsAwZsqxkz/BVts7LPviKiuI8Ip2 BEb3RXTjXjz/12qrYnnQNwFA8dTD4l78K7LSWSJmANRXyg+pSNp5w66ldMnfrwhfmZZXCIO8Dun Q= X-Gm-Gg: ASbGnctjWSShowk6gERMGQ1K8s1ltR/aAwYYGZ4PRjrqvr2/xdx46unrSxBmSEejOOf qais58jHQT3y7t6KLW+Kh4PFIRzP9li+OnMoJEJbUJRQ9wIUWc+mJrU/GBA40BoO24sCX9ifQ2d OP/bNiS41jUqgg+Mgns5tMsgNxikVHc93bP/IQOGnE4MUCKE4bR2tHHTIPaKf5oE2s/lti4yWQ2 /P75ZpYMJXqQbEBNsNLZIlSYV2nWrmXcTt/tjNAAXWiVvM09XbDXplTLfIFwvzY++x29ludy57y BMsH/as3CYVUqyoqMjYRz+VOVRaFuv3KmqepdATJRI9zQ+jX4xPFXK4SlHV05eSrRI8zwspYSMq WqL5kHMXNsTMSS0yqXe/OQXJzczhhWT3tjR9qvWs= X-Received: by 2002:a05:6a20:a125:b0:341:e79b:9495 with SMTP id adf61e73a8af0-3637e0bd69fmr31557260637.54.1764685395938; Tue, 02 Dec 2025 06:23:15 -0800 (PST) X-Google-Smtp-Source: AGHT+IEXg3DjQM/4ZIRpcDRT/tJi4qz/yVH4IAtQoIwviN0V/oe5Yh00yD0sJ44YqA3xpq26CgNZuw== X-Received: by 2002:a05:6a20:a125:b0:341:e79b:9495 with SMTP id adf61e73a8af0-3637e0bd69fmr31557219637.54.1764685395435; Tue, 02 Dec 2025 06:23:15 -0800 (PST) Received: from [192.168.1.102] ([120.60.68.196]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-be5095a4821sm15659084a12.29.2025.12.02.06.23.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Dec 2025 06:23:15 -0800 (PST) From: Manivannan Sadhasivam Date: Tue, 02 Dec 2025 19:52:51 +0530 Subject: [PATCH v2 4/4] PCI: Extend the pci_disable_acs_sv quirk for one more IDT switch Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251202-pci_acs-v2-4-5d2759a71489@oss.qualcomm.com> References: <20251202-pci_acs-v2-0-5d2759a71489@oss.qualcomm.com> In-Reply-To: <20251202-pci_acs-v2-0-5d2759a71489@oss.qualcomm.com> To: Bjorn Helgaas Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, iommu@lists.linux.dev, Naresh Kamboju , Pavankumar Kondeti , Xingang Wang , Marek Szyprowski , Robin Murphy , Jason Gunthorpe , Manivannan Sadhasivam , Manivannan Sadhasivam X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1085; i=manivannan.sadhasivam@oss.qualcomm.com; h=from:subject:message-id; bh=pRTmIB6LMS2I/NMlLkQVrAoVSoFyYgoyBRTO1H+wJzk=; b=owEBbQGS/pANAwAKAVWfEeb+kc71AcsmYgBpLvZAherrBpCOwOposcs2baS4ADrcU3EnqXe/b RPhSEm4to+JATMEAAEKAB0WIQRnpUMqgUjL2KRYJ5dVnxHm/pHO9QUCaS72QAAKCRBVnxHm/pHO 9boTB/4mlbW8TW6gVy8o/sK2KC32UFLRsRusBG+Y5HF7v5PnfVZjhehuZQqeWahB6SG8PnCnNMw p1vnghlQYA6p+k9uZBX7i8lvjrTHSfECP81eQX6mOTdd/SS7Q/bG5VkaSdJs0G0BmKOMonBiwCo tkJc6Bw58gWszhaKmKiioql2hYnCu1EZ/DL3tkCLQmoDdOXfdCWJB2TLgRnuxDZQYyTXQGMbKmc RHLwb9U9uX0DK6GBP9dlHYIq3XgDLJQ9F3sljaBUPu68lnZhQ/TJblV9XocY82GhQVbw2y5faTh f9OgdJktdiR0udcHpUW6jMF8aNAtqmC9uRgAr4HYTy/yvtS0 X-Developer-Key: i=manivannan.sadhasivam@oss.qualcomm.com; a=openpgp; fpr=C668AEC3C3188E4C611465E7488550E901166008 X-Authority-Analysis: v=2.4 cv=VNzQXtPX c=1 sm=1 tr=0 ts=692ef655 cx=c_pps a=mDZGXZTwRPZaeRUbqKGCBw==:117 a=8ziBJk15IZ5r+wOU3RLduA==:17 a=IkcTkHD0fZMA:10 a=wP3pNCr1ah4A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=2xi2RfK-dtapqwj757MA:9 a=QEXdDO2ut3YA:10 a=zc0IvFSfCIW2DFIPzwfm:22 X-Proofpoint-ORIG-GUID: JMABB3fG334NHQvflfRwA9sSZ-9ipldc X-Proofpoint-GUID: JMABB3fG334NHQvflfRwA9sSZ-9ipldc X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjAyMDExNSBTYWx0ZWRfX6/OsOAForTV3 cNPvqdkDKXb15xFPpWDJT0kfHB2HgTkwv45M6gmKgeE3aSXDEBBjxJrL2pu7qZW6/UdQTcUKK4q bNcuu9GTkZSRybY5OWqF7v0/gzQo/14lzCLRSuTsTaxp/yXOVaaZcHCqZltA9IlfYQbQxPQNFYT p+iLA+1JDj0dP3x9PDmRlIHEqV/TLlAUR74/VicKBW35i3JXHlNXEUN86+3ciJLgOAJYX7sYmH+ g0cxJjpWWk5bJeKelP3cgDFy14WomDHCvFVgAviEfVOJEPmchRi/dak8U57uoPtYNpji841m8NM 8IQWy0ezOJ5hJ6ItNI89VvFariiztIvL/8FvRmWIpQez94FhBmhwHfFCuNF7DRqxTpxZhTVDQvl +XwpvvNly7KK+eTznsMaEG1A4d97jA== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-12-01_01,2025-11-27_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 bulkscore=0 clxscore=1015 impostorscore=0 spamscore=0 adultscore=0 phishscore=0 suspectscore=0 malwarescore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2512020115 The IDT switch with Device ID 0x8090 used in the ARM Juno R2 development board incorrectly raises an ACS Source Validation error on Completions for Config Read Requests, even though PCIe r6.0, sec 6.12.1.1, says that Completions are never affected by ACS Source Validation. This is already handled by the pci_disable_acs_sv() quirk for one of the IDT switch 0x80b5. Hence, extend the quirk for this device too. Signed-off-by: Manivannan Sadhasivam Tested-by: Marek Szyprowski Tested-by: Naresh Kamboju --- drivers/pci/quirks.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index a5956726a49f..314aacf5a309 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -5798,6 +5798,7 @@ static void pci_disable_acs_sv(struct pci_dev *dev) dev->acs_broken_cap |=3D PCI_ACS_SV; } DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_IDT, 0x80b5, pci_disable_acs_sv); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_IDT, 0x8090, pci_disable_acs_sv); =20 /* * Microsemi Switchtec NTB uses devfn proxy IDs to move TLPs between --=20 2.48.1