All of lore.kernel.org
 help / color / mirror / Atom feed
From: Axel Rasmussen <axelrasmussen@google.com>
To: Alejandro Colomar <alx@kernel.org>, Peter Xu <peterx@redhat.com>
Cc: linux-man@vger.kernel.org, linux-mm@kvack.org,
	linux-kernel@vger.kernel.org,
	Axel Rasmussen <axelrasmussen@google.com>
Subject: [PATCH 05/10] ioctl_userfaultfd.2: describe two-step feature handshake
Date: Tue, 19 Sep 2023 12:02:01 -0700	[thread overview]
Message-ID: <20230919190206.388896-6-axelrasmussen@google.com> (raw)
In-Reply-To: <20230919190206.388896-1-axelrasmussen@google.com>

Fully describe how UFFDIO_API can be used to perform a two-step feature
handshake, and also note the case where this isn't necessary (programs
which don't depend on any extra features).

This lets us clean up an old FIXME asking for this to be described.

Signed-off-by: Axel Rasmussen <axelrasmussen@google.com>
---
 man2/ioctl_userfaultfd.2 | 37 +++++++++++++++++++++----------------
 1 file changed, 21 insertions(+), 16 deletions(-)

diff --git a/man2/ioctl_userfaultfd.2 b/man2/ioctl_userfaultfd.2
index 339adf8fe..e91a1dfc8 100644
--- a/man2/ioctl_userfaultfd.2
+++ b/man2/ioctl_userfaultfd.2
@@ -83,7 +83,6 @@ struct uffdio_api {
 The
 .I api
 field denotes the API version requested by the application.
-.PP
 The kernel verifies that it can support the requested API version,
 and sets the
 .I features
@@ -93,6 +92,25 @@ fields to bit masks representing all the available features and the generic
 .BR ioctl (2)
 operations available.
 .PP
+After Linux 4.11,
+applications should use the
+.I features
+field to perform a two-step handshake.
+First,
+.BR UFFDIO_API
+is called with the
+.I features
+field set to zero.
+The kernel responsds by setting all supported feature bits.
+.PP
+Applications which do not require any specific features
+can begin using the userfaultfd immediately.
+Applications which do need specific features
+should call
+.BR UFFDIO_API
+again with a subset of the reported feature bits set
+to enable those features.
+.PP
 Before Linux 4.11, the
 .I features
 field must be initialized to zero before the call to
@@ -102,24 +120,11 @@ and zero (i.e., no feature bits) is placed in the
 field by the kernel upon return from
 .BR ioctl (2).
 .PP
-Starting from Linux 4.11, the
-.I features
-field can be used to ask whether particular features are supported
-and explicitly enable userfaultfd features that are disabled by default.
-The kernel always reports all the available features in the
-.I features
-field.
-.PP
-To enable userfaultfd features the application should set
-a bit corresponding to each feature it wants to enable in the
-.I features
-field.
-If the kernel supports all the requested features it will enable them.
-Otherwise it will zero out the returned
+If the application sets unsupported feature bits,
+the kernel will zero out the returned
 .I uffdio_api
 structure and return
 .BR EINVAL .
-.\" FIXME add more details about feature negotiation and enablement
 .PP
 The following feature bits may be set:
 .TP
-- 
2.42.0.459.ge4e396fd5e-goog


  parent reply	other threads:[~2023-09-19 19:02 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-09-19 19:01 [PATCH 00/10] userfaultfd man page updates Axel Rasmussen
2023-09-19 19:01 ` [PATCH 01/10] userfaultfd.2: briefly mention two-step feature handshake process Axel Rasmussen
2023-09-25 23:26   ` Alejandro Colomar
2023-10-09  8:38   ` Mike Rapoport
2023-09-19 19:01 ` [PATCH 02/10] userfaultfd.2: reword to account for new fault resolution ioctls Axel Rasmussen
2023-09-25 23:29   ` Alejandro Colomar
2023-10-09  8:39   ` Mike Rapoport
2023-09-19 19:01 ` [PATCH 03/10] userfaultfd.2: comment on feature detection in the example program Axel Rasmussen
2023-09-25 23:32   ` Alejandro Colomar
2023-10-09  8:40   ` Mike Rapoport
2023-09-19 19:02 ` [PATCH 04/10] ioctl_userfaultfd.2: fix a few trivial mistakes Axel Rasmussen
2023-09-25 23:37   ` Alejandro Colomar
2023-09-19 19:02 ` Axel Rasmussen [this message]
2023-09-25 23:44   ` [PATCH 05/10] ioctl_userfaultfd.2: describe two-step feature handshake Alejandro Colomar
2023-10-09  8:42   ` Mike Rapoport
2023-10-09 10:58     ` Alejandro Colomar
2023-09-19 19:02 ` [PATCH 06/10] ioctl_userfaultfd.2: describe missing UFFDIO_API feature flags Axel Rasmussen
2023-09-25 23:50   ` Alejandro Colomar
2023-10-09  8:45   ` Mike Rapoport
2023-10-09 10:49     ` Alejandro Colomar
2023-09-19 19:02 ` [PATCH 07/10] ioctl_userfaultfd.2: correct and update UFFDIO_API ioctl error codes Axel Rasmussen
2023-09-25 23:52   ` Alejandro Colomar
2023-10-09  8:49     ` Mike Rapoport
2023-10-09 11:01       ` Alejandro Colomar
2023-09-19 19:02 ` [PATCH 08/10] ioctl_userfaultfd.2: clarify the state of the uffdio_api structure on error Axel Rasmussen
2023-09-25 23:56   ` Alejandro Colomar
2023-09-26 17:58     ` Axel Rasmussen
2023-10-09  9:03   ` Mike Rapoport
2023-09-19 19:02 ` [PATCH 09/10] ioctl_userfaultfd.2: fix / update UFFDIO_REGISTER error code list Axel Rasmussen
2023-09-19 19:02 ` [PATCH 10/10] ioctl_userfaultfd.2: document new UFFDIO_POISON ioctl Axel Rasmussen
2023-10-09  9:09   ` Mike Rapoport
2023-10-10 17:13     ` Axel Rasmussen

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=20230919190206.388896-6-axelrasmussen@google.com \
    --to=axelrasmussen@google.com \
    --cc=alx@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-man@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=peterx@redhat.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.