Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp1113978ybt; Wed, 1 Jul 2020 19:32:44 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxhPZ1DuLMAGRTkp86Cr2nmYp47DWt/FXI7vhWfw57H/dvYzDxtReRgClmHvxM9OK/m3kkn X-Received: by 2002:a05:6402:c82:: with SMTP id cm2mr21087707edb.293.1593657164140; Wed, 01 Jul 2020 19:32:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1593657164; cv=none; d=google.com; s=arc-20160816; b=oh4i4/U0apfS0ENDOqDrngutdAg9NFf3NDEXFBeZr1blwCBqaPD/35cgsuhaHkOVhS xJZcJEAI+fE4YwjxUghGQqMdHwoKdCpi3GltLwk1Iu4VRPujpb8LB6KhqRbHUQVn28QS MHPBYd9PBYENtQM+cfNqqTPB156Qu94g8oyFZw7Yq8vzQHFcyLqmM7BBTwbwmrm7f4D7 N9BMKHEM2wYzH5FCz9noeksy/donItg8pBXZRNaQ8xBoCD2M1U70AMT2p87+PDwj0+Zk rr/+pG1IMVEg9OPLLcdUwfEWgK1R1B66ojK9FrQ03vZ+PJyJYGVUh/MR3UXAqHqGupyn pU6w== 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=hYKiP2x3Fn+R0lB2Gmm2n1UnohYBv+N9SOuW/KjoB5I=; b=WzLS1fhPJjunpEL3iTc4NyPayUMqLkFwnxfTJ6/7ViDi30BWNscNNIVZhpisVJWYOk WnJsgA5l47pArSX2Jfr+7VgLcTsUX4Vq8v9r3pvxc/YyvxmcZg+0uA9IWJyS5WDP5MF8 ZgMN/pirNvioWdbjmyCefp54alpPZVCv9C9x3jtK+XP9EdOt5BBlPDUe99Z5UNknN1/9 v201eXeltrbWrX6k9jOS5F90bF46INITo/Cxug39EfEtQhwZd3qeZLqUdwYHVhrBWUHh lA51QoO2h4B9Gj2gPIy3H80Vwzs8bw2zgIdI87tt+dsnuTt1k5KtKyIkHrEnenAP81Ku mRDw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-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 i21si4831576ejj.293.2020.07.01.19.32.21; Wed, 01 Jul 2020 19:32:44 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-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-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728195AbgGBCcJ (ORCPT + 99 others); Wed, 1 Jul 2020 22:32:09 -0400 Received: from szxga04-in.huawei.com ([45.249.212.190]:7340 "EHLO huawei.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728159AbgGBCcG (ORCPT ); Wed, 1 Jul 2020 22:32:06 -0400 Received: from DGGEMS402-HUB.china.huawei.com (unknown [172.30.72.59]) by Forcepoint Email with ESMTP id DEC43EEBFC70642ABB3D; Thu, 2 Jul 2020 10:32:03 +0800 (CST) Received: from localhost.localdomain (10.67.165.24) by DGGEMS402-HUB.china.huawei.com (10.3.19.202) with Microsoft SMTP Server id 14.3.487.0; Thu, 2 Jul 2020 10:31:53 +0800 From: Meng Yu To: , CC: , , , Subject: [PATCH 6/6] crypto: hisilicon/hpre - disable FLR triggered by hardware Date: Thu, 2 Jul 2020 10:31:19 +0800 Message-ID: <1593657079-31990-7-git-send-email-yumeng18@huawei.com> X-Mailer: git-send-email 2.8.1 In-Reply-To: <1593657079-31990-1-git-send-email-yumeng18@huawei.com> References: <1593657079-31990-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-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@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 | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/drivers/crypto/hisilicon/hpre/hpre_main.c b/drivers/crypto/hisilicon/hpre/hpre_main.c index 6f7a453..6d8a110 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 @@ -234,6 +238,21 @@ 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; @@ -245,10 +264,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); @@ -299,6 +314,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