From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755754AbdEEWTE (ORCPT ); Fri, 5 May 2017 18:19:04 -0400 Received: from mail-sn1nam01on0062.outbound.protection.outlook.com ([104.47.32.62]:51520 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751528AbdEEWTB (ORCPT ); Fri, 5 May 2017 18:19:01 -0400 Authentication-Results: caviumnetworks.com; dkim=none (message not signed) header.d=none;caviumnetworks.com; dmarc=none action=none header.from=cavium.com; Date: Sat, 6 May 2017 00:18:44 +0200 From: Robert Richter To: Geetha sowjanya Cc: 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, linu.cherian@cavium.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: <20170505221844.GW16981@rric.localdomain> References: <1493986091-30521-1-git-send-email-gakula@caviumnetworks.com> <1493986091-30521-3-git-send-email-gakula@caviumnetworks.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1493986091-30521-3-git-send-email-gakula@caviumnetworks.com> User-Agent: Mutt/1.5.23 (2014-03-12) X-Originating-IP: [92.229.95.138] X-ClientProxiedBy: DB6PR02CA0013.eurprd02.prod.outlook.com (10.170.218.154) To BL2PR07MB2339.namprd07.prod.outlook.com (10.167.101.17) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 79cdc8e6-db4d-4992-6bf8-08d49404b967 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201703131423075)(201703031133081);SRVR:BL2PR07MB2339; X-Microsoft-Exchange-Diagnostics: 1;BL2PR07MB2339;3:MafIuOSRcnWgKFW0t+AT57ibhnXi3XzEvTCRaAAOHclQ0sQVZ0Bh3ALdl1MCXiwEpK24qdcv0+oxbN8vsNbbj7/H/3MEfTKUBv4g+YaFxFJgbe5adBoHiWpjiRlFQFV1fn+pxAOzLx2Gsd+HaLoqsz3CmscJX+4FbNJtD9oOmR5LDKVxzpALbOF+7p57AjfVkeZtZXKh5DUbETfaHHEzd1b5kt1GDAw3TyuGdMc44Eu1Fo1yS9yYm2+cG3YBg3cMHc/iha09MkXIMhi9aLUDEQ0t1ugZcMTW1PsfokchDvTOeSS0uJBOomwp9YYPppVyitLctEkBaeWznr+OQsuqBw==;25:Fx0Cf2eGJKmCyx4AczL1AC10boOSZ7xtZ4SPto+TkSdEawt9ye83/Epa66aFpXcc6r94/OtYMoAhcLMqey61MLKwh3iiKYim4OsVFG/MXZvB1tw4BKtnBfxGRX6qAYEvJ0N85G2NqjfbqzzcR1jvf6TwoI/GFuYeov7/uIAkW5m+jyXENGp6N77Kt/tDBdGgjzlvUeogf/ZxxBNIzRCH+DN6K5An4OhFp8HFKIEDCxCuaIGPjjfSCUoKylMGIaDxEGMfyllLncHn80Ta7Sgk4BnA6tMeifqYwZV9KE1SYtOaGAXEKVRdOfuEgYsycIeNBMPJ5p3V4nq1YfYnF7xmIqk38Urk08b3NZU+1979csfosW7Ve2X4nrSf3aO3oreZU2MOyJJL/lad5tXjl2PCAfvSRAOWFo9lZWEAocwOFK8iKZMVHhOy+Xxo8wDIJth/9j+iBntmIVWoZ4bjOVU7Pw== X-Microsoft-Exchange-Diagnostics: 1;BL2PR07MB2339;31:IPnfeDDt+Cf6eaIHRD1zGLFXgKFruW9i2vNByw747gEesD2G48sSpLcfJMW0bCN/9WvML8gnLfMdBvxyM6xdiYmbYygkzeGye+6090J/3FVJKaJWS7fW9o+NiD9gcJ0d58EN4IUV0apL589RZosFrkLUKxnoEAs3JQM+jaDfsBAAMbE4q6YyJhtE2r0743TRcdCDNZbrmB+P5Np3BWH3RyZzrbjIMLZdj3R0iSkomJFGslkJvEiz3euW8MqpiEza;20:h3ih6VJq6Odc3WFrpGnEQoAr/u2MT45PpgbbxOiWlL35dZLDFoK62/7x1r83c2xhlkRfARFfgwmi/KRUqbcWnh3sj9WkptEcDIayHV0RNg9oLNBNb/n7pzPSeYPnTvzIUsSXJgViRPpwhj8qVD9lVSTYTLhgFWVVTRUKjCtmRPRiopvlRDk9X1un2HPkPONqyG1ByNq348if3mGkE768onfGxCu4cK6JY8dKAZdzWD0UKVUeyDsw+J1WZHSoSk9t2BbNzlwXq4bvCPyPR4fpTl+3zOY7saw1rqCqIbdDHYpz8Mp4W5LUSKJKBHVdXDBYwSWUeIAs4H6gwUszk+rsZqg66zgsGk6sgfIis3eOkw6neGHgDhnlvyeopoUVp5/KL/sjYf9lMS8yUipkWEa9ThV/cL6oME1U5J+QLRN45E/6qRjj+/HewC6PexpUL+3Kp3ExaXMEHGBwBnovyP3RzxsKQt3t6Tpds5eDZaTPdOYk6+K3RAJPVF9ex+2HNtcP 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)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123564025)(6072148);SRVR:BL2PR07MB2339;BCL:0;PCL:0;RULEID:;SRVR:BL2PR07MB2339; X-Microsoft-Exchange-Diagnostics: 1;BL2PR07MB2339;4:HhkkdBsbCXUBt8kINIPxGf2gy744A9IwCgbB+DRz/91OY4SkaFAtc3KrgunzisYT8MRWs6hV93ccBrLbamngixcevpAvRyoqFJWOxqftg8c/NMdanG71XUalDpeEdC668nJLsOsYFVYHb5A7vaPKo3hHfwDNEd3rKUL/Swkhx11mY01EDZDtYEMeDOV3iPfmOe9Cm9mgCLVdlerOazRw4KYxx93foBDJsJ+TzgJhHHNviM+YlNOMbKtIHpFi0A06vJRRwFiOepFIfegFTy1AD1Rr5pBvVw+VoD2jxQLCkRmcyhMjJHoLFgA2Mo89zxyFBk5mMywCxA/vkwn+wCjnPReUJNiJHMFErM8azpjkrKJs77Z0GG/bjy2YgUcg5+C2Eqq5EjaLyDKW+Hh6DVMgLoJUI7nmJ7yImkRRLDfuiGBe3aFWgDCxg0K2ou9eWJJtIsJsDqYXKIC4CR5ZToqL1bYotPkfGzFj0cvWC8WiFccIZQYUdYfVtIimmSnrdpxtshgOMspC6lStnPeyzeXjwsM/bqd+Om1LPF5ef17gnPkJbs4RpUM4gSn8EdQeMrAZzhXU1CjKG1dm4yJ7OH3lnG3KXYgoEgei8cRGVu0jHrR/my5Ed3gbdu5k7QfB9szGzDCIlCBlSD2ZHD8jQS5Rx+cIsLO/TVefdEeNxcIR4LryQE9LQSWVYLYT3ZDFInV6FT81onXS3fvGK7T6mEaOTIkr1Q4BLmwUSvHiz3XigmAERf9xILSDNIXgbvQzOs09YE2UF/4N6mBLeQZEWCtjSjuXpKxjmzPC7eLY0k6aS9c= X-Forefront-PRVS: 02981BE340 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(39850400002)(39450400003)(39840400002)(39410400002)(39400400002)(24454002)(50986999)(305945005)(76176999)(4326008)(81166006)(42186005)(189998001)(8676002)(2906002)(478600001)(50466002)(3846002)(6116002)(7736002)(86362001)(7416002)(54356999)(23726003)(1076002)(5660300001)(66066001)(6862004)(83506001)(6506006)(2950100002)(229853002)(47776003)(33656002)(230783001)(55016002)(110136004)(38730400002)(107886003)(53936002)(4001350100001)(53546009)(25786009)(6666003)(9686003)(6246003)(18370500001)(309714004);DIR:OUT;SFP:1101;SCL:1;SRVR:BL2PR07MB2339;H:rric.localdomain;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BL2PR07MB2339;23:xnUm37GG+ParZClhbW9lMWuFWR3cVThFk3nmzwiM4?= =?us-ascii?Q?/wS57nms8MY+p097y8WAvK+qVEnuxo5e8y4Xi0W+24PAqZJ7L+Swa9sN7D5Y?= =?us-ascii?Q?jRFPnSezqFPiBs2BDTQO+q0JDRjGPnggmxu3T2+JVXs8qpT3c1wf4a+bgV0m?= =?us-ascii?Q?tncII+PLGtJPLi6xa1PTd+Z4kr2XdxZ64tLauO35RQO5G5owbyuOEg9oRgEA?= =?us-ascii?Q?JKMcWRuCAlHwhHYNz8muvISM+IAYcyEtEgcTND8bjpmS5IrGqi1o6T8Qht6B?= =?us-ascii?Q?3YwAVlyUhJjPfAF8W/GUIXhAMQ4eHvaaHFCpQSZAtI5OeKL+a00zd0rUBJS5?= =?us-ascii?Q?by3PpEdA/Sw/F4NFY3lJNF1IayHdycXinL99LhQUvkDnTfnfail7dTm0dSPp?= =?us-ascii?Q?3n54e6js/2h7nxYqXA4ox9dSwAKZojHix2lljANJZ+CRLrNFFlF6LByo427h?= =?us-ascii?Q?q48q0aO6LKcq5qQuvt7hFemGilL/4YTYySck1CCqao7R5bl6S6n41mqSdsaS?= =?us-ascii?Q?ahIlaPYADlCrnTIlEuh3sPvCmXfsqSlo2zRI5aTgpRnZXJ5r5t1N1ORu9OWl?= =?us-ascii?Q?UZFe2lUakEu3RZXIS+w7Sr6IPQujsHy2KmgDH3lxYxhWGdv6wPtm27+uBKsD?= =?us-ascii?Q?Petvf4uGcsMxwILomWA/ag5cQgKDqCqtbYC2W0HAuUCgM3lRiPFcDnLHMpQk?= =?us-ascii?Q?Qf00xfT2NsQ89ZBQDqdoL9CFouJk5Hhi1qfCNf8gRLqsn7xuktVB/kNo3NRn?= =?us-ascii?Q?XlBQtQ4FMIYPSAOORb0ZdMM1wwllzavg5+QQoS48SL94Puf/fb++DVZrQyJV?= =?us-ascii?Q?OqxQUrPWER6Ku02QHBE3JkZac0hekdGnhdXgPrsA4xCMW0TGKTh4WXQdYbXQ?= =?us-ascii?Q?qMGp9y7ipL0OYScBQ1VlUBcFtpFLLdQN7wUOx6p0CQaUMYJSJCrCqEOBg9YS?= =?us-ascii?Q?RNYmHFBI8QpwAW3aDx3OR28n+Os90JqZW9p1tQJPCLbnGRVpt0LFHrw4ESbX?= =?us-ascii?Q?rZfRfBofq9hosVw+E0DTQXxW87s/G3hoaKfTtbQuAVtlG18wjUpMzn1yctA5?= =?us-ascii?Q?IjMMbjGZDNHzczBNuI4VHejs/mJEL2zm4NHkI28g/LNpPUDamLpvwNUEGLUr?= =?us-ascii?Q?p9sJM/Hjm5K6QpffTnaNxkczYWRcMEz3ZxpOghu3eomWwpOd4ARLTDodAkd1?= =?us-ascii?Q?NpW01cE43XwK2Xp0aIRgIipvCIUXo/9WgUcJeHfl+qo07jsCt9gGLsFZlKGI?= =?us-ascii?Q?2KdC8vUgtAou2XXjHs=3D?= X-Microsoft-Exchange-Diagnostics: 1;BL2PR07MB2339;6:i+nUH/M34gRkx1NJpUjkquajKz5XWbU0cYlwiXeP/JwV8T24pr9lsMseGE8XKvgboBkWqm0mYQxRtZgy1ReCiGsD2jS1hqrgEQaU87oh8G0k9to1io2p7CEkqWBWKuncU9l7u+l+lcNJd8NWSyrqb8MacyEr0GxDsOvAigvrfJEDEQ9fKD6+eFcag6FyOilFqdB04pEfIIP5IQzXTeK1Km5wcG1VhghJGHt12qCtMSMhNSKGEcCiP+fH8AA2owYG0sePo68cU2pzz/bzxTK8VNGYo1wNZvItWupcqqVAxkRgjbLZjmEYmkNBApdgv8XYyzpGLc5kpPUeg1Uru93Lv1dcbUTlkSR1+H+AKEMwEQwhqqNm0SUq66+9sY5+/es/uLPC8jDhqFOPrXtGlEHFo03CMk0u1R/oQlHl1+Wuv7WvkTDSnaTZfLGc8ktScNqOY0FiYU6BP9y+so/yu5MMf4kzrzn0UI41pwDtjrFS5CRsbjFk88AnNlBVmnwPePZJ8sMuQVlsbGkCTFML4IIOTQ==;5:F/LgDgo6aSdC7uB/3qDPNImEqA2A/pbsvbfWtgcjG2DKtNrg42KZVPFmolVMnGg9bvJvlZJ/2cdSCeknE/B9F35li7ZPqBIJ7Q1HOoGlad43/yuBNMormpWfKgsqZvBCKqCl8lB62G3jSDT/1ZpyWw==;24:ZGApRQS95uJzx+4KcrfItCUUQ+AH6j+Esj2jTftDOMy70jRD4r7Di4gmO7gciZUAsYeWHQwlQudxbLlMelK/lutFv9E1XWpTu4Y6whHq1vo= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;BL2PR07MB2339;7:0XOz8/ipcbpWm90V2GSzmuaIw5WscvU7kEvgz5Yqrg3q6JuSzLQoxM+CZhmJfCJgOazFOgEUzHlxP3msb2KdoyVZuvC9iGqL0GlLQHNwe9WzrpprDMs9zcUPByE4Z/oepF4ECmhidqDzfPHLmSVxCxtah5VfDwNG6WS/E6B8pr3DqQ+CuAX8tyofDDAaHkL7h+qlER+MIJFPaurQnBv1bFQ6ELQ+XybQZxYYx30qX2RQ8/dgy9BTbXmNDxcYKSln3NGW71j0t33s2an4Nn88xHmg5ZwEI+MLSo6mAzuyMIrzL6MfbTSI7cfC9S/aNVJbOv7W8WcVu1Nt8/f7/bOIhQ== X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 May 2017 22:18:55.0803 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL2PR07MB2339 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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); Since we can drop patch #5 then, the fix would be isolated to this file only. And we can use smmu->options as the onle check for this. -Robert > @@ -2717,14 +2733,6 @@ static int arm_smmu_device_probe(struct platform_device *pdev) > if (irq > 0) > smmu->gerr_irq = irq; > > - 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; > - } > - > /* Set bypass mode according to firmware probing result */ > bypass = !!ret; > > -- > 1.8.3.1 >