From nobody Thu Apr 9 20:47:03 2026 Received: from BL0PR03CU003.outbound.protection.outlook.com (mail-eastusazon11012068.outbound.protection.outlook.com [52.101.53.68]) (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 470543B4E87 for ; Tue, 3 Mar 2026 20:13:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.53.68 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772568836; cv=fail; b=aG5pO0h+mKCbhdVrXzFWYcFYA4hu0j7PUvsuwER5DFAHGI96S1udomkBHQQL/BxbUDX7NO08biHhwgtXynolV6XAedoZ1pGaR9jj0kPXPHX6Jy8VU1C0MQNPZ4e5w2IylYiFxKOoPDGhHxgHOv2P+7JJ5iJE+7+JffeHZ355AgE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772568836; c=relaxed/simple; bh=qj4Iqrsir2WmiaHK4/EiSOkBlY4eDrKZ0MgUDYAfVOY=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=UMONlz7BH7MZZtbx9naCbGGLos2hC6GUvE82FeTy38jRzGxpXLkPwnBQ8+ZhnNw+nSDLCyL4sHOnwFib5nG4JDMyxuVAuBjeI3RSvy+S2OHWUDGHlIfkyzz6iiHOpaIpIzsj1fW+/kYbzg/rkwrCMizHfZVc6GevdydlmMVkpOA= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=IJ1TbDGZ; arc=fail smtp.client-ip=52.101.53.68 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="IJ1TbDGZ" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=w4KrJhtoaQNviUksBZpAvFerlaXCuR7TK58gcYGpnKXWYy2CnxM/hn9uimSbS1CXKU/CdQ9RqwuClqGMvNjQ5ieQDxitdpmH1xkZqTSxpxntRoitT3i4pdKxLSJT5vybqR50AFvfwOz5jCYVR/MRlGTo2sxHK7UFMZB7aY7yA/4UJlmgERFOXc2ly8ZY4HF3TuZVD0B8Iazyq1PRQX5ELJeCDtVPLVOAklq7L2w74Fbe2zcEJwKZDzVVR2XoQaTljdX/wv7t+F3dZe9zIB5N5h9e8TzcYzObNFCsffBAFMGTat4fTEKuKi/W5NAg/QM1vs54Ut4nem1l5CzZXsc6NQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=+2lIhtbKvApOBKE2LwEEGIAsABSutCr+bRcpteD+VoA=; b=fWMK8Pj8CI/bVrZec8xQVrhY3QTrLipd545LPZOtnJzoWwaQCNrtDtEieVMm2LhM83ykMxIdRWlZsK2TimvlGXXQB0bHvAyIC0H34cAQtWhZGZ559YAgZdhklfeU2vaku/Uyl8CtttKvCcSkGwQsMGcOMfxsX3qGLDHWpiJT6UpmhLvZhd0h53xkQcYvPgdNI7cDH2nHf8fIjln0JTIR84U02XUVgfhXLtndBDhV8tWxq1JQ4m7G629woIw3ZClgctDZNFJ4xn+SoNVvUEDFCCQIlWkUMSsFRutIG4Ey8ZmpNQn/E1YEPJNQ3169d2i7Wz+AGcPgKYdrJdAbIzCwsg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=kernel.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+2lIhtbKvApOBKE2LwEEGIAsABSutCr+bRcpteD+VoA=; b=IJ1TbDGZ47Wcw7usttWCnuofFO55el6RRF/GHuhm0w6kk0BZZ6ydPRm5mCt49526z2P4eeWkk4yzAnXPsk03Co282aDTKPxmruhVa6tVGV79+6B4kre8w+mHrvibpiuqfMEALSHh8EqQKbsANOKcHhp5atKasA08JmK/yHxoQnPMIpPQ/eGmu0hwhty5FewP4FscfS9RLBYKu/qVZX6dXi6WJaOuJJxGc5JSQJdC6va/lcDDc5yyPnj8nTH6SxD6TMo8GXIroA70dLcaq8mQzJZE92bUG2zNQmvM+xW20rf2zsNNxBDnNCwdO3D4wThyqDe/9POzc6c5NF61osiS7A== Received: from BL1PR13CA0181.namprd13.prod.outlook.com (2603:10b6:208:2be::6) by DM4PR12MB8474.namprd12.prod.outlook.com (2603:10b6:8:181::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.22; Tue, 3 Mar 2026 20:13:44 +0000 Received: from BL6PEPF00020E62.namprd04.prod.outlook.com (2603:10b6:208:2be:cafe::50) by BL1PR13CA0181.outlook.office365.com (2603:10b6:208:2be::6) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9654.21 via Frontend Transport; Tue, 3 Mar 2026 20:13:34 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by BL6PEPF00020E62.mail.protection.outlook.com (10.167.249.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.16 via Frontend Transport; Tue, 3 Mar 2026 20:13:43 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Tue, 3 Mar 2026 12:13:23 -0800 Received: from rnnvmail205.nvidia.com (10.129.68.10) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Tue, 3 Mar 2026 12:13:22 -0800 Received: from Asurada-Nvidia.nvidia.com (10.127.8.10) by mail.nvidia.com (10.129.68.10) with Microsoft SMTP Server id 15.2.2562.20 via Frontend Transport; Tue, 3 Mar 2026 12:13:21 -0800 From: Nicolin Chen To: , , CC: , , , , , , , , , Subject: [PATCH RFTv1 2/3] iommu/arm-smmu-v3: Submit CMDQ_OP_PRI_RESP for IOPF event Date: Tue, 3 Mar 2026 12:13:06 -0800 Message-ID: <306eaea18559e090d6e5d65df673b1b245a84cdd.1772568590.git.nicolinc@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: References: 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-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF00020E62:EE_|DM4PR12MB8474:EE_ X-MS-Office365-Filtering-Correlation-Id: a92ab65f-0230-4a06-df0b-08de79615eac X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|82310400026|7416014|376014|1800799024; X-Microsoft-Antispam-Message-Info: iiHjXl2EEX2rZE+ol8I/UZYYGf1mfXbnfAUAls16h6wRgpSivO9nv63YAeezcHJVLKDTjZiOtJ43D3SIbdQkr7VevByz596lq1oWeiyHKO44fWA0YOgvTK22DulP/hsYkl4XP+sBMmHSOzWdqrrD93+9zKJrPLp8mWFauM/92UhTACRokejnPb0wtMXKahcHZY0nG4zs4AyY/exZAm+FJx/7GQjHpQ3LTIln6q8xqG3PvHY/YEGu0xO3Qt7VVh+tl7W7i9+bRqDExL9TsNlHFmYGqw188f/SW3yaRkQAUuFe/kOd4ZQ0C+2o7VbIEPWAzFQxTc5cKloK/0bmLB205TfR528rUO2/ldNn8kfJg6ThEeKC/OJfxmriZLb6rlx9bX2isoAibUEKzWlbXM478JVRs1dTkVcWtQj/7SSSl47ndyx3CkmPB5hyfZiBiYhlwegr+Cqz0GXvPRKa9S8i+Ia6R8EVIVtzoY0K0SrgE5uz1jjfFCDEKezct10dGZjVOfXxS20R7T5dVSa8Pd0HaiEtmR1au+uqJfbm6AU1a4UVmH3wa3+KsnAykhbW2QgZKFCAubdp95oLVJk5PdQe/yy8YEjOUYXXNDC4l5A6lg1KH4wTJj3lGNyLls5MQJ/Gja+tu+t0hq46C9ty0PdGjwXHM7P7/Ds6HpALCdusb6m86IusojI3rZ5GzxnDteKVr4DE1KHopRoPxGyZrXbptSH9YZrun2ClJLfIwMmmLhPaAoTwQhupuxZZVM57XOMcRrkkuEdmdtRspfMYzaeP3hZAXZlf3ShGGXC4k/MWCLLlpPnLmAuJyOxYg/iscY44X3+ey88DKSspVvF5DTuyGA== X-Forefront-Antispam-Report: CIP:216.228.117.161;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge2.nvidia.com;CAT:NONE;SFS:(13230040)(36860700013)(82310400026)(7416014)(376014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: /SfAPVfOOTRBActiaA7ydbhMAYrsVOd5WwEX+pBX/B+c/N2paQjkzc5vw1fvcYvy9+iJQUnZarxU61P3TZoVsDS/eOcuUDuloku+vg++/ilpiXRK8Vh0um+dGFEyVtt4TypGWjzkT6QFKZGakvZCrqBQeubhH03gkA79G2nMf6MIPsyni4i4NoL07L9VTUKiFj2XD/SrMf8KEuRgQnykJyXZGZd/xwLXQfMbbuAHTU5JZBvHBCwcQs2MiQeHNeNDuH0Btd4sfI16mTlEB2mGg+tqW0Ya/22QIpzm+NfQz4sXf5byaiYjP1uby7LbkIBeXiWeeipDQMSgHN+SuhEzzLrBuUSs3KDhp6MCJjCwkrCxmIbhRS8925zK02rqwocaMOnEfBxtoWfbIZ1Wbi7scngTMYtzn9i5yFxYlWKc6/FCLLlaayl6d3FIc2F1XKi9 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Mar 2026 20:13:43.8454 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a92ab65f-0230-4a06-df0b-08de79615eac X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.161];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BL6PEPF00020E62.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB8474 Content-Type: text/plain; charset="utf-8" From: Malak Marrid To support IOMMU_FAULT_PAGE_REQ, the arm_smmu_page_response() should issue a corresponding CMDQ_OP_PRI_RESP for SMMU HW to response the page request. Extract the PRI info from the iopf_fault structure and fill the command. Also, slightly rework the function flow with the existing CMDQ_OP_RESUME. Co-developed-by: Barak Biber Signed-off-by: Barak Biber Co-developed-by: Stefan Kaestle Signed-off-by: Stefan Kaestle Signed-off-by: Malak Marrid Signed-off-by: Nicolin Chen --- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 59 +++++++++++++++------ 1 file changed, 43 insertions(+), 16 deletions(-) diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c b/drivers/iommu/ar= m/arm-smmu-v3/arm-smmu-v3.c index 2176ee8bec767..055dde5367131 100644 --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c @@ -992,29 +992,56 @@ static int arm_smmu_cmdq_batch_submit(struct arm_smmu= _device *smmu, cmds->num, true); } =20 -static void arm_smmu_page_response(struct device *dev, struct iopf_fault *= unused, +static void arm_smmu_page_response(struct device *dev, struct iopf_fault *= evt, struct iommu_page_response *resp) { struct arm_smmu_cmdq_ent cmd =3D {0}; struct arm_smmu_master *master =3D dev_iommu_priv_get(dev); int sid =3D master->streams[0].id; =20 - if (WARN_ON(!master->stall_enabled)) + /* Handle PRI responses */ + if (evt && evt->fault.type =3D=3D IOMMU_FAULT_PAGE_REQ) { + cmd.opcode =3D CMDQ_OP_PRI_RESP; + cmd.pri.sid =3D sid; + cmd.pri.grpid =3D resp->grpid; + if (evt->fault.prm.flags & + IOMMU_FAULT_PAGE_REQUEST_PASID_VALID) { + cmd.substream_valid =3D true; + cmd.pri.ssid =3D resp->pasid; + } + switch (resp->code) { + case IOMMU_PAGE_RESP_SUCCESS: + cmd.pri.resp =3D PRI_RESP_SUCC; + break; + case IOMMU_PAGE_RESP_FAILURE: + cmd.pri.resp =3D PRI_RESP_FAIL; + break; + case IOMMU_PAGE_RESP_INVALID: + cmd.pri.resp =3D PRI_RESP_DENY; + break; + default: + WARN_ON(true); + return; + } + } else if (master->stall_enabled) { + cmd.opcode =3D CMDQ_OP_RESUME; + cmd.resume.sid =3D sid; + cmd.resume.stag =3D resp->grpid; + switch (resp->code) { + case IOMMU_PAGE_RESP_INVALID: + case IOMMU_PAGE_RESP_FAILURE: + cmd.resume.resp =3D CMDQ_RESUME_0_RESP_ABORT; + break; + case IOMMU_PAGE_RESP_SUCCESS: + cmd.resume.resp =3D CMDQ_RESUME_0_RESP_RETRY; + break; + default: + WARN_ON(true); + return; + } + } else { + WARN_ON(true); return; - - cmd.opcode =3D CMDQ_OP_RESUME; - cmd.resume.sid =3D sid; - cmd.resume.stag =3D resp->grpid; - switch (resp->code) { - case IOMMU_PAGE_RESP_INVALID: - case IOMMU_PAGE_RESP_FAILURE: - cmd.resume.resp =3D CMDQ_RESUME_0_RESP_ABORT; - break; - case IOMMU_PAGE_RESP_SUCCESS: - cmd.resume.resp =3D CMDQ_RESUME_0_RESP_RETRY; - break; - default: - break; } =20 arm_smmu_cmdq_issue_cmd(master->smmu, &cmd); --=20 2.43.0