From patchwork Thu Jul 6 22:50:34 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Axel Rasmussen X-Patchwork-Id: 13304276 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 7FBA8EB64DD for ; Thu, 6 Jul 2023 22:51:06 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0567A8D0002; Thu, 6 Jul 2023 18:51:06 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id F23068E0001; Thu, 6 Jul 2023 18:51:05 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D9AF98D0008; Thu, 6 Jul 2023 18:51:05 -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 C6F018D0002 for ; Thu, 6 Jul 2023 18:51:05 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 1BF9C1405FE for ; Thu, 6 Jul 2023 22:51:05 +0000 (UTC) X-FDA: 80982684090.13.CEC82DB Received: from mail-yw1-f202.google.com (mail-yw1-f202.google.com [209.85.128.202]) by imf05.hostedemail.com (Postfix) with ESMTP id 45936100013 for ; Thu, 6 Jul 2023 22:51:03 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b=MUCpPcJ5; spf=pass (imf05.hostedemail.com: domain of 3VkWnZA0KCKkJgNUaJbVdbbNWPXXPUN.LXVURWdg-VVTeJLT.XaP@flex--axelrasmussen.bounces.google.com designates 209.85.128.202 as permitted sender) smtp.mailfrom=3VkWnZA0KCKkJgNUaJbVdbbNWPXXPUN.LXVURWdg-VVTeJLT.XaP@flex--axelrasmussen.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1688683863; 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=7OMVl3YxFVN2A+Ry/UxbO1YmCHHRZcxw7VDxaJg9ek4=; b=D1ywCopONE8ALByeJKPqWKOlRRrWM4ZwQakak/GTSPTlUwu9xKDWo1+GICdlJJxK5tevb/ 015SrflOUDG6LVg9owbodUtdYEowo5E+8dfkIZtx6XvX+Zel4hLaVC+JWLlAkzZgA6yMtI hgmLCB9JWxQdp3pJ+1ablbU2/Y983xo= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b=MUCpPcJ5; spf=pass (imf05.hostedemail.com: domain of 3VkWnZA0KCKkJgNUaJbVdbbNWPXXPUN.LXVURWdg-VVTeJLT.XaP@flex--axelrasmussen.bounces.google.com designates 209.85.128.202 as permitted sender) smtp.mailfrom=3VkWnZA0KCKkJgNUaJbVdbbNWPXXPUN.LXVURWdg-VVTeJLT.XaP@flex--axelrasmussen.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1688683863; a=rsa-sha256; cv=none; b=s6EDO68cumqKYp9V/uQRDmNeN5jOGwBWV7PyyvtdkgWqwCYVXBmkl45ldnGYmycA9R7X7o jWbBZStYtTKIGtcPEkznopuHYQtdppXKDUYg06Pibp1XyFn2PF2FPuGixVEGPtwkQ0D9QV 36Ap9FoiQ2XpO41ZWtuHscoNKafcS2Y= Received: by mail-yw1-f202.google.com with SMTP id 00721157ae682-5704970148dso13017257b3.3 for ; Thu, 06 Jul 2023 15:51:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1688683862; x=1691275862; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=7OMVl3YxFVN2A+Ry/UxbO1YmCHHRZcxw7VDxaJg9ek4=; b=MUCpPcJ5Cgcqj6eW6sHdBBG776f5QGOT4kgvGYw/zAIra7r+ur1/6MP7Dq6MkoSZmq 4xRE3PYyIXD4h8qZWQWCXhWmcWP1AwGUjGAf2ElqV4yAkcG0gjhOddOoakQQadmYz+QD Is/7A9d1hSTithrMC6POOEAOeFEch61LmagZDJM30S0vYIcKNDDe5/OQ3z3oRxh6zHQl utpA3lGtPFljt8j9Ntkp9LhkEyWfCZ3raeDW8NKQTH9gVvZpq5Wizvy5vkyeCh1Pwwja CGEW2G1lqZ2p9p/Ga+J136aVMeRPFS8hQNLl5QI5DDjAJCWHkUOphl3NTJbnSXMCQUoE o8sw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688683862; x=1691275862; 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=7OMVl3YxFVN2A+Ry/UxbO1YmCHHRZcxw7VDxaJg9ek4=; b=Z52rXm5iEFLSUCsSVUd+E809ndMf/I3yVWb1rC5GtGBf/Iks5UEtnzQ5llpdkdvCu9 Irdo+JUNQPMt1uEBVHubbyU+dH3L0TYCqXtkegLDxtTFSYIyRh4CkhjppSSsYyxj5aHw 0mqt3prNPNPvQP+fp7V1QVBz9p0vfAU99kiNFIL39HJYq6tjWkDt91s+YD18w/7UsL6D ATOrrPMi2jaEE8t8LPpU0StZQFAbVNPIH6s1OR/i0XHY384TK5hVgPQpfJ9G0Ulh9JpI Z7mYqMKAI3Sj2vx5/2yPMGxFO/8XwF2HN6kJX6fLo3FHriAr/Qh8un/FmRxVtJAKRvps OEpA== X-Gm-Message-State: ABy/qLYZYNpRgiqOiQLBber6gt81ywvdjBeC5Rq+PNVKLpvB6x7vp9ki 9hNMU4FZmbeJpv3SVkFsde+en9f/1CfUH2Z6YAGL X-Google-Smtp-Source: APBJJlG1dkyvwdYp0IICzgcbHzfcY4HpHckyy/miTsDbBSll9Umrn8xTYfU/5fbclpora7Bohc9XblNeG3IvM415E6Ta X-Received: from axel.svl.corp.google.com ([2620:15c:2a3:200:bec3:2b1c:87a:fca2]) (user=axelrasmussen job=sendgmr) by 2002:a81:af07:0:b0:565:a33a:a49f with SMTP id n7-20020a81af07000000b00565a33aa49fmr25333ywh.6.1688683862421; Thu, 06 Jul 2023 15:51:02 -0700 (PDT) Date: Thu, 6 Jul 2023 15:50:34 -0700 In-Reply-To: <20230706225037.1164380-1-axelrasmussen@google.com> Mime-Version: 1.0 References: <20230706225037.1164380-1-axelrasmussen@google.com> X-Mailer: git-send-email 2.41.0.255.g8b1d071c50-goog Message-ID: <20230706225037.1164380-7-axelrasmussen@google.com> Subject: [PATCH v3 6/8] mm: userfaultfd: document and enable new UFFDIO_POISON feature From: Axel Rasmussen To: Alexander Viro , Andrew Morton , Brian Geffon , Christian Brauner , David Hildenbrand , Gaosheng Cui , Huang Ying , Hugh Dickins , James Houghton , "Jan Alexander Steffens (heftig)" , Jiaqi Yan , Jonathan Corbet , Kefeng Wang , "Liam R. Howlett" , Miaohe Lin , Mike Kravetz , "Mike Rapoport (IBM)" , Muchun Song , Nadav Amit , Naoya Horiguchi , Peter Xu , Ryan Roberts , Shuah Khan , Suleiman Souhlal , Suren Baghdasaryan , "T.J. Alumbaugh" , Yu Zhao , ZhangPeng Cc: linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-kselftest@vger.kernel.org, Axel Rasmussen X-Rspamd-Queue-Id: 45936100013 X-Rspam-User: X-Stat-Signature: ep8ursnzcpegeprcwgghofincmzhte5g X-Rspamd-Server: rspam01 X-HE-Tag: 1688683863-137044 X-HE-Meta: U2FsdGVkX1+z5f/lGE54gtjeRdJNYjnxG+0kFkyv2GPOiF2YGZvsQGfqDTxFt7ri7oNK03psK80Lg20+un5caMNVeL7eDxBCzQhcQc8Tbe1jth+26gQzrlda4lhi5L0X1A7um5MNzIVXSCZp0Y8szOhKxcNwx+fVq48JCXUQMamNE5TweXMYXUe02mbjRB6ZaWo9zg/kmt8oO7ZpsmXuS7RKT2Uks/XLlN26sLI2OTmkZyI0/QbbUza/mj/oaJRSxwo1lUerJVIPdZuu6MSQiZvLcxJskjJ0bSYpT7tMzxuFLxpFjap+M8PCoaYVNSSQqKb6DqmdiT+PlZwlIZtCvDFEsk8bd2o0SIEqwOsr+ud7mswQk1pL1vNs7AqlqU1wUYYhMdSk/4/zlLoeJgbTe7B/hO/rdogyvfbI6A58csx0yX91ezMPU+Tzy3zZbYQ3gqy/AQLodaqtXtSL6u5jfwo2EngFrWS9frm1aWbs4aByjZR1XTxPkB2U99Xk0Orb8lH68HCsBNyUwsPo17QapFK88/wSQjUK6V1XlcUrS7op+55UkLa3oYKFUj1QK1ZbacLDziOTC8ED2Lw7RnE9IZYj6dQtFWWvuXxU5HH4MRe9PmwqHLyf1M3xMuYzylUCqVHpR9yaGgysBhY8Dg8gHUQmcYXUfw7OGs2IbzOl4g1qPeIvs+Bry1ANWVzCJ1Wz3gmgwM2+p+zw/BVKoM2Vy1PdoNJCLKAuWmLkyE8LUhUSTHNQDDgqAoj8LajKXFqILT56h+uL5YtC46QrkpO8KfZY56UO/d73bJtON7Ofg7FzRKi/ZPI6jvySWa9LYhC6X2+266TnOI+Ng/CqQoFjX0xSiRCHyX1cD1+owLB6E3j1hBu/h/Ck6S/ru1sTaDzaAWovbEXpP/h/LNoD5p6Y62rI4JmEtXd8v/DOdOjeO4xWZiNUuqBgr9TgGFrz0mgSuOzGxTHRji6ZqwPKxzy 93vM0HLx igPoYOSq+dWiCZwSulZSgsfi+JBZgRfzbEcUremz5HcHWQYydK/fad43ToiV90j5BAyUwv9QI2D5O9Aqz0FNCxArd3i8Pgb59HMxAJpjgNwFMJNQuDznj7wlWpL2+vP7CS98ZUlNgPMDfdYa9fuOFKqGroZydwqOCaulq4AtwpkiPyxrO2dyYg07Z2Qhlxh7RqynuTP1iBc7qOhSc8UkGaC67aZmZtaXenBWPTKSU3wOT+BvdhSACUQHchkPORj4lDXQJpP/lPAs+rTRM/JGwfyTA6T4tVTKHPz3xJ9nCfo7LddeBIZdvlJ4wMx7UShUauE/sbd7GNJw26Y8lTKFNNNEP3cpU08p2XGUQ0SMs0DFyII+muiZq/Zj2ZCRDHE1fxMEwAPUUrcidaXb6mQzyk2RflokIfMDuRyoONdu323Z4GyTm0e3qe0UXnvIFUXZF/IyrNNuJ/Yq7JPOX5wVSBepI78n58DR77u7YqmAvzXR/QarDRgMWUWQ6a+lCkx53xNm+RUWmUgTW8IZ01vwjZtSEaJ7S1Tmc+lLk9GfJS9aikEhEg8AisqCnV6IFguEczFDx9U+MZ2z6xGPKV6Gm/tZyIww3tkSfuFCrr3Ir9e7MYY3RsOTZ1+WsLhrFyt+ivh6Y2gvFaRKDq/Kne5QazMPN0EcDho7LYNXyj8eLlQBG5Men4upq0tyHcoUVcDT6qwyGVfuAO96Qw6PWo3XH5kttdFJYx8smEa5FIH71isFzYvE= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: Update the userfaultfd API to advertise this feature as part of feature flags and supported ioctls (returned upon registration). Add basic documentation describing the new feature. Acked-by: Peter Xu Signed-off-by: Axel Rasmussen --- Documentation/admin-guide/mm/userfaultfd.rst | 15 +++++++++++++++ include/uapi/linux/userfaultfd.h | 9 ++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/Documentation/admin-guide/mm/userfaultfd.rst b/Documentation/admin-guide/mm/userfaultfd.rst index 7c304e432205..4349a8c2b978 100644 --- a/Documentation/admin-guide/mm/userfaultfd.rst +++ b/Documentation/admin-guide/mm/userfaultfd.rst @@ -244,6 +244,21 @@ write-protected (so future writes will also result in a WP fault). These ioctls support a mode flag (``UFFDIO_COPY_MODE_WP`` or ``UFFDIO_CONTINUE_MODE_WP`` respectively) to configure the mapping this way. +Memory Poisioning Emulation +--------------------------- + +In response to a fault (either missing or minor), an action userspace can +take to "resolve" it is to issue a ``UFFDIO_POISON``. This will cause any +future faulters to either get a SIGBUS, or in KVM's case the guest will +receive an MCE as if there were hardware memory poisoning. + +This is used to emulate hardware memory poisoning. Imagine a VM running on a +machine which experiences a real hardware memory error. Later, we live migrate +the VM to another physical machine. Since we want the migration to be +transparent to the guest, we want that same address range to act as if it was +still poisoned, even though it's on a new physical host which ostensibly +doesn't have a memory error in the exact same spot. + QEMU/KVM ======== diff --git a/include/uapi/linux/userfaultfd.h b/include/uapi/linux/userfaultfd.h index b5f07eacc697..62151706c5a3 100644 --- a/include/uapi/linux/userfaultfd.h +++ b/include/uapi/linux/userfaultfd.h @@ -39,7 +39,8 @@ UFFD_FEATURE_MINOR_SHMEM | \ UFFD_FEATURE_EXACT_ADDRESS | \ UFFD_FEATURE_WP_HUGETLBFS_SHMEM | \ - UFFD_FEATURE_WP_UNPOPULATED) + UFFD_FEATURE_WP_UNPOPULATED | \ + UFFD_FEATURE_POISON) #define UFFD_API_IOCTLS \ ((__u64)1 << _UFFDIO_REGISTER | \ (__u64)1 << _UFFDIO_UNREGISTER | \ @@ -49,12 +50,14 @@ (__u64)1 << _UFFDIO_COPY | \ (__u64)1 << _UFFDIO_ZEROPAGE | \ (__u64)1 << _UFFDIO_WRITEPROTECT | \ - (__u64)1 << _UFFDIO_CONTINUE) + (__u64)1 << _UFFDIO_CONTINUE | \ + (__u64)1 << _UFFDIO_POISON) #define UFFD_API_RANGE_IOCTLS_BASIC \ ((__u64)1 << _UFFDIO_WAKE | \ (__u64)1 << _UFFDIO_COPY | \ + (__u64)1 << _UFFDIO_WRITEPROTECT | \ (__u64)1 << _UFFDIO_CONTINUE | \ - (__u64)1 << _UFFDIO_WRITEPROTECT) + (__u64)1 << _UFFDIO_POISON) /* * Valid ioctl command number range with this API is from 0x00 to