Re: [PATCH v3] madvise.2: Clarify addr/length and update hugetlb support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Mike,

On 6/9/22 01:45, Mike Kravetz wrote:
Clarify that madvise only works on full pages, and remove references
to 'bytes'.

Update MADV_DONTNEED and MADV_REMOVE sections to remove notes that
HugeTLB mappings are not supported.  Indicate the releases when they
were first supported as well as alignment restrictions.

Signed-off-by: Mike Kravetz <mike.kravetz@xxxxxxxxxx>
Acked-by: Peter Xu <peterx@xxxxxxxxxx>

Please check some comments below.

Thanks,

Alex

---
v2 -> v3 Rebased on man-pages-5.19-rc1.  Minor change to wording for
	sunsequent access of data after MADV_REMOVE.
v1 -> v2 Added releases when Huge TLB support was added and moved
	alignment requirements to corresponding section.  (Peter)
  man2/madvise.2 | 31 +++++++++++++++++++++----------
  1 file changed, 21 insertions(+), 10 deletions(-)

diff --git a/man2/madvise.2 b/man2/madvise.2
index 2a8f1cd0a..becddce93 100644
--- a/man2/madvise.2
+++ b/man2/madvise.2
@@ -44,9 +44,13 @@ system call is used to give advice or directions to the kernel
  about the address range beginning at address
  .I addr
  and with size
+.IR length .
+.BR madvise ()
+only operates on whole pages, therefore
+.I addr
+must be page-aligned.  The value of

Please, use semantic newlines (i.e., break after '.').
See man-pages(7):
   Use semantic newlines
       In the source of a manual page, new sentences  should  be
       started on new lines, long sentences should be split into
       lines at clause breaks (commas, semicolons,  colons,  and
       so on), and long clauses should be split at phrase bound-
       aries.  This convention,  sometimes  known  as  "semantic
       newlines",  makes it easier to see the effect of patches,
       which often operate at the level of individual sentences,
       clauses, or phrases.


  .I length
-bytes.
-In most cases,
+is rounded up to a multiple of page size.  In most cases,
  the goal of such advice is to improve system or application performance.
  .PP
  Initially, the system call supported a set of "conventional"
@@ -126,7 +130,7 @@ The resident set size (RSS) of the calling process will be immediately
  reduced however.
  .IP
  .B MADV_DONTNEED
-cannot be applied to locked pages, Huge TLB pages, or
+cannot be applied to locked pages, or
  .B VM_PFNMAP
  pages.
  (Pages marked with the kernel-internal
@@ -136,6 +140,11 @@ flag are special memory areas that are not managed
  by the virtual memory subsystem.
  Such pages are typically created by device drivers that
  map the pages into user space.)
+.IP
+Support for Huge TLB pages was added in Linux v5.18.  Addresses within a
+mapping backed by Huge TLB pages must be aligned to the underlying Huge TLB
+page size, and the range length is rounded up to a multiple of the underlying
+Huge TLB page size.
  .\"
  .\" ======================================================================
  .\"
@@ -153,24 +162,24 @@ Note that some of these operations change the semantics of memory accesses.
  .\" commit f6b3ec238d12c8cc6cc71490c6e3127988460349
  Free up a given range of pages
  and its associated backing store.
-This is equivalent to punching a hole in the corresponding byte
+This is equivalent to punching a hole in the corresponding
  range of the backing store (see
  .BR fallocate (2)).
  Subsequent accesses in the specified address range will see
-bytes containing zero.
+data with a value of zero.
  .\" Databases want to use this feature to drop a section of their
  .\" bufferpool (shared memory segments) - without writing back to
  .\" disk/swap space.  This feature is also useful for supporting
  .\" hot-plug memory on UML.
  .IP
  The specified address range must be mapped shared and writable.
-This flag cannot be applied to locked pages, Huge TLB pages, or
+This flag cannot be applied to locked pages, or
  .B VM_PFNMAP
  pages.
  .IP
  In the initial implementation, only
  .BR tmpfs (5)
-was supported
+supported
  .BR MADV_REMOVE ;
  but since Linux 3.5,
  .\" commit 3f31d07571eeea18a7d34db9af21d2285b807a17
@@ -179,10 +188,12 @@ any filesystem which supports the
  .B FALLOC_FL_PUNCH_HOLE
  mode also supports
  .BR MADV_REMOVE .
-Hugetlbfs fails with the error
-.B EINVAL
-and other filesystems fail with the error
+Filesystems which do not support
+.BR MADV_REMOVE

s/BR/B/

See man(7):
       .B  Bold

       .BI Bold alternating with italics (especially useful  for
           function specifications)

       .BR Bold  alternating  with  Roman (especially useful for
           referring to other manual pages)

+fail with the error
  .BR EOPNOTSUPP .
+.IP
+Support for Huge TLB filesystem was added in Linux v4.3.
  .TP
  .BR MADV_DONTFORK " (since Linux 2.6.16)"
  .\" commit f822566165dd46ff5de9bf895cfa6c51f53bb0c4


--
Alejandro Colomar
Linux man-pages comaintainer; http://www.kernel.org/doc/man-pages/
http://www.alejandro-colomar.es/

Attachment: OpenPGP_signature
Description: OpenPGP digital signature


[Index of Archives]     [Kernel Documentation]     [Netdev]     [Linux Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux