Re: [PATCH 3/6] mm: always inline __mk_vma_flags() and invoked functions
From: Lorenzo Stoakes (Oracle)
Date: Wed Mar 25 2026 - 12:33:32 EST
On Wed, Mar 25, 2026 at 09:09:49AM -0700, Andrew Morton wrote:
> On Wed, 25 Mar 2026 14:58:14 +0000 "Lorenzo Stoakes (Oracle)" <ljs@xxxxxxxxxx> wrote:
>
> > On Wed, Mar 25, 2026 at 02:54:50PM +0000, Pedro Falcato wrote:
> > > On Thu, Mar 05, 2026 at 10:50:16AM +0000, Lorenzo Stoakes (Oracle) wrote:
> > > > Be explicit about __mk_vma_flags() (which is used by the mk_vma_flags()
> > > > macro) always being inline, as we rely on the compiler converting this
> > > > function into meaningful.
> > > meaningful what?
> >
> > 'into the equivalent compile-time constant code' probably fine.
> >
> > Andrew - could you update that if there's time?
>
>
> np
>
>
> : Be explicit about __mk_vma_flags() (which is used by the mk_vma_flags()
> : macro) always being inline, as we rely on the compiler converting this
> : function into the equivalent compile-time constant code.
>
> what does "compile-time constant code" actually mean? That constants
> within the code are evaluated at compile-time?
Yeah, so effectively the compiler rewrites:
x = mk_vma_flags(VMA_READ_BIT, VMA_WRITE_BIT);
To:
x = (1UL << VMA_READ_BIT) | (1UL << VMA_WRITE_BIT);
And then:
x = 3;
Various efforts at checking generated assembly has confirmed this.
Maybe 'into an inline constant value' is better?
Thanks, Lorenzo