All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mel Gorman <mgorman@suse.de>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Dave Chinner <david@fromorbit.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Ingo Molnar <mingo@kernel.org>,
	Aneesh Kumar <aneesh.kumar@linux.vnet.ibm.com>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Linux-MM <linux-mm@kvack.org>,
	xfs@oss.sgi.com, ppc-dev <linuxppc-dev@lists.ozlabs.org>
Subject: Re: [PATCH 1/4] mm: thp: Return the correct value for change_huge_pmd
Date: Sat, 7 Mar 2015 20:56:16 +0000	[thread overview]
Message-ID: <20150307205616.GZ3087@suse.de> (raw)
In-Reply-To: <CA+55aFyCgzNGU-VAaKvwTYFhtJc_ugLK6hRzZBCxMYdAt5TVuA@mail.gmail.com>

On Sat, Mar 07, 2015 at 12:31:03PM -0800, Linus Torvalds wrote:
> On Sat, Mar 7, 2015 at 7:20 AM, Mel Gorman <mgorman@suse.de> wrote:
> >
> >                 if (!prot_numa || !pmd_protnone(*pmd)) {
> > -                       ret = 1;
> >                         entry = pmdp_get_and_clear_notify(mm, addr, pmd);
> >                         entry = pmd_modify(entry, newprot);
> >                         ret = HPAGE_PMD_NR;
> 
> Hmm. I know I acked this already, but the return value - which correct
> - is still potentially something we could improve upon.
> 
> In particular, we don't need to flush the TLB's if the old entry was
> not present. Sadly, we don't have a helper function for that.
> 
> But the code *could* do something like
> 
>     entry = pmdp_get_and_clear_notify(mm, addr, pmd);
>     ret = pmd_tlb_cacheable(entry) ? HPAGE_PMD_NR : 1;
>     entry = pmd_modify(entry, newprot);
> 
> where pmd_tlb_cacheable() on x86 would test if _PAGE_PRESENT (bit #0) is set.
> 

I agree with you in principle. pmd_tlb_cacheable looks and sounds very
similar to pte_accessible().

> In particular, that would mean that as we change *from* a protnone
> (whether NUMA or really protnone) we wouldn't need to flush the TLB.
> 
> In fact, we could make it even more aggressive: it's not just an old
> non-present TLB entry that doesn't need flushing - we can avoid the
> flushing whenever we strictly increase the access rigths. So we could
> have something that takes the old entry _and_ the new protections into
> account, and avoids the TLB flush if the new entry is strictly more
> permissive.
> 
> This doesn't explain the extra TLB flushes Dave sees, though, because
> the old code didn't make those kinds of optimizations either. But
> maybe something like this is worth doing.
> 

I think it is worth doing although it'll be after LSF/MM before I do it. I
severely doubt this is what Dave is seeing because the vmstats indicated
there was no THP activity but it's still a good idea.

-- 
Mel Gorman
SUSE Labs

WARNING: multiple messages have this Message-ID (diff)
From: Mel Gorman <mgorman@suse.de>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	xfs@oss.sgi.com, Linux-MM <linux-mm@kvack.org>,
	Aneesh Kumar <aneesh.kumar@linux.vnet.ibm.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	ppc-dev <linuxppc-dev@lists.ozlabs.org>,
	Ingo Molnar <mingo@kernel.org>
Subject: Re: [PATCH 1/4] mm: thp: Return the correct value for change_huge_pmd
Date: Sat, 7 Mar 2015 20:56:16 +0000	[thread overview]
Message-ID: <20150307205616.GZ3087@suse.de> (raw)
In-Reply-To: <CA+55aFyCgzNGU-VAaKvwTYFhtJc_ugLK6hRzZBCxMYdAt5TVuA@mail.gmail.com>

On Sat, Mar 07, 2015 at 12:31:03PM -0800, Linus Torvalds wrote:
> On Sat, Mar 7, 2015 at 7:20 AM, Mel Gorman <mgorman@suse.de> wrote:
> >
> >                 if (!prot_numa || !pmd_protnone(*pmd)) {
> > -                       ret = 1;
> >                         entry = pmdp_get_and_clear_notify(mm, addr, pmd);
> >                         entry = pmd_modify(entry, newprot);
> >                         ret = HPAGE_PMD_NR;
> 
> Hmm. I know I acked this already, but the return value - which correct
> - is still potentially something we could improve upon.
> 
> In particular, we don't need to flush the TLB's if the old entry was
> not present. Sadly, we don't have a helper function for that.
> 
> But the code *could* do something like
> 
>     entry = pmdp_get_and_clear_notify(mm, addr, pmd);
>     ret = pmd_tlb_cacheable(entry) ? HPAGE_PMD_NR : 1;
>     entry = pmd_modify(entry, newprot);
> 
> where pmd_tlb_cacheable() on x86 would test if _PAGE_PRESENT (bit #0) is set.
> 

I agree with you in principle. pmd_tlb_cacheable looks and sounds very
similar to pte_accessible().

> In particular, that would mean that as we change *from* a protnone
> (whether NUMA or really protnone) we wouldn't need to flush the TLB.
> 
> In fact, we could make it even more aggressive: it's not just an old
> non-present TLB entry that doesn't need flushing - we can avoid the
> flushing whenever we strictly increase the access rigths. So we could
> have something that takes the old entry _and_ the new protections into
> account, and avoids the TLB flush if the new entry is strictly more
> permissive.
> 
> This doesn't explain the extra TLB flushes Dave sees, though, because
> the old code didn't make those kinds of optimizations either. But
> maybe something like this is worth doing.
> 

I think it is worth doing although it'll be after LSF/MM before I do it. I
severely doubt this is what Dave is seeing because the vmstats indicated
there was no THP activity but it's still a good idea.

-- 
Mel Gorman
SUSE Labs

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs

WARNING: multiple messages have this Message-ID (diff)
From: Mel Gorman <mgorman@suse.de>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Dave Chinner <david@fromorbit.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Ingo Molnar <mingo@kernel.org>,
	Aneesh Kumar <aneesh.kumar@linux.vnet.ibm.com>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Linux-MM <linux-mm@kvack.org>,
	xfs@oss.sgi.com, ppc-dev <linuxppc-dev@lists.ozlabs.org>
Subject: Re: [PATCH 1/4] mm: thp: Return the correct value for change_huge_pmd
Date: Sat, 7 Mar 2015 20:56:16 +0000	[thread overview]
Message-ID: <20150307205616.GZ3087@suse.de> (raw)
In-Reply-To: <CA+55aFyCgzNGU-VAaKvwTYFhtJc_ugLK6hRzZBCxMYdAt5TVuA@mail.gmail.com>

On Sat, Mar 07, 2015 at 12:31:03PM -0800, Linus Torvalds wrote:
> On Sat, Mar 7, 2015 at 7:20 AM, Mel Gorman <mgorman@suse.de> wrote:
> >
> >                 if (!prot_numa || !pmd_protnone(*pmd)) {
> > -                       ret = 1;
> >                         entry = pmdp_get_and_clear_notify(mm, addr, pmd);
> >                         entry = pmd_modify(entry, newprot);
> >                         ret = HPAGE_PMD_NR;
> 
> Hmm. I know I acked this already, but the return value - which correct
> - is still potentially something we could improve upon.
> 
> In particular, we don't need to flush the TLB's if the old entry was
> not present. Sadly, we don't have a helper function for that.
> 
> But the code *could* do something like
> 
>     entry = pmdp_get_and_clear_notify(mm, addr, pmd);
>     ret = pmd_tlb_cacheable(entry) ? HPAGE_PMD_NR : 1;
>     entry = pmd_modify(entry, newprot);
> 
> where pmd_tlb_cacheable() on x86 would test if _PAGE_PRESENT (bit #0) is set.
> 

I agree with you in principle. pmd_tlb_cacheable looks and sounds very
similar to pte_accessible().

> In particular, that would mean that as we change *from* a protnone
> (whether NUMA or really protnone) we wouldn't need to flush the TLB.
> 
> In fact, we could make it even more aggressive: it's not just an old
> non-present TLB entry that doesn't need flushing - we can avoid the
> flushing whenever we strictly increase the access rigths. So we could
> have something that takes the old entry _and_ the new protections into
> account, and avoids the TLB flush if the new entry is strictly more
> permissive.
> 
> This doesn't explain the extra TLB flushes Dave sees, though, because
> the old code didn't make those kinds of optimizations either. But
> maybe something like this is worth doing.
> 

I think it is worth doing although it'll be after LSF/MM before I do it. I
severely doubt this is what Dave is seeing because the vmstats indicated
there was no THP activity but it's still a good idea.

-- 
Mel Gorman
SUSE Labs

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

WARNING: multiple messages have this Message-ID (diff)
From: Mel Gorman <mgorman@suse.de>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Dave Chinner <david@fromorbit.com>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	xfs@oss.sgi.com, Linux-MM <linux-mm@kvack.org>,
	Aneesh Kumar <aneesh.kumar@linux.vnet.ibm.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	ppc-dev <linuxppc-dev@lists.ozlabs.org>,
	Ingo Molnar <mingo@kernel.org>
Subject: Re: [PATCH 1/4] mm: thp: Return the correct value for change_huge_pmd
Date: Sat, 7 Mar 2015 20:56:16 +0000	[thread overview]
Message-ID: <20150307205616.GZ3087@suse.de> (raw)
In-Reply-To: <CA+55aFyCgzNGU-VAaKvwTYFhtJc_ugLK6hRzZBCxMYdAt5TVuA@mail.gmail.com>

On Sat, Mar 07, 2015 at 12:31:03PM -0800, Linus Torvalds wrote:
> On Sat, Mar 7, 2015 at 7:20 AM, Mel Gorman <mgorman@suse.de> wrote:
> >
> >                 if (!prot_numa || !pmd_protnone(*pmd)) {
> > -                       ret = 1;
> >                         entry = pmdp_get_and_clear_notify(mm, addr, pmd);
> >                         entry = pmd_modify(entry, newprot);
> >                         ret = HPAGE_PMD_NR;
> 
> Hmm. I know I acked this already, but the return value - which correct
> - is still potentially something we could improve upon.
> 
> In particular, we don't need to flush the TLB's if the old entry was
> not present. Sadly, we don't have a helper function for that.
> 
> But the code *could* do something like
> 
>     entry = pmdp_get_and_clear_notify(mm, addr, pmd);
>     ret = pmd_tlb_cacheable(entry) ? HPAGE_PMD_NR : 1;
>     entry = pmd_modify(entry, newprot);
> 
> where pmd_tlb_cacheable() on x86 would test if _PAGE_PRESENT (bit #0) is set.
> 

I agree with you in principle. pmd_tlb_cacheable looks and sounds very
similar to pte_accessible().

> In particular, that would mean that as we change *from* a protnone
> (whether NUMA or really protnone) we wouldn't need to flush the TLB.
> 
> In fact, we could make it even more aggressive: it's not just an old
> non-present TLB entry that doesn't need flushing - we can avoid the
> flushing whenever we strictly increase the access rigths. So we could
> have something that takes the old entry _and_ the new protections into
> account, and avoids the TLB flush if the new entry is strictly more
> permissive.
> 
> This doesn't explain the extra TLB flushes Dave sees, though, because
> the old code didn't make those kinds of optimizations either. But
> maybe something like this is worth doing.
> 

I think it is worth doing although it'll be after LSF/MM before I do it. I
severely doubt this is what Dave is seeing because the vmstats indicated
there was no THP activity but it's still a good idea.

-- 
Mel Gorman
SUSE Labs

  reply	other threads:[~2015-03-07 20:56 UTC|newest]

Thread overview: 195+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-07 15:20 [RFC PATCH 0/4] Automatic NUMA balancing and PROT_NONE handling followup v2r8 Mel Gorman
2015-03-07 15:20 ` Mel Gorman
2015-03-07 15:20 ` Mel Gorman
2015-03-07 15:20 ` Mel Gorman
2015-03-07 15:20 ` [PATCH 1/4] mm: thp: Return the correct value for change_huge_pmd Mel Gorman
2015-03-07 15:20   ` Mel Gorman
2015-03-07 15:20   ` Mel Gorman
2015-03-07 15:20   ` Mel Gorman
2015-03-07 20:13   ` Linus Torvalds
2015-03-07 20:13     ` Linus Torvalds
2015-03-07 20:13     ` Linus Torvalds
2015-03-07 20:13     ` Linus Torvalds
2015-03-07 20:31   ` Linus Torvalds
2015-03-07 20:31     ` Linus Torvalds
2015-03-07 20:31     ` Linus Torvalds
2015-03-07 20:31     ` Linus Torvalds
2015-03-07 20:56     ` Mel Gorman [this message]
2015-03-07 20:56       ` Mel Gorman
2015-03-07 20:56       ` Mel Gorman
2015-03-07 20:56       ` Mel Gorman
2015-03-07 15:20 ` [PATCH 2/4] mm: numa: Remove migrate_ratelimited Mel Gorman
2015-03-07 15:20   ` Mel Gorman
2015-03-07 15:20   ` Mel Gorman
2015-03-07 15:20   ` Mel Gorman
2015-03-07 15:20 ` [PATCH 3/4] mm: numa: Mark huge PTEs young when clearing NUMA hinting faults Mel Gorman
2015-03-07 15:20   ` Mel Gorman
2015-03-07 15:20   ` Mel Gorman
2015-03-07 15:20   ` Mel Gorman
2015-03-07 18:33   ` Linus Torvalds
2015-03-07 18:33     ` Linus Torvalds
2015-03-07 18:33     ` Linus Torvalds
2015-03-07 18:33     ` Linus Torvalds
2015-03-07 18:42     ` Linus Torvalds
2015-03-07 18:42       ` Linus Torvalds
2015-03-07 18:42       ` Linus Torvalds
2015-03-07 18:42       ` Linus Torvalds
2015-03-07 15:20 ` [PATCH 4/4] mm: numa: Slow PTE scan rate if migration failures occur Mel Gorman
2015-03-07 15:20   ` Mel Gorman
2015-03-07 15:20   ` Mel Gorman
2015-03-07 15:20   ` Mel Gorman
2015-03-07 16:36   ` Ingo Molnar
2015-03-07 16:36     ` Ingo Molnar
2015-03-07 16:36     ` Ingo Molnar
2015-03-07 16:36     ` Ingo Molnar
2015-03-07 17:37     ` Mel Gorman
2015-03-07 17:37       ` Mel Gorman
2015-03-07 17:37       ` Mel Gorman
2015-03-07 17:37       ` Mel Gorman
2015-03-08  9:54       ` Ingo Molnar
2015-03-08  9:54         ` Ingo Molnar
2015-03-08  9:54         ` Ingo Molnar
2015-03-08  9:54         ` Ingo Molnar
2015-03-07 19:12     ` Linus Torvalds
2015-03-07 19:12       ` Linus Torvalds
2015-03-07 19:12       ` Linus Torvalds
2015-03-07 19:12       ` Linus Torvalds
2015-03-08 10:02       ` Ingo Molnar
2015-03-08 10:02         ` Ingo Molnar
2015-03-08 10:02         ` Ingo Molnar
2015-03-08 10:02         ` Ingo Molnar
2015-03-08 18:35         ` Linus Torvalds
2015-03-08 18:35           ` Linus Torvalds
2015-03-08 18:35           ` Linus Torvalds
2015-03-08 18:35           ` Linus Torvalds
2015-03-08 18:46           ` Linus Torvalds
2015-03-08 18:46             ` Linus Torvalds
2015-03-08 18:46             ` Linus Torvalds
2015-03-08 18:46             ` Linus Torvalds
2015-03-09 11:29           ` Dave Chinner
2015-03-09 11:29             ` Dave Chinner
2015-03-09 11:29             ` Dave Chinner
2015-03-09 11:29             ` Dave Chinner
2015-03-09 16:52             ` Linus Torvalds
2015-03-09 16:52               ` Linus Torvalds
2015-03-09 16:52               ` Linus Torvalds
2015-03-09 16:52               ` Linus Torvalds
2015-03-09 19:19               ` Dave Chinner
2015-03-09 19:19                 ` Dave Chinner
2015-03-09 19:19                 ` Dave Chinner
2015-03-10 23:55                 ` Linus Torvalds
2015-03-10 23:55                   ` Linus Torvalds
2015-03-10 23:55                   ` Linus Torvalds
2015-03-10 23:55                   ` Linus Torvalds
2015-03-12 13:10                   ` Mel Gorman
2015-03-12 13:10                     ` Mel Gorman
2015-03-12 13:10                     ` Mel Gorman
2015-03-12 13:10                     ` Mel Gorman
2015-03-12 16:20                     ` Linus Torvalds
2015-03-12 16:20                       ` Linus Torvalds
2015-03-12 16:20                       ` Linus Torvalds
2015-03-12 16:20                       ` Linus Torvalds
2015-03-12 18:49                       ` Mel Gorman
2015-03-12 18:49                         ` Mel Gorman
2015-03-12 18:49                         ` Mel Gorman
2015-03-12 18:49                         ` Mel Gorman
2015-03-17  7:06                         ` Dave Chinner
2015-03-17  7:06                           ` Dave Chinner
2015-03-17  7:06                           ` Dave Chinner
2015-03-17  7:06                           ` Dave Chinner
2015-03-17 16:53                           ` Linus Torvalds
2015-03-17 16:53                             ` Linus Torvalds
2015-03-17 16:53                             ` Linus Torvalds
2015-03-17 16:53                             ` Linus Torvalds
2015-03-17 20:51                             ` Dave Chinner
2015-03-17 20:51                               ` Dave Chinner
2015-03-17 20:51                               ` Dave Chinner
2015-03-17 20:51                               ` Dave Chinner
2015-03-17 21:30                               ` Linus Torvalds
2015-03-17 21:30                                 ` Linus Torvalds
2015-03-17 21:30                                 ` Linus Torvalds
2015-03-17 21:30                                 ` Linus Torvalds
2015-03-17 22:08                                 ` Dave Chinner
2015-03-17 22:08                                   ` Dave Chinner
2015-03-17 22:08                                   ` Dave Chinner
2015-03-17 22:08                                   ` Dave Chinner
2015-03-18 16:08                                   ` Linus Torvalds
2015-03-18 16:08                                     ` Linus Torvalds
2015-03-18 16:08                                     ` Linus Torvalds
2015-03-18 16:08                                     ` Linus Torvalds
2015-03-18 17:31                                     ` Linus Torvalds
2015-03-18 17:31                                       ` Linus Torvalds
2015-03-18 17:31                                       ` Linus Torvalds
2015-03-18 17:31                                       ` Linus Torvalds
2015-03-18 22:23                                       ` Dave Chinner
2015-03-18 22:23                                         ` Dave Chinner
2015-03-18 22:23                                         ` Dave Chinner
2015-03-18 22:23                                         ` Dave Chinner
2015-03-19 14:10                                       ` Mel Gorman
2015-03-19 14:10                                         ` Mel Gorman
2015-03-19 14:10                                         ` Mel Gorman
2015-03-19 14:10                                         ` Mel Gorman
2015-03-19 18:09                                         ` Linus Torvalds
2015-03-19 18:09                                           ` Linus Torvalds
2015-03-19 18:09                                           ` Linus Torvalds
2015-03-19 18:09                                           ` Linus Torvalds
2015-03-19 21:41                                       ` Linus Torvalds
2015-03-19 21:41                                         ` Linus Torvalds
2015-03-19 21:41                                         ` Linus Torvalds
2015-03-19 21:41                                         ` Linus Torvalds
2015-03-19 22:41                                         ` Dave Chinner
2015-03-19 22:41                                           ` Dave Chinner
2015-03-19 22:41                                           ` Dave Chinner
2015-03-19 22:41                                           ` Dave Chinner
2015-03-19 23:05                                           ` Linus Torvalds
2015-03-19 23:05                                             ` Linus Torvalds
2015-03-19 23:05                                             ` Linus Torvalds
2015-03-19 23:05                                             ` Linus Torvalds
2015-03-19 23:23                                             ` Dave Chinner
2015-03-19 23:23                                               ` Dave Chinner
2015-03-19 23:23                                               ` Dave Chinner
2015-03-19 23:23                                               ` Dave Chinner
2015-03-20  0:23                                             ` Dave Chinner
2015-03-20  0:23                                               ` Dave Chinner
2015-03-20  0:23                                               ` Dave Chinner
2015-03-20  0:23                                               ` Dave Chinner
2015-03-20  1:29                                               ` Linus Torvalds
2015-03-20  1:29                                                 ` Linus Torvalds
2015-03-20  1:29                                                 ` Linus Torvalds
2015-03-20  1:29                                                 ` Linus Torvalds
2015-03-20  4:13                                                 ` Dave Chinner
2015-03-20  4:13                                                   ` Dave Chinner
2015-03-20  4:13                                                   ` Dave Chinner
2015-03-20  4:13                                                   ` Dave Chinner
2015-03-20 17:02                                                   ` Linus Torvalds
2015-03-20 17:02                                                     ` Linus Torvalds
2015-03-20 17:02                                                     ` Linus Torvalds
2015-03-20 17:02                                                     ` Linus Torvalds
2015-03-23 12:01                                                     ` Mel Gorman
2015-03-23 12:01                                                       ` Mel Gorman
2015-03-23 12:01                                                       ` Mel Gorman
2015-03-23 12:01                                                       ` Mel Gorman
2015-03-20 10:12                                                 ` Mel Gorman
2015-03-20 10:12                                                   ` Mel Gorman
2015-03-20 10:12                                                   ` Mel Gorman
2015-03-20 10:12                                                   ` Mel Gorman
2015-03-20  9:56                                             ` Mel Gorman
2015-03-20  9:56                                               ` Mel Gorman
2015-03-20  9:56                                               ` Mel Gorman
2015-03-20  9:56                                               ` Mel Gorman
2015-03-08 20:40         ` Mel Gorman
2015-03-08 20:40           ` Mel Gorman
2015-03-08 20:40           ` Mel Gorman
2015-03-08 20:40           ` Mel Gorman
2015-03-09 21:02           ` Mel Gorman
2015-03-09 21:02             ` Mel Gorman
2015-03-09 21:02             ` Mel Gorman
2015-03-09 21:02             ` Mel Gorman
2015-03-10 13:08             ` Mel Gorman
2015-03-10 13:08               ` Mel Gorman
2015-03-10 13:08               ` Mel Gorman
2015-03-10 13:08               ` Mel Gorman
2015-03-08  9:41   ` Ingo Molnar
2015-03-08  9:41     ` Ingo Molnar
2015-03-08  9:41     ` Ingo Molnar
2015-03-08  9:41     ` Ingo Molnar

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=20150307205616.GZ3087@suse.de \
    --to=mgorman@suse.de \
    --cc=akpm@linux-foundation.org \
    --cc=aneesh.kumar@linux.vnet.ibm.com \
    --cc=david@fromorbit.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=mingo@kernel.org \
    --cc=torvalds@linux-foundation.org \
    --cc=xfs@oss.sgi.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.