From patchwork Tue Dec 5 15:37:44 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Horia Geanta X-Patchwork-Id: 10093259 X-Patchwork-Delegate: herbert@gondor.apana.org.au Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id BD6616035E for ; Tue, 5 Dec 2017 15:38:56 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8BD5F288CD for ; Tue, 5 Dec 2017 15:38:42 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 7FF8E291D6; Tue, 5 Dec 2017 15:38:42 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=2.0 tests=BAYES_00,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 52854288CD for ; Tue, 5 Dec 2017 15:38:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752592AbdLEPik (ORCPT ); Tue, 5 Dec 2017 10:38:40 -0500 Received: from mail-sn1nam02on0084.outbound.protection.outlook.com ([104.47.36.84]:2268 "EHLO NAM02-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752339AbdLEPii (ORCPT ); Tue, 5 Dec 2017 10:38:38 -0500 Received: from CY4PR03CA0107.namprd03.prod.outlook.com (10.171.242.176) by CY1PR03MB2363.namprd03.prod.outlook.com (10.166.207.150) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.282.5; Tue, 5 Dec 2017 15:38:37 +0000 Received: from BN1AFFO11FD027.protection.gbl (2a01:111:f400:7c10::175) by CY4PR03CA0107.outlook.office365.com (2603:10b6:910:4d::48) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.282.5 via Frontend Transport; Tue, 5 Dec 2017 15:38:37 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; gondor.apana.org.au; dkim=none (message not signed) header.d=none;gondor.apana.org.au; dmarc=fail action=none header.from=nxp.com; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; Received: from tx30smr01.am.freescale.net (192.88.168.50) by BN1AFFO11FD027.mail.protection.outlook.com (10.58.52.87) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.239.4 via Frontend Transport; Tue, 5 Dec 2017 15:38:36 +0000 Received: from enigma.ea.freescale.net (enigma.ea.freescale.net [10.171.81.110]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id vB5FcW3g006755; Tue, 5 Dec 2017 08:38:33 -0700 From: =?UTF-8?q?Horia=20Geant=C4=83?= To: CC: , Mihai Ordean , Aymen Sghaier , =?UTF-8?q?Horia=20Geant=C4=83?= , Herbert Xu Subject: [PATCH 4.9-stable] Revert "crypto: caam - get rid of tasklet" Date: Tue, 5 Dec 2017 17:37:44 +0200 Message-ID: <20171205153744.31158-1-horia.geanta@nxp.com> X-Mailer: git-send-email 2.12.0.264.gd6db3f216544 MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131569619166647469; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(336005)(7966004)(376002)(39380400002)(346002)(39860400002)(2980300002)(1110001)(1109001)(339900001)(199003)(189002)(316002)(54906003)(2351001)(6916009)(23676004)(305945005)(33646002)(81156014)(81166006)(47776003)(36756003)(8936002)(8676002)(50226002)(104016004)(50466002)(85426001)(8656006)(2906002)(4326008)(97736004)(189998001)(53936002)(2870700001)(5820100001)(86362001)(1076002)(68736007)(5660300001)(77096006)(966005)(6306002)(356003)(6666003)(498600001)(106466001)(105606002)(26583001); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR03MB2363; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11FD027; 1:pIDwWxdHdP+sRvK/op60ayxC+j/ow8gz4KI4vxOnKWYMgcBIwl6coLXHbVK5oQI6yI1RqAAQkadwC9Gp/z6cTom8KS2YXxOm3HuHsTpchD5jOPeiRQdQcHjZyGA06XcX X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 2fd05912-463b-4a26-f34c-08d53bf6401d X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(5600026)(4604075)(4534020)(4628075)(201703131517081)(2017052603286); SRVR:CY1PR03MB2363; X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB2363; 3:auXbecZziD4vuPBOE142zzdcx5wLAf7/15xM3tRvI1I+PSUWDLFKdV4d6uZ6oJAj1+fkSgzUDQgsZHVgkJKGg7TvPxOO+RAs3aYYsi3XGbHqj6CaOco5gHSXeEGsM5iqYdP0o2IG9WX4sMh+CHyS2uP80QNRq4E6ws46XCjhyYeFZ/EUdBqTIXuVmZrTCwLhKshfE+TTA7+xpt5Z1WXXKPjX2iGDsTMksRxxmHxmxFTgD78Qqze3Mog3hzor3yA44ZKWmG1eF1AfV6CR9SGbQqOJirQ9MoV4wiQWqFk8Hq2DfXYKk5sM1bwIKmNhWASWBww2h1A77R0CUBCvV+5Q4uk4cBB6d1Bc55mnjevJ0ng=; 25:c85LUflvrh0MJXMi1iHRPuYhFDdGNMB9n61frn6j4xWK3oyifR4211L/lWFGXDOEpq7KHaaXOC+7rW5D/jZtKbYc2L6LcPWxsmfpD6lUYhEAnmof6bjw89W87sSdowGPO7LIwC8eDySoCDTOxVyUVISC4UfBVvAsKCnLkmP1e0DQay8/SFdObSSf4YngLHQGbmB+ee8RaUO8GLxLFYy2BAv+mEWDlT1M6Hej+dKb5lofqYHWc69zkqZPVr8YqJQFEwtBqPUe3fqq/l1K1j+t6v4hIY5PctWEUmn4XttsAOTQXmMEJWlO8k4XHQRCaUOxuxfskc+HzRhuJ1cAWuV/0g== X-MS-TrafficTypeDiagnostic: CY1PR03MB2363: X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB2363; 31:jBoYNKEJPAwEVCJNFBqA6jqwdI3Qm9yILwaVbzskO9RKwdxg48Wvl7bYl0/s3R+iYLDwA958EYl02VlykMXJ6kNNwEX6Zu8fjK++lXWcXNLHGI4UjKecQDH4AQOU2YlNWiWvruR9ZjDm4i2k1dcRld/9fts1wv5XdjRg8jIs2J3x2htX5+tOF/BU8jb5k3M53X4JGaoH54Ck+cvsB3LSwFTb7zS2fhZ7yluZh61Ihik=; 4:3HROc6G8FK4HNNpG6xLsmywCfIUktbEG9z0vdHfKxy12aM9XIm0xonBE6QqwUDvHIKneBAjzguQuLS75tuqog2m+UtEDZfABU1a/B+S0OqnFm5LJxGlcIDtha99qQxGzHi2hwLGHNiO/8PVhZXAmvT4ocY04AaVbE7ZIizCPjkSis/rFIPuOMKyMORe157XIpgbOtnEYrOyZNSogvXPilcCIwQArCjcwkUWLtkeif8rZ163hliCQst12dm1+bS8l6e24pofdSbCZRJEJkC7BbO6qRD8pqyQP2VCl1IKZC/KGOArYl24lqvRY03iYOUsNS2hlw2labb2g74yJTr1xwfk6t37FGx5wPKMQumj7bK5PjyRj64TJlMzygWm4Y4blHVnhfMYO2wW2NsOBEer+8fljQSZO6U4cXesKo4r3jRw= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(9452136761055)(185117386973197)(278021516957215)(21532816269658); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095135)(2401047)(5005006)(8121501046)(3002001)(93006095)(93001095)(10201501046)(3231022)(6055026)(6096035)(201703131430075)(201703131441075)(201703131448075)(201703131433075)(201703161259150)(20161123565025)(20161123561025)(20161123563025)(20161123556025)(20161123559100)(201708071742011); SRVR:CY1PR03MB2363; BCL:0; PCL:0; RULEID:(100000803101)(100110400095)(400006); SRVR:CY1PR03MB2363; X-Forefront-PRVS: 0512CC5201 X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtDWTFQUjAzTUIyMzYzOzIzOnBmVy9VMTFqMXlhb3VuUnVhMnY1Yk1Gdzg2?= =?utf-8?B?cTlVblZLTmIyaGliOXpEbXpnMmZSVStnQVp4UTRPUGNHaWZLR3VTZU5VT3NM?= =?utf-8?B?TjJyeFp4WkhpbllyZmZVNHk0TUJ3Q3kvWkJUSGo1VUMwa3VSSmZBN3kzNEpS?= =?utf-8?B?d08rRGYrVTRmMXV2ME9laTdDY2c3Y2dWSWxSR0RGc3JOSzgvbm95Qkkyb2Zs?= =?utf-8?B?YTUzcjJ3ZEt4RGhtSDJUcFRkSS9Oenc4ei83U2dIZWJUQWh6byt6UXhRdzBM?= =?utf-8?B?ZVc1bGNPbmUvV1hKWVBUUmdKcFAzZzdCVWFYeU54ejJkTUdDYVI1SlRuazNo?= =?utf-8?B?dVpYTWpmUXowUnBKdVlWSWRBOTRXTitXbCtSN3BNZXdwVXg1eldLYngvQW5X?= =?utf-8?B?OWVCblJSQVhJTXIxQytib2dyK0tRcjlrVXRpVE1XQmsrc292bUNWZkY1R2Ux?= =?utf-8?B?ZVZQYVJJam1TS2JiZUZieEY4UjRvS2d6Vm5yRGVBeitaMXdYbkdXaDNEOG1n?= =?utf-8?B?L0VzcncrR29UQU01UVFXSFlCdjNGc1FDTGhIQXg1b3gvVkIySWJybEZMM2xF?= =?utf-8?B?S0dHL3U4SmsrTUk3SjVpZWIycGlINk40REl3ZVFiMWxOeWlSMldPZlNTQmNS?= =?utf-8?B?WXpwVWxDV0hwT0d4UEFnUDE0UitDUkVYNTZWOGVFWi92c3dEZUZIYWllU2s2?= =?utf-8?B?cmJZL1pLUWJJYVA5SmFkalFRNXBVbm1SNjFERVVQL2VBazZVeXQ2UFE5WEtZ?= =?utf-8?B?NGhhQ3NVL2FHVDJaSUFKaHZIS3FFVVdxNHZkZjNqMU1MdTZVdE1GYTExb1NC?= =?utf-8?B?d2t1Q1h0ZDlkUWk2RVNIZkIzMDhEc2hqU1hzMmdTYWhXTkxwRGpRQURBa3Ey?= =?utf-8?B?ZkNadFBWNStYSlhNMWlqeHpEYTd5cmNYdXpBZXV0b0FFMENRUThQZWF4VG9L?= =?utf-8?B?ODcwVUg3Y2VGWXcrZWFmbTNpUkpLQktKTXVGQXV5OHd4c2ZJQ3BkMXdyNE0w?= =?utf-8?B?QzY3TEFRS2tmdjFUejZtTnVyelJlTUpOQmg4SWtuaWlKYnVuQjAzYi90UDZ2?= =?utf-8?B?NktSc1RVbE15ZmpPNnVDU2Zna09malpnM3ZwUjY4cWsxNXplRFMvb3Byalhr?= =?utf-8?B?NjlzZ0dKTk5QbU1zTzF4cVVDUjZjVCsvYmc1YkZzZUV3VmZqdUZwbW1reFR3?= =?utf-8?B?ZlNFQlRaS1pwYUdQNVBtV3E3TXFFeFBDREtSNE96elN4MjdINkd4TEdaMWpH?= =?utf-8?B?b2ExVFlhRUJmU1h1R2NPR1FHQk9BaFYzenNwa1MrTUNQNVM1QXFiOUp6MlEy?= =?utf-8?B?RzJYTGpFMGt1UGNwMFVIWE5wN29UL2VSY3B4OVluNHFKQUc3VmtaOWRyNFRX?= =?utf-8?B?ZEROcDE0K1B2M2RrdWRuOCtSU3NlYVRoVVBoOUJpSlhJMzBEQnJCajJFekFs?= =?utf-8?B?cUNZaVdLMFEvNFN1ZGNoMm8wdjRZQW5pRlhXNUNLUWtuVGViS3R0dlluRzJv?= =?utf-8?B?Vm5uRkYyYml3YWcxVWVnSkJUWnk0b2Yxelp1dlM2ZFJnU3BzWjRCVlRUVnRK?= =?utf-8?Q?d4Q/2M/5SYFywrnDSIqOKDfbCc/i1fo7hqk1VEC8yzLE=3D?= X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB2363; 6:W3e5o+pSu/znRAPVx5QpZEOtVjoZV50TK6Bbo+y8nSNpPEhT1zQrqrdy+G7kUrIRo542E9PN6K6qq/YNQn/ThhpkSTjUGE0UZbQiASymGTXixELjlyyYrpNZN70zRjKiVIvhz65nzuGqK8C+NhGecfPy+rv2b3cFBHEz8eVGur9cGsjOQVPrKwTvkdRg7fRbR8UMdCnZBAtG9cCHXKPdmY2/amcqeJZQQ3gAexoMsHGt+erXKCCweK8QTm2IeXnyKyC0aGBgM1G+AwmV4+XRklrVFy9H3I75LBY6fP6IMJoeyKiXAdEwsC2G5YCyxNSwAQYssmRHxlpmx9WfxCmtyZK4qSNrwUP0FmyLHHzb0zI=; 5:qsxF6IR9UqzNpNaQHx6bEYkFKJdi/susgA2lBshCY2a+wGLw3G3ruf53YcP+V6rbdRy5oMr7d3VXUYAzU1gNqg6iWl6HiASfF/g3PfMpvoiDWo/C9/M4GvbZhKHVeCqzWI+SGGMI7x2Lo4FwPop8qK78GQbRVBJpIOLhCHHFIYw=; 24:sqjO/Ho59UXL0DocKBrDnVNwgY2qk8xixPWmW3B734UpsqMxuSo2nFnXwJrCQWkIbmEyVq0uPoIzgjl4eIMsKhlWmt4C2SYMmdL5ZCZVUn8=; 7:kGHcQgoSljAfxbe4p6Y4nlQbIOpsK8sOWqCyhIQWOxV+1evPNUhVXULIW/N5rMqrn6smVvcikFIaxDhkYKUPNWXmEaoVfLqyrS8ujSCgEsLQTi1jIgo991lPQVP7gMAR07Sge6ux5/JwCIvGi+YQHzpJsDR92B2mlrI2qcHxB5gpL4y9elXJqKg+Is3bfnPWXgeY+tB4pcQowVUEid2/VAxQKQnaL+1Q1gybrFDSucKHqEUI3u2tl0Cfh/NwY/us SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Dec 2017 15:38:36.4931 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2fd05912-463b-4a26-f34c-08d53bf6401d X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR03MB2363 Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP commit 2b163b5bce04546da72617bfb6c8bf07a45c4b17 upstream. This reverts commit 66d2e2028091a074aa1290d2eeda5ddb1a6c329c. Quoting from Russell's findings: https://www.mail-archive.com/linux-crypto@vger.kernel.org/msg21136.html [quote] Okay, I've re-tested, using a different way of measuring, because using openssl speed is impractical for off-loaded engines. I've decided to use this way to measure the performance: dd if=/dev/zero bs=1048576 count=128 | /usr/bin/time openssl dgst -md5 For the threaded IRQs case gives: 0.05user 2.74system 0:05.30elapsed 52%CPU (0avgtext+0avgdata 2400maxresident)k 0.06user 2.52system 0:05.18elapsed 49%CPU (0avgtext+0avgdata 2404maxresident)k 0.12user 2.60system 0:05.61elapsed 48%CPU (0avgtext+0avgdata 2460maxresident)k => 5.36s => 25.0MB/s and the tasklet case: 0.08user 2.53system 0:04.83elapsed 54%CPU (0avgtext+0avgdata 2468maxresident)k 0.09user 2.47system 0:05.16elapsed 49%CPU (0avgtext+0avgdata 2368maxresident)k 0.10user 2.51system 0:04.87elapsed 53%CPU (0avgtext+0avgdata 2460maxresident)k => 4.95 => 27.1MB/s which corresponds to an 8% slowdown for the threaded IRQ case. So, tasklets are indeed faster than threaded IRQs. [...] I think I've proven from the above that this patch needs to be reverted due to the performance regression, and that there _is_ most definitely a deterimental effect of switching from tasklets to threaded IRQs. [/quote] Signed-off-by: Horia Geantă Signed-off-by: Herbert Xu --- Mihai Ordean reported soft lockups at IPsec ESP high rates on i.MX6Q, on kernels 4.9.{35,36}. This patch, cherry-picked from 4.10, fixes the issue. drivers/crypto/caam/intern.h | 1 + drivers/crypto/caam/jr.c | 25 ++++++++++++++++--------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/drivers/crypto/caam/intern.h b/drivers/crypto/caam/intern.h index 5d4c05074a5c..e2bcacc1a921 100644 --- a/drivers/crypto/caam/intern.h +++ b/drivers/crypto/caam/intern.h @@ -41,6 +41,7 @@ struct caam_drv_private_jr { struct device *dev; int ridx; struct caam_job_ring __iomem *rregs; /* JobR's register space */ + struct tasklet_struct irqtask; int irq; /* One per queue */ /* Number of scatterlist crypt transforms active on the JobR */ diff --git a/drivers/crypto/caam/jr.c b/drivers/crypto/caam/jr.c index 757c27f9953d..9e7f28122bb7 100644 --- a/drivers/crypto/caam/jr.c +++ b/drivers/crypto/caam/jr.c @@ -73,6 +73,8 @@ static int caam_jr_shutdown(struct device *dev) ret = caam_reset_hw_jr(dev); + tasklet_kill(&jrp->irqtask); + /* Release interrupt */ free_irq(jrp->irq, dev); @@ -128,7 +130,7 @@ static irqreturn_t caam_jr_interrupt(int irq, void *st_dev) /* * Check the output ring for ready responses, kick - * the threaded irq if jobs done. + * tasklet if jobs done. */ irqstate = rd_reg32(&jrp->rregs->jrintstatus); if (!irqstate) @@ -150,13 +152,18 @@ static irqreturn_t caam_jr_interrupt(int irq, void *st_dev) /* Have valid interrupt at this point, just ACK and trigger */ wr_reg32(&jrp->rregs->jrintstatus, irqstate); - return IRQ_WAKE_THREAD; + preempt_disable(); + tasklet_schedule(&jrp->irqtask); + preempt_enable(); + + return IRQ_HANDLED; } -static irqreturn_t caam_jr_threadirq(int irq, void *st_dev) +/* Deferred service handler, run as interrupt-fired tasklet */ +static void caam_jr_dequeue(unsigned long devarg) { int hw_idx, sw_idx, i, head, tail; - struct device *dev = st_dev; + struct device *dev = (struct device *)devarg; struct caam_drv_private_jr *jrp = dev_get_drvdata(dev); void (*usercall)(struct device *dev, u32 *desc, u32 status, void *arg); u32 *userdesc, userstatus; @@ -230,8 +237,6 @@ static irqreturn_t caam_jr_threadirq(int irq, void *st_dev) /* reenable / unmask IRQs */ clrsetbits_32(&jrp->rregs->rconfig_lo, JRCFG_IMSK, 0); - - return IRQ_HANDLED; } /** @@ -389,10 +394,11 @@ static int caam_jr_init(struct device *dev) jrp = dev_get_drvdata(dev); + tasklet_init(&jrp->irqtask, caam_jr_dequeue, (unsigned long)dev); + /* Connect job ring interrupt handler. */ - error = request_threaded_irq(jrp->irq, caam_jr_interrupt, - caam_jr_threadirq, IRQF_SHARED, - dev_name(dev), dev); + error = request_irq(jrp->irq, caam_jr_interrupt, IRQF_SHARED, + dev_name(dev), dev); if (error) { dev_err(dev, "can't connect JobR %d interrupt (%d)\n", jrp->ridx, jrp->irq); @@ -454,6 +460,7 @@ static int caam_jr_init(struct device *dev) out_free_irq: free_irq(jrp->irq, dev); out_kill_deq: + tasklet_kill(&jrp->irqtask); return error; }