From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754580AbdEHKvV (ORCPT ); Mon, 8 May 2017 06:51:21 -0400 Received: from mail-dm3nam03on0068.outbound.protection.outlook.com ([104.47.41.68]:45184 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752788AbdEHKvR (ORCPT ); Mon, 8 May 2017 06:51: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 16:20:49 +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: <20170508105049.GA26654@virtx40> 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> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170508100932.GH16981@rric.localdomain> User-Agent: Mutt/1.5.21 (2010-09-15) X-Originating-IP: [111.93.218.67] X-ClientProxiedBy: MAXPR01CA0057.INDPRD01.PROD.OUTLOOK.COM (10.164.146.157) To CO2PR07MB2517.namprd07.prod.outlook.com (10.166.200.151) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 3e1ca782-b7af-4ba1-8303-08d4960025a2 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201703131423075)(201703031133081);SRVR:CO2PR07MB2517; X-Microsoft-Exchange-Diagnostics: 1;CO2PR07MB2517;3:+Izb0243jyppsNzbuOZ7yPA47baRWaIjjGo6aCKOo3jLa8mnq5qwWt19/q40YUyqNs2Komx+AQoy/s63hLjIxwOn818xyRMGp86/ab08zfWkGtXQnCR2aY77p/17CD1WOmtRc2D21d4VuRHatXjnmq4p0wk0zEKynhedzSy/Sx8RTWCeBumCIknbB42lRHgHuOZ9X+m2QjufL6zrNeoV4qKIkrqP9YXLx7Em0ZBeGp220HhHHWIUIwUovq24j1KfJSTN41R6yAhpNOy6rbLvs1sMC9lUvbmGydlk9LChCPhL8L/lNQjiDPu4INxMZDQ12Z5HI2IFRuMdz6lh6H++3A==;25:kiR/GexGYCUF0y/Q3wCafm6imFbnBZF84+vR331PTMC4xa35nLyR9scV2JQv82xKnOSsKGsX9bx2mUvN3npvjWEnfEQ9g7riHyimi9TDk2juNGOp5PeMR2at5YZoCMUppKvGpa/Fn36kdOfB1BQynxiJsCnVQN+kltsvqN0rfsTvwAiSu5VWPyL1BqmO79b57eQgRz4V9tk4+FfjgiO8sQ7rv/eHBbRio2OLctV/PD7Nzawh7uFlg6AnybGcRFJ/2qhGrfBVHzPna7A+IEyi//gOpS/dbsW8aqUv3k3qZBvnQ11kDQzvKFEXE876QuLXwxIG1qUEFP4XnxhK3sjTaLfG5zhNzLzK0ec3/J7uIzEmHSR9C3uU++oNCtxdpcJhsN/kauhAY3VoFKG3fLHSrdE+wVz60ICZ+NVai0QRh4SdvNw94hVOjJyrUZS52EU52S3Khgtu+qoDR/cEobQ8YNfy84ZtK+nthUGPKnoSGL8= X-Microsoft-Exchange-Diagnostics: 1;CO2PR07MB2517;31:oX7caPzyKK9bzce7DyCdab2sJ3j1CiwcBsZfF3OYWM3Iwt1J3bStwkZibynJPZv1cuifaF0wfSPE2zzE0yFJlClOeStl3kMGbsBoqhq/ocUX22ESsImEzrDosw5nLKpje1gcbWwJroObmz85B/opWmiAyldZ0T+2u0khtbF8ge5R8FGmteE9k15DbgaFxIF4cbX4H5VGLFptqPwp9J1oqlIJs+QI31tQq9gcu93lEmKZXgvFwskx+HGSZVfVlPjj;20:0X3aKEHfMUhUu+3l67cA5OuCDvcN2tIAXvOX7KVoXVQ0MJdh0cxv7X/JH2i/ZmCWBEQI2ll9DxKi6MXlGnrvR7xMxNJiQd9wyGVJB7vf5MOC33UD6WHnaufZPe8aDer4/kqJr9pRjde4QCZIqBp0nqgjekg8wun5M+pbbF4Mnl9Qz0z7hfwVmlw7fgrn0xI2V565n8nJMxJCp3GyDXoHmuX+CZabafNJohDvA3SbNJK48o5s7WVOQj4NSEscTsO0o3vwN9/+djAc4/IReL+XFV+TWUMoFBJMIbhmULyvyF+rFQzN5jU2XQNDzNqf8fTKAyEmt3T4Dy0YzB81OYei9t3q0peccyITMEiIm2DxIl1DsT6xsZjpJnL/JWd1gb/ZNQYGL1wliL8EN7VPVHTB0XSMh7VLsla1mQ0nOBnRAtDzYV3bqfQaO/dgvfSyexyQwvK+HMI66fa9EP+E//S+4jhIlEgvko6aDSW7jtg+wxE6qK88yt49M4FpCX6eVe8v 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)(10201501046)(3002001)(93006095)(93001095)(6041248)(20161123555025)(20161123560025)(20161123562025)(20161123558100)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148);SRVR:CO2PR07MB2517;BCL:0;PCL:0;RULEID:;SRVR:CO2PR07MB2517; X-Microsoft-Exchange-Diagnostics: 1;CO2PR07MB2517;4:ljvuhhfugMYdp63i0XbqRcAkZ33pxI+9pkRXc2tecrFTXoUXBUu+bHKoCeMeS4xJykjWvXlQIC1E3SMe/AR3r2bt0xAqA4sMc+6onZzXfFX54gF2Etl0fKwjbl4malJRS6ZB6VMBQlv+QKboEiUr/Sr0YqKkBlUvEQEHCrJhtWHk46rQDfm/HBGL+elXfkBFWyMVI3LkCsSi4FO8S8ISaY7JU/XLpMSYAtb8BPBVfBZZwCkUPyEsXdr5dDfYWZs47kA9GUjlfgttN5lP7uf27i6A0+V5vkvx1Aoqg3w7EyfuRfLAn0wlgVfyZTtD9c7omXPPnvfSJY1iNdu7qC9vhBFXlkoX4ia2ifUedXcA0vk8fCtp1zoMYtDv1cwl+IXwxZa0Gdmj8dSyPmTKfDe152bzytgLiANH9wvMZkRUu3WY7QMkzf6mQZcjV55haBVUNtQRvXdNBgNsyTepmqtGp4ExaHk598BtH1XFZwDrlCVPRPO02gWgkxj8Ac8HbYKUh6s7crqaYYc2K6TivFmI8ByqoGgIPORAZzMHRwnb9BA1h2AF02emtKGBqX0YAn7X08sKh9YT2czeO7w+AlBgoyBr70WUOTRB3nAvVro4xQhBS/MlfdGL7iN/uS9g3Z+/fz9gIYOAbOQTkYu9B8IxIEk7UF1y32UweCBpv7kfk1BdfXFU86Iv1LrmTOQm1H3NwBln2OQFH//ygkhYpHvhPTDw88HOhq+ux4Cef+vuwLf8C+dwCiJO+swditcCPYbCGjPuKxMrzz4wk6+IqurLUuagotA4/4ISfqR2/zuhxLM= X-Forefront-PRVS: 0301360BF5 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(39400400002)(39410400002)(39850400002)(39450400003)(39840400002)(24454002)(53936002)(38730400002)(6636002)(50466002)(9686003)(6246003)(110136004)(4001350100001)(83506001)(189998001)(107886003)(86362001)(33656002)(8676002)(81166006)(2906002)(229853002)(66066001)(122856001)(7736002)(47776003)(2950100002)(5660300001)(6116002)(3846002)(4326008)(478600001)(93886004)(6862004)(1076002)(42186005)(230783001)(7416002)(76176999)(54356999)(50986999)(33716001)(23726003)(53546009)(305945005)(18370500001);DIR:OUT;SFP:1101;SCL:1;SRVR:CO2PR07MB2517;H:localhost;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;CO2PR07MB2517;23:WxFHHHKCq+fJTUz4Dp5oeu4mpxRdqNjPtyLzx39UM?= =?us-ascii?Q?X+OxqH+3uFnHc86HKVn7eoj3iXB1C1fiWp4eCwOpT8DCgmxMZoVpKTj8l58F?= =?us-ascii?Q?0Dc48Xx3H4UsLU86H6KD1cwe/f0h5n3CkQoMPImy/yY3/WBm9RspNeLtVoie?= =?us-ascii?Q?QB/BggGSx6yxbjGBCTlbXeZAJvQKdoc3vgMmXK0XxtjCT43Ctp2C8HaCW1Ks?= =?us-ascii?Q?YDIXg6UIy8n5iWKC37stJRjPDNRl/OStxlpCmjxk8/aVGd677VuHh3eDoEUn?= =?us-ascii?Q?9raCUJGyIYxR6od0o+phWqyfummKCpkFw1di6ISizdZoB6Dmzmg3flwdLiBf?= =?us-ascii?Q?mK4Z1VpxlwhxqQA1pvGV7E2nHaJroWfjycUxRsfkWyauPyBdgFEQYq/58Cfd?= =?us-ascii?Q?RQr5GFF1VcyYSqhAe7OfyTZMPkh5tdvccnJ8g6qOlbEPvAxRhv0xy8hS3CCQ?= =?us-ascii?Q?WyGfJpWL55iysHCe5mPzXePj1W3ctCVzZ04qMf+h6oMsTPyFjlCAhUkdGNuu?= =?us-ascii?Q?GRYDUp58teKWh7jNE94yfhMUkZzVMCkfU8juZDRwhcfOhbKlfNYH7f9kio9Z?= =?us-ascii?Q?BjwY/zSFHpiXcQjjx8YV+JcM/JmPAbIzKGJ8ww0rnkuvEQ/RuJmU/NIM+52w?= =?us-ascii?Q?L0IQyJIMoB0pd6OggSHgFms9DoDjD60mxU0iCK9zI30FhwbQg5tR36MQhgso?= =?us-ascii?Q?GkQINd9EPlEgl1mX+MQJFInEG8oSIg9YxoMpXVARuGCacQn7fDxtwXBw+Sba?= =?us-ascii?Q?/r3O6xBKYWBV2n1u2xwOCjlGNVooZW0L0q5pB0entFRWDgdyHN7aekt4jNDy?= =?us-ascii?Q?tCxe3DKSG2MyasylKrP9KkYogpbvyW7K/BDYvL05Q2TlPSBtgkfqgAIxHF5J?= =?us-ascii?Q?hLWV+w/WQfO1WtP9Evx1nsg3htkR07nfEonOqgu/bLc/EwQaaFTbGk2QDfiH?= =?us-ascii?Q?vY7IR3c/DM/kSONSuGxLj63kkpF3bi7puH5k30MGAoSx84ov7WzzwoutuTrc?= =?us-ascii?Q?Iqf6lb9ezNehu848+9Ntqtx+OZmcMTXpOUVC6O+ZDmx3kjyAhDSceUGaW73e?= =?us-ascii?Q?WfaDlwK9NMDsfic9/27sVCbJ5TvUisthw1H0sVHjUqDPxZ5fBh2lDtDWJIzc?= =?us-ascii?Q?u+hRomytbZry6aLJQhPUL7BBgn/nNF/VMdOXjlSj4TJ7Pb0a/yuYLINSiXY5?= =?us-ascii?Q?AGAk7CQhyUN4+WUSGmwv0COzEeblA2j6RF79F7G6Zg7RPynK39JGAj+2A=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1;CO2PR07MB2517;6:1LBazf2ADQQQTP0bBkHYeRHrEWuKvhfRBY3P+7/w9G0RvUBjeXXRE6CY5eHoJFHPQ+rr521rAMlCphKKoBGhV1Ji5693b4CxaKTp8KMPaTDb8u6mmNMaJIIXokCfWZeG5LvJE6BA9upZMdwBKu3fLptRHLzqxe9WlrhHFqFFRsmUg+lvsvuBa0xBp3zuE89yyUcwPYN+8RuMfXCD9HK1IkUZ72md2HF560rlAw6HpHQt1pZ/v8RVQ6DrTdBECRSfRjdxVodkOuHlqbNSF8BaIXTl0huBG40x2yp95IasOBHSPWCkDPwb6vrdppjdAwB0/r4hqEIkZpk719nFLc9TxyzzkGQF4x8oXCUs8DniP/ljvFDJY/2o2vyxsbGffd304+VSY59N9WepEy7fy9Znh/bNhBkhO2XgOowMjfEqDeLna9J2B+86YBD8BXqrEixSnH8pV/YtTxCTlpKRKmlSMKaxFK7KAdmk2wsdstC1bwH2Vzru5PmRqEKZYeytcg+QnpWVUVADnlIk1iSjcTWKyQ==;5:6zj2T5MitMfcw8VfTHI1PDFY2qUcdx4ClEd2kaw7GBOg1FXCMBTdM70ATslImlLgeQtlDW4H9upksyEliryeAWVUqEwWuxQK2epDlcJqmnXixavG8Dr2/YXfMJgigT1VayH/TNAA0F7HlGTjbm8kE+t1YcO2HyhjCAALObBCKeY=;24:y6lna0KpzuI/KgpyHsKFSBGiOdTIBBoQycsBXv5MFS11PQOQOkXg36ftXmSat3sdHbdcTgksc2kSgCBCVgSeXQA82uuIdk9Y8nDW44lOBfY= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;CO2PR07MB2517;7:RX+/vyV/2m/lFQJ7F3CYwEDMQHtf1iNpgoWLUwJC//ZckCI7TbENqjncqzDcpoHqSw1Ph2+l2KSywbJsOUOiJP4fN45lywN/f47yykvaE1wa7U8af2IN0tMDek7JuJMALKJr50aKkHb8WciFFRns9ZQ1yDHw5WYhpOhGFlrJp6YqVU19u6FnnOHbEhWhrbPDCyf8RyrJKb089Mwcof7plpzhqqniLkEzQZ4mDNv2EfUjBKsnO8EJlbOi0blrL0FhmhSv2TS6lcV0eb6A1f9pGtFPoS9hufx89aGckMwjNcsXPi5Vn2Kj98C71RJDKuwkIyLMn4X26lB6JRg/qfI/Kg== X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 May 2017 10:51:09.4036 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO2PR07MB2517 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 ? Code snippet from platform_add_device: for (i = 0; i < pdev->num_resources; i++) { struct resource *p, *r = &pdev->resource[i]; if (r->name == NULL) r->name = dev_name(&pdev->dev); p = r->parent; if (!p) { if (resource_type(r) == IORESOURCE_MEM) p = &iomem_resource; else if (resource_type(r) == IORESOURCE_IO) p = &ioport_resource; } if (p && insert_resource(p, r)) { dev_err(&pdev->dev, "failed to claim resource %d: %pR\n", i, r); ret = -EBUSY; goto failed; } } -- Linu cherian