Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp14358835pxu; Mon, 4 Jan 2021 22:20:13 -0800 (PST) X-Google-Smtp-Source: ABdhPJwthmG887Msk2LDDftyni1Uv3iUuiLP1d0JUpdlHAVzBmxnsV7IMMY19sbxH6/nQRGsdWud X-Received: by 2002:a50:d5d5:: with SMTP id g21mr76633928edj.41.1609827613436; Mon, 04 Jan 2021 22:20:13 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1609827613; cv=none; d=google.com; s=arc-20160816; b=ang4zafIQ16nLL9y6pdegws0wXtDG92Q+/tQTmHXArvvYaA9x9xrjH0NBwycgDEVNn sCL3Yl6EN+94wg8PHNYgLUwQ62Ta+N6KkcyoAGFMacakwGJrPPa0UMQCIEADk5tI0WcT mS/k+Hm6CcBQumSJq+aSsM2I7Yi33ln0kDoB5bPNN3ewgX5C2tLaWj51jk9MCdLI0uRV F0v/X6Q680gOf3SHlp/QMaHt8IxYAmawR0aPbINNBUabQpAR6K2fGSm7Qdx394r2kEGM 0Leis+36v2dffsZXr3WvGpuy3x02Yspl3fPvwggkoqAXx95JMd3h/fQm+J2JRZYFhNXN 7zKA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from; bh=8FTj7UsWr/jf0ndHhZLkiDv+qm2HAgqNiUMs8uVZUyw=; b=KuNb3cZws1dekAAbviwV9K57VViptB6grXiW2o/WAwjlP4x3zteW+9PKsH6dtVchc3 ZzESqPNdxs/Oi/nSu4+Jvd4U65797FXwClTFTH+BlAcYPqHALVa7gHaCgdWhgJsFmIUl vfWgOwwOcm86/7qkfKlVtZ5wHCqW+yJKG01PU8JoFLtfeEF7TgPfUcITAqjgFheJmSPw w0zTu7+1Lfwxt7TTnGl7DCKYpK6QeuKmXiOFm/bNvu79ST2VpKP/VJK6cBVbzwXbBFtW 8Pp9kApJzUcYyyRqQzEcRbmJUXYHJNdapqhssA8FIgp/DI9dPdkJdybGfjl8e4z11IAp pGyw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id r2si32096900edv.308.2021.01.04.22.19.54; Mon, 04 Jan 2021 22:20:13 -0800 (PST) Received-SPF: pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1725766AbhAEGTq (ORCPT + 99 others); Tue, 5 Jan 2021 01:19:46 -0500 Received: from szxga04-in.huawei.com ([45.249.212.190]:9670 "EHLO szxga04-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725868AbhAEGTq (ORCPT ); Tue, 5 Jan 2021 01:19:46 -0500 Received: from DGGEMS412-HUB.china.huawei.com (unknown [172.30.72.60]) by szxga04-in.huawei.com (SkyGuard) with ESMTP id 4D92Nd2j10z15pCm; Tue, 5 Jan 2021 14:17:53 +0800 (CST) Received: from huawei.com (10.67.165.24) by DGGEMS412-HUB.china.huawei.com (10.3.19.212) with Microsoft SMTP Server id 14.3.498.0; Tue, 5 Jan 2021 14:18:43 +0800 From: Kai Ye To: CC: , Subject: [PATCH 3/3] crypto: hisilicon/sec - register SEC device to uacce Date: Tue, 5 Jan 2021 14:16:44 +0800 Message-ID: <1609827404-6024-4-git-send-email-yekai13@huawei.com> X-Mailer: git-send-email 2.8.1 In-Reply-To: <1609827404-6024-1-git-send-email-yekai13@huawei.com> References: <1609827404-6024-1-git-send-email-yekai13@huawei.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.67.165.24] X-CFilter-Loop: Reflected Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org Register SEC device to uacce framework for user space. Signed-off-by: Kai Ye Reviewed-by: Zhou Wang Reviewed-by: Zaibo Xu --- drivers/crypto/hisilicon/sec2/sec_main.c | 39 +++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/drivers/crypto/hisilicon/sec2/sec_main.c b/drivers/crypto/hisilicon/sec2/sec_main.c index b35c1c2..4809c19 100644 --- a/drivers/crypto/hisilicon/sec2/sec_main.c +++ b/drivers/crypto/hisilicon/sec2/sec_main.c @@ -13,6 +13,7 @@ #include #include #include +#include #include "sec.h" @@ -74,6 +75,16 @@ #define SEC_USER0_SMMU_NORMAL (BIT(23) | BIT(15)) #define SEC_USER1_SMMU_NORMAL (BIT(31) | BIT(23) | BIT(15) | BIT(7)) +#define SEC_USER1_ENABLE_CONTEXT_SSV BIT(24) +#define SEC_USER1_ENABLE_DATA_SSV BIT(16) +#define SEC_USER1_WB_CONTEXT_SSV BIT(8) +#define SEC_USER1_WB_DATA_SSV BIT(0) +#define SEC_USER1_SVA_SET (SEC_USER1_ENABLE_CONTEXT_SSV | \ + SEC_USER1_ENABLE_DATA_SSV | \ + SEC_USER1_WB_CONTEXT_SSV | \ + SEC_USER1_WB_DATA_SSV) +#define SEC_USER1_SMMU_SVA (SEC_USER1_SMMU_NORMAL | SEC_USER1_SVA_SET) +#define SEC_USER1_SMMU_MASK (~SEC_USER1_SVA_SET) #define SEC_CORE_INT_STATUS_M_ECC BIT(2) #define SEC_DELAY_10_US 10 @@ -233,6 +244,18 @@ struct hisi_qp **sec_create_qps(void) return NULL; } +static const struct kernel_param_ops sec_uacce_mode_ops = { + .set = uacce_mode_set, + .get = param_get_int, +}; + +/* + * uacce_mode = 0 means sec only register to crypto, + * uacce_mode = 1 means sec both register to crypto and uacce. + */ +static u32 uacce_mode = UACCE_MODE_NOUACCE; +module_param_cb(uacce_mode, &sec_uacce_mode_ops, &uacce_mode, 0444); +MODULE_PARM_DESC(uacce_mode, UACCE_MODE_DESC); static const struct pci_device_id sec_dev_ids[] = { { PCI_DEVICE(PCI_VENDOR_ID_HUAWEI, SEC_PF_PCI_DEVICE_ID) }, @@ -299,7 +322,11 @@ static int sec_engine_init(struct hisi_qm *qm) writel_relaxed(reg, SEC_ADDR(qm, SEC_INTERFACE_USER_CTRL0_REG)); reg = readl_relaxed(SEC_ADDR(qm, SEC_INTERFACE_USER_CTRL1_REG)); - reg |= SEC_USER1_SMMU_NORMAL; + reg &= SEC_USER1_SMMU_MASK; + if (qm->use_sva) + reg |= SEC_USER1_SMMU_SVA; + else + reg |= SEC_USER1_SMMU_NORMAL; writel_relaxed(reg, SEC_ADDR(qm, SEC_INTERFACE_USER_CTRL1_REG)); writel(SEC_SINGLE_PORT_MAX_TRANS, @@ -758,6 +785,8 @@ static int sec_qm_init(struct hisi_qm *qm, struct pci_dev *pdev) qm->pdev = pdev; qm->ver = pdev->revision; + qm->algs = "cipher\ndigest\naead\n"; + qm->mode = uacce_mode; qm->sqe_size = SEC_SQE_SIZE; qm->dev_name = sec_name; @@ -885,6 +914,14 @@ static int sec_probe(struct pci_dev *pdev, const struct pci_device_id *id) goto err_qm_stop; } + if (qm->uacce) { + ret = uacce_register(qm->uacce); + if (ret) { + pci_err(pdev, "failed to register uacce (%d)!\n", ret); + goto err_alg_unregister; + } + } + if (qm->fun_type == QM_HW_PF && vfs_num) { ret = hisi_qm_sriov_enable(pdev, vfs_num); if (ret < 0) -- 2.8.1