All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnd Bergmann <arnd@arndb.de>
To: linux-kernel@vger.kernel.org
Cc: Arnd Bergmann <arnd@arndb.de>,
	Russell King <linux@armlinux.org.uk>,
	Tony Luck <tony.luck@intel.com>,
	Fenghua Yu <fenghua.yu@intel.com>,
	Greg Ungerer <gerg@linux-m68k.org>,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	Finn Thain <fthain@telegraphics.com.au>,
	Philip Blundell <philb@gnu.org>,
	Joshua Thompson <funaho@jurai.org>, Sam Creasey <sammy@sammy.net>,
	"James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>,
	Helge Deller <deller@gmx.de>,
	Thomas Gleixner <tglx@linutronix.de>,
	Daniel Lezcano <daniel.lezcano@linaro.org>,
	John Stultz <john.stultz@linaro.org>,
	Stephen Boyd <sboyd@kernel.org>,
	Linus Walleij <linus.walleij@linaro.org>,
	linux-ia64@vger.kernel.org, linux-parisc@vger.kernel.org,
	linux-m68k@lists.linux-m68k.org,
	linux-arm-kernel@lists.infradead.org
Subject: [PATCH 04/13] parisc: use legacy_timer_tick
Date: Thu,  8 Oct 2020 17:46:42 +0200	[thread overview]
Message-ID: <20201008154651.1901126-5-arnd@arndb.de> (raw)
In-Reply-To: <20201008154651.1901126-1-arnd@arndb.de>

parisc has selected CONFIG_GENERIC_CLOCKEVENTS since commit 43b1f6abd590
("parisc: Switch to generic sched_clock implementation"), but does not
appear to actually be using it, and instead calls the low-level
timekeeping functions directly.

Remove the GENERIC_CLOCKEVENTS select again, and instead convert to
the newly added legacy_timer_tick() helper.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 Documentation/features/time/clockevents/arch-support.txt | 2 +-
 arch/parisc/Kconfig                                      | 2 +-
 arch/parisc/kernel/time.c                                | 9 +++------
 3 files changed, 5 insertions(+), 8 deletions(-)

diff --git a/Documentation/features/time/clockevents/arch-support.txt b/Documentation/features/time/clockevents/arch-support.txt
index 8287b6aa522e..61a5c9d68c15 100644
--- a/Documentation/features/time/clockevents/arch-support.txt
+++ b/Documentation/features/time/clockevents/arch-support.txt
@@ -21,7 +21,7 @@
     |       nds32: |  ok  |
     |       nios2: |  ok  |
     |    openrisc: |  ok  |
-    |      parisc: |  ok  |
+    |      parisc: | TODO |
     |     powerpc: |  ok  |
     |       riscv: |  ok  |
     |        s390: |  ok  |
diff --git a/arch/parisc/Kconfig b/arch/parisc/Kconfig
index b234e8154cbd..78b17621ee4a 100644
--- a/arch/parisc/Kconfig
+++ b/arch/parisc/Kconfig
@@ -52,7 +52,7 @@ config PARISC
 	select HAVE_REGS_AND_STACK_ACCESS_API
 	select GENERIC_SCHED_CLOCK
 	select HAVE_UNSTABLE_SCHED_CLOCK if SMP
-	select GENERIC_CLOCKEVENTS
+	select LEGACY_TIMER_TICK
 	select CPU_NO_EFFICIENT_FFS
 	select NEED_DMA_MAP_STATE
 	select NEED_SG_DMA_LENGTH
diff --git a/arch/parisc/kernel/time.c b/arch/parisc/kernel/time.c
index 04508158815c..889aaaa555ea 100644
--- a/arch/parisc/kernel/time.c
+++ b/arch/parisc/kernel/time.c
@@ -70,8 +70,6 @@ irqreturn_t __irq_entry timer_interrupt(int irq, void *dev_id)
 	/* gcc can optimize for "read-only" case with a local clocktick */
 	unsigned long cpt = clocktick;
 
