From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751722AbdE3MYI (ORCPT ); Tue, 30 May 2017 08:24:08 -0400 Received: from mail-co1nam03on0044.outbound.protection.outlook.com ([104.47.40.44]:56160 "EHLO NAM03-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751633AbdE3MYB (ORCPT ); Tue, 30 May 2017 08:24:01 -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: robert.moore@intel.com, lv.zheng@intel.com, rjw@rjwysocki.net, 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, devel@acpica.org, linu.cherian@cavium.com, Charles.Garcia-Tobin@arm.com, robh@kernel.org, Geetha Sowjanya Subject: [PATCH v7 3/3] iommu/arm-smmu-v3: Add workaround for Cavium ThunderX2 erratum #126 Date: Tue, 30 May 2017 17:33:41 +0530 Message-Id: <1496145821-3411-4-git-send-email-gakula@caviumnetworks.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1496145821-3411-1-git-send-email-gakula@caviumnetworks.com> References: <1496145821-3411-1-git-send-email-gakula@caviumnetworks.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [14.140.2.178] X-ClientProxiedBy: BM1PR01CA0081.INDPRD01.PROD.OUTLOOK.COM (10.174.208.149) To BY2PR0701MB2024.namprd07.prod.outlook.com (10.163.156.139) X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY2PR0701MB2024: X-MS-Office365-Filtering-Correlation-Id: c7c5e70e-b4ab-46d7-a040-08d4a756bcb4 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201703131423075)(201703031133081);SRVR:BY2PR0701MB2024; X-Microsoft-Exchange-Diagnostics: 1;BY2PR0701MB2024;3:dmEWQ+UrW5at3SkUrA53g3ZU0jCE0ugEdBimFjB+s8BCGzeTpyir696+2y193l+dprpIoCmseSPgEneWUcBo89ndMDOqyvI4dj4AluyXkgsGjYDd/vzZ9SUii16+i0WSGVmMpGTIEcWzjQqRetExMZgJE8fvjJInrz7f+Hrdg8ilKaXTnjCl/0gY7rplDJ4MsxWZDzZpraf/vnHUW5MGXiZqk/bHE+9UUenH0lSMFUBoan0vcRgMhHljjJUDcpoeBjj0GHz5u11hck+XSWFnONZjpdffMfiBIc6AaG8AIQ5AW1Z6iIignb5UJqxmSMNq0agrMFMB51wwqZGeum1d1A==;25:FUyAwpq11kXR+9pzPFlIcd+dC1/EvDXvyJaZ+IdKQwt4iR1+sqskVfwYHI8A4odIflLS5Acbc9A4+GgUrC37wSPKnqrtqAIopEfLNkzArs/qi/5vYLHZTqIwY9IZYS4yKjlML79EVr5o98EFJTKx4RVjbdQbslUDFsOl4Y2jHN4/iCdOpaOGIsUTqUy6cKrya+V6M+FFM048RDS7vzPGr25VJNYPOVoTCA9z2CSLBgklQ5Qi8jPXqj4vLKHTohIcx057jLNY155F0m8RKTyAIjj1trnCbiVnSpSZSp3ZlWbLSoDFg/hbY3Kv76rdtCm+pzafBs5KRkl2xTQinBfifc9bH/d1uDYqoxt9tToY6UgpD0VfoGTSYEPEJQVK60xy/uvYyOc7vsrf8d32y/OaXwlsDwCtwTQ4oHs6GQro383RaFjasBBxiwdyhj2sJdxutMWG1f83bd/Lz5pecRC+54dzoedTVkyAFOpTlQ23drg= X-Microsoft-Exchange-Diagnostics: 1;BY2PR0701MB2024;31:WWFSWnUZ5V8fsQ7yY0IEfllYihKSBFt1Hgsw5H2z2RkkSuBmg/3SPbN//3GSR3ID17g8xDgM77uCVsI3xNJY9Y4kwUWc9/t4rVOY5UYy6kN3uBssGHhhaJawDLrjdOXA8cSXexGiCzERunttDGlb5L5JwPJsLpqiH1tYxfCoNem+/zM2hEMR0xJao3woTwP9sqOuH2n3q3rv/VpRCQclkMVe4IS/Iq9zvSrmiDzxKoY=;20:NZS1mp5d7x0IiUjNISMDqrtRkv6JvlvTaA+ZzjgXORC14U3wm+MuFyxM02LS3pVKpeo1DE89BXsRw+3T2o61bbTGbAWUfy6GpxuKhj+SdNvHhbOIY5T1QwFjLF+uk+kV9LqJwMOre4OFJr31vVrTfqN0Ih8qYzLR4UieiNNOMZLnkp1UDF+tB10CQwvIdoLO0dmjTZHofU8tyYaz6p3E0VUbt5DxIrXBdpA6CwPX7AYHLwYdhvQVTxNSaFdBkEPIvMCOYcDpDhkg8b+uC3BeweMj4L8+v16Hj/hNbRnx9d6RzO+Zs+J/mVbqUCgAFgraU+mDpY1XYt7VkOK32MoCJItaL8Ew/SyVaOUwt8wdlYVxARmflE1VnPZ3xoeEEYd10jaohS5l3QzvTNEWeS0e9BrYHn4XqViLJvUr8UGm33iskuh3lS2JkrtaT/ZdN1AxTRbLn+Nq3sC1BJwMKQspr2M9tRsN4BGqhGvxyWzII/6JYyFi3UHYUR3upDkYL/Qk8gSfve9ZfpwW8ZODRUd3QkuncHH25b0imWD3j7C7PgeZ+vzcpJAZNMmpNDqq4KgAQwX7LK/QzwAo6fOsS5FxeIgowrd3pkCwNWpsfbx3lko= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700073)(100105000095)(100000701073)(100105300095)(100000702073)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(100000703073)(100105400095)(10201501046)(93006095)(3002001)(6041248)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(20161123564025)(20161123562025)(20161123555025)(6072148)(100000704073)(100105200095)(100000705073)(100105500095);SRVR:BY2PR0701MB2024;BCL:0;PCL:0;RULEID:(100000800073)(100110000095)(100000801073)(100110300095)(100000802073)(100110100095)(100000803073)(100110400095)(100000804073)(100110200095)(100000805073)(100110500095);SRVR:BY2PR0701MB2024; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BY2PR0701MB2024;4:49nzW54fRrYQydTmYX2oYOK5fNxPqzt+7Orzk+ie?= =?us-ascii?Q?8xoqUrMGEwksg0PuezEIGWvFbAW+odVxiFaGw5I8+GUr1Tf5HKtRs90OSTPL?= =?us-ascii?Q?6ylchr2OAKY7wTrdxl5UdYyVvoZaa6R51ssgiZi4pbt2bwaLAuzz+sCzZvG5?= =?us-ascii?Q?/ZZabTh0CEDmWxofKe+4vVRb9/vzuOL6aRZ/9UgZkDYsxCsOsiyU4ZWo1eWC?= =?us-ascii?Q?iF076gNjIH11WdsUgjoubjYjgbSOI2LjE8G0JN9NivQqsEJijpT5j1NUzvKD?= =?us-ascii?Q?m0ZPbnq37+WXAWaeozTt5huVEHt9bjC4yJClLAqUN54D+DPqZ3Kyuu7/hD2a?= =?us-ascii?Q?VWc8tcrF3X+1VQJ0jYgCWjfnpyAJlJDRBESuhjIz04Rrfxtxdr350vS4B/iZ?= =?us-ascii?Q?fhhbAZv/cSj5Di+caGHazho3syWfdarcqw6ry1BuVET3DRRniXGUZ6/Hl975?= =?us-ascii?Q?eYQ23V7mpTGelyr1y18vmtwvP/kJY+YJnNcLMAnpPAiFWiR8CNEp4+GBpVtA?= =?us-ascii?Q?ORwNvQNyz/e/S/4SrLjm9kCvpVu9euc2l/NFHdFHix8L/KKd3deH0atMqCWA?= =?us-ascii?Q?6QovAwGTFYixAYG8/wGFxS7L6CQygQE0BYkXjLVPCosMCGUfZWSw9wmcYQjQ?= =?us-ascii?Q?9Y73ILycXrjFOuy/FtK4kPrEFzorA5CwOpTJgqgetaI81nIliS2BOJ5IeGi8?= =?us-ascii?Q?7nxYrGaZ6MRTIhw1YBsRHsW0Br2jDMQKlB5hazqQsPTPHuUYYGxfkeuXxySa?= =?us-ascii?Q?FLk0qnoCwQ2fOxjSXQ3uPFB1J9VbTJA/IC/N6v5zvjPCeqJCZzhiU18Te26O?= =?us-ascii?Q?inUgZgn9um8/9pwj612SM1MH5MhmlxE70aYYTcL0J7X1LvMQfD7qXj7am2kV?= =?us-ascii?Q?kYqAW3W9tIoTWK8UDxzHFq9lofIwGC8yK79e/arke+wsLiCySJ8Oj207Jp9c?= =?us-ascii?Q?xTi2ryq0BDjVdCxbASTNsvW67Shs+33lFRciEt3xXcUddQK7Eml4ri2BSvd+?= =?us-ascii?Q?6T3phX1vFB6btQ8z0DaMmu2PIQZb5p7xMgf3S8I/9HUMmCUOpltI1VLXYiKr?= =?us-ascii?Q?gtRQqYUuUytBmiG7PSmEEONO1yinEiwKm/IwmAcCnbrMYP1QVF20qbeF6OPm?= =?us-ascii?Q?L0Yp72ZngU4=3D?= X-Forefront-PRVS: 032334F434 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(6069001)(39840400002)(39410400002)(39850400002)(39450400003)(39400400002)(3846002)(6116002)(8676002)(5009440100003)(5660300001)(81166006)(36756003)(478600001)(38730400002)(6486002)(6506006)(6512007)(50986999)(76176999)(6666003)(2950100002)(7416002)(42882006)(7736002)(50226002)(305945005)(4326008)(25786009)(47776003)(42186005)(33646002)(230783001)(110136004)(189998001)(107886003)(72206003)(53936002)(66066001)(48376002)(50466002)(5003940100001)(2906002)(110426004)(42262002);DIR:OUT;SFP:1101;SCL:1;SRVR:BY2PR0701MB2024;H:localhost.localdomain;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BY2PR0701MB2024;23:psZItPTmW0Pbx6gS7Mjc2WXGEHMdyjWBpT13R2b?= =?us-ascii?Q?a2Pxm6UVp3+9SwAGkUnTekzEr/mI+IUNuOWXKLhZeAY/+tbh57g8MHhKu2Lm?= =?us-ascii?Q?gdu/97T0i+AUSFV7yP4bVu1Jz626n2g5fDWBNhYmjuisiwY8WFjLejp7x9or?= =?us-ascii?Q?RGr2fSjdfjv/MUuDaztHD9cw0NxR86RwMhfJ+qrEU4PgzD+le76gEfSrXHaa?= =?us-ascii?Q?+vMHm/4Fn4THN+4JVKI/7Q7TWNTCDI3/D0O4LFjvU4ST1lolyZUs6rso/LKl?= =?us-ascii?Q?3WM4nvhcsYxSvOx8JhXE4ehVRN91hnrvNpY4/SCGr1zzEtXmu0nrDrBEgAkr?= =?us-ascii?Q?Ytml6Og1iKSX8krZ5R3YbCTAnVvW3LPaTsFGNVEAm+NrvAxd54Vs7/TFYnMY?= =?us-ascii?Q?yOCzjgkS8UVO652wTqOzghUFU1qJS14IsGqKVTiYkgp64agbE5m71Z/gJ3sn?= =?us-ascii?Q?KVVw9TR7nU0UwgC6J+aPba8LuARlyOk5vfSimqlpI2rfqhcP1mm9Gy6qeBpg?= =?us-ascii?Q?wInVFjcaD2+UjDX1j4a36EgZOJgMXIaHCB6gwsWLlEu/8KXc4xKL6hq7ML+v?= =?us-ascii?Q?E3D4ypQWwijLeNga+JnVB+LUKQjdw4gBZsdEtooorfYOtF/wQepLtaBY3Ae/?= =?us-ascii?Q?1C9EfkaPyQkFoENyKuKrjj/cr3BbK4o5XJ26k9oCENHKVqo09o2ZtPDVyzTF?= =?us-ascii?Q?lKBqIYRjPbPe+dHQzO5ebgfWRxpri7khS0i78OcVtZmA1G44CU7iDL1TzRr9?= =?us-ascii?Q?f7K65SvXyUMDIv9uoFzY5nejwq9+rbPLkmW9tII+N1EWAhsbrnPH2UayWkgH?= =?us-ascii?Q?Y7UouX38wrdpIue9iNTEUXzI6hq1/5/rLEVZe+Phca6ylzBx2Oe2YCKu+78x?= =?us-ascii?Q?UGVylfXkRx3FdvGTi9pd6OWCmK3r6FBWZJlW7X+DZRwNu4CRZCcO8y+YWYKj?= =?us-ascii?Q?nw8/A2rh7/7M9PM6CzWQMcpqAVQBPXfKarYao91Pd9AeDr6dpEWFokDsV8OE?= =?us-ascii?Q?VsRtq/L6dGvbh4XokOU2UhM+TISDglkj+mCBejYQs22lJJWzxt25L5h/tmW5?= =?us-ascii?Q?KenFTnQ9EhXsNfHWqup61+ykDJtSilhEquhFhmSgPl13cQRwqsiZFYDspvoJ?= =?us-ascii?Q?AG9yGIovUSyBLnX0lLSSdliMDnMYtLc1UqfC3wuNwU9vjxB6E9t1x0uKFUBl?= =?us-ascii?Q?WU0DU9JKNZCC63rI=3D?= X-Microsoft-Exchange-Diagnostics: 1;BY2PR0701MB2024;6:N1h7DIgGHQCHZv8g809JsvQkgPb2bUTB94egzVweOZHjL3JRl6b269xlvoPO3+KLcUST5DY7kK7J9djyr0F/8LP1vJxnh+InR0A2asnTEh8zKgQbhwGUE2LtlUnPNz0qxiJ4MpSyi9l/EDZpQ7/sWj/Nvo9m6s1y/fZ3+dgxHcc64NV0FR7CciqeaQXYFQkmLorErIMbxfYiFQ575ngXhNiZICGRHKYAzLSf3q+FYjd0+j3cvhnEtU8sjvzl8za4KXQtq4pZEf+mQ+Z8+SZTs2wtoVkam0Nc1pZ38KbmkEz2W1MPBAXr2wjZKytX56w/V5WBWyeHLwA6XEOvQgYv0Avj+hNbNVelpCfC3cDVi31YwzmVcrGXTQxdVMUHizRUDTTr+4SbTQOvi3DiDRl818xQ9svZhNln7nYD1NohKPNuVuijc+W3GlV8zp4b8Iy+mH7SwCHVAaX/ZqByirh6meZzMrtRa1M099FeOIsVwncnIVcjdnwHJVYVci19D3/7XP43rButDddtEuUx3vJvyg== X-Microsoft-Exchange-Diagnostics: 1;BY2PR0701MB2024;5:VmyRl+RYqHSWP1UQFJrm75xwgph/cuZinOVWnWpYr2MnVp59bRVLYIPDkZ2MZed5WQ5Ww+gWYsx4leQoARuZjyx7hzbV5uVhjKvJimEqKJF1503uhLsGiTOYP86RqCwmThKw7BgnKTmHCLz1xVKu76k/BCs4l764ES6/B4DkYUVfch+rKK4vfGD/hlC7ZN3jXlJXj7RXvxroVKUIgn6lX3YFsz4CXuZNdnumyTWLJQs4GD89Sql9BKdgiNIww/cfiSDqlRuwYo1Wk+BeD+S8pIxaCslKqRsFLHy63gX76ACTU8HGS6ADith4max34SHR2xLf70nAWso+gfXrBOTV5p1QSujjGs/k1CisVg87LLypejKZs/TVgg2MYH4LtYlUHQ/rldfAjHIQZbCYDZcL8PGupE6aKwVbgScijiVgn/WXRuEgJjs6Rw1UUDGRD/brvEfou1TEVe1KGQRNzgWDvk+/B6hpWm205tg4l++dNhL9OWwKB5tNz+Y9S4Fr6h1e;24:w6jqmaR8QcL80uqP801A1ICBBMLF4vNdbjpAjsrmDxYTNhSRp+RNJmMWnNqoyhxR7K9/ZeVwf/CgsBeiG1Y/YEcXdThvg40AI4Oe43PHnYM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;BY2PR0701MB2024;7:fRvozntdg3iy8VC0JzdegKjlFbaUibKzILenYv6Q4GAW51t17/xICjxJV7QDsTASGQxiLcmunbfDsarWapvhZ86koziU3v+JDUhJxBXbeBnggV+pZsDcyZvGUPmLHXzEvEdCHlVB844u0sFpCPmyVU6X6cQwcptUgRIMAw19oeig4fgcShGT3m9PiGiq26Emoth4gxP3EyeAE8a4hY/oP7buhxJm/hovVBZpWdBUrjsC8AeDEB9hjJX3f4d0eRMLaKA6yrzVLp0zGyFeXTgcHcSpLgd0PAvamHt2zr8f4nqAmBgGc23fC7zlMKA4yn8iFgMCZq7qg1CX+nPcPpP5uA== X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 May 2017 12:23:48.1997 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR0701MB2024 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Geetha Sowjanya Cavium ThunderX2 SMMU doesn't support MSI and also doesn't have unique irq lines for gerror, eventq and cmdq-sync. This patch addresses the issue by checking if any interrupt sources are using same irq number, then they are registered as shared irqs. Signed-off-by: Geetha Sowjanya --- Documentation/arm64/silicon-errata.txt | 1 + drivers/iommu/arm-smmu-v3.c | 29 +++++++++++++++++++++++++---- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/Documentation/arm64/silicon-errata.txt b/Documentation/arm64/silicon-errata.txt index 4693a32..42422f6 100644 --- a/Documentation/arm64/silicon-errata.txt +++ b/Documentation/arm64/silicon-errata.txt @@ -63,6 +63,7 @@ stable kernels. | Cavium | ThunderX Core | #27456 | CAVIUM_ERRATUM_27456 | | Cavium | ThunderX SMMUv2 | #27704 | N/A | | Cavium | ThunderX2 SMMUv3| #74 | N/A | +| Cavium | ThunderX2 SMMUv3| #126 | N/A | | | | | | | Freescale/NXP | LS2080A/LS1043A | A-008585 | FSL_ERRATUM_A008585 | | | | | | diff --git a/drivers/iommu/arm-smmu-v3.c b/drivers/iommu/arm-smmu-v3.c index 4e80205..d2db01f 100644 --- a/drivers/iommu/arm-smmu-v3.c +++ b/drivers/iommu/arm-smmu-v3.c @@ -2232,6 +2232,25 @@ static void arm_smmu_setup_msis(struct arm_smmu_device *smmu) devm_add_action(dev, arm_smmu_free_msis, dev); } +static int get_irq_flags(struct arm_smmu_device *smmu, int irq) +{ + int match_count = 0; + + if (irq == smmu->evtq.q.irq) + match_count++; + if (irq == smmu->cmdq.q.irq) + match_count++; + if (irq == smmu->gerr_irq) + match_count++; + if (irq == smmu->priq.q.irq) + match_count++; + + if (match_count > 1) + return IRQF_SHARED | IRQF_ONESHOT; + + return IRQF_ONESHOT; +} + static int arm_smmu_setup_irqs(struct arm_smmu_device *smmu) { int ret, irq; @@ -2252,7 +2271,7 @@ static int arm_smmu_setup_irqs(struct arm_smmu_device *smmu) if (irq) { ret = devm_request_threaded_irq(smmu->dev, irq, NULL, arm_smmu_evtq_thread, - IRQF_ONESHOT, + get_irq_flags(smmu, irq), "arm-smmu-v3-evtq", smmu); if (ret < 0) dev_warn(smmu->dev, "failed to enable evtq irq\n"); @@ -2261,7 +2280,8 @@ static int arm_smmu_setup_irqs(struct arm_smmu_device *smmu) irq = smmu->cmdq.q.irq; if (irq) { ret = devm_request_irq(smmu->dev, irq, - arm_smmu_cmdq_sync_handler, 0, + arm_smmu_cmdq_sync_handler, + get_irq_flags(smmu, irq), "arm-smmu-v3-cmdq-sync", smmu); if (ret < 0) dev_warn(smmu->dev, "failed to enable cmdq-sync irq\n"); @@ -2270,7 +2290,8 @@ static int arm_smmu_setup_irqs(struct arm_smmu_device *smmu) irq = smmu->gerr_irq; if (irq) { ret = devm_request_irq(smmu->dev, irq, arm_smmu_gerror_handler, - 0, "arm-smmu-v3-gerror", smmu); + get_irq_flags(smmu, irq), + "arm-smmu-v3-gerror", smmu); if (ret < 0) dev_warn(smmu->dev, "failed to enable gerror irq\n"); } @@ -2280,7 +2301,7 @@ static int arm_smmu_setup_irqs(struct arm_smmu_device *smmu) if (irq) { ret = devm_request_threaded_irq(smmu->dev, irq, NULL, arm_smmu_priq_thread, - IRQF_ONESHOT, + get_irq_flags(smmu, irq), "arm-smmu-v3-priq", smmu); if (ret < 0) -- 1.7.1