[PATCH 2/2] LoongArch64: Align large code segments to 32MB for THP

WANG Rui wangrui@loongson.cn
Tue Feb 24 11:00:19 GMT 2026


On Tue, Feb 24, 2026 at 5:30 PM Florian Weimer <fweimer@redhat.com> wrote:
>
> * WANG Rui:
>
> > +#ifdef __LP64__
> > +  /* On LoongArch64, using 16K normal pages means we get 32M PMD huge
> > +   * pages. So, if we align code segments of 32M or more to 32M address,
> > +   * it really helps with THP eligibility. */
> > +  if (__glibc_likely (GLRO(dl_pagesize) == 16384)
> > +      && c->mapstart == 0 && c->mapoff == 0
> > +      && (c->mapend - c->mapstart) >= 32 * 1024 * 1024
> > +      && mapalign < 32 * 1024 * 1024 && c->prot & PROT_EXEC)
> > +    mapalign = 32 * 1024 * 1024;
> > +#endif
>
> We don't use leading * for comments.
>
> The size check should not be for the entire mapping, but for individual
> load segments.  Even if the mapping is (say) 40 MiB, the optimization
> won't work if there's a 30 MiB code mapping and a 10 MiB data mapping.

Just to clarify: the size check is per individual LOAD segment, not
for the entire mapping. In _dl_map_object_from_fd (elf/dl-load.c),
each LOAD segment is recorded in the loadcmd array.

Thanks,
Rui



More information about the Libc-alpha mailing list