-	profile_tick(CPU_PROFILING);
-
 	/* Initialize next_tick to the old expected tick time. */
 	next_tick = cpuinfo->it_value;
 
@@ -86,10 +84,9 @@ irqreturn_t __irq_entry timer_interrupt(int irq, void *dev_id)
 	cpuinfo->it_value = next_tick;
 
 	/* Go do system house keeping. */
-	if (cpu == 0)
-		xtime_update(ticks_elapsed);
-
-	update_process_times(user_mode(get_irq_regs()));
+	if (cpu != 0)
+		ticks_elapsed = 0;
+	legacy_timer_tick(ticks_elapsed);
 
 	/* Skip clockticks on purpose if we know we would miss those.
 	 * The new CR16 must be "later" than current CR16 otherwise
-- 
2.27.0


WARNING: multiple messages have this Message-ID (diff)
From: Arnd Bergmann <arnd@arndb.de>
To: linux-kernel@vger.kernel.org
Cc: Sam Creasey <sammy@sammy.net>, Fenghua Yu <fenghua.yu@intel.com>,
	Linus Walleij <linus.walleij@linaro.org>,
	Tony Luck <tony.luck@intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	linux-parisc@vger.kernel.org, Arnd Bergmann <arnd@arndb.de>,
	linux-ia64@vger.kernel.org, Stephen Boyd <sboyd@kernel.org>,
	Helge Deller <deller@gmx.de>,
	Daniel Lezcano <daniel.lezcano@linaro.org>,
	Russell King <linux@armlinux.org.uk>,
	Finn Thain <fthain@telegraphics.com.au>,
	"James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>,
	linux-m68k@lists.linux-m68k.org,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	linux-arm-kernel@lists.infradead.org,
	John Stultz <john.stultz@linaro.org>,
	Philip Blundell <philb@gnu.org>,
	Greg Ungerer <gerg@linux-m68k.org>,
	Joshua Thompson <funaho@jurai.org>
Subject: [PATCH 04/13] parisc: use legacy_timer_tick
Date: Thu,  8 Oct 2020 17:46:42 +0200	[thread overview]
Message-ID: <20201008154651.1901126-5-arnd@arndb.de> (raw)
In-Reply-To: <20201008154651.1901126-1-arnd@arndb.de>

parisc has selected CONFIG_GENERIC_CLOCKEVENTS since commit 43b1f6abd590
("parisc: Switch to generic sched_clock implementation"), but does not
appear to actually be using it, and instead calls the low-level
timekeeping functions directly.

Remove the GENERIC_CLOCKEVENTS select again, and instead convert to
the newly added legacy_timer_tick() helper.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 Documentation/features/time/clockevents/arch-support.txt | 2 +-
 arch/parisc/Kconfig                                      | 2 +-
 arch/parisc/kernel/time.c                                | 9 +++------
 3 files changed, 5 insertions(+), 8 deletions(-)

diff --git a/Documentation/features/time/clockevents/arch-support.txt b/Documentation/features/time/clockevents/arch-support.txt
index 8287b6aa522e..61a5c9d68c15 100644
--- a/Documentation/features/time/clockevents/arch-support.txt
+++ b/Documentation/features/time/clockevents/arch-support.txt
@@ -21,7 +21,7 @@
     |       nds32: |  ok  |
     |       nios2: |  ok  |
     |    openrisc: |  ok  |
-    |      parisc: |  ok  |
+    |      parisc: | TODO |
     |     powerpc: |  ok  |
     |       riscv: |  ok  |
     |        s390: |  ok  |
diff --git a/arch/parisc/Kconfig b/arch/parisc/Kconfig
index b234e8154cbd..78b17621ee4a 100644
--- a/arch/parisc/Kconfig
+++ b/arch/parisc/Kconfig
@@ -52,7 +52,7 @@ config PARISC
 	select HAVE_REGS_AND_STACK_ACCESS_API
 	select GENERIC_SCHED_CLOCK
 	select HAVE_UNSTABLE_SCHED_CLOCK if SMP
-	select GENERIC_CLOCKEVENTS
+	select LEGACY_TIMER_TICK
 	select CPU_NO_EFFICIENT_FFS
 	select NEED_DMA_MAP_STATE
 	select NEED_SG_DMA_LENGTH
diff --git a/arch/parisc/kernel/time.c b/arch/parisc/kernel/time.c
index 04508158815c..889aaaa555ea 100644
--- a/arch/parisc/kernel/time.c
+++ b/arch/parisc/kernel/time.c
@@ -70,8 +70,6 @@ irqreturn_t __irq_entry timer_interrupt(int irq, void *dev_id)
 	/* gcc can optimize for "read-only" case with a local clocktick */
 	unsigned long cpt = clocktick;
 
