From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753960AbdEHKJu (ORCPT ); Mon, 8 May 2017 06:09:50 -0400 Received: from mail-by2nam03on0067.outbound.protection.outlook.com ([104.47.42.67]:65318 "EHLO NAM03-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751813AbdEHKJs (ORCPT ); Mon, 8 May 2017 06:09:48 -0400 Authentication-Results: cavium.com; dkim=none (message not signed) header.d=none;cavium.com; dmarc=none action=none header.from=cavium.com; Date: Mon, 8 May 2017 12:09:32 +0200 From: Robert Richter To: Linu Cherian Cc: Geetha sowjanya , will.deacon@arm.com, robin.murphy@arm.com, lorenzo.pieralisi@arm.com, hanjun.guo@linaro.org, sudeep.holla@arm.com, iommu@lists.linux-foundation.org, jcm@redhat.com, linux-kernel@vger.kernel.org, catalin.marinas@arm.com, sgoutham@cavium.com, linux-arm-kernel@lists.infradead.org, linux-acpi@vger.kernel.org, geethasowjanya.akula@gmail.com, Charles.Garcia-Tobin@arm.com, Geetha Sowjanya Subject: Re: [PATCH v3 2/7] iommu/arm-smmu-v3: Do resource size checks based on SMMU Message-ID: <20170508100932.GH16981@rric.localdomain> References: <1493986091-30521-1-git-send-email-gakula@caviumnetworks.com> <1493986091-30521-3-git-send-email-gakula@caviumnetworks.com> <20170505221844.GW16981@rric.localdomain> <20170508094437.GA26538@virtx40> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170508094437.GA26538@virtx40> User-Agent: Mutt/1.5.23 (2014-03-12) X-Originating-IP: [92.224.62.136] X-ClientProxiedBy: VI1PR09CA0083.eurprd09.prod.outlook.com (10.174.49.155) To CY1PR07MB2346.namprd07.prod.outlook.com (10.166.194.145) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 94893d02-da7a-473c-5167-08d495fa5a91 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201703131423075)(201703031133081);SRVR:CY1PR07MB2346; X-Microsoft-Exchange-Diagnostics: 1;CY1PR07MB2346;3:vdNEyeiDRyLWoRSila0N9Nx7m/sYpoopK09EgShdX4fP2iMCa/ZiNb7Lnlm/yorOLGqwoLsN6RWiDqrYid1E9qJ05B5pRF10KS0G+beFE6k07LerYZV3bezVHMcAZaLGmJcELVIATL+TnpHYn4AxpULHfjFGvDY7l40hRbI/lapSIaMYMxtq05aVjEO5HtgZYG/Ulpej1hpOydzAf513w0qhvOJVP6mQp9EnZmqrl0B3zlAyB8ibB9055QKCIJqZf1XMYUoK/QQ/wHh/qxXov7b5XYxlBYn6rBYVTx5YktO+G7VvlXCSTRsgclzab+sFVgIwOVW/c19pl+GjNBtYgw==;25:ysNzEXB5BY8KLaxBXTvS39E3xbBYNZY+1PlvY2oPprVVPcWM4FzSKxKeIuUjtKbq/xnFzUsB4h8dvbrDmx4GV732K3Yh8H9CuEhHpxjCNNKdfO7kE8EZbzvBzIoCsr4EPZ+PYlm3lDHJuS9+6AmqaifX/wXwozmrYoDh0HAAun/XG51OieLSDgLIxHMbinsv7JqIlJIQb8CFo/S6isw/3OiWISFO0QE85NgTi6W816NsWi3XyjFs7mIgrJkgViq0JtCf8lofF4uIjnjyUWp3jatuhbzry3ZG4fOWK07NSeX94N0KK+eh1aN90sIFnB9FdBqKN6cBywemZi83d7uaJMvmCLo9P+jJvmfuWnG5T4ZTn8PPYEfGWrASdj/JUWTEvcrULm2TplfzeawmFkTxMFcFk5ihU6wYxFS88klKVpZvgV4UpJbAjee1e7OZQNvvI6tp4dkwXkgIWkC5GeShfZ3ryXCxLeSdgYKk1Aou8Zk= X-Microsoft-Exchange-Diagnostics: 1;CY1PR07MB2346;31:DZXv7yucm6THTaPG+YZhhJ4AP3A4Qm6tCsbJXZrC7LB2jYlZ552CaDnz0zTL10uEqZQQNv8zLne6UJCrNBrIn72nUaVun+yDjz6pmXXEnBGoCNcf1b7V4iVN1x1tR/c2c/NFu2jEQjUVYhYpnJeYF70fpYsP7Y/9ZUS+8bM8vhrOAkA2BrDWBTCnSPJH/aJn2vJValmhFLGHLcxhLpbd3sdAKECzi/wuvUl29nWg3RCAXnN7JEDJ6suUqh3atvrb;20:KgGB4tSxMydymu27zP9jlN3Jp2WuXvn7lDNmIp88A0Vys38nmOGeJ1TEMgIv1J5nGxYu/L9gSATC75Qvm5SaopT/BTXKjVD61vDLVmVbUPCTOdAeu+eeBolJCQtwCwGh+9NlXebrO9pRJfpCrFHyWgKP2gxvuhyWfrnD/7FKy8W76YLuC8rwmK4Oq/4x8c6UaArcyCN/z+VHWcvwiZ4AHkyXRUQeTdog7dayab1XEpjG2CDE0SavdCRDGrEm282qIogaUXCmuslOBBzUWmfGvSK0UfAVk3DbgVOrIwQ+jN4vN3YShfMEFfnOix9Nj1DPo0g0G5r/F9Llfax8b67jSA3Wf6xTceOR9UWZHcneYZSOkfwbdIglc0O+Je737MPFD3Kl4zZ29LF7YKkIbkRrB548fYVGdisuCujWn/FRuGy5TuaJm8t+XICsDEm9DeuTCUHlitpi7eJO4eVQkzAokEsO7vORP9oy4FQhxoelE6NBYfgG87ILQCR9c0CWjYmq X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(93006095)(93001095)(6041248)(20161123560025)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(20161123562025)(20161123558100)(6072148);SRVR:CY1PR07MB2346;BCL:0;PCL:0;RULEID:;SRVR:CY1PR07MB2346; X-Microsoft-Exchange-Diagnostics: 1;CY1PR07MB2346;4:F6Zh0XNQ5J9Ob+tVqeA3lRB79Q0r/XKAsIbi7oO8TMc/t9sRuT+UuI8h3pEPnNFLYjESpIdLnHut4mJ02xUZeJ13X+SFZL3lFc7nIpcblgJ75OtJ88wGELaL60epFPgV9Qx+UQ5kxyswtOALAFWVilOOd6eTU5JGu+4VtliWZwMTwJtQhAzusBXMl8HN3pn+bkBW7ohPdi5/pzsjdW3NilCGG1+mkLJEaKGuG4hdEo7EiXKDIyFKT9Ra/Qj6CcH3BXmyU5JwAT/cQGySYVI6rzJ34oCcVuf06cZGGBuZEiIvOIB6RHZrlDV5Pyni3kkEHpwPexyl783DsPCwcZU8+riRUOWay4GIiWDZEi0s9PUeNMI/ncjfx6d5QpIkJW4XY+U7J2XVYCuURE2ehriK6z6NNonbFqju9XOf6pVFCk6lJmPx19yatBewT+3ckE2PADNFLpylZD7SJLptQG7pSXO3/wwnytB7ZaXESn6hadCLeHTGT0QMMVhAuS8uzRm2YAOoRi7UUUO/IwuoC+IdESSS6fyYXOpBo4JL9WTkx9IkdS+sH9A4XgYxi8DnX4QWbND3pRu96OveY71yxmY+CbwfbcXFiMCMfqjxlpGEuc0351GDDCnJBXcLyIQqI/Yg/1JqOUbL4B0hw8GmCBm/p4bZqHz6SLZlKJPEHBwN4kbY8OqJsUippXj9pVAevwYCjwDP/tad+GtTZ0ASCTl3osEFigqS8xZkGDfozMV12DK1DyV3b2y6GG8iV0uIM8hEQBw6hHxsbaSn66NMM1OdHlxiMvGEhfszPCnh5vayFY0= X-Forefront-PRVS: 0301360BF5 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(39840400002)(39850400002)(39400400002)(39410400002)(39450400003)(24454002)(76176999)(6862004)(55016002)(42186005)(110136004)(86362001)(4001350100001)(7416002)(2906002)(6246003)(2950100002)(6666003)(47776003)(107886003)(38730400002)(53936002)(6636002)(33656002)(9686003)(66066001)(5660300001)(6506006)(229853002)(50466002)(54356999)(3846002)(6116002)(8676002)(305945005)(81166006)(7736002)(23726003)(1076002)(25786009)(189998001)(478600001)(230783001)(53546009)(4326008)(50986999)(93886004)(83506001)(18370500001);DIR:OUT;SFP:1101;SCL:1;SRVR:CY1PR07MB2346;H:rric.localdomain;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;CY1PR07MB2346;23:Br2xNYTJQHm0g4NMaiS2U2ebgSNuka5XV8J4HAl5+?= =?us-ascii?Q?AeQMuD3oTkr2fgajVHN/Z/HCtzwc0X+xWPf/QUk6btLk8hneQFDnn5A12ONz?= =?us-ascii?Q?TyJzZnY+J16VcgtJnrHaH6Ijrj1vReYbmFo9a4nqtKtn6kaQcD20Jrc6Y5s9?= =?us-ascii?Q?XlQCYSc170pFjV5xPbLIRjJdr+FMFdE36Bwn6G3rw/y4LSQX6NnfiK+MjUwU?= =?us-ascii?Q?hIk+/9Jg8imQ1KkP/5pFFrtxIvRBhXtkUFNZiWH63CiI4YG6K+4rQGuuCnG/?= =?us-ascii?Q?BnOznSdH3XmiDw/MPq432j8rNV4j/0ssS5tPQpy2joCNOE3Avo0H/E9YiVdj?= =?us-ascii?Q?AIEVVgnmvIx/JwOW0ERdZvkxY4UPTGegBgmhk8lpRJyR8YzXmrHHRKrkuTYR?= =?us-ascii?Q?LROo80vEGu+zVp1lWuVB8wKgukc5H0noTNrFCqZwlac8t7UQhmOzZ+QY+xUR?= =?us-ascii?Q?PmXtvXvS89toZKAJDDcKeDtd8STkjbbZYyREKxwf+lKnUeRaevSoK+cw4KXF?= =?us-ascii?Q?/G9sRzY6P1jL3u4ri/9UtiU9/Vi4tqBDaGGRBcg0XvdrS8C3SYQBFvN5XfdF?= =?us-ascii?Q?N/w338jSA5TfSY5nUm/KYDsfN3XXhYNRnPip21YbrNPxBF4b3IA0Cl1zges5?= =?us-ascii?Q?gS+dELak7rkY4gXJ8rxS5D9gtOxQJycivraT72RgPwuX1FtBtWsPTmLJaA2c?= =?us-ascii?Q?raAsniM9kyxzUaNSZfxUYGxeVU0OfLNuqdYWRYY7wut0r0tkrqpQ8EZMJHk7?= =?us-ascii?Q?I6M8YZUW7INSCJ8LmfGYgc06jUXEWZAse0p72ljQLu0UjagXTAk5GOTQUXFd?= =?us-ascii?Q?D6Nvx0KUkO6at6EF8ShVnPuH8UE7JnF3dfzXXtcCqSGNN7aWKrUN2Wh+PBTT?= =?us-ascii?Q?kttJ+21YbEiGS4Ixp9HX9XwAmIWJosuphLiScnteiI8Ia6YJDa8J2e2cxR9C?= =?us-ascii?Q?H8EGd1J4+Und7XyUhB9/Kwnyl3F1AoYay62wvuvySgNaRHOhNyz/AfOS1ToK?= =?us-ascii?Q?V2VvuJeUfd0nZrS32WlfucTUgfjW36lHzZeZUK6TRT1w/hBMmS8Oi00DFbeD?= =?us-ascii?Q?6attESxfSHZtRbIX4ql2TfGHEwO8oadlsEOk8YgpQeo3QBReo1KuBKLZozdU?= =?us-ascii?Q?frWo9Ta+yA3cCdUUjEa+Th35UhsvW415fS6p7HXZGierrOXy3HMlRgYojUEu?= =?us-ascii?Q?klrQ2a5kgJTivE3Z1Cu4siYAMzHHxPE+gBQgP3iga6DSUrzlQAb1aMBNZFvh?= =?us-ascii?Q?RZyO2znjLLtp0y9MGL9P8+F/vC9AG3na1+54KnS?= X-Microsoft-Exchange-Diagnostics: 1;CY1PR07MB2346;6:m8JNCA6A1IoOocuKfCpIMLXGWViAPQilu4xInu79yD7G2RD6+YtVPmQRP7vRADDH60pUkS5MReKiwCCQTPPP8g3gl8uY1ReX1o3uhKWye6mRiZbLj2fhL6Ma9MSXOtCxStJQb9QX7Q1cG5MxY/2CFbWq7Vh6cEnnI83+f7rJA1n4UlOATp1SJCIX6j/ZyGPlNRKNnfTdjLXEW6X1mhWdBlI9fJ8/UHLKkCsF9M9VtPIeHWqjbD5LlWyGtce5pEvx9vjQOD9Y/qtObGJMIEdfcMJ/xW350E+AZby4H9lRF1uI6XzdmGFzIUSaIhitx4mrugZi46exKDBwvV5tpffPn3bUMQ0WnIOaCOe2YFUzJPcO1PyuSX6/ia6ZfGmEuXhByO3fVAUMn0mjub0Z05E8smvBbZKp4LoISIR1Y4U3BMsJ/U/ygPK0wtLEdS3J5rcvTwfz/6GG7Da8HtjppETkZMGWVCnkzbL4siGlcnIW9YSkgJqx5bIaPoj1t/ckJSt0jJtBuJhYTxq3W6u683sl1A==;5:/GbxIwPB90+6S4xHzPyD64dHFTTqNsmX3EV6mKHzTcrCJwXXh0ezfq4BDjeo4SEZ+pS+429biA6uIzrdUa6jhYz2d4sbp1Uvw5/Zb+ES3dQ8B4G5P/VERelZug9SggoXDs3wSHIYCUCWH29JmRVe9A==;24:VR/7IzHPGgFblnue9q/GD9tuQ3SHzarhTRRqP/RzxoxdNw8vqfAKN2Yn0QnPfpCcrmDbc2u+ZcV7QL6xhxjqfdEuzOggJXbFNTT+dX7cm6Q= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;CY1PR07MB2346;7:1jOJnpp2QHQhVt55SJtgvQBTiS35zPdemml26d+ImbC/y76X7boyijI6RKC4aU/IozwLN4gedxqokkUqQ3t5TP87DTPoSdXgakUeSwNB+m/Df+KHyFsEetX4FvX5jJ8vMHMCUrJ0tSdVkiAIEJXIwVvHpdZR1YF23BYhm2dA60hazG2tJ1QKwQ7EEUV+eolWCLdOYNN2JIfMUjnX0PwEJKe9SAkbX0qaCfGOjrvoQ77EKNBONIUW+OFUZuDCJriatC7bxD0UDI4OZDiddAiOYrZhg9MwrUDGaQzN8RxvozYtajZjGAjqoKkerUYIO+6zkhraMCO+A9UlCltnesTPGQ== X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 May 2017 10:09:42.4292 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR07MB2346 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 08.05.17 15:14:37, Linu Cherian wrote: > On Sat May 06, 2017 at 12:18:44AM +0200, Robert Richter wrote: > > On 05.05.17 17:38:06, Geetha sowjanya wrote: > > > From: Linu Cherian > > > > > > With implementations supporting only page 0 register space, > > > resource size can be 64k as well and hence perform size checks > > > based on SMMU option PAGE0_REGS_ONLY. > > > > > > For this, arm_smmu_device_dt_probe/acpi_probe has been moved before > > > platform_get_resource call, so that SMMU options are set beforehand. > > > > > > Signed-off-by: Linu Cherian > > > Signed-off-by: Geetha Sowjanya > > > --- > > > drivers/iommu/arm-smmu-v3.c | 26 +++++++++++++++++--------- > > > 1 file changed, 17 insertions(+), 9 deletions(-) > > > > > > diff --git a/drivers/iommu/arm-smmu-v3.c b/drivers/iommu/arm-smmu-v3.c > > > index 107b4a6..f027676 100644 > > > --- a/drivers/iommu/arm-smmu-v3.c > > > +++ b/drivers/iommu/arm-smmu-v3.c > > > @@ -2672,6 +2672,14 @@ static int arm_smmu_device_dt_probe(struct platform_device *pdev, > > > return ret; > > > } > > > > > > +static unsigned long arm_smmu_resource_size(struct arm_smmu_device *smmu) > > > +{ > > > + if (ARM_SMMU_PAGE0_REGS_ONLY(smmu)) > > > + return SZ_64K; > > > + else > > > + return SZ_128K; > > > +} > > > + > > > > I think this can be dropped. See below. > > > > > static int arm_smmu_device_probe(struct platform_device *pdev) > > > { > > > int irq, ret; > > > @@ -2688,9 +2696,17 @@ static int arm_smmu_device_probe(struct platform_device *pdev) > > > } > > > smmu->dev = dev; > > > > > > + if (dev->of_node) { > > > + ret = arm_smmu_device_dt_probe(pdev, smmu); > > > + } else { > > > + ret = arm_smmu_device_acpi_probe(pdev, smmu); > > > + if (ret == -ENODEV) > > > + return ret; > > > + } > > > + > > > /* Base address */ > > > res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > > > - if (resource_size(res) + 1 < SZ_128K) { > > > + if (resource_size(res) + 1 < arm_smmu_resource_size(smmu)) { > > > dev_err(dev, "MMIO region too small (%pr)\n", res); > > > return -EINVAL; > > > } > > > > Why not just do the follwoing here: > > > > /* Base address */ > > res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > > if (resource_size(res) + 1 < arm_smmu_resource_size(smmu)) { > > dev_err(dev, "MMIO region too small (%pr)\n", res); > > return -EINVAL; > > } > > ioaddr = res->start; > > > > + /* > > + * Override the size, for Cavium ThunderX2 implementation > > + * which doesn't support the page 1 SMMU register space. > > + */ > > + if (smmu->options & ARM_SMMU_OPT_PAGE0_REGS_ONLY) > > + res->end = res->size + SZ_64K -1; > > + > > smmu->base = devm_ioremap_resource(dev, res); > > if (IS_ERR(smmu->base)) > > return PTR_ERR(smmu->base); > > > This might not work, since platform_device_add is being called from > iort.c before the res->end gets fixed up here. It should. You added it with 128k and you get it back with platform_get_resource(), but before ioremap you shrink the size to 64k. -Robert