All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greentime Hu <green.hu@gmail.com>
To: Arnd Bergmann <arnd@arndb.de>
Cc: Greentime <greentime@andestech.com>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	linux-arch <linux-arch@vger.kernel.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Jason Cooper <jason@lakedaemon.net>,
	Marc Zyngier <marc.zyngier@arm.com>,
	Rob Herring <robh+dt@kernel.org>,
	Networking <netdev@vger.kernel.org>,
	Vincent Chen <deanbo422@gmail.com>,
	DTML <devicetree@vger.kernel.org>,
	Al Viro <viro@zeniv.linux.org.uk>,
	David Howells <dhowells@redhat.com>,
	Will Deacon <will.deacon@arm.com>,
	Daniel Lezcano <daniel.lezcano@linaro.org>,
	linux-serial@vger.kernel.org,
	Geert Uytterhoeven <geert.uytterhoeven@gmail.com>,
	Linus Walleij <linus.walleij@linaro.org>,
	Mark Rutland <mark.rutland@arm.com>, Greg KH <greg@kroah.com>,
	Guo Ren <ren_guo@c-sky.com>,
	Philippe Ombredanne <pombredanne@nexb.com>,
	Vincent Chen <vincentc@andestech.com>
Subject: Re: [PATCH v4 25/36] nds32: Miscellaneous header files
Date: Wed, 20 Dec 2017 10:34:45 +0800	[thread overview]
Message-ID: <CAEbi=3dfN6zpcNUpwbsPC_N_6w66=p8J=z8dUxHvyf11KtRQKw@mail.gmail.com> (raw)
In-Reply-To: <CAK8P3a3Ofczq1DrQEcEcP1fZrgyeOLpFDwgd7uMZ4H0NpHs+wg@mail.gmail.com>

2017-12-19 17:54 GMT+08:00 Arnd Bergmann <arnd@arndb.de>:
> On Tue, Dec 19, 2017 at 6:34 AM, Greentime Hu <green.hu@gmail.com> wrote:
>> Hi, Arnd:
>>
>> 2017-12-18 19:13 GMT+08:00 Arnd Bergmann <arnd@arndb.de>:
>>> On Mon, Dec 18, 2017 at 7:46 AM, Greentime Hu <green.hu@gmail.com> wrote:
>>>> From: Greentime Hu <greentime@andestech.com>
>>>>
>>>> This patch introduces some miscellaneous header files.
>>>
>>>> +static inline void __delay(unsigned long loops)
>>>> +{
>>>> +       __asm__ __volatile__(".align 2\n"
>>>> +                            "1:\n"
>>>> +                            "\taddi\t%0, %0, -1\n"
>>>> +                            "\tbgtz\t%0, 1b\n"
>>>> +                            :"=r"(loops)
>>>> +                            :"0"(loops));
>>>> +}
>>>> +
>>>> +static inline void __udelay(unsigned long usecs, unsigned long lpj)
>>>> +{
>>>> +       usecs *= (unsigned long)(((0x8000000000000000ULL / (500000 / HZ)) +
>>>> +                                 0x80000000ULL) >> 32);
>>>> +       usecs = (unsigned long)(((unsigned long long)usecs * lpj) >> 32);
>>>> +       __delay(usecs);
>>>> +}
>>>
>>> Do you have a reliable clocksource that you can read here instead of doing the
>>> loop? It's generally preferred to have an accurate delay if at all possible, the
>>> delay loop calibration is only for those architectures that don't have any
>>> way to observe how much time has passed accurately.
>>>
>>
>> We currently only have atcpit100 as clocksource but it is an IP of  SoC.
>> These delay API will be unavailable if we changed to another SoC
>> unless all these timer driver provided the same APIs.
>> It may suffer our customers if they forget to port these APIs in their
>> timer drivers when they try to use nds32 in the first beginning.
>
> Ok, thanks for the clarification.
>
>> Or maybe I can use a CONFIG_USE_ACCURATE_DELAY to keep these 2
>> implementions for these purposes?
>
> I'd just add a one-line comment in delay.h to explain that there is no
> cycle counter in the CPU.
>

Thanks.
Got it. I will add a one-line comment in delay.h