-	profile_tick(CPU_PROFILING);
-
 	/* Initialize next_tick to the old expected tick time. */
 	next_tick = cpuinfo->it_value;
 
@@ -86,10 +84,9 @@ irqreturn_t __irq_entry timer_interrupt(int irq, void *dev_id)
 	cpuinfo->it_value = next_tick;
 
 	/* Go do system house keeping. */
-	if (cpu == 0)
-		xtime_update(ticks_elapsed);
-
-	update_process_times(user_mode(get_irq_regs()));
+	if (cpu != 0)
+		ticks_elapsed = 0;
+	legacy_timer_tick(ticks_elapsed);
 
 	/* Skip clockticks on purpose if we know we would miss those.
 	 * The new CR16 must be "later" than current CR16 otherwise
-- 
2.27.0


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

WARNING: multiple messages have this Message-ID (diff)
From: Arnd Bergmann <arnd@arndb.de>
To: linux-kernel@vger.kernel.org
Cc: Arnd Bergmann <arnd@arndb.de>,
	Russell King <linux@armlinux.org.uk>,
	Tony Luck <tony.luck@intel.com>,
	Fenghua Yu <fenghua.yu@intel.com>,
	Greg Ungerer <gerg@linux-m68k.org>,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	Finn Thain <fthain@telegraphics.com.au>,
	Philip Blundell <philb@gnu.org>,
	Joshua Thompson <funaho@jurai.org>, Sam Creasey <sammy@sammy.net>,
	"James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>,
	Helge Deller <deller@gmx.de>,
	Thomas Gleixner <tglx@linutronix.de>,
	Daniel Lezcano <daniel.lezcano@linaro.org>,
	John Stultz <john.stultz@linaro.org>,
	Stephen Boyd <sboyd@kernel.org>,
	Linus Walleij <linus.walleij@linaro.org>,
	linux-ia64@vger.kernel.org, linux-parisc@vger.kernel.org,
	linux-m68k@lists.linux-m68k.org,
	linux-arm-kernel@lists.infradead.org
Subject: [PATCH 04/13] parisc: use legacy_timer_tick
Date: Thu, 08 Oct 2020 15:46:42 +0000	[thread overview]
Message-ID: <20201008154651.1901126-5-arnd@arndb.de> (raw)
In-Reply-To: <20201008154651.1901126-1-arnd@arndb.de>

parisc has selected CONFIG_GENERIC_CLOCKEVENTS since commit 43b1f6abd590
("parisc: Switch to generic sched_clock implementation"), but does not
appear to actually be using it, and instead calls the low-level
timekeeping functions directly.

Remove the GENERIC_CLOCKEVENTS select again, and instead convert to
the newly added legacy_timer_tick() helper.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 Documentation/features/time/clockevents/arch-support.txt | 2 +-
 arch/parisc/Kconfig                                      | 2 +-
 arch/parisc/kernel/time.c                                | 9 +++------
 3 files changed, 5 insertions(+), 8 deletions(-)

diff --git a/Documentation/features/time/clockevents/arch-support.txt b/Documentation/features/time/clockevents/arch-support.txt
index 8287b6aa522e..61a5c9d68c15 100644
--- a/Documentation/features/time/clockevents/arch-support.txt
+++ b/Documentation/features/time/clockevents/arch-support.txt
@@ -21,7 +21,7 @@
     |       nds32: |  ok  |
     |       nios2: |  ok  |
     |    openrisc: |  ok  |
-    |      parisc: |  ok  |
+    |      parisc: | TODO |
     |     powerpc: |  ok  |
     |       riscv: |  ok  |
     |        s390: |  ok  |
diff --git a/arch/parisc/Kconfig b/arch/parisc/Kconfig
index b234e8154cbd..78b17621ee4a 100644
--- a/arch/parisc/Kconfig
+++ b/arch/parisc/Kconfig
@@ -52,7 +52,7 @@ config PARISC
 	select HAVE_REGS_AND_STACK_ACCESS_API
 	select GENERIC_SCHED_CLOCK
 	select HAVE_UNSTABLE_SCHED_CLOCK if SMP
-	select GENERIC_CLOCKEVENTS
+	select LEGACY_TIMER_TICK
 	select CPU_NO_EFFICIENT_FFS
 	select NEED_DMA_MAP_STATE
 	select NEED_SG_DMA_LENGTH
diff --git a/arch/parisc/kernel/time.c b/arch/parisc/kernel/time.c
index 04508158815c..889aaaa555ea 100644
--- a/arch/parisc/kernel/time.c
+++ b/arch/parisc/kernel/time.c
@@ -70,8 +70,6 @@ irqreturn_t __irq_entry timer_interrupt(int irq, void *dev_id)
 	/* gcc can optimize for "read-only" case with a local clocktick */
 	unsigned long cpt = clocktick;
 
