Received: by 2002:a05:7412:1703:b0:e2:908c:2ebd with SMTP id dm3csp3335292rdb; Tue, 29 Aug 2023 12:04:06 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH6PcaXZ8jC3rhQFOAH1wRw/u0OG5nlEMQBGnlUdSuA5xKxYadtdpdeZBLwHk/U02FYHFzN X-Received: by 2002:a05:6870:e414:b0:1be:fd4e:e36c with SMTP id n20-20020a056870e41400b001befd4ee36cmr104061oag.2.1693335846086; Tue, 29 Aug 2023 12:04:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1693335846; cv=none; d=google.com; s=arc-20160816; b=FAZT+7gd4ofqPHFpVpOLYmVrjnzhs0F+iazoPOlphHPAcXnHmeanu4G+gVAmMHAC6M V4vX3sKwZCIMHCte9ts6hbQ0T96mj9P3LgsdPGhpULqQhpTvcl7rxJXxZY9xK3rP0n0y yylaN91EDJ1LDFldZEKUZLz3DJlFDwrfh2Q7yeSnhKahOiH3zf2F6qDYKpOkfPnd8KEN kazLg3oJ7sXqqNyx9lZZOlp3fH1WMo/intfoqG+L6COjlgY5sEtRQjWMBYopgPSJCYwK D9KB/YLBhm4XkW5vfzcNYJHwYeue4Xv2rhgekRKvnHLKEHZbJdO2tCjnjbk0E5GTE/TD xJ4g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :references:cc:to:content-language:subject:user-agent:mime-version :date:message-id; bh=P6ZNHuvgsf6U+eHYogU1l/DwHPgSOkBzKLQZDX/m0OI=; fh=U9e3T4mBVG+BBWkl/zbLRApTT+uurLBXaGQViuNB4xk=; b=WWnY45b6xVPMDATyqsWmOVvbf03DoMostTz5CeLQEFzZXV2tAWR8I6DUaX/H2GSRvk agFO8XvJAOeuzq1d/pPABHsDbRIMPPwORqryF7O6hFQ5z1SATMSVYMNyee6TizwTesV0 VCyG6p1fKfmH2N0nK5gSt5OJuY1Rtz6ROTnnTV6jASpyFic6koJqlyFEORsaUZUFaIDJ 3EOveJtzJLR16HHb6jv3EmRMGdHxqhoNSu28hZjVmxCm5raFeP1mvffuMHZMTKX7mbeS 0V1IpvZ1Umi5nJT0aZ127OEKCcgTbqrOG8KSM6pYiWsiDFhNnqNgA/dA20LJCbx5XGY7 mwmA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id fw18-20020a17090b129200b002691e659560si565651pjb.163.2023.08.29.12.03.49; Tue, 29 Aug 2023 12:04:06 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237288AbjH2Phb (ORCPT + 99 others); Tue, 29 Aug 2023 11:37:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47774 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233508AbjH2PhI (ORCPT ); Tue, 29 Aug 2023 11:37:08 -0400 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 45704193 for ; Tue, 29 Aug 2023 08:37:06 -0700 (PDT) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 6A2472F4; Tue, 29 Aug 2023 08:37:45 -0700 (PDT) Received: from [10.1.34.35] (010265703453.arm.com [10.1.34.35]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id A68AF3F738; Tue, 29 Aug 2023 08:37:04 -0700 (PDT) Message-ID: <61f9b371-7c45-26b1-ec0f-600765280c89@arm.com> Date: Tue, 29 Aug 2023 16:37:00 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:102.0) Gecko/20100101 Thunderbird/102.14.0 Subject: Re: [PATCH 1/3] iommu/io-pgtable-arm: Add nents_per_pgtable in struct io_pgtable_cfg Content-Language: en-GB To: Nicolin Chen Cc: will@kernel.org, jgg@nvidia.com, joro@8bytes.org, jean-philippe@linaro.org, apopple@nvidia.com, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, iommu@lists.linux.dev References: <0fe68babdb3a07adf024ed471fead4e3eb7e703f.1692693557.git.nicolinc@nvidia.com> From: Robin Murphy In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-3.1 required=5.0 tests=BAYES_00,NICE_REPLY_A, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2023-08-22 17:42, Nicolin Chen wrote: > On Tue, Aug 22, 2023 at 10:19:21AM +0100, Robin Murphy wrote: > >>> out_free_data: >>> @@ -1071,6 +1073,7 @@ arm_mali_lpae_alloc_pgtable(struct io_pgtable_cfg *cfg, void *cookie) >>> ARM_MALI_LPAE_TTBR_ADRMODE_TABLE; >>> if (cfg->coherent_walk) >>> cfg->arm_mali_lpae_cfg.transtab |= ARM_MALI_LPAE_TTBR_SHARE_OUTER; >>> + cfg->nents_per_pgtable = 1 << data->bits_per_level; >> >> The result of this highly complex and expensive calculation is clearly >> redundant with the existing bits_per_level field, so why do we need to >> waste space storing when the driver could simply use bits_per_level? > > bits_per_level is in the private struct arm_lpae_io_pgtable, while > drivers can only access struct io_pgtable_cfg. Are you suggesting > to move bits_per_level out of the private struct arm_lpae_io_pgtable > to the public struct io_pgtable_cfg? > > Or am I missing another bits_per_level? Bleh, apologies, I always confuse myself trying to remember the fiddly design of io-pgtable data. However, I think this then ends up proving the opposite point - the number of pages per table only happens to be a fixed constant for certain formats like LPAE, but does not necessarily generalise. For instance for a single v7s config it would be 1024 or 256 or 16 depending on what has actually been unmapped. The mechanism as proposed implicitly assumes LPAE format, so I still think we're better off making that assumption explicit. And at that point arm-smmu-v3 can then freely admit it already knows the number is simply 1/8th of the domain page size. Thanks, Robin.