Received: by 2002:a25:c205:0:0:0:0:0 with SMTP id s5csp5139634ybf; Wed, 4 Mar 2020 18:10:48 -0800 (PST) X-Google-Smtp-Source: ADFU+vstF4UWHGMdPMgrnJFoKDThK/zLE0KikOthoAy6eojDMGFKTcjTPmcR2DQ4dsFfDHqjs0l5 X-Received: by 2002:aca:4843:: with SMTP id v64mr3806335oia.13.1583374248594; Wed, 04 Mar 2020 18:10:48 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1583374248; cv=none; d=google.com; s=arc-20160816; b=0zIbdtk0olbFR/8JNf8fkVfB2MkOODc5NqPg35xLR5z+6TRzQw5N1EW6SjXEmle1H3 ugt/nDgmiu3scqRZkLNBnW+e+bM3mllU8m2B2bGJq5m8qiOMEie6aUZFPu2xrDoKQ0B0 2XRjyrZ0k2f9hGXzEbxidt0o0e4WyMa/jmLp3xr9+U3jdn6fI2HWgsCPmHOCm5L2ZXxF 4yBni8JH7KxvlY+1742hHsaqdYnKpztg1G76YbT+4KF2skqvInRPQRy6FyLR82zd1eA9 qZ9DdF2fWby/U07TbnjgFFBn+xx8EPVaGcSjpkFmsSQvCDK5Jyny7GigI0kvKGZdjzGM Vabw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from; bh=mSzzCKMXT8HuSF29eO9i6YO/FfxnhC2gW9nhpp5renc=; b=c0k6wIPhBOwqzqc6gX+b1knQ9RdjiQ1Sv5zarfpfNG/H8V8wJPrLV7Dqv6K/U8B3m0 p63xyaaU81F/IJZVWvsiVUGnyHEhfoZLQnkedlJT/LO/pRW/lyTHj1FqUU2ijE4zn27m OYdyMVW0AA3OhwTPOaFwRangIrmbL4dXr5UcXr4poo85uNImhysNG7kUgEhEY1FAHeFZ bGmKTWNrzntHhjdUgxeC8Ko6T0u3a7zk6MawAY2UxHHTwJebdaYB8i6pqYG1GskbOish n+D3ZuQ9PHZM/CkSlU54i8R7G39SpyyttfSbGEHgsBIzgh56jbYfY28mdHddfGBEtCsA CilQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-crypto-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id s15si2474774otd.209.2020.03.04.18.10.37; Wed, 04 Mar 2020 18:10:48 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-crypto-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-crypto-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726007AbgCECKP (ORCPT + 99 others); Wed, 4 Mar 2020 21:10:15 -0500 Received: from szxga05-in.huawei.com ([45.249.212.191]:11163 "EHLO huawei.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725777AbgCECKN (ORCPT ); Wed, 4 Mar 2020 21:10:13 -0500 Received: from DGGEMS411-HUB.china.huawei.com (unknown [172.30.72.58]) by Forcepoint Email with ESMTP id 1BB5237181449ABE785D; Thu, 5 Mar 2020 10:10:10 +0800 (CST) Received: from localhost.localdomain (10.67.165.24) by DGGEMS411-HUB.china.huawei.com (10.3.19.211) with Microsoft SMTP Server id 14.3.439.0; Thu, 5 Mar 2020 10:10:01 +0800 From: Zaibo Xu To: , CC: , , , , , , , , , , Subject: [PATCH v3 2/5] crypto: hisilicon/sec2 - Add workqueue for SEC driver. Date: Thu, 5 Mar 2020 10:06:22 +0800 Message-ID: <1583373985-718-3-git-send-email-xuzaibo@huawei.com> X-Mailer: git-send-email 2.8.1 In-Reply-To: <1583373985-718-1-git-send-email-xuzaibo@huawei.com> References: <1583373985-718-1-git-send-email-xuzaibo@huawei.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.67.165.24] X-CFilter-Loop: Reflected Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org From: Ye Kai Allocate one workqueue for each QM instead of one for all QMs, we found the throughput of SEC engine can be increased to the hardware limit throughput during testing sec2 performance. so we added this scheme. Signed-off-by: Ye Kai Signed-off-by: Longfang Liu Signed-off-by: Zaibo Xu Reviewed-by: Jonathan Cameron --- drivers/crypto/hisilicon/sec2/sec_main.c | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/drivers/crypto/hisilicon/sec2/sec_main.c b/drivers/crypto/hisilicon/sec2/sec_main.c index 3767fdb..1fe2558 100644 --- a/drivers/crypto/hisilicon/sec2/sec_main.c +++ b/drivers/crypto/hisilicon/sec2/sec_main.c @@ -774,12 +774,30 @@ static void sec_qm_uninit(struct hisi_qm *qm) static int sec_probe_init(struct hisi_qm *qm, struct sec_dev *sec) { + int ret; + + /* + * WQ_HIGHPRI: SEC request must be low delayed, + * so need a high priority workqueue. + * WQ_UNBOUND: SEC task is likely with long + * running CPU intensive workloads. + */ + qm->wq = alloc_workqueue("%s", WQ_HIGHPRI | + WQ_MEM_RECLAIM | WQ_UNBOUND, num_online_cpus(), + pci_name(qm->pdev)); + if (!qm->wq) { + pci_err(qm->pdev, "fail to alloc workqueue\n"); + return -ENOMEM; + } + if (qm->fun_type == QM_HW_PF) { qm->qp_base = SEC_PF_DEF_Q_BASE; qm->qp_num = pf_q_num; qm->debug.curr_qm_qp_num = pf_q_num; - return sec_pf_probe_init(sec); + ret = sec_pf_probe_init(sec); + if (ret) + goto err_probe_uninit; } else if (qm->fun_type == QM_HW_VF) { /* * have no way to get qm configure in VM in v1 hardware, @@ -792,18 +810,26 @@ static int sec_probe_init(struct hisi_qm *qm, struct sec_dev *sec) qm->qp_num = SEC_QUEUE_NUM_V1 - SEC_PF_DEF_Q_NUM; } else if (qm->ver == QM_HW_V2) { /* v2 starts to support get vft by mailbox */ - return hisi_qm_get_vft(qm, &qm->qp_base, &qm->qp_num); + ret = hisi_qm_get_vft(qm, &qm->qp_base, &qm->qp_num); + if (ret) + goto err_probe_uninit; } } else { - return -ENODEV; + ret = -ENODEV; + goto err_probe_uninit; } return 0; +err_probe_uninit: + destroy_workqueue(qm->wq); + return ret; } static void sec_probe_uninit(struct hisi_qm *qm) { hisi_qm_dev_err_uninit(qm); + + destroy_workqueue(qm->wq); } static int sec_probe(struct pci_dev *pdev, const struct pci_device_id *id) -- 2.8.1