From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 031BFC7618D for ; Thu, 6 Apr 2023 21:27:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:Message-ID: In-Reply-To:Subject:CC:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=49NohbpO8PBuhEejS8EtA0DO61NMFxl/ZNWHDVC3zqs=; b=l/i+goMhfsytH1 mHRRh02+Kcf53vV6/wHFjpXb9k/ko+IMW7YVX0lkh9pAe34l+f9TGfXQjoortmfVeLpbPJ+XEzbvS 6uKfp9m2z4GemPHTAeMsf+uIl+ZNH4NRm+E9vOtfmu1qWj01hOrCzKogSv9nDVzD354ZqW3DFHngw uGOYDVqINSJJWCjxAB9vehR8mceuajgiV/O8LvfU5miDoD9wfW8bM5lktfyhkpHUBr3MHDiW7NH3S VEOClFu07oJCUY2SXwWm9N2SrUzawm5xOe8MX1N+15tML6bMOaHDUMdd7SemlsZLiAW8n9G1dT6O/ BB7gRQdRXUBzkHu8/Acg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pkX7O-008dDv-17; Thu, 06 Apr 2023 21:26:06 +0000 Received: from smtp-fw-6002.amazon.com ([52.95.49.90]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1pkX7L-008dD2-0j for linux-arm-kernel@lists.infradead.org; Thu, 06 Apr 2023 21:26:04 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1680816363; x=1712352363; h=date:from:to:cc:subject:in-reply-to:message-id: references:mime-version; bh=dw2FXW+kXlTDs2MZ5yKwncsONZt9jql57ufr5g/GGhU=; b=Dc6ruFNsiBzGVA+RF/nvGNk72FTpppMZASNOkj1BGElcqC5g8bMakolo XvAr+ly3AikGwCJ2v8kIaNB6HknaXbayebKLU9S/anmrkOYscwmRPcQIM LHnvqutCCLs4ECGB8AA73PXWL40NWrXUsPYvU4PO9DAOJeZwaPF/1digi U=; X-IronPort-AV: E=Sophos;i="5.98,323,1673913600"; d="scan'208";a="315704168" Received: from iad12-co-svc-p1-lb1-vlan3.amazon.com (HELO email-inbound-relay-iad-1e-m6i4x-9694bb9e.us-east-1.amazon.com) ([10.43.8.6]) by smtp-border-fw-6002.iad6.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Apr 2023 21:25:59 +0000 Received: from EX19MTAUWC002.ant.amazon.com (iad12-ws-svc-p26-lb9-vlan2.iad.amazon.com [10.40.163.34]) by email-inbound-relay-iad-1e-m6i4x-9694bb9e.us-east-1.amazon.com (Postfix) with ESMTPS id CFE0681BA3; Thu, 6 Apr 2023 21:25:57 +0000 (UTC) Received: from EX19D003UWC001.ant.amazon.com (10.13.138.144) by EX19MTAUWC002.ant.amazon.com (10.250.64.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.25; Thu, 6 Apr 2023 21:25:48 +0000 Received: from freeip.amazon.com (10.106.178.8) by EX19D003UWC001.ant.amazon.com (10.13.138.144) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.26; Thu, 6 Apr 2023 21:25:47 +0000 Date: Thu, 6 Apr 2023 16:25:39 -0500 From: Geoff Blake To: Robin Murphy CC: , , , , Subject: Re: [PATCH] perf/arm-cmn: Fix DTC reset In-Reply-To: Message-ID: References: MIME-Version: 1.0 X-Originating-IP: [10.106.178.8] X-ClientProxiedBy: EX19D039UWB003.ant.amazon.com (10.13.138.93) To EX19D003UWC001.ant.amazon.com (10.13.138.144) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230406_142603_423776_2CAD17B1 X-CRM114-Status: GOOD ( 27.31 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Ran this patch on an AWS C6g.metal and unfortunately still see the spurious IRQs trigger quickly (within 10 tries) when using the following flow: perf stat -a -e arm_cmn_0/event=0x5,type=0x5/ -- sleep 600 kexec -e Adding in the simple shutdown routine, I have run over 100 of the above cycles and the spurious IRQs haven't triggered. I think we still need both for now. -Geoff On Thu, 6 Apr 2023, Robin Murphy wrote: > CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you can confirm the sender and know the content is safe. > > > > It turns out that my naive DTC reset logic fails to work as intended, > since clearing PMCR.PMU_EN appears to result in writes to PMOVSR_CLR > being ignored, while some hard-to-characterise combination of conditions > (differently between DTC0 and secondary DTCs) also appears to result in > PMOVSR reading as zero even when an overflow remains asserted. Thus > rather than resetting the PMU to a nice clean state, we can currently > end up with screaming spurious interrupts from secondary DTCs which we > can neither see nor clear. This behaviour is of course not documented. > > Resetting PMCR to disable the interrupt output but enable the PMU itself > seems to at least make the PMOVSR_CLR write work as expected on DTC0 > (although it looks like writing to PMCR twice has actually been having > some hidden side-effect of clearing any pending overflows there). > Unfortunately this still does not seem to help secondary DTCs, but going > beyond PMU scope and additionally resetting DTC_CTL does seems to make > everything work out, and superficially looks sensible. Therefore pile > that onto the house of empirical cards too, until I can check with the > hardware team whether there's actually any proper recommended way of > recovering from an arbitrary PMU state after an oops/kexec/whatever. > > Fixes: 0ba64770a2f2 ("perf: Add Arm CMN-600 PMU driver") > Reported-by: Geoff Blake > Signed-off-by: Robin Murphy > --- > This supersedes the previous shutdown/IRQ patches, now that I've > finally managed to make *some* sense of what's really going on. If > anyone's interested, this is the contrivance I used for testing: > > https://gitlab.arm.com/linux-arm/linux-rm/-/commit/d8f1035c5bc510516d6e4f0b7bf0b875a749daf7 > --- > drivers/perf/arm-cmn.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/drivers/perf/arm-cmn.c b/drivers/perf/arm-cmn.c > index 144cc08d9e04..81fe01171e33 100644 > --- a/drivers/perf/arm-cmn.c > +++ b/drivers/perf/arm-cmn.c > @@ -1899,7 +1899,10 @@ static int arm_cmn_init_dtc(struct arm_cmn *cmn, struct arm_cmn_node *dn, int id > if (dtc->irq < 0) > return dtc->irq; > > - writel_relaxed(0, dtc->base + CMN_DT_PMCR); > + if (idx == 0) > + writel_relaxed(0, dtc->base + CMN_DT_DTC_CTL); > + > + writel_relaxed(CMN_DT_PMCR_PMU_EN, dtc->base + CMN_DT_PMCR); > writel_relaxed(0x1ff, dtc->base + CMN_DT_PMOVSR_CLR); > writel_relaxed(CMN_DT_PMCR_OVFL_INTR_EN, dtc->base + CMN_DT_PMCR); > > -- > 2.39.2.101.g768bb238c484.dirty > > _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel