From nobody Mon Feb 9 07:23:46 2026 Received: from mail-pl1-f176.google.com (mail-pl1-f176.google.com [209.85.214.176]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 040831DEFC5 for ; Wed, 29 Jan 2025 16:27:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738168054; cv=none; b=Awa9RW5m9TSItIXMaxnqw4B50sAo8xyPLkO6yZiCrXaeeaYkp1fecaox5tDmIn/MKd6eZpTL12lluAkC6hPi0SX4Vblvkmv84afrTTNgbB1mLkpFj7Po2hCO9AHOAL1wpeivvhprjT7vekFajVXV4P9m8owsSyKd76ZTfz4PD2A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738168054; c=relaxed/simple; bh=eCIe90KSZZjMhV6TiRvo2SpTu80tDOCPWm0m8q0S1wU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=BnC8DW7jA1arHdblp94xkb4ieK04DLOtaDTPrE+NdZPJ93dPbirYEjBA5Kfflee1STvRr/4dC1gqm+jM90S+uo4ZzdfmWQ1NeFAcFQtjjMMQWxY9XYA5SWANQRhfYhxvESkTrigVWpTB/DIZgxFzkibAKRppLqklcB59p7kJa18= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=FUkKoV6H; arc=none smtp.client-ip=209.85.214.176 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="FUkKoV6H" Received: by mail-pl1-f176.google.com with SMTP id d9443c01a7336-218c8aca5f1so12667885ad.0 for ; Wed, 29 Jan 2025 08:27:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1738168052; x=1738772852; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=LaOowRFYa0+jqNGGGruKV2+3LEXvyHbn984ywn70T5s=; b=FUkKoV6HOJDVlesUMJZ3ZMvtEtAYChGD+Ciduf8BREHknAtsbIHS/+FIMUxNy0P2xx TyJn+TruKL4JxTAc/Ef7GeZ5eKjvrONPts7lxeLQjuCvg7f/+J+DPyohoLzGkVOCbsbl HmVMoxUa/uGE+n1+m1BLSSz3asISJHgLxHBdA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738168052; x=1738772852; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=LaOowRFYa0+jqNGGGruKV2+3LEXvyHbn984ywn70T5s=; b=Y9dVl0wvll0DfIgVvL31FvO7enjAiNYQpXm6IsoVAQjWUIrYhW/6LriFgXTW/27zGm eZUF/eWnfDJQY+3R4eW4UKPzmmyQ8KdOWnxD4XRnCd6RSHhOGWL1PoK2fh3texI4TKcU fXXLC9OOTP4zJqjr8eA3lyMXR8lWkH3ir+0RtYF6COyZoHCavmIn/VQCi+yHFK9B9U89 GCFDQ4hL/ieeIONFuqBxAsza1PZnQZsQ+FZVbr5ou/HhrIcXMM9CILnxrSlAScvfM8jg AXEtTafsGJdfuzRm3G8bQl/yNHHlsAO3llSylPwUkOrpPGAv/B1VI572zr+4ChyV8qba tKnw== X-Forwarded-Encrypted: i=1; AJvYcCVsUa2TmQwhTd2BhHG14TdyKRDRW5H7xWRl8JoJXIMpAVXHsoddQFPiQLVioZ23i4kvCiI4AGS2Zv9rQ/E=@vger.kernel.org X-Gm-Message-State: AOJu0YyHNi67ntbhfW+x4UM4JOc2P2w7Hs5XnOFGCmElFQBMVnsW2uxI C34GuoX9iUrKM0POv64v5jpd4TD8rSIm6DXaRRcjzbmO6JHtEmg5TTWps5izHQ== X-Gm-Gg: ASbGncuTgBcPdSJ8HO/1rtWe7T0sk+Np4/JPUEKUnRldAoQax5P2nuCk8vv8nW0nbrz lSk/haCZNozXJcL+GTzNa5CfpGA8kiQsU0hatKwShahnwpvjlDOxxLa+5kJLtS6SB56VU/GdPMJ ly8EjIagiH7mcyIyJtU2R+qgsp1Yv2JmV19mpkBoShkl87CifLEa8cUXrY769pm96n7m+vmDyQw HNfOo68J07p/Du02IFxFKAh+NCDG9BF1WJtzDWp/QWwGpuUQUf8eSWPjVIrouHVRrV7HZR76YHU HPPhJdr4LJKrktmBJC8MzkHCq36nEpMOKfY= X-Google-Smtp-Source: AGHT+IEep8oa1oyp67kZc81SS3mOu+E4wpbyZri1DcdrjkAF5D1o6gTTmENkyrk+Z2nkxLrI6opl3g== X-Received: by 2002:a05:6a20:9e46:b0:1db:eff0:6ae7 with SMTP id adf61e73a8af0-1ed7a5d5366mr5884564637.33.1738168052269; Wed, 29 Jan 2025 08:27:32 -0800 (PST) Received: from dianders.sjc.corp.google.com ([2620:15c:9d:2:fa8a:f68a:6cb9:40b2]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-ac496cb4810sm10577009a12.66.2025.01.29.08.27.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Jan 2025 08:27:31 -0800 (PST) From: Douglas Anderson To: Greg Kroah-Hartman , Jiri Slaby , Daniel Thompson Cc: "Dr . David Alan Gilbert" , kgdb-bugreport@lists.sourceforge.net, Anton Vorontsov , Sumit Garg , linux-serial@vger.kernel.org, Douglas Anderson , Andy Shevchenko , Arnd Bergmann , Geert Uytterhoeven , Hugo Villeneuve , Jason Wessel , Nicolas Ferre , Niklas Schnelle , Robert Marko , linux-kernel@vger.kernel.org Subject: [PATCH 1/3] Revert "tty/serial: Add kgdb_nmi driver" Date: Wed, 29 Jan 2025 08:25:50 -0800 Message-ID: <20250129082535.1.Ia095eac1ae357f87d23e7af2206741f5d40788f1@changeid> X-Mailer: git-send-email 2.48.1.262.g85cc9f2d1e-goog In-Reply-To: <20250129162700.848018-1-dianders@chromium.org> References: <20250129162700.848018-1-dianders@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable This reverts commit 0c57dfcc6c1d037243c2f8fbf62eab3633326ec0. The functionality was supoosed to be used by a later patch in the series that never landed [1]. Drop it. NOTE: part of functionality was already reverted by commit 39d0be87438a ("serial: kgdb_nmi: Remove unused knock code"). Also note that this revert is not a clean revert given code changes that have happened in the meantime. It's obvious that nobody is using this code since the two exposed functions (kgdb_register_nmi_console() and kgdb_unregister_nmi_console()) are both no-ops if "arch_kgdb_ops.enable_nmi" is not defined. No architectures define it. [1] https://lore.kernel.org/lkml/1348522080-32629-9-git-send-email-anton.vo= rontsov@linaro.org/ Signed-off-by: Douglas Anderson Acked-by: Andy Shevchenko --- drivers/tty/serial/Kconfig | 19 --- drivers/tty/serial/Makefile | 1 - drivers/tty/serial/kgdb_nmi.c | 280 ---------------------------------- drivers/tty/serial/kgdboc.c | 8 - include/linux/kgdb.h | 8 - 5 files changed, 316 deletions(-) delete mode 100644 drivers/tty/serial/kgdb_nmi.c diff --git a/drivers/tty/serial/Kconfig b/drivers/tty/serial/Kconfig index 976dae3bb1bb..f21cad6aaa47 100644 --- a/drivers/tty/serial/Kconfig +++ b/drivers/tty/serial/Kconfig @@ -179,25 +179,6 @@ config SERIAL_ATMEL_TTYAT =20 Say Y if you have an external 8250/16C550 UART. If unsure, say N. =20 -config SERIAL_KGDB_NMI - bool "Serial console over KGDB NMI debugger port" - depends on KGDB_SERIAL_CONSOLE - help - This special driver allows you to temporary use NMI debugger port - as a normal console (assuming that the port is attached to KGDB). - - Unlike KDB's disable_nmi command, with this driver you are always - able to go back to the debugger using KGDB escape sequence ($3#33). - This is because this console driver processes the input in NMI - context, and thus is able to intercept the magic sequence. - - Note that since the console interprets input and uses polling - communication methods, for things like PPP you still must fully - detach debugger port from the KGDB NMI (i.e. disable_nmi), and - use raw console. - - If unsure, say N. - config SERIAL_MESON tristate "Meson serial port support" depends on ARCH_MESON || COMPILE_TEST diff --git a/drivers/tty/serial/Makefile b/drivers/tty/serial/Makefile index 6ff74f0a9530..3019260d9120 100644 --- a/drivers/tty/serial/Makefile +++ b/drivers/tty/serial/Makefile @@ -96,6 +96,5 @@ obj-$(CONFIG_SERIAL_ZS) +=3D zs.o # GPIOLIB helpers for modem control lines obj-$(CONFIG_SERIAL_MCTRL_GPIO) +=3D serial_mctrl_gpio.o =20 -obj-$(CONFIG_SERIAL_KGDB_NMI) +=3D kgdb_nmi.o obj-$(CONFIG_KGDB_SERIAL_CONSOLE) +=3D kgdboc.o obj-$(CONFIG_SERIAL_NUVOTON_MA35D1) +=3D ma35d1_serial.o diff --git a/drivers/tty/serial/kgdb_nmi.c b/drivers/tty/serial/kgdb_nmi.c deleted file mode 100644 index 2833708e369f..000000000000 --- a/drivers/tty/serial/kgdb_nmi.c +++ /dev/null @@ -1,280 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * KGDB NMI serial console - * - * Copyright 2010 Google, Inc. - * Arve Hj=C3=B8nnev=C3=A5g - * Colin Cross - * Copyright 2012 Linaro Ltd. - * Anton Vorontsov - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -static atomic_t kgdb_nmi_num_readers =3D ATOMIC_INIT(0); - -static int kgdb_nmi_console_setup(struct console *co, char *options) -{ - arch_kgdb_ops.enable_nmi(1); - - /* The NMI console uses the dbg_io_ops to issue console messages. To - * avoid duplicate messages during kdb sessions we must inform kdb's - * I/O utilities that messages sent to the console will automatically - * be displayed on the dbg_io. - */ - dbg_io_ops->cons =3D co; - - return 0; -} - -static void kgdb_nmi_console_write(struct console *co, const char *s, uint= c) -{ - int i; - - for (i =3D 0; i < c; i++) - dbg_io_ops->write_char(s[i]); -} - -static struct tty_driver *kgdb_nmi_tty_driver; - -static struct tty_driver *kgdb_nmi_console_device(struct console *co, int = *idx) -{ - *idx =3D co->index; - return kgdb_nmi_tty_driver; -} - -static struct console kgdb_nmi_console =3D { - .name =3D "ttyNMI", - .setup =3D kgdb_nmi_console_setup, - .write =3D kgdb_nmi_console_write, - .device =3D kgdb_nmi_console_device, - .flags =3D CON_PRINTBUFFER | CON_ANYTIME, - .index =3D -1, -}; - -/* - * This is usually the maximum rate on debug ports. We make fifo large eno= ugh - * to make copy-pasting to the terminal usable. - */ -#define KGDB_NMI_BAUD 115200 -#define KGDB_NMI_FIFO_SIZE roundup_pow_of_two(KGDB_NMI_BAUD / 8 / HZ) - -struct kgdb_nmi_tty_priv { - struct tty_port port; - struct timer_list timer; - STRUCT_KFIFO(char, KGDB_NMI_FIFO_SIZE) fifo; -}; - -static struct tty_port *kgdb_nmi_port; - -/* - * The tasklet is cheap, it does not cause wakeups when reschedules itself, - * instead it waits for the next tick. - */ -static void kgdb_nmi_tty_receiver(struct timer_list *t) -{ - struct kgdb_nmi_tty_priv *priv =3D from_timer(priv, t, timer); - char ch; - - priv->timer.expires =3D jiffies + (HZ/100); - add_timer(&priv->timer); - - if (likely(!atomic_read(&kgdb_nmi_num_readers) || - !kfifo_len(&priv->fifo))) - return; - - while (kfifo_out(&priv->fifo, &ch, 1)) - tty_insert_flip_char(&priv->port, ch, TTY_NORMAL); - tty_flip_buffer_push(&priv->port); -} - -static int kgdb_nmi_tty_activate(struct tty_port *port, struct tty_struct = *tty) -{ - struct kgdb_nmi_tty_priv *priv =3D - container_of(port, struct kgdb_nmi_tty_priv, port); - - kgdb_nmi_port =3D port; - priv->timer.expires =3D jiffies + (HZ/100); - add_timer(&priv->timer); - - return 0; -} - -static void kgdb_nmi_tty_shutdown(struct tty_port *port) -{ - struct kgdb_nmi_tty_priv *priv =3D - container_of(port, struct kgdb_nmi_tty_priv, port); - - del_timer(&priv->timer); - kgdb_nmi_port =3D NULL; -} - -static const struct tty_port_operations kgdb_nmi_tty_port_ops =3D { - .activate =3D kgdb_nmi_tty_activate, - .shutdown =3D kgdb_nmi_tty_shutdown, -}; - -static int kgdb_nmi_tty_install(struct tty_driver *drv, struct tty_struct = *tty) -{ - struct kgdb_nmi_tty_priv *priv; - int ret; - - priv =3D kzalloc(sizeof(*priv), GFP_KERNEL); - if (!priv) - return -ENOMEM; - - INIT_KFIFO(priv->fifo); - timer_setup(&priv->timer, kgdb_nmi_tty_receiver, 0); - tty_port_init(&priv->port); - priv->port.ops =3D &kgdb_nmi_tty_port_ops; - tty->driver_data =3D priv; - - ret =3D tty_port_install(&priv->port, drv, tty); - if (ret) { - pr_err("%s: can't install tty port: %d\n", __func__, ret); - goto err; - } - return 0; -err: - tty_port_destroy(&priv->port); - kfree(priv); - return ret; -} - -static void kgdb_nmi_tty_cleanup(struct tty_struct *tty) -{ - struct kgdb_nmi_tty_priv *priv =3D tty->driver_data; - - tty->driver_data =3D NULL; - tty_port_destroy(&priv->port); - kfree(priv); -} - -static int kgdb_nmi_tty_open(struct tty_struct *tty, struct file *file) -{ - struct kgdb_nmi_tty_priv *priv =3D tty->driver_data; - unsigned int mode =3D file->f_flags & O_ACCMODE; - int ret; - - ret =3D tty_port_open(&priv->port, tty, file); - if (!ret && (mode =3D=3D O_RDONLY || mode =3D=3D O_RDWR)) - atomic_inc(&kgdb_nmi_num_readers); - - return ret; -} - -static void kgdb_nmi_tty_close(struct tty_struct *tty, struct file *file) -{ - struct kgdb_nmi_tty_priv *priv =3D tty->driver_data; - unsigned int mode =3D file->f_flags & O_ACCMODE; - - if (mode =3D=3D O_RDONLY || mode =3D=3D O_RDWR) - atomic_dec(&kgdb_nmi_num_readers); - - tty_port_close(&priv->port, tty, file); -} - -static void kgdb_nmi_tty_hangup(struct tty_struct *tty) -{ - struct kgdb_nmi_tty_priv *priv =3D tty->driver_data; - - tty_port_hangup(&priv->port); -} - -static unsigned int kgdb_nmi_tty_write_room(struct tty_struct *tty) -{ - /* Actually, we can handle any amount as we use polled writes. */ - return 2048; -} - -static ssize_t kgdb_nmi_tty_write(struct tty_struct *tty, const u8 *buf, - size_t c) -{ - int i; - - for (i =3D 0; i < c; i++) - dbg_io_ops->write_char(buf[i]); - return c; -} - -static const struct tty_operations kgdb_nmi_tty_ops =3D { - .open =3D kgdb_nmi_tty_open, - .close =3D kgdb_nmi_tty_close, - .install =3D kgdb_nmi_tty_install, - .cleanup =3D kgdb_nmi_tty_cleanup, - .hangup =3D kgdb_nmi_tty_hangup, - .write_room =3D kgdb_nmi_tty_write_room, - .write =3D kgdb_nmi_tty_write, -}; - -int kgdb_register_nmi_console(void) -{ - int ret; - - if (!arch_kgdb_ops.enable_nmi) - return 0; - - kgdb_nmi_tty_driver =3D tty_alloc_driver(1, TTY_DRIVER_REAL_RAW); - if (IS_ERR(kgdb_nmi_tty_driver)) { - pr_err("%s: cannot allocate tty\n", __func__); - return PTR_ERR(kgdb_nmi_tty_driver); - } - kgdb_nmi_tty_driver->driver_name =3D "ttyNMI"; - kgdb_nmi_tty_driver->name =3D "ttyNMI"; - kgdb_nmi_tty_driver->num =3D 1; - kgdb_nmi_tty_driver->type =3D TTY_DRIVER_TYPE_SERIAL; - kgdb_nmi_tty_driver->subtype =3D SERIAL_TYPE_NORMAL; - kgdb_nmi_tty_driver->init_termios =3D tty_std_termios; - tty_termios_encode_baud_rate(&kgdb_nmi_tty_driver->init_termios, - KGDB_NMI_BAUD, KGDB_NMI_BAUD); - tty_set_operations(kgdb_nmi_tty_driver, &kgdb_nmi_tty_ops); - - ret =3D tty_register_driver(kgdb_nmi_tty_driver); - if (ret) { - pr_err("%s: can't register tty driver: %d\n", __func__, ret); - goto err_drv_reg; - } - - register_console(&kgdb_nmi_console); - - return 0; -err_drv_reg: - tty_driver_kref_put(kgdb_nmi_tty_driver); - return ret; -} -EXPORT_SYMBOL_GPL(kgdb_register_nmi_console); - -int kgdb_unregister_nmi_console(void) -{ - int ret; - - if (!arch_kgdb_ops.enable_nmi) - return 0; - arch_kgdb_ops.enable_nmi(0); - - ret =3D unregister_console(&kgdb_nmi_console); - if (ret) - return ret; - - tty_unregister_driver(kgdb_nmi_tty_driver); - tty_driver_kref_put(kgdb_nmi_tty_driver); - - return 0; -} -EXPORT_SYMBOL_GPL(kgdb_unregister_nmi_console); diff --git a/drivers/tty/serial/kgdboc.c b/drivers/tty/serial/kgdboc.c index 58ea1e1391ce..85f6c5a76e0f 100644 --- a/drivers/tty/serial/kgdboc.c +++ b/drivers/tty/serial/kgdboc.c @@ -186,8 +186,6 @@ static void cleanup_kgdboc(void) if (configured !=3D 1) return; =20 - if (kgdb_unregister_nmi_console()) - return; kgdboc_unregister_kbd(); kgdb_unregister_io_module(&kgdboc_io_ops); } @@ -250,16 +248,10 @@ static int configure_kgdboc(void) if (err) goto noconfig; =20 - err =3D kgdb_register_nmi_console(); - if (err) - goto nmi_con_failed; - configured =3D 1; =20 return 0; =20 -nmi_con_failed: - kgdb_unregister_io_module(&kgdboc_io_ops); noconfig: kgdboc_unregister_kbd(); configured =3D 0; diff --git a/include/linux/kgdb.h b/include/linux/kgdb.h index 51ef131e66b7..14739952698b 100644 --- a/include/linux/kgdb.h +++ b/include/linux/kgdb.h @@ -306,14 +306,6 @@ extern const struct kgdb_arch arch_kgdb_ops; =20 extern unsigned long kgdb_arch_pc(int exception, struct pt_regs *regs); =20 -#ifdef CONFIG_SERIAL_KGDB_NMI -extern int kgdb_register_nmi_console(void); -extern int kgdb_unregister_nmi_console(void); -#else -static inline int kgdb_register_nmi_console(void) { return 0; } -static inline int kgdb_unregister_nmi_console(void) { return 0; } -#endif - extern int kgdb_register_io_module(struct kgdb_io *local_kgdb_io_ops); extern void kgdb_unregister_io_module(struct kgdb_io *local_kgdb_io_ops); extern struct kgdb_io *dbg_io_ops; --=20 2.48.1.262.g85cc9f2d1e-goog From nobody Mon Feb 9 07:23:46 2026 Received: from mail-pl1-f173.google.com (mail-pl1-f173.google.com [209.85.214.173]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8A077BA50 for ; Wed, 29 Jan 2025 16:27:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738168057; cv=none; b=FQcycV5DnqxPClKovc+fGqJdukLweCZwwTmBHTa01zzwN9sNQCLXCRSXe+pl6Uz2jjf/kE6fLQoBCkvCoMOmw6awDrprZC1oRbbWMj05BOMXMIXL4gguvyou3YWD4hEfUpczDiMIcfukK43wite2D3RwkkeIWKtICEwQDO3iPI8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738168057; c=relaxed/simple; bh=xC0xL3xkUrJX5BUOGfgoFPaOTr3+cZj7iUN6rx1TtGs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=A7joYdl9O4cK1iKgigglPp3d+mnGc5iIBg5ejwdPNf/rCUP/7l2bNjAx8LbZHEoUo8yhDZWJk+jflshGG67eTb4if47ZV/srPUCjz9Q68amzU8FZVqqAWCDLcTXslgkRjCQ7DcJsmph86nldNkqLVGE1xiq9wuDDaLrXabQSzFs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=dsMSUfXJ; arc=none smtp.client-ip=209.85.214.173 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="dsMSUfXJ" Received: by mail-pl1-f173.google.com with SMTP id d9443c01a7336-2166f1e589cso10455065ad.3 for ; Wed, 29 Jan 2025 08:27:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1738168055; x=1738772855; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=SlqbrB8qvt9xCnWbF/o5yExRVumEzsDKl37nom5IOEo=; b=dsMSUfXJNi8LYLrdK12UKImSskE5VUlStvYcvDuBEmGM5MvFGMeNoKni7tLBBM/6IT voZX0Q5YcBojiYLHcM08qJJ6tMrHXmI8b7eGVENzLWV/yFWNtQec0sWNq7iNQ/YhseiG SbMhUAp+v8d61BaEkC2nWE6o2b3g7F+crW5Bs= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738168055; x=1738772855; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=SlqbrB8qvt9xCnWbF/o5yExRVumEzsDKl37nom5IOEo=; b=GxL71PwAICD3h2flionOEJlA+EDmQAjRqoZ6ycmHR7rPywB4rs9CVXtMoWLWbax44c NBeqrK0ojP2XCaiecIXE/RYkq7qkkwp9Bqh6UzgZ7VMC2CutRXqB8VFB5lO3U5jtQJYY CflG2uMzqDaK5RmkfJHFThdN3XvsQqE7cvJkGDdStre7ltg0MS/iT+9vlZ3KhvdaiB79 FYSyGCADHAFtQHeyKCxdWKPmoeOrxgE7TmA28EYoF6g16RrqaCKtNMH3v2jKFg+iOt1o oC3irMNBtEWy8zOzUR//EEU3HjwKZkpO4u8iPEcD+AqQGLueENm5hOAOrZNJ4dWw58jY DFtg== X-Forwarded-Encrypted: i=1; AJvYcCXf/qBHKtKbuzQqFVWiaOYAuUkcvtUi9nJrppNvjtLgaVwuYYNITmnRD23aGZhRup5QURj8d/+OyjrcH4Y=@vger.kernel.org X-Gm-Message-State: AOJu0YwiMNj8DH/r2RlL1AJITaErtVMtURuu9PuuOeJ5CqlbiiXfvOOe SV1EaVV/8wRZ9u5yF4b5M8b2wGbgpOXgQTpOctqTLCqGjMfhT9D8KPFRfaLyYw== X-Gm-Gg: ASbGncu3NnEGfySHQ8NBhniK9cFbuSeor49i0NM9cH/V4k59z4Y+Q/erGTkHDwqs8AM dDRANha+vErlje6oviSA99Abkc+5AB5bJxYYzI2IDcfbNLOVxgQ9WJjJUIql1wbiT50ssPCtJ4Z j86fBbykz3kYqPUCDXXMeCWNE0157Y82ozDiO8gZSwZVyOdbgh0BCMoQMFiOdrZa+ydbE0w9JVS DxfxeFh7cVVKO/eQF4dO2zliUmoW2kBi5dFvFYKkTRNDaaoWheeCMFoX6bQ7J7Kbb84cqGF5SKM RlBk/afQodIJ06tWiSYwNs/nh7+Ed5ZN+L0cXUyeRMSQlA== X-Google-Smtp-Source: AGHT+IGwHJzqht4xgAE8aAHlAbgCQ+Cy1fdEcP9Joan7vjqiFIKdYsXcIDYJ2XLcGb2ysyVeLoX41A== X-Received: by 2002:a05:6a20:12c1:b0:1db:e0d7:675c with SMTP id adf61e73a8af0-1ed7a4c9922mr7132442637.13.1738168054926; Wed, 29 Jan 2025 08:27:34 -0800 (PST) Received: from dianders.sjc.corp.google.com ([2620:15c:9d:2:fa8a:f68a:6cb9:40b2]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-ac496cb4810sm10577009a12.66.2025.01.29.08.27.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Jan 2025 08:27:33 -0800 (PST) From: Douglas Anderson To: Greg Kroah-Hartman , Jiri Slaby , Daniel Thompson Cc: "Dr . David Alan Gilbert" , kgdb-bugreport@lists.sourceforge.net, Anton Vorontsov , Sumit Garg , linux-serial@vger.kernel.org, Douglas Anderson , Jason Wessel , Nir Lichtman , Thorsten Blum , Yuran Pereira , Zheng Zengkai , linux-kernel@vger.kernel.org Subject: [PATCH 2/3] Revert "kdb: Implement disable_nmi command" Date: Wed, 29 Jan 2025 08:25:51 -0800 Message-ID: <20250129082535.2.Ib91bfb95bdcf77591257a84063fdeb5b4dce65b1@changeid> X-Mailer: git-send-email 2.48.1.262.g85cc9f2d1e-goog In-Reply-To: <20250129162700.848018-1-dianders@chromium.org> References: <20250129162700.848018-1-dianders@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" This reverts commit ad394f66fa57ae66014cb74f337e2820bac4c417. No architectures ever implemented `enable_nmi` since the later patches in the series adding it never landed. It's been a long time. Drop it. NOTE: this is not a clean revert due to changes in the file in the meantime. Signed-off-by: Douglas Anderson --- kernel/debug/kdb/kdb_main.c | 37 ------------------------------------- 1 file changed, 37 deletions(-) diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c index 5f4be507d79f..3a5408b54570 100644 --- a/kernel/debug/kdb/kdb_main.c +++ b/kernel/debug/kdb/kdb_main.c @@ -25,7 +25,6 @@ #include #include #include -#include #include #include #include @@ -2119,32 +2118,6 @@ static int kdb_dmesg(int argc, const char **argv) return 0; } #endif /* CONFIG_PRINTK */ - -/* Make sure we balance enable/disable calls, must disable first. */ -static atomic_t kdb_nmi_disabled; - -static int kdb_disable_nmi(int argc, const char *argv[]) -{ - if (atomic_read(&kdb_nmi_disabled)) - return 0; - atomic_set(&kdb_nmi_disabled, 1); - arch_kgdb_ops.enable_nmi(0); - return 0; -} - -static int kdb_param_enable_nmi(const char *val, const struct kernel_param= *kp) -{ - if (!atomic_add_unless(&kdb_nmi_disabled, -1, 0)) - return -EINVAL; - arch_kgdb_ops.enable_nmi(1); - return 0; -} - -static const struct kernel_param_ops kdb_param_ops_enable_nmi =3D { - .set =3D kdb_param_enable_nmi, -}; -module_param_cb(enable_nmi, &kdb_param_ops_enable_nmi, NULL, 0600); - /* * kdb_cpu - This function implements the 'cpu' command. * cpu [] @@ -2836,20 +2809,10 @@ static kdbtab_t maintab[] =3D { }, }; =20 -static kdbtab_t nmicmd =3D { - .name =3D "disable_nmi", - .func =3D kdb_disable_nmi, - .usage =3D "", - .help =3D "Disable NMI entry to KDB", - .flags =3D KDB_ENABLE_ALWAYS_SAFE, -}; - /* Initialize the kdb command table. */ static void __init kdb_inittab(void) { kdb_register_table(maintab, ARRAY_SIZE(maintab)); - if (arch_kgdb_ops.enable_nmi) - kdb_register_table(&nmicmd, 1); } =20 /* Execute any commands defined in kdb_cmds. */ --=20 2.48.1.262.g85cc9f2d1e-goog From nobody Mon Feb 9 07:23:46 2026 Received: from mail-pl1-f175.google.com (mail-pl1-f175.google.com [209.85.214.175]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A7D4C1DF996 for ; Wed, 29 Jan 2025 16:27:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738168059; cv=none; b=LGOvacS05MxFZMDkSGhr/ZIOCjcUix/u6nkPPRo/CG1gwqBoFn7R+dB1tH4KAv59Phf4TkJagW5rpySi7IOCjLv7+0l6bT8+kmvRVy33oWZqOKFh46D1r1r0+dWpJgJztV3AgG+jFsLgnxJrbnAnsfI2uqSFmrcJz7OcMPSMf2o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738168059; c=relaxed/simple; bh=95ti/EtNpoooFEon5wbA1jBQ2db4r1XuLvR1Tv/exrQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=RGD4LBiR2w9IIrGv2jxH/tCj8rcLPQaLOXEL9XqzA90Sco3xkgrEvSTETzgMb8AF6mPfnff48R+75LjJy1jhDndPei8r3gYeckHePrYQ+TK/uyL3g6AFUFlfYwRRJunm9LTK5VkIoJjbtf/AlFfuQQ2abT/qxUrPGet21aXisI8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=nHznBXQK; arc=none smtp.client-ip=209.85.214.175 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="nHznBXQK" Received: by mail-pl1-f175.google.com with SMTP id d9443c01a7336-2156e078563so101117135ad.2 for ; Wed, 29 Jan 2025 08:27:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1738168057; x=1738772857; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=GHZ2KPsF4COFgm+b5LCKQGhzh/Bu/7L9BM3q7wjetag=; b=nHznBXQKy71iPu3Z+/xGr7pw/XOVnc9TC0065py3OcxI/B9AwAVYkSYzKCFm8w1vzV bDiLVZ7kkBP+Qj8bZ+1HY/x9vHE59RFGpqR7urnZqn6kgL0lqfD9gWsIeIpvWjEbj48H IFbxCqKnJSgYxLSbBT+hurugvvyDOgd4p97SI= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738168057; x=1738772857; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GHZ2KPsF4COFgm+b5LCKQGhzh/Bu/7L9BM3q7wjetag=; b=GudOGNl7T6mX/gkGSB9KvvbmOKnTzvxN9lK3pjvfYStOIuT3E8OHjprS7irutMKN4/ D5sE677MpGv65rFaUJHkam3WNqwGWDkNL7IuuRPRHbFBdn/+otCaw8vRO8EqMN/msFWA /8KRMH73uIusKtIxc3+XZGDrILOHPm/eXRilxVwOu1f924V+Ose4oRIH0myRNdI56JcX EQgmyrlHToDMlR4a0Iomq5uXpEZTmbwKmiOxgKcEeVL40/g4eg4nrrXSlq5NbP9Ei9Gu FAzhnWzWBDZQmoL4XfH8txvSCquNTkYwXZGHMFrAgjNAdHuUtD9FkmeyqMwkoB1XNzer GP2Q== X-Forwarded-Encrypted: i=1; AJvYcCWcjZE48vT9k3Dy1ttOzdY3o3xnbrSvHl0TOQ6Hd1ORsV1Ht+94RqtzIiD8QntLtVWEFHFvn5nUr9xm/SE=@vger.kernel.org X-Gm-Message-State: AOJu0YzT5VjXD4oVeJaftqxXwHr8LKXFsN97p7caaPEosJpsjrh9Lsda 13eYawHmVmS8Phoed0y1ptXue5afUUAoT5wS614CeD/VT5zSS361zxyapAZnRw== X-Gm-Gg: ASbGncs1bNJVJNdxUifFmViqcybkBZ/PAzaPHedq+ZCUlXtfifhC3O28YExKFweOpko hg53/BaY5QXzvH7U4qFSsbmh9RBD2OC+dFcYsqHeFLF4JGUTVmr2Ro7MgYEVQD4m3P0vug6AOL/ NeV7ZLNBvZb56HxBWk9fIGBx6j7AShpEwLGG0mR/j+Vdt4/fbXx+kug4jfNjYB/2CyzEh/Lny2F HlQvbIDiutpUV0AqTth4twTh5xbfu6maqv+D84ab7pu0UU3U56c8pHN5w6/fMEj4gZ7lyK5Z3sK 5EvjcWv2LndwGEzZwd97kvCe5+Bm83MPpbU= X-Google-Smtp-Source: AGHT+IEk/aQhe7EQCRd7H4ZWjZQuegTa1eAwg8ILNMsYIINEo4OJU9VMXs6WW1rI8GzMVr3E6kOBgg== X-Received: by 2002:a05:6a21:b8a:b0:1ea:e7be:ff27 with SMTP id adf61e73a8af0-1ed7a5b6781mr6359250637.7.1738168056947; Wed, 29 Jan 2025 08:27:36 -0800 (PST) Received: from dianders.sjc.corp.google.com ([2620:15c:9d:2:fa8a:f68a:6cb9:40b2]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-ac496cb4810sm10577009a12.66.2025.01.29.08.27.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Jan 2025 08:27:36 -0800 (PST) From: Douglas Anderson To: Greg Kroah-Hartman , Jiri Slaby , Daniel Thompson Cc: "Dr . David Alan Gilbert" , kgdb-bugreport@lists.sourceforge.net, Anton Vorontsov , Sumit Garg , linux-serial@vger.kernel.org, Douglas Anderson , Jason Wessel , linux-kernel@vger.kernel.org Subject: [PATCH 3/3] Revert "kernel/debug: Mask KGDB NMI upon entry" Date: Wed, 29 Jan 2025 08:25:52 -0800 Message-ID: <20250129082535.3.I2254953cd852f31f354456689d68b2d910de3fbe@changeid> X-Mailer: git-send-email 2.48.1.262.g85cc9f2d1e-goog In-Reply-To: <20250129162700.848018-1-dianders@chromium.org> References: <20250129162700.848018-1-dianders@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" This reverts commit 5a14fead07bcf4e0acc877a8d9e1d1f40a441153. No architectures ever implemented `enable_nmi` since the later patches in the series adding it never landed. It's been a long time. Drop it. NOTE: this is not a clean revert due to changes in the file in the meantime. Signed-off-by: Douglas Anderson --- include/linux/kgdb.h | 3 --- kernel/debug/debug_core.c | 14 +++----------- 2 files changed, 3 insertions(+), 14 deletions(-) diff --git a/include/linux/kgdb.h b/include/linux/kgdb.h index 14739952698b..5eebbe7a3545 100644 --- a/include/linux/kgdb.h +++ b/include/linux/kgdb.h @@ -257,7 +257,6 @@ extern void kgdb_arch_late(void); * hardware breakpoints. * @correct_hw_break: Allow an architecture to specify how to correct the * hardware debug registers. - * @enable_nmi: Manage NMI-triggered entry to KGDB */ struct kgdb_arch { unsigned char gdb_bpt_instr[BREAK_INSTR_SIZE]; @@ -270,8 +269,6 @@ struct kgdb_arch { void (*disable_hw_break)(struct pt_regs *regs); void (*remove_all_hw_break)(void); void (*correct_hw_break)(void); - - void (*enable_nmi)(bool on); }; =20 /** diff --git a/kernel/debug/debug_core.c b/kernel/debug/debug_core.c index ce1bb2301c06..0b9495187fba 100644 --- a/kernel/debug/debug_core.c +++ b/kernel/debug/debug_core.c @@ -837,10 +837,6 @@ kgdb_handle_exception(int evector, int signo, int ecod= e, struct pt_regs *regs) { struct kgdb_state kgdb_var; struct kgdb_state *ks =3D &kgdb_var; - int ret =3D 0; - - if (arch_kgdb_ops.enable_nmi) - arch_kgdb_ops.enable_nmi(0); /* * Avoid entering the debugger if we were triggered due to an oops * but panic_timeout indicates the system should automatically @@ -858,15 +854,11 @@ kgdb_handle_exception(int evector, int signo, int eco= de, struct pt_regs *regs) ks->linux_regs =3D regs; =20 if (kgdb_reenter_check(ks)) - goto out; /* Ouch, double exception ! */ + return 0; /* Ouch, double exception ! */ if (kgdb_info[ks->cpu].enter_kgdb !=3D 0) - goto out; + return 0; =20 - ret =3D kgdb_cpu_enter(ks, regs, DCPU_WANT_MASTER); -out: - if (arch_kgdb_ops.enable_nmi) - arch_kgdb_ops.enable_nmi(1); - return ret; + return kgdb_cpu_enter(ks, regs, DCPU_WANT_MASTER); } NOKPROBE_SYMBOL(kgdb_handle_exception); =20 --=20 2.48.1.262.g85cc9f2d1e-goog