linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: "Liam R. Howlett" <Liam.Howlett@oracle.com>
To: Peter Xu <peterx@redhat.com>
Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org,
	kvm@vger.kernel.org, Andrew Morton <akpm@linux-foundation.org>,
	Alex Williamson <alex.williamson@redhat.com>,
	Zi Yan <ziy@nvidia.com>, Jason Gunthorpe <jgg@nvidia.com>,
	Alex Mastro <amastro@fb.com>,
	David Hildenbrand <david@redhat.com>,
	Nico Pache <npache@redhat.com>,
	Baolin Wang <baolin.wang@linux.alibaba.com>,
	Lorenzo Stoakes <lorenzo.stoakes@oracle.com>,
	Ryan Roberts <ryan.roberts@arm.com>, Dev Jain <dev.jain@arm.com>,
	Barry Song <baohua@kernel.org>
Subject: Re: [PATCH 3/5] mm: Rename __thp_get_unmapped_area to mm_get_unmapped_area_aligned
Date: Sat, 14 Jun 2025 01:23:30 -0400	[thread overview]
Message-ID: <77g4gj2l3w7osk2rsbrldgoxsnyqo4mq2ciltcb3exm5xtbjjk@wiz6qgzwhcjl> (raw)
In-Reply-To: <20250613134111.469884-4-peterx@redhat.com>

* Peter Xu <peterx@redhat.com> [250613 09:41]:
> This function is pretty handy for any type of VMA to provide a size-aligned
> VMA address when mmap().  Rename the function and export it.
> 
> About the rename:
> 
>   - Dropping "THP" because it doesn't really have much to do with THP
>     internally.
> 
>   - The suffix "_aligned" imply it is a helper to generate aligned virtual
>     address based on what is specified (which can be not PMD_SIZE).

I am not okay with this.

You are renaming a function to drop thp and not moving it into generic
code.  Either it is a generic function that lives with the generic code,
or drop this change all together.

If this function is going to be generic, please make the return of 0
valid and not an error.  You are masking all errors to 0 currently.

vm_unmapped_area_info has an align_mask, and that's only used for
hugepages. It is wrong to have a generic function that does not use the
generic struct element that exists for this reason.  Is there a reason
that align_mask doesn't work, or why it's not used?

The return of mm_get_unmapped_area_vmflags() is not aligned with the
return of this function.  That is, the address returned from
mm_get_unmapped_area_vmflags() differs from __thp_get_unmapped_area()
based on MMF_TOPDOWN, and/or something related to off_sub?

Anyways, since it's different from mm_get_unmapped_area() in this
regard, we cannot rename it mm_get_unmapped_area_aligned() - it sounds
like a helper and is different, by a lot.

I also am not okay to export it for no reason.

Also, is it okay to export something as gpl or does the copyright holder
need to do that (I have no idea about this stuff, or maybe you work for
the copyright holder)?

The hint (addr) is also never checked for alignment in this function and
we are appending _aligned() to the name.  With this change we can now
get an unaligned _aligned() address.  This (probably) can happen with
MAP_FIXED today, but I don't think we imply it's going to be aligned
elsewhere.


Hate for the Pre-existing code in this function:

Dear lord:
off_sub = (off - ret) & (size - 1);
Using ret here is just (to be polite) unclear to save one assignment.  I
expect the one assignment would be optimised out by the compilers.

My hate for the unsub off_sub grows:
ret += off_sub;
return ret;

It is extremely frustrating that the self-documenting parts of this
function have documentation while poorly named variables are used in
puzzling calculations without any.

...

