From nobody Thu Apr 16 20:57:19 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 324583B8BC0 for ; Wed, 25 Feb 2026 16:24:23 +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=1772036665; cv=none; b=uCGt6XEM1o4NAYZglcVZ7QOffyX/flo/lUuyW7GyG9lU8TuuOdUSvmpTqnNo1zQs8qdFdmVxDR2qiZ+cYg5VhOCd5AC5uDs9NvgVSytxNlpGrah8pvgvRGQYFdnulseL7qf39QP3bpFTDrcQ35iKMPJ1bd09pfR4rVrf7b0HVIw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772036665; c=relaxed/simple; bh=nRhrwagqj1Y/m53ZdIFTGGDjhi1SXcSMtIvkOyVmah0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=oTLfnuyOLspNNSENDmZkb8CO/9wrqjrhHpzN1CpBEmFU6D9GbCKY0/GOSCxQgF/Q/yWGbKFNjxoMJVgBA/nGsNDyS9iGBJglLJ+IMULYwJjMDO/89vjKXxbWuk+mkgs2MxZNSe+UP74kVjH7V1TBeYwAYCJ71lNWeqLOViGRXKY= 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=IYX/dHdb; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=bMEIXH1O; 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="IYX/dHdb"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="bMEIXH1O" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61PB3Sx11512166 for ; Wed, 25 Feb 2026 16:24:23 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=16JiYRkM8Us t5Oul3yCggEtZkUZxoeNARYD5+VymD0k=; b=IYX/dHdbSZ31Q/CuAc+S78BRZYk gb0RgWIk5Re1S6XMQYDqPGVlk9IUycyaqaP3Z+MDNHImWlNcd7iPlJA4ozNe4upG OVDudcG7VMbesHxgtLQXe4As+3WhWgFC7qauoDeIuuD1Vr0d1aNkrBx1NNJRGKwr gJZTHXGBtHM81e3cXtIAkCoasuVnu/lGnvb5rCscmFqmgBOZQyL9I6SwUNRmzEIb E4XzFHAhH0fvv7FA9H2xop5C7tqhQX990M8m4qgMphk895nDzHpT7FxoSjV7K3Yk 7iH0BPE6oEA1zOvdxdWeoPRfZEAO0C5cHtHHDIrjmylFAkkBI9vlxjhdslQ== Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4chyvf0x0n-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 25 Feb 2026 16:24:23 +0000 (GMT) Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-c70eb09daefso429753a12.0 for ; Wed, 25 Feb 2026 08:24:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1772036662; x=1772641462; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=16JiYRkM8Ust5Oul3yCggEtZkUZxoeNARYD5+VymD0k=; b=bMEIXH1OES/ga4AXfUiKvBCK+gMQ/Dg+LDVbiRcUpjAZ4hWU2VSI3zeQ05ToJvph7C zufnSWZta3i8vHXHXIbVVpKKv/r0lF5GR6iiOVmYqokmW7gwRf6nyCcewLQ/3n2uf4Li z83DsOcdFb2xmJ/H9iWQKECdObfxP44CfBbC/hPDU4vSFUCf5kXU/xT7wKWdJH5XMoCg TgjXzy6uvOozoze+6YWK47o8IYI8VhjMTJ7c+cuiW5SPzFwGA7aoeK+fxOclg4Nh9QHV DgqeRSwoo4UpKe+uws3dU8bte50ld2I+ZfX0KieLRdS1VN7XA8qXJyq2uy4Op8MVSfEC 6v+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772036662; x=1772641462; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=16JiYRkM8Ust5Oul3yCggEtZkUZxoeNARYD5+VymD0k=; b=UqCD54eSm418PL8bbj2jh99ZMwASNNDE0yxL2mgevkzIpJU1iVWL67UyM4EV76iC/F Txs3od1eW3nhYB/a1LrpQOpZhDqpgaoyK7J7OiiNwCu3lYlldaAhkYJjzLgUrnbebDfm ejPLFK7y7oA/KsfdO2thhhNuJP3sXJbqYt6HAUOv0KExgbazhT+1fGLIIW75rSrX5rn2 N/y5KZix8kaGA/7Q6TrPkMzlqhGXHx86HC+9d5ylGFT+dF/3Jp2Xa6UKIL4doy+5e5v7 kNDSt83nAD0EL1YZlrfljIiHtq9vqXtkNmB449dfdtGFwvuReM5UYKLDc3+LRxvZHxbP 1kzg== X-Forwarded-Encrypted: i=1; AJvYcCUgtF9HKVnHDxr5ayS38e6TCXGQ7uj4CGxCjzdkj31h/1wpDesnt6+EIl+dgcxZjsHJjgEzz45PmhiNGm4=@vger.kernel.org X-Gm-Message-State: AOJu0Yy6B43wTZOpAuEbnpwMzpSE5MBvy9xMXDHd1630SVSXJ7ZihlIN d1XQF6VyPUhy/4w669zNMpC9G+dCvBrkdy3cQNEP/NnI8gQu2kyk3zIoBJM9u+Rw/TZfLXb345R 6MEVDQni+qPCCL+2qaP8t8IsaLdTHpwxxeJbYA9ECH3V+5o75dOydnbboEFif2Pbsm5s= X-Gm-Gg: ATEYQzw7sW48hWfPUaX+W+/ksgq8eZsoOl1on4/RPvDKmaRbpTy4DNqbpDmbFZux4B/ fAYLs7m5azPaegS0ugQRQSte/w/5oUKAtntxZZxwuZcfSD7wYu0QCKrgI56226FhnEbd5iZL4qk /elY4L4/uhm+ONfjvgNW2HL3C3l3DV0YPEC/JJwQkTs1Y9ARpKtaabI2nnUa6H8k/2Ipn3NHGf/ 9CDc8LOPVP7HdjCysMtuWmoqzk7ugow9pmi48i0asLCqMS3OQA/uGKAvtoNsOyLJOXTbie0LAua XwHZ2RwKYc9wHk5M3DXlJ6+AmZHdsH6JcAb6g6m47TMfP0sSB8K1XD9S+SNYbq3+Vk3xg+0Pm5t rHuk2OKpXcVU1f51HtpG3QNQcTmC/8tmJhDiDTXNjXg== X-Received: by 2002:a05:6a21:117:b0:38b:ecae:670c with SMTP id adf61e73a8af0-395ad0a2556mr724375637.25.1772036662046; Wed, 25 Feb 2026 08:24:22 -0800 (PST) X-Received: by 2002:a05:6a21:117:b0:38b:ecae:670c with SMTP id adf61e73a8af0-395ad0a2556mr724343637.25.1772036661465; Wed, 25 Feb 2026 08:24:21 -0800 (PST) Received: from work ([2401:4900:8fe5:3076:4038:f293:b188:d52d]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c70b71a735csm12822380a12.12.2026.02.25.08.24.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 25 Feb 2026 08:24:21 -0800 (PST) From: Manivannan Sadhasivam To: jingoohan1@gmail.com, mani@kernel.org, lpieralisi@kernel.org, kwilczynski@kernel.org, bhelgaas@google.com Cc: robh@kernel.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, cassel@kernel.org, Manivannan Sadhasivam , Bjorn Helgaas Subject: [PATCH 1/2] PCI: dwc: ep: Add MSI Enable checks before raising MSI to the host Date: Wed, 25 Feb 2026 21:53:58 +0530 Message-ID: <20260225162359.116000-2-manivannan.sadhasivam@oss.qualcomm.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260225162359.116000-1-manivannan.sadhasivam@oss.qualcomm.com> References: <20260225162359.116000-1-manivannan.sadhasivam@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: RSH8xeXxbGRF8GD8eXHMIEr1YOdUjv2X X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI1MDE1NyBTYWx0ZWRfXxzF5UKZu2uvB Ny6Zrou/kt213kyJ91M5NV0QcJa7gUreKaS9mYEQTfrRSODJBvokF6FPaRYjKpbNtWA+R/uclaJ 5FrvewUlJsL0aQgXimtdYtuSfaEx7CZtm7yzcvll3s6qPBEsrGcdvWL25O4wtnxC0pD36URv0H/ WFlO9DEOSKLQ7yuAG9f3JG+nWKWzmmB1X+BAM2W9ibKpf3HbzgJJm2NQybGaCBR1/K/detkn0W2 nsZZL9V1IM2uc7r/P5q8x55uZWMBOfOuHiQolgV9/1FthB910MnZ24KSILjM1tkjXLRSCjyv/RR d9YIZPrcIQxYUeAAfwCPnwf5qHkDb2iM85YX4m92jxghou6+Hfj/Eafv8P01iKcG/mPGo4+c75r o9dJ/1VIICPgvPNNehzYEI3DP1vSEjxroaCoq/+1zxTbUpyWZLZSVw/SAtSw65seaDujJoWfml5 lC0yLVTqCIRvSs8LNMg== X-Proofpoint-GUID: RSH8xeXxbGRF8GD8eXHMIEr1YOdUjv2X X-Authority-Analysis: v=2.4 cv=dZWNHHXe c=1 sm=1 tr=0 ts=699f2237 cx=c_pps a=Oh5Dbbf/trHjhBongsHeRQ==:117 a=xqWC_Br6kY4A:10 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=h3NFc43X9HEVXFFuZAYA:9 a=_Vgx9l1VpLgwpw_dHYaR:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-25_02,2026-02-25_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 clxscore=1015 suspectscore=0 lowpriorityscore=0 phishscore=0 bulkscore=0 spamscore=0 impostorscore=0 adultscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2602250157 Content-Type: text/plain; charset="utf-8" PCIe spec r7, sec 7.7.1.2 mandates that a Function should raise MSI only if the MSI Enable bit is set and MSI-X enable bit is clear. Hence, add those checks to be spec compliant with relevant helpers to avoid code duplication. Suggested-by: Bjorn Helgaas Signed-off-by: Manivannan Sadhasivam --- .../pci/controller/dwc/pcie-designware-ep.c | 43 ++++++++++++++++--- 1 file changed, 37 insertions(+), 6 deletions(-) diff --git a/drivers/pci/controller/dwc/pcie-designware-ep.c b/drivers/pci/= controller/dwc/pcie-designware-ep.c index 295076cf70de..fcbd648e049e 100644 --- a/drivers/pci/controller/dwc/pcie-designware-ep.c +++ b/drivers/pci/controller/dwc/pcie-designware-ep.c @@ -672,6 +672,17 @@ static int dw_pcie_ep_map_addr(struct pci_epc *epc, u8= func_no, u8 vfunc_no, return 0; } =20 +static bool dw_pcie_ep_msi_enabled(struct dw_pcie_ep *ep, + struct dw_pcie_ep_func *ep_func, u8 func_no) +{ + u32 val, reg; + + reg =3D ep_func->msi_cap + PCI_MSI_FLAGS; + val =3D dw_pcie_ep_readw_dbi(ep, func_no, reg); + + return FIELD_GET(PCI_MSI_FLAGS_ENABLE, val); +} + static int dw_pcie_ep_get_msi(struct pci_epc *epc, u8 func_no, u8 vfunc_no) { struct dw_pcie_ep *ep =3D epc_get_drvdata(epc); @@ -682,11 +693,11 @@ static int dw_pcie_ep_get_msi(struct pci_epc *epc, u8= func_no, u8 vfunc_no) if (!ep_func || !ep_func->msi_cap) return -EINVAL; =20 - reg =3D ep_func->msi_cap + PCI_MSI_FLAGS; - val =3D dw_pcie_ep_readw_dbi(ep, func_no, reg); - if (!(val & PCI_MSI_FLAGS_ENABLE)) + if (!dw_pcie_ep_msi_enabled(ep, ep_func, func_no)) return -EINVAL; =20 + reg =3D ep_func->msi_cap + PCI_MSI_FLAGS; + val =3D dw_pcie_ep_readw_dbi(ep, func_no, reg); val =3D FIELD_GET(PCI_MSI_FLAGS_QSIZE, val); =20 return 1 << val; @@ -716,6 +727,17 @@ static int dw_pcie_ep_set_msi(struct pci_epc *epc, u8 = func_no, u8 vfunc_no, return 0; } =20 +static bool dw_pcie_ep_msix_enabled(struct dw_pcie_ep *ep, + struct dw_pcie_ep_func *ep_func, u8 func_no) +{ + u32 val, reg; + + reg =3D ep_func->msix_cap + PCI_MSIX_FLAGS; + val =3D dw_pcie_ep_readw_dbi(ep, func_no, reg); + + return FIELD_GET(PCI_MSIX_FLAGS_ENABLE, val); +} + static int dw_pcie_ep_get_msix(struct pci_epc *epc, u8 func_no, u8 vfunc_n= o) { struct dw_pcie_ep *ep =3D epc_get_drvdata(epc); @@ -726,11 +748,11 @@ static int dw_pcie_ep_get_msix(struct pci_epc *epc, u= 8 func_no, u8 vfunc_no) if (!ep_func || !ep_func->msix_cap) return -EINVAL; =20 - reg =3D ep_func->msix_cap + PCI_MSIX_FLAGS; - val =3D dw_pcie_ep_readw_dbi(ep, func_no, reg); - if (!(val & PCI_MSIX_FLAGS_ENABLE)) + if (!dw_pcie_ep_msix_enabled(ep, ep_func, func_no)) return -EINVAL; =20 + reg =3D ep_func->msix_cap + PCI_MSIX_FLAGS; + val =3D dw_pcie_ep_readw_dbi(ep, func_no, reg); val &=3D PCI_MSIX_FLAGS_QSIZE; =20 return val + 1; @@ -877,6 +899,15 @@ int dw_pcie_ep_raise_msi_irq(struct dw_pcie_ep *ep, u8= func_no, if (!ep_func || !ep_func->msi_cap) return -EINVAL; =20 + /* + * PCIe spec r7, sec 7.7.1.2 mandates that a Function should raise MSI + * only if the MSI Enable bit is set and MSI-X Enable bit is clear. + */ + if (!dw_pcie_ep_msi_enabled(ep, ep_func, func_no) || + (dw_pcie_ep_msi_enabled(ep, ep_func, func_no) && + dw_pcie_ep_msix_enabled(ep, ep_func, func_no))) + return -EOPNOTSUPP; + /* Raise MSI per the PCI Local Bus Specification Revision 3.0, 6.8.1. */ reg =3D ep_func->msi_cap + PCI_MSI_FLAGS; msg_ctrl =3D dw_pcie_ep_readw_dbi(ep, func_no, reg); --=20 2.51.0 From nobody Thu Apr 16 20:57:19 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 5BF7F3D666A for ; Wed, 25 Feb 2026 16:24:28 +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=1772036671; cv=none; b=Vyt6dGDLRqOazIlV+E5ir7R6oQQGWyfJoaCVLGxW/bdxM4s6vKyw2hdn6NFDMW9VWx9Lgmc72jOr5pZB6/S7Ix+SVoqJ3KNOBZgfbXkAvKpIpqkwig5AHn0DuEapByfTEvpSM02qHzByi6b1z0ijA4lEu+L/TWw1/hDIxOKc/N0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772036671; c=relaxed/simple; bh=eVbPfZFjsM6dn53MMNkr1xAQjcP37kbNubwSGE/bvBU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=GVy2EIL/epFryhou9gJ+Djk88GXd3hJju9lZgSlU02f8ObJtMcCyOu+fIIFxPTxD1UtSo5nwub0bqQkUOf+UiHseAB2KbEE8XBoYSUJbNW4dIAvrT65Jlb7KDphI1+fkE+f4/cW6NpdIqQiwhn+e5fOj/3stEZe7qeWsZlQ0dQ4= 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=HeIi0UYL; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=ERYdpvYD; 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="HeIi0UYL"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="ERYdpvYD" 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 61P9SK3C1025009 for ; Wed, 25 Feb 2026 16:24:27 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=lqJPkq57cn1 TyWk4V1DgUzt2+tE6UWMkjdqzLPn1F5Y=; b=HeIi0UYLyZRS/0rwpwj9lSgJl0m ziZ0oj5hZF0guWBNjAIeDx8JmXRRjYzI6+UEUeOfr2y/TpIv/5A3fxARqzDPOEWB wyB1r39UBQuUy1GgqIcXLaEUblBUD45NhqyVjoWr9km0xU97AAEUcw45sgk2szY/ kA6ftwuk2Ieb627S/xxkjnfHG+CbIhCKdYdLnA3KrfaxS4zZSoN2Vx/1gXFEJDb2 4NioxDPgk7Ekp+RDWKPXnWOwc3UgoKSEkgoMNfr2psIbCsOmejFuOfOyaNh0F39q efyPK1tjRgbCkv6eQL0WMRIF0p6hPlFoA1MTh7qzq9wyXf1wLVfl1ZHH//g== 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 4chq57tg64-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 25 Feb 2026 16:24:27 +0000 (GMT) Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-358e79b4ca6so1760928a91.1 for ; Wed, 25 Feb 2026 08:24:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1772036667; x=1772641467; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=lqJPkq57cn1TyWk4V1DgUzt2+tE6UWMkjdqzLPn1F5Y=; b=ERYdpvYDokv53zRDQ4LVP5KtQ0KfYIoiIu6NksJgHy9bjVtBbS5fkuXvy2yRFNmwez ApzkY+hacXy4vkXSSsJ3HjZbAdfkExmRBTZiRKm53kweQSskveJ0QyqcgUwggPv66kRw sNNg9nvNJFM89MO6mIHZYxC+Wg5fdkszUbxiJnma/5hMS91UTbli2xNl5AvbiPrflN+l KHG8e1A+oOmUmclimmnYzh4QbVTroVhvv6l6Qe9NB/90HfO2AXx7eQ5sOfM0ZF6a2CSF Kfur7Uvf2vq/tINxmhZ1b07fF3VZVOHuiC8vjBiktbXm+P4gATkiLUhSGM0ryKQ0FSv/ 3byg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772036667; x=1772641467; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=lqJPkq57cn1TyWk4V1DgUzt2+tE6UWMkjdqzLPn1F5Y=; b=T277wtnDY3sphmCLSCJx8M9PtZrBLhSEq/mXD5ZFt39Mc1EI7T+K0TUzxopBB6/o+4 9Y8ryz0PjZ9BoBCEuBGWwgE0f/LwQGCQbVe6TbcrahHSQewr7nXSnT39vtLq+AmWv4WY wKwREmgrSwDYT9ty2ipKQJrvqMOWNTh7zS4B/bDPXaoHZf1d55vgmS8c572uaNFeegTO QIqfyqY5gbiEzXAAfLr1rby9syfxGi7MQwuUzbv0kHqRklzNJTHxh7Bk6Uc+qSJAUHs0 hHW96nz0pFPX2CMSo4DDRKJ1pjAxYzZSqKSkuYUCq6pxZWv8sqIGk1+jaShr6tyaMety 9mEA== X-Forwarded-Encrypted: i=1; AJvYcCVZCv6eDygk7fMtTL8JzaCK7nFoSHOFVCXCEs/07/6+EzcvXS1MAaxUfIKVnyh9TLDoKaEq0z4mnoxBVJ0=@vger.kernel.org X-Gm-Message-State: AOJu0YwB0Rdm4Aq+l3kwPjSupArdAyS+5nMdbKWLYrJxpHvzsNBOyni1 Tkx/vLzB8A3fvUAj/PMDmWsPtlkFAk84xREMsfpIWhzmQd50G5QNxJ82knF2SN8RPb491QEOV/M v+sXeexL9ZdZEhJdNudPp55LSkQrSZlw7QUkTxnyc2YhSfgLv0VMiN92NVePZD/040Cw= X-Gm-Gg: ATEYQzzJ9tIIFLdH7wio68DfgqsJmeDZPa8u9M6Ao+yCoFsMR5+n4EpuK+XAxlKKlaK tAgkiJLnf1PyT8EjinzfBl9/tVOdULeuDon/n18gdI6ZRJjIMGsqfis5AgtlvNpqJY94oKBkDdi 2Hnfxp7jl2WkdVFmuFblvr5/IOAIKMpoWbd3RyxbV/cHOFC7bLNqP6LJWetz9w+IMdmvwdZFP9W UPz8QkvgZJB/y01ktIOH70NYzBCq7JWRAO1WUiOLlIj0JN0vB+6T7fK6XxIESEz/4POXxNwU0qF FGld1tBuBrwrUWxpvrYzWUqok4l3WhAgKr8GAX6BjTYxEXZFpnw/OTRC8i22EuvfFqBw7pX0jR1 YWvrWQJjMrSB3wl/dS9CDCUl/obpYz2D/EnEXI3gq3A== X-Received: by 2002:a05:6a20:6f91:b0:38d:efcb:2e84 with SMTP id adf61e73a8af0-395ad0f10b1mr821275637.32.1772036666600; Wed, 25 Feb 2026 08:24:26 -0800 (PST) X-Received: by 2002:a05:6a20:6f91:b0:38d:efcb:2e84 with SMTP id adf61e73a8af0-395ad0f10b1mr821250637.32.1772036666055; Wed, 25 Feb 2026 08:24:26 -0800 (PST) Received: from work ([2401:4900:8fe5:3076:4038:f293:b188:d52d]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c70b71a735csm12822380a12.12.2026.02.25.08.24.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 25 Feb 2026 08:24:25 -0800 (PST) From: Manivannan Sadhasivam To: jingoohan1@gmail.com, mani@kernel.org, lpieralisi@kernel.org, kwilczynski@kernel.org, bhelgaas@google.com Cc: robh@kernel.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, cassel@kernel.org, Manivannan Sadhasivam , Bjorn Helgaas Subject: [PATCH 2/2] PCI: dwc: ep: Add MSI-X Enable checks before raising MSI-X to the host Date: Wed, 25 Feb 2026 21:53:59 +0530 Message-ID: <20260225162359.116000-3-manivannan.sadhasivam@oss.qualcomm.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260225162359.116000-1-manivannan.sadhasivam@oss.qualcomm.com> References: <20260225162359.116000-1-manivannan.sadhasivam@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Authority-Analysis: v=2.4 cv=faOgCkQF c=1 sm=1 tr=0 ts=699f223b cx=c_pps a=UNFcQwm+pnOIJct1K4W+Mw==:117 a=xqWC_Br6kY4A:10 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=pe7Y6ikbsv-OezTykHIA:9 a=uKXjsCUrEbL0IQVhDsJ9:22 X-Proofpoint-ORIG-GUID: xEGeMdBBX3usnEM3IjsCWVpv2VVmO9iM X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI1MDE1NyBTYWx0ZWRfXyhd7A1h4kou5 qp1pgXipf9KyPsKhjAnYDr6wecZsr5Gt1cpXvbVZ/x6MqOobTUdxqP1RMDAQv47bQnx6gvk1KT6 hXBomUXmQSfw/cnaGgbeDYMnuAF67uGwjKl34611JU9C7bkcgSe3bSheDIbz8uFq+Hodm0ujThM 5fE2Op8x28pdf7mxtU+Y6Eu0pBcLEqHm2ddsFGibG7tFI+o1pfTjuOhkQqziptSH2OxssESabnA /nIVgdIcSIzc6B9HcDDSGGVC/8x2ljvPrC1dFSxMWZvnW1p1kvSIN2yWUOkmZJ56oQD2sFrHvM/ SbC0yBKj5dT4PJW7O/nJ/YqwHcsezfw3pvNQXwAuD30SO/xuWJDR8itKHGCmJIlcUe9yFSrp1fW f+ejF3GGL39yiFIcVS8LvDERMt/Ky6uBdWnuBvxlZFrH4jEn57om5d/fhceqMNXaux+toc3WS8K lIhyMOihZI4+FSkBrBw== X-Proofpoint-GUID: xEGeMdBBX3usnEM3IjsCWVpv2VVmO9iM X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-25_02,2026-02-25_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 clxscore=1015 impostorscore=0 suspectscore=0 phishscore=0 lowpriorityscore=0 malwarescore=0 spamscore=0 bulkscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2602250157 Content-Type: text/plain; charset="utf-8" PCIe spec r7, sec 7.7.2.2 mandates that a Function should raise MSI-X only if the MSI-X Enable bit is set and MSI enable bit is clear. Hence, add those checks to be spec compliant. Suggested-by: Bjorn Helgaas Signed-off-by: Manivannan Sadhasivam --- drivers/pci/controller/dwc/pcie-designware-ep.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/pci/controller/dwc/pcie-designware-ep.c b/drivers/pci/= controller/dwc/pcie-designware-ep.c index fcbd648e049e..47bc33346342 100644 --- a/drivers/pci/controller/dwc/pcie-designware-ep.c +++ b/drivers/pci/controller/dwc/pcie-designware-ep.c @@ -1018,6 +1018,15 @@ int dw_pcie_ep_raise_msix_irq(struct dw_pcie_ep *ep,= u8 func_no, if (!ep_func || !ep_func->msix_cap) return -EINVAL; =20 + /* + * PCIe spec r7, sec 7.7.2.2 mandates that a Function should raise MSI-X + * only if the MSI-X Enable bit is set and MSI Enable bit is clear. + */ + if (!dw_pcie_ep_msix_enabled(ep, ep_func, func_no) || + (dw_pcie_ep_msix_enabled(ep, ep_func, func_no) && + dw_pcie_ep_msi_enabled(ep, ep_func, func_no))) + return -EOPNOTSUPP; + reg =3D ep_func->msix_cap + PCI_MSIX_TABLE; tbl_offset =3D dw_pcie_ep_readl_dbi(ep, func_no, reg); bir =3D FIELD_GET(PCI_MSIX_TABLE_BIR, tbl_offset); --=20 2.51.0