From: Mike Rapoport <rppt@kernel.org>
To: Kefeng Wang <wangkefeng.wang@huawei.com>
Cc: David Hildenbrand <david@redhat.com>,
Catalin Marinas <catalin.marinas@arm.com>,
Anshuman Khandual <anshuman.khandual@arm.com>,
linux-kernel@vger.kernel.org, Mike Rapoport <rppt@linux.ibm.com>,
linux-mm@kvack.org, kvmarm@lists.cs.columbia.edu,
Marc Zyngier <maz@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
Will Deacon <will@kernel.org>,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v2 0/4] arm64: drop pfn_valid_within() and simplify pfn_valid()
Date: Sun, 25 Apr 2021 09:59:20 +0300 [thread overview]
Message-ID: <YIUTSDnWe97vX1YP@kernel.org> (raw)
In-Reply-To: <33fa74c2-f32d-f224-eb30-acdb717179ff@huawei.com>
On Thu, Apr 22, 2021 at 11:28:24PM +0800, Kefeng Wang wrote:
>
> On 2021/4/22 15:29, Mike Rapoport wrote:
> > On Thu, Apr 22, 2021 at 03:00:20PM +0800, Kefeng Wang wrote:
> > > On 2021/4/21 14:51, Mike Rapoport wrote:
> > > > From: Mike Rapoport <rppt@linux.ibm.com>
> > > >
> > > > Hi,
> > > >
> > > > These patches aim to remove CONFIG_HOLES_IN_ZONE and essentially hardwire
> > > > pfn_valid_within() to 1.
> > > >
> > > > The idea is to mark NOMAP pages as reserved in the memory map and restore
> > > > the intended semantics of pfn_valid() to designate availability of struct
> > > > page for a pfn.
> > > >
> > > > With this the core mm will be able to cope with the fact that it cannot use
> > > > NOMAP pages and the holes created by NOMAP ranges within MAX_ORDER blocks
> > > > will be treated correctly even without the need for pfn_valid_within.
> > > >
> > > > The patches are only boot tested on qemu-system-aarch64 so I'd really
> > > > appreciate memory stress tests on real hardware.
> > > >
> > > > If this actually works we'll be one step closer to drop custom pfn_valid()
> > > > on arm64 altogether.
> > > Hi Mike,I have a question, without HOLES_IN_ZONE, the pfn_valid_within() in
> > > move_freepages_block()->move_freepages()
> > > will be optimized, if there are holes in zone, the 'struce page'(memory map)
> > > for pfn range of hole will be free by
> > > free_memmap(), and then the page traverse in the zone(with holes) from
> > > move_freepages() will meet the wrong page,
> > > then it could panic at PageLRU(page) test, check link[1],
> > First, HOLES_IN_ZONE name us hugely misleading, this configuration option
> > has nothing to to with memory holes, but rather it is there to deal with
> > holes or undefined struct pages in the memory map, when these holes can be
> > inside a MAX_ORDER_NR_PAGES region.
> >
> > In general pfn walkers use pfn_valid() and pfn_valid_within() to avoid
> > accessing *missing* struct pages, like those that are freed at
> > free_memmap(). But on arm64 these tests also filter out the nomap entries
> > because their struct pages are not initialized.
> >
> > The panic you refer to happened because there was an uninitialized struct
> > page in the middle of MAX_ORDER_NR_PAGES region because it corresponded to
> > nomap memory.
> >
> > With these changes I make sure that such pages will be properly initialized
> > as PageReserved and the pfn walkers will be able to rely on the memory map.
> >
> > Note also, that free_memmap() aligns the parts being freed on MAX_ORDER
> > boundaries, so there will be no missing parts in the memory map within a
> > MAX_ORDER_NR_PAGES region.
>
> Ok, thanks, we met a same panic like the link on arm32(without
> HOLES_IN_ZONE),
>
> the scheme for arm64 could be suit for arm32, right?
In general yes. You just need to make sure that usage of pfn_valid() in
arch/arm does not presume that it tests something beyond availability of
struct page for a pfn.
> I will try the patchset with some changes on arm32 and give some
> feedback.
>
> Again, the stupid question, where will mark the region of memblock with
> MEMBLOCK_NOMAP flag ?
Not sure I understand the question. The memory regions with "nomap"
property in the device tree will be marked MEMBLOCK_NOMAP.
> > > "The idea is to mark NOMAP pages as reserved in the memory map", I see the
> > > patch2 check memblock_is_nomap() in memory region
> > > of memblock, but it seems that memblock_mark_nomap() is not called(maybe I
> > > missed), then memmap_init_reserved_pages() won't
> > > work, so should the HOLES_IN_ZONE still be needed for generic mm code?
> > >
> > > [1] https://lore.kernel.org/linux-arm-kernel/541193a6-2bce-f042-5bb2-88913d5f1047@arm.com/
> > >
--
Sincerely yours,
Mike.
_______________________________________________
kvmarm mailing list
kvmarm@lists.cs.columbia.edu
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm
WARNING: multiple messages have this Message-ID (diff)
From: Mike Rapoport <rppt@kernel.org>
To: Kefeng Wang <wangkefeng.wang@huawei.com>
Cc: linux-arm-kernel@lists.infradead.org,
Andrew Morton <akpm@linux-foundation.org>,
Anshuman Khandual <anshuman.khandual@arm.com>,
Ard Biesheuvel <ardb@kernel.org>,
Catalin Marinas <catalin.marinas@arm.com>,
David Hildenbrand <david@redhat.com>,
Marc Zyngier <maz@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
Mike Rapoport <rppt@linux.ibm.com>, Will Deacon <will@kernel.org>,
kvmarm@lists.cs.columbia.edu, linux-kernel@vger.kernel.org,
linux-mm@kvack.org
Subject: Re: [PATCH v2 0/4] arm64: drop pfn_valid_within() and simplify pfn_valid()
Date: Sun, 25 Apr 2021 09:59:20 +0300 [thread overview]
Message-ID: <YIUTSDnWe97vX1YP@kernel.org> (raw)
In-Reply-To: <33fa74c2-f32d-f224-eb30-acdb717179ff@huawei.com>
On Thu, Apr 22, 2021 at 11:28:24PM +0800, Kefeng Wang wrote:
>
> On 2021/4/22 15:29, Mike Rapoport wrote:
> > On Thu, Apr 22, 2021 at 03:00:20PM +0800, Kefeng Wang wrote:
> > > On 2021/4/21 14:51, Mike Rapoport wrote:
> > > > From: Mike Rapoport <rppt@linux.ibm.com>
> > > >
> > > > Hi,
> > > >
> > > > These patches aim to remove CONFIG_HOLES_IN_ZONE and essentially hardwire
> > > > pfn_valid_within() to 1.
> > > >
> > > > The idea is to mark NOMAP pages as reserved in the memory map and restore
> > > > the intended semantics of pfn_valid() to designate availability of struct
> > > > page for a pfn.
> > > >
> > > > With this the core mm will be able to cope with the fact that it cannot use
> > > > NOMAP pages and the holes created by NOMAP ranges within MAX_ORDER blocks
> > > > will be treated correctly even without the need for pfn_valid_within.
> > > >
> > > > The patches are only boot tested on qemu-system-aarch64 so I'd really
> > > > appreciate memory stress tests on real hardware.
> > > >
> > > > If this actually works we'll be one step closer to drop custom pfn_valid()
> > > > on arm64 altogether.
> > > Hi Mike,I have a question, without HOLES_IN_ZONE, the pfn_valid_within() in
> > > move_freepages_block()->move_freepages()
> > > will be optimized, if there are holes in zone, the 'struce page'(memory map)
> > > for pfn range of hole will be free by
> > > free_memmap(), and then the page traverse in the zone(with holes) from
> > > move_freepages() will meet the wrong page,
> > > then it could panic at PageLRU(page) test, check link[1],
> > First, HOLES_IN_ZONE name us hugely misleading, this configuration option
> > has nothing to to with memory holes, but rather it is there to deal with
> > holes or undefined struct pages in the memory map, when these holes can be
> > inside a MAX_ORDER_NR_PAGES region.
> >
> > In general pfn walkers use pfn_valid() and pfn_valid_within() to avoid
> > accessing *missing* struct pages, like those that are freed at
> > free_memmap(). But on arm64 these tests also filter out the nomap entries
> > because their struct pages are not initialized.
> >
> > The panic you refer to happened because there was an uninitialized struct
> > page in the middle of MAX_ORDER_NR_PAGES region because it corresponded to
> > nomap memory.
> >
> > With these changes I make sure that such pages will be properly initialized
> > as PageReserved and the pfn walkers will be able to rely on the memory map.
> >
> > Note also, that free_memmap() aligns the parts being freed on MAX_ORDER
> > boundaries, so there will be no missing parts in the memory map within a
> > MAX_ORDER_NR_PAGES region.
>
> Ok, thanks, we met a same panic like the link on arm32(without
> HOLES_IN_ZONE),
>
> the scheme for arm64 could be suit for arm32, right?
In general yes. You just need to make sure that usage of pfn_valid() in
arch/arm does not presume that it tests something beyond availability of
struct page for a pfn.
> I will try the patchset with some changes on arm32 and give some
> feedback.
>
> Again, the stupid question, where will mark the region of memblock with
> MEMBLOCK_NOMAP flag ?
Not sure I understand the question. The memory regions with "nomap"
property in the device tree will be marked MEMBLOCK_NOMAP.
> > > "The idea is to mark NOMAP pages as reserved in the memory map", I see the
> > > patch2 check memblock_is_nomap() in memory region
> > > of memblock, but it seems that memblock_mark_nomap() is not called(maybe I
> > > missed), then memmap_init_reserved_pages() won't
> > > work, so should the HOLES_IN_ZONE still be needed for generic mm code?
> > >
> > > [1] https://lore.kernel.org/linux-arm-kernel/541193a6-2bce-f042-5bb2-88913d5f1047@arm.com/
> > >
--
Sincerely yours,
Mike.
_______________________________________________
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: Mike Rapoport <rppt@kernel.org>
To: Kefeng Wang <wangkefeng.wang@huawei.com>
Cc: linux-arm-kernel@lists.infradead.org,
Andrew Morton <akpm@linux-foundation.org>,
Anshuman Khandual <anshuman.khandual@arm.com>,
Ard Biesheuvel <ardb@kernel.org>,
Catalin Marinas <catalin.marinas@arm.com>,
David Hildenbrand <david@redhat.com>,
Marc Zyngier <maz@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
Mike Rapoport <rppt@linux.ibm.com>, Will Deacon <will@kernel.org>,
kvmarm@lists.cs.columbia.edu, linux-kernel@vger.kernel.org,
linux-mm@kvack.org
Subject: Re: [PATCH v2 0/4] arm64: drop pfn_valid_within() and simplify pfn_valid()
Date: Sun, 25 Apr 2021 09:59:20 +0300 [thread overview]
Message-ID: <YIUTSDnWe97vX1YP@kernel.org> (raw)
In-Reply-To: <33fa74c2-f32d-f224-eb30-acdb717179ff@huawei.com>
On Thu, Apr 22, 2021 at 11:28:24PM +0800, Kefeng Wang wrote:
>
> On 2021/4/22 15:29, Mike Rapoport wrote:
> > On Thu, Apr 22, 2021 at 03:00:20PM +0800, Kefeng Wang wrote:
> > > On 2021/4/21 14:51, Mike Rapoport wrote:
> > > > From: Mike Rapoport <rppt@linux.ibm.com>
> > > >
> > > > Hi,
> > > >
> > > > These patches aim to remove CONFIG_HOLES_IN_ZONE and essentially hardwire
> > > > pfn_valid_within() to 1.
> > > >
> > > > The idea is to mark NOMAP pages as reserved in the memory map and restore
> > > > the intended semantics of pfn_valid() to designate availability of struct
> > > > page for a pfn.
> > > >
> > > > With this the core mm will be able to cope with the fact that it cannot use
> > > > NOMAP pages and the holes created by NOMAP ranges within MAX_ORDER blocks
> > > > will be treated correctly even without the need for pfn_valid_within.
> > > >
> > > > The patches are only boot tested on qemu-system-aarch64 so I'd really
> > > > appreciate memory stress tests on real hardware.
> > > >
> > > > If this actually works we'll be one step closer to drop custom pfn_valid()
> > > > on arm64 altogether.
> > > Hi Mike,I have a question, without HOLES_IN_ZONE, the pfn_valid_within() in
> > > move_freepages_block()->move_freepages()
> > > will be optimized, if there are holes in zone, the 'struce page'(memory map)
> > > for pfn range of hole will be free by
> > > free_memmap(), and then the page traverse in the zone(with holes) from
> > > move_freepages() will meet the wrong page,
> > > then it could panic at PageLRU(page) test, check link[1],
> > First, HOLES_IN_ZONE name us hugely misleading, this configuration option
> > has nothing to to with memory holes, but rather it is there to deal with
> > holes or undefined struct pages in the memory map, when these holes can be
> > inside a MAX_ORDER_NR_PAGES region.
> >
> > In general pfn walkers use pfn_valid() and pfn_valid_within() to avoid
> > accessing *missing* struct pages, like those that are freed at
> > free_memmap(). But on arm64 these tests also filter out the nomap entries
> > because their struct pages are not initialized.
> >
> > The panic you refer to happened because there was an uninitialized struct
> > page in the middle of MAX_ORDER_NR_PAGES region because it corresponded to
> > nomap memory.
> >
> > With these changes I make sure that such pages will be properly initialized
> > as PageReserved and the pfn walkers will be able to rely on the memory map.
> >
> > Note also, that free_memmap() aligns the parts being freed on MAX_ORDER
> > boundaries, so there will be no missing parts in the memory map within a
> > MAX_ORDER_NR_PAGES region.
>
> Ok, thanks, we met a same panic like the link on arm32(without
> HOLES_IN_ZONE),
>
> the scheme for arm64 could be suit for arm32, right?
In general yes. You just need to make sure that usage of pfn_valid() in
arch/arm does not presume that it tests something beyond availability of
struct page for a pfn.
> I will try the patchset with some changes on arm32 and give some
> feedback.
>
> Again, the stupid question, where will mark the region of memblock with
> MEMBLOCK_NOMAP flag ?
Not sure I understand the question. The memory regions with "nomap"
property in the device tree will be marked MEMBLOCK_NOMAP.
> > > "The idea is to mark NOMAP pages as reserved in the memory map", I see the
> > > patch2 check memblock_is_nomap() in memory region
> > > of memblock, but it seems that memblock_mark_nomap() is not called(maybe I
> > > missed), then memmap_init_reserved_pages() won't
> > > work, so should the HOLES_IN_ZONE still be needed for generic mm code?
> > >
> > > [1] https://lore.kernel.org/linux-arm-kernel/541193a6-2bce-f042-5bb2-88913d5f1047@arm.com/
> > >
--
Sincerely yours,
Mike.
next prev parent reply other threads:[~2021-04-25 6:59 UTC|newest]
Thread overview: 143+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-21 6:51 [PATCH v2 0/4] arm64: drop pfn_valid_within() and simplify pfn_valid() Mike Rapoport
2021-04-21 6:51 ` Mike Rapoport
2021-04-21 6:51 ` Mike Rapoport
2021-04-21 6:51 ` [PATCH v2 1/4] include/linux/mmzone.h: add documentation for pfn_valid() Mike Rapoport
2021-04-21 6:51 ` Mike Rapoport
2021-04-21 6:51 ` Mike Rapoport
2021-04-21 10:49 ` Anshuman Khandual
2021-04-21 10:49 ` Anshuman Khandual
2021-04-21 10:49 ` Anshuman Khandual
2021-04-21 6:51 ` [PATCH v2 2/4] memblock: update initialization of reserved pages Mike Rapoport
2021-04-21 6:51 ` Mike Rapoport
2021-04-21 6:51 ` Mike Rapoport
2021-04-21 7:49 ` David Hildenbrand
2021-04-21 7:49 ` David Hildenbrand
2021-04-21 7:49 ` David Hildenbrand
2021-04-21 10:51 ` Anshuman Khandual
2021-04-21 10:51 ` Anshuman Khandual
2021-04-21 10:51 ` Anshuman Khandual
2021-04-21 6:51 ` [PATCH v2 3/4] arm64: decouple check whether pfn is in linear map from pfn_valid() Mike Rapoport
2021-04-21 6:51 ` Mike Rapoport
2021-04-21 6:51 ` Mike Rapoport
2021-04-21 10:59 ` Anshuman Khandual
2021-04-21 10:59 ` Anshuman Khandual
2021-04-21 10:59 ` Anshuman Khandual
2021-04-21 12:19 ` Mike Rapoport
2021-04-21 12:19 ` Mike Rapoport
2021-04-21 12:19 ` Mike Rapoport
2021-04-21 13:13 ` Anshuman Khandual
2021-04-21 13:13 ` Anshuman Khandual
2021-04-21 13:13 ` Anshuman Khandual
2021-04-21 6:51 ` [PATCH v2 4/4] arm64: drop pfn_valid_within() and simplify pfn_valid() Mike Rapoport
2021-04-21 6:51 ` Mike Rapoport
2021-04-21 6:51 ` Mike Rapoport
2021-04-21 7:49 ` David Hildenbrand
2021-04-21 7:49 ` David Hildenbrand
2021-04-21 7:49 ` David Hildenbrand
2021-04-21 11:06 ` Anshuman Khandual
2021-04-21 11:06 ` Anshuman Khandual
2021-04-21 11:06 ` Anshuman Khandual
2021-04-21 12:24 ` Mike Rapoport
2021-04-21 12:24 ` Mike Rapoport
2021-04-21 12:24 ` Mike Rapoport
2021-04-21 13:15 ` Anshuman Khandual
2021-04-21 13:15 ` Anshuman Khandual
2021-04-21 13:15 ` Anshuman Khandual
2021-04-22 7:00 ` [PATCH v2 0/4] " Kefeng Wang
2021-04-22 7:00 ` Kefeng Wang
2021-04-22 7:00 ` Kefeng Wang
2021-04-22 7:29 ` Mike Rapoport
2021-04-22 7:29 ` Mike Rapoport
2021-04-22 7:29 ` Mike Rapoport
2021-04-22 15:28 ` Kefeng Wang
2021-04-22 15:28 ` Kefeng Wang
2021-04-22 15:28 ` Kefeng Wang
2021-04-23 8:11 ` Kefeng Wang
2021-04-23 8:11 ` Kefeng Wang
2021-04-23 8:11 ` Kefeng Wang
2021-04-25 7:19 ` arm32: panic in move_freepages (Was [PATCH v2 0/4] arm64: drop pfn_valid_within() and simplify pfn_valid()) Mike Rapoport
2021-04-25 7:19 ` Mike Rapoport
2021-04-25 7:19 ` Mike Rapoport
2021-04-25 7:51 ` Kefeng Wang
2021-04-25 7:51 ` Kefeng Wang
2021-04-26 5:20 ` Mike Rapoport
2021-04-26 5:20 ` Mike Rapoport
2021-04-26 5:20 ` Mike Rapoport
2021-04-26 15:26 ` Kefeng Wang
2021-04-26 15:26 ` Kefeng Wang
2021-04-26 15:26 ` Kefeng Wang
2021-04-27 6:23 ` Mike Rapoport
2021-04-27 6:23 ` Mike Rapoport
2021-04-27 6:23 ` Mike Rapoport
2021-04-27 11:08 ` Kefeng Wang
2021-04-27 11:08 ` Kefeng Wang
2021-04-27 11:08 ` Kefeng Wang
2021-04-28 5:59 ` Mike Rapoport
2021-04-28 5:59 ` Mike Rapoport
2021-04-28 5:59 ` Mike Rapoport
2021-04-29 0:48 ` Kefeng Wang
2021-04-29 0:48 ` Kefeng Wang
2021-04-29 0:48 ` Kefeng Wang
2021-04-29 6:57 ` Mike Rapoport
2021-04-29 6:57 ` Mike Rapoport
2021-04-29 6:57 ` Mike Rapoport
2021-04-29 10:22 ` Kefeng Wang
2021-04-29 10:22 ` Kefeng Wang
2021-04-29 10:22 ` Kefeng Wang
2021-04-30 9:51 ` Mike Rapoport
2021-04-30 9:51 ` Mike Rapoport
2021-04-30 9:51 ` Mike Rapoport
2021-04-30 11:24 ` Kefeng Wang
2021-04-30 11:24 ` Kefeng Wang
2021-04-30 11:24 ` Kefeng Wang
2021-05-03 6:26 ` Mike Rapoport
2021-05-03 6:26 ` Mike Rapoport
2021-05-03 6:26 ` Mike Rapoport
2021-05-03 8:07 ` David Hildenbrand
2021-05-03 8:07 ` David Hildenbrand
2021-05-03 8:07 ` David Hildenbrand
2021-05-03 8:44 ` Mike Rapoport
2021-05-03 8:44 ` Mike Rapoport
2021-05-03 8:44 ` Mike Rapoport
2021-05-06 12:47 ` Kefeng Wang
2021-05-06 12:47 ` Kefeng Wang
2021-05-06 12:47 ` Kefeng Wang
2021-05-07 7:17 ` Kefeng Wang
2021-05-07 7:17 ` Kefeng Wang
2021-05-07 7:17 ` Kefeng Wang
2021-05-07 10:30 ` Mike Rapoport
2021-05-07 10:30 ` Mike Rapoport
2021-05-07 10:30 ` Mike Rapoport
2021-05-07 12:34 ` Kefeng Wang
2021-05-07 12:34 ` Kefeng Wang
2021-05-07 12:34 ` Kefeng Wang
2021-05-09 5:59 ` Mike Rapoport
2021-05-09 5:59 ` Mike Rapoport
2021-05-09 5:59 ` Mike Rapoport
2021-05-10 3:10 ` Kefeng Wang
2021-05-10 3:10 ` Kefeng Wang
2021-05-10 3:10 ` Kefeng Wang
2021-05-11 8:48 ` Mike Rapoport
2021-05-11 8:48 ` Mike Rapoport
2021-05-11 8:48 ` Mike Rapoport
2021-05-12 3:08 ` Kefeng Wang
2021-05-12 3:08 ` Kefeng Wang
2021-05-12 3:08 ` Kefeng Wang
2021-05-12 8:26 ` Mike Rapoport
2021-05-12 8:26 ` Mike Rapoport
2021-05-12 8:26 ` Mike Rapoport
2021-05-13 3:44 ` Kefeng Wang
2021-05-13 3:44 ` Kefeng Wang
2021-05-13 3:44 ` Kefeng Wang
2021-05-13 10:55 ` Mike Rapoport
2021-05-13 10:55 ` Mike Rapoport
2021-05-13 10:55 ` Mike Rapoport
2021-05-14 2:18 ` Kefeng Wang
2021-05-14 2:18 ` Kefeng Wang
2021-05-14 2:18 ` Kefeng Wang
2021-05-12 3:50 ` Matthew Wilcox
2021-05-12 3:50 ` Matthew Wilcox
2021-05-12 3:50 ` Matthew Wilcox
2021-04-25 6:59 ` Mike Rapoport [this message]
2021-04-25 6:59 ` [PATCH v2 0/4] arm64: drop pfn_valid_within() and simplify pfn_valid() Mike Rapoport
2021-04-25 6:59 ` Mike Rapoport
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=YIUTSDnWe97vX1YP@kernel.org \
--to=rppt@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=anshuman.khandual@arm.com \
--cc=catalin.marinas@arm.com \
--cc=david@redhat.com \
--cc=kvmarm@lists.cs.columbia.edu \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=maz@kernel.org \
--cc=rppt@linux.ibm.com \
--cc=wangkefeng.wang@huawei.com \
--cc=will@kernel.org \
/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.