WARNING: multiple messages have this Message-ID (diff)
From: Greentime Hu <green.hu-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>
Cc: Greentime <greentime-MUIXKm3Oiri1Z/+hSey0Gg@public.gmane.org>,
	Linux Kernel Mailing List
	<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	linux-arch <linux-arch-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	Thomas Gleixner <tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org>,
	Jason Cooper <jason-NLaQJdtUoK4Be96aLqz0jA@public.gmane.org>,
	Marc Zyngier <marc.zyngier-5wv7dgnIgG8@public.gmane.org>,
	Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	Networking <netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	Vincent Chen <deanbo422-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	DTML <devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	Al Viro <viro-RmSDqhL/yNMiFSDQTTA3OLVCufUGDwFn@public.gmane.org>,
	David Howells <dhowells-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
	Will Deacon <will.deacon-5wv7dgnIgG8@public.gmane.org>,
	Daniel Lezcano
	<daniel.lezcano-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
	linux-serial-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Geert Uytterhoeven
	<geert.uytterhoeven-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	Linus Walleij
	<linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
	Mark Rutland <mark.rutland-5wv7dgnIgG8@public.gmane.org>,
	Greg KH <greg-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>,
	Guo Ren <ren_guo-Y+KPrCd2zL4@public.gmane.org
Subject: Re: [PATCH v4 25/36] nds32: Miscellaneous header files
Date: Wed, 20 Dec 2017 10:34:45 +0800	[thread overview]
Message-ID: <CAEbi=3dfN6zpcNUpwbsPC_N_6w66=p8J=z8dUxHvyf11KtRQKw@mail.gmail.com> (raw)
In-Reply-To: <CAK8P3a3Ofczq1DrQEcEcP1fZrgyeOLpFDwgd7uMZ4H0NpHs+wg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>

2017-12-19 17:54 GMT+08:00 Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>:
> On Tue, Dec 19, 2017 at 6:34 AM, Greentime Hu <green.hu-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
>> Hi, Arnd:
>>
>> 2017-12-18 19:13 GMT+08:00 Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>:
>>> On Mon, Dec 18, 2017 at 7:46 AM, Greentime Hu <green.hu-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
>>>> From: Greentime Hu <greentime-MUIXKm3Oiri1Z/+hSey0Gg@public.gmane.org>
>>>>
>>>> This patch introduces some miscellaneous header files.
>>>
>>>> +static inline void __delay(unsigned long loops)
>>>> +{
>>>> +       __asm__ __volatile__(".align 2\n"
>>>> +                            "1:\n"
>>>> +                            "\taddi\t%0, %0, -1\n"
>>>> +                            "\tbgtz\t%0, 1b\n"
>>>> +                            :"=r"(loops)
>>>> +                            :"0"(loops));
>>>> +}
>>>> +
>>>> +static inline void __udelay(unsigned long usecs, unsigned long lpj)
>>>> +{
>>>> +       usecs *= (unsigned long)(((0x8000000000000000ULL / (500000 / HZ)) +
>>>> +                                 0x80000000ULL) >> 32);
>>>> +       usecs = (unsigned long)(((unsigned long long)usecs * lpj) >> 32);
>>>> +       __delay(usecs);
>>>> +}
>>>
>>> Do you have a reliable clocksource that you can read here instead of doing the
>>> loop? It's generally preferred to have an accurate delay if at all possible, the
>>> delay loop calibration is only for those architectures that don't have any
>>> way to observe how much time has passed accurately.
>>>
>>
>> We currently only have atcpit100 as clocksource but it is an IP of  SoC.
>> These delay API will be unavailable if we changed to another SoC
>> unless all these timer driver provided the same APIs.
>> It may suffer our customers if they forget to port these APIs in their
>> timer drivers when they try to use nds32 in the first beginning.
>
> Ok, thanks for the clarification.
>
>> Or maybe I can use a CONFIG_USE_ACCURATE_DELAY to keep these 2
>> implementions for these purposes?
>
> I'd just add a one-line comment in delay.h to explain that there is no
> cycle counter in the CPU.
>

Thanks.
Got it. I will add a one-line comment in delay.h
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

