From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753493AbdEEM2E (ORCPT ); Fri, 5 May 2017 08:28:04 -0400 Received: from mail-by2nam03on0077.outbound.protection.outlook.com ([104.47.42.77]:24320 "EHLO NAM03-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752878AbdEEM2C (ORCPT ); Fri, 5 May 2017 08:28:02 -0400 Authentication-Results: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=caviumnetworks.com; From: Geetha sowjanya To: 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 Cc: jcm@redhat.com, linux-kernel@vger.kernel.org, robert.richter@cavium.com, 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: [PATCH v3 2/7] iommu/arm-smmu-v3: Do resource size checks based on SMMU Date: Fri, 5 May 2017 17:38:06 +0530 Message-Id: <1493986091-30521-3-git-send-email-gakula@caviumnetworks.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1493986091-30521-1-git-send-email-gakula@caviumnetworks.com> References: <1493986091-30521-1-git-send-email-gakula@caviumnetworks.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [14.140.2.178] X-ClientProxiedBy: MA1PR01CA0114.INDPRD01.PROD.OUTLOOK.COM (10.174.56.158) To BN3PR07MB2499.namprd07.prod.outlook.com (10.167.4.136) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: aecff162-181b-42ad-9dc3-08d493b22a43 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201703131423075)(201703031133081);SRVR:BN3PR07MB2499; X-Microsoft-Exchange-Diagnostics: 1;BN3PR07MB2499;3:2msCUPpbdDf3P+BjV74yIYASdEKo3FaWKVGv6kTzd+7Bu/GWigbU57kYxitjuPbqUsd8WgfMpGWd/1p0hwAdJHcsVGCLYBp3laqcRKBJWJDqBE+aYZjca3ZhSVohZARgVVXC4AznskaXcZ6BtEGOKufnC+CPRdOlLQYVW+KIvIxZX8wADD77r+ChWTrv1s5F4zSTVBALvf3p/cvqFwqk+5FyFXe1OEmbKK3yuU/mXZuT04+ogA5DM71tcf9zuW2+SYQyG4qxRtOA5fFpKUygwKU/Yy1U4qtP0TYPKQwH4ktcK3k4jayG+EBZYOmij/NEc8pebG1CdOpb2yLUiy7Ukg==;25:J87EZvi0d3uBVt56LVH0SAlmr2PNaIYYAxfRk81HQpsWzisSaZQwiXjyug8G+WjU1VL5wXM3tTlcMr1HbVGAKNcf34CawdjMND3JruPUqOUfSyVKCy4h9LZodE6JnDo3iIT/PjtWQYUb1eCSMluoQDSUFOnDgZS8ZFRrxzHEk+zR8gtPh0TXHlfVqcSvv3AOUmA7/35EdHfnrl/CeRmibsHDI/HlTBG2Rs1A/IJMbNAGPB4fdeaIzh7KT1K4QsEw2ClnaeciGgoubt+RsyTVyXs0E0fqtDLhxdC/KvwgcJHD1I4CxcLIBZBUMb57OmDIuQnVzmvgRWSP0kWPhOoukc/eC1+0FRd09xd+ORfB7mGnoDYF65CxciFi+7TeYYPMBMq8yWEwTQYUzy4N5H7skOHd9HLXt1GJXVdSuRFQBV/qCRVmRIT68TyjiIdxEVNgZxKCSa82b9O33M6rSsJYP8is6lJOXRKhWzKj2BDVcaA= X-Microsoft-Exchange-Diagnostics: 1;BN3PR07MB2499;31:9erIvaGB4s2uw5HhY/uB/2ZgQc+Shheh8Kv07kUibBRys3BmFyWo0/F4/M6Y5u9dmlWIMqo/MF4gPTf1TP3+5onpHKJDi0/lyutd7MJt6IWi6j2YQDAWGLVpsFjZ4r9e6v/Q0HXgHBI84Eu/7MnidtuCxngYM8vr0gsgFgEZiCwIk8jMxo9LCjOqvZxkv94xiRlUVzKhdCfLRiXvNZyxtpcHwxZs0Qw+V27HOQST7AY=;20:UthAmCNiKfnnFL+fi85XHbvlEWYXBqHvcw7tsWYjUtOh1QueTKGOAocZMg5ehBIo5WuDRvnrGq+a8rlEn52QXJKg7Z3bL1bqxs3UkK86TiWIuQkyLHiY4Bi1cXu9PagJFbE2MK5y9GVPY96x0RhvRGaBu91WaHd6JzD3Yw+LCDXEZrob4gN5hp1mfLiJPBCJdlPEMiTl9k9S13/OFfu1ZedK/Idp9EqxXX/G03ByguAwdXeCiZkJbUNQbq6O7lRNJNWFmmv/9KB9ZtRr4ys071yVm922lbv/mxWwnbcKoK2lzyHTpk1xPNKk4MB4cZYlwhorHFWAkwVm0EpneSzvV/JR7UPHDAs4aMhV1HLT+NO5IrBtaUnrwdnQKBqbKPGgqUuAZcKxUWypf3dnQhB+N6R27ysRBjUw0TTpapJhWSH8xnAEfs/vDNdJYU741XFSTwa4ZRwYaPpIkRE0HBVB+wnZCvSReA+rA9fm+c5NMzTkN2Y99umC9I2TaooDLMZ1a4EUC+6WcRxCL9EICQ7k4EKR/zUaiYO7uNCHYHiT1/EVRVDMI52YBlNmKhTBZ6anRmJMGwlzn7zkkTl8BM8wpsUflJ7cGXShYx+smOEoiyA= 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)(93006095)(10201501046)(3002001)(6041248)(20161123562025)(20161123555025)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123564025)(6072148);SRVR:BN3PR07MB2499;BCL:0;PCL:0;RULEID:;SRVR:BN3PR07MB2499; X-Microsoft-Exchange-Diagnostics: 1;BN3PR07MB2499;4:x0fvL3FoqT7MMOEZF2s9XuEiFTrBviOz+oUJVCe2vGUnZdmulZ0paxCVFjAahuni3H6rvsNSn84r/Wgjm4v2V/dkq0TVdfymj4fnJMFswLYzl7KhEbHnttap16RwkdZi+yw6CpyEF9sbd7A7KO8QUXdwu/mCpZKFx+rCmX8vzhdFzOnI0ocwgJF6kyoLf5ZNWgkcVAvrJ6ZZfE2x8QXRrhuH1cpZJ+yzdlTVGkNh83qRz6QvGg4xM/LvalMbx1KxuFcG3VT27+ab0/JJgeAuiWCGps9fgjijWjVStmK1Yw4k6FaSe84N8/hrhA/pkwnteIl2O46b0FoBJhhE2eJpwxOD6fmIkcsiv1ldwfyB1SzzkFbc3v1WCLuIRTrgh6A2KmdU+Dfze21LjkZNMg88TntbFkxsDFIVf4s2dw9e6f1JyvnBw6QPVVn8+iYqZR/s3p8BUKErRznIOqcUt0TF+aXtdkp7jCzKUnGhuRhfv9JDrEtgEXpDMTXJrbQUQcCOmV89PR81NF6h4jgB1qqVHxWZ2VyM5eMmPiZCSwYerVRQgrkq33Bp4GRtGJiWVBsXk2Js8GXucrr3rL1WezHpSVs4N3xMZo4zGU+8Wj7UGp3ECVaTEaTHmf7kiT8jCizcbWNYv+zu7aeRe6eQscUbrqJ+mYMPRqIuBh3vOg6JDGPvQ8cMQC9sAeZMoanKrHHcRBxYszsa6JU2QpU+9wLZ3lzVT/DUB6eEBXqRhBDshG4wnB2De7NnuwpVaMkaIzf/kJ7p7fBUi9bXuIWpocL7Vw== X-Forefront-PRVS: 02981BE340 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(6069001)(39450400003)(39840400002)(39400400002)(39410400002)(39850400002)(36756003)(5660300001)(230783001)(53936002)(33646002)(50466002)(5003940100001)(42882006)(2950100002)(25786009)(6666003)(189998001)(305945005)(7416002)(7736002)(42186005)(107886003)(38730400002)(4326008)(110136004)(5009440100003)(6116002)(3846002)(50986999)(76176999)(2906002)(6506006)(66066001)(48376002)(6486002)(47776003)(478600001)(6512007)(81166006)(8676002)(50226002)(110426004)(42262002)(309714004);DIR:OUT;SFP:1101;SCL:1;SRVR:BN3PR07MB2499;H:localhost.localdomain;FPR:;SPF:None;MLV:nov;PTR:InfoNoRecords;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BN3PR07MB2499;23:V70M68TXjOhpqMm5ZKYaTqOa7iydVROxLDLW3vYbT?= =?us-ascii?Q?JV72C8wdRexdQlNhzgid+zKKi1zdaH37IyQ+cO9hclyIq8iCg6I++OaQakiJ?= =?us-ascii?Q?zn2i7CXZrez/qSFQyaB3FXWVarAosEV49vAuP3mPQEnEIL1A22dSMhXkJcqo?= =?us-ascii?Q?RxMRMGiFE9FY+0ct6A4tXH4pHoKNNDwHpWGLMmzjrT7bqurxjdIGovjHyMSn?= =?us-ascii?Q?8rRPu5Tfb1Q1XZ8qtxIE+ygzWIsA1Ma9zZe4Q6pIbFhpTANRKRUcjpXkuEdi?= =?us-ascii?Q?Hb1S79u6vsIl+lbH3rZIoTYkRGhpo28e+nlEwTS/VZMIDEtJ493RZNYFh+e7?= =?us-ascii?Q?rDjvt28z3qtQcSjKFPc3ZznB4pQWle68adhr5cKbJ9mTLRH7LjlDNr2XQq9A?= =?us-ascii?Q?NhOIbDzSaO8EDJlKcKeZgVlvi7EjVOX3+is17iZjhE9IfWewhXIIUGQLO9ul?= =?us-ascii?Q?CRlaR01rZpXNwpc2SRJiGJltSruD1+JNimYyxz7zS2+z7mAP4RB2lHcu9Eqf?= =?us-ascii?Q?cqZZub3wla6eBX/tEgjbfWRfFdUefs1PYilqydhYite2l52d7IhAKZp1fbQG?= =?us-ascii?Q?WIPuAx1Getok2Ut/yOSDafZslRUQzB6rq5sKewlnEp00shHoCZj3EugQ5ouj?= =?us-ascii?Q?2SlFJBw5Si2j//fhhosgFodEwWmejOHNLgmlUXkqV4374qA3tG0Pwc2LcO1D?= =?us-ascii?Q?4OGP2o5qvZBrBNpeoLQuI4VkgLliQ/kdHmjEQ4I5WgqU2mozCb1ru6Ex9nlo?= =?us-ascii?Q?DJO5csWYuyblOQKh5M9Zsb3MPJ/jET47v3pQTO8lbxE2LcFiDngTEnTM/BAA?= =?us-ascii?Q?iRFnzGMWP+cm1zTO81u15he54ZSrE3L3IcMcr0o9qsx1EaTR1mBYuh8rGkpr?= =?us-ascii?Q?L8+U3x0QZ2q2SdayIr9w+IgqmkjHdqOMJRznpcCk3arklibyGRfAuI5XaCTn?= =?us-ascii?Q?gEqzHe91bxX0FNG+GwbP6GvuK4rsjDahUKYGx7Du5uq6MnH2ZudUXfwxDwYp?= =?us-ascii?Q?3GIojfkPwdSqwtoGgJ5mEVikQ0gjgiXtMHIpcWgcnmxDKaB1axZNny6Dimm5?= =?us-ascii?Q?HCbGF424//1uzNG/wFv28Ka6eqbFChY2BTXdhGVhrBgaNHVjqWTwVVeNH0SK?= =?us-ascii?Q?XHsePxhp2gszkHGmbbEH74s5BshuDh8ISANC6jlFLOhdXV7xK1rkHz1BkZ56?= =?us-ascii?Q?RtEz1Cix/zKNvM=3D?= X-Microsoft-Exchange-Diagnostics: 1;BN3PR07MB2499;6:iZ2RAzZ+Aqg/vVhlmSGBv7XW0XnuwzSKuEkc7YXSTWs/s1i4J4Fj2pgjcbJjFS0lXtIDSdGWuGrKA5swDK3F2qbxU/B4K0LcGLDzX1kRlGyDKqa8BK0rFp+VcHyzuSQgyyW01nfkYVypBQvuXGbzoVAlDnWfkF9KPBugcLef4yTSBhzKRm7jkjvVYIM6oxg0olD8ds3nNZPKk/F6jjnNgB6gQRgXQXlc/FQ8h3Mh9bs5yDpvyj+2oTlND1BHsQa3nIfl/HFfDhwWN3QzFom603o/9VSlpy+JzCMG13h3c/Wf9I/wSqEUXLvlli2DL7Mtw8b2hTwFl+ejbrfI5W7eUfB2XFMiImknMoBVcd1mxP7HfX4QGcpviq2+R3qPkKH9kSAzFfI+TVFHlWF9bT9/8tOQGZM1+zTPFjgagzwii7drtQ2HzIlLGc+5El8lDoXzHhAdTv00U7VphGz3JNSq/lc7hJuqHWiURjocLhWwlPAp62zuV4gbt4hvsSJEC/ueuSO445ZnfCtPWdqrebu2sA==;5:rRaeO5zrixOhAIRuEGKWKDm0dJBSgoDMsEUKEauzv4iLCCvXxZ6AH9qJigp6zmS4pcgNRre3ona9j31yO13zgdo60tZbSxuMMpvklOSuECkbVTNbHcJkYbsLF7KZAupSgcJYuI7aXxnUKCqWeE1eIQ==;24:Z1lsAae6XxS9xCcmeiplj7SS9puCL4dRSHB05CImXxR8GF0i3+XkwDj6vBgDwVmNGPGqv3VFQcTuceGnzsh66c6o2oFOSNKdL53f1c9oJMQ= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;BN3PR07MB2499;7:PpQ0DbOmYLpxmElXSWE/JofN6vtC8rJESLa91Ovr4A96Q971i3jFg7HnlfT8JhtzmYkRTUtde2S7y2BkTQVvh0u4yssEiQNKU+bdOULYT2lDOGziXFly9CIwKH3DZMst3Y06nUvbDheZ+aACHQnSeoUcWfps6X2YpoX9EX9dpevxqv0xrDeAV2W5XBnwc7LAYAYsbbLqtYlC0ZAowtct9GL/vQbImV4vAaYsoC3uE22//GAr+MtF16OyfCivWBlVNE7hKKzP946ik/i8m0jNQBftk2NCCA+jbbe5S/HFO4gNOm1LrojnixbOsgz+Upa7PxTBg08cGV/aFHvtxh4++Q== X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 May 2017 12:27:50.3948 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN3PR07MB2499 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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; +} + 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; } @@ -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