Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp2213242yba; Fri, 19 Apr 2019 14:38:42 -0700 (PDT) X-Google-Smtp-Source: APXvYqxOTJo02z/FW/BtQpsiI3uOjREAtldY7vinypv+F8B+zKuCCU4aRfMpWXbQ4ZJ1+PXEDtSJ X-Received: by 2002:a63:6988:: with SMTP id e130mr6113248pgc.150.1555709921986; Fri, 19 Apr 2019 14:38:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1555709921; cv=none; d=google.com; s=arc-20160816; b=rmOgxi5cYEgUA/++NArnuXoVPBWaBZpoGGCPdXlagDlE+hthEitajwQO+q/8eFXBz9 JJA6xq+YFAMo9ZJcH00Cj/SOVnsOz7DC9ZKfj5AWzgTiO0Nu9ehBTpnDqCZP60a2R7r1 r+fYfmXNIP1dO6RelwlpCdtjR9CRT5E1Lk9bQ9LpeDB0QbfRlbzpR7NgAW6A6E5c2/hW uRFG5Uskx9W7M1VH75LTQP1u/vLaQ+pjjVKRY1jxKw1ddvLcYR2F+Pq4cq5xQ+uGCJD4 t06BkFObjDHQM93tNmjFnY0P2nx/f2RQtXpMHIqETjtHNQpoPvXvw0c8Mt8PTbbtBOJG YhWw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:in-reply-to :mime-version:user-agent:date:message-id:from:cc:references:to :subject; bh=8ZE8/7+QVH6lVog8uJaxMAtp5ueExTtRspmECb5k+Pw=; b=ZzrWCPI9rXNSB3o7neOCvjlBUe3YELjm3Hk3hel1SMkKqAg3+mjhTN0LTDxM+QJpyQ xChbHM/PG8dnL7t7azR/8aRyT7GkqAfbZo48pCuH2g0R1lEVGj/2g0oeoNt1zpjthoAt 5LjobGT8SPI1wgjYcn9kx4/h3guUDd91MdGNCIk1anAbgi7y4Rmq6yuJQRVZ+w0UUusu NkT2pqhDcyZQ2qD8MLTi4ASFAoWmg08WOm+kJGkG+Jq/uvK//5WOVVM5GGBUW01tdzKz a0s2Bcbpm1BdqUPQeZPGtceSAjH6VWyzCx8sYJqSoiCTrTHWRHnZQg97ryJhBwYcQ6K+ Rsgw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-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 i3si5332761pgq.350.2019.04.19.14.38.25; Fri, 19 Apr 2019 14:38:41 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-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-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727376AbfDSVgy (ORCPT + 99 others); Fri, 19 Apr 2019 17:36:54 -0400 Received: from szxga05-in.huawei.com ([45.249.212.191]:7203 "EHLO huawei.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726665AbfDSVgy (ORCPT ); Fri, 19 Apr 2019 17:36:54 -0400 Received: from DGGEMS409-HUB.china.huawei.com (unknown [172.30.72.58]) by Forcepoint Email with ESMTP id 33F1597439F0519A1287; Fri, 19 Apr 2019 21:48:11 +0800 (CST) Received: from [127.0.0.1] (10.177.23.164) by DGGEMS409-HUB.china.huawei.com (10.3.19.209) with Microsoft SMTP Server id 14.3.408.0; Fri, 19 Apr 2019 21:48:06 +0800 Subject: Re: [PATCH v2 0/2] iommu/arm-smmu-v3: make sure the kdump kernel can work well when smmu is enabled To: Will Deacon References: <20190318131243.20716-1-thunder.leizhen@huawei.com> <20190404153031.GE27558@fuggles.cambridge.arm.com> <5CAAB293.3080600@huawei.com> <20190416091410.GC31579@fuggles.cambridge.arm.com> <5CB683D2.9010901@huawei.com> CC: Jean-Philippe Brucker , Joerg Roedel , linux-kernel , iommu , Robin Murphy , linux-arm-kernel From: "Leizhen (ThunderTown)" Message-ID: <5CB9D195.7000707@huawei.com> Date: Fri, 19 Apr 2019 21:48:05 +0800 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.5.1 MIME-Version: 1.0 In-Reply-To: <5CB683D2.9010901@huawei.com> Content-Type: text/plain; charset="windows-1252" Content-Transfer-Encoding: 7bit X-Originating-IP: [10.177.23.164] X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2019/4/17 9:39, Leizhen (ThunderTown) wrote: > > > On 2019/4/16 17:14, Will Deacon wrote: >> On Mon, Apr 08, 2019 at 10:31:47AM +0800, Leizhen (ThunderTown) wrote: >>> On 2019/4/4 23:30, Will Deacon wrote: >>>> On Mon, Mar 18, 2019 at 09:12:41PM +0800, Zhen Lei wrote: >>>>> v1 --> v2: >>>>> 1. Drop part2. Now, we only use the SMMUv3 hardware feature STE.config=0b000 >>>>> (Report abort to device, no event recorded) to suppress the event messages >>>>> caused by the unexpected devices. >>>>> 2. rewrite the patch description. >>>> >>>> This issue came up a while back: >>>> >>>> https://lore.kernel.org/linux-pci/20180302103032.GB19323@arm.com/ >>>> >>>> and I'd still prefer to solve it using the disable_bypass logic which we >>>> already have. Something along the lines of the diff below? >>> >>> Yes, my patches also use disable_bypass=1(set ste.config=0b000). If >>> SMMU_IDR0.ST_LEVEL=0(Linear Stream table supported), then all STE entries >>> are allocated and initialized(set ste.config=0b000). But if SMMU_IDR0.ST_LEVEL=1 >>> (2-level Stream Table), we only allocated and initialized the first level tables, >>> but leave level 2 tables dynamic allocated. That means, C_BAD_STREAMID(eventid=0x2) >>> will be reported, if an unexpeted device access memory without reinitialized in >>> kdump kernel. >> >> So is your problem just that the C_BAD_STREAMID events are noisy? If so, >> perhaps we should be disabling fault reporting entirely in the kdump kernel. >> >> How about the update diff below? I'm keen to have this as simple as >> possible, so we don't end up introducing rarely tested, complex code on >> the crash path. > In theory, it can solve the problem, let me test it. Hi Will, I have tested your patch on my board today. It works well. > > But then again, below patch will also disable the fault reporting come from the > expected devices which are used in the kdump kernel. In fact, my patches have been > merged into our interval version more than 2 months, no bug have been found yet. > > However, my patches do not support the case that the hardware does not support the > "STE bypass" feature, I think your patch can also resolve it. > >> >> Will >> >> --->8 >> >> diff --git a/drivers/iommu/arm-smmu-v3.c b/drivers/iommu/arm-smmu-v3.c >> index d3880010c6cf..d8b73da6447d 100644 >> --- a/drivers/iommu/arm-smmu-v3.c >> +++ b/drivers/iommu/arm-smmu-v3.c >> @@ -2454,13 +2454,9 @@ static int arm_smmu_device_reset(struct arm_smmu_device *smmu, bool bypass) >> /* Clear CR0 and sync (disables SMMU and queue processing) */ >> reg = readl_relaxed(smmu->base + ARM_SMMU_CR0); >> if (reg & CR0_SMMUEN) { >> - if (is_kdump_kernel()) { >> - arm_smmu_update_gbpa(smmu, GBPA_ABORT, 0); >> - arm_smmu_device_disable(smmu); >> - return -EBUSY; >> - } >> - >> dev_warn(smmu->dev, "SMMU currently enabled! Resetting...\n"); >> + WARN_ON(is_kdump_kernel() && !disable_bypass); >> + arm_smmu_update_gbpa(smmu, GBPA_ABORT, 0); >> } >> >> ret = arm_smmu_device_disable(smmu); >> @@ -2553,6 +2549,8 @@ static int arm_smmu_device_reset(struct arm_smmu_device *smmu, bool bypass) >> return ret; >> } >> >> + if (is_kdump_kernel()) >> + enables &= ~(CR0_EVTQEN | CR0_PRIQEN); >> >> /* Enable the SMMU interface, or ensure bypass */ >> if (!bypass || disable_bypass) { >> >> . >> > -- Thanks! BestRegards