All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Xu <peterx@redhat.com>
To: James Houghton <jthoughton@google.com>
Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org,
	Matthew Wilcox <willy@infradead.org>,
	Christophe Leroy <christophe.leroy@csgroup.eu>,
	Lorenzo Stoakes <lstoakes@gmail.com>,
	David Hildenbrand <david@redhat.com>,
	Vlastimil Babka <vbabka@suse.cz>,
	Mike Kravetz <mike.kravetz@oracle.com>,
	Mike Rapoport <rppt@kernel.org>,
	Christoph Hellwig <hch@infradead.org>,
	John Hubbard <jhubbard@nvidia.com>,
	Andrew Jones <andrew.jones@linux.dev>,
	linux-arm-kernel@lists.infradead.org,
	Michael Ellerman <mpe@ellerman.id.au>,
	"Kirill A . Shutemov" <kirill@shutemov.name>,
	linuxppc-dev@lists.ozlabs.org, Rik van Riel <riel@surriel.com>,
	linux-riscv@lists.infradead.org, Yang Shi <shy828301@gmail.com>,
	"Aneesh Kumar K . V" <aneesh.kumar@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Jason Gunthorpe <jgg@nvidia.com>,
	Andrea Arcangeli <aarcange@redhat.com>,
	Axel Rasmussen <axelrasmussen@google.com>
Subject: Re: [PATCH 09/13] mm/gup: Cache *pudp in follow_pud_mask()
Date: Wed, 20 Dec 2023 09:43:13 +0800	[thread overview]
Message-ID: <ZYJGsUWpmF1P1Nd0@x1n> (raw)
In-Reply-To: <CADrL8HVu8=-DdAwXN_pO91g1A1+F7bKfBRpm6jYfYMk1QZcRFA@mail.gmail.com>

On Tue, Dec 19, 2023 at 11:28:54AM -0500, James Houghton wrote:
> On Tue, Dec 19, 2023 at 2:57 AM <peterx@redhat.com> wrote:
> >
> > From: Peter Xu <peterx@redhat.com>
> >
> > Introduce "pud_t pud" in the function, so the code won't dereference *pudp
> > multiple time.  Not only because that looks less straightforward, but also
> > because if the dereference really happened, it's not clear whether there
> > can be race to see different *pudp values if it's being modified at the
> > same time.
> >
> > Signed-off-by: Peter Xu <peterx@redhat.com>
> > ---
> >  mm/gup.c | 17 +++++++++--------
> >  1 file changed, 9 insertions(+), 8 deletions(-)
> >
> > diff --git a/mm/gup.c b/mm/gup.c
> > index 6c0d82fa8cc7..97e87b7a15c3 100644
> > --- a/mm/gup.c
> > +++ b/mm/gup.c
> > @@ -753,26 +753,27 @@ static struct page *follow_pud_mask(struct vm_area_struct *vma,
> >                                     unsigned int flags,
> >                                     struct follow_page_context *ctx)
> >  {
> > -       pud_t *pud;
> > +       pud_t *pudp, pud;
> >         spinlock_t *ptl;
> >         struct page *page;
> >         struct mm_struct *mm = vma->vm_mm;
> >
> > -       pud = pud_offset(p4dp, address);
> > -       if (pud_none(*pud))
> > +       pudp = pud_offset(p4dp, address);
> > +       pud = *pudp;
> 
> I think you might want a READ_ONCE() on this so that the compiler
> doesn't actually read the pud multiple times.

Makes sense.  I probably only did the "split" part which Christoph
requested, without thinking futher than that. :)

> 
> > +       if (pud_none(pud))
> >                 return no_page_table(vma, flags, address);
> > -       if (pud_devmap(*pud)) {
> > -               ptl = pud_lock(mm, pud);
> > -               page = follow_devmap_pud(vma, address, pud, flags, &ctx->pgmap);
> > +       if (pud_devmap(pud)) {
> > +               ptl = pud_lock(mm, pudp);
> > +               page = follow_devmap_pud(vma, address, pudp, flags, &ctx->pgmap);
> >                 spin_unlock(ptl);
> >                 if (page)
> >                         return page;
> >                 return no_page_table(vma, flags, address);
> >         }
> > -       if (unlikely(pud_bad(*pud)))
> > +       if (unlikely(pud_bad(pud)))
> >                 return no_page_table(vma, flags, address);
> 
> Not your change, but reading this, it's not clear to me that
> `pud_present(*pudp)` (and non-leaf) would necessarily be true at this
> point -- like, I would prefer to see `!pud_present(pud)` instead of
> `pud_bad()`. Thank you for adding that in the next patch. :)

