Re: [PATCH 2/5] userfaultfd.2: Add UFFD_FEATURE_THREAD_ID docs

Michael Kerrisk (man-pages)
2021-04-05T19:56:39Z

Hello Alex, and Peter,

Please take note below.

On 4/5/21 3:13 PM, Alejandro Colomar wrote:
> From: Peter Xu <peterx@redhat.com>
>
> UFFD_FEATURE_THREAD_ID is supported since Linux 4.14.
>
> Acked-by: Mike Rapoport <rppt@linux.vnet.ibm.com>
> Signed-off-by: Peter Xu <peterx@redhat.com>
> [alx: srcfix]
> Signed-off-by: Alejandro Colomar <alx.manpages@gmail.com>
> ---
> 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.