From patchwork Tue Oct 17 23:01:10 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Axel Rasmussen X-Patchwork-Id: 13426170 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6B795CDB474 for ; Tue, 17 Oct 2023 23:01:25 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B4B7D8D0116; Tue, 17 Oct 2023 19:01:24 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A86618D0002; Tue, 17 Oct 2023 19:01:24 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8D8558D0116; Tue, 17 Oct 2023 19:01:24 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 6AA7A8D0002 for ; Tue, 17 Oct 2023 19:01:24 -0400 (EDT) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 43591A0ECB for ; Tue, 17 Oct 2023 23:01:24 +0000 (UTC) X-FDA: 81356476488.28.C87E96B Received: from mail-yw1-f201.google.com (mail-yw1-f201.google.com [209.85.128.201]) by imf14.hostedemail.com (Postfix) with ESMTP id 7A3EB10003B for ; Tue, 17 Oct 2023 23:01:22 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=PLddYDzq; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf14.hostedemail.com: domain of 3QRIvZQ0KCFIuHy5BuC6ECCy708805y.w86527EH-664Fuw4.8B0@flex--axelrasmussen.bounces.google.com designates 209.85.128.201 as permitted sender) smtp.mailfrom=3QRIvZQ0KCFIuHy5BuC6ECCy708805y.w86527EH-664Fuw4.8B0@flex--axelrasmussen.bounces.google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1697583682; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=zotUshyT9JxTsldtXKWoET48qiWRumjzDVZqgqNWkYo=; b=yOOMkjJsTzRgNFFgiNTopAE9+priqbRhcUhbSotmJlS3ZUPcTRLAZmTq0wbsVE4l3vRAS7 7nWYQm1u+vZrmiwazNYIi4P4AxLX/cz5PbrF4rHPpaKp4VKru1ByQHTGBuuOQUkIS/z+jy 1pP07wmJEBLh+XdaxEKXafcIfJRgW7E= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=PLddYDzq; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf14.hostedemail.com: domain of 3QRIvZQ0KCFIuHy5BuC6ECCy708805y.w86527EH-664Fuw4.8B0@flex--axelrasmussen.bounces.google.com designates 209.85.128.201 as permitted sender) smtp.mailfrom=3QRIvZQ0KCFIuHy5BuC6ECCy708805y.w86527EH-664Fuw4.8B0@flex--axelrasmussen.bounces.google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1697583682; a=rsa-sha256; cv=none; b=vJnwXCVfBa/5AvKST/r4q8+8ftfF0QHmB3oVBMcidOBWH37TMLe5zbyl2D5+Kwd/mHtUQU JoQDFKIb3n/SCoON5XKCrhokb6y/vOTF/0v01TJZ6XRdzEuU98WFuiOqppwsh7Hya02Emj Sgf+4zSj/hloV+RC1m8smTLM6WXfNsA= Received: by mail-yw1-f201.google.com with SMTP id 00721157ae682-5a7af69a4baso95188537b3.0 for ; Tue, 17 Oct 2023 16:01:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1697583681; x=1698188481; darn=kvack.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=zotUshyT9JxTsldtXKWoET48qiWRumjzDVZqgqNWkYo=; b=PLddYDzqyG3Be8PKeY3xbbIB9k6FDUYI/Jteq4w+AOlqa6+qGJjhvatkW6bE9IWFCW Y+X/wN5+xEYrl4zDVn/8lQ0HXbbECqB8QhOsvUHYBd4/i41Xl5Ywk6eSbZEXOfUyzkjT VWBQ+rme/9LU1SKG3f+U8VhdBoUwdRvCFp1AI3X6lTFkbVCez+F39bkM8wyCUoW/dGmB nU2nTi9X16jWgRhpZJ0CrOuavmUNZKLBp9Yc7OVLfWQYj5yqUxb//lmSytkxqdHUBfz1 gZS6EBJjNoxHkdXYjr9mzqN6JWWXU/wUU8pvB/MmpuT9Z8+s91O8NYxhrNp8yxISw4Je 8Bkg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697583681; x=1698188481; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=zotUshyT9JxTsldtXKWoET48qiWRumjzDVZqgqNWkYo=; b=o93hZMbuGAsHEx6BgG0+rciaGUqk0qii85zt5+GjVxhq4WcuGT07+CknIGCBXCMw91 got94ug5DpIhg6OhSWqAbFCVprs13gyjG2uguBeRe8C8afGWK1xIQ7Aox9JX64+5syHt 6phxZB4p0h3GpJIsiiwkl0YDE1GMSfxSmDM2hMP6RcLChN98kX6tL0OAPX/oHk3AJ1vE 0zDOtVZPTL4NOJunZOxurnm+63PR22NhQTpyRBkwhw570UBdrRizg4kamAvJsUKPYmnh Xj8k5WEK+SVcQrUB1Sp7fPOYY0G76TRp8fu4k2wZS7h9FpN1jmfQ62NxuUSiNeHckakE s/5A== X-Gm-Message-State: AOJu0YwlhKcxgZWdO+4DIFgrd9T7p3TEnQpVZ/2n6WH625bHa7BXgRjS OhFkqYq/fK9NsfIB906rtXwlLUfRwiGwhwXVB4TL X-Google-Smtp-Source: AGHT+IG33rPX+YBy/IxDNh0Hn8HuEPXvaiympTSyyMMX5HQVRWBVdttcufnoKeE06bjlWpxR13bX53lvCE4ue3giXDWV X-Received: from axel.svl.corp.google.com ([2620:15c:2a3:200:cd04:35d6:a586:5c86]) (user=axelrasmussen job=sendgmr) by 2002:a81:4f92:0:b0:57a:118a:f31 with SMTP id d140-20020a814f92000000b0057a118a0f31mr84700ywb.7.1697583681778; Tue, 17 Oct 2023 16:01:21 -0700 (PDT) Date: Tue, 17 Oct 2023 16:01:10 -0700 In-Reply-To: <20231017230110.3170850-1-axelrasmussen@google.com> Mime-Version: 1.0 References: <20231017230110.3170850-1-axelrasmussen@google.com> X-Mailer: git-send-email 2.42.0.655.g421f12c284-goog Message-ID: <20231017230110.3170850-4-axelrasmussen@google.com> Subject: [PATCH v3 3/3] ioctl_userfaultfd.2: document new UFFDIO_POISON ioctl From: Axel Rasmussen To: Alejandro Colomar , Mike Rapoport , Peter Xu Cc: linux-man@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Axel Rasmussen X-Rspam-User: X-Stat-Signature: k1jnyna1jqjbn1ukam5i3tj774edmanq X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 7A3EB10003B X-HE-Tag: 1697583682-573699 X-HE-Meta: U2FsdGVkX18T3Qaf8fhs/szvBvLUfOqRcpKge3g+mVwDa0UDicxJEPWFyq39maiLbZPCfb/2aKm4PMKyaw3u79xmcZdPm2dqNksWNQd+62tX6XmzU/FnyACFLJwL9M10i5Dm0QaMS3fBeXtIIoEorlTXrzZQt5CSeB/kxYPJku2rhghIv1R5m2nNRE82zEaGe8piEI70rXjbIpvJWrX+k92Z36Q030IrVBfE/LXPT30nxVRQdNpzjkHIBPmIwkUWe8EC4rGSGKXi80WawpzQEj0RpFNL7oG2fEekK96mSc5Rcm4w82/cse53HCnRrF44QKyiJChfcx+2rrGUVsxxkLebEQoG7ScHYBq28c+om3vCQ6GLMxmy4QVY4uHKV+Rb24rHjaB0ZFiS2t667zEBKeU15gugvqbEQp86gsO8aTDbEUSkiufoMVo4ij2AsXzJR6ubVmNEC3fINvaeknUjUj6odWIfemsGwKeHcBVViylV6FXLaItGajJP+KXW8xv3q9MdnIsaaQkm4JyYNxEh2Pv4K+tYD9ryvyeq6EsbPUzVKvyNaoUhpsGlbro3UN+z6hSM4sbPC2Q73z4zM3ld13NwCLMUJtmdGmkFqoqMj8m8zd4Kni4I2Xm3Tz0c8PMTxA+xslAyWVlkd3seRgCTWQOnZkZnb7dj1yRrf52oNlp1s4CTGLGocXqLLG0QP4B77XUkwPmW4UvfCl7b5JnecAyXPWVW6hB8vBUoqTdrxNIrAwt8vw/AS9HfDRAjxsYtpYfc1KzaeNtE9g028duoGkTZYvNffBTFaSmIuW3TGS1kI/aEZ3lzODod+FnXy/QEQA2as7nAM7uFBNnHqk9D2ll1dyym1mWpSYQbVDe8/jki9zLgyF7+Mr95tEotG5dKM40+3qDsg9kDPj1h7PAh6kTIuA1dRpv5sp6A8SxdV76eCbKCrysgwPbhU7MMbGusWz+wJvgmr00IRrwTxWa fDlNRKeC j1bhVVBmY+5y6R679d+ZNHdkZNZQR2sGqcnkPopwgU7qP+kH6MYZjW97QP40yvT9O4msqGMxM1i7KuX/6UxbTqkIoa/aQgnfk2vkLLsAt/6qmnGWgHhOxCvVzL4zIlyK+ue7+sknzLi3krytb7AbdpjQNM0h05EM85BVJ11w6QND1rhrF7ZPUpvc/fZy7ifjo3yn6WY/gybpl0PnvMkmAqsF6U2wyKOecjXrZgtzFg2y43dUUD8oft+6Cg77XvN9kCoTYczOCGITuCB/LMxHnov2k4Yl4Bx5p3/s00z5uMGsKbV3owd7FhGtjoNopDU9U78KDzidcVP9/VJkXMhwDdglDFEiBGp++c5k7W40wSVpP3m8ZbTp0bxDMJ7n8rlzGUiXLVmJXhIAJPb3FerOj+mDE/7U2gSulhF+LXASggdKngtSDiaAIPdjqbdpeIfxv9bbATQniUnkhhJX+DMV6WPUBhtTnfP7ygadk0nf1arnsQ0y6Z2W4oGIsAa6cM/CG4kTx1ZzwmjeDu+6hiVtMvZIuiOTQIuOKiXLvBNYCNVy3f9rln4lv02xf6Gx6aCUniEtWUvxPyfN9M9CeFEl9uickOHOqGJzQDT99neO4MHj1F2EMaGDRHFkEUY1JzqH6FYJrYVpLuaUvQTmazX4OKQuirQhI4sR82mfExo6L1ls/yhGCx741500KcTCBkPn87j1aZERpCQ6+ihHPl1CfNJCcM+wzcNO7P88oLph56h/5oPtZDcVWpZIAm9oMg6HmEN9Y X-Bogosity: Ham, tests=bogofilter, spamicity=0.015303, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: This is a new feature recently added to the kernel. So, document the new ioctl the same way we do other UFFDIO_* ioctls. Also note the corresponding new ioctl flag we can return in response to a UFFDIO_REGISTER call. Reviewed-by: Mike Rapoport (IBM) Signed-off-by: Axel Rasmussen --- man2/ioctl_userfaultfd.2 | 124 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 118 insertions(+), 6 deletions(-) diff --git a/man2/ioctl_userfaultfd.2 b/man2/ioctl_userfaultfd.2 index 40528001e..a9131515c 100644 --- a/man2/ioctl_userfaultfd.2 +++ b/man2/ioctl_userfaultfd.2 @@ -405,6 +405,11 @@ operation is supported. The .B UFFDIO_CONTINUE operation is supported. +.TP +.B 1 << _UFFDIO_POISON +The +.B UFFDIO_POISON +operation is supported. .PP This .BR ioctl (2) @@ -886,6 +891,12 @@ does not equal the value that was specified in the .I range.len field. .TP +.B EEXIST +One or more pages were already mapped in the given range. +.TP +.B EFAULT +No existing page could be found in the page cache for the given range. +.TP .B EINVAL Either .I range.start @@ -900,9 +911,6 @@ An invalid bit was specified in the .I mode field. .TP -.B EEXIST -One or more pages were already mapped in the given range. -.TP .B ENOENT The faulting process has changed its virtual memory layout simultaneously with an outstanding @@ -912,14 +920,118 @@ operation. .B ENOMEM Allocating memory needed to setup the page table mappings failed. .TP -.B EFAULT -No existing page could be found in the page cache for the given range. -.TP .B ESRCH The faulting process has exited at the time of a .B UFFDIO_CONTINUE operation. .\" +.SS UFFDIO_POISON +(Since Linux 6.6.) +Mark an address range as "poisoned". +Future accesses to these addresses will raise a +.B SIGBUS +signal. +Unlike +.B MADV_HWPOISON +this works by installing page table entries, +rather than "really" poisoning the underlying physical pages. +This means it only affects this particular address space. +.PP +The +.I argp +argument is a pointer to a +.I uffdio_poison +structure as shown below: +.PP +.in +4n +.EX +struct uffdio_poison { + struct uffdio_range range; + /* Range to install poison PTE markers in */ + __u64 mode; /* Flags controlling the behavior of poison */ + __s64 updated; /* Number of bytes poisoned, or negated error */ +}; +.EE +.in +.PP +The following value may be bitwise ORed in +.I mode +to change the behavior of the +.B UFFDIO_POISON +operation: +.TP +.B UFFDIO_POISON_MODE_DONTWAKE +Do not wake up the thread that waits for page-fault resolution. +.PP +The +.I updated +field is used by the kernel +to return the number of bytes that were actually poisoned, +or an error in the same manner as +.BR UFFDIO_COPY . +If the value returned in the +.I updated +field doesn't match the value that was specified in +.IR range.len , +the operation fails with the error +.BR EAGAIN . +The +.I updated +field is output-only; +it is not read by the +.B UFFDIO_POISON +operation. +.PP +This +.BR ioctl (2) +operation returns 0 on success. +In this case, +the entire area was poisoned. +On error, \-1 is returned and +.I errno +is set to indicate the error. +Possible errors include: +.TP +.B EAGAIN +The number of bytes mapped +(i.e., the value returned in the +.I updated +field) +does not equal the value that was specified in the +.I range.len +field. +.TP +.B EINVAL +Either +.I range.start +or +.I range.len +was not a multiple of the system page size; or +.I range.len +was zero; or the range specified was invalid. +.TP +.B EINVAL +An invalid bit was specified in the +.I mode +field. +.TP +.B EEXIST +One or more pages were already mapped in the given range. +.TP +.B ENOENT +The faulting process has changed its virtual memory layout simultaneously with +an outstanding +.B UFFDIO_POISON +operation. +.TP +.B ENOMEM +Allocating memory for page table entries failed. +.TP +.B ESRCH +The faulting process has exited at the time of a +.B UFFDIO_POISON +operation. +.\" .SH RETURN VALUE See descriptions of the individual operations, above. .SH ERRORS