I think the assumption here is it is expected to be a directory entry when
reaching here, and for a valid directory entry pud_present() should always
return true (a side note: pud_present() may not mean "PRESENT bit set", see
m68k's implementation for example).

Yeah I added that in the next patch, my intention was to check
!pud_present() for all cases without the need to take pgtable lock, though.

> 
> Feel free to add:
> 
> Acked-by: James Houghton <jthoughton@google.com>

Thanks,

-- 
Peter Xu


_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

WARNING: multiple messages have this Message-ID (diff)
From: Peter Xu <peterx@redhat.com>
To: James Houghton <jthoughton@google.com>
Cc: David Hildenbrand <david@redhat.com>,
	Yang Shi <shy828301@gmail.com>,
	Andrew Jones <andrew.jones@linux.dev>,
	linux-mm@kvack.org, Matthew Wilcox <willy@infradead.org>,
	linux-riscv@lists.infradead.org,
	Andrea Arcangeli <aarcange@redhat.com>,
	Christoph Hellwig <hch@infradead.org>,
	"Aneesh Kumar K . V" <aneesh.kumar@kernel.org>,
	Vlastimil Babka <vbabka@suse.cz>,
	Jason Gunthorpe <jgg@nvidia.com>,
	Axel Rasmussen <axelrasmussen@google.com>,
	Rik van Riel <riel@surriel.com>,
	John Hubbard <jhubbard@nvidia.com>,
	"Kirill A . Shutemov" <kirill@shutemov.name>,
	linux-arm-kernel@lists.infradead.org,
	Lorenzo Stoakes <lstoakes@gmail.com>,
	linux-kernel@vger.kernel.org,
	Andrew Morton <akpm@linux-foundation.org>,
	linuxppc-dev@lists.ozlabs.org, Mike Rapoport <rppt@kernel.org>,
	Mike Kravetz <mike.kravetz@oracle.com>
Subject: Re: [PATCH 09/13] mm/gup: Cache *pudp in follow_pud_mask()
Date: Wed, 20 Dec 2023 09:43:13 +0800	[thread overview]
Message-ID: <ZYJGsUWpmF1P1Nd0@x1n> (raw)
In-Reply-To: <CADrL8HVu8=-DdAwXN_pO91g1A1+F7bKfBRpm6jYfYMk1QZcRFA@mail.gmail.com>

On Tue, Dec 19, 2023 at 11:28:54AM -0500, James Houghton wrote:
> On Tue, Dec 19, 2023 at 2:57 AM <peterx@redhat.com> wrote:
> >
> > From: Peter Xu <peterx@redhat.com>
> >
> > Introduce "pud_t pud" in the function, so the code won't dereference *pudp
> > multiple time.  Not only because that looks less straightforward, but also
> > because if the dereference really happened, it's not clear whether there
> > can be race to see different *pudp values if it's being modified at the
> > same time.
> >
> > Signed-off-by: Peter Xu <peterx@redhat.com>
> > ---
> >  mm/gup.c | 17 +++++++++--------
> >  1 file changed, 9 insertions(+), 8 deletions(-)
> >
> > diff --git a/mm/gup.c b/mm/gup.c
> > index 6c0d82fa8cc7..97e87b7a15c3 100644
> > --- a/mm/gup.c
> > +++ b/mm/gup.c
> > @@ -753,26 +753,27 @@ static struct page *follow_pud_mask(struct vm_area_struct *vma,
> >                                     unsigned int flags,
> >                                     struct follow_page_context *ctx)
> >  {
> > -       pud_t *pud;
> > +       pud_t *pudp, pud;
> >         spinlock_t *ptl;
> >         struct page *page;
> >         struct mm_struct *mm = vma->vm_mm;
> >
> > -       pud = pud_offset(p4dp, address);
> > -       if (pud_none(*pud))
> > +       pudp = pud_offset(p4dp, address);
> > +       pud = *pudp;
> 
> I think you might want a READ_ONCE() on this so that the compiler
> doesn't actually read the pud multiple times.

Makes sense.  I probably only did the "split" part which Christoph
requested, without thinking futher than that. :)

> 
> > +       if (pud_none(pud))
> >                 return no_page_table(vma, flags, address);
> > -       if (pud_devmap(*pud)) {
> > -               ptl = pud_lock(mm, pud);
> > -               page = follow_devmap_pud(vma, address, pud, flags, &ctx->pgmap);
> > +       if (pud_devmap(pud)) {
> > +               ptl = pud_lock(mm, pudp);
> > +               page = follow_devmap_pud(vma, address, pudp, flags, &ctx->pgmap);
> >                 spin_unlock(ptl);
> >                 if (page)
> >                         return page;
> >                 return no_page_table(vma, flags, address);
> >         }
> > -       if (unlikely(pud_bad(*pud)))
> > +       if (unlikely(pud_bad(pud)))
> >                 return no_page_table(vma, flags, address);
> 
> Not your change, but reading this, it's not clear to me that
> `pud_present(*pudp)` (and non-leaf) would necessarily be true at this
> point -- like, I would prefer to see `!pud_present(pud)` instead of
> `pud_bad()`. Thank you for adding that in the next patch. :)

I think the assumption here is it is expected to be a directory entry when
reaching here, and for a valid directory entry pud_present() should always
return true (a side note: pud_present() may not mean "PRESENT bit set", see
m68k's implementation for example).

Yeah I added that in the next patch, my intention was to check
!pud_present() for all cases without the need to take pgtable lock, though.

> 
> Feel free to add:
> 
> Acked-by: James Houghton <jthoughton@google.com>

Thanks,

-- 
Peter Xu


WARNING: multiple messages have this Message-ID (diff)
From: Peter Xu <peterx@redhat.com>
To: James Houghton <jthoughton@google.com>
Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org,
	Matthew Wilcox <willy@infradead.org>,
	Christophe Leroy <christophe.leroy@csgroup.eu>,
	Lorenzo Stoakes <lstoakes@gmail.com>,
	David Hildenbrand <david@redhat.com>,
	Vlastimil Babka <vbabka@suse.cz>,
	Mike Kravetz <mike.kravetz@oracle.com>,
	Mike Rapoport <rppt@kernel.org>,
	Christoph Hellwig <hch@infradead.org>,
	John Hubbard <jhubbard@nvidia.com>,
	Andrew Jones <andrew.jones@linux.dev>,
	linux-arm-kernel@lists.infradead.org,
	Michael Ellerman <mpe@ellerman.id.au>,
	"Kirill A . Shutemov" <kirill@shutemov.name>,
	linuxppc-dev@lists.ozlabs.org, Rik van Riel <riel@surriel.com>,
	linux-riscv@lists.infradead.org, Yang Shi <shy828301@gmail.com>,
	"Aneesh Kumar K . V" <aneesh.kumar@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Jason Gunthorpe <jgg@nvidia.com>,
	Andrea Arcangeli <aarcange@redhat.com>,
	Axel Rasmussen <axelrasmussen@google.com>
Subject: Re: [PATCH 09/13] mm/gup: Cache *pudp in follow_pud_mask()
Date: Wed, 20 Dec 2023 09:43:13 +0800	[thread overview]
Message-ID: <ZYJGsUWpmF1P1Nd0@x1n> (raw)
In-Reply-To: <CADrL8HVu8=-DdAwXN_pO91g1A1+F7bKfBRpm6jYfYMk1QZcRFA@mail.gmail.com>

On Tue, Dec 19, 2023 at 11:28:54AM -0500, James Houghton wrote:
> On Tue, Dec 19, 2023 at 2:57 AM <peterx@redhat.com> wrote:
> >
> > From: Peter Xu <peterx@redhat.com>
> >
> > Introduce "pud_t pud" in the function, so the code won't dereference *pudp
> > multiple time.  Not only because that looks less straightforward, but also
> > because if the dereference really happened, it's not clear whether there
> > can be race to see different *pudp values if it's being modified at the
> > same time.
> >
> > Signed-off-by: Peter Xu <peterx@redhat.com>
> > ---
> >  mm/gup.c | 17 +++++++++--------
> >  1 file changed, 9 insertions(+), 8 deletions(-)
> >
> > diff --git a/mm/gup.c b/mm/gup.c
> > index 6c0d82fa8cc7..97e87b7a15c3 100644
> > --- a/mm/gup.c
> > +++ b/mm/gup.c
> > @@ -753,26 +753,27 @@ static struct page *follow_pud_mask(struct vm_area_struct *vma,
> >                                     unsigned int flags,
> >                                     struct follow_page_context *ctx)
> >  {
> > -       pud_t *pud;
> > +       pud_t *pudp, pud;
> >         spinlock_t *ptl;
> >         struct page *page;
> >         struct mm_struct *mm = vma->vm_mm;
> >
> > -       pud = pud_offset(p4dp, address);
> > -       if (pud_none(*pud))
> > +       pudp = pud_offset(p4dp, address);
> > +       pud = *pudp;
> 
> I think you might want a READ_ONCE() on this so that the compiler
> doesn't actually read the pud multiple times.

Makes sense.  I probably only did the "split" part which Christoph
requested, without thinking futher than that. :)

> 
> > +       if (pud_none(pud))
> >                 return no_page_table(vma, flags, address);
> > -       if (pud_devmap(*pud)) {
> > -               ptl = pud_lock(mm, pud);
> > -               page = follow_devmap_pud(vma, address, pud, flags, &ctx->pgmap);
> > +       if (pud_devmap(pud)) {
> > +               ptl = pud_lock(mm, pudp);
> > +               page = follow_devmap_pud(vma, address, pudp, flags, &ctx->pgmap);
> >                 spin_unlock(ptl);
> >                 if (page)
> >                         return page;
> >                 return no_page_table(vma, flags, address);
> >         }
> > -       if (unlikely(pud_bad(*pud)))
> > +       if (unlikely(pud_bad(pud)))
> >                 return no_page_table(vma, flags, address);
> 
> Not your change, but reading this, it's not clear to me that
> `pud_present(*pudp)` (and non-leaf) would necessarily be true at this
> point -- like, I would prefer to see `!pud_present(pud)` instead of
> `pud_bad()`. Thank you for adding that in the next patch. :)

I think the assumption here is it is expected to be a directory entry when
reaching here, and for a valid directory entry pud_present() should always
return true (a side note: pud_present() may not mean "PRESENT bit set", see
m68k's implementation for example).

Yeah I added that in the next patch, my intention was to check
!pud_present() for all cases without the need to take pgtable lock, though.

> 
> Feel free to add:
> 
> Acked-by: James Houghton <jthoughton@google.com>

Thanks,

-- 
Peter Xu


_______________________________________________
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: Peter Xu <peterx@redhat.com>
To: James Houghton <jthoughton@google.com>
Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org,
	Matthew Wilcox <willy@infradead.org>,
	Christophe Leroy <christophe.leroy@csgroup.eu>,
	Lorenzo Stoakes <lstoakes@gmail.com>,
	David Hildenbrand <david@redhat.com>,
	Vlastimil Babka <vbabka@suse.cz>,
	Mike Kravetz <mike.kravetz@oracle.com>,
	Mike Rapoport <rppt@kernel.org>,
	Christoph Hellwig <hch@infradead.org>,
	John Hubbard <jhubbard@nvidia.com>,
	Andrew Jones <andrew.jones@linux.dev>,
	linux-arm-kernel@lists.infradead.org,
	Michael Ellerman <mpe@ellerman.id.au>,
	"Kirill A . Shutemov" <kirill@shutemov.name>,
	linuxppc-dev@lists.ozlabs.org, Rik van Riel <riel@surriel.com>,
	linux-riscv@lists.infradead.org, Yang Shi <shy828301@gmail.com>,
	"Aneesh Kumar K . V" <aneesh.kumar@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Jason Gunthorpe <jgg@nvidia.com>,
	Andrea Arcangeli <aarcange@redhat.com>,
	Axel Rasmussen <axelrasmussen@google.com>
Subject: Re: [PATCH 09/13] mm/gup: Cache *pudp in follow_pud_mask()
Date: Wed, 20 Dec 2023 09:43:13 +0800	[thread overview]
Message-ID: <ZYJGsUWpmF1P1Nd0@x1n> (raw)
In-Reply-To: <CADrL8HVu8=-DdAwXN_pO91g1A1+F7bKfBRpm6jYfYMk1QZcRFA@mail.gmail.com>

On Tue, Dec 19, 2023 at 11:28:54AM -0500, James Houghton wrote:
> On Tue, Dec 19, 2023 at 2:57 AM <peterx@redhat.com> wrote:
> >
> > From: Peter Xu <peterx@redhat.com>
> >
> > Introduce "pud_t pud" in the function, so the code won't dereference *pudp
> > multiple time.  Not only because that looks less straightforward, but also
> > because if the dereference really happened, it's not clear whether there
> > can be race to see different *pudp values if it's being modified at the
> > same time.
> >
> > Signed-off-by: Peter Xu <peterx@redhat.com>
> > ---
> >  mm/gup.c | 17 +++++++++--------
> >  1 file changed, 9 insertions(+), 8 deletions(-)
> >
> > diff --git a/mm/gup.c b/mm/gup.c
> > index 6c0d82fa8cc7..97e87b7a15c3 100644
> > --- a/mm/gup.c
> > +++ b/mm/gup.c
> > @@ -753,26 +753,27 @@ static struct page *follow_pud_mask(struct vm_area_struct *vma,
> >                                     unsigned int flags,
> >                                     struct follow_page_context *ctx)
> >  {
> > -       pud_t *pud;
> > +       pud_t *pudp, pud;
> >         spinlock_t *ptl;
> >         struct page *page;
> >         struct mm_struct *mm = vma->vm_mm;
> >
> > -       pud = pud_offset(p4dp, address);
> > -       if (pud_none(*pud))
> > +       pudp = pud_offset(p4dp, address);
> > +       pud = *pudp;
> 
> I think you might want a READ_ONCE() on this so that the compiler
> doesn't actually read the pud multiple times.

Makes sense.  I probably only did the "split" part which Christoph
requested, without thinking futher than that. :)

> 
> > +       if (pud_none(pud))
> >                 return no_page_table(vma, flags, address);
> > -       if (pud_devmap(*pud)) {
> > -               ptl = pud_lock(mm, pud);
> > -               page = follow_devmap_pud(vma, address, pud, flags, &ctx->pgmap);
> > +       if (pud_devmap(pud)) {
> > +               ptl = pud_lock(mm, pudp);
> > +               page = follow_devmap_pud(vma, address, pudp, flags, &ctx->pgmap);
> >                 spin_unlock(ptl);
> >                 if (page)
> >                         return page;
> >                 return no_page_table(vma, flags, address);
> >         }
> > -       if (unlikely(pud_bad(*pud)))
> > +       if (unlikely(pud_bad(pud)))
> >                 return no_page_table(vma, flags, address);
> 
> Not your change, but reading this, it's not clear to me that
> `pud_present(*pudp)` (and non-leaf) would necessarily be true at this
> point -- like, I would prefer to see `!pud_present(pud)` instead of
> `pud_bad()`. Thank you for adding that in the next patch. :)

I think the assumption here is it is expected to be a directory entry when
reaching here, and for a valid directory entry pud_present() should always
return true (a side note: pud_present() may not mean "PRESENT bit set", see
m68k's implementation for example).

Yeah I added that in the next patch, my intention was to check
!pud_present() for all cases without the need to take pgtable lock, though.

> 
> Feel free to add:
> 
> Acked-by: James Houghton <jthoughton@google.com>

Thanks,

-- 
Peter Xu



  reply	other threads:[~2023-12-20  1:43 UTC|newest]

Thread overview: 92+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-19  7:55 [PATCH 00/13] mm/gup: Unify hugetlb, part 2 peterx
2023-12-19  7:55 ` peterx
2023-12-19  7:55 ` peterx
2023-12-19  7:55 ` peterx
2023-12-19  7:55 ` [PATCH 01/13] mm/Kconfig: CONFIG_PGTABLE_HAS_HUGE_LEAVES peterx
2023-12-19  7:55   ` peterx
2023-12-19  7:55   ` peterx
2023-12-19  7:55   ` peterx
2023-12-19  7:55 ` [PATCH 02/13] mm/hugetlb: Declare hugetlbfs_pagecache_present() non-static peterx
2023-12-19  7:55   ` peterx
2023-12-19  7:55   ` peterx
2023-12-19  7:55   ` peterx
2023-12-19  7:55 ` [PATCH 03/13] mm: Provide generic pmd_thp_or_huge() peterx
2023-12-19  7:55   ` peterx
2023-12-19  7:55   ` peterx
2023-12-19  7:55   ` peterx
2023-12-25  6:29   ` Muchun Song
2023-12-25  6:29     ` Muchun Song
2023-12-25  6:29     ` Muchun Song
2023-12-25  6:29     ` Muchun Song
2024-01-02  5:37     ` Peter Xu
2024-01-02  5:37       ` Peter Xu
2024-01-02  5:37       ` Peter Xu
2024-01-02  5:37       ` Peter Xu
2024-01-02  6:30       ` Muchun Song
2024-01-02  6:30         ` Muchun Song
2024-01-02  6:30         ` Muchun Song
2024-01-02  6:30         ` Muchun Song
2023-12-19  7:55 ` [PATCH 04/13] mm: Make HPAGE_PXD_* macros even if !THP peterx
2023-12-19  7:55   ` peterx
2023-12-19  7:55   ` peterx
2023-12-19  7:55   ` peterx
2023-12-19  7:55 ` [PATCH 05/13] mm: Introduce vma_pgtable_walk_{begin|end}() peterx
2023-12-19  7:55   ` peterx
2023-12-19  7:55   ` peterx
2023-12-19  7:55   ` peterx
2023-12-25  6:34   ` Muchun Song
2023-12-25  6:34     ` Muchun Song
2023-12-25  6:34     ` Muchun Song
2023-12-25  6:34     ` Muchun Song
2024-01-02  5:39     ` Peter Xu
2024-01-02  5:39       ` Peter Xu
2024-01-02  5:39       ` Peter Xu
2024-01-02  5:39       ` Peter Xu
2024-01-02  6:29       ` Muchun Song
2024-01-02  6:29         ` Muchun Song
2024-01-02  6:29         ` Muchun Song
2024-01-02  6:29         ` Muchun Song
2023-12-19  7:55 ` [PATCH 06/13] mm/gup: Drop folio_fast_pin_allowed() in hugepd processing peterx
2023-12-19  7:55   ` peterx
2023-12-19  7:55   ` peterx
2023-12-19  7:55   ` peterx
2023-12-19  7:55 ` [PATCH 07/13] mm/gup: Refactor record_subpages() to find 1st small page peterx
2023-12-19  7:55   ` peterx
2023-12-19  7:55   ` peterx
2023-12-19  7:55   ` peterx
2023-12-19  7:55 ` [PATCH 08/13] mm/gup: Handle hugetlb for no_page_table() peterx
2023-12-19  7:55   ` peterx
2023-12-19  7:55   ` peterx
2023-12-19  7:55   ` peterx
2023-12-19  7:55 ` [PATCH 09/13] mm/gup: Cache *pudp in follow_pud_mask() peterx
2023-12-19  7:55   ` peterx
2023-12-19  7:55   ` peterx
2023-12-19  7:55   ` peterx
2023-12-19 16:28   ` James Houghton
2023-12-19 16:28     ` James Houghton
2023-12-19 16:28     ` James Houghton
2023-12-19 16:28     ` James Houghton
2023-12-20  1:43     ` Peter Xu [this message]
2023-12-20  1:43       ` Peter Xu
2023-12-20  1:43       ` Peter Xu
2023-12-20  1:43       ` Peter Xu
2023-12-19  7:55 ` [PATCH 10/13] mm/gup: Handle huge pud for follow_pud_mask() peterx
2023-12-19  7:55   ` peterx
2023-12-19  7:55   ` peterx
2023-12-19  7:55   ` peterx
2023-12-19  7:55 ` [PATCH 11/13] mm/gup: Handle huge pmd for follow_pmd_mask() peterx
2023-12-19  7:55   ` peterx
2023-12-19  7:55   ` peterx
2023-12-19  7:55   ` peterx
2023-12-19  7:55 ` [PATCH 12/13] mm/gup: Handle hugepd for follow_page() peterx
2023-12-19  7:55   ` peterx
2023-12-19  7:55   ` peterx
2023-12-19  7:55   ` peterx
2023-12-19  7:55 ` [PATCH 13/13] mm/gup: Handle hugetlb in the generic follow_page_mask code peterx
2023-12-19  7:55   ` peterx
2023-12-19  7:55   ` peterx
2023-12-19  7:55   ` peterx
2023-12-22  1:35 ` [PATCH 00/13] mm/gup: Unify hugetlb, part 2 Peter Xu
2023-12-22  1:35   ` Peter Xu
2023-12-22  1:35   ` Peter Xu
2023-12-22  1:35   ` Peter Xu

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=ZYJGsUWpmF1P1Nd0@x1n \
    --to=peterx@redhat.com \
    --cc=aarcange@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=andrew.jones@linux.dev \
    --cc=aneesh.kumar@kernel.org \
    --cc=axelrasmussen@google.com \
    --cc=christophe.leroy@csgroup.eu \
    --cc=david@redhat.com \
    --cc=hch@infradead.org \
    --cc=jgg@nvidia.com \
    --cc=jhubbard@nvidia.com \
    --cc=jthoughton@google.com \
    --cc=kirill@shutemov.name \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-riscv@lists.infradead.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=lstoakes@gmail.com \
    --cc=mike.kravetz@oracle.com \
    --cc=mpe@ellerman.id.au \
    --cc=riel@surriel.com \
    --cc=rppt@kernel.org \
    --cc=shy828301@gmail.com \
    --cc=vbabka@suse.cz \
    --cc=willy@infradead.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.