Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp335939ybt; Fri, 10 Jul 2020 00:44:23 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzuJ/AmAAN1oJwbRoSME7YzAiXGZJOMkARcAxfMq/1lBYnweFwx7gW90JBzvprzG3/Q8b/M X-Received: by 2002:a50:f384:: with SMTP id g4mr73378131edm.205.1594367063733; Fri, 10 Jul 2020 00:44:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1594367063; cv=none; d=google.com; s=arc-20160816; b=HixWvgdDd/d8qqKNFuCYkXP+1SBws4qyUkc63B5/QLqKLft/nILiRZ9GvkgJYf/HxG Tn/xS8tYwtymzu1P85ywFXVe832ypRWXBRl7VDkHv85Xl47fZsQxgCIVGzpgAZalp+B8 GrtjgvFbLHuya7FDAOWG/iKDH/oajPG5T0aXYp01VyVgUBrvNETSAPzQtBWyE7W2RlTt +fV/A6QcfI1AMmsG1oN+lUxM1bXvZBul0JBrZyTzOxRlIhyja09AJK1bsjYoWqqb2LnM 0AAXj2K2w4HYOi1jRZZKD5Fi7Mt4sKLl5bGq6IpsmXiEyrTpf46p8U8YEBSOy0NkjRgm +TUQ== 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=Mh8HZe1VghJzgUwQD3VjKTLafU4Xqg7BXZVCoZwsufc=; b=q1OO/jiC/YHcfgxwQqtrdiw5ETyWC4PHUoPwnjdToccxai5dJwXE3Zg73BCQg9PIRX zvu3ZQEEaKDzj1Y3Bdx360856xR2LiHjt6ry2Xhh5aaXRrGrO/3iPMBZXn7ubsFFW5oC BMo9PgyiZ9SjtFbZ61nPQArdu1PDn8YcGFzrNmMZ10bYm5ztPjzqNNXE5kcm2gOEcJyo KzJn6qokkQNBDJk82RRoQ0CGGpnKR/RhSX64AQYzkb3YTijTDIBC3eVDZqBULUeQcI4T BtYiizGn6YDJWacgBKY1D5fSRjnTlx/0USLC7XNIcLBXJaa0+0ZsYVcWny+YS7412MHs KU4w== 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 gj24si3553577ejb.139.2020.07.10.00.44.00; Fri, 10 Jul 2020 00:44:23 -0700 (PDT) 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 S1727780AbgGJHmw (ORCPT + 99 others); Fri, 10 Jul 2020 03:42:52 -0400 Received: from szxga05-in.huawei.com ([45.249.212.191]:7289 "EHLO huawei.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726615AbgGJHlg (ORCPT ); Fri, 10 Jul 2020 03:41:36 -0400 Received: from DGGEMS404-HUB.china.huawei.com (unknown [172.30.72.60]) by Forcepoint Email with ESMTP id BDDEFE5A13F98D4BEC88; Fri, 10 Jul 2020 15:41:32 +0800 (CST) Received: from localhost.localdomain (10.67.165.24) by DGGEMS404-HUB.china.huawei.com (10.3.19.204) with Microsoft SMTP Server id 14.3.487.0; Fri, 10 Jul 2020 15:41:24 +0800 From: Meng Yu To: , CC: , , , Subject: [PATCH v2 6/6] crypto: hisilicon/hpre - disable FLR triggered by hardware Date: Fri, 10 Jul 2020 15:40:46 +0800 Message-ID: <1594366846-1313-7-git-send-email-yumeng18@huawei.com> X-Mailer: git-send-email 2.8.1 In-Reply-To: <1594366846-1313-1-git-send-email-yumeng18@huawei.com> References: <1594366846-1313-1-git-send-email-yumeng18@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: Hui Tang for Hi1620 hardware, we should disable these hardware flr: 1. BME_FLR - bit 7, 2. PM_FLR - bit 11, 3. SRIOV_FLR - bit 12, Or HPRE may goto D3 state, when we bind and unbind HPRE quickly, as it does FLR triggered by BME/PM/SRIOV. Fixes: c8b4b477079d("crypto: hisilicon - add HiSilicon HPRE accelerator") Signed-off-by: Hui Tang Signed-off-by: Meng Yu Reviewed-by: Zaibo Xu --- drivers/crypto/hisilicon/hpre/hpre_main.c | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/drivers/crypto/hisilicon/hpre/hpre_main.c b/drivers/crypto/hisilicon/hpre/hpre_main.c index b69cea3..b135c74 100644 --- a/drivers/crypto/hisilicon/hpre/hpre_main.c +++ b/drivers/crypto/hisilicon/hpre/hpre_main.c @@ -82,6 +82,10 @@ #define HPRE_CORE_ECC_2BIT_ERR BIT(1) #define HPRE_OOO_ECC_2BIT_ERR BIT(5) +#define HPRE_QM_BME_FLR BIT(7) +#define HPRE_QM_PM_FLR BIT(11) +#define HPRE_QM_SRIOV_FLR BIT(12) + #define HPRE_VIA_MSI_DSM 1 #define HPRE_SQE_MASK_OFFSET 8 #define HPRE_SQE_MASK_LEN 24 @@ -230,6 +234,22 @@ static int hpre_cfg_by_dsm(struct hisi_qm *qm) return 0; } +/* + * For Hi1620, we shoul disable FLR triggered by hardware (BME/PM/SRIOV). + * Or it may stay in D3 state when we bind and unbind hpre quickly, + * as it does FLR triggered by hardware. + */ +static void disable_flr_of_bme(struct hisi_qm *qm) +{ + u32 val; + + val = readl(HPRE_ADDR(qm, QM_PEH_AXUSER_CFG)); + val &= ~(HPRE_QM_BME_FLR | HPRE_QM_SRIOV_FLR); + val |= HPRE_QM_PM_FLR; + writel(val, HPRE_ADDR(qm, QM_PEH_AXUSER_CFG)); + writel(PEH_AXUSER_CFG_ENABLE, HPRE_ADDR(qm, QM_PEH_AXUSER_CFG_ENABLE)); +} + static int hpre_set_user_domain_and_cache(struct hisi_qm *qm) { struct device *dev = &qm->pdev->dev; @@ -241,10 +261,6 @@ static int hpre_set_user_domain_and_cache(struct hisi_qm *qm) writel(HPRE_QM_USR_CFG_MASK, HPRE_ADDR(qm, QM_AWUSER_M_CFG_ENABLE)); writel_relaxed(HPRE_QM_AXI_CFG_MASK, HPRE_ADDR(qm, QM_AXI_M_CFG)); - /* disable FLR triggered by BME(bus master enable) */ - writel(PEH_AXUSER_CFG, HPRE_ADDR(qm, QM_PEH_AXUSER_CFG)); - writel(PEH_AXUSER_CFG_ENABLE, HPRE_ADDR(qm, QM_PEH_AXUSER_CFG_ENABLE)); - /* HPRE need more time, we close this interrupt */ val = readl_relaxed(HPRE_ADDR(qm, HPRE_QM_ABNML_INT_MASK)); val |= BIT(HPRE_TIMEOUT_ABNML_BIT); @@ -295,6 +311,8 @@ static int hpre_set_user_domain_and_cache(struct hisi_qm *qm) if (ret) dev_err(dev, "acpi_evaluate_dsm err.\n"); + disable_flr_of_bme(qm); + return ret; } -- 2.8.1