From patchwork Fri Sep 6 15:47:51 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jason Gunthorpe X-Patchwork-Id: 13794406 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 74501E6FE2D for ; Fri, 6 Sep 2024 15:59:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version:Content-Type: Content-Transfer-Encoding:References:In-Reply-To:Message-ID:Date:Subject:Cc: To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=RCqk3ZO4Em6iPBbO6sLuzgGRBH+FruDDU7FnWBte34c=; b=23uJf2fr+O9N/Yt7fFFLa+1KwI PRKha2ynPAmfyGhb0Zey5jCVwtSBIOpy59woUFM5phUth7nWootoYBeJ+t7HLTHY8v2aoOvBqPcEk owKgA9zKN7JkryfYBtS1GAHdAgl2bsLnaU3r4+H8SmV/QkfVfK5noxkAMf+N2tH462iBh/hLjZ2NC xSR6UWjkoLx8h3M1SvxGzTrbyPo1vqRsmpGawi8nSHMAIyvLkeAiKybTj9SjV0zxZmNiOYC2oqcCL r7eA4z7AcA37V2/mOg/7MTnP0u/0QgRKDyKKjXqwVkmcwx+GN6tqzCmG6pPAtM14H8rD/ATw5j0FE mfHTQWQA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1smbN3-0000000CsFG-0SAl; Fri, 06 Sep 2024 15:59:37 +0000 Received: from mail-dm6nam12on20618.outbound.protection.outlook.com ([2a01:111:f403:2417::618] helo=NAM12-DM6-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1smbC7-0000000Cpl0-0cYi for linux-arm-kernel@lists.infradead.org; Fri, 06 Sep 2024 15:48:21 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=DJROqgXhH6I2/VbHmIIsucYWWrCGWMtTk2d7sOcWj0vQIwPiu2oD6wh46vpIAM4ry0pXHX3HTUTLTJd2s0M+7vPKum9NERwpj9GMNLq8E43d5V4yn42xfXR+ANjMXOsDUM+p455vuAoGk41BYsFz2RXhXlZN/q+5Go421H6kx9JhhfCT/dWma3iUUL+FmuqeJdRuTEYRYDE9feSnFvAW9RoKCr90IPn1i+odip5G/M60WUEW0UEQvjRQaCvg+XoD7U/6mpzD7JhthDSR0IsnjEsQxxpY7oByyIhOPCJ5eaU2q3AMsdbW8iWFtdnLrZIE9ZO7OWi32y2hEO8rqFvzBA== 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=RCqk3ZO4Em6iPBbO6sLuzgGRBH+FruDDU7FnWBte34c=; b=PAV+ATJRDwR425WbJOX4K+xEXSGdBdXsxJRDAvFJiLncJXOooX1kj3iRBrJOFgfnjxdmDn4tya6wlti9AkzwzWswtxMBG0kwRflBHhugA059i8sEuaV0U3MtA96kWKTBJtqxW71QSXj2LKF86AyCstE4DQ5i9u/qKMIjcD9hPeGKbxoQWBeQNgMYgQ8780RbDPq/zrYXN9z6s7z8zWYh+EjN7PB4ZUsR5yoaHHUCuhVuWAIMxq5c18pJtHunBj7UoGYvLgovFUyOYqfjsM14rJApOT5FfvmdZYotB/4BY2tpSlT0O0aPaI/JqteCmeS8WpGO0trt/onyvVzNtjn/Kw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none 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=RCqk3ZO4Em6iPBbO6sLuzgGRBH+FruDDU7FnWBte34c=; b=f4RLwiixmhusC86RYvcpChcj/poMduOnPiyZXEdMCZfXxIHS+Y0PoognIdQv+gqBjuljJFU+5dvjHRe193OszaHvMYrOjho87HXLDKrD8GW8yztPPIe9ZCJjsSmsB7T8GcFnVAOufqUQVWMY4OO4vlo34lmnD5sFDzsMgD/KHJaj/L3N4MRRHbTdASxKzCQA3K6goZZFkOXAck3EQdkaAd0M6IM/ympDDm8KiLQV13bm464jNXvQ1i8q2UZJBJGpJnVpEioO+yxGfqj7/OuLh1bo0DZR1ySArcRVdeQhWisdSYKLD2hjyg60WX1QSJR48i4qaScfb+bNjU5kI2UPRQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from CH3PR12MB7763.namprd12.prod.outlook.com (2603:10b6:610:145::10) by SN7PR12MB6792.namprd12.prod.outlook.com (2603:10b6:806:267::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7918.28; Fri, 6 Sep 2024 15:48:03 +0000 Received: from CH3PR12MB7763.namprd12.prod.outlook.com ([fe80::8b63:dd80:c182:4ce8]) by CH3PR12MB7763.namprd12.prod.outlook.com ([fe80::8b63:dd80:c182:4ce8%3]) with mapi id 15.20.7918.024; Fri, 6 Sep 2024 15:48:02 +0000 From: Jason Gunthorpe To: iommu@lists.linux.dev, Joerg Roedel , linux-arm-kernel@lists.infradead.org, Robin Murphy , Will Deacon Cc: Michael Shavit , Nicolin Chen , patches@lists.linux.dev, Ryan Roberts , Mostafa Saleh Subject: [PATCH v4 4/8] iommu/arm-smmu-v3: Remove strtab_base/cfg Date: Fri, 6 Sep 2024 12:47:51 -0300 Message-ID: <4-v4-6416877274e1+1af-smmuv3_tidy_jgg@nvidia.com> In-Reply-To: <0-v4-6416877274e1+1af-smmuv3_tidy_jgg@nvidia.com> References: X-ClientProxiedBy: BL1PR13CA0375.namprd13.prod.outlook.com (2603:10b6:208:2c0::20) To CH3PR12MB7763.namprd12.prod.outlook.com (2603:10b6:610:145::10) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH3PR12MB7763:EE_|SN7PR12MB6792:EE_ X-MS-Office365-Filtering-Correlation-Id: ac82b2f7-a5e5-44e1-dd82-08dcce8b4713 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: +lOjw9HaIYzYSC03aev6my0ycTl62PH/N+dziI/5raJRqwDcSm04beT2whTcXCC1P5hYSlHCh7CEg/rIVwHjiRWmYGP8+fHUY4cfCgWX21ZdvIiDBTj+SOVWoHKhZbVMHbtx6bO630rH3AJdnc2i2Wgl0TBcWSslmq2Px1mUWI3+W201ucn5jsTnFio4YskJjzq0kXkv6QKoH+hvato/QcLJAHnK70YOeRtDUjZhluuwlLICITyVralbzVdG4vpCf94fd/W5gwr0KmDiKEiuO8LaEEUxvp7iSDAj4my0pXlk5ONcbzC5pHQMYXbeF0RyMi/X5Bd1BlYWHFdr0KFvqh2bIHU2rLsdqBfcp6O6XRNelyoOCbHnBO1ubaJAktv3oXx2XS7PhvNv6ekFzqW6ZUBm9Tiq4Ph4CXtqgtc1rpYpXyu77HJDd7GyUoTfrHFpupcjfm6m82SO2dvvEG9DVsKmt5Nt089M+IYI7+/X2d6ZNJ8YmLae0IkEjhYetxE35OQ97e53DWwk0er73+OgTHVb5m/rOq2MZsqK4Ly2UbTtbsBnYb3v2K9GuBeszLjS1v0tqDjcw8g6HiH0lYTZjHqsJSz5Y8rCjYYoPF+ZkXO0h5kd2k/AzlaLckiEPIjI7b2Tsqg3pPFlYxZmJVtsjuTQK8XeuGiVlGDWkeIK1r45mzjV2v6imolxF/xTraHpZxlcdO8bCZy3HA8BRQfoH+rIGxCAUJy/NHsnaTU6cfzlTc9b8kq+IcVvXBNKqCGtkggScF2zdcznT2paoxaLet103ePuetC+5UCC8PxiG1hoL/BhbriGeaKPFzlhw8VmIVEDOCQyJ8NXurNLWNzZF36Cr/tEWW8LjHyATgom+1obezT/8glcETlRnBrpXM7w2uLgWtVl1zEGXpkB/v5LiLfDttriD7fogRy9JYjREM5NS5WzCdnJfiC9IPAG+5JX4DS3ffYGatOYTlmEmUb9kJF3UkCzauMnu99Go12vRjGgqNM83sPo++hk1gDcypbpzwMxPWa9lPHG4pHkXv+Wkn95Kz+ihSML0CqtQ8HsZ2B+e5V3IxowFNaActfuFEirma1ev7IG4PaxBn58yI71hmwb5cy9PGStrm1o+GCmnD/Z2E68nQ/AqeWqd1pVxhiH2vC0SiaNjA5w3xtQ89VLN33U2iXEA1IbnmrDUUNHeX26m7WTfQrCjsKpvg5/m58ZiOT4/l4ZDPmQiEK2Kxz7ewEBy51lf5hkkFzBp94J+5qRXKessouDJpq37JQXFoO0nDjLsg8XgidlF6Q2f0diDjrK8YXibNLl3oN2O8gggfgjk5C0TnXlc/mHuENAjE4FtFBCPsFtmNt0eVTDB4CBfw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH3PR12MB7763.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: pEjvgsXSPBMUdWSowhOuJTVy5PRaguD1I22d+Odz0gnCvogCB4rIiTYWx1SSKmQ/M195mO6GVF5mzHQZroDJvbf6E5ekSxVcPFPvp7isUEOJRFVb9WTdiOedW8pjGVO/v21d7lArpXpDuux4fIXT+rXeniQCdgDN8ZYJMOTo/CG98oFuxxzo6wGjedX/TeyjcWF0LTImqGV0MhcsM1t01kIM62vS5BL5Ikpvl9t21/euOPtGl23zFfjicBKBJM+1B1vGIeEx9aeRbufVwF9UUZvUVEMqYepKoySG16wNd1eSn08T9Pjr1+OiVICXcLFuMw0y7uonR3WnRT6orPQunT3XQ7MJldUrGL22ls3hd5oldC4XTkTOtEMZHQZr5KTsVGcR1mhCMPP/WY2pUSCYZRcdC/lr3HqUNIMIVngVl92IGm7TatAhFna/z7wHiLRXNbA39oWwSnVBr+BEymT4WWtmKLAbjtgrVgC+lHCl9vsbPvF0DsDhwHM2xi70cTfev9FUyVuMhtsVbWpqjV9QuQB+XJXzOC3sdJPFICyJjxk61IWZR1fPGioNAzMI6FPY1dJs7QUVg4h+H3yGho5sA/S7PFZhc1V4SFx61vwtnoHlnDk+FjvypBHwriwutj/iauY7nXUMqLhnw4575xvhG+4g+K00bQxFQdcUkwvlAWBRQEnXdobfDMUmU026jpA3xAQXFWYjDtief4wp3bvIMn7zF3q3xcKeWCuIvJGpAEvgV5dRgzDiokbEkNjR3FH9weKwMC/l8dw8Z7vZrJzHTNwNA7ZP7/6JVB4PuBbC9cFcjjbIjf40Fp0fKfStVAgrqOV85h8DJz8p4uFHbSCgxWfw8SFD/MirUhI7JayC3vmzRBHOrHjVwlywzaBzasnG6W6m5dCdFGsjidQ5s4ov+72KliDRnHL0WqfRZ3ratsQIHMYykrJHd0iMacseU4faHK+Pw27ZOD63sQk5UwUYPEp10PuGMwIvK0k9HYcFl4DHW+m+/qJMKzIMdrrjxlluHXYjHILKWV0Yr8X67vFlpsJpsDSyU7uEVK9V6JmJkFf7++PbDguH5Cuyy75Gbe79jbUWjqsQKU/e2aCjGpL2wGLn/KMVhecmUrT3YVwsxBJG5baStpsTWBbeGEypn1lNPWyt+aC4pA1OFP1HLMhaZ7Vpd6HF1jr4cMN5p0IwWgiHwIAmwrGSTPNen3uh2s7jvZsXgvyxe+2lyR3DYpV0ol7Kt7x10sRIkCipxGEXaMZ7jFUX31fu/Zs71N+eic/laJ21NzUwl5BhlMAuxAc0M/tfXNZJf1EgGiFETiBLTWb2sqdHQHvXxYz70Ss9unuAGPLTMnWo4enFIZhHDLxrORlL5KED+gR3Mvnjau6+CxPHowRHbuyZIf15A1I4sYECroLnOTvK/TGkNN3sHY9M8IZsKV2DXujiDfgJYX3A0eBJwCjLHW5QsdsT6ZiGdq+BqzlnpVKBswkUegiSHToDGi8ZpCXuAtJfEFbpiNifqmXHpZDTEhvqFQrt1XYHWdoQGx2K00qwrafIlZgKkFOHQWnnAjZqgMOMzVDquwZTDQc987l7oS9QTVxkLnS3FUgz X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: ac82b2f7-a5e5-44e1-dd82-08dcce8b4713 X-MS-Exchange-CrossTenant-AuthSource: CH3PR12MB7763.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Sep 2024 15:47:56.9312 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: iJKuzmheO3Tf/oKd8HLAMV+FC6rE9W51T7VxyZ5G26HjMkqqPVOCvT+0ktM8UQHd X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB6792 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240906_084819_262653_0A11AF37 X-CRM114-Status: GOOD ( 14.19 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org These values can be computed from the other values already stored in the config. Move the calculation to arm_smmu_write_strtab() and do it directly before writing the registers. This moves all the logic to calculate the two registers into one function from three and saves an unimportant 16 bytes from the arm_smmu_device. Suggested-by: Nicolin Chen Reviewed-by: Nicolin Chen Signed-off-by: Jason Gunthorpe --- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 55 ++++++++++----------- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h | 2 - 2 files changed, 27 insertions(+), 30 deletions(-) diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c index 336803fb1f895e..bb6c556995a7a7 100644 --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c @@ -3627,7 +3627,6 @@ static int arm_smmu_init_queues(struct arm_smmu_device *smmu) static int arm_smmu_init_strtab_2lvl(struct arm_smmu_device *smmu) { - u64 reg; u32 l1size; struct arm_smmu_strtab_cfg *cfg = &smmu->strtab_cfg; unsigned int last_sid_idx = @@ -3651,13 +3650,6 @@ static int arm_smmu_init_strtab_2lvl(struct arm_smmu_device *smmu) return -ENOMEM; } - /* Configure strtab_base_cfg for 2 levels */ - reg = FIELD_PREP(STRTAB_BASE_CFG_FMT, STRTAB_BASE_CFG_FMT_2LVL); - reg |= FIELD_PREP(STRTAB_BASE_CFG_LOG2SIZE, - ilog2(cfg->l2.num_l1_ents) + STRTAB_SPLIT); - reg |= FIELD_PREP(STRTAB_BASE_CFG_SPLIT, STRTAB_SPLIT); - cfg->strtab_base_cfg = reg; - cfg->l2.l2ptrs = devm_kcalloc(smmu->dev, cfg->l2.num_l1_ents, sizeof(*cfg->l2.l2ptrs), GFP_KERNEL); if (!cfg->l2.l2ptrs) @@ -3668,7 +3660,6 @@ static int arm_smmu_init_strtab_2lvl(struct arm_smmu_device *smmu) static int arm_smmu_init_strtab_linear(struct arm_smmu_device *smmu) { - u64 reg; u32 size; struct arm_smmu_strtab_cfg *cfg = &smmu->strtab_cfg; @@ -3684,34 +3675,21 @@ static int arm_smmu_init_strtab_linear(struct arm_smmu_device *smmu) } cfg->linear.num_ents = 1 << smmu->sid_bits; - /* Configure strtab_base_cfg for a linear table covering all SIDs */ - reg = FIELD_PREP(STRTAB_BASE_CFG_FMT, STRTAB_BASE_CFG_FMT_LINEAR); - reg |= FIELD_PREP(STRTAB_BASE_CFG_LOG2SIZE, smmu->sid_bits); - cfg->strtab_base_cfg = reg; - arm_smmu_init_initial_stes(cfg->linear.table, cfg->linear.num_ents); return 0; } static int arm_smmu_init_strtab(struct arm_smmu_device *smmu) { - u64 reg; int ret; - if (smmu->features & ARM_SMMU_FEAT_2_LVL_STRTAB) { + if (smmu->features & ARM_SMMU_FEAT_2_LVL_STRTAB) ret = arm_smmu_init_strtab_2lvl(smmu); - reg = smmu->strtab_cfg.l2.l1_dma & STRTAB_BASE_ADDR_MASK; - } else { + else ret = arm_smmu_init_strtab_linear(smmu); - reg = smmu->strtab_cfg.linear.ste_dma & STRTAB_BASE_ADDR_MASK; - } if (ret) return ret; - /* Set the strtab base address */ - reg |= STRTAB_BASE_RA; - smmu->strtab_cfg.strtab_base = reg; - ida_init(&smmu->vmid_map); return 0; @@ -3927,6 +3905,30 @@ static int arm_smmu_device_disable(struct arm_smmu_device *smmu) return ret; } +static void arm_smmu_write_strtab(struct arm_smmu_device *smmu) +{ + struct arm_smmu_strtab_cfg *cfg = &smmu->strtab_cfg; + dma_addr_t dma; + u32 reg; + + if (smmu->features & ARM_SMMU_FEAT_2_LVL_STRTAB) { + reg = FIELD_PREP(STRTAB_BASE_CFG_FMT, + STRTAB_BASE_CFG_FMT_2LVL) | + FIELD_PREP(STRTAB_BASE_CFG_LOG2SIZE, + ilog2(cfg->l2.num_l1_ents) + STRTAB_SPLIT) | + FIELD_PREP(STRTAB_BASE_CFG_SPLIT, STRTAB_SPLIT); + dma = cfg->l2.l1_dma; + } else { + reg = FIELD_PREP(STRTAB_BASE_CFG_FMT, + STRTAB_BASE_CFG_FMT_LINEAR) | + FIELD_PREP(STRTAB_BASE_CFG_LOG2SIZE, smmu->sid_bits); + dma = cfg->linear.ste_dma; + } + writeq_relaxed((dma & STRTAB_BASE_ADDR_MASK) | STRTAB_BASE_RA, + smmu->base + ARM_SMMU_STRTAB_BASE); + writel_relaxed(reg, smmu->base + ARM_SMMU_STRTAB_BASE_CFG); +} + static int arm_smmu_device_reset(struct arm_smmu_device *smmu) { int ret; @@ -3962,10 +3964,7 @@ static int arm_smmu_device_reset(struct arm_smmu_device *smmu) writel_relaxed(reg, smmu->base + ARM_SMMU_CR2); /* Stream table */ - writeq_relaxed(smmu->strtab_cfg.strtab_base, - smmu->base + ARM_SMMU_STRTAB_BASE); - writel_relaxed(smmu->strtab_cfg.strtab_base_cfg, - smmu->base + ARM_SMMU_STRTAB_BASE_CFG); + arm_smmu_write_strtab(smmu); /* Command queue */ writeq_relaxed(smmu->cmdq.q.q_base, smmu->base + ARM_SMMU_CMDQ_BASE); diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h index 23918a547cbbce..33a8bee1b82e3b 100644 --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h @@ -658,8 +658,6 @@ struct arm_smmu_strtab_cfg { unsigned int num_l1_ents; } l2; }; - u64 strtab_base; - u32 strtab_base_cfg; }; struct arm_smmu_impl_ops {