All of lore.kernel.org
 help / color / mirror / Atom feed
From: Uladzislau Rezki <urezki@gmail.com>
To: Wen Jiang <jiangwenxiaomi@gmail.com>
Cc: Uladzislau Rezki <urezki@gmail.com>,
	akpm@linux-foundation.org, catalin.marinas@arm.com,
	linux-mm@kvack.org, will@kernel.org, Xueyuan.chen21@gmail.com,
	ajd@linux.ibm.com, anshuman.khandual@arm.com, baohua@kernel.org,
	chleroy@kernel.org, david@kernel.org, dev.jain@arm.com,
	jiangwen6@xiaomi.com, leo.yan@arm.com,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
	maddy@linux.ibm.com, mpe@ellerman.id.au, npiggin@gmail.com,
	rppt@kernel.org, ryan.roberts@arm.com
Subject: Re: [PATCH v9 06/10] mm/vmalloc: extract vmap_set_ptes() to consolidate PTE mapping logic
Date: Thu, 1 Oct 2026 17:54:15 +0200	[thread overview]
Message-ID: <ar6CJ9pWSEB8fAcC@milan> (raw)
In-Reply-To: <CAHKocdF43Rqnt8-v0WP-t=Dxz2sSJ9xpyjLAYc2fzzKAW1_N8A@mail.gmail.com>

On Thu, Oct 01, 2026 at 03:58:21PM +0800, Wen Jiang wrote:
> On Wed, 30 Sept 2026 at 22:39, Uladzislau Rezki <urezki@gmail.com> wrote:
> >
> > On Wed, Sep 23, 2026 at 02:28:28PM +0800, Wen Jiang wrote:
> > > Extract the common PTE mapping logic from vmap_pte_range() into a
> > > shared helper vmap_set_ptes(). This handles both CONT_PTE and regular
> > > PTE mappings in a single function, preparing for the next patch which
> > > will extend vmap_pages_pte_range() to also use this helper.
> > >
> > > No functional change.
> > >
> > > Signed-off-by: Wen Jiang <jiangwen6@xiaomi.com>
> > > Tested-by: Xueyuan Chen <xueyuan.chen21@gmail.com>
> > > Tested-by: Leo Yan <leo.yan@arm.com>
> > > ---
> > >  mm/vmalloc.c | 36 +++++++++++++++++++++++++++---------
> > >  1 file changed, 27 insertions(+), 9 deletions(-)
> > >
> > > diff --git a/mm/vmalloc.c b/mm/vmalloc.c
> > > index fb757d95bde25..d475e52110e4a 100644
> > > --- a/mm/vmalloc.c
> > > +++ b/mm/vmalloc.c
> > > @@ -92,6 +92,29 @@ struct vfree_deferred {
> > >  static DEFINE_PER_CPU(struct vfree_deferred, vfree_deferred);
> > >
> > >  /*** Page table manipulation functions ***/
> > > +
> > > +/*
> > > + * Try contiguous mappings at the PTE level for arches which support them, and if
> > > + * requested by the caller. Fall back to PAGE_SIZE mappings otherwise.
> > > + *
> > > + * Return: mapping size.
> > > + */
> > > +static __always_inline unsigned long vmap_set_ptes(pte_t *ptep,
> > > +             unsigned long addr, unsigned long end, u64 pfn,
> > > +             pgprot_t prot, unsigned int max_page_shift)
> > > +{
> > > +     unsigned long size;
> > > +
> > > +     size = arch_vmap_pte_range_map_size(addr, end, pfn, max_page_shift);
> > > +     if (size != PAGE_SIZE) {
> > > +             pte_set_huge(ptep, addr, PFN_PHYS(pfn), prot, size);
> > > +             return size;
> > > +     }
> > > +
> > > +     set_pte_at(&init_mm, addr, ptep, pfn_pte(pfn, prot));
> > > +     return PAGE_SIZE;
> > > +}
> > > +
> > >  static int vmap_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end,
> > >                       phys_addr_t phys_addr, pgprot_t prot,
> > >                       unsigned int max_page_shift, pgtbl_mod_mask *mask)
> > > @@ -100,6 +123,7 @@ static int vmap_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end,
> > >       u64 pfn;
> > >       struct page *page;
> > >       unsigned long size;
> > > +     unsigned int steps;
> > >
> > >       if (WARN_ON_ONCE(!PAGE_ALIGNED(end - addr)))
> > >               return -EINVAL;
> > > @@ -120,15 +144,9 @@ static int vmap_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end,
> > >                       BUG();
> > >               }
> > >
> > > -             size = arch_vmap_pte_range_map_size(addr, end, pfn, max_page_shift);
> > > -             if (size != PAGE_SIZE) {
> > > -                     pte_set_huge(pte, addr, PFN_PHYS(pfn), prot, size);
> > > -                     pfn += PFN_DOWN(size);
> > > -                     continue;
> > > -             }
> > > -             set_pte_at(&init_mm, addr, pte, pfn_pte(pfn, prot));
> > > -             pfn++;
> > > -     } while (pte += PFN_DOWN(size), addr += size, addr != end);
> > > +             size = vmap_set_ptes(pte, addr, end, pfn, prot, max_page_shift);
> > > +             steps = PFN_DOWN(size);
> > > +     } while (pte += steps, pfn += steps, addr += size, addr != end);
> > >
> > #define PFN_DOWN(x)     ((x) >> PAGE_SHIFT) - how many pages covers the size.
> > Replace steps by nr_pages or nr_ptes?
> >
> 
> Agreed, I'll use nr_pages. Since vmap_pages_pte_range() in the next patch has
> the same "step = PFN_DOWN(size)" pattern, I'll rename it there too.
> 
Reviewed-by: Uladzislau Rezki (Sony) <urezki@gmail.com>

