Received: by 2002:a05:6358:701b:b0:131:369:b2a3 with SMTP id 27csp3363484rwo; Mon, 24 Jul 2023 09:54:18 -0700 (PDT) X-Google-Smtp-Source: APBJJlHSHcGv0rWXHtc4DFAQdsBPNKDYLAylB9nJSIK/s80Vtn6tldN5d4b4OtZ5BtZ998ehpzKR X-Received: by 2002:a05:6358:89d:b0:133:c62:59f4 with SMTP id m29-20020a056358089d00b001330c6259f4mr4808471rwj.24.1690217658307; Mon, 24 Jul 2023 09:54:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690217658; cv=none; d=google.com; s=arc-20160816; b=mq/mTCvYILz1jVopTys2FKQaT+Lr+jSnhwFcgLAfj4i+FpjlWijRarIu5BOc/3qlvY /vvFimh3qTQLyXpKnrWQRiKGEILYv0ltE2BPw5QxhoE3Utw3SOI/0OUc/XfumwF58OtQ pO5fse9kn3G6yZoo+593FWHasrldgdlZwQj/5NkJiR8uSveodZ+qnt3zK8d1wgH9XdWu w7/H6bxEd0rOtQvnFU7AT0npsdJZ8X2wxdxLh6m7ss/CCbwbNRrmGVfLJvQo3uItZ1nv qmlTeJmlHW4+bKMM2iDxkxEDDc0SzqXTvIXWltEGDCc3so5i2HIqAom6GTw0HsF4PLyn 8vTg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=hqJrERUDo+zp/o5kHkQ6aMOqQKKqLEOmzFVk7PKhL/I=; fh=9YrxrVwEs3Z6TTexm99L9kwLQ5Di69nd4FbCkuao3V8=; b=OhnvBHjiCgJSrlhl9YEzk6PwWT73DV6s0vpyx54TgV76QwD6M1g5ogl63Uu5pg1TQk aPUjkGHDGk6CwTKxnItgd5Dhb+K8qd0dpqJJZhlhFXXSOPkyNbHi5DlIQNyr8wV/WOSD z+bW+Ylrx8l6WoB3EOqk3mgabF/uUdunojrUzdx0YYvVU+WWO0jPrvNlHBAZ8gJk+I8q x8lycQnsJZg9t9qMSldwFk/PKKQ3Rp8krBopNwwRzafpe5eTFlW5SYQHYs494OFJaXRs RJLV1WDXD+CMSlm6Micj+PsWDwDL4xA/rImEPdGjxoxuBTnRWbH+rtXVnoN1yEifRUCj TvvA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=JdG4Xr7V; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id d23-20020a656217000000b005634b511d74si9157290pgv.310.2023.07.24.09.54.05; Mon, 24 Jul 2023 09:54:18 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=JdG4Xr7V; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230259AbjGXP4X (ORCPT + 99 others); Mon, 24 Jul 2023 11:56:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34594 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229506AbjGXP4V (ORCPT ); Mon, 24 Jul 2023 11:56:21 -0400 Received: from mail-ej1-x62c.google.com (mail-ej1-x62c.google.com [IPv6:2a00:1450:4864:20::62c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9FD13187 for ; Mon, 24 Jul 2023 08:56:20 -0700 (PDT) Received: by mail-ej1-x62c.google.com with SMTP id a640c23a62f3a-993a37b79e2so729150766b.1 for ; Mon, 24 Jul 2023 08:56:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1690214178; x=1690818978; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=hqJrERUDo+zp/o5kHkQ6aMOqQKKqLEOmzFVk7PKhL/I=; b=JdG4Xr7VqlTXKGF8SSI6DyfjkU4GYVHVVgHHIAcG8So1/im/pm0YxYokFrMbsgmwB+ nt5DZ6HvPlimfjhV7cS26UwBr/d9Jogp7N7Aj2d7hApdYKziTwU1WPbWvdOfj1obdI57 R6mEp+LXChBtdUmLN8VdSN9SvyqpD+M9U9X+4= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690214178; x=1690818978; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hqJrERUDo+zp/o5kHkQ6aMOqQKKqLEOmzFVk7PKhL/I=; b=HD+6xZN3+pXZI9ev1V0Z3JIYIgMxJ0g8jFO6AWtJXNBZMmbyJOcKWtMyk7/qkSDbYg SR1CfGa/cYkJG55dwpg2YYTS9Vojf3rQ3GqKscvE2XcKBHCRtshCHanQrhuFjMi4x2C0 P4EhIOACaQkbTdgqcdS4xyHMb8NVY//zLr9mTRjXJ8zN0tt1J950QzFllvKVuR4JS6am czp3GUMxu816M4tcUJ4Z+ZaOZn4i/9fBrszHqBGCimketbzKnIbDSdjvRsoAQaVKMG+X lgN+uZdh91rTN8XW70H+a4yIA5927pkUFGqYRg0aH6pl/P2h6lNFIY5TMXvgql0dPxs1 iVew== X-Gm-Message-State: ABy/qLbYKuFGvgV3WGpADMXcNxnkfgD8XFjkGtHApz0OSy3EHJYItTaB w8mDqvwbNR86HRLbcwjyb/NTIB2L4MSmWQHUgJY1TR/I X-Received: by 2002:a17:906:53d0:b0:970:1b2d:45cc with SMTP id p16-20020a17090653d000b009701b2d45ccmr9985178ejo.57.1690214178072; Mon, 24 Jul 2023 08:56:18 -0700 (PDT) Received: from mail-wm1-f48.google.com (mail-wm1-f48.google.com. [209.85.128.48]) by smtp.gmail.com with ESMTPSA id qn15-20020a170907210f00b009892cca8ae3sm6897452ejb.165.2023.07.24.08.56.17 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 24 Jul 2023 08:56:17 -0700 (PDT) Received: by mail-wm1-f48.google.com with SMTP id 5b1f17b1804b1-3fbb07e7155so125715e9.0 for ; Mon, 24 Jul 2023 08:56:17 -0700 (PDT) X-Received: by 2002:a50:f68e:0:b0:522:3ead:377 with SMTP id d14-20020a50f68e000000b005223ead0377mr33590edn.7.1690214156878; Mon, 24 Jul 2023 08:55:56 -0700 (PDT) MIME-Version: 1.0 References: <20230601213440.2488667-1-dianders@chromium.org> In-Reply-To: <20230601213440.2488667-1-dianders@chromium.org> From: Doug Anderson Date: Mon, 24 Jul 2023 08:55:44 -0700 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v9 0/7] arm64: Add debug IPI for backtraces / kgdb; try to use NMI for it To: Mark Rutland , Catalin Marinas , Will Deacon , Sumit Garg , Daniel Thompson , Marc Zyngier Cc: linux-perf-users@vger.kernel.org, ito-yuichi@fujitsu.com, Chen-Yu Tsai , Ard Biesheuvel , Stephen Boyd , Peter Zijlstra , Thomas Gleixner , linux-arm-kernel@lists.infradead.org, kgdb-bugreport@lists.sourceforge.net, Masayoshi Mizuma , "Rafael J . Wysocki" , Lecopzer Chen , Andrey Konovalov , Ben Dooks , Frederic Weisbecker , "Gautham R. Shenoy" , Ingo Molnar , Jason Wessel , Josh Poimboeuf , Masahiro Yamada , Valentin Schneider , Wei Li , linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, 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 lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi folks, On Thu, Jun 1, 2023 at 2:37=E2=80=AFPM Douglas Anderson wrote: > > This is an attempt to resurrect Sumit's old patch series [1] that > allowed us to use the arm64 pseudo-NMI to get backtraces of CPUs and > also to round up CPUs in kdb/kgdb. The last post from Sumit that I > could find was v7, so I started my series at v8. I haven't copied all > of his old changelongs here, but you can find them from the link. > > I'm really looking for a way to land this patch series. In response to > v8, Mark Rutland indicated [2] that he was worried about the soundness > of pseudo NMI. Those definitely need to get fixed, but IMO this patch > series could still land in the meantime. That would at least let > people test with it. > > Request for anyone reading this: please help indicate your support of > this patch series landing by replying, even if you don't have the > background for a full review. My suspicion is that there are a lot of > people who agree that this would be super useful to get landed. > > Since v8, I have cleaned up this patch series by integrating the 10th > patch from v8 [3] into the whole series. As part of this, I renamed > the "NMI IPI" to the "debug IPI" since it could now be backed by a > regular IPI in the case that pseudo NMIs weren't available. With the > fallback, this allowed me to drop some extra patches from the > series. This feels (to me) to be pretty clean and hopefully others > agree. Any patch I touched significantly I removed Masayoshi and > Chen-Yu's tags from. > > ...also in v8, I reorderd the patches a bit in a way that seemed a > little cleaner to me. > > Since v7, I have: > * Addressed the small amount of feedback that was there for v7. > * Rebased. > * Added a new patch that prevents us from spamming the logs with idle > tasks. > * Added an extra patch to gracefully fall back to regular IPIs if > pseudo-NMIs aren't there. > > It can be noted that this patch series works very well with the recent > "hardlockup" patches that have landed through Andrew Morton's tree and > are currently in linuxnext. It works especially well with the "buddy" > lockup detector. > > [1] https://lore.kernel.org/linux-arm-kernel/1604317487-14543-1-git-send-= email-sumit.garg@linaro.org/ > [2] https://lore.kernel.org/lkml/ZFvGqD%2F%2Fpm%2FlZb+p@FVFF77S0Q05N.camb= ridge.arm.com/ > [3] https://lore.kernel.org/r/20230419155341.v8.10.Ic3659997d6243139d0522= fc3afcdfd88d7a5f030@changeid/ > > Changes in v9: > - Add a warning if we don't have enough IPIs for the NMI IPI > - Added comments that we might not be using NMI always. > - Added missing "inline" > - Added to commit message that this doesn't catch all cases. > - Fold in v8 patch #10 ("Fallback to a regular IPI if NMI isn't enabled") > - Moved header file out of "include" since it didn't need to be there. > - Remove arm64_supports_nmi() > - Remove fallback for when debug IPI isn't available. > - Renamed "NMI IPI" to "debug IPI" since it might not be backed by NMI. > - Update commit description > - arch_trigger_cpumask_backtrace() no longer returns bool > > Changes in v8: > - "Provide a stub kgdb_nmicallback() if !CONFIG_KGDB" new for v8 > - "Tag the arm64 idle functions as __cpuidle" new for v8 > - Removed "#ifdef CONFIG_SMP" since arm64 is always SMP > - debug_ipi_setup() and debug_ipi_teardown() no longer take cpu param > > Douglas Anderson (2): > arm64: idle: Tag the arm64 idle functions as __cpuidle > kgdb: Provide a stub kgdb_nmicallback() if !CONFIG_KGDB > > Sumit Garg (5): > irqchip/gic-v3: Enable support for SGIs to act as NMIs > arm64: Add framework for a debug IPI > arm64: smp: Assign and setup the debug IPI > arm64: ipi_debug: Add support for backtrace using the debug IPI > arm64: kgdb: Roundup cpus using the debug IPI > > arch/arm64/include/asm/irq.h | 3 + > arch/arm64/kernel/Makefile | 2 +- > arch/arm64/kernel/idle.c | 4 +- > arch/arm64/kernel/ipi_debug.c | 102 ++++++++++++++++++++++++++++++++++ > arch/arm64/kernel/ipi_debug.h | 13 +++++ > arch/arm64/kernel/kgdb.c | 14 +++++ > arch/arm64/kernel/smp.c | 11 ++++ > drivers/irqchip/irq-gic-v3.c | 29 +++++++--- > include/linux/kgdb.h | 1 + > 9 files changed, 168 insertions(+), 11 deletions(-) I'm looking for some ideas on what to do to move this patch series forward. Thanks to Daniel, the kgdb patch is now in Linus's tree which hopefully makes this simpler to land. I guess there is still the irqchip dependency that will need to be sorted out, though... Even if folks aren't in agreement about whether this is ready to be enabled in production, I don't think anything here is super objectionable or controversial, is it? Can we land it? If you feel like it needs extra review, would it help if I tried to drum up some extra people to provide review feedback? Also: in case it's interesting to anyone, I've been doing benchmarks on sc7180-trogdor devices in preparation for enabling this. On that platform, I did manage to see about 4% reduction in a set of hackbench numbers when fully enabling pseudo-NMI. However, when I instead ran Speedometer 2.1 I saw no difference. See: https://issuetracker.google.com/issues/197061987 -Doug