From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.6 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_INVALID,DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D12E9C433E0 for ; Mon, 1 Mar 2021 22:35:10 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 721CB60231 for ; Mon, 1 Mar 2021 22:35:10 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 721CB60231 Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=google.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 04FDB8D00B3; Mon, 1 Mar 2021 17:35:10 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id F42048D0063; Mon, 1 Mar 2021 17:35:09 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E58988D00B3; Mon, 1 Mar 2021 17:35:09 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0215.hostedemail.com [216.40.44.215]) by kanga.kvack.org (Postfix) with ESMTP id D05A88D0063 for ; Mon, 1 Mar 2021 17:35:09 -0500 (EST) Received: from smtpin01.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id 850C48249980 for ; Mon, 1 Mar 2021 22:35:09 +0000 (UTC) X-FDA: 77872762338.01.263515E Received: from mail-yb1-f201.google.com (mail-yb1-f201.google.com [209.85.219.201]) by imf10.hostedemail.com (Postfix) with ESMTP id 91ACD410E0EF for ; Mon, 1 Mar 2021 22:27:33 +0000 (UTC) Received: by mail-yb1-f201.google.com with SMTP id i2so20631192ybl.16 for ; Mon, 01 Mar 2021 14:27:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=sender:date:in-reply-to:message-id:mime-version:references:subject :from:to:cc; bh=Ffolv6cCxRHUvURj2O7pa1bwsyAQ1T5kdza2OAkkouY=; b=OqWULVsjc5kG1tSiKzdPQ6lmZhTxIus8AFl8m9sfc24TVgVwz+5dJB9LVZ92SGAztl M1nnT5eqN8K86Cbg+aZbMvtu+VsW5UwayjcttoCx9NyGETzAEsuZ206lgRVsAfTL3pP0 BUSXsrDQSABJsXlXkpzuhE3HmrUVv7mf6okeR275r+qQlu/EWudrDmmc+gwTnDmONdmt qAKuZwItPa/F/QHolBwTCLgzowfYc6iWaevajuM+UoGhnj6Y+5ctlwg8YlPTFZbQ9hP2 HQMwj8mxoXk0G2t2xhmk5WVUczMKf52EW+fioAByRJTMOPvXR3agMuDhmHFn36hUBmol NmJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=Ffolv6cCxRHUvURj2O7pa1bwsyAQ1T5kdza2OAkkouY=; b=iVC/Buk+80J29aAsJnPyZlHCGuWWbiybkq25pL7zMlr8SnyRv989/lx7VwnL/gtowg hpytzlrmb1pG68irxXvcw3JL7G41gtSS/6aH+pzB/YhJHd0010pbOssuss9VT7OBMDbB Ek5tSAoyelSnTj0SCWoOJmFqkVi2GZ3z9wjnum43o+s5v2VQtgj5ktDjopXRZBgxEhjI LRahQcWhlgorHvc7Vedci3gdjNWQoMzOc7WjnmWJJSMtUZ6b9C4fAwPK7T2BlhW0JdiX 3nNUCa9EZIYHSnGLGQPuAJMVq8jb545NsumvdtdfCID5esv/t/+UgcKtAGMjlt9YhdjK lkzA== X-Gm-Message-State: AOAM530CSRW6FQr0FmFZU+HsZCFIrLQd/3q21zE/1H1QX5bkGl49SBWd igjiFUdd6cfVUW1+Y07UrXJ8sSckygPPmkj/n9Mo X-Google-Smtp-Source: ABdhPJzc5y7AU15P9PCUuTuAnbP63qIvfhyNPhEpq27PTqPFwjyDNYHkSqeT60bmJ8CafzW2xk2sNBegVQIFa0LllhKV X-Received: from ajr0.svl.corp.google.com ([2620:15c:2cd:203:1998:8165:ca50:ab8d]) (user=axelrasmussen job=sendgmr) by 2002:a25:e785:: with SMTP id e127mr26698696ybh.451.1614637659522; Mon, 01 Mar 2021 14:27:39 -0800 (PST) Date: Mon, 1 Mar 2021 14:27:24 -0800 In-Reply-To: <20210301222728.176417-1-axelrasmussen@google.com> Message-Id: <20210301222728.176417-3-axelrasmussen@google.com> Mime-Version: 1.0 References: <20210301222728.176417-1-axelrasmussen@google.com> X-Mailer: git-send-email 2.30.1.766.gb4fecdf3b7-goog Subject: [PATCH v9 2/6] userfaultfd: disable huge PMD sharing for MINOR registered VMAs From: Axel Rasmussen To: Alexander Viro , Alexey Dobriyan , Andrea Arcangeli , Andrew Morton , Anshuman Khandual , Catalin Marinas , Chinwen Chang , Huang Ying , Ingo Molnar , Jann Horn , Jerome Glisse , Lokesh Gidra , "Matthew Wilcox (Oracle)" , Michael Ellerman , "=?UTF-8?q?Michal=20Koutn=C3=BD?=" , Michel Lespinasse , Mike Kravetz , Mike Rapoport , Nicholas Piggin , Peter Xu , Shaohua Li , Shawn Anastasio , Steven Rostedt , Steven Price , Vlastimil Babka Cc: linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, Adam Ruprecht , Axel Rasmussen , Cannon Matthews , "Dr . David Alan Gilbert" , David Rientjes , Mina Almasry , Oliver Upton Content-Type: text/plain; charset="UTF-8" X-Stat-Signature: 9c4irwtwc511eu64i6rj1y145siutuo5 X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: 91ACD410E0EF Received-SPF: none (flex--axelrasmussen.bounces.google.com>: No applicable sender policy available) receiver=imf10; identity=mailfrom; envelope-from="<3W2o9YA0KCC4KhOVbKcWeccOXQYYQVO.MYWVSXeh-WWUfKMU.YbQ@flex--axelrasmussen.bounces.google.com>"; helo=mail-yb1-f201.google.com; client-ip=209.85.219.201 X-HE-DKIM-Result: pass/pass X-HE-Tag: 1614637653-792165 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: As the comment says: for the MINOR fault use case, although the page might be present and populated in the other (non-UFFD-registered) half of the mapping, it may be out of date, and we explicitly want userspace to get a minor fault so it can check and potentially update the page's contents. Huge PMD sharing would prevent these faults from occurring for suitably aligned areas, so disable it upon UFFD registration. Reviewed-by: Peter Xu Reviewed-by: Mike Kravetz Signed-off-by: Axel Rasmussen --- include/linux/userfaultfd_k.h | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/include/linux/userfaultfd_k.h b/include/linux/userfaultfd_k.h index 0390e5ac63b3..e060d5f77cc5 100644 --- a/include/linux/userfaultfd_k.h +++ b/include/linux/userfaultfd_k.h @@ -56,12 +56,19 @@ static inline bool is_mergeable_vm_userfaultfd_ctx(struct vm_area_struct *vma, } /* - * Never enable huge pmd sharing on uffd-wp registered vmas, because uffd-wp - * protect information is per pgtable entry. + * Never enable huge pmd sharing on some uffd registered vmas: + * + * - VM_UFFD_WP VMAs, because write protect information is per pgtable entry. + * + * - VM_UFFD_MINOR VMAs, because otherwise we would never get minor faults for + * VMAs which share huge pmds. (If you have two mappings to the same + * underlying pages, and fault in the non-UFFD-registered one with a write, + * with huge pmd sharing this would *also* setup the second UFFD-registered + * mapping, and we'd not get minor faults.) */ static inline bool uffd_disable_huge_pmd_share(struct vm_area_struct *vma) { - return vma->vm_flags & VM_UFFD_WP; + return vma->vm_flags & (VM_UFFD_WP | VM_UFFD_MINOR); } static inline bool userfaultfd_missing(struct vm_area_struct *vma) -- 2.30.1.766.gb4fecdf3b7-goog