WARNING: multiple messages have this Message-ID (diff)
From: Greentime Hu <green.hu-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>
Cc: Greentime <greentime-MUIXKm3Oiri1Z/+hSey0Gg@public.gmane.org>,
	Linux Kernel Mailing List
	<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	linux-arch <linux-arch-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	Thomas Gleixner <tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org>,
	Jason Cooper <jason-NLaQJdtUoK4Be96aLqz0jA@public.gmane.org>,
	Marc Zyngier <marc.zyngier-5wv7dgnIgG8@public.gmane.org>,
	Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	Networking <netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	Vincent Chen <deanbo422-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	DTML <devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	Al Viro <viro-RmSDqhL/yNMiFSDQTTA3OLVCufUGDwFn@public.gmane.org>,
	David Howells <dhowells-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
	Will Deacon <will.deacon-5wv7dgnIgG8@public.gmane.org>,
	Daniel Lezcano
	<daniel.lezcano-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
	linux-serial-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Geert Uytterhoeven
	<geert.uytterhoeven-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	Linus Walleij
	<linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
	Mark Rutland <mark.rutland-5wv7dgnIgG8@public.gmane.org>,
	Greg KH <greg-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>,
	Guo Ren <ren_guo-Y+KPrCd2zL4@public.gmane.org>
Subject: Re: [PATCH v4 25/36] nds32: Miscellaneous header files
Date: Wed, 20 Dec 2017 10:34:45 +0800	[thread overview]
Message-ID: <CAEbi=3dfN6zpcNUpwbsPC_N_6w66=p8J=z8dUxHvyf11KtRQKw@mail.gmail.com> (raw)
In-Reply-To: <CAK8P3a3Ofczq1DrQEcEcP1fZrgyeOLpFDwgd7uMZ4H0NpHs+wg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>

2017-12-19 17:54 GMT+08:00 Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>:
> On Tue, Dec 19, 2017 at 6:34 AM, Greentime Hu <green.hu-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
>> Hi, Arnd:
>>
>> 2017-12-18 19:13 GMT+08:00 Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>:
>>> On Mon, Dec 18, 2017 at 7:46 AM, Greentime Hu <green.hu-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
>>>> From: Greentime Hu <greentime-MUIXKm3Oiri1Z/+hSey0Gg@public.gmane.org>
>>>>
>>>> This patch introduces some miscellaneous header files.
>>>
>>>> +static inline void __delay(unsigned long loops)
>>>> +{
>>>> +       __asm__ __volatile__(".align 2\n"
>>>> +                            "1:\n"
>>>> +                            "\taddi\t%0, %0, -1\n"
>>>> +                            "\tbgtz\t%0, 1b\n"
>>>> +                            :"=r"(loops)
>>>> +                            :"0"(loops));
>>>> +}
>>>> +
>>>> +static inline void __udelay(unsigned long usecs, unsigned long lpj)
>>>> +{
>>>> +       usecs *= (unsigned long)(((0x8000000000000000ULL / (500000 / HZ)) +
>>>> +                                 0x80000000ULL) >> 32);
>>>> +       usecs = (unsigned long)(((unsigned long long)usecs * lpj) >> 32);
>>>> +       __delay(usecs);
>>>> +}
>>>
>>> Do you have a reliable clocksource that you can read here instead of doing the
>>> loop? It's generally preferred to have an accurate delay if at all possible, the
>>> delay loop calibration is only for those architectures that don't have any
>>> way to observe how much time has passed accurately.
>>>
>>
>> We currently only have atcpit100 as clocksource but it is an IP of  SoC.
>> These delay API will be unavailable if we changed to another SoC
>> unless all these timer driver provided the same APIs.
>> It may suffer our customers if they forget to port these APIs in their
>> timer drivers when they try to use nds32 in the first beginning.
>
> Ok, thanks for the clarification.
>
>> Or maybe I can use a CONFIG_USE_ACCURATE_DELAY to keep these 2
>> implementions for these purposes?
>
> I'd just add a one-line comment in delay.h to explain that there is no
> cycle counter in the CPU.
>

Thanks.
Got it. I will add a one-line comment in delay.h
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  reply	other threads:[~2017-12-20  2:35 UTC|newest]

Thread overview: 89+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-18  6:46 [PATCH v4 00/36] Andes(nds32) Linux Kernel Greentime Hu
2017-12-18  6:46 ` Greentime Hu
2017-12-18  6:46 ` [PATCH v4 01/36] asm-generic/io.h: move ioremap_nocache/ioremap_uc/ioremap_wc/ioremap_wt out of ifndef CONFIG_MMU Greentime Hu
2017-12-20 10:09   ` kbuild test robot
2017-12-20 10:09     ` kbuild test robot
2017-12-20 10:09     ` kbuild test robot
2017-12-22 14:38     ` Greentime Hu
2017-12-22 14:38       ` Greentime Hu
2017-12-20 10:10   ` kbuild test robot
2017-12-20 10:10     ` kbuild test robot
2017-12-20 10:10     ` kbuild test robot
2017-12-22 14:40     ` Greentime Hu
2017-12-22 14:40       ` Greentime Hu
2017-12-18  6:46 ` [PATCH v4 02/36] earlycon: add reg-offset to physical address before mapping Greentime Hu
2017-12-18  6:46 ` [PATCH v4 03/36] nds32: Assembly macros and definitions Greentime Hu
2017-12-18  6:46 ` [PATCH v4 04/36] nds32: Kernel booting and initialization Greentime Hu
2017-12-19 22:01   ` Randy Dunlap
2017-12-19 22:01     ` Randy Dunlap
2017-12-20  2:35     ` Greentime Hu
2017-12-20  2:35       ` Greentime Hu
2017-12-18  6:46 ` [PATCH v4 05/36] nds32: Exception handling Greentime Hu
2017-12-18  6:46 ` [PATCH v4 06/36] nds32: MMU definitions Greentime Hu
2017-12-18  6:46   ` Greentime Hu
2017-12-18  6:46 ` [PATCH v4 07/36] nds32: MMU initialization Greentime Hu
2017-12-18  6:46 ` [PATCH v4 08/36] nds32: MMU fault handling and page table management Greentime Hu
2017-12-18  6:46 ` [PATCH v4 09/36] nds32: Cache and TLB routines Greentime Hu
2017-12-18  6:46 ` [PATCH v4 10/36] nds32: Process management Greentime Hu
2017-12-18  6:46 ` [PATCH v4 11/36] nds32: IRQ handling Greentime Hu
2017-12-18  6:46 ` [PATCH v4 12/36] nds32: Atomic operations Greentime Hu
2017-12-18  6:46 ` [PATCH v4 13/36] nds32: Device specific operations Greentime Hu
2017-12-18 11:26   ` Arnd Bergmann
2017-12-18 11:26     ` Arnd Bergmann
2017-12-18 11:44     ` Greentime Hu
2017-12-18 11:44       ` Greentime Hu
2017-12-18 11:44       ` Greentime Hu
2017-12-18  6:46 ` [PATCH v4 14/36] nds32: DMA mapping API Greentime Hu
2017-12-18  6:46 ` [PATCH v4 15/36] nds32: ELF definitions Greentime Hu
2017-12-18  6:46   ` Greentime Hu
2017-12-18  6:46 ` [PATCH v4 16/36] nds32: System calls handling Greentime Hu
2017-12-18 11:19   ` Arnd Bergmann
2017-12-18 11:19     ` Arnd Bergmann
2017-12-19  2:10     ` Vincent Chen
2017-12-19  2:10       ` Vincent Chen
2017-12-18  6:46 ` [PATCH v4 17/36] nds32: VDSO support Greentime Hu
2017-12-18  6:46 ` [PATCH v4 18/36] nds32: Signal handling support Greentime Hu
2017-12-18  6:46 ` [PATCH v4 19/36] nds32: Library functions Greentime Hu
2017-12-18  6:46 ` [PATCH v4 20/36] nds32: Debugging support Greentime Hu
2017-12-18  6:46 ` [PATCH v4 21/36] nds32: L2 cache support Greentime Hu
2017-12-18  6:46 ` [PATCH v4 22/36] nds32: Loadable modules Greentime Hu
2017-12-18  6:46 ` [PATCH v4 23/36] nds32: Generic timers support Greentime Hu
2017-12-18  6:46 ` [PATCH v4 24/36] nds32: Device tree support Greentime Hu
2017-12-18  6:46 ` [PATCH v4 25/36] nds32: Miscellaneous header files Greentime Hu
2017-12-18 11:13   ` Arnd Bergmann
2017-12-18 11:13     ` Arnd Bergmann
2017-12-19  5:34     ` Greentime Hu
2017-12-19  5:34       ` Greentime Hu
2017-12-19  5:34       ` Greentime Hu
2017-12-19  9:54       ` Arnd Bergmann
2017-12-19  9:54         ` Arnd Bergmann
2017-12-19  9:54         ` Arnd Bergmann
2017-12-20  2:34         ` Greentime Hu [this message]
2017-12-20  2:34           ` Greentime Hu
2017-12-20  2:34           ` Greentime Hu
2017-12-18  6:46 ` [PATCH v4 26/36] nds32: defconfig Greentime Hu
2017-12-18  6:46 ` [PATCH v4 27/36] nds32: Build infrastructure Greentime Hu
2017-12-18  6:46 ` [PATCH v4 28/36] MAINTAINERS: Add nds32 Greentime Hu
2017-12-18  6:46 ` [PATCH v4 29/36] dt-bindings: nds32 CPU Bindings Greentime Hu
2017-12-18  6:46 ` [PATCH v4 30/36] dt-bindings: nds32 SoC Bindings Greentime Hu
2017-12-18  6:46 ` [PATCH v4 31/36] dt-bindings: interrupt-controller: Andestech Internal Vector Interrupt Controller Greentime Hu
2017-12-18  6:46 ` [PATCH v4 32/36] irqchip: Andestech Internal Vector Interrupt Controller driver Greentime Hu
2017-12-18  6:46 ` [PATCH v4 33/36] net: faraday add nds32 support Greentime Hu
2017-12-20  9:54   ` kbuild test robot
2017-12-20  9:54     ` kbuild test robot
2017-12-20  9:54     ` kbuild test robot
2017-12-20  9:58     ` Geert Uytterhoeven
2017-12-20  9:58       ` Geert Uytterhoeven
2017-12-20  9:58       ` Geert Uytterhoeven
2017-12-20 10:34       ` Greentime Hu
2017-12-20 10:34         ` Greentime Hu
2017-12-20 10:34         ` Greentime Hu
2017-12-20 11:03   ` kbuild test robot
2017-12-20 11:03     ` kbuild test robot
2017-12-20 11:03     ` kbuild test robot
2017-12-18  6:46 ` [PATCH v4 34/36] clocksource/drivers/atcpit100: Add andestech atcpit100 timer Greentime Hu
2017-12-18  6:46 ` [PATCH v4 35/36] clocksource/drivers/atcpit100: VDSO support Greentime Hu
2017-12-18  6:46 ` [PATCH v4 36/36] dt-bindings: timer: Add andestech atcpit100 timer binding doc Greentime Hu
2018-02-14 14:56 ` [PATCH v4 00/36] Andes(nds32) Linux Kernel Arnd Bergmann
2018-02-14 14:56   ` Arnd Bergmann
2018-02-14 14:56   ` Arnd Bergmann

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='CAEbi=3dfN6zpcNUpwbsPC_N_6w66=p8J=z8dUxHvyf11KtRQKw@mail.gmail.com' \
    --to=green.hu@gmail.com \
    --cc=arnd@arndb.de \
    --cc=daniel.lezcano@linaro.org \
    --cc=deanbo422@gmail.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dhowells@redhat.com \
    --cc=geert.uytterhoeven@gmail.com \
    --cc=greentime@andestech.com \
    --cc=greg@kroah.com \
    --cc=jason@lakedaemon.net \
    --cc=linus.walleij@linaro.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-serial@vger.kernel.org \
    --cc=marc.zyngier@arm.com \
    --cc=mark.rutland@arm.com \
    --cc=netdev@vger.kernel.org \
    --cc=pombredanne@nexb.com \
    --cc=ren_guo@c-sky.com \
    --cc=robh+dt@kernel.org \
    --cc=tglx@linutronix.de \
    --cc=vincentc@andestech.com \
    --cc=viro@zeniv.linux.org.uk \
    --cc=will.deacon@arm.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.