From nobody Tue Jun 16 03:54:56 2026 Received: from BN8PR05CU002.outbound.protection.outlook.com (mail-eastus2azon11011061.outbound.protection.outlook.com [52.101.57.61]) (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 680F731D39A; Wed, 15 Apr 2026 21:18:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.57.61 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776287900; cv=fail; b=q2m2wbz1HaXp3213OHKeqQdc1KDaYVBi3wixx7Mj+MLdlN6y8SG3SIlpcU5TCPTE+6oCuXH1PC9/bDHGp1QfQIEHjh2YijFVrNidVpQ5eJmUMx1rsmxK/eiL7rM17edDr9hqmh/oEZbCXAyVrrwhogUILFXopML2+ujzzGPPi70= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776287900; c=relaxed/simple; bh=1p3FN7SKE9dNqD98Lf05dwoLRz11H/jvT7pi5GXeRkU=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=HoCrbLrd9lb9C+/+3UklD1UDSGHrzU31yNpOXoBMExJq6WAuJjh8AWC895fzlDDdJ8X0GBrZY4Z/IRGZiiK9aQO0Fv7zN2opj2mG7emlaUE2vUOuI85m/wSKh5of8zq1dfzPzo03sXUM6Cp3ZXkevKLVxRVxekJYxgriWuQyDMc= 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=UeBBHq9R; arc=fail smtp.client-ip=52.101.57.61 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="UeBBHq9R" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=w1JTPdnRNPUJ9DauRNtwz/tGng3z9DJ0uwt/chxqBxiYbc6TTeAAiLxUgFNVi36b0qQF8XUp8HrBc+XJhMdgP2NyT/Isvvh+ghntD6ROo3ScVSerbLTv7jo0Z21AmM0i0SV7qEEWFogSeFf/sEKFmVfr3gLJLAGCcyVmfX+mI2QyRLJHfpBCUG6TMm68jVlEkhSbj/kXCi9eFfdxQafArRiZC8of6nIVfeUiofIzJD/SKdy+qVax4Hdz4d31XiVF5RE00kz5lGaQ1EA5l/qtaRtnOJgH6+qqaipDAM9112kzO8+EuzrnGuP2TT9Gouy0KYSVF24oG35tfq7YtIob3g== 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=zba5Ja6G2u1LYyOtDoFUFJHKbQ4JzVqDk2JwIHqtSqg=; b=h1ZL1viFBoifyiLYPImeDrlHEynYkxAjCbGKuOTjXtmqGyIW7qh0SHV4CTSIRWgojEJyswHVg2FqSo+AmMKz211e+y17B+Tk/xJ5hifRh9pJhA3+pTixEW91XUoA/Hl2w7Nley5/OdRWMfX6I/BP9d8APmH3lI3garKvf7WE3g3CAidVFvWDCx6ux1H5tQdHZ3Klfo4SyLZvCS51zX9udnwAz786CnTltXySHyG2o0h01G6FAV/OM/PGA1XJhDgQaO85up+qtjnJyNKya3QCe7Cu20sBXPhjgudUkoz9NbQqXPlh//h25GnO0dfO04BmaBbdK9QluKfKfe7j3VL7Pw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.160) 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=zba5Ja6G2u1LYyOtDoFUFJHKbQ4JzVqDk2JwIHqtSqg=; b=UeBBHq9RL8jq+CW1O18+W0iL4aqTXN+pm917/KtK+Pau9N21yUzGoXTgMKciwRpJcgvBwk+/VHahNB29IHBWb/6Ue+hAhAzBv2OPuQAnm7UyR9BkDZc0DXGmy7J1gFCpSuzLcK0xvjXr1OCz9GJ19OgpYmdbi+MfTKyzqecb6gLgE4xysnn41Il0/3KcA6DsfBHw8Tn7pUuONjTOO8aiSfnv+YLAizI8mClw4NRR8db1XyuKG+qkFLVQNf0wbCXyjENxkDanZq0GPhGUIS4YKOHGcHB0l1TJvY3B9u2RRJJVbbkIzny+O8PgpjwlMTFKxWQNDtUZnWhxBEqZpgkFtg== Received: from BLAPR03CA0032.namprd03.prod.outlook.com (2603:10b6:208:32d::7) by CH3PR12MB9732.namprd12.prod.outlook.com (2603:10b6:610:253::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.20; Wed, 15 Apr 2026 21:18:14 +0000 Received: from BN3PEPF0000B071.namprd04.prod.outlook.com (2603:10b6:208:32d:cafe::c1) by BLAPR03CA0032.outlook.office365.com (2603:10b6:208:32d::7) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.48 via Frontend Transport; Wed, 15 Apr 2026 21:18:14 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.160) 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.160 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.160) by BN3PEPF0000B071.mail.protection.outlook.com (10.167.243.116) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17 via Frontend Transport; Wed, 15 Apr 2026 21:18:14 +0000 Received: from rnnvmail204.nvidia.com (10.129.68.6) by mail.nvidia.com (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Wed, 15 Apr 2026 14:17:52 -0700 Received: from rnnvmail205.nvidia.com (10.129.68.10) by rnnvmail204.nvidia.com (10.129.68.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Wed, 15 Apr 2026 14:17:52 -0700 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; Wed, 15 Apr 2026 14:17:51 -0700 From: Nicolin Chen To: , , , CC: , , , , , , , , , Subject: [PATCH rc v2 1/5] iommu/arm-smmu-v3: Add arm_smmu_adopt_strtab() for kdump Date: Wed, 15 Apr 2026 14:17:36 -0700 Message-ID: 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: BN3PEPF0000B071:EE_|CH3PR12MB9732:EE_ X-MS-Office365-Filtering-Correlation-Id: 7d8806e0-4209-41a4-7ec3-08de9b34814f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|7416014|376014|36860700016|82310400026|22082099003|56012099003|18002099003; X-Microsoft-Antispam-Message-Info: 4ovkEB5+n36Vb8L2SdvqM1dUk2Rl+9QSaHIRJQV6RFJlCT4IxPuCR43E+FZ9YwruskQ9b67AgDMJsUM6ROU/IUiLdbbkTahYsxPfWcz/rx/nVShFTTvtfyspw2KhHKdIZiL6yBZM2/f4GmCcs9ZxR79VVCp0Eqg+ELxwFMAUKQK2WutxHxXZ0+GufkGtaPJl4MLl3heZ5lpnxQQT4BeBdw7tAJIv2XLGVVpnrjnW+RiuQeI6zNBd/jqSFHSgeP6XFZNJvXfC/TUal2F/Ec6TrRs8dd5IjWUEWf/DJvn/28lqQYFGHwzCnPJec18c/C+z3CrLUq2jw2W2cL30ouWCWaEpT8x0Wxh4mkkvJJRDHemCTgAlrJGJKb+yAcYxZOg0jWqEAHpPcijma5DRduAHZAMY5kBBQBCzabI5eh7klYuwl4fzpWNcpcGiNk4doH6K6iRCFhmft4sYdEXPAqBdhiHSbkRcD96BsLWMgPQjolb98Dt17uwW6hUxjb+xnvIJhlLdrruRaiOgECn0e8fatoQuYHRukEH3WZ6dYKD+XPEegvEhMiQV2GKJo7cx2Wc3MKiyJwpPaJ4mMDTQ/L/WNk3KSY3NUtLoAX/jmZLTa0H1sbntkGPQAChV2hq5t+k+bLXxdAKf7pWDTHOXzOqdQP5Xqs1ar/UNNaiNp40BDPrC6agD1dCfjXA5uvc85pF4DfFalXI1ioWi0C2m0IvBEKZH1MTXy04pNDHWSF363+VrCX8PgAxLYxgA82AHaDj4H3LSfOd9GClPC2OQnurGDg== X-Forefront-Antispam-Report: CIP:216.228.117.160;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge1.nvidia.com;CAT:NONE;SFS:(13230040)(1800799024)(7416014)(376014)(36860700016)(82310400026)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: JaPSTkmCY5Sj2WmHfV1SjMtJCbLl69lhxqtPZvNX2Wpuri8Evut4UJFi/4121Zvhqz/8yLivIelbH9zPdvBdNa0g+0UOH6pJnEYM4ZNjzkbZx2fqn+VJ8qe8FQTVojiqFiZ5Xx97nwUvcJ9TeY6buTyA7aLlhEIxxVzYu56gdS6okpGndecx2r77b6wk2zq1XasnuiX4vbBoxMv1graQrWutNzI14HD47MNOSncY9PpmKwQo7NoZ2bezNwAQIUxCjosyPmyOUP9Qv1UgDScHgmPH3FHeKy8PM4YbZuf0aXBKpdwTFTGQdrb++cCJdCNtEtoYbjes8UBPpl2aZijG2F2rQoBE4VgSBpMum15KyS6npOrwPY4+fZ8HnSFmxmjhc/y74zcSR4bUmcvdPB408mt2mOKo2OeT4gCKVFLTCoW+doh92edSom5EK/ijDCEa X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Apr 2026 21:18:14.1435 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7d8806e0-4209-41a4-7ec3-08de9b34814f 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.160];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BN3PEPF0000B071.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB9732 Content-Type: text/plain; charset="utf-8" When transitioning to a kdump kernel, the primary kernel might have crashed while endpoint devices were actively bus-mastering DMA. Currently, the SMMU driver aggressively resets the hardware during probe by clearing CR0_SMMUEN and setting the Global Bypass Attribute (GBPA) to ABORT. In a kdump scenario, this aggressive reset is highly destructive: a) If GBPA is set to ABORT, in-flight DMA will be aborted, generating fatal PCIe AER or SErrors that may panic the kdump kernel b) If GBPA is set to BYPASS, in-flight DMA targeting some IOVAs will bypass the SMMU and corrupt the physical memory at those 1:1 mapped IOVAs. To safely absorb in-flight DMA, the kdump kernel must leave SMMUEN=3D1 inta= ct and avoid modifying STRTAB_BASE. This allows HW to continue translating in- flight DMA using the crashed kernel's page tables until the endpoint device drivers probe and quiesce their respective hardware. However, the ARM SMMUv3 architecture specification states that updating the SMMU_STRTAB_BASE register while SMMUEN =3D=3D 1 is UNPREDICTABLE or ignored. This leaves a kdump kernel no choice but to adopt the stream table from the crashed kernel. Introduce ARM_SMMU_OPT_KDUMP and arm_smmu_adopt_strtab() that does memremap on all the stream tables extracted from STRTAB_BASE and STRTAB_BASE_CFG. The option will be set in arm_smmu_device_hw_probe(). Fixes: b63b3439b856 ("iommu/arm-smmu-v3: Abort all transactions if SMMU is = enabled in kdump kernel") Cc: stable@vger.kernel.org # v6.12+ Suggested-by: Jason Gunthorpe Signed-off-by: Nicolin Chen --- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h | 1 + drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 106 +++++++++++++++++++- 2 files changed, 106 insertions(+), 1 deletion(-) diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h b/drivers/iommu/ar= m/arm-smmu-v3/arm-smmu-v3.h index ef42df4753ec4..74950d98ba09f 100644 --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h @@ -861,6 +861,7 @@ struct arm_smmu_device { #define ARM_SMMU_OPT_MSIPOLL (1 << 2) #define ARM_SMMU_OPT_CMDQ_FORCE_SYNC (1 << 3) #define ARM_SMMU_OPT_TEGRA241_CMDQV (1 << 4) +#define ARM_SMMU_OPT_KDUMP (1 << 5) u32 options; =20 struct arm_smmu_cmdq cmdq; 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 f6901c5437edc..9a45f17200a21 100644 --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c @@ -4553,11 +4553,115 @@ static int arm_smmu_init_strtab_linear(struct arm_= smmu_device *smmu) return 0; } =20 +static int arm_smmu_adopt_strtab_2lvl(struct arm_smmu_device *smmu, u32 cf= g_reg, + dma_addr_t dma) +{ + u32 log2size =3D FIELD_GET(STRTAB_BASE_CFG_LOG2SIZE, cfg_reg); + u32 split =3D FIELD_GET(STRTAB_BASE_CFG_SPLIT, cfg_reg); + struct arm_smmu_strtab_cfg *cfg =3D &smmu->strtab_cfg; + u32 num_l1_ents; + int i; + + if (log2size < split) { + dev_err(smmu->dev, "kdump: invalid log2size %u < split %u\n", + log2size, split); + return -EINVAL; + } + + if (split !=3D STRTAB_SPLIT) { + dev_err(smmu->dev, + "kdump: unsupported STRTAB_SPLIT %u (expected %u)\n", + split, STRTAB_SPLIT); + return -EINVAL; + } + + num_l1_ents =3D 1 << (log2size - split); + cfg->l2.l1_dma =3D dma; + cfg->l2.num_l1_ents =3D num_l1_ents; + cfg->l2.l1tab =3D devm_memremap( + smmu->dev, dma, num_l1_ents * sizeof(struct arm_smmu_strtab_l1), + MEMREMAP_WB); + if (!cfg->l2.l1tab) + return -ENOMEM; + + cfg->l2.l2ptrs =3D devm_kcalloc(smmu->dev, num_l1_ents, + sizeof(*cfg->l2.l2ptrs), GFP_KERNEL); + if (!cfg->l2.l2ptrs) + return -ENOMEM; + + for (i =3D 0; i < num_l1_ents; i++) { + u64 l2ptr =3D le64_to_cpu(cfg->l2.l1tab[i].l2ptr); + u32 span =3D FIELD_GET(STRTAB_L1_DESC_SPAN, l2ptr); + dma_addr_t l2_dma =3D l2ptr & STRTAB_L1_DESC_L2PTR_MASK; + + if (span && l2_dma) { + cfg->l2.l2ptrs[i] =3D devm_memremap( + smmu->dev, l2_dma, + sizeof(struct arm_smmu_strtab_l2), MEMREMAP_WB); + if (!cfg->l2.l2ptrs[i]) + return -ENOMEM; + } + } + + return 0; +} + +static int arm_smmu_adopt_strtab_linear(struct arm_smmu_device *smmu, + u32 cfg_reg, dma_addr_t dma) +{ + u32 log2size =3D FIELD_GET(STRTAB_BASE_CFG_LOG2SIZE, cfg_reg); + struct arm_smmu_strtab_cfg *cfg =3D &smmu->strtab_cfg; + + cfg->linear.ste_dma =3D dma; + cfg->linear.num_ents =3D 1 << log2size; + cfg->linear.table =3D devm_memremap(smmu->dev, dma, + cfg->linear.num_ents * + sizeof(struct arm_smmu_ste), + MEMREMAP_WB); + if (!cfg->linear.table) + return -ENOMEM; + return 0; +} + +static int arm_smmu_adopt_strtab(struct arm_smmu_device *smmu) +{ + u32 cfg_reg =3D readl_relaxed(smmu->base + ARM_SMMU_STRTAB_BASE_CFG); + u64 base_reg =3D readq_relaxed(smmu->base + ARM_SMMU_STRTAB_BASE); + u32 fmt =3D FIELD_GET(STRTAB_BASE_CFG_FMT, cfg_reg); + dma_addr_t dma =3D base_reg & STRTAB_BASE_ADDR_MASK; + int ret; + + dev_info(smmu->dev, "kdump: adopting crashed kernel's stream table\n"); + + if (fmt =3D=3D STRTAB_BASE_CFG_FMT_2LVL) { + /* + * Both kernels run on the same hardware, so it's impossible for + * kdump kernel to see the support for linear stream table only. + */ + if (WARN_ON(!(smmu->features & ARM_SMMU_FEAT_2_LVL_STRTAB))) + return -EINVAL; + ret =3D arm_smmu_adopt_strtab_2lvl(smmu, cfg_reg, dma); + } else if (fmt =3D=3D STRTAB_BASE_CFG_FMT_LINEAR) { + /* + * In case that the old kernel for some reason used the linear + * format, enforce the same format to match the adopted table. + */ + smmu->features &=3D ~ARM_SMMU_FEAT_2_LVL_STRTAB; + ret =3D arm_smmu_adopt_strtab_linear(smmu, cfg_reg, dma); + } else { + dev_err(smmu->dev, "kdump: invalid STRTAB format %u\n", fmt); + ret =3D -EINVAL; + } + return ret; +} + static int arm_smmu_init_strtab(struct arm_smmu_device *smmu) { int ret; =20 - if (smmu->features & ARM_SMMU_FEAT_2_LVL_STRTAB) + if (smmu->options & ARM_SMMU_OPT_KDUMP) + ret =3D arm_smmu_adopt_strtab(smmu); + else if (smmu->features & ARM_SMMU_FEAT_2_LVL_STRTAB) ret =3D arm_smmu_init_strtab_2lvl(smmu); else ret =3D arm_smmu_init_strtab_linear(smmu); --=20 2.43.0 From nobody Tue Jun 16 03:54:56 2026 Received: from DM1PR04CU001.outbound.protection.outlook.com (mail-centralusazon11010068.outbound.protection.outlook.com [52.101.61.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 4DB4231D39A; Wed, 15 Apr 2026 21:18:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.61.68 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776287907; cv=fail; b=GuzEVINczZmYtW3VDPnNbVMZlUxcYoLhaHU3wWj6+9xeOTdkF+1GXcAG9tgqDYPMtyji3fMPKJ5v4Tj6QvPyfjcSYEyLyxtsHAxK4xqJ+I1m9zijETU+oLVXa6HbxZcOVYYdf2+6Qd5xe40LSqyq8OE40+XnX645OFGrU0BJ9Jc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776287907; c=relaxed/simple; bh=WxAHp2LK0oKGFPv8oKZ6hQddC5Rj57KYE/DpO4ZIGWY=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=G0ofKAl5BySr5jFFrCY5O38NoF3U+4RF8TNdZ/XkjeFKJJeZiLL+jnXerhzQphxl4p46U0sSM5i7+MSYGBd9UXD4ZWmxGJWpTIfzIAE0+Gn/kTn7uIm0CampbHuir/idwhTGO6g+80xNN+r8Aa+vRDlfomLZqDjKoJno+SgJEk0= 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=DfOCmzD7; arc=fail smtp.client-ip=52.101.61.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="DfOCmzD7" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=p7zgZ6hVIUsN73+4IdwZeVgiyPNX0CFwcTHOYo1ZfnX9QkquZnN+YiVitG929FG0PTo0ZQiv2cEGkliW/L8NEs8P33499/8WPtvOEcfxybONAc538lItD34r3ByHcshjYu681ReEIKh+7zCKFihUzEjWlYF99nDRMs3G3k9sxfPGZ8EJpU+BDTQHV0YzkPR+F9kU9shU6jAPsZx9+LBoGYcUIYgOgqufN46aXSonj2Yghv569Aoy82k/aDEznTLtUA2DJvko5eYgIPM2CbVwGliAGrH1L7JNFOxZeA1vJnlOBs8yOrbrhhkUm5v48FXF91ZFP7IyINC7zv6VHZTTZA== 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=yPxpQbB7JZxa2PE+YOZXSFP1jbj7njwoqftfubF3zAg=; b=npDC6aJg0iB+onXSgot9MMczOK6O1KDqNTXJLE94He5rG+gg8iIa3Hco2Ov/+PDJT142Cl83BMVK0+55tEfSpMsLy74nbL8VWSBKQTRopiTALcsepjK9HTftpfCn5K9w6w7YysIR4LDfpWymWv2aGF9nD9HolbxvieTfjvCcPeJNfXMT8FTNe7UCPainYIxKbXGSZFbttvmxIQ6hPxaiFRVBFtjrpFjEhE2JVKvYsAWvbRQRVfHCgWK3PGcf4PssFBikRWiHsvHo5vT9rF7eADQa16uGP/Fg1HaNfa9/IheKIhmz5grSXrIrcxrXAWDf3MBTdjeJ61SC15AAFHW87w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.160) 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=yPxpQbB7JZxa2PE+YOZXSFP1jbj7njwoqftfubF3zAg=; b=DfOCmzD7UmkiS7jPo3VORkZojV+nm7up8APKZavF9Fkeaxs9w/QoTfIkln8W6Ihw90gaBDgSkaV1GrSc4fx+eedAdCNKLbaPq6szzBSCaB1VufBvLb6Z1qIj0maFOqETimQKmrruYVlDl+RliVmk8nCk+DAOyBXHvMfhdu6HIJlhS+f9kq1q387eJ1GK0RsmgeXYdfLYVqpwWJPnO22eyQ5GscAXCJfMrxPite+hXfM1Gci9/laf/1LGjI01YZGONsxWt0olHeBWrpwXIHaKAvBloj7BRxDiSv+SyKJPwEKURRS403xhSUgpNgofQl5J/PQgKZwoNxYpQ/HmKIffwQ== Received: from BLAPR03CA0047.namprd03.prod.outlook.com (2603:10b6:208:32d::22) by PH8PR12MB6939.namprd12.prod.outlook.com (2603:10b6:510:1be::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.20; Wed, 15 Apr 2026 21:18:16 +0000 Received: from BL02EPF0001A0FE.namprd03.prod.outlook.com (2603:10b6:208:32d:cafe::2f) by BLAPR03CA0047.outlook.office365.com (2603:10b6:208:32d::22) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.47 via Frontend Transport; Wed, 15 Apr 2026 21:18:16 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.160) 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.160 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.160) by BL02EPF0001A0FE.mail.protection.outlook.com (10.167.242.105) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17 via Frontend Transport; Wed, 15 Apr 2026 21:18:15 +0000 Received: from rnnvmail205.nvidia.com (10.129.68.10) by mail.nvidia.com (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Wed, 15 Apr 2026 14:17:54 -0700 Received: from rnnvmail205.nvidia.com (10.129.68.10) by rnnvmail205.nvidia.com (10.129.68.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Wed, 15 Apr 2026 14:17:53 -0700 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; Wed, 15 Apr 2026 14:17:52 -0700 From: Nicolin Chen To: , , , CC: , , , , , , , , , Subject: [PATCH rc v2 2/5] iommu/arm-smmu-v3: Implement is_attach_deferred() for kdump Date: Wed, 15 Apr 2026 14:17:37 -0700 Message-ID: <7637d66c0f6c1fb16da4b5c9c4cec71752cf4d23.1776286352.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: BL02EPF0001A0FE:EE_|PH8PR12MB6939:EE_ X-MS-Office365-Filtering-Correlation-Id: 8c815406-5013-4352-c403-08de9b348257 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|1800799024|36860700016|82310400026|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: NQ3yJVR1TrjJRgs1XfKRmXJRUrh89ft9yRtZ14iEx0rhf2yNs2+ktaJpvLprCfryHcwlwBrc+xtiQRETweKEZibXeDCiOZZLVM3HG/0T5VbZwYD3gPZJXhBftILtABdq+B0rrhNbi7x4+33z6Q2k2tWEz2nc4CVmpi+PZhA6wIXHyGEp4L1kh3qW3CiawRevLSyg0h7QCof3qFNI9FWaIZJFPvX7YiD1LIPrMPq6P4ewDcmwUzELCwtlboey705GL+hsmJCRiYLG44dCRoopH+3CUkH40ok+nTC+RWQRCZbW8X9b46SM/BGjyD8agg6QAiN1O3qC5uAi6AIN0ECDxXxUdNsW1HJ/j8YmkiRxems17s89cP40KV/kCbGQnZY6f/EwYF15z2wiImcQ5vy+C9cYKUyMiQaVulDOresqQfqekTmqrbmWDxgpYUsEIAavXOFSxTa1a+fFBClxa4uVhdcSYZ1snqGKXysDsDuPdPc6yt2OcOrh1IPuK/XIbZhHELAc1fVxtMgTnUYdeL9crgzv5SOeJc2fmWjVSxDIvavAxyebtoEC9msCZ/evVvXwVB+AZdQ4xdqrE5KdU/Nh6d+D5SMYTm/BD9/xL0a+jVgXaUiAcBwReJ8Z6fas+B9pSXZaME95pwcQmjpov84IRSrpvijjldXOCvqBvLncH2RN2R5R214tXu6FpZ6y/sYrk5NjlVRN56Obv8m/UtGVls1AFg1AgqyGf6u7qUdtUn6zD8pOJRQ6qiPM3tNjPuvGcdeOZid344nGqC7Qx67gkQ== X-Forefront-Antispam-Report: CIP:216.228.117.160;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge1.nvidia.com;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(36860700016)(82310400026)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: nycnXApbwFYH78FegydzRePgO0QMVM5i+QzwRRUII7xDHg/7q/9Jee2mDGgRNbCmW3JUhmFH7Ix/WMXqclQLNsK6VkyVXYHAjtLF9UpkfKvpYEfDTbQtapyYCmCOxmdl+g8BGwbRv1ZJ23fORWYVtAlDTzpSIsMom1Gwwsi/Ca8QGToGxHsr7Y+xn346/qa0t6kKZZYzJf3UhGezFqCLytrfCMLxEav7Vyq5Qj2TOqe2IVTQnFITDxBPWYMiVuLmm2nbuWswoSP78QnNlvFiThCgB7YabjmJh+JABesoMjSguiJ6FhEvrOOgfuJ6XpLMOgRxofklmPL3cLA6Mfo4HlGDqiTRbjGXVthYjb1zBg5ziwGAdaKVVKhLG2G0xqauyM8iswlUC1xP90XUZ6c8YJVdMcBGxVoEhTOXUIxeT2VUlj26sO8QVP3WgpuVlHJb X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Apr 2026 21:18:15.8690 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8c815406-5013-4352-c403-08de9b348257 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.160];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BL02EPF0001A0FE.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR12MB6939 Content-Type: text/plain; charset="utf-8" Though the kdump kernel adopts the crashed kernel's stream table, the iommu core will still try to attach each probed device to a default domain, which overwrites the adopted STE and breaks in-flight DMA from that device. Implement an is_attach_deferred() callback to prevent this. For each device that has STE.V=3D1 in the adopted table, defer the default domain attachmen= t, until the device driver explicitly requests it. Fixes: b63b3439b856 ("iommu/arm-smmu-v3: Abort all transactions if SMMU is = enabled in kdump kernel") Cc: stable@vger.kernel.org # v6.12+ Signed-off-by: Nicolin Chen --- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 28 +++++++++++++++++++++ 1 file changed, 28 insertions(+) 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 9a45f17200a21..d9d543eb8cecf 100644 --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c @@ -4212,6 +4212,33 @@ static void arm_smmu_remove_master(struct arm_smmu_m= aster *master) kfree(master->build_invs); } =20 +static bool arm_smmu_is_attach_deferred(struct device *dev) +{ + struct arm_smmu_master *master =3D dev_iommu_priv_get(dev); + struct arm_smmu_device *smmu =3D master->smmu; + int i; + + if (!(smmu->options & ARM_SMMU_OPT_KDUMP)) + return false; + + for (i =3D 0; i < master->num_streams; i++) { + u32 sid =3D master->streams[i].id; + struct arm_smmu_ste *step; + + /* Guard against unpopulated L2 entries in the adopted table */ + if ((smmu->features & ARM_SMMU_FEAT_2_LVL_STRTAB) && + !smmu->strtab_cfg.l2.l2ptrs[arm_smmu_strtab_l1_idx(sid)]) + continue; + + step =3D arm_smmu_get_step_for_sid(smmu, sid); + /* If the STE has the Valid bit set, defer the attach */ + if (le64_to_cpu(step->data[0]) & STRTAB_STE_0_V) + return true; + } + + return false; +} + static struct iommu_device *arm_smmu_probe_device(struct device *dev) { int ret; @@ -4374,6 +4401,7 @@ static const struct iommu_ops arm_smmu_ops =3D { .hw_info =3D arm_smmu_hw_info, .domain_alloc_sva =3D arm_smmu_sva_domain_alloc, .domain_alloc_paging_flags =3D arm_smmu_domain_alloc_paging_flags, + .is_attach_deferred =3D arm_smmu_is_attach_deferred, .probe_device =3D arm_smmu_probe_device, .release_device =3D arm_smmu_release_device, .device_group =3D arm_smmu_device_group, --=20 2.43.0 From nobody Tue Jun 16 03:54:56 2026 Received: from SJ2PR03CU001.outbound.protection.outlook.com (mail-westusazon11012020.outbound.protection.outlook.com [52.101.43.20]) (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 0295A285C8B; Wed, 15 Apr 2026 21:18:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.43.20 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776287900; cv=fail; b=V0o+r1JkfkZaXZjt5XQKwGza7vswgyhfyhrAzLf3Wf4AgpG6eiL3oP3YFmCurylSkJlkzZh53o1/VaZ2IDGsgJVW5w15FyWPssxZls64kRqYyajI8+y9ZYk13bUGbYnR36vtbbaI3eIaK4mu3SxRBFI1MMwdkkYX5Fz2E0r5Hig= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776287900; c=relaxed/simple; bh=pE+iaIZoyVWzvBaglaZCJMAZ15PpunZQm98f5FbFGFk=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=U37cMcsXZAbjAXXgFBNlGRCkNgl9koK4JIdDmHFoQz4lAdnxiZOLRL/6xdtNrexPTgQNJRpr37EoBDo8eaOqt4iHj/XK/VksTZhoJ5vnE0IJtYvoKvypIn9ZQVqr1OmqbQhULgd0IqCeg5y9ibdnSNE25AKCQAiokSzUBdHxl0M= 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=hm9/xVJB; arc=fail smtp.client-ip=52.101.43.20 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="hm9/xVJB" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=O/p9nygZnyWS5pI+AnrP8DZQJPaGxo24t5WYkgVKTaLljO2MM3bt3eE5QeS9uyHfyGWka/VO5+9dXV976CgvERVyAJRaoSxqeG/z5a6RLXD7hgByzcv3gbPGgp54eUawh4pzokx5YF5/ma0YnLKET/j2VXwXruV6Jk9VUdMePKx1MNO6J3CelEVTZfmFkTeTRHX4LxBpYv4mKaObK9ZraFsMwC8Qslb6kczcOfNcPl1EFbAwWAxPMgyD3MKrrp9uf9luT+u9XGcI2h1InWCs1qDVOyuJJKUKKTf14o+L5Ivs8zJPV5ApMJ/se20JY0j0q8v2t6L9r6BU3YNqPtseiA== 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=2b6AaYuVBhjnQ2qQ/DDS2ufKAxyzO3ee0R49wzfD8KY=; b=sm/m3C/38ikcyJPAX2raruvoJW25lFKq5KI3Z/4cuO1egs8CSo7KiVoyHeCCbc0a4Z2PPO1Oo/Wzp+qynBwMTYqG9kU2NWfmXGHVqyZYAFxFy/+L1jJkPS3OQeQgZTJjzVFbdshd6Nb2H71E6MCQdAYsl5TpXLKp+gNi64ugVPrfCMzyLXHTM80lkM8xprSE6eF8jLnpmpBrs/DBKoYV7m58QrdbRcWpfHzcBrjtiQsdYTrc2ap/MJ3KhxaVkavuGGS+yDYRRdN6GQ+GjBCTxK3ZoGJPzUYbw4kdNFe4tPCy+Z++empArSBbkfe56tbU2Hbwyx17JabsW2uWLRjmKA== 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=2b6AaYuVBhjnQ2qQ/DDS2ufKAxyzO3ee0R49wzfD8KY=; b=hm9/xVJBivbKrlwonlN1skxHlXMIKgOX+0qr/YGMLCbXZJCaah+hVRYOyN/nTKDoGTqmCVJjjfnLgyx0VESk5IS4JZAahR9gpDAcmQB6i7BPDeek/96cef0nH+ZHb9hL6FYmYakJYtl3TsSTKHI99Lz5QtTGalVlK1Y3oqy4zRTQ8yCs4VgYpOBEf+4HKM1HBhuFJuk3WOMMCdXAv6ODTXmVYKdRiiRhrcXMDSLOomIBy7KL6f/Nl7qNy+V501sp7fJP28c9oGhfs5lB2BkTIh1RoHWWd+R7ZThnRuHOK2YI+ThzyDrIEfrbn1Yl3likeBSrLwW9Cp+qkYmDdaPRhw== Received: from SJ0PR05CA0151.namprd05.prod.outlook.com (2603:10b6:a03:339::6) by PH7PR12MB6739.namprd12.prod.outlook.com (2603:10b6:510:1aa::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.20; Wed, 15 Apr 2026 21:18:12 +0000 Received: from MWH0EPF000C6187.namprd02.prod.outlook.com (2603:10b6:a03:339:cafe::4f) by SJ0PR05CA0151.outlook.office365.com (2603:10b6:a03:339::6) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.44 via Frontend Transport; Wed, 15 Apr 2026 21:18:12 +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 MWH0EPF000C6187.mail.protection.outlook.com (10.167.249.119) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17 via Frontend Transport; Wed, 15 Apr 2026 21:18:12 +0000 Received: from rnnvmail205.nvidia.com (10.129.68.10) 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; Wed, 15 Apr 2026 14:17:55 -0700 Received: from rnnvmail205.nvidia.com (10.129.68.10) by rnnvmail205.nvidia.com (10.129.68.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Wed, 15 Apr 2026 14:17:54 -0700 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; Wed, 15 Apr 2026 14:17:54 -0700 From: Nicolin Chen To: , , , CC: , , , , , , , , , Subject: [PATCH rc v2 3/5] iommu/arm-smmu-v3: Retain CR0_SMMUEN during kdump device reset Date: Wed, 15 Apr 2026 14:17:38 -0700 Message-ID: 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: MWH0EPF000C6187:EE_|PH7PR12MB6739:EE_ X-MS-Office365-Filtering-Correlation-Id: 1057bdb9-7f28-445f-d77d-08de9b348048 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|7416014|376014|36860700016|82310400026|22082099003|56012099003|18002099003; X-Microsoft-Antispam-Message-Info: Yk/jRD9fPWzo0QLHwaQuOCHZlCjU0ffC+8fACjy7jvFK3Ch5NZBcxDlEl3hqIQ2hGPlVceY8sFWLzWvMOF6WyqUhfu2j7au42q2jwnCF0u6871V9n4JBTcJ17ODYHG4l/E6qF65qWx4HNw+sNsUQulaVALvD3/bmVzq3jL6q7pH5gEZjSMxmJ8kqI1LvILhXUL0nk4I8E1kQISbVjP4X2F5BcRH8Bh+AQr3mPT1ujHeyFE1Nd2RToGY7y8u705fiONHfh7FBPfK5kSUlVslbXqLjUprCTpCoCEsyhv8RYMYocJKJrtx53d8UQqflnhzayID6f81vXo/d0hpe/qqD5dGvDaLhPK8aZteZCjYzA/LcThZvtIQZkYoUzT+YHiH8QcBLmEgWHhYQnvUajLkw1D+ilP5YULCD/KChHrw/jEYTMJbCWYAWqPcqePAq7rHz9no+yBIydQ2BBFTsKrZNieZ9TiPbmZIHwWfnnhCIGMXPIKWRHe5FqZr0mxAZPKwDStndS2x+nf/9WUIzUfqPET2E+TVDoeWQjxA8zamKmMKYJhn8OOD440jAadRpfvbGaZTy3tVLHnP15qX2X3FH6rE3CKuNDDheVoDFz9NYnDTmIb09XwISarNsB4o4qzAtdLM8nasG5IjGgnRVay5/50gCO8QE+4EggqJ/lPATvfEWP1J+wLRxHHbjJca2CQJlgDQt8E02yU/OxuPyfZOTNAUl0MK7AILr61UHb8kTgOYgj4qf0SuSZyAsXl3bL8FABsOyzUQXsIF1D2PlSJByLQ== 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)(1800799024)(7416014)(376014)(36860700016)(82310400026)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: jb56BqMsD60YxZ9R7OV8rqMD+liiPr4yJxWeI+YNXFeS0zYdD81gR0ho+avnizCNM3FXsAzFqLdeXQGHFhVZ3ZiUHPvG209dVQpKGaOoEtD8KWjkwhZwUVKhwqDExaq+LD6CKIN7rdLtCp2d21fIS4S1ViQQNKlrmmrUBI+DjWn2rcp7InIjHodCgfjxpDIR+Gs46eGurk7lOWjVnit02iM+s3HQgbfFbTVjATTYYPOZ55mJkfSvvqN6/gjad9iSwtIt/2kXbjntNmfOGMH+wIotSxiDpbl8EgZQzaUfCceiXIkv1oHnJfZGJDylaq+gEC0DwGrzJVwZFFIaMizNxFpyPALRv7pBc31dN05o6mcYk1smojsZjA6uFHOIHyNaPIPtfJbeLmSqBwXHsTqONbrcB8r60usoZYE6sXUTWCApp9HFTkMN80oQzPlr1vMK X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Apr 2026 21:18:12.5035 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1057bdb9-7f28-445f-d77d-08de9b348048 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: MWH0EPF000C6187.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB6739 Content-Type: text/plain; charset="utf-8" When ARM_SMMU_OPT_KDUMP is set, skip the GBPA/disable/CR1/CR2/STRTAB_BASE update sequence in arm_smmu_device_reset(). Those register writes are all CONSTRAINED UNPREDICTABLE while CR0_SMMUEN=3D=3D1, so leaving them untouched lets in-flight DMA continue to be translated by the adopted stream table. Initialize 'enables' to 0 so it can carry CR0_SMMUEN in kdump case. Then, preserve that when enabling the command queue. Fixes: b63b3439b856 ("iommu/arm-smmu-v3: Abort all transactions if SMMU is = enabled in kdump kernel") Cc: stable@vger.kernel.org # v6.12+ Signed-off-by: Nicolin Chen --- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 29 +++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 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 d9d543eb8cecf..b2c34713bf9f2 100644 --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c @@ -4938,9 +4938,23 @@ static void arm_smmu_write_strtab(struct arm_smmu_de= vice *smmu) static int arm_smmu_device_reset(struct arm_smmu_device *smmu) { int ret; - u32 reg, enables; + u32 reg, enables =3D 0; struct arm_smmu_cmdq_ent cmd; =20 + /* + * In a kdump case, retain CR0_SMMUEN to avoid transiently aborting in- + * flight DMA. According to spec, updating STRTAB_BASE, CR1, or CR2 when + * CR0_SMMUEN=3D1 is CONSTRAINED UNPREDICTABLE. Thus, skip those register + * updates and rely on the adopted stream table from the crashed kernel. + */ + if (smmu->options & ARM_SMMU_OPT_KDUMP) { + dev_info(smmu->dev, + "kdump: retaining SMMUEN for in-flight DMA\n"); + /* ARM_SMMU_OPT_KDUMP is only set when CR0_SMMUEN=3D1 */ + enables =3D CR0_SMMUEN; + goto reset_queues; + } + /* Clear CR0 and sync (disables SMMU and queue processing) */ reg =3D readl_relaxed(smmu->base + ARM_SMMU_CR0); if (reg & CR0_SMMUEN) { @@ -4972,12 +4986,23 @@ static int arm_smmu_device_reset(struct arm_smmu_de= vice *smmu) /* Stream table */ arm_smmu_write_strtab(smmu); =20 +reset_queues: + if (smmu->options & ARM_SMMU_OPT_KDUMP) { + /* Disable queues since arm_smmu_device_disable() was skipped */ + ret =3D arm_smmu_write_reg_sync(smmu, enables, ARM_SMMU_CR0, + ARM_SMMU_CR0ACK); + if (ret) { + dev_err(smmu->dev, "failed to disable queues\n"); + return ret; + } + } + /* Command queue */ writeq_relaxed(smmu->cmdq.q.q_base, smmu->base + ARM_SMMU_CMDQ_BASE); writel_relaxed(smmu->cmdq.q.llq.prod, smmu->base + ARM_SMMU_CMDQ_PROD); writel_relaxed(smmu->cmdq.q.llq.cons, smmu->base + ARM_SMMU_CMDQ_CONS); =20 - enables =3D CR0_CMDQEN; + enables |=3D CR0_CMDQEN; ret =3D arm_smmu_write_reg_sync(smmu, enables, ARM_SMMU_CR0, ARM_SMMU_CR0ACK); if (ret) { --=20 2.43.0 From nobody Tue Jun 16 03:54:56 2026 Received: from CH1PR05CU001.outbound.protection.outlook.com (mail-northcentralusazon11010013.outbound.protection.outlook.com [52.101.193.13]) (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 21CD93161AB; Wed, 15 Apr 2026 21:18:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.193.13 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776287900; cv=fail; b=dpJka/5KLTA8XxZOQIbj+eVGk3Pr2vU0MkThS8KOUALsByZUAYPDg+m3X0zHgH1Lp1krGqgbgFuxPk5lxpFLHaPkP6Kf4KUwCKDGhOHw40YDpCFoKB9SYot0IifJAwZFRlCe7mJz4zjeMDh57I2vomLaTnlDBiPO5MQGwsO6jic= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776287900; c=relaxed/simple; bh=TPRbVPa1R7/RoURujd/ImV50H4ue8GA6fTG6EXLSigw=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=goBLQPmZK4qWOTdB0I0f/v0S2vl1eAg+SCagTsR9ptMAhNkDbRgkgRUwc6K8IYDgGVxHEN3DySzpljcoJ9/X0gR91yXtHLtynt0Wn+UFOE4bL7q+VnxE8e7RFHQjM1X4ERmoOCwlyeDDZlBXtO80FuF8Dcp+/rluZx7d3+09SMQ= 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=bYtMt0E5; arc=fail smtp.client-ip=52.101.193.13 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="bYtMt0E5" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=YNaOagFVjHGMVQCT7CHMX9F/v2O1HIBoqm1Q6qaSUcz8PTEG+qQTAMNyCxGptUgMLaTj6aGup7jF8jNTX814CqqAGdATcTYUKYzf/Yt+ouvaCRD6goswIna0HOQrLoWPrMfYWuv7RIDUpAq3uOOeBAo7J5nmz8/cosOUqjqno0zQE5DIapiZhi1KsGjSILU4OjUzkq61KsSVGgYavAXOsFwF9sgNqvs3C08wZssMM0IqBKzUaww8uv1gkeE6wkbC0eHHH1vpHb0DIA2QVRz+TNI/W/P7xEDMF7wA5Sx/b4Z/wQ3p2tfGwiMCO+bTQzEdYfN+nui56eGsKOP1yO6KaQ== 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=bJUg2oSl7uW9qZjMRPwQuDAa6bd8jlY92RQFRP0xF5I=; b=CjA5P822BZwVfOlsR8NVdEvN2GFppJfbZhINeYl31//x20+I9v+8S1ULhTqE4xDEr9uh7s27AjDaJ0Y5ckaio122PL67yAQ+iqhhqKWbQPcqp8XOubcJCXrJpCwI7jZ/htmIaDVIo5ibdmtGCRnrJGDlDSVrp/PxyKsVdHm4XLxIu1ZNA/lNB3oRftr+d17EOWF3rDWXcP/tO8lWO3bxSgRAlR6soTQD/yHvyK1Wy/Vuce2zisQeA8Q8eS38Bmq/GwyeS4h0D40ADF9k14EoQ0lT2QYvlZ/KSoMZHKAyCsiZRmp62+UfoAvo5BUpmBQuAta/Ys9gQJ1NkVqzAJ5bjA== 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=bJUg2oSl7uW9qZjMRPwQuDAa6bd8jlY92RQFRP0xF5I=; b=bYtMt0E5w0KGe9Q651Wmw9w1lx5WCBuf1yrZCejgV5oD04DgM868juzwsEOgjTkG6GCMT0jw4Of2ieINEIzqg/kOGhsupp2M+6pLP1UdxjnWKa0yIDJJ/zQ0CzLi45hjIXjBYzSbKTJXWfWtlLE89V+CcmcmJO8jtLxmkGYilVN2f4Z2Z5jjoWX8Qm/+fu3WyexEQFN5EWbFiIPgHgEb+5XSWBUPaIfYMxChQCJFygTnPZvPyZD/V9qjm/4OVAnCcA7bhNpNfTSJbniHaKVSLqU1HiQIodZO6H44/DyJ5T3AQaITTZJys8/arsFbyuqSYaPTI3oYo8pLkrhZkq9qVw== Received: from SJ0PR05CA0158.namprd05.prod.outlook.com (2603:10b6:a03:339::13) by SJ2PR12MB9210.namprd12.prod.outlook.com (2603:10b6:a03:561::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.20; Wed, 15 Apr 2026 21:18:14 +0000 Received: from MWH0EPF000C6184.namprd02.prod.outlook.com (2603:10b6:a03:339:cafe::94) by SJ0PR05CA0158.outlook.office365.com (2603:10b6:a03:339::13) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.48 via Frontend Transport; Wed, 15 Apr 2026 21:18:14 +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 MWH0EPF000C6184.mail.protection.outlook.com (10.167.249.116) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17 via Frontend Transport; Wed, 15 Apr 2026 21:18:14 +0000 Received: from rnnvmail202.nvidia.com (10.129.68.7) 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; Wed, 15 Apr 2026 14:17:56 -0700 Received: from rnnvmail205.nvidia.com (10.129.68.10) by rnnvmail202.nvidia.com (10.129.68.7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Wed, 15 Apr 2026 14:17:56 -0700 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; Wed, 15 Apr 2026 14:17:55 -0700 From: Nicolin Chen To: , , , CC: , , , , , , , , , Subject: [PATCH rc v2 4/5] iommu/arm-smmu-v3: Skip EVTQ/PRIQ setup in kdump kernel Date: Wed, 15 Apr 2026 14:17:39 -0700 Message-ID: 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: MWH0EPF000C6184:EE_|SJ2PR12MB9210:EE_ X-MS-Office365-Filtering-Correlation-Id: 66af1474-2507-4665-2a9d-08de9b348144 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|36860700016|82310400026|22082099003|18002099003|56012099003; X-Microsoft-Antispam-Message-Info: 0TuC2oOSFn9GRnBN32Uaq+CXfYY4Y+ssTEbPjMzDpFyJ0u+1L7PaDqrGZX2/brvOvguMWJw9h45qrcolMiOtT4FeiR+R/D+sey9MpkwpgePz3SrKgFpfpUHTZQJy+V7FPZEJvZyVrn3uNf3342A1gyv0xQXDjZDRGjHubPtpl3VYnUwv6mVgzEDUf7TcR0ikYa+x8v8WiA5s8qnzapz5gavuiBwzuaZUY2GBV3R5x/vBhMXaXAZjd0LrJMZwSfa+U6+FGxD10AzkJLCHl+8ux3BhSSacz1QYiMg3gycH7AP7oLeCKV1K+9ZkV3UligRcUO16Ysf+nsyAW04mSUHiglEh2/AFLBmepY/nNQmgEx5l0Ppvt3HtaTOOHE4LG5K5h09MkjIY5SDux9Bj8niPIHOSuZtgGJHxrzlYJ0q6qmmLwhzwaMXmVM+3nyNsJ5be+cIrPTWn1Ejvj7gYTec3q4KnLBC6/4JbrJqarVufprPeKUqY6jfA6hu3+Ln1IT0Q0GQwBXNCRFbSd2ni1t8qSsQWEQoMRYBbtJ/xbQL41szebgMvN4Rkls/73W2uu0Yvd/XWUCJ+9PwNhwpHgUHuA3aHxf9MWt0OB7ezbr54lAxFYhkwE+bjN/uwWUOh91VUB2DkSfFUc2Bg9Jq51khT1VDmcRmMQ2Z81hngc7P3SH66GXlqRCEyiJ4DHuOlNhrIJXA54sOTCCgpc6pb53erwMZTSrfM2EY6QOiRf4dKrOOw3LGH3wVQfKIXK6gvvfaI9yGomzMhi9vS8dD4el+bhA== 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)(1800799024)(376014)(7416014)(36860700016)(82310400026)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: C77NX6kJ9QV6nxkp/wH+Dgn/LLl6joEx6rkNHFWsfgqsvXPVHHggTbxvYbyEaQvACZHcYrPp4iE/BDdVKGhfu161QWHByCimCsLi+s8RwFTbcx90FYJd9/DquTowkG/hgMqzci05Qq7/SUVlwUN4adDpf13b4cfwTDbM8PwUK8o1XCvegc1yZjRBT437rrDu+GN+wjW0ALK6tUVkZbwA9cs67TD5BqkC4eBj8A33HIOn3BPXVor0Ulat86I0cUIV7gH0TfynYmaRLK/DPpXpbMf0ktyNEZKwGtrkLuyTW7AvJbtsSTGJ9n8HetdzsIkK1Qp3dlPYFjnd05Ao39RBRyr0w2s7y5RYMGttrfatB265e2O5ksdFaUAWfvrvxL+CGJbzxRT8KF7NwKtLGm9iT/J0DH5s30qwMy4jxkxWxOPKb/Tqjxoxdv/lXiFZ1zWT X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Apr 2026 21:18:14.1558 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 66af1474-2507-4665-2a9d-08de9b348144 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: MWH0EPF000C6184.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB9210 Content-Type: text/plain; charset="utf-8" In kdump cases, the crashed kernel's CDs and page tables can be corrupted, which could trigger event spamming. Also, we cannot serve page requests. Skip the EVTQ/PRIQ setup entirely rather than enabling then disabling them. Also add some inline comments explaining that. Fixes: b63b3439b856 ("iommu/arm-smmu-v3: Abort all transactions if SMMU is = enabled in kdump kernel") Cc: stable@vger.kernel.org # v6.12+ Suggested-by: Kevin Tian Signed-off-by: Nicolin Chen --- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 43 +++++++++++++-------- 1 file changed, 27 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 b2c34713bf9f2..12cd148a99dc6 100644 --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c @@ -5023,21 +5023,35 @@ static int arm_smmu_device_reset(struct arm_smmu_de= vice *smmu) cmd.opcode =3D CMDQ_OP_TLBI_NSNH_ALL; arm_smmu_cmdq_issue_cmd_with_sync(smmu, &cmd); =20 - /* Event queue */ - writeq_relaxed(smmu->evtq.q.q_base, smmu->base + ARM_SMMU_EVTQ_BASE); - writel_relaxed(smmu->evtq.q.llq.prod, smmu->page1 + ARM_SMMU_EVTQ_PROD); - writel_relaxed(smmu->evtq.q.llq.cons, smmu->page1 + ARM_SMMU_EVTQ_CONS); - - enables |=3D CR0_EVTQEN; - ret =3D arm_smmu_write_reg_sync(smmu, enables, ARM_SMMU_CR0, - ARM_SMMU_CR0ACK); - if (ret) { - dev_err(smmu->dev, "failed to enable event queue\n"); - return ret; + /* + * Event queue + * + * Do not enable in a kdump case, as the crashed kernel's CDs and page + * tables might be corrupted, triggering event spamming. + */ + if (!is_kdump_kernel()) { + writeq_relaxed(smmu->evtq.q.q_base, + smmu->base + ARM_SMMU_EVTQ_BASE); + writel_relaxed(smmu->evtq.q.llq.prod, + smmu->page1 + ARM_SMMU_EVTQ_PROD); + writel_relaxed(smmu->evtq.q.llq.cons, + smmu->page1 + ARM_SMMU_EVTQ_CONS); + + enables |=3D CR0_EVTQEN; + ret =3D arm_smmu_write_reg_sync(smmu, enables, ARM_SMMU_CR0, + ARM_SMMU_CR0ACK); + if (ret) { + dev_err(smmu->dev, "failed to enable event queue\n"); + return ret; + } } =20 - /* PRI queue */ - if (smmu->features & ARM_SMMU_FEAT_PRI) { + /* + * PRI queue + * + * Do not enable in a kdump case, as we cannot serve page requests. + */ + if (!is_kdump_kernel() && (smmu->features & ARM_SMMU_FEAT_PRI)) { writeq_relaxed(smmu->priq.q.q_base, smmu->base + ARM_SMMU_PRIQ_BASE); writel_relaxed(smmu->priq.q.llq.prod, @@ -5070,9 +5084,6 @@ static int arm_smmu_device_reset(struct arm_smmu_devi= ce *smmu) return ret; } =20 - if (is_kdump_kernel()) - enables &=3D ~(CR0_EVTQEN | CR0_PRIQEN); - /* Enable the SMMU interface */ enables |=3D CR0_SMMUEN; ret =3D arm_smmu_write_reg_sync(smmu, enables, ARM_SMMU_CR0, --=20 2.43.0 From nobody Tue Jun 16 03:54:56 2026 Received: from SA9PR02CU001.outbound.protection.outlook.com (mail-southcentralusazon11013022.outbound.protection.outlook.com [40.93.196.22]) (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 F1E973191BD; Wed, 15 Apr 2026 21:18:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.196.22 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776287906; cv=fail; b=uPRnPDmUgwvAqw+p+4MauP5clX3Ua9AH1z28IWlgXjULkgL47pSVNuvUxKvi+ZD4mcc/QU5tU2xOYdgGSnSwWVQRVfncAMsNUldMPFSP1sPzxgAA66DAgsg6sKlSFTHAgkNVjm9XSlg4cui+CqkjTm07ZRoe4iWMMoUZOWJmwVA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776287906; c=relaxed/simple; bh=Ovy/aHwEFHUWSLrSoVaVfFeaqek39fy70T0Aj9297uw=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=OF9iosXzboR6jj2N2ry9Ch+6DBXdewRGszJOfH8oxXHQ+z0g+ry8x20Ioo0QSyuaGvZ7FwVD4kHxRcZyclc9PNHdQdaHz+Lcn/etjKNreFDDRwb95cVRHjzg5AgrN/aNCAZOxZ1SHrLcO1hA+sQ6B3b3IBUrbR92JfpBsUe2cIw= 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=pxRPNvS7; arc=fail smtp.client-ip=40.93.196.22 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="pxRPNvS7" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=EbSmipKtS6VNlhQAlxhS2FU4Liap8xYCdkt/lGMe0tq8lZekhG8cLBr9/s/9ua2HrulypJys+MqMBmnBGQ6t/OQk5/+fUaFU8IgGCLhHouz6Nyl1hC2AwdclmQ25vNT6Ql7LJQpTdXCxhzSUe7eaQHdgYXyZyP2eJ2rY1CUPLlu6IAU6Idyz3mnmfQNQGe8rnNFAUJt5CaVLfi0Rvo7Xefgt0T3QQnlltRGBshuRuymJ4vYdFeUfCJP1osCv2q0MvUdCgVVfkcMZXhPVY3FhQbnQ2iGnuWcjOC/mvY8mtTvzeLkNpY96UdFRJGe0su+AefwgdUo5sX5x2FkSLpQzVw== 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=7XcP1hOR0fcNpQwXBtm5TxfOkz+uHZDImYaq76ICR6Q=; b=KcvVO+KVku77EC5Tkka13wWH4KXo+EZ228QnsNs71Zpvnsx8RI0trfYi5eO2w8sQ41nkxazvzbo+IcPEdSm/76XXD1fAUADCIzHQva1xYP+wYlqHMi0OxyZFoWbxWzGZhHenVxIa6yGLalETodV6U+aHbavp1d8gHDUSJg+/lU5DyEbmF+XhYoCkBixI2ug+vVhU6CiG86De+5PYoNzmR7FlASnrUgrjnZ+SOPA4iY17SbIFXGOJQVpQHeJX+OwSlQJQ8Zhhn7ZtvPZxP2+rW1Q38tzULQtAKPvMzu/9cm5rQEbh9ew3rhivBVrW0HeGPDCaF+dBmGtNJyyE037wvw== 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=7XcP1hOR0fcNpQwXBtm5TxfOkz+uHZDImYaq76ICR6Q=; b=pxRPNvS7a4iAHkUWdrBB187JEwj7/8lYpRbXnBJLDCX277vn5E8YZSE2CovA1qnCWOkxsjClAYev2QSKQKf5YkXEwFlK711LITByQ3aH2thFYTznuWQrDBLZJwweZWBzO2GZLyhwhtmyVIPwlNSzh4roI1fuvelZ8cVyJ0QMYtkzyIZq0D0ZQmOw9yc5hUWV9j6ADwyRMXlofrR0yuAG0EMP+TEtQss1zNi33YgzK6BUVQaVgeVIqSrU2l+Wz6uT8I2q/Jq84/Po2gJaO5dDX3KelzSjNAIXoQ5xZLU1/u7rpFt7a6rC95+7RTyhEYu6Y3lYKc6ph4are0KbbxnBpA== Received: from SJ0PR05CA0173.namprd05.prod.outlook.com (2603:10b6:a03:339::28) by CH3PR12MB8659.namprd12.prod.outlook.com (2603:10b6:610:17c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.41; Wed, 15 Apr 2026 21:18:15 +0000 Received: from MWH0EPF000C6184.namprd02.prod.outlook.com (2603:10b6:a03:339:cafe::90) by SJ0PR05CA0173.outlook.office365.com (2603:10b6:a03:339::28) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.48 via Frontend Transport; Wed, 15 Apr 2026 21:18:14 +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 MWH0EPF000C6184.mail.protection.outlook.com (10.167.249.116) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17 via Frontend Transport; Wed, 15 Apr 2026 21:18:14 +0000 Received: from rnnvmail205.nvidia.com (10.129.68.10) 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; Wed, 15 Apr 2026 14:17:57 -0700 Received: from rnnvmail205.nvidia.com (10.129.68.10) by rnnvmail205.nvidia.com (10.129.68.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Wed, 15 Apr 2026 14:17:57 -0700 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; Wed, 15 Apr 2026 14:17:56 -0700 From: Nicolin Chen To: , , , CC: , , , , , , , , , Subject: [PATCH rc v2 5/5] iommu/arm-smmu-v3: Detect ARM_SMMU_OPT_KDUMP in arm_smmu_device_hw_probe() Date: Wed, 15 Apr 2026 14:17:40 -0700 Message-ID: <8738309953fc091464eaeb4b2b3d0bb8a70994e1.1776286352.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: MWH0EPF000C6184:EE_|CH3PR12MB8659:EE_ X-MS-Office365-Filtering-Correlation-Id: 66924be1-cf82-448b-e00d-08de9b3481a0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|1800799024|7416014|376014|36860700016|22082099003|56012099003|18002099003; X-Microsoft-Antispam-Message-Info: 3gEtc+qMErOkvLQ/N3tBojfmLwxnRKGukH5pb5KSVWCRy6Q5TvmtwPlL0/DZZMsdaQ9ztwUJ0Z9zj1T5VCUDfNpjJ2RqR85YLzM1e3bJs24/nP2DukEYucuwyk9Qw//SF0EOS6bJo+F9mkSDVtSR8AZBKQfwHlkRL+WycTNlUxlgvEyujUMlyzkUMEqsajPGE3WUrTo8tMyGA+g/ZTegd44Tu1AIUNHcR4+npmtrQBjSOlRQtqE+NizUslfmdLmzNZJKrf5Atic9L0S0tyR0/AmiMJeNWglC8AyWJQVkXpD+QMxHg13oW/Rs8orvaaRx+eGdK1T/tbBI1flMxzsbXwbb/s7ZZVEvxtqo0zSYX8SrV94dahCd73nUkOLcf1KGZknTDZwBtE7VEOYVk35B74eGJIjDqECeqW8tybIj3t75+vQtjgLZ9i6SSmoJaOW8KtSGP+SefbDx6dFCcEvLYaUUz2bgoeigpsTRb/+I2nK0iNZoX/ONXceyFtMTXjdPPMhCHikHwdbdokeEGJCCzbr/aI6l0s5iXwvE6En/bU+BKhdjQhyXMkzajshuwOoI6iDigHX5ENwN9LZz0SYrF2PEqOTXhwIJRSiNWFdrUzJWHJ96mWP8jIpFWZX2h9exM37Id1XUespAwSzqe7YUmyBTtjkk45wZohxrRLAEUpJpJKSMKrkwIoPCAyt5wKL02yKhMtfiUYFoqN4twQX37h833KmbL+FLr3fVnHQMHdbkQ6RVOw6pEmDL8mSYI7Ykdv3SU4v7/e/cUeP15hhd5Q== 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)(82310400026)(1800799024)(7416014)(376014)(36860700016)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: mYhVCnxttCfkT2TDdDRPMa/AcqBGCn5D6kNahrMBEf22QcviYj2KkGkU8DWEZyZ6ScwFe3jdPJww9rTuEJp1chNJ/6J1+vagq8rxeQ7UiRxGge2LAGQEJPgRQS4DztC5e+SdWl9FS66ZCkdGsSHjkkluX0bHiu4lef02OOyV/Zg5fB5jTazz6ZO1YvU7qlVVF8s37+NTCvdAkxOFJwDPJcE/UccvPy8bAGmPKSEyUVFC72N8V+2NRS6MKwZUoXxkPW9tsJEehi3wL4TwgyMjkPZ8pv3zNayn+5gEIS2/HUUNgaaZDhHDUQgMboPJ5PLLo+D2beeEYj4isBTFQ11wpw2bYjadg4wF+gWQB0IqKjCuSl7EjjimUItjJ/8iLXm7mjHsH/yZ94FyRzsmJTz6sQ3KhKGg0J1aivx/jS5FY5YbCz97dtMCUVjW7/4XO9nl X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Apr 2026 21:18:14.7494 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 66924be1-cf82-448b-e00d-08de9b3481a0 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: MWH0EPF000C6184.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB8659 Content-Type: text/plain; charset="utf-8" arm_smmu_device_hw_probe() runs before arm_smmu_init_structures(), so it's natural to decide whether the kdump kernel must adopt the crashed kernel's stream table. Given that memremap is used to adopt the old stream table, set this option only on a coherent SMMU. Fixes: b63b3439b856 ("iommu/arm-smmu-v3: Abort all transactions if SMMU is = enabled in kdump kernel") Cc: stable@vger.kernel.org # v6.12+ Signed-off-by: Nicolin Chen --- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) 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 12cd148a99dc6..5a5e0f80bbfb3 100644 --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c @@ -5388,6 +5388,25 @@ static int arm_smmu_device_hw_probe(struct arm_smmu_= device *smmu) =20 dev_info(smmu->dev, "oas %lu-bit (features 0x%08x)\n", smmu->oas, smmu->features); + + /* + * If SMMU is already active in kdump case, there could be in-flight DMA + * from devices initiated by the crashed kernel. Mark ARM_SMMU_OPT_KDUMP + * to let the init functions adopt the crashed kernel's stream table. + * + * Note that arm_smmu_adopt_strtab() uses memremap that can only work on + * a coherent SMMU. A non-coherent SMMU has no choice but to continue to + * abort any in-flight DMA. + */ + if (is_kdump_kernel() && + (readl_relaxed(smmu->base + ARM_SMMU_CR0) & CR0_SMMUEN)) { + if (coherent) + smmu->options |=3D ARM_SMMU_OPT_KDUMP; + else + dev_warn(smmu->dev, + "kdump: in-flight DMA would be rejected\n"); + } + return 0; } =20 --=20 2.43.0