From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753848AbdEDMzf (ORCPT ); Thu, 4 May 2017 08:55:35 -0400 Received: from mail-bl2nam02on0073.outbound.protection.outlook.com ([104.47.38.73]:10176 "EHLO NAM02-BL2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753214AbdEDMzQ (ORCPT ); Thu, 4 May 2017 08:55:16 -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 v2 2/7] iommu/arm-smmu-v3: Do resource size checks based on SMMU Date: Thu, 4 May 2017 18:05:34 +0530 Message-Id: <1493901339-14929-3-git-send-email-gakula@caviumnetworks.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1493901339-14929-1-git-send-email-gakula@caviumnetworks.com> References: <1493901339-14929-1-git-send-email-gakula@caviumnetworks.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [14.140.2.178] X-ClientProxiedBy: MA1PR01CA0079.INDPRD01.PROD.OUTLOOK.COM (10.174.56.19) To CO2PR07MB2504.namprd07.prod.outlook.com (10.166.200.150) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e7d5a817-530a-46a1-9877-08d492eccc7a X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201703131423075)(201703031133081);SRVR:CO2PR07MB2504; X-Microsoft-Exchange-Diagnostics: 1;CO2PR07MB2504;3:huLvR0i3olcNML4w3/Kt8ZyR2Meva5zfUaxdDKWj65fxtAO7Pd87M7qU2Qb9x4u7lbwL7xRsKNFF743nor27oDJWk97q+jW6wrYZ5RzBS/8xRy/HO0S2Lw+5xbP0sQsbkEZeFs0IkEp3GjxroPCiaDr7heIpRPl/a7f3pNEDFZYArAd9tF4JBZiCQgCVWMeZcUHTiULR/uN51+HTiDkclI5Mj7gSaRVoty67CaY1P6NH9kh1OgGfmayfjsUspP1Lui7sN3+8lgj87jevxo0/r+aAc6gEJ8oTjziH5z0utdsjmu9jfOQoGOF49hGxHgNGTWAqprXcRLQJQdBfcDbQvA==;25:91F9I418vk5Ciyf7WZQ2HilhgbyWsZ9uEaxo9lccvUftFSwv2xFn9za21Rsrqpege9V/9I5D8NeClDlgZ+y2tLD8KuitWkqYM5anfhVqbbyfuJpMcaFEk85Atd8MH9BHq/qiDnx2m/nR6zeXpHK6mgqWn+8SFV4NrWX+wFZxdbUJbJEKeDV/BFCIO+lt1FjErx/kOKP8yDFkpa3g6/1tA+RSiRqZ4eGIEcJb/uNFfkedfYAu2ptJSJXeLBS5UMzocR0aHh8nTlN+/pKBNEoi8RpUa16jbB7kSlwJzIFIwj+nZ3K3oGMFI74D8G+Et2gIAddmqCfvwG/OsfRDcNII1vtn/vj6vBXIqU2mt54rGPQmKF7zu5P7i3MEgmhbhdoiqsvZIDuqfl+g3pOGAFdWO4vs4cTjhgKbS2cHoe+e6Td5WfK8oEXyg/hHc0K7IKBppEKVCuoUjgp++kapWjB4pA== X-Microsoft-Exchange-Diagnostics: 1;CO2PR07MB2504;31:QtLsqgcyUWB7AMRznorST9ZinMzZyFjF+01DOCO5zJ7Iev5KGzXvVe18hgOi9X8qZJeoAhaBRcu1blwGmvS/SU5/F8PlyI9VyqJHfNaA4serNUQPzNEThfNeSaAo/AOA6MefK2EyKDKN4gZQDefpJ04fq4VcPNaVJ6oDSxqSmJm7aydi1RGiPDbbuqrZVsLC7gXsmu45YXzZKjYVFisqLkBMi0SIQKZEEl9Hb9lEaiN8hLVllD7o/SN5WbVTRIoF;20:Wsx6xO2HxMdPxI1U3F6DpJ6AKe6DMbAitiWt+8/in+K3w344hFyA7f3QX6P5UNPqJzKizuK4GwePCucEn6uksKAAQuI9wx7SZd7q7ObjAKDzaOsyzsvqrLW+PgYgVdXPtZiNdJmgRW0N1mmKuE0Q8VoS/pB1nke7oZ1sSQChLY5cP+G7ifd7y7oI2gVB1TKidlSeUaFvl+b5M5JYuh9g+ezOdhdWGQYG3FRy12FfhT1/K+WWf/FdkTkh4oJZUjic1msZulQlkl4+5WJRATWEH7JbLrpORSR81OP3bMulM3ZA27ZotSmX7ETaG5i3L0WjBQE12F1zrTf/lOlh2JlVMXNMfAijyEiW9DMbMpOEEo75rhCpgKNwlBXOsN0ATR6rejIzf0mb9FoIp7K2k9AtdtLbUpSCvBttQS++CYUuwwWYX+LshQbNoEsViLl5UuhvP1voP9PZKCDt1/hi3CxyFfF3Gbh+ZHPBLFIVzoMNSRZRX/7fgK/WnD/1Y2rHVpIcWgsNrbjDdHZigoUfKj+snHrbd78pQjrhobhLX7lvKQ9sb7az1lL+D9/cCqqBtL/Iepq++qEFo68RsMujBriNPhVnCuvLMzOl4Jnbyy9kNV8= 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)(6041248)(201703131423075)(201702281528075)(201703061421075)(20161123560025)(20161123562025)(20161123555025)(20161123564025)(6072148);SRVR:CO2PR07MB2504;BCL:0;PCL:0;RULEID:;SRVR:CO2PR07MB2504; X-Microsoft-Exchange-Diagnostics: 1;CO2PR07MB2504;4:DdfqQEbD1BPK9eMDrM4DUlqgN5CdLk0BVhYzpCPMqLI/sMaHeT53QCuf+qTqV/bpBPkJMEiqs8rdQyouuaD4q5k+jTFvoOPlMeThlrBDxRb/2nhZJln7/5ifPXoktYAZ6/sdPHuphcQFZhFxii+njjMCZQc1PaR7J7taB7oe2gTC6PECehKdBvh6J/MfkHOI21LWY3r3d6/MyMGqMCUYu991ohMc2PF6hPJb/EVN+XsKqLvkbpP5SavNlJLKZlyHY5fxQ8Je9godot9zBAXks2VG3Y71D5gx12p8wk2CMhblgnhPQhVg8DFVgVJwvYv9cahI7MnvP43HGy8LzfyykEci0j+U+1Uke0h3uqydKIvuwi+8ibT1gs5/5gghsrQUHItOksN54to1GREo9CAsjTZSJ9BIug11hkcLhCw+N10DtGp4yYpN7tq7Wpu9U3+XkXiI+PBiphQC5OEsKjKfkvMINkz629YEL7Rt0UHkw3i++TKUvAO1QZDqcfScP79NYwvQ1fO6GDIoq+3IoKlKAPQM75ywtMYVe4fLP7Ak5Npsfs0ecC+IDbsC+mHFKHyIdCw2ARZ/xa6/o4Wa5+VDtZ52MiHlGuYVDSdMKR57f6uj/FMr1sfXdwZcCJsSPigb+APIOEjIdbgFmDjNmZ0QsGEYhqhJIAvERcbSP5LhyPx8zZtFmKzW7SAiXZmjBhxN X-Forefront-PRVS: 02973C87BC X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6069001)(6009001)(39850400002)(39410400002)(39450400003)(39400400002)(39840400002)(25786009)(6512007)(48376002)(5009440100003)(36756003)(50466002)(508600001)(53936002)(3846002)(7736002)(6116002)(2906002)(50226002)(305945005)(8676002)(189998001)(81166006)(4326008)(6486002)(50986999)(42186005)(76176999)(107886003)(110136004)(6666003)(5003940100001)(33646002)(230783001)(66066001)(38730400002)(47776003)(5660300001)(42882006)(7416002)(6506006)(2950100002)(110426004)(42262002)(309714004);DIR:OUT;SFP:1101;SCL:1;SRVR:CO2PR07MB2504;H:localhost.localdomain;FPR:;SPF:None;MLV:nov;PTR:InfoNoRecords;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;CO2PR07MB2504;23:lllYw3tx7g7MQBHVfcznG0N1Mn1bkueFDJf4h3Ike?= =?us-ascii?Q?rf09lyRB7idZ+0II0oMyysERFe+O5qIpumVAF7byyDS3xhiRqBGcI2Sh3dO5?= =?us-ascii?Q?StFqDiFv2EnX9eDcO3MfT6kH/3fF7cJA6hLPvuKM6/wUebT5PFXKnjNVXziJ?= =?us-ascii?Q?2FPK5eV+EATcSUaRERMRvIiG+5dsTqpOJauBv7TqizI+TL3r/Zwriid5nq0L?= =?us-ascii?Q?ILW29tZmtqwOt4IUFAUlb+aJjxHqG7BvQ1f3+hJxZIrRSTI2qLm5V0ry1tnu?= =?us-ascii?Q?qIXhWav16HTMsqGTV9ILKMeW2VZ6L2IwDfR8jEEmmdC7U+/vLUOuXVCZFlpl?= =?us-ascii?Q?h3Xc80vXAOb8+0OocUTy9ybaJQ43keHmBu8dZB+hxa5zQvFldrbPn1w8LaQg?= =?us-ascii?Q?ZdVBbfmgrjkL690fYbKifzL75c6srajrozy5GCwYiNpYXLoZ3MSJLb0MwXp3?= =?us-ascii?Q?m8ZYPFcmZznIIj6sPo4Bim7bQqRKPcr92cngLoj3ZmvgUla8RIJ1G9XXKpM8?= =?us-ascii?Q?aqICcKIIbbtSHDgfSfBwKGqwChHQfZYxtbi9Z42di2sbgCKEkn8rmjrEfy8g?= =?us-ascii?Q?FVVFtudc5kEWzI3tJ48cjqu6eWdOdCbl6X0w/21GaAAhDJSmmHNI0nD1BlCd?= =?us-ascii?Q?UozVBFEjhY1WtvWmYjsBcny8P6z7vYC6pkCKbHDXTMeDGX88DUrS3t/wOZZh?= =?us-ascii?Q?8S776kaJLra7cZQ8gUxBYzMsyUwpxp+rxosoDwuerEGhJJ815f8hb+AvlD2A?= =?us-ascii?Q?PAEocJauDajz2bFT4WAu0169/1/lyz5XHuL7/qjnWrNWPFCJ9YKG5XLwQdkA?= =?us-ascii?Q?nx2Cu78KQltFqSpoHsH0wOxb5Atsn52NgQda67Iw5fBdvjQKtmaf6O7AGAK6?= =?us-ascii?Q?k4BQA1tOJ2+XnqtT/fLTsm8KlLWizTdDMACBvxj3BwWC8iS8a842F2yTAM0L?= =?us-ascii?Q?m2hgBVHDjheiNfEF73LYZ6kjqaAMG+4cmPnXCUT54PVIXQEvoRn+cxqfc9L+?= =?us-ascii?Q?kz6BHzrmInxo/n0Z7nLIUJk7NL/1EFv0DGQ/l9Wia4LoUrJeTYgu6PVJNL8y?= =?us-ascii?Q?LQjiedOSMIQT6IdXcGNNIvQwOP31dIyejGKxVbxjSlCsSED0TXlnbD4C7RW1?= =?us-ascii?Q?jEYZi5OzKj2n8Zm2ffdpoJ0ybDildH6vuwxozIOQZms8HR9j7JAas7p4U5MS?= =?us-ascii?Q?ho4AMcIJx0fCR8=3D?= X-Microsoft-Exchange-Diagnostics: 1;CO2PR07MB2504;6:4eQcosqz5QD2F1mFQjt1ikcbJm8tE2SRqIrxwvMGP9gELgSKOhr+Mb97eUryKAgE/yIJFKcLgbBpLEmHdeKIQz7AmzC9eHZe91cobFeDmeV54oq/o3wH1Aa8Zz8RFJK0eyn5wULFYLz4Ypgu/cYmoqyUlxEIGlRrFuCVqiWbA/vNQ7NWXL5zXymXTGpz7MlMAVlnFaQ+HNxTCD09dCs+E/SgxqIb6HZ7FHD6l3NH3YIwV4Qzvf3LRLjsQpt7x7xV0bD1zZReGqMdtj6WdDlce2LJwmgcbwwD+T3XN0W1WrSJkgRBLuZ+7c72ms7Bs4bfWHfAVXTuOgRoAIX7oxF2BrFOeRHxPtng6aWkRrTdwQ7dvw2QzpaOhXHTksUMcepd944EakXKZWZqIQtLQMRJj1fl7F+2PQTZXJ6X2Q9OYabtHefQi7uf3Wy385YHi6zEKO3DOueRmy7s8ktkgkacYj1kuP1C7tL7wltdLyrYTpk2j6bzu4yI5zkROIRXLPlwmoQR/CRPdO25dl8eCsGx8A==;5:CYsigKMX2KUMdT7uYsKjk7ne6/I/8/r4BVXckb3WqejMr2uAFpYk/po8fLkLjpjSsZDowBi5oM+TjK2dzILB1NC7YVxCozR/wqEvwqCLFLXfvTbYHI7Ykz8gTKa3oaYwfjQCd1qe8CmebL02kPGgPw==;24:iY5bDQ8WSzajWWkCw/Q2mEPhZKhOXfTR87mcCjWxAdTkDTqpf5tril7j/QaBKm6/MYpbNIoy2EMWhvF54pV18w2qVUtuxOzZBI7s5dhYHT4= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;CO2PR07MB2504;7:nEv0pCjU8sJcoFTyLJ7giUe9LtVL3mYU5Sz/FI9WLwbXGPRUIGmLMxA9Ycc9RbFGyAi0SSyWI0lhP97KJK1EemMEHHlVtDoAJzwoG3IoUw5STsc8f+oc/tgRWoDtfS/i2ZyAnvvJgwVSA6EdEgjfLvs4Ocq1Rlf836jUBR6jt3LXTmf38BBRkCuR5FQloeGFCmVHPTL57YSQ/dAGdQsaA+Lq37KFqTrFp47ed9l217m4gDkauG16hdAYmi4fjk/Vy6el/RjbWuJYyp3GfE5FrYJr01iows9Xgjt8RagoFzwjdNk5sRDf028uKZFkDSXU++yVehDFR2B/gBr6w6c2PA== X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 May 2017 12:55:05.2691 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO2PR07MB2504 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