Received: by 2002:a25:1506:0:0:0:0:0 with SMTP id 6csp441646ybv; Thu, 20 Feb 2020 01:10:01 -0800 (PST) X-Google-Smtp-Source: APXvYqwXQ/NQJTs6o1aPpfQJRZEecATg3gJgPK9NNlV0EUx1YcBimE7PStZbXr23ccUFMZZXgPeb X-Received: by 2002:a9d:4c14:: with SMTP id l20mr22521282otf.125.1582189801321; Thu, 20 Feb 2020 01:10:01 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1582189801; cv=none; d=google.com; s=arc-20160816; b=f0yLJ3HU8jLVOK23Zksyf4It39n4zhPM/ltEaoMJn/EW8rHmOaeL0sRZHe4POy5b4q 32YpMHihWHB/2v/WB98w6C1XBgd2H5PAU1IRy4GfnTDik7rTProfrO8HIz1P8VoFUflE E75G18z16+4WxvyYh/Zz/ZlyK9/Y+Yjykp2LH7i4Tq58Bpw5P+qpMAOrrJrd/QSnU/ns 2P1iqkiB9bI73RS7hfFgXL+EsamxajiO3xRf9pEM9HbCetwd8stUn2is8hjTZ/rYr5ht xAt5NXOV95LnRNz6CrqLMrd/PPJaCbrZ5Gw9fJUrMFDRjtFvobaCUs97leHxWfX55JPQ OJvA== 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=rBPXNxYJUDy9GQ7uJbcV+Lg69f0aXPODTu5p6bRGnu4=; b=iHusrA7s4SxOctRcGqsE4fNK+gouEmevtdtDAPKfKIeSttz1pPFG7cNsaM2HDTImxB +yBpdJ6lIuxaJvZ8LUIf/jWW6DJxzh6WoIqDnPc350TXbHv2z/68W5SYaKCi8k072/cz RHbqKpn0p/JHi7bkBbP2jvCChk33XQl757vagNif/8lO/uPgeGx6SxwUDoX1RWtGpXDl p0eKAps047nkstrN3usK1jeRYiDCaDqqdEl7x8jTihmYHXcagn9/Dna1vF8dXxVJFyaS +LVJbQ38y1IIDdy1SnSIGLKy0prT/ZNFhXi8YvnKNvJhsF4vfkkzhd+KjPESIIQXb/F/ JlYQ== 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 p5si1376348oto.116.2020.02.20.01.09.50; Thu, 20 Feb 2020 01:10:01 -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 S1726771AbgBTJJJ (ORCPT + 99 others); Thu, 20 Feb 2020 04:09:09 -0500 Received: from szxga07-in.huawei.com ([45.249.212.35]:56072 "EHLO huawei.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726934AbgBTJJJ (ORCPT ); Thu, 20 Feb 2020 04:09:09 -0500 Received: from DGGEMS407-HUB.china.huawei.com (unknown [172.30.72.60]) by Forcepoint Email with ESMTP id 43C66B634BA2E04535D6; Thu, 20 Feb 2020 17:09:06 +0800 (CST) Received: from localhost.localdomain (10.67.165.24) by DGGEMS407-HUB.china.huawei.com (10.3.19.207) with Microsoft SMTP Server id 14.3.439.0; Thu, 20 Feb 2020 17:08:57 +0800 From: Zaibo Xu To: , CC: , , , , , , , , , , , Subject: [PATCH 2/4] crypto: hisilicon/sec2 - Add workqueue for SEC driver. Date: Thu, 20 Feb 2020 17:04:53 +0800 Message-ID: <1582189495-38051-3-git-send-email-xuzaibo@huawei.com> X-Mailer: git-send-email 2.8.1 In-Reply-To: <1582189495-38051-1-git-send-email-xuzaibo@huawei.com> References: <1582189495-38051-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: yekai13 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: yekai13 Signed-off-by: liulongfang Signed-off-by: Zaibo Xu --- drivers/crypto/hisilicon/sec2/sec_main.c | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/drivers/crypto/hisilicon/sec2/sec_main.c b/drivers/crypto/hisilicon/sec2/sec_main.c index 3767fdb..ebafc1c 100644 --- a/drivers/crypto/hisilicon/sec2/sec_main.c +++ b/drivers/crypto/hisilicon/sec2/sec_main.c @@ -774,12 +774,24 @@ static void sec_qm_uninit(struct hisi_qm *qm) static int sec_probe_init(struct hisi_qm *qm, struct sec_dev *sec) { + int ret; + + qm->wq = alloc_workqueue("%s", WQ_HIGHPRI | WQ_CPU_INTENSIVE | + 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 +804,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