Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp1655446pxb; Wed, 10 Feb 2021 13:27:36 -0800 (PST) X-Google-Smtp-Source: ABdhPJziuQtPelspYEuIesslY5oVMNPLVQQ/OKQDWpUDwZSpN9fccbJgxrSJyc7rBs3DWdSULoaq X-Received: by 2002:a17:906:d8ca:: with SMTP id re10mr4995168ejb.18.1612992456720; Wed, 10 Feb 2021 13:27:36 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1612992456; cv=none; d=google.com; s=arc-20160816; b=GNP7COd4N9c+sMYP4IJF4Gd4aTGnRyJRaSpoGKYQkEyIUwK1a3W5qctY1oKLl5Lx4I ijjzEDEW8OKix9bCh1BdZgfRYKlMPvuz475GZnaoC+dgPyx8aL2Bb0IhP+I4q8JJs4MX AMsPU40U+UsaUn0Iuz+XsczBiqr0TW+tQgvLVOW48HvaFZCXz5YXer1q7rP0DR/E8dB+ 6p1oWjXLtDfvmCzgeC+aDO7IpqXXAAZxOWJoq2DJC+4xnBMUXWXB3lLymVUE36Ef4dFE UZiNA6ZaW7QBUJYGDMMiPekNu+9wYoyBfrlvgURNaLLev1HfmrVj8w3O+n9mfU91j+gy Amrg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:references:mime-version :message-id:in-reply-to:date:sender:dkim-signature; bh=LwH+hfZPM+jVaAvlEL06OqVkbSlUL6Tgir5CZCKVHkU=; b=kT9c6pcDm3C6paabEQU/s+RNEIONTbsXOaJH79TJKdzOWU4JFZ1xdqeCU2TaN0aj1N Dz6vJqUcU0/eQNuE1YQV54R3WhYd5SpslleT/Lz1C3Rfe8hzqTobue489gvC8hQzxC8n uC+wxmkO642STsdsWaUPp1o5eF2rQwqkRaSeQGos3QBcVliYvVDxFeMt+zzGC81dGcc8 qqHe+YYwqMz+13CMTmafEESYylz40LVy+uzYiiDRp4ZIwUrW6OxQ1C+d6DXgBz2Q+PbF Nn01IE7XohCKZQg6pecDlMiBsdW19w2tPIh1OE4QjHFSPdR9xNq7tHsnOZgkv1PvV0C/ /fJw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=CJaq+ppV; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id m13si2600750edi.144.2021.02.10.13.27.12; Wed, 10 Feb 2021 13:27:36 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=CJaq+ppV; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232633AbhBJVZa (ORCPT + 99 others); Wed, 10 Feb 2021 16:25:30 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45856 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233461AbhBJVXB (ORCPT ); Wed, 10 Feb 2021 16:23:01 -0500 Received: from mail-yb1-xb4a.google.com (mail-yb1-xb4a.google.com [IPv6:2607:f8b0:4864:20::b4a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0EDB7C06121D for ; Wed, 10 Feb 2021 13:22:21 -0800 (PST) Received: by mail-yb1-xb4a.google.com with SMTP id x4so3922578ybj.22 for ; Wed, 10 Feb 2021 13:22:21 -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=LwH+hfZPM+jVaAvlEL06OqVkbSlUL6Tgir5CZCKVHkU=; b=CJaq+ppVANH85LoaHTydYsQP+8qhXAc7DrD4fdpFizDt2IgpDk7qxVTivgjvFVHaAn hIqSZ/ibeEDQ4RVZW+7QRBAb2qq/Zph49sd705AweyTTZV/ICBugKHxkGbiezRL1Jw+2 uO3gZmePfbnjcXyjnht/ayrxZZi3cADuKTGZCoeBMTwdLUDemTKeX0FNnBX5sOQmwkb3 kZNi3Y9/Oagf58q7kagO2ju36xQkCffTD97vTha4xtJdQKiL4o/ji26wiMYbKVBFfcvE f7igf8zpRTvJnxfDcdxk+FF8JfVWJfE1hXwaT6QvlRd/h62QlrqCrFGNkNLD3arlOMYf fJdA== 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=LwH+hfZPM+jVaAvlEL06OqVkbSlUL6Tgir5CZCKVHkU=; b=Sopieu4nKehuQw+eEM8ePm1jKZd7F/wxSqxJv1S6m0SXUxHkgOnA/yr2JpzsLZ1R/x Y9w6naEJLPtyNKDPYcftCvkU0FeL6GxYhb2/MBxNagZ7Kd9SkQUDHxnau6neH024GT5L 4cYb4gYIzlnrrT6beHvYiEUNsebsFJs5Ba+7JaQFyWeWF3AC01WtGEZqwhvYSEQcWYJS FzRvwZucinWrWQDPuifLSebcGZRao9Z0tuYEGYEf1wuuWQNqPdKuU6M5Ds+ZSvY1fXuZ coUZhYt4Iz3mg0AfK6Y8MP5v2D0S75FFpRdp2THPT2lFj/R9vF430FKpQuxgoQqIeCl9 sRpQ== X-Gm-Message-State: AOAM532aGYSGCCdR60ha7FnRp1y0Vj0peL73fdxCbuJEV7yR5HtMw0N3 Z+cpfvPfqwD8jvfRrKdxj7L9ZFPkn6JkBxjiCsif Sender: "axelrasmussen via sendgmr" X-Received: from ajr0.svl.corp.google.com ([2620:15c:2cd:203:94ee:de01:168:9f20]) (user=axelrasmussen job=sendgmr) by 2002:a25:25cd:: with SMTP id l196mr6561637ybl.433.1612992140166; Wed, 10 Feb 2021 13:22:20 -0800 (PST) Date: Wed, 10 Feb 2021 13:21:57 -0800 In-Reply-To: <20210210212200.1097784-1-axelrasmussen@google.com> Message-Id: <20210210212200.1097784-8-axelrasmussen@google.com> Mime-Version: 1.0 References: <20210210212200.1097784-1-axelrasmussen@google.com> X-Mailer: git-send-email 2.30.0.478.g8a0d178c01-goog Subject: [PATCH v5 07/10] userfaultfd: hugetlbfs: only compile UFFD helpers if config enabled 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" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org For background, mm/userfaultfd.c provides a general mcopy_atomic implementation. But some types of memory (i.e., hugetlb and shmem) need a slightly different implementation, so they provide their own helpers for this. In other words, userfaultfd is the only caller of these functions. This patch achieves two things: 1. Don't spend time compiling code which will end up never being referenced anyway (a small build time optimization). 2. In patches later in this series, we extend the signature of these helpers with UFFD-specific state (a mode enumeration). Once this happens, we *have to* either not compile the helpers, or unconditionally define the UFFD-only state (which seems messier to me). This includes the declarations in the headers, as otherwise they'd yield warnings about implicitly defining the type of those arguments. Reviewed-by: Mike Kravetz Reviewed-by: Peter Xu Signed-off-by: Axel Rasmussen --- include/linux/hugetlb.h | 4 ++++ mm/hugetlb.c | 2 ++ 2 files changed, 6 insertions(+) diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h index d740c6fd19ae..aa9e1d6de831 100644 --- a/include/linux/hugetlb.h +++ b/include/linux/hugetlb.h @@ -134,11 +134,13 @@ void hugetlb_show_meminfo(void); unsigned long hugetlb_total_pages(void); vm_fault_t hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma, unsigned long address, unsigned int flags); +#ifdef CONFIG_USERFAULTFD int hugetlb_mcopy_atomic_pte(struct mm_struct *dst_mm, pte_t *dst_pte, struct vm_area_struct *dst_vma, unsigned long dst_addr, unsigned long src_addr, struct page **pagep); +#endif /* CONFIG_USERFAULTFD */ bool hugetlb_reserve_pages(struct inode *inode, long from, long to, struct vm_area_struct *vma, vm_flags_t vm_flags); @@ -309,6 +311,7 @@ static inline void hugetlb_free_pgd_range(struct mmu_gather *tlb, BUG(); } +#ifdef CONFIG_USERFAULTFD static inline int hugetlb_mcopy_atomic_pte(struct mm_struct *dst_mm, pte_t *dst_pte, struct vm_area_struct *dst_vma, @@ -319,6 +322,7 @@ static inline int hugetlb_mcopy_atomic_pte(struct mm_struct *dst_mm, BUG(); return 0; } +#endif /* CONFIG_USERFAULTFD */ static inline pte_t *huge_pte_offset(struct mm_struct *mm, unsigned long addr, unsigned long sz) diff --git a/mm/hugetlb.c b/mm/hugetlb.c index f150b10981a8..2331281cf133 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -4638,6 +4638,7 @@ vm_fault_t hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma, return ret; } +#ifdef CONFIG_USERFAULTFD /* * Used by userfaultfd UFFDIO_COPY. Based on mcopy_atomic_pte with * modifications for huge pages. @@ -4768,6 +4769,7 @@ int hugetlb_mcopy_atomic_pte(struct mm_struct *dst_mm, put_page(page); goto out; } +#endif /* CONFIG_USERFAULTFD */ static void record_subpages_vmas(struct page *page, struct vm_area_struct *vma, int refs, struct page **pages, -- 2.30.0.478.g8a0d178c01-goog