All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
To: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Jonas Bonn <jonas@southpole.se>, Rich Felker <dalias@libc.org>,
	linux-pci@vger.kernel.org, Will Deacon <will.deacon@arm.com>,
	"James E.J. Bottomley" <jejb@parisc-linux.org>,
	David Howells <dhowells@redhat.com>,
	Max Filippov <jcmvbkbc@gmail.com>,
	Paul Mackerras <paulus@samba.org>,
	Huacai Chen <chenhc@lemote.com>,
	Guan Xuetao <gxt@mprc.pku.edu.cn>,
	Thomas Gleixner <tglx@linutronix.de>,
	Hans-Christian Egtvedt <egtvedt@samfundet.no>,
	linux-arch@vger.kernel.org,
	Jesper Nilsson <jesper.nilsson@axis.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Michael Ellerman <mpe@ellerman.id.au>,
	Helge Deller <deller@gmx.de>,
	Russell King <linux@armlinux.org.uk>,
	Ingo Molnar <mingo@redhat.com>,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Matt Turner <mattst88@gmail.com>,
	Haavard Skinnemoen <hskinnemoen@gmail.com>,
	Fenghua Yu <fenghua.yu@intel.com>,
	James Hogan <james.hogan@imgtec.com>,
	Chris Metcalf <cmetcalf@mellanox.com>,
	Arnd Bergmann <arnd@arndb.de>,
	Heiko Carstens <heiko.carstens@de.ibm.com>,
	Stefan Kristiansson <stefan.kristiansson@saunalahti.fi>,
	Mikael Starvik <starvik@axis.com>,
	Ivan Kokshaysky <ink@jurassic.park.msu.ru>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Stafford Horne <shorne@gmail.com>,
	linux-arm-kernel@lists.infradead.org,
	Richard Henderson <rth@twiddle.net>,
	Chris Zankel <chris@zankel.net>, Michal Simek <monstr@monstr.eu>,
	Tony Luck <tony.luck@intel.com>,
	Vineet Gupta <vgupta@synopsys.com>,
	linux-kernel@vger.kernel.org, Ralf Baechle <ralf@linux-mips.org>,
	Richard Kuo <rkuo@codeaurora.org>,
	Niklas Cassel <nks@flawful.org>,
	"Luis R . Rodriguez" <mcgrof@kernel.org>,
	Martin Schwidefsky <schwidefsky@de.ibm.com>,
	Ley Foon Tan <lftan@altera.com>,
	"David S. Miller" <davem@davemloft.net>
Subject: Re: [PATCH v3 04/32] asm-generic: add ioremap_nopost() remap interface
Date: Wed, 12 Apr 2017 11:00:28 +0100	[thread overview]
Message-ID: <20170412100028.GB31143@red-moon> (raw)
In-Reply-To: <1491952447.7236.24.camel@kernel.crashing.org>

On Wed, Apr 12, 2017 at 09:14:07AM +1000, Benjamin Herrenschmidt wrote:
> On Tue, 2017-04-11 at 15:31 +0100, Lorenzo Pieralisi wrote:
> > > This is a semantic that simply *cannot* be generically provided accross
> > > architectures as a mapping attribute.
> > 
> > I agree that a default implementation does not make much sense. The
> > only solution to this, if we want the ioremap_nopost to be made available
> > to generic code (and drivers - ie DT PCI host bridge drivers on ARM/ARM64
> > are not arch code), is to make the ioremap_nopost() call return NULL
> > unless overriden by arch code that can provide its semantics.
> 
> That would be a better option.

I think that's what I will implement which basically means I will
replace the default:

static inline void __iomem *ioremap_nopost(phys_addr_t offset, size_t size)
{
	return ioremap_nocache(offset, size);
}

with

static inline void __iomem *ioremap_nopost(phys_addr_t offset, size_t size)
{
	return NULL;
}

If an arch can override ioremap_nopost() with sensible mapping
attributes (or whatever make it enforceable) it does, if it can't
any ioremap_nopost() usage will result in a mapping failure, if you
see any other viable solution please shout.

Thanks,
Lorenzo

_______________________________________________
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: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
To: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Jonas Bonn <jonas@southpole.se>, Rich Felker <dalias@libc.org>,
	linux-pci@vger.kernel.org, Will Deacon <will.deacon@arm.com>,
	"James E.J. Bottomley" <jejb@parisc-linux.org>,
	David Howells <dhowells@redhat.com>,
	Max Filippov <jcmvbkbc@gmail.com>,
	Paul Mackerras <paulus@samba.org>,
	Huacai Chen <chenhc@lemote.com>,
	Guan Xuetao <gxt@mprc.pku.edu.cn>,
	Thomas Gleixner <tglx@linutronix.de>,
	Hans-Christian Egtvedt <egtvedt@samfundet.no>,
	linux-arch@vger.kernel.org,
	Jesper Nilsson <jesper.nilsson@axis.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Michael Ellerman <mpe@ellerman.id.au>,
	Helge Deller <deller@gmx.de>,
	Russell King <linux@armlinux.org.uk>,
	Ingo Molnar <mingo@redhat.com>,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Matt Turner <mattst88@gmail.com>,
	Haavard Skinnemoen <hskinnemoen@gmail.com>,
	Fenghua Yu <fenghua.yu@intel.co>
Subject: Re: [PATCH v3 04/32] asm-generic: add ioremap_nopost() remap interface
Date: Wed, 12 Apr 2017 11:00:28 +0100	[thread overview]
Message-ID: <20170412100028.GB31143@red-moon> (raw)
In-Reply-To: <1491952447.7236.24.camel@kernel.crashing.org>

On Wed, Apr 12, 2017 at 09:14:07AM +1000, Benjamin Herrenschmidt wrote:
> On Tue, 2017-04-11 at 15:31 +0100, Lorenzo Pieralisi wrote:
> > > This is a semantic that simply *cannot* be generically provided accross
> > > architectures as a mapping attribute.
> > 
> > I agree that a default implementation does not make much sense. The
> > only solution to this, if we want the ioremap_nopost to be made available
> > to generic code (and drivers - ie DT PCI host bridge drivers on ARM/ARM64
> > are not arch code), is to make the ioremap_nopost() call return NULL
> > unless overriden by arch code that can provide its semantics.
> 
> That would be a better option.

I think that's what I will implement which basically means I will
replace the default:

static inline void __iomem *ioremap_nopost(phys_addr_t offset, size_t size)
{
	return ioremap_nocache(offset, size);
}

with

static inline void __iomem *ioremap_nopost(phys_addr_t offset, size_t size)
{
	return NULL;
}

If an arch can override ioremap_nopost() with sensible mapping
attributes (or whatever make it enforceable) it does, if it can't
any ioremap_nopost() usage will result in a mapping failure, if you
see any other viable solution please shout.

Thanks,
Lorenzo

WARNING: multiple messages have this Message-ID (diff)
From: lorenzo.pieralisi@arm.com (Lorenzo Pieralisi)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 04/32] asm-generic: add ioremap_nopost() remap interface
Date: Wed, 12 Apr 2017 11:00:28 +0100	[thread overview]
Message-ID: <20170412100028.GB31143@red-moon> (raw)
In-Reply-To: <1491952447.7236.24.camel@kernel.crashing.org>

On Wed, Apr 12, 2017 at 09:14:07AM +1000, Benjamin Herrenschmidt wrote:
> On Tue, 2017-04-11 at 15:31 +0100, Lorenzo Pieralisi wrote:
> > > This is a semantic that simply *cannot* be generically provided accross
> > > architectures as a mapping attribute.
> > 
> > I agree that a default implementation does not make much sense. The
> > only solution to this, if we want the ioremap_nopost to be made available
> > to generic code (and drivers - ie DT PCI host bridge drivers on ARM/ARM64
> > are not arch code), is to make the ioremap_nopost() call return NULL
> > unless overriden by arch code that can provide its semantics.
> 
> That would be a better option.