-	profile_tick(CPU_PROFILING);
-
 	/* Initialize next_tick to the old expected tick time. */
 	next_tick = cpuinfo->it_value;
 
@@ -86,10 +84,9 @@ irqreturn_t __irq_entry timer_interrupt(int irq, void *dev_id)
 	cpuinfo->it_value = next_tick;
 
 	/* Go do system house keeping. */
-	if (cpu = 0)
-		xtime_update(ticks_elapsed);
-
-	update_process_times(user_mode(get_irq_regs()));
+	if (cpu != 0)
+		ticks_elapsed = 0;
+	legacy_timer_tick(ticks_elapsed);
 
 	/* Skip clockticks on purpose if we know we would miss those.
 	 * The new CR16 must be "later" than current CR16 otherwise
-- 
2.27.0

  parent reply	other threads:[~2020-10-08 15:48 UTC|newest]

Thread overview: 127+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-08 15:46 [PATCH 00/13] Clean up legacy clock tick users Arnd Bergmann
2020-10-08 15:46 ` Arnd Bergmann
2020-10-08 15:46 ` Arnd Bergmann
2020-10-08 15:46 ` [PATCH 01/13] timekeeping: add CONFIG_LEGACY_TIMER_TICK Arnd Bergmann
2020-10-08 15:46   ` Arnd Bergmann
2020-10-08 15:46   ` Arnd Bergmann
2020-10-09 22:18   ` Finn Thain
2020-10-09 22:18     ` Finn Thain
2020-10-09 22:18     ` Finn Thain
2020-10-10 20:31     ` Arnd Bergmann
2020-10-10 20:31       ` Arnd Bergmann
2020-10-10 20:31       ` Arnd Bergmann
2020-10-12 13:14   ` Geert Uytterhoeven
2020-10-12 13:14     ` Geert Uytterhoeven
2020-10-12 13:14     ` Geert Uytterhoeven
2020-10-08 15:46 ` [PATCH 02/13] ia64: convert to legacy_timer_tick Arnd Bergmann
2020-10-08 15:46   ` Arnd Bergmann
2020-10-08 15:46   ` Arnd Bergmann
2020-10-08 15:46 ` [PATCH 03/13] ARM: rpc: use legacy_timer_tick Arnd Bergmann
2020-10-08 15:46   ` Arnd Bergmann
2020-10-08 15:46   ` Arnd Bergmann
2020-10-08 15:46 ` Arnd Bergmann [this message]
2020-10-08 15:46   ` [PATCH 04/13] parisc: " Arnd Bergmann
2020-10-08 15:46   ` Arnd Bergmann
2020-10-08 15:46 ` [PATCH 05/13] m68k: coldfire: use legacy_timer_tick() Arnd Bergmann
2020-10-08 15:46   ` Arnd Bergmann
2020-10-08 15:46   ` Arnd Bergmann
2020-10-09 12:53   ` Greg Ungerer
2020-10-09 12:53     ` Greg Ungerer
2020-10-09 12:53     ` Greg Ungerer
2020-10-09 13:23     ` Arnd Bergmann
2020-10-09 13:23       ` Arnd Bergmann
2020-10-09 13:23       ` Arnd Bergmann
2020-10-08 15:46 ` [PATCH 06/13] m68k: split heartbeat out of timer function Arnd Bergmann
2020-10-08 15:46   ` Arnd Bergmann
2020-10-08 15:46   ` Arnd Bergmann
2020-10-12 13:14   ` Geert Uytterhoeven
2020-10-12 13:14     ` Geert Uytterhoeven
2020-10-12 13:14     ` Geert Uytterhoeven
2020-10-08 15:46 ` [PATCH 07/13] m68k: sun3/sun3c: use legacy_timer_tick Arnd Bergmann
2020-10-08 15:46   ` Arnd Bergmann
2020-10-08 15:46   ` Arnd Bergmann
2020-10-12 13:15   ` Geert Uytterhoeven
2020-10-12 13:15     ` Geert Uytterhoeven
2020-10-12 13:15     ` Geert Uytterhoeven
2020-10-08 15:46 ` [PATCH 08/13] m68k: m68328: use legacy_timer_tick() Arnd Bergmann
2020-10-08 15:46   ` Arnd Bergmann
2020-10-08 15:46   ` Arnd Bergmann
2020-10-12 13:15   ` Geert Uytterhoeven
2020-10-12 13:15     ` Geert Uytterhoeven
2020-10-12 13:15     ` Geert Uytterhoeven
2020-10-12 15:30     ` Arnd Bergmann
2020-10-12 15:30       ` Arnd Bergmann
2020-10-12 15:30       ` Arnd Bergmann
2020-10-12 20:33       ` Geert Uytterhoeven
2020-10-12 20:33         ` Geert Uytterhoeven
2020-10-12 20:33         ` Geert Uytterhoeven
2020-10-08 15:46 ` [PATCH 09/13] m68k: change remaining timers to legacy_timer_tick Arnd Bergmann
2020-10-08 15:46   ` Arnd Bergmann
2020-10-08 15:46   ` Arnd Bergmann
2020-10-12 13:15   ` Geert Uytterhoeven
2020-10-12 13:15     ` Geert Uytterhoeven
2020-10-12 13:15     ` Geert Uytterhoeven
2020-10-08 15:46 ` [PATCH 10/13] m68k: remove timer_interrupt() function Arnd Bergmann
2020-10-08 15:46   ` Arnd Bergmann
2020-10-08 15:46   ` Arnd Bergmann
2020-10-12 13:15   ` Geert Uytterhoeven
2020-10-12 13:15     ` Geert Uytterhoeven
2020-10-12 13:15     ` Geert Uytterhoeven
2020-10-08 15:46 ` [PATCH 11/13] timekeeping: remove xtime_update Arnd Bergmann
2020-10-08 15:46   ` Arnd Bergmann
2020-10-08 15:46   ` Arnd Bergmann
2020-10-12 13:15   ` Geert Uytterhoeven
2020-10-12 13:15     ` Geert Uytterhoeven
2020-10-12 13:15     ` Geert Uytterhoeven
2020-10-12 13:37     ` Arnd Bergmann
2020-10-12 13:37       ` Arnd Bergmann
2020-10-12 13:37       ` Arnd Bergmann
2020-10-12 20:44       ` Thomas Gleixner
2020-10-12 20:44         ` Thomas Gleixner
2020-10-12 20:44         ` Thomas Gleixner
2020-10-08 15:46 ` [PATCH 12/13] timekeeping: default GENERIC_CLOCKEVENTS to enabled Arnd Bergmann
2020-10-08 15:46   ` Arnd Bergmann
2020-10-08 15:46   ` Arnd Bergmann
2020-10-12 13:15   ` Geert Uytterhoeven
2020-10-12 13:15     ` Geert Uytterhoeven
2020-10-12 13:15     ` Geert Uytterhoeven
2020-10-08 15:46 ` [RFC 13/13] m68k: mac: convert to generic clockevent Arnd Bergmann
2020-10-08 15:46   ` Arnd Bergmann
2020-10-08 15:46   ` Arnd Bergmann
2020-10-09 22:21   ` Finn Thain
2020-10-09 22:21     ` Finn Thain
2020-10-09 22:21     ` Finn Thain
2020-10-10 18:52     ` Arnd Bergmann
2020-10-10 18:52       ` Arnd Bergmann
2020-10-10 18:52       ` Arnd Bergmann
2020-10-15  1:18       ` Finn Thain
2020-10-15  1:18         ` Finn Thain
2020-10-15  1:18         ` Finn Thain
     [not found]         ` <CAK8P3a2ymv79j1edtJ983-VgjtxvT_6co7V0VRnHzcneW+0ZtA@mail.gmail.com>
2020-10-18  0:54           ` Finn Thain
2020-10-18  0:54             ` Finn Thain
2020-10-18  0:54             ` Finn Thain
2020-10-23  7:52         ` Arnd Bergmann
2020-10-23  9:24           ` Geert Uytterhoeven
2020-10-23  9:24             ` Geert Uytterhoeven
2020-10-23  9:24             ` Geert Uytterhoeven
2020-10-25 12:45             ` Geert Uytterhoeven
2020-10-25 12:45               ` Geert Uytterhoeven
2020-10-25 12:45               ` Geert Uytterhoeven
2020-11-06  2:52             ` Finn Thain
2020-11-06  2:52               ` Finn Thain
2020-11-06  2:52               ` Finn Thain
2020-11-16 23:27               ` Sam Creasey
2020-11-16 23:27                 ` Sam Creasey
2020-11-16 23:27                 ` Sam Creasey
2020-10-30  0:41           ` Finn Thain
2020-10-30  0:41             ` Finn Thain
2020-10-30  0:41             ` Finn Thain
2020-10-30 13:12             ` Greg Ungerer
2020-10-30 13:12               ` Greg Ungerer
2020-10-30 13:12               ` Greg Ungerer
2020-11-06  3:12               ` Finn Thain
2020-11-06  3:12                 ` Finn Thain
2020-11-06  3:12                 ` Finn Thain
2020-10-12 22:18 ` [PATCH 00/13] Clean up legacy clock tick users Linus Walleij
2020-10-12 22:18   ` Linus Walleij
2020-10-12 22:18   ` Linus Walleij

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20201008154651.1901126-5-arnd@arndb.de \
    --to=arnd@arndb.de \
    --cc=James.Bottomley@HansenPartnership.com \
    --cc=daniel.lezcano@linaro.org \
    --cc=deller@gmx.de \
    --cc=fenghua.yu@intel.com \
    --cc=fthain@telegraphics.com.au \
    --cc=funaho@jurai.org \
    --cc=geert@linux-m68k.org \
    --cc=gerg@linux-m68k.org \
    --cc=john.stultz@linaro.org \
    --cc=linus.walleij@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-ia64@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-m68k@lists.linux-m68k.org \
    --cc=linux-parisc@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=philb@gnu.org \
    --cc=sammy@sammy.net \
    --cc=sboyd@kernel.org \
    --cc=tglx@linutronix.de \
    --cc=tony.luck@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.