From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753404AbdEHJpM (ORCPT ); Mon, 8 May 2017 05:45:12 -0400 Received: from mail-sn1nam01on0081.outbound.protection.outlook.com ([104.47.32.81]:28594 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751707AbdEHJpI (ORCPT ); Mon, 8 May 2017 05:45:08 -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 15:14:37 +0530 From: Linu Cherian To: Robert Richter 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: <20170508094437.GA26538@virtx40> References: <1493986091-30521-1-git-send-email-gakula@caviumnetworks.com> <1493986091-30521-3-git-send-email-gakula@caviumnetworks.com> <20170505221844.GW16981@rric.localdomain> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170505221844.GW16981@rric.localdomain> User-Agent: Mutt/1.5.21 (2010-09-15) X-Originating-IP: [111.93.218.67] X-ClientProxiedBy: MA1PR01CA0038.INDPRD01.PROD.OUTLOOK.COM (10.164.116.138) To CO2PR07MB2520.namprd07.prod.outlook.com (10.166.201.7) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a087f9c4-83ee-464c-516b-08d495f6e7ca X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201703131423075)(201703031133081);SRVR:CO2PR07MB2520; X-Microsoft-Exchange-Diagnostics: 1;CO2PR07MB2520;3:jfibhDFXBNGVGTdE/mWea/6YCYu5vLpjowdIZIVHmXCfe1JArLlSUTL6UBgiNvi9xrtvx+U83/tVjEW7N/fHy3mwtwNh5J7NRfNasuRMc1AezUrQjAU5ecjEzUUoS67MtC1HgshqQPTeOC9c/HmiIaTlazUPKs5zVy8aSC9syjII/x31qvhiui3DF8xCq/w8duvailazSkD5bpjmYQcNmzTQGP515BDyA9UdYkByU+s1QzF6fAzAiWMx61lAxBlo3SgULhRVhWohs+24Iin4iKvTzF5MlRdmpkXDkA4a+5RNnj+s/iw4EYjXyfY5zqpx6jrwxASF9hSAp0++Eq1wOg==;25:lfWGw9Wt+7hGz39HPFZbgrz3tqW9+vJTpOYpIH8BZCQLfOEajZcrvVonjySFt6pYlgPp+ynM6zMSEEH22zOhcN+SWP5L+zTyU6ccveSWwjPGdyvOoUuTjwVuMKJhzqXpHzbaOcdgkNcPuxPnbcAcigTOFtfRu7dLtObZtTYtE9FORpRQkIBXxKBXnCZFOGGbIiFFCwFq3Sq+KP00Su6Y/vaHKB5P/LThbhphmMTsuLDXqckM2bLmMn7ZSFTTKVMPbDlAUpwyRiucsSXdR3OO7z+gfD7yJqFifnSD6Od1vMZgu2+hE0GVHO4zdtkg+hDyC1zUUOPRBpw3uEMoDcupCm47yaxwIzrBOoykkGn0fQgxV6GRaUHiMajrJlICT/UjGwyYLW2w/6SBQjc+jLZdRo1Pmyv8QLgvHM68U0dFY0ZaacV+Mhb9+idYmUuf1aq7cy8sjPYegOtL/S3vFz7OH3zsO4Sjwxdcq8LnWbxT9kA= X-Microsoft-Exchange-Diagnostics: 1;CO2PR07MB2520;31:D95EFCsa5cljsHS+EGhR5MXwZVUD4KRWoJdphADsBJ1KkjMb6Vve1+/DHimNUGC4Zp7/AaMz/5cO+MMZps/3gdc50YNYSqWv5f43EYxcYdLazAtJjj0nRdzYuDb0eJZ2GOvlxdXObWf2zXYbvYG3GFswxMCjdJfQh+mKJL6zmgACBzjnLUlrAZlfmAraJ6Fhitvheo2bTL7HxTALK+c1tJGl2FqusI3BAjyJsvefqRo=;20:IqpfPaEE+L70tALl77OkxWgANQjgN0VbksFvueOiQ5p93Ed3qeNF67zUZt0oQvewhxll2x2lLsQTnxz3EKqzxKG5P5pF8gYut9BCICH4WOoasEAtT33vjYWV9g6G2+0BATG6o27NJXsReAZZAHhOxdonjEO2Q3gvfmYSNRomzOe8KJmHCndm7O9EyWLjo6db0X9zo1HLKfzPSdmOuqGyqM63fnaWwo8+giwVlUho9ad8cutbPB0oExDTDFwdTWBrFn0+3AeBQkccAgMoMw1lWdURFA5uI4EoA397UyMOI460lCj/MKWQNytQ7ASI0kgwE4VaS2I8RpAw2daLvIioaT5uoTLTJBda1YC2GKkN/clHHEbQPgzLbsld7+sfVw3WrZ9l63XCNPzH0xXSCzgcYiLQ45ELxWv21btZiSjeOXVLcSVGV6QJTKY5kpC604arcipCGupRfQYAn6bn3LXEMLu5HLClDyQ9DAR9z9NJklTIYD4ZQkbrTIP5RveUCc8x X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(93006095)(93001095)(6041248)(20161123560025)(20161123562025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123558100)(6072148);SRVR:CO2PR07MB2520;BCL:0;PCL:0;RULEID:;SRVR:CO2PR07MB2520; X-Microsoft-Exchange-Diagnostics: 1;CO2PR07MB2520;4:TCLFyOv9dJidbmm8lLIVJwSBGVVV64/retlIknNK/LB73AF41/S+apaX3tud4O905EbaMJowgTPNiuZ7jdHhGo6g+raZqIs9X9OjnFz/ote1eUdeu1j5nM+CcJCWNgETymUs3LdRIJ0NMNCGKSQAdIATYSWnlk9PZ4HYMu+SJK7uV2JYAQj4smXfxYG/Ik08/ltHWs5B1D1Sst6wpLhIT28SOHIlLJvA57zOlOWN6tK3LeM4QNM9TQMGn7pv7WdL7G4eH6bQ8Q36eh9j0SmzG4cblEp18kSvd0nIIlk9uXkHgnKocZZcXrEF1D4DlVRwoNYIvBCNGJONw6MgDGU7gkoV4Dh7wyywUXIAoG6rkkf6PDd6Bh7Imb61vt7Ao+XMfCs15c/kD7ghUShRdmklaIaOmfWc8n9l54saIpX/KUzGaRf07rXOUOICLbsvm6lrKGA+JPJGysMDio3hFUqvAHJPcoKiqNPsntG4Gl8lIgajLqLOQxWRgcfzeTWgX8oMFob9JyTmQtSbPqrPjQIDIQBeJ/ClAqPEFQs+Sd37NbsNthp/zKlC2q227DOZv8XkICO+OoEPzFz/6XvOYHYTrHQfcIyqd/R3vkE3ZEd+UrrJmKA/rI0OT9WWC7JESVN6a1uAJA6uZNCq9ox6yw3FrDauTvbRCdZuPp4XrNB/1ubaA36TGvCtMTqbPIkDoBgu393/f5UfaLMFxwBANOLU8LORlSDINyFzffASYZXtpxIvjqwPjkugYD04bW+c2Z+TnSvC7797O6FdDDFffAweAGKJEPq2bG5AyYV7yYJ7mqE= X-Forefront-PRVS: 0301360BF5 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(39450400003)(39850400002)(39400400002)(39410400002)(39840400002)(24454002)(42186005)(107886003)(7416002)(2906002)(33656002)(6862004)(4326008)(53546009)(50986999)(54356999)(76176999)(50466002)(2950100002)(6636002)(229853002)(6116002)(3846002)(478600001)(33716001)(6246003)(38730400002)(110136004)(83506001)(189998001)(230783001)(81166006)(8676002)(23726003)(1076002)(53936002)(9686003)(7736002)(122856001)(305945005)(86362001)(5660300001)(4001350100001)(66066001)(47776003)(18370500001);DIR:OUT;SFP:1101;SCL:1;SRVR:CO2PR07MB2520;H:localhost;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;CO2PR07MB2520;23:rYqZFEaXU2CTTPmpOiPRdqlDdpTU+1DzlGDBJpZiV?= =?us-ascii?Q?Pacw8P+2sP5qaGehF3JUg4aJDS86Aj/Qt3t4Iu8mSuVqyCs1phdLuMhdd3kK?= =?us-ascii?Q?uR2fheI8n7bzpXrgkpw/VmP7tS0booU94pRWmfozURfqxp+4p2FXu3tlC4fz?= =?us-ascii?Q?v9AzbNJ4iMBbiYq4eH66fMK0CKgB3IfYDmRYsDxpe/+ek2gvWEJXIiS9zhH4?= =?us-ascii?Q?skuwACP0lwkN3tNrG9gsVZP2Q7g3nYHYjBdywtv0p6QKVY+muarM6OEqN1Vl?= =?us-ascii?Q?07FcpDQD6kbKHnmrvKNud3OtM2xkF02O6BFI4arN9dL+i82BPHld+kvR8WaV?= =?us-ascii?Q?h80REfJ105hLDPxbAOno1ZA4ADbqSLLUvebn8Nt5Sk7HJezhW/resWJwXu4y?= =?us-ascii?Q?EJjFScJmatQS3PAbCIkJMIGfn2HA60dcPVB1a3Kj69hWPfeJpkK7mQzw/i1V?= =?us-ascii?Q?TFYWKcPapuhDPJqJCSvT0LKxxhqVKcYzvWm1MARiNB6dBZQG4ICw9oo3sKRY?= =?us-ascii?Q?SCB7K6Bzw39BcpLSaq2tGjix7mA0FXbr8W4docnz5iA3ZQivegP0e6XJ4yCs?= =?us-ascii?Q?Pgm7sT0buOgilFzaDncEutkd00hzirw79rZtXA4mfqk2n+2LnedpUsjHx2d1?= =?us-ascii?Q?JfjOHohZW3aAY9Mu2OemEuMzMGuKM/GvLQhqXUJvhJQ62CQNid1g/2JeKk5L?= =?us-ascii?Q?bZMn8YWAiMg6n5+Z8Yi5cjzd2COxtwyDAsDEO+6HZ3DQ42avZXVhL12/jWO7?= =?us-ascii?Q?X24ENKzuFQXWAJRziQ6FnlEbg++rWyLLDz3UfQZEzrrfps/nMYmcUXx6sDXB?= =?us-ascii?Q?BdaVJvfCXEEezqUBAgBKqx50CeAvNPfQzYZCGQrtLitcAwSILu6MT6/d7YcS?= =?us-ascii?Q?L+10JHT8wFZhviPEkkqltGiDC+1G43rx3xvwvVH0zCJA1NaAjT+LZJd0exBM?= =?us-ascii?Q?s7CCTiRPym9Uu/P3mp97j9gn+uP7Xi+PA4HZjsd3zUdgiId6DjzVliezg6mA?= =?us-ascii?Q?X8Yr1p1JSHWZoKtz/E+LsGZRf4+yb6BRF2FbQZWKhWUwkOd3V2qp5w+yVYyS?= =?us-ascii?Q?9uC50LvDHIiQyVD2SaRzI3rGYjFJrvA2Sy0iZFWz16Xo9Uvpwduekd9QtUZF?= =?us-ascii?Q?VwlodL2/LZI+dG0zG+P9hpRI90xr4TshCTyhGMEH3L3W2DeX5u19ubadgrds?= =?us-ascii?Q?1jwJwyoakdA993vJO+EOPmtdmT4X4sTCp0f?= X-Microsoft-Exchange-Diagnostics: 1;CO2PR07MB2520;6:PCiAar+pRWBKTMOUwltbeqzRxFOIzmUYpmmDUt1QaSqcZwxdDmUkQA8TtzOuV9CfGOMr7Um1Ede5BXq276eWAzbyKx+nIv8vVbaG6zypsLwW6VBFKXCK0r3YD7vILulQ9eu+cX2i39Y7m4VKwaWSWOoWzZ8U9NFBbr8VdDrWIfAjBBfw/rHLxUoyAdEPWMsns38FErXjPRX5YKtDj3bGwjaN5As446vN2Hj7Bvn7UaVAC0hWI8MM4YcA/5Pzegi6xfxq1MPFJH9se41RDuuII75TyYjcAOohIYHacixWcDrnp0uu4mYpOBdqhIupRp3LhkhgQugI8QnLAMasRLyocZSm8E6jrEPBzsxogz5szaCbFwX3xgyIHbBLp1XWgKfmysN95qiT2jNHtBGpG4fn2R6u66fxWAvda4st6dQlf1Eenc0sKjY5eWJo8qrIGIbaD759CdYidq525xE5LKplBePw5ajaDpBWOsxxRoB5qdc1s2lAa7RfU03g3ULfaom+XCv5I4u9eJTTyuIhm+P6Mg==;5:j7T/vpIcxwhsz2lxoAHVUEcPQmVcxyNtpKexaP5HkTNU403vNSH8GjcThGK4L2as4okXvo8SqaIQ154CKcE8gx5PRue4Z/0ld7KLiN9WHYLZeDEgItVdMaaIjnCbkdruH+MlO6yOepSaVM1YYlotFg==;24:66ZvaaEJLgoDM2K+sbf4Tb6f0iPtClZa8XYJFzUxbQ5OjIGCrjiiDo8tb4kYemSIvz2fAC+oAIhukV/FwuO+U6boRlvx1nvvXxWuyj52QqM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;CO2PR07MB2520;7:5+KWKAkDwQIWIdtMQSnzZrss1z62wptjLfdIxUlK/xh8Q+V4u/1xySSZIk68ssG4M2U3WH5ON8WljdQFnSch+HEjHz6p/WpzrwmyP9jEzrSTP31KGKTMoCc0SKbd/RHmKvTqOuG5XYlBARAebmB40ZWtjnAmDwuXitkHH5ub7y8K1qnLsXwJO7Om8vPR844Dv4hyAj409UrpGBqW0I4GInQRbMNDAa39mWDYG/woYX4soQ4nmXRZzpx3KoQb/zImmveP7GOqomsYbJ73xyDwIvEt5dy8XmeTTNisnOW9ht/THBaZj99nXdmVj1bUtDP20taCdDPSDwYQEyhDWmsnVg== X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 May 2017 09:44:58.4217 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO2PR07MB2520 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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. -- Linu cherian