I think that's what I will implement which basically means I will
replace the default:

static inline void __iomem *ioremap_nopost(phys_addr_t offset, size_t size)
{
	return ioremap_nocache(offset, size);
}

with

static inline void __iomem *ioremap_nopost(phys_addr_t offset, size_t size)
{
	return NULL;
}

If an arch can override ioremap_nopost() with sensible mapping
attributes (or whatever make it enforceable) it does, if it can't
any ioremap_nopost() usage will result in a mapping failure, if you
see any other viable solution please shout.

Thanks,
Lorenzo

  reply	other threads:[~2017-04-12 10:00 UTC|newest]

Thread overview: 171+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-11 12:28 [PATCH v3 00/32] PCI: fix config and I/O Address space memory mappings Lorenzo Pieralisi
2017-04-11 12:28 ` Lorenzo Pieralisi
2017-04-11 12:28 ` Lorenzo Pieralisi
2017-04-11 12:28 ` [PATCH v3 01/32] PCI: remove __weak tag from pci_remap_iospace() Lorenzo Pieralisi
2017-04-11 12:28   ` Lorenzo Pieralisi
2017-04-11 12:28   ` Lorenzo Pieralisi
2017-04-11 12:28 ` [PATCH v3 02/32] asm-generic/pgtable.h: introduce pgprot_nonposted remap attribute Lorenzo Pieralisi
2017-04-11 12:28   ` Lorenzo Pieralisi
2017-04-11 12:28   ` Lorenzo Pieralisi
2017-04-11 12:28 ` [PATCH v3 03/32] PCI: fix pci_remap_iospace() " Lorenzo Pieralisi
2017-04-11 12:28   ` Lorenzo Pieralisi
2017-04-11 12:28   ` Lorenzo Pieralisi
2017-04-11 12:28 ` [PATCH v3 04/32] asm-generic: add ioremap_nopost() remap interface Lorenzo Pieralisi
2017-04-11 12:28   ` Lorenzo Pieralisi
2017-04-11 12:28   ` Lorenzo Pieralisi
2017-04-11 13:39   ` Benjamin Herrenschmidt
2017-04-11 13:39     ` Benjamin Herrenschmidt
2017-04-11 13:39     ` Benjamin Herrenschmidt
2017-04-11 14:31     ` Lorenzo Pieralisi
2017-04-11 14:31       ` Lorenzo Pieralisi
2017-04-11 14:31       ` Lorenzo Pieralisi
2017-04-11 23:14       ` Benjamin Herrenschmidt
2017-04-11 23:14         ` Benjamin Herrenschmidt
2017-04-11 23:14         ` Benjamin Herrenschmidt
2017-04-12 10:00         ` Lorenzo Pieralisi [this message]
2017-04-12 10:00           ` Lorenzo Pieralisi
2017-04-12 10:00           ` Lorenzo Pieralisi
2017-04-12 11:20     ` Russell King - ARM Linux
2017-04-12 11:20       ` Russell King - ARM Linux
2017-04-12 11:20       ` Russell King - ARM Linux
2017-04-18 15:49       ` Lorenzo Pieralisi
2017-04-18 15:49         ` Lorenzo Pieralisi
2017-04-18 15:49         ` Lorenzo Pieralisi
2017-04-18 16:31         ` Bjorn Helgaas
2017-04-18 16:31           ` Bjorn Helgaas
2017-04-18 16:31           ` Bjorn Helgaas
2017-04-18 22:43         ` Benjamin Herrenschmidt
2017-04-18 22:43           ` Benjamin Herrenschmidt
2017-04-18 22:43           ` Benjamin Herrenschmidt
2017-04-11 12:28 ` [PATCH v3 05/32] alpha: include default ioremap_nopost() implementation Lorenzo Pieralisi
2017-04-11 12:28   ` Lorenzo Pieralisi
2017-04-11 12:28 ` [PATCH v3 06/32] avr32: " Lorenzo Pieralisi
2017-04-11 12:28   ` Lorenzo Pieralisi
2017-04-11 13:55   ` Nicolas Ferre
2017-04-11 13:55     ` Nicolas Ferre
2017-04-11 13:55     ` Nicolas Ferre
2017-04-11 13:55     ` Nicolas Ferre
2017-04-11 12:28 ` [PATCH v3 07/32] arc: " Lorenzo Pieralisi
2017-04-11 12:28   ` Lorenzo Pieralisi
2017-04-11 12:28 ` [PATCH v3 08/32] cris: " Lorenzo Pieralisi
2017-04-11 12:28   ` Lorenzo Pieralisi
2017-04-11 13:15   ` Jesper Nilsson
2017-04-11 13:15     ` Jesper Nilsson
2017-04-11 13:15     ` Jesper Nilsson
2017-04-11 12:28 ` [PATCH v3 09/32] frv: " Lorenzo Pieralisi
2017-04-11 12:28   ` Lorenzo Pieralisi
2017-04-11 12:28 ` [PATCH v3 10/32] hexagon: " Lorenzo Pieralisi
2017-04-11 12:28   ` Lorenzo Pieralisi
2017-04-11 12:28   ` Lorenzo Pieralisi
2017-04-11 12:28   ` Lorenzo Pieralisi
2017-04-11 12:28 ` [PATCH v3 11/32] ia64: " Lorenzo Pieralisi
2017-04-11 12:28   ` Lorenzo Pieralisi
2017-04-11 12:28 ` [PATCH v3 12/32] m32r: " Lorenzo Pieralisi
2017-04-11 12:28   ` Lorenzo Pieralisi
2017-04-11 12:28 ` [PATCH v3 13/32] m68k: " Lorenzo Pieralisi
2017-04-11 12:28   ` Lorenzo Pieralisi
2017-04-11 12:28   ` Lorenzo Pieralisi
2017-04-11 12:28   ` Lorenzo Pieralisi
2017-04-11 12:28 ` [PATCH v3 14/32] metag: " Lorenzo Pieralisi
2017-04-11 12:28   ` Lorenzo Pieralisi
2017-04-11 12:28 ` [PATCH v3 15/32] microblaze: " Lorenzo Pieralisi
2017-04-11 12:28   ` Lorenzo Pieralisi
2017-04-11 12:28 ` [PATCH v3 16/32] mips: " Lorenzo Pieralisi
2017-04-11 12:28   ` Lorenzo Pieralisi
2017-04-11 12:28 ` [PATCH v3 17/32] mn10300: " Lorenzo Pieralisi
2017-04-11 12:28   ` Lorenzo Pieralisi
2017-04-11 12:28 ` [PATCH v3 18/32] nios2: " Lorenzo Pieralisi
2017-04-11 12:28   ` Lorenzo Pieralisi
2017-04-11 12:28 ` [PATCH v3 19/32] openrisc: " Lorenzo Pieralisi
2017-04-11 12:28   ` Lorenzo Pieralisi
2017-04-11 12:29 ` [PATCH v3 20/32] parisc: " Lorenzo Pieralisi
2017-04-11 12:29   ` Lorenzo Pieralisi
2017-04-11 12:29 ` [PATCH v3 21/32] powerpc: " Lorenzo Pieralisi
2017-04-11 12:29   ` Lorenzo Pieralisi
2017-04-11 13:38   ` Benjamin Herrenschmidt
2017-04-11 13:38     ` Benjamin Herrenschmidt
2017-04-11 13:38     ` Benjamin Herrenschmidt
2017-04-11 13:38     ` Benjamin Herrenschmidt
2017-04-11 14:24     ` Lorenzo Pieralisi
2017-04-11 14:24       ` Lorenzo Pieralisi
2017-04-11 14:24       ` Lorenzo Pieralisi
2017-04-11 23:15       ` Benjamin Herrenschmidt
2017-04-11 23:15         ` Benjamin Herrenschmidt
2017-04-11 23:15         ` Benjamin Herrenschmidt
2017-04-11 23:15         ` Benjamin Herrenschmidt
2017-04-13  3:35         ` Michael Ellerman
2017-04-13  3:35           ` Michael Ellerman
2017-04-11 12:29 ` [PATCH v3 22/32] s390: " Lorenzo Pieralisi
2017-04-11 12:29   ` Lorenzo Pieralisi
2017-04-11 12:29 ` [PATCH v3 23/32] sh: " Lorenzo Pieralisi
2017-04-11 12:29   ` Lorenzo Pieralisi
2017-04-11 12:29 ` [PATCH v3 24/32] sparc: " Lorenzo Pieralisi
2017-04-11 12:29   ` Lorenzo Pieralisi
2017-04-11 12:29 ` [PATCH v3 25/32] tile: " Lorenzo Pieralisi
2017-04-11 12:29   ` Lorenzo Pieralisi
2017-04-11 12:29 ` [PATCH v3 26/32] unicore32: " Lorenzo Pieralisi
2017-04-11 12:29   ` Lorenzo Pieralisi
2017-04-11 12:29 ` [PATCH v3 27/32] x86: " Lorenzo Pieralisi
2017-04-11 12:29   ` Lorenzo Pieralisi
2017-04-11 12:29 ` [PATCH v3 28/32] xtensa: " Lorenzo Pieralisi
2017-04-11 12:29   ` Lorenzo Pieralisi
2017-04-11 12:29 ` [PATCH v3 29/32] arm64: implement ioremap_nopost() interface Lorenzo Pieralisi
2017-04-11 12:29   ` Lorenzo Pieralisi
2017-04-11 12:29   ` Lorenzo Pieralisi
2017-04-11 12:29   ` Lorenzo Pieralisi
2017-04-11 12:29 ` [PATCH v3 30/32] arm: " Lorenzo Pieralisi
2017-04-11 12:29   ` Lorenzo Pieralisi
2017-04-11 12:29 ` [PATCH v3 31/32] lib: fix Devres devm_ioremap_* offset parameter kerneldoc description Lorenzo Pieralisi
2017-04-11 12:29   ` Lorenzo Pieralisi
2017-04-11 12:29   ` Lorenzo Pieralisi
2017-04-11 12:29 ` [PATCH v3 32/32] lib: implement Devres ioremap_nopost() interface Lorenzo Pieralisi
2017-04-11 12:29   ` Lorenzo Pieralisi
2017-04-11 12:29   ` Lorenzo Pieralisi
2017-04-11 13:38 ` [PATCH v3 00/32] PCI: fix config and I/O Address space memory mappings Benjamin Herrenschmidt
2017-04-11 13:38   ` Benjamin Herrenschmidt
2017-04-11 13:38   ` Benjamin Herrenschmidt
2017-04-11 14:08   ` Lorenzo Pieralisi
2017-04-11 14:08     ` Lorenzo Pieralisi
2017-04-11 14:08     ` Lorenzo Pieralisi
2017-04-11 23:12     ` Benjamin Herrenschmidt
2017-04-11 23:12       ` Benjamin Herrenschmidt
2017-04-11 23:12       ` Benjamin Herrenschmidt
2017-04-12  9:44       ` Lorenzo Pieralisi
2017-04-12  9:44         ` Lorenzo Pieralisi
2017-04-12  9:44         ` Lorenzo Pieralisi
2017-04-12 13:48         ` Benjamin Herrenschmidt
2017-04-12 13:48           ` Benjamin Herrenschmidt
2017-04-12 13:48           ` Benjamin Herrenschmidt
2017-04-12 11:31       ` Russell King - ARM Linux
2017-04-12 11:31         ` Russell King - ARM Linux
2017-04-12 11:31         ` Russell King - ARM Linux
2017-04-12 13:51         ` Benjamin Herrenschmidt
2017-04-12 13:51           ` Benjamin Herrenschmidt
2017-04-12 13:51           ` Benjamin Herrenschmidt
2017-04-12 14:16           ` Russell King - ARM Linux
2017-04-12 14:16             ` Russell King - ARM Linux
2017-04-12 14:16             ` Russell King - ARM Linux
2017-04-12 14:41             ` Lorenzo Pieralisi
2017-04-12 14:41               ` Lorenzo Pieralisi
2017-04-12 14:41               ` Lorenzo Pieralisi
2017-04-12 22:30               ` Benjamin Herrenschmidt
2017-04-12 22:30                 ` Benjamin Herrenschmidt
2017-04-12 22:30                 ` Benjamin Herrenschmidt
2017-04-12 22:45                 ` Russell King - ARM Linux
2017-04-12 22:45                   ` Russell King - ARM Linux
2017-04-12 22:45                   ` Russell King - ARM Linux
2017-04-13  0:53                   ` Benjamin Herrenschmidt
2017-04-13  0:53                     ` Benjamin Herrenschmidt
2017-04-13  0:53                     ` Benjamin Herrenschmidt
2017-04-18  8:57                     ` Lorenzo Pieralisi
2017-04-18  8:57                       ` Lorenzo Pieralisi
2017-04-18  8:57                       ` Lorenzo Pieralisi
2017-04-18 10:36                       ` Benjamin Herrenschmidt
2017-04-18 10:36                         ` Benjamin Herrenschmidt
2017-04-18 10:36                         ` Benjamin Herrenschmidt
2017-04-18 11:03                         ` Lorenzo Pieralisi
2017-04-18 11:03                           ` Lorenzo Pieralisi
2017-04-18 11:03                           ` Lorenzo Pieralisi
2017-04-18 22:38                           ` Benjamin Herrenschmidt
2017-04-18 22:38                             ` Benjamin Herrenschmidt
2017-04-18 22:38                             ` Benjamin Herrenschmidt

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=20170412100028.GB31143@red-moon \
    --to=lorenzo.pieralisi@arm.com \
    --cc=arnd@arndb.de \
    --cc=benh@kernel.crashing.org \
    --cc=bhelgaas@google.com \
    --cc=catalin.marinas@arm.com \
    --cc=chenhc@lemote.com \
    --cc=chris@zankel.net \
    --cc=cmetcalf@mellanox.com \
    --cc=dalias@libc.org \
    --cc=davem@davemloft.net \
    --cc=deller@gmx.de \
    --cc=dhowells@redhat.com \
    --cc=egtvedt@samfundet.no \
    --cc=fenghua.yu@intel.com \
    --cc=geert@linux-m68k.org \
    --cc=gxt@mprc.pku.edu.cn \
    --cc=heiko.carstens@de.ibm.com \
    --cc=hskinnemoen@gmail.com \
    --cc=ink@jurassic.park.msu.ru \
    --cc=james.hogan@imgtec.com \
    --cc=jcmvbkbc@gmail.com \
    --cc=jejb@parisc-linux.org \
    --cc=jesper.nilsson@axis.com \
    --cc=jonas@southpole.se \
    --cc=lftan@altera.com \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=mattst88@gmail.com \
    --cc=mcgrof@kernel.org \
    --cc=mingo@redhat.com \
    --cc=monstr@monstr.eu \
    --cc=mpe@ellerman.id.au \
    --cc=nks@flawful.org \
    --cc=paulus@samba.org \
    --cc=ralf@linux-mips.org \
    --cc=rkuo@codeaurora.org \
    --cc=rth@twiddle.net \
    --cc=schwidefsky@de.ibm.com \
    --cc=shorne@gmail.com \
    --cc=starvik@axis.com \
    --cc=stefan.kristiansson@saunalahti.fi \
    --cc=tglx@linutronix.de \
    --cc=tony.luck@intel.com \
    --cc=vgupta@synopsys.com \
    --cc=will.deacon@arm.com \
    --cc=ysato@users.sourceforge.jp \
    /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.