Received: by 2002:a05:7412:419a:b0:f3:1519:9f41 with SMTP id i26csp837093rdh; Thu, 23 Nov 2023 21:53:41 -0800 (PST) X-Google-Smtp-Source: AGHT+IHAVynJcmGavpJWvvAPRnNA4RxOzKH720oqWz9zn1lrPmJVbnFt+5kn0wul+DkQ4O3L4lrS X-Received: by 2002:a05:6a21:168c:b0:186:4430:5d16 with SMTP id np12-20020a056a21168c00b0018644305d16mr2161212pzb.61.1700805221128; Thu, 23 Nov 2023 21:53:41 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700805221; cv=none; d=google.com; s=arc-20160816; b=B6I3FYRjfg1QtgW+H1Q1gpROVUdMrhR/JiEvqVxyEB0BR30zw2bymgR5iOVmN3diNj AaLNzPu/lCqIpwC1wMrBamtxDr6KGt2c1dZWxWUiaiZZYrxf5n8MXUFGGmvvdYgltj// QwAM01DxxDjR4lXQsa9lpqLJjnxOxcbl5K24qAtr6s3/ltePPXulsopvGtq2qumTScea xU+GTwSJLVDd6tbqvDZWePO7NpvU6LKxGfDPcmcM9PsmKkcAHXkaOeEPUkeRuK9WqKdT bIkVYzhvi7mrXyWeI8Ywu6u1mIEdYcimzl+vB+HHQojceeNZxtg9xhQ1V1WeNAlDV3PA 9YDA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=XiXEiT/X6+HorPxQFNY1hx7/GEd722AwW6WzEhU96R0=; fh=L91xCIc/fK2yJI/vQZo7Nun1oIpqS/HKrdjeVidRxOk=; b=ouybHglZKFYE008dD/qDhYW1RVkEQ83vHw6UYRWJt1ocCZ/8Arf8r57lmDg67ciWRx hteF4jJUztHMHoP4ZUlg7ut0xwmjadoiwG+LjfBXOLwFUelX3MjJrjvOBczSs8WW2ZTL 0AWGBZRmdZlw7SvUKsjGebOYq7wq1WFuRmFftB3kgM5HsDXByiLWSD4YpIf7Q7KnEFuy f32pRNpidcPGBysYC+VTPyEM6tMMjx4a5lY6oCggn21+nC75mRLlAGxDY0YxDKDjwXb3 IrIbVmJCRgZdDcown+zhLFHT+zvh5zU23sUV9CLTYWTE3DC98K6H7pKq0uX5xPkKOYLX hNMA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Return-Path: Received: from fry.vger.email (fry.vger.email. [23.128.96.38]) by mx.google.com with ESMTPS id h23-20020a170902ac9700b001b7ea20dbf2si2655179plr.224.2023.11.23.21.53.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Nov 2023 21:53:41 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) client-ip=23.128.96.38; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by fry.vger.email (Postfix) with ESMTP id B7A3B81EF18C; Thu, 23 Nov 2023 21:53:13 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230205AbjKXFwy (ORCPT + 99 others); Fri, 24 Nov 2023 00:52:54 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56422 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229453AbjKXFww (ORCPT ); Fri, 24 Nov 2023 00:52:52 -0500 Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1FB9FD6C; Thu, 23 Nov 2023 21:52:56 -0800 (PST) Received: from dggpemd200003.china.huawei.com (unknown [172.30.72.54]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4Sc3zJ32g9zvR7Q; Fri, 24 Nov 2023 13:52:28 +0800 (CST) Received: from localhost.localdomain (10.67.165.2) by dggpemd200003.china.huawei.com (7.185.36.122) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.1258.28; Fri, 24 Nov 2023 13:52:54 +0800 From: Chenghai Huang To: , CC: , , Subject: [PATCH v2] crypto: hisilicon/zip - add zip comp high perf mode configuration Date: Fri, 24 Nov 2023 13:49:24 +0800 Message-ID: <20231124054924.3964946-1-huangchenghai2@huawei.com> X-Mailer: git-send-email 2.30.0 MIME-Version: 1.0 Content-Transfer-Encoding: 7BIT Content-Type: text/plain; charset=US-ASCII X-Originating-IP: [10.67.165.2] X-ClientProxiedBy: dggems704-chm.china.huawei.com (10.3.19.181) To dggpemd200003.china.huawei.com (7.185.36.122) X-CFilter-Loop: Reflected X-Spam-Status: No, score=-0.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on fry.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (fry.vger.email [0.0.0.0]); Thu, 23 Nov 2023 21:53:13 -0800 (PST) To meet specific application scenarios, the function of switching between the high performance mode and the high compression mode is added. Use the perf_mode=0/1 configuration to set the compression high perf mode, 0(default, high compression mode), 1(high performance mode). These two modes only apply to the compression direction and are compatible with software algorithm in both directions. Signed-off-by: Chenghai Huang --- drivers/crypto/hisilicon/zip/zip_main.c | 65 +++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/drivers/crypto/hisilicon/zip/zip_main.c b/drivers/crypto/hisilicon/zip/zip_main.c index d6672b777efc..07ab61c113ab 100644 --- a/drivers/crypto/hisilicon/zip/zip_main.c +++ b/drivers/crypto/hisilicon/zip/zip_main.c @@ -107,6 +107,14 @@ #define HZIP_CLOCK_GATED_EN (HZIP_CORE_GATED_EN | \ HZIP_CORE_GATED_OOO_EN) +/* zip comp high performance */ +#define HZIP_HIGH_PERF_OFFSET 0x301208 + +enum { + HZIP_HIGH_COMP_RATE, + HZIP_HIGH_COMP_PERF, +}; + static const char hisi_zip_name[] = "hisi_zip"; static struct dentry *hzip_debugfs_root; @@ -352,6 +360,37 @@ static int hzip_diff_regs_show(struct seq_file *s, void *unused) return 0; } DEFINE_SHOW_ATTRIBUTE(hzip_diff_regs); + +static int perf_mode_set(const char *val, const struct kernel_param *kp) +{ + int ret; + u32 n; + + if (!val) + return -EINVAL; + + ret = kstrtou32(val, 10, &n); + if (ret != 0 || (n != HZIP_HIGH_COMP_PERF && + n != HZIP_HIGH_COMP_RATE)) + return -EINVAL; + + return param_set_int(val, kp); +} + +static const struct kernel_param_ops zip_com_perf_ops = { + .set = perf_mode_set, + .get = param_get_int, +}; + +/* + * perf_mode = 0 means enable high compression rate mode, + * perf_mode = 1 means enable high compression performance mode. + * These two modes only apply to the compression direction. + */ +static u32 perf_mode = HZIP_HIGH_COMP_RATE; +module_param_cb(perf_mode, &zip_com_perf_ops, &perf_mode, 0444); +MODULE_PARM_DESC(perf_mode, "ZIP high perf mode 0(default), 1(enable)"); + static const struct kernel_param_ops zip_uacce_mode_ops = { .set = uacce_mode_set, .get = param_get_int, @@ -417,6 +456,28 @@ bool hisi_zip_alg_support(struct hisi_qm *qm, u32 alg) return false; } +static int hisi_zip_set_high_perf(struct hisi_qm *qm) +{ + u32 val; + int ret; + + val = readl_relaxed(qm->io_base + HZIP_HIGH_PERF_OFFSET); + if (perf_mode == HZIP_HIGH_COMP_PERF) + val |= HZIP_HIGH_COMP_PERF; + else + val &= ~HZIP_HIGH_COMP_PERF; + + /* Set perf mode */ + writel(val, qm->io_base + HZIP_HIGH_PERF_OFFSET); + ret = readl_relaxed_poll_timeout(qm->io_base + HZIP_HIGH_PERF_OFFSET, + val, val == perf_mode, HZIP_DELAY_1_US, + HZIP_POLL_TIMEOUT_US); + if (ret) + pci_err(qm->pdev, "failed to set perf mode\n"); + + return ret; +} + static int hisi_zip_set_qm_algs(struct hisi_qm *qm) { struct device *dev = &qm->pdev->dev; @@ -1115,6 +1176,10 @@ static int hisi_zip_pf_probe_init(struct hisi_zip *hisi_zip) if (ret) return ret; + ret = hisi_zip_set_high_perf(qm); + if (ret) + return ret; + hisi_zip_open_sva_prefetch(qm); hisi_qm_dev_err_init(qm); hisi_zip_debug_regs_clear(qm); -- 2.30.0