From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754035AbdEHMVV (ORCPT ); Mon, 8 May 2017 08:21:21 -0400 Received: from mail-cys01nam02on0049.outbound.protection.outlook.com ([104.47.37.49]:18256 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750892AbdEHMVR (ORCPT ); Mon, 8 May 2017 08:21:17 -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 14:21:00 +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: <20170508122100.GI16981@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> <20170508100932.GH16981@rric.localdomain> <20170508105049.GA26654@virtx40> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170508105049.GA26654@virtx40> User-Agent: Mutt/1.5.23 (2014-03-12) X-Originating-IP: [92.224.62.136] X-ClientProxiedBy: VI1P194CA0023.EURP194.PROD.OUTLOOK.COM (10.175.178.33) To CY1PR07MB2346.namprd07.prod.outlook.com (10.166.194.145) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 40eb55ca-7707-41cc-23d8-08d4960cb894 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201703131423075)(201703031133081);SRVR:CY1PR07MB2346; X-Microsoft-Exchange-Diagnostics: 1;CY1PR07MB2346;3:KSCD54cHpuvxoWLiTy3TxgHvSgXnSV0vww9NEEXfj4NoBt/uDLZEcy0iscbg6/k2//ag6Y6ELklbpSPTqV5LrieF1LpvoLYj7zGRiyPRtdeXbVVal6byLpUuxSkmyoZBAEKkw91RWHgHT4WNJwFm2lDqaNhni5GNI0pYNu/COkai+GOKr7XKeFmyIUoKPTHq3ff4vEneHS06Mvtm+4bngnClmUlExIuQ+4uXEek3WxhyrOND0aB4sIuSKhbaWWfg51CT0JFvMenB8zrE1iQpywamwPr6SnvEiV0trHsPAAR9ZXfovvcZw+uTLKz4vsi6KMRHoezwtxkyx4anEW/lYg==;25:ZeUTbzSybJIApfcEb7YZGWEcCOuGo3Iy7jam1Yvi/p32LUPYAx5+UWdt4SHdrsjLz153gQZOEPZ2tqQXLskK3aUv6pzeSmgO2JGnYM8H0+CilwuvkZKovusmRUEhyzCgfDAVdc+n+JjQTuPXSHktjrqileXCvSC7KoDks/+kxlXDYGbl6g1q8LLinSh2agX+t9ntGANv0I0orLQ/D739X0QC6gi5jg53OQBsx4lQGDYJ+KOY67rlLBEKnl5A+IxHAek0rozpVByq9gR2spvAJ+gludPPcMJUkZ0vs3XElosKGOY4iZSeYNSfWtcbt3klMzgEE/u5aGhKE7uZbzvvfrcFDGdXWhj7F3HTLCMBYY6WEvT95OJg7cJLeATmwo4W07b1Fh33hDCYrLuwl7pJwYtlEgvF4kUnIU2WI+WZplqQVAxDP/9AkKUdZyPpCiwFBuDFBM/YFwiTcVGxhyhvOEbgXH1sXp7XlbNlcsQsDmU= X-Microsoft-Exchange-Diagnostics: 1;CY1PR07MB2346;31:AmACfvfHy9Z4sr4Ba925LsdEYM7N3DTw1rcJIAvPp6HlSijRkS4eFdHqDds6NKpwoHDIT1ORRGhUAzjaT99PVYLymaIcwTTwAfBr/uq1JxXev+mDx+JRndp7azQGRtuCi/Wxs6gjt4W5Sv5BLyPtHt6z1UHSuXVGJSsJsJgk8ojx/lNEkYhLB0IyV9exJBSNQGmAGNq3RoooaKVdKY8MsANPdEbl8oQVOjKlktafHek=;20:WSasJXDvYFxi6hUeQraPmPUwjLQM9TSgaok+ib2l45re2NiDOyg9u4aLdhfmYWRtL/UOrh7RUvAJdxkasfEDR57lVBVCd85bpom4BMKNDg9s/by/5pWXbdyndYFhtStLYW85Y38NdiFt5TuQPKPt53NNC4rq1UejhcpKRXLdondd1+el2ZvTPHANqnNmtaJbRbqaZuKOm9cpcDO9NgdnyZ2IK/30+1yD/+nEpohsQuRO9UVcOyLh2WxSuV24Q8AyfG8oFQ6dn2nbBtbsc4NcNTmKX3MIKXLCN2xJE5WgsmqsiT9WJRWA7vtX2aynBSOZtuW+5umFh1um2N3uoMAKMPWCnoPJoXAViMY9v4T3QO3QvV4JTiajocWSJ/IUodNBl+bC0S9oOjP0m3EZEPmlCc8tAh7rvz4/aAPjXH6Fsb6eYT7XJdcNhveleOHsieZCCEMAuQ/o+hp0mF52BggalSDteBuu2EWUtK6BWhsW30eYYsgx0cJs6DrSV5P56GZp 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)(20161123555025)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(20161123558100)(20161123562025)(6072148);SRVR:CY1PR07MB2346;BCL:0;PCL:0;RULEID:;SRVR:CY1PR07MB2346; X-Microsoft-Exchange-Diagnostics: 1;CY1PR07MB2346;4:GJEtvkGKBiTZvBuHuilzTjHRO3BRyMrLdLPVIN2esIBdZjrrUhEIr2la5iHq2ygMwMComekncKyGkeqxLkX1b+xfK2WfSv73uhVoBFXC5/dzRpMeGleHlVbPpuxainugojLSD9t8rc7o1VbcOLxDZ4o0Rrp+R1XJ5EmI+4QfGT1vYI/0Us2QZdlWT3JhNCZVcPyFTtyTqDOkw8FJ55sLc8D/AaMzlEMlZUBQs+ezVmhrzsbYyXQePF0sMTDU7uD3u9KNjZ9mqOCVrffSjxqAdJFK4bNxgALLnQNFhQq5xS+DaDfDd5hQT/XYTfYSk2L6Q3sDJ1NqJrVadTStp7PIg5L24u2LgRQ2rYcbjZ65sC0KQUwHo8XrJkAun/PT3eEHdYjQrpJOq1RDWtrr+ypI9zFAjx6Qijeqo2v1lS0d8vTAompHT4cp/iD9jDgWrPB2m+KAky3DS2XlHsWmoDYA1Mj5YvUwe09SAK4BUmWEjtu3CYlJiNHDuYJFubzwE+q5ZdXboUM7LEHJNqcfSXcLjM+aiUtU8X2g0b7Rx5K5Zm8cmyqXhz9pW4erTxWt8cuGKk09mRXcVnu7tEX8iIOfaWQRG+/sm7RE2rQthjsmtcks9PbCFzUheQdu1GM3rdZxt3ZN8er6BsrEsF0UvHSEF5+JZjZDBbwdLDrWRcJTg54R/hH3W3m00/P/IQ1NxrzB2bWnxcjO2dSBIOYEtPONPIHeMLuzvrHS/t8il0G6eZCJbqtkWO7tYdZkwHSmm/vPFVLSC0bLtITYVta3LRxVIQ5gu+hblrsjuDazVXWsCt0= X-Forefront-PRVS: 0301360BF5 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(39840400002)(39850400002)(39400400002)(39410400002)(39450400003)(24454002)(76176999)(6862004)(42186005)(110136004)(55016002)(86362001)(4001350100001)(7416002)(2906002)(6246003)(2950100002)(6666003)(47776003)(38730400002)(6636002)(53936002)(33656002)(9686003)(66066001)(5660300001)(6506006)(229853002)(54356999)(50466002)(6116002)(3846002)(305945005)(8676002)(7736002)(81166006)(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:QTHzniT+lPEA/hHIv+6w/ibiSXMVgit0C7JoPGURZ?= =?us-ascii?Q?N/yQ6PA1xhqjYdVif+h01xChHEARue2kFLWVAIHdK1DlNgruJ4J5cgtrLUA3?= =?us-ascii?Q?ZdHVC2WLZYIfLSv4J6leM1FP+JDsvcmgyDCNGZlirD9gWfcWp/L1FVlSGdGt?= =?us-ascii?Q?aDaAb0oxYPlsTKZCpuGlEPAswSxWbGnwJCCRnhS2J35dUGhl4FDnirptADRx?= =?us-ascii?Q?3uSA6EE3gVrm5TJdr4Q1e3H5p5/V967xfwwgKZ9NuPXoxXw/ocdjDYElLSDF?= =?us-ascii?Q?v/0f7GFudqR+NA5ULYaVN+PoaPOglY6eJp3ShPDZ0Ff6zgzBmJFzOEYZyX3y?= =?us-ascii?Q?x0o1yM3/irsg8p7reeUzP+AtkFC0VuhkP4LNgTXJ6s8aEKJexcdzjyc3f3aN?= =?us-ascii?Q?tmU+dC81nFH5GpHquHZhAPmKbKkmgzTu8BhjFT9pC3ZSahZyyNf1BqppUJs5?= =?us-ascii?Q?vFkd6VMhf3ZZwxunZ6lMx6/oMOW1ssjwZVD6HWw1AG6UMU0v4k2AfSbEPe26?= =?us-ascii?Q?/K0OwhD+RsnbEYd74o4d2eY2mT9eGfEMYtCHJVA8u46vnbEQDZMahxR3WY3v?= =?us-ascii?Q?FhlX2nyduJhO3gi9NavPP+OwVvV57sTkfzOicEh/cWdxpF/tQvBGeJRKP6Uc?= =?us-ascii?Q?ZEHyL06cLhlwdYE2hzDGuoA6IfgRbv2fnnN7wjsqP83jN0mopfY0tu0l7jOR?= =?us-ascii?Q?TJJ1XqTOAR4QxUYcZT3CjFJuRzbDQR/18gX3MxKYSxoZz5ly5/4clcU1fI0C?= =?us-ascii?Q?Cf7Z0VLcW2RVsD5SMjn8ay/Ghp9u9MPHaxtkGy7poRGy4M1TyCw+4dlWzHh+?= =?us-ascii?Q?4Q3vP+JVOrh4zGKymxBW2d63lJypHdGiZINaXgFgqGgKQ933WMtfHefXY976?= =?us-ascii?Q?8JNnNtuF0HekKCC+TzRY0sPGS5FjMIh3P1jZsmM7mcx8P4/qVCuP3TfLnUxG?= =?us-ascii?Q?LBFVNU3ExnB7XlYit2FcARM7VOsaQinS5ipKKVmiImYLBZZSNxm4hg9bbM1z?= =?us-ascii?Q?sxst++lahsTHTlev6XmdP67HlImgf37jDwYGAeKqmyhVlAP2hsW477+p5CTW?= =?us-ascii?Q?9Vif/jg2E+UTsA2qctj15MbM0cvkCh43WZRbjVl/gft2wpCncNS/vZBdRn2T?= =?us-ascii?Q?8dP0OAVUbFgVVMKg9A1l97PW+buGD/AOfUwJNvP/9E6Et1kRxj497xM5S1Up?= =?us-ascii?Q?QYycAtS2YrsfVrgtG92hIwrG8XbvjAy08JFPbF2cs/SvYQL4mgADdebqBPQd?= =?us-ascii?Q?GN9zOaMWczI7smEGkQ=3D?= X-Microsoft-Exchange-Diagnostics: 1;CY1PR07MB2346;6:mYu/RZ1RznJ0f1APU1gvKgk3pqSotrccQ7je6PcbsPyY2utAu16JIn71excaNlx/UiV2zNwYsMCozqw0zSfptjiJ60AEgdHnyIv07L7r8kI5VPm6Gc9Vf1XtqtSdGg0+Jj0Ujzoaxm8+ph+wKrQ52xni5xDzD2tbIZY3CF1CBh2/XdKP07MK5pwENJ5MdNEcsQRMHI/hYAHwokjtqug8y8/TM7y1qUuxniMRHMVL6hZjy1KR/1N4SMZy0av+/u5KVGI3WDLn1b+cd+pa15UPsU0aLjl/kkal8xLQKPrCKUyuOF0O9f87OLsk4EjJK5ytVRLLyr3G9GJizWdoV+qhblvyvQHt7mkmX9XphE6y/eKGZ5zsQ6y6HsTdYNeGNcAp8i8AXqAXA7I1RMUSjQFfZoNbLwa0Y8Omg9lb9SYqimcTMwhqMw8ETcacJdP6hpuWzw9DDXCApDj9UFuMgkwiy6u+c+144jASmXfp9d78XvgEU3enyDseNX3QKirfB14R2NYYMynmc5HoT9c0WrsLPg==;5:GQz11cNNX8WIMTNWFWZcwTQG6mOVUVCjXvOKm28LSGdHxW3zcZ4mCl9ME9qUzhnkIfgVhkhrZxwBQjsmOqV0WwGCHnCNQYBZ3tByoH+ZLDTPo03Idc6g5jG7svadRD/HoMikmtsg1jyC4wK0aZBg8g==;24:/lgDnOQY7Qt9d4PwtnN2Cf+4iMuTUbOO6HwJcpX/b5KIWmpteJEXvO8bGNdJ4deiZbcREXJv5zS5Q94nUroBDhL+p+dyJ8hebSJIMXY2NEE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;CY1PR07MB2346;7:xovjcUH5WAWe1X40lIOdPWjUTdfdH5MP+insG7DWLmstoh2VB0/5W+HXzOtaFVoXxRsSMRYnpczp6lAe5cywHebjI1e8gZ9e8z4WCqaCWoCpyfeGYGWSzky+UEoPmi4ose0NGJeM71Vnc29iuDrHPP63PaesjetD4rJgTRNvBxupHOxcOAvTkuJrkw0q7mlUKmyNw51fLa3FGXqA7x6JChXIgEGpCU1Pxl4wpFoSDTHH5T9hCdUYGqDiMLGqaAP3BgiwtY8h+XIgByDliSgjV4t3jGhY0IKW7wJxXGrEjn0v53GT3oJLQJXi3rmwVN2dNSQkkEphWW1MTENWvhjVOA== X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 May 2017 12:21:11.0946 (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 16:20:49, Linu Cherian wrote: > > On Mon May 08, 2017 at 12:09:32PM +0200, Robert Richter wrote: > > 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. > > > > The smmu devices are located at 64k offsets and not at 128k > offsets and hence this would be result in resource conflict during > platform_add_device ? Right, we have overlapping io spaces then. So we need to change also iort.c for the fix. -Robert