Thanks,
Liam


  parent reply	other threads:[~2025-06-14  5:23 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-06-13 13:41 [PATCH 0/5] mm/vfio: huge pfnmaps with !MAP_FIXED mappings Peter Xu
2025-06-13 13:41 ` [PATCH 1/5] mm: Deduplicate mm_get_unmapped_area() Peter Xu
2025-06-13 14:12   ` Jason Gunthorpe
2025-06-13 14:55   ` Oscar Salvador
2025-06-13 14:58   ` Zi Yan
2025-06-13 15:57   ` Lorenzo Stoakes
2025-06-13 17:00     ` Pedro Falcato
2025-06-13 18:00   ` David Hildenbrand
2025-06-16  8:01   ` David Laight
2025-06-17 21:13     ` Peter Xu
2025-06-13 13:41 ` [PATCH 2/5] mm/hugetlb: Remove prepare_hugepage_range() Peter Xu
2025-06-13 14:12   ` Jason Gunthorpe
2025-06-13 14:59   ` Oscar Salvador
2025-06-13 15:13   ` Zi Yan
2025-06-13 16:24     ` Peter Xu
2025-06-13 18:01       ` David Hildenbrand
2025-06-14  4:11   ` Liam R. Howlett
2025-06-17 21:07     ` Peter Xu
2025-06-13 13:41 ` [PATCH 3/5] mm: Rename __thp_get_unmapped_area to mm_get_unmapped_area_aligned Peter Xu
2025-06-13 14:17   ` Jason Gunthorpe
2025-06-13 15:13     ` Peter Xu
2025-06-13 16:00       ` Jason Gunthorpe
2025-06-13 18:31         ` Peter Xu
2025-06-13 15:19   ` Zi Yan
2025-06-13 18:33     ` Peter Xu
2025-06-13 15:36   ` Lorenzo Stoakes
2025-06-13 18:45     ` Peter Xu
2025-06-13 19:18       ` Lorenzo Stoakes
2025-06-13 20:34         ` Peter Xu
2025-06-14  5:58           ` Lorenzo Stoakes
2025-06-14  5:23   ` Liam R. Howlett [this message]
2025-06-16 12:14     ` Jason Gunthorpe
2025-06-16 12:20       ` Lorenzo Stoakes
2025-06-16 12:26         ` Jason Gunthorpe
2025-06-13 13:41 ` [PATCH 4/5] vfio: Introduce vfio_device_ops.get_unmapped_area hook Peter Xu
2025-06-13 14:18   ` Jason Gunthorpe
2025-06-13 18:03   ` David Hildenbrand
2025-06-14 14:46   ` kernel test robot
2025-06-17 15:39     ` Peter Xu
2025-06-17 15:41       ` Jason Gunthorpe
2025-06-17 16:47         ` Peter Xu
2025-06-17 19:39           ` Peter Xu
2025-06-17 19:46             ` Jason Gunthorpe
2025-06-17 20:01               ` Peter Xu
2025-06-17 23:00                 ` Jason Gunthorpe
2025-06-17 23:26                   ` Peter Xu
2025-06-13 13:41 ` [PATCH 5/5] vfio-pci: Best-effort huge pfnmaps with !MAP_FIXED mappings Peter Xu
2025-06-13 14:29   ` Jason Gunthorpe
2025-06-13 15:26     ` Peter Xu
2025-06-13 16:09       ` Jason Gunthorpe
2025-06-13 19:15         ` Peter Xu
2025-06-13 23:16           ` Jason Gunthorpe
2025-06-16 22:06             ` Peter Xu
2025-06-16 23:00               ` Jason Gunthorpe
2025-06-17 20:56                 ` Peter Xu
2025-06-17 23:18                   ` Jason Gunthorpe
2025-06-17 23:36                     ` Peter Xu
2025-06-18 16:56                       ` Peter Xu
2025-06-18 17:46                         ` Jason Gunthorpe
2025-06-18 19:15                           ` Peter Xu
2025-06-19 13:58                             ` Jason Gunthorpe
2025-06-19 14:55                               ` Peter Xu
2025-06-19 18:40                                 ` Jason Gunthorpe
2025-06-24 20:37                                   ` Peter Xu
2025-06-24 20:51                                     ` Peter Xu
2025-06-24 23:40                                     ` Jason Gunthorpe
2025-06-25  0:48                                       ` Peter Xu
2025-06-25 13:07                                         ` Jason Gunthorpe
2025-06-25 17:12                                           ` Peter Xu
2025-06-25 18:41                                             ` Jason Gunthorpe
2025-06-25 19:26                                               ` Peter Xu
2025-06-30 14:05                                                 ` Jason Gunthorpe
2025-07-02 20:58                                                   ` Peter Xu
2025-07-02 23:32                                                     ` Jason Gunthorpe
2025-06-13 17:44   ` Alex Mastro
2025-06-13 18:53     ` Peter Xu
2025-06-13 18:09   ` David Hildenbrand
2025-06-13 19:21     ` 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=77g4gj2l3w7osk2rsbrldgoxsnyqo4mq2ciltcb3exm5xtbjjk@wiz6qgzwhcjl \
    --to=liam.howlett@oracle.com \
    --cc=akpm@linux-foundation.org \
    --cc=alex.williamson@redhat.com \
    --cc=amastro@fb.com \
    --cc=baohua@kernel.org \
    --cc=baolin.wang@linux.alibaba.com \
    --cc=david@redhat.com \
    --cc=dev.jain@arm.com \
    --cc=jgg@nvidia.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=lorenzo.stoakes@oracle.com \
    --cc=npache@redhat.com \
    --cc=peterx@redhat.com \
    --cc=ryan.roberts@arm.com \
    --cc=ziy@nvidia.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox