All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nathan Chancellor <nathan@kernel.org>
To: Liam Howlett <liam.howlett@oracle.com>
Cc: "maple-tree@lists.infradead.org" <maple-tree@lists.infradead.org>,
	"linux-mm@kvack.org" <linux-mm@kvack.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Hugh Dickins <hughd@google.com>, Yu Zhao <yuzhao@google.com>
Subject: Re: [PATCH v12 08/69] mm: start tracking VMAs with maple tree
Date: Tue, 26 Jul 2022 17:28:16 -0700	[thread overview]
Message-ID: <YuCGoB3Ackadj5up@dev-arch.thelio-3990X> (raw)
In-Reply-To: <20220720021727.17018-9-Liam.Howlett@oracle.com>

Hi Liam,

On Wed, Jul 20, 2022 at 02:17:45AM +0000, Liam Howlett wrote:
> From: "Liam R. Howlett" <Liam.Howlett@Oracle.com>
> 
> Start tracking the VMAs with the new maple tree structure in parallel with
> the rb_tree.  Add debug and trace events for maple tree operations and
> duplicate the rb_tree that is created on forks into the maple tree.
> 
> The maple tree is added to the mm_struct including the mm_init struct,
> added support in required mm/mmap functions, added tracking in kernel/fork
> for process forking, and used to find the unmapped_area and checked
> against what the rbtree finds.
> 
> This also moves the mmap_lock() in exit_mmap() since the oom reaper call
> does walk the VMAs.  Otherwise lockdep will be unhappy if oom happens.
> 
> When splitting a vma fails due to allocations of the maple tree nodes,
> the error path in __split_vma() calls new->vm_ops->close(new).  The page
> accounting for hugetlb is actually in the close() operation,  so it
> accounts for the removal of 1/2 of the VMA which was not adjusted.  This
> results in a negative exit value.  To avoid the negative charge, set
> vm_start = vm_end and vm_pgoff = 0.
> 
> There is also a potential accounting issue in special mappings from
> insert_vm_struct() failing to allocate, so reverse the charge there in
> the failure scenario.
> 
> Link: https://lkml.kernel.org/r/20220504010716.661115-10-Liam.Howlett@oracle.com
> Link: https://lkml.kernel.org/r/20220621204632.3370049-9-Liam.Howlett@oracle.com
> Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
> Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
> Cc: Catalin Marinas <catalin.marinas@arm.com>
> Cc: David Howells <dhowells@redhat.com>
> Cc: SeongJae Park <sj@kernel.org>
> Cc: Vlastimil Babka <vbabka@suse.cz>
> Cc: Will Deacon <will@kernel.org>
> Cc: Davidlohr Bueso <dave@stgolabs.net>
> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>

Apologies if this has been reported already, I tried searching the
mailing lists but I did not really find anything.

I bisected my arm64 test system failing to boot to this change as commit
fdfbd22f37db ("mm: start tracking VMAs with maple tree") in
next-20220726 (bisect log at the end).

[    4.295886] Unable to handle kernel access to user memory outside uaccess routines at virtual address 0000000000000000
[    4.306595] Mem abort info:
[    4.309381]   ESR = 0x0000000096000044
[    4.313118]   EC = 0x25: DABT (current EL), IL = 32 bits
[    4.318422]   SET = 0, FnV = 0
[    4.321464]   EA = 0, S1PTW = 0
[    4.324592]   FSC = 0x04: level 0 translation fault
[    4.329461] Data abort info:
[    4.332329]   ISV = 0, ISS = 0x00000044
[    4.336152]   CM = 0, WnR = 1
[    4.339110] user pgtable: 4k pages, 48-bit VAs, pgdp=00000020a9712000
[    4.345539] [0000000000000000] pgd=0000000000000000, p4d=0000000000000000
[    4.352321] Internal error: Oops: 96000044 [#1] SMP
[    4.357188] Modules linked in:
[    4.360232] CPU: 6 PID: 264 Comm: dracut-rootfs-g Not tainted 5.19.0-rc4-00288-gfdfbd22f37db #1
[    4.368918] Hardware name: SolidRun Ltd. SolidRun CEX7 Platform, BIOS EDK II Jun 21 2022
[    4.376994] pstate: 80400005 (Nzcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[    4.383943] pc : mas_split.isra.0+0x50c/0x784
[    4.388295] lr : mas_split.isra.0+0x204/0x784
[    4.392640] sp : ffff8000094a3510
[    4.395942] x29: ffff8000094a3510 x28: ffff08dd66c0c000 x27: ffff8000094a3610
[    4.403067] x26: ffff8000094a35d0 x25: ffff8000094a3578 x24: ffffd823cb5448b8
[    4.410192] x23: ffff8000094a3650 x22: ffff8000094a3690 x21: ffff8000094a3738
[    4.417316] x20: 0000000000000002 x19: ffff8000094a3af0 x18: 0000000000000002
[    4.424441] x17: 0000000000000000 x16: ffff08dd66c45450 x15: 0000000000000000
[    4.431565] x14: ffff08dd66c459c8 x13: ffff8000094a3748 x12: 0000000000000001
[    4.438689] x11: ffff8000094a3610 x10: 0000000000000003 x9 : ffff08dd66c47300
[    4.445813] x8 : 000000000000001c x7 : 0000000000000003 x6 : 0000000000000006
[    4.452937] x5 : ffff08dd68a44409 x4 : 0000000000000001 x3 : ffff8000094a35d0
[    4.460061] x2 : 0000000000000000 x1 : 0000000000000000 x0 : ffff8000094a3738
[    4.467186] Call trace:
[    4.469620]  mas_split.isra.0+0x50c/0x784
[    4.473618]  mas_commit_b_node.isra.0+0x1e0/0x274
[    4.478311]  mas_wr_modify+0x10c/0x28c
[    4.482048]  mas_wr_store_entry.isra.0+0x10c/0x4a0
[    4.486827]  mas_store+0x48/0x110
[    4.490131]  dup_mmap+0x268/0x514
[    4.493436]  dup_mm+0x68/0xfc
[    4.496391]  copy_process+0x864/0x10b4
[    4.500129]  kernel_clone+0x88/0x494
[    4.503692]  __do_sys_clone+0x60/0x80
[    4.507342]  __arm64_sys_clone+0x2c/0x40
[    4.511254]  invoke_syscall+0x78/0x100
[    4.514991]  el0_svc_common.constprop.0+0x4c/0xf4
[    4.519683]  do_el0_svc+0x38/0x4c
[    4.522985]  el0_svc+0x34/0x100
[    4.526115]  el0t_64_sync_handler+0x11c/0x150
[    4.530460]  el0t_64_sync+0x190/0x194
[    4.534112] Code: f9000125 f9400e65 9278dca5 f94000a5 (f9000045)
[    4.540193] ---[ end trace 0000000000000000 ]---

I was also able to reproduce the same crash in a Fedora virtual machine
using QEMU with Fedora's rawhide configuration [1]:

[    5.913992] Unable to handle kernel access to user memory outside uaccess routines at virtual address 0000000000000000
[    5.914510] Mem abort info:
[    5.914581]   ESR = 0x0000000096000044
[    5.914705]   EC = 0x25: DABT (current EL), IL = 32 bits
[    5.914858]   SET = 0, FnV = 0
[    5.914951]   EA = 0, S1PTW = 0
[    5.915065]   FSC = 0x04: level 0 translation fault
[    5.915215] Data abort info:
[    5.915321]   ISV = 0, ISS = 0x00000044
[    5.915465]   CM = 0, WnR = 1
[    5.915624] user pgtable: 4k pages, 48-bit VAs, pgdp=0000000103051000
[    5.915799] [0000000000000000] pgd=0000000000000000, p4d=0000000000000000
[    5.916196] Internal error: Oops: 96000044 [#1] SMP
[    5.916504] Modules linked in:
[    5.916771] CPU: 2 PID: 202 Comm: dracut-rootfs-g Not tainted 5.19.0-rc4+ #1
[    5.917003] Hardware name: QEMU QEMU Virtual Machine, BIOS 0.0.0 02/06/2015
[    5.917339] pstate: 80400005 (Nzcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[    5.917584] pc : mas_split.isra.0+0x50c/0x784
[    5.917794] lr : mas_split.isra.0+0x204/0x784
[    5.917949] sp : ffff8000086334a0
[    5.918038] x29: ffff8000086334a0 x28: ffff5b65c095a258 x27: ffff8000086335a0
[    5.918289] x26: ffff800008633560 x25: ffff800008633508 x24: ffffdb30c80d9778
[    5.918844] x23: ffff8000086335e0 x22: ffff800008633620 x21: ffff8000086336c8
[    5.919277] x20: 0000000000000002 x19: ffff800008633a80 x18: 0000000000000002
[    5.919533] x17: 0000000000000000 x16: ffff5b65c095a4b0 x15: 0000000000000000
[    5.919747] x14: ffff5b65c095a898 x13: ffff8000086336d8 x12: 0000000000000001
[    5.919971] x11: ffff8000086335a0 x10: 0000000000000003 x9 : ffff5b66f42e2a00
[    5.920214] x8 : 000000000000001c x7 : 0000000000000003 x6 : 0000000000000006
[    5.920493] x5 : ffff5b65c3077309 x4 : 0000000000000001 x3 : ffff800008633560
[    5.920739] x2 : 0000000000000000 x1 : 0000000000000000 x0 : ffff8000086336c8
[    5.921051] Call trace:
[    5.921152]  mas_split.isra.0+0x50c/0x784
[    5.921303]  mas_commit_b_node.isra.0+0x1e0/0x274
[    5.921459]  mas_wr_modify+0x10c/0x28c
[    5.921565]  mas_wr_store_entry.isra.0+0x10c/0x4a0
[    5.921725]  mas_store+0x48/0x110
[    5.921864]  dup_mmap+0x268/0x514
[    5.921993]  dup_mm+0x68/0xfc
[    5.922074]  copy_process+0x864/0x10b4
[    5.922213]  kernel_clone+0x88/0x494
[    5.922315]  __do_sys_clone+0x60/0x80
[    5.922444]  __arm64_sys_clone+0x2c/0x40
[    5.922576]  invoke_syscall+0x78/0x100
[    5.922686]  el0_svc_common.constprop.0+0x4c/0xf4
[    5.922847]  do_el0_svc+0x38/0x4c
[    5.922947]  el0_svc+0x34/0x100
[    5.923056]  el0t_64_sync_handler+0x11c/0x150
[    5.923179]  el0t_64_sync+0x190/0x194
[    5.923365] Code: f9000125 f9400e65 9278dca5 f94000a5 (f9000045)
[    5.923833] ---[ end trace 0000000000000000 ]---

If there is any additional information I can provide or patches I can
test, please let me know!

Cheers,
Nathan

[1]: https://src.fedoraproject.org/rpms/kernel/raw/rawhide/f/kernel-aarch64-fedora.config

# bad: [058affafc65a74cf54499fb578b66ad0b18f939b] Add linux-next specific files for 20220726
# good: [e0dccc3b76fb35bb257b4118367a883073d7390e] Linux 5.19-rc8
git bisect start '058affafc65a74cf54499fb578b66ad0b18f939b' 'e0dccc3b76fb35bb257b4118367a883073d7390e'
# good: [e9173a7b08211b52862d61e7cdc8899fc5e6a44d] Merge branch 'drm-next' of git://git.freedesktop.org/git/drm/drm.git
git bisect good e9173a7b08211b52862d61e7cdc8899fc5e6a44d
# good: [45dfa9ecc6a971ab9217e41c1e2ea3ee98fd0f70] Merge branch 'next' of git://git.kernel.org/pub/scm/virt/kvm/kvm.git
git bisect good 45dfa9ecc6a971ab9217e41c1e2ea3ee98fd0f70
# good: [1991de2cb33a921c5a422e749eaba9067b9e8a29] Merge branch 'staging-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git
git bisect good 1991de2cb33a921c5a422e749eaba9067b9e8a29
# good: [21a47601220fc0b93b7ab254381b2a3ef1f6d3fe] Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/rppt/memblock.git
git bisect good 21a47601220fc0b93b7ab254381b2a3ef1f6d3fe
# bad: [2a210fe818f13dfe3342eb117a4bfeb36aad8215] mm: khugepaged: don't carry huge page to the next loop for !CONFIG_NUMA
git bisect bad 2a210fe818f13dfe3342eb117a4bfeb36aad8215
# good: [43957b5d11037a651d162f65c682ec3c76777fc8] mm/mmap: define DECLARE_VM_GET_PAGE_PROT
git bisect good 43957b5d11037a651d162f65c682ec3c76777fc8
# good: [e3e449def7ea1d17e890408ea01013592e65298b] radix tree test suite: add pr_err define
git bisect good e3e449def7ea1d17e890408ea01013592e65298b
# bad: [c1870dd3ebf1f8a1337f10f2b2ef97e0c1d7e03a] ipc/shm: use VMA iterator instead of linked list
git bisect bad c1870dd3ebf1f8a1337f10f2b2ef97e0c1d7e03a
# bad: [5f9f7cac1a89ff1c7d111dfc7edbcb1b0987000a] mm: use maple tree operations for find_vma_intersection()
git bisect bad 5f9f7cac1a89ff1c7d111dfc7edbcb1b0987000a
# bad: [3b6a687016b08feb5c1b8d9fb78b31dcb314674d] mm/mmap: use maple tree for unmapped_area{_topdown}
git bisect bad 3b6a687016b08feb5c1b8d9fb78b31dcb314674d
# good: [264f03ef6aaca0d56e1c6efed11c93680b8156ac] lib/test_maple_tree: add testing for maple tree
git bisect good 264f03ef6aaca0d56e1c6efed11c93680b8156ac
# bad: [bea49723f45480acf67f46f6fd76bc5cde941e5d] mmap: use the VMA iterator in count_vma_pages_range()
git bisect bad bea49723f45480acf67f46f6fd76bc5cde941e5d
# bad: [423dbb83d4e1b9e894a2309a0035284eb20d9f2b] mm: add VMA iterator
git bisect bad 423dbb83d4e1b9e894a2309a0035284eb20d9f2b
# bad: [fdfbd22f37db37d2db32411d7f48c57bc810366b] mm: start tracking VMAs with maple tree
git bisect bad fdfbd22f37db37d2db32411d7f48c57bc810366b
# first bad commit: [fdfbd22f37db37d2db32411d7f48c57bc810366b] mm: start tracking VMAs with maple tree

  reply	other threads:[~2022-07-27  0:28 UTC|newest]

Thread overview: 85+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-20  2:17 [PATCH v12 00/69] Introducing the Maple Tree Liam Howlett
2022-07-20  2:17 ` [PATCH v12 02/69] radix tree test suite: add pr_err define Liam Howlett
2022-07-20  2:17 ` [PATCH v12 03/69] radix tree test suite: add kmem_cache_set_non_kernel() Liam Howlett
2022-07-20  2:17 ` [PATCH v12 01/69] Maple Tree: add new data structure Liam Howlett
2022-07-20  2:17 ` [PATCH v12 05/69] radix tree test suite: add support for slab bulk APIs Liam Howlett
2022-07-20  2:17 ` [PATCH v12 04/69] radix tree test suite: add allocation counts and size to kmem_cache Liam Howlett
2022-07-20  2:17 ` [PATCH v12 06/69] radix tree test suite: add lockdep_is_held to header Liam Howlett
2022-07-20  2:17 ` [PATCH v12 07/69] lib/test_maple_tree: add testing for maple tree Liam Howlett
2022-07-20  2:17 ` [PATCH v12 08/69] mm: start tracking VMAs with " Liam Howlett
2022-07-27  0:28   ` Nathan Chancellor [this message]
2022-07-28  0:34     ` Liam Howlett
2022-07-29 15:41       ` Liam Howlett
2022-07-29 17:02         ` Nathan Chancellor
2022-07-29 20:13           ` Liam Howlett
2022-07-20  2:17 ` [PATCH v12 10/69] mmap: use the VMA iterator in count_vma_pages_range() Liam Howlett
2022-07-20  2:17 ` [PATCH v12 09/69] mm: add VMA iterator Liam Howlett
2022-07-20  2:17 ` [PATCH v12 13/69] mm/mmap: use maple tree for unmapped_area{_topdown} Liam Howlett
2022-07-20  2:17 ` [PATCH v12 11/69] mm/mmap: use the maple tree in find_vma() instead of the rbtree Liam Howlett
2022-07-20  2:17 ` [PATCH v12 12/69] mm/mmap: use the maple tree for find_vma_prev() " Liam Howlett
2022-07-20  2:17 ` [PATCH v12 14/69] kernel/fork: use maple tree for dup_mmap() during forking Liam Howlett
2022-07-20  2:17 ` [PATCH v12 16/69] proc: remove VMA rbtree use from nommu Liam Howlett
2022-07-20  2:17 ` [PATCH v12 15/69] damon: convert __damon_va_three_regions to use the VMA iterator Liam Howlett
2022-07-20  2:17 ` [PATCH v12 18/69] mmap: change zeroing of maple tree in __vma_adjust() Liam Howlett
2022-07-20  2:17 ` [PATCH v12 17/69] mm: remove rb tree Liam Howlett
2022-07-20  2:17 ` [PATCH v12 19/69] xen: use vma_lookup() in privcmd_ioctl_mmap() Liam Howlett
2022-07-20  2:17 ` [PATCH v12 20/69] mm: optimize find_exact_vma() to use vma_lookup() Liam Howlett
2022-07-20  2:17 ` [PATCH v12 22/69] mm/mmap: change do_brk_flags() to expand existing VMA and add do_brk_munmap() Liam Howlett
2022-07-23 15:01   ` Dmitry Osipenko
2022-07-25 14:01     ` Liam Howlett
2022-07-25 18:49       ` Liam Howlett
2022-07-25 19:13         ` Dmitry Osipenko
2022-07-28  0:57           ` Liam Howlett
2022-07-28 16:56             ` Dmitry Osipenko
2022-07-20  2:17 ` [PATCH v12 21/69] mm/khugepaged: optimize collapse_pte_mapped_thp() by using vma_lookup() Liam Howlett
2022-07-20  2:17 ` [PATCH v12 24/69] mm/mmap: use advanced maple tree API for mmap_region() Liam Howlett
2022-07-20  2:17 ` [PATCH v12 23/69] mm: use maple tree operations for find_vma_intersection() Liam Howlett
2022-07-20  2:17 ` [PATCH v12 27/69] mm/mmap: move mmap_region() below do_munmap() Liam Howlett
2022-07-20  2:17 ` [PATCH v12 26/69] mm: convert vma_lookup() to use mtree_load() Liam Howlett
2022-07-20  2:17 ` [PATCH v12 25/69] mm: remove vmacache Liam Howlett
2022-07-20  2:17 ` [PATCH v12 28/69] mm/mmap: reorganize munmap to use maple states Liam Howlett
2022-07-20  2:17 ` [PATCH v12 30/69] arm64: remove mmap linked list from vdso Liam Howlett
2022-07-20  2:17 ` [PATCH v12 29/69] mm/mmap: change do_brk_munmap() to use do_mas_align_munmap() Liam Howlett
2022-07-20  2:17 ` [PATCH v12 33/69] powerpc: remove mmap linked list walks Liam Howlett
2022-08-02 10:36   ` Christophe Leroy
2022-08-02 10:36     ` Christophe Leroy
2022-08-02 10:36   ` Fwd: " Christophe Leroy
2022-07-20  2:17 ` [PATCH v12 31/69] arm64: Change elfcore for_each_mte_vma() to use VMA iterator Liam Howlett
2022-07-20  2:17 ` [PATCH v12 32/69] parisc: remove mmap linked list from cache handling Liam Howlett
2022-07-20  2:17 ` [PATCH v12 36/69] xtensa: remove vma linked list walks Liam Howlett
2022-07-20  2:17 ` [PATCH v12 34/69] s390: " Liam Howlett
2022-07-20  2:17 ` [PATCH v12 35/69] x86: " Liam Howlett
2022-07-20  2:17 ` [PATCH v12 38/69] optee: remove vma linked list walk Liam Howlett
2022-07-20  2:17 ` [PATCH v12 40/69] coredump: " Liam Howlett
2022-07-20  2:17 ` [PATCH v12 39/69] um: " Liam Howlett
2022-07-20  2:17 ` [PATCH v12 37/69] cxl: " Liam Howlett
2022-07-20  2:17 ` [PATCH v12 43/69] fs/proc/task_mmu: stop using linked list and highest_vm_end Liam Howlett
2022-07-20  2:17 ` [PATCH v12 44/69] userfaultfd: use maple tree iterator to iterate VMAs Liam Howlett
2022-07-20  2:17 ` [PATCH v12 41/69] exec: use VMA iterator instead of linked list Liam Howlett
2022-07-20  2:17 ` [PATCH v12 42/69] fs/proc/base: use maple tree iterators in place " Liam Howlett
2022-07-20  2:17 ` [PATCH v12 46/69] acct: use VMA iterator instead " Liam Howlett
2022-07-20  2:17 ` [PATCH v12 47/69] perf: use VMA iterator Liam Howlett
2022-07-20  2:17 ` [PATCH v12 45/69] ipc/shm: use VMA iterator instead of linked list Liam Howlett
2022-07-20  2:17 ` [PATCH v12 50/69] bpf: remove VMA " Liam Howlett
2022-07-20  2:17 ` [PATCH v12 51/69] mm/gup: use maple tree navigation instead of " Liam Howlett
2022-07-20  2:17 ` [PATCH v12 49/69] fork: use VMA iterator Liam Howlett
2022-07-20  2:17 ` [PATCH v12 48/69] sched: use maple tree iterator to walk VMAs Liam Howlett
2022-07-20  2:18 ` [PATCH v12 54/69] mm/madvise: use vma_find() instead of vma linked list Liam Howlett
2022-07-20  2:18 ` [PATCH v12 52/69] mm/khugepaged: stop using " Liam Howlett
2022-07-20  2:18 ` [PATCH v12 53/69] mm/ksm: use vma iterators instead of " Liam Howlett
2022-07-20  2:18 ` [PATCH v12 58/69] mm/mprotect: use maple tree navigation " Liam Howlett
2022-07-20  2:18 ` [PATCH v12 57/69] mm/mlock: use vma iterator and maple state " Liam Howlett
2022-07-20  2:18 ` [PATCH v12 55/69] mm/memcontrol: stop using mm->highest_vm_end Liam Howlett
2022-07-20  2:18 ` [PATCH v12 56/69] mm/mempolicy: use vma iterator & maple state instead of vma linked list Liam Howlett
2022-07-20  2:18 ` [PATCH v12 60/69] mm/msync: use vma_find() " Liam Howlett
2022-07-20  2:18 ` [PATCH v12 61/69] mm/oom_kill: use maple tree iterators " Liam Howlett
2022-07-20  2:18 ` [PATCH v12 59/69] mm/mremap: use vma_find_intersection() " Liam Howlett
2022-07-20  2:18 ` [PATCH v12 62/69] mm/pagewalk: use vma_find() " Liam Howlett
2022-07-20  2:18 ` [PATCH v12 63/69] mm/swapfile: use vma iterator " Liam Howlett
2022-07-20  2:18 ` [PATCH v12 65/69] nommu: remove uses of VMA " Liam Howlett
2022-07-20  2:18 ` [PATCH v12 64/69] i915: use the VMA iterator Liam Howlett
2022-07-20  2:18 ` [PATCH v12 68/69] mm/mmap: drop range_has_overlap() function Liam Howlett
2022-07-20  2:18 ` [PATCH v12 67/69] mm: remove the vma linked list Liam Howlett
2022-07-20  2:18 ` [PATCH v12 66/69] riscv: use vma iterator for vdso Liam Howlett
2022-07-20  2:18 ` [PATCH v12 69/69] mm/mmap.c: pass in mapping to __vma_link_file() Liam Howlett
2022-07-20  5:09 ` [PATCH v12 00/69] Introducing the Maple Tree Andrew Morton

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=YuCGoB3Ackadj5up@dev-arch.thelio-3990X \
    --to=nathan@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=hughd@google.com \
    --cc=liam.howlett@oracle.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=maple-tree@lists.infradead.org \
    --cc=yuzhao@google.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.