--
Uladzislau Rezki


  reply	other threads:[~2026-10-01 15:54 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-23  6:28 [PATCH v9 00/10] mm/vmalloc: Speed up ioremap, vmalloc and vmap with contiguous memory Wen Jiang
2026-09-23  6:28 ` [PATCH v9 01/10] arm64/mm: add pte_set_huge() and pte_clear_huge() Wen Jiang
2026-09-23 21:30   ` Barry Song
2026-09-28  2:42     ` Wen Jiang
2026-09-23  6:28 ` [PATCH v9 02/10] powerpc/8xx: add pte_set_huge() Wen Jiang
2026-09-23  6:28 ` [PATCH v9 03/10] mm/vmalloc: use pte_set_huge()/pte_clear_huge() for PTE-level block mappings Wen Jiang
2026-09-23 21:38   ` Barry Song
2026-09-23 21:57     ` Christophe Leroy (CS GROUP)
2026-09-29  2:21     ` Wen Jiang
2026-09-23  6:28 ` [PATCH v9 04/10] arm64/hugetlb: drop the init_mm special case in clear_flush() Wen Jiang
2026-09-23 21:23   ` Barry Song
2026-09-23  6:28 ` [PATCH v9 05/10] arm64/vmalloc: allow arch_vmap_pte_range_map_size() to batch multiple CONT_PTE Wen Jiang
2026-09-30 15:37   ` Uladzislau Rezki
2026-10-01  7:55     ` Wen Jiang
2026-10-01 15:56       ` Uladzislau Rezki
2026-09-23  6:28 ` [PATCH v9 06/10] mm/vmalloc: extract vmap_set_ptes() to consolidate PTE mapping logic Wen Jiang
2026-09-30 14:39   ` Uladzislau Rezki
2026-10-01  7:58     ` Wen Jiang
2026-10-01 15:54       ` Uladzislau Rezki [this message]
2026-09-23  6:28 ` [PATCH v9 07/10] mm/vmalloc: extend page table walk to support larger page_shift sizes and eliminate page table rewalk Wen Jiang
2026-09-30 15:16   ` Uladzislau Rezki
2026-10-01  8:02     ` Wen Jiang
2026-10-01 15:52       ` Uladzislau Rezki
2026-09-23  6:28 ` [PATCH v9 08/10] mm/vmalloc: extract vm_shift() to consolidate mapping shift selection Wen Jiang
2026-09-30 14:46   ` Uladzislau Rezki
2026-09-23  6:28 ` [PATCH v9 09/10] mm/vmalloc: map contiguous pages in batches for vmap() if possible Wen Jiang
2026-09-30 15:05   ` Uladzislau Rezki
2026-10-01  8:09     ` Wen Jiang
2026-10-01 15:48       ` Uladzislau Rezki
2026-09-23  6:28 ` [PATCH v9 10/10] mm/vmalloc: align vm_area so vmap() can batch mappings Wen Jiang

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=ar6CJ9pWSEB8fAcC@milan \
    --to=urezki@gmail.com \
    --cc=Xueyuan.chen21@gmail.com \
    --cc=ajd@linux.ibm.com \
    --cc=akpm@linux-foundation.org \
    --cc=anshuman.khandual@arm.com \
    --cc=baohua@kernel.org \
    --cc=catalin.marinas@arm.com \
    --cc=chleroy@kernel.org \
    --cc=david@kernel.org \
    --cc=dev.jain@arm.com \
    --cc=jiangwen6@xiaomi.com \
    --cc=jiangwenxiaomi@gmail.com \
    --cc=leo.yan@arm.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=maddy@linux.ibm.com \
    --cc=mpe@ellerman.id.au \
    --cc=npiggin@gmail.com \
    --cc=rppt@kernel.org \
    --cc=ryan.roberts@arm.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.