Hello Alex, and Peter, Please take note below. On 4/5/21 3:13 PM, Alejandro Colomar wrote: > From: Peter Xu <peterx@xxxxxxxxxx> > > UFFD_FEATURE_THREAD_ID is supported since Linux 4.14. > > Acked-by: Mike Rapoport <rppt@xxxxxxxxxxxxxxxxxx> > Signed-off-by: Peter Xu <peterx@xxxxxxxxxx> > [alx: srcfix] > Signed-off-by: Alejandro Colomar <alx.manpages@xxxxxxxxx> > --- > man2/userfaultfd.2 | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/man2/userfaultfd.2 b/man2/userfaultfd.2 > index fa1b6514f..8245253c3 100644 > --- a/man2/userfaultfd.2 > +++ b/man2/userfaultfd.2 > @@ -77,6 +77,13 @@ When the last file descriptor referring to a userfaultfd object is closed, > all memory ranges that were registered with the object are unregistered > and unread events are flushed. > .\" > +.PP > +Since Linux 4.14, userfaultfd page fault message can selectively embed > +faulting thread ID information into the fault message. > +One needs to enable this feature explicitly using the > +.B UFFD_FEATURE_THREAD_ID > +feature bit when initializing the userfaultfd context. > +By default, thread ID reporting is disabled. > .SS Usage > The userfaultfd mechanism is designed to allow a thread in a multithreaded > program to perform user-space paging for the other threads in the process. > @@ -229,6 +236,9 @@ struct uffd_msg { > struct { > __u64 flags; /* Flags describing fault */ > __u64 address; /* Faulting address */ > + union { > + __u32 ptid; /* Thread ID of the fault */ > + } feat; > } pagefault; > > struct { /* Since Linux 4.11 */ > @@ -358,6 +368,9 @@ otherwise it is a read fault. > .\" UFFD_PAGEFAULT_FLAG_WP is not yet supported. > .RE > .TP > +.I pagefault.feat.pid > +The thread ID that triggered the page fault. > +.TP > .I fork.ufd > The file descriptor associated with the userfault object > created for the child created by Thanks. I've applied the patch, but I made a few tweaks afterwards, as per the patch below. Notably, I changed "message" to "notification", since that seems more consistent with the language in the rest of the page. Is it okay, Peter? Cheers, Michael diff --git a/man2/userfaultfd.2 b/man2/userfaultfd.2 index 8245253c3..eb2c6d5f9 100644 --- a/man2/userfaultfd.2 +++ b/man2/userfaultfd.2 @@ -78,8 +78,10 @@ all memory ranges that were registered with the object are unregistered and unread events are flushed. .\" .PP -Since Linux 4.14, userfaultfd page fault message can selectively embed -faulting thread ID information into the fault message. +Since Linux 4.14, +.\" commit 9d4ac934829ac58c5109c49e6dfe677300e5e652 +a userfaultfd page fault notification can selectively embed the +faulting thread ID information in the notification. One needs to enable this feature explicitly using the .B UFFD_FEATURE_THREAD_ID feature bit when initializing the userfaultfd context. -- Michael Kerrisk Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/ Linux/UNIX System Programming Training: http://man7.org/training/