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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id ACB53EB64DB for ; Tue, 20 Jun 2023 17:54:47 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 163B18D0002; Tue, 20 Jun 2023 13:54:47 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 113898D0001; Tue, 20 Jun 2023 13:54:47 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EF6188D0002; Tue, 20 Jun 2023 13:54:46 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id E16F98D0001 for ; Tue, 20 Jun 2023 13:54:46 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id A88F7140437 for ; Tue, 20 Jun 2023 17:54:46 +0000 (UTC) X-FDA: 80923876572.29.1D37993 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by imf15.hostedemail.com (Postfix) with ESMTP id 52E90A0006 for ; Tue, 20 Jun 2023 17:54:44 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=iOI3bPv+; dmarc=pass (policy=none) header.from=redhat.com; spf=pass (imf15.hostedemail.com: domain of david@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=david@redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1687283684; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=gojzR5WISxJHEnX2DoI8Gc/njk+/NnRGSK3Ash3pL8g=; b=7NyIskqCgJ+LJR8+ILTMAlHsQBtEq31sUOseYuGsCYgJft2W0N+npoMCkoRoT0rgMJI169 1WAmydNkL+dveH8nxCh3LoAW4ewWJQMca1katl3DA9jAucUYHnsaFITFkGM0bGIHYAoIBg JdwMrDnZwZ2Xb3NgC4TCJSj4vPnjqpI= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=iOI3bPv+; dmarc=pass (policy=none) header.from=redhat.com; spf=pass (imf15.hostedemail.com: domain of david@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=david@redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1687283684; a=rsa-sha256; cv=none; b=EWPbUoX6iXaMIFEY9zI709RsIUesaAIgegn1Ed+96russKiFBwKcqTAN1Bl7q+HgQbO7eS DG4L+2hu1EFa16vHp//IfhKM8srXT14JglCviCA0zpTV0DHkXzDW3K4LCqt129ulF9DBLx aEl1JeBnxAtUIGLSfvwdrxDFGmFQN/4= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1687283683; h=from:from: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:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=gojzR5WISxJHEnX2DoI8Gc/njk+/NnRGSK3Ash3pL8g=; b=iOI3bPv+xr48HZZGnWrmOqBbmqilMTxzmj1VCz+LX7vzrU2kTTT18XA8BLBaD+jYg3LLqb FTflUWO4EzufN7K2kJWZBotWRUjfRbSkvom9zCvmtOE5TJrTE3QK+1wh5T6eIXrSKZvwXB 5e5UNY8EVbpoAqBjonutJVQcAvaAXbo= Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-351-Vh_2SXZ_M26ZwQfNObt2BA-1; Tue, 20 Jun 2023 13:54:42 -0400 X-MC-Unique: Vh_2SXZ_M26ZwQfNObt2BA-1 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-3f41a04a297so19738855e9.3 for ; Tue, 20 Jun 2023 10:54:42 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687283681; x=1689875681; h=content-transfer-encoding:in-reply-to:organization:from:references :cc:to:content-language:subject:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=gojzR5WISxJHEnX2DoI8Gc/njk+/NnRGSK3Ash3pL8g=; b=OPeZjZAP7yCjS2MjF30NjWdFM61NRdcR888TzffvQKniphD/7kaEbVGS+4V4alvYxf D+hLrzulkntTbIPUFHMsOadnGyTZ80O2g06fAHZCYrzclGzMxrDSRjtz0PfOURpztEJU yEB74v08Sb6MdyfXQHqzZZHwvfFxQagkcYKPOpBmZsuy2t5tB8JYt+wKAEqkmqQKueIE PDOw6N3RooUlYOzeSBzY6HejnJNjmnu//86Wn87QvWE6QFyu6SRcUGA4RfgciMdSkWWH jlYokS9vVmWB34aOF5hiclXHmXJ2MXLeQqTypz+YiCNTR9K43DJryK+Hjj/MkaAKS0rp lFIw== X-Gm-Message-State: AC+VfDyxVu/+dFxY8ZwYpwKFBBDwDo8wsvMcllSwosFHF8wYPNOS8b/w 0zTFzTtQjIlM7yXhw0alszzXp4MndnKxjXtIwegdTNY5HH9fumBtsFPGPsL4Kt25K97i7GnhiMs bY9569SI/aos= X-Received: by 2002:a05:600c:ca:b0:3f9:163:35d5 with SMTP id u10-20020a05600c00ca00b003f9016335d5mr7001399wmm.2.1687283681230; Tue, 20 Jun 2023 10:54:41 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7RU4XOxcrLw34Rla3rHgIIwFUKGh8fFSldVk9HR3d2qDl4YY7i/K9tCJPRB6NaRYSC80vonQ== X-Received: by 2002:a05:600c:ca:b0:3f9:163:35d5 with SMTP id u10-20020a05600c00ca00b003f9016335d5mr7001387wmm.2.1687283680802; Tue, 20 Jun 2023 10:54:40 -0700 (PDT) Received: from ?IPV6:2003:cb:c739:d200:8745:c520:8bf6:b587? (p200300cbc739d2008745c5208bf6b587.dip0.t-ipconnect.de. [2003:cb:c739:d200:8745:c520:8bf6:b587]) by smtp.gmail.com with ESMTPSA id m5-20020adffe45000000b002fae7408544sm2458409wrs.108.2023.06.20.10.54.39 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 20 Jun 2023 10:54:40 -0700 (PDT) Message-ID: Date: Tue, 20 Jun 2023 19:54:38 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.12.0 Subject: Re: [PATCH v2 3/8] mm/hugetlb: Add page_mask for hugetlb_follow_page_mask() To: Peter Xu Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Andrea Arcangeli , Mike Rapoport , Matthew Wilcox , Vlastimil Babka , John Hubbard , "Kirill A . Shutemov" , James Houghton , Andrew Morton , Lorenzo Stoakes , Hugh Dickins , Mike Kravetz , Jason Gunthorpe References: <20230619231044.112894-1-peterx@redhat.com> <20230619231044.112894-4-peterx@redhat.com> From: David Hildenbrand Organization: Red Hat In-Reply-To: X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 52E90A0006 X-Stat-Signature: 5xcocpn1hrsuaayx1yws5asgxwte6fm3 X-HE-Tag: 1687283684-194324 X-HE-Meta: U2FsdGVkX18J7FpYxIrr3+N28abjhCoAT52HjeGFsA6DZAMLXD/YIemlBihs0EpkFgekLkCW+aibKIgQi9HwAXrGnSYgxPLdHQPraTjNSBL/p4wY27jqLcJhgubue+hFZHnahAvZjUx2ntFCEfcufoVQEf7WW609MNMdMItkppV8cWfawKMyOZFMo7ZrjY8NM2whS2aATSuiCumAlmMGGh7wCcju9YWGqWz1yQFc9CpZF02WcAKC5ovH/F7tdPdFyEWBIQlIpf40cBCdqNQ0O0N7Sim2jUptejv1yRv4xjuySvuY0bJZDezUhAHKqdBMLziPlhCa0PzRsc10lL4im2c+IexwDhlJPkVmkDxei1OIAlDDEt19DeUnlZTIzD/POhoi3zP+S5f0knUE0NI5ssr94AC4pLINsnprs67eNKQ8GTGaa4q/F06eyQ2fbt6jfH2eH7WPqs7eu5B1VvbAluzye+in/E2QC955FCYYOARotFVjzLFUXg0pOicUUNU4aj4mahf7XclTpImqKhBeFg5aUQfz+5/Mu+fg2Fl/+7f9ZKrNvx34WC3xPY5OIPcy9j7nvFz6OgVN5tVTcyUUygHwa70uWSaGj/X16xLPyYe1rE8Xh8GOux7zGgTFFcbWUNyHrwMajDAmh9DGqu8ypWpcLS2RqzziqEByK/K1tMs5M3FnQs8NPhnCZPCmHGlhsCSuixKhNw6+7x3hx/J9JNqDT8R28yzllJrVYohmfrK/VZOiHhFpIH1/VIpsrAASMMgPLPRU2rkd6+QsJH1W3Qtajna6GMdTz/xm3SJWCEB5843P9mPBKitVCg73Hfkn2cclGyiYQXFCV0X0v02aKzKgU3qPou41YAdQ6v+PTkwzt7VwZtj1bjV3kjkkXAybK2kq1y06jjXu9N0GdA8vBs8QP3pvN+dWYgYS2jmnlaaKcvb3l+OEG800ip8T/pmrJf0RhSwdR5A3nbZ9eYM EEt9l+VU 4E4CkfP2Dj27UFRb0Dx28uaQg2wJ3ZApVT/HeHHW2x5n+p2lf5cuc5uBGnhCjCPURZTQ23F4+K7blB10MvcnINjqlEMfYmdHarqGoAsl+bh3LVjuinRWGM3xP99ZEX/rXdInZcuKW3cKdQK3Wtg96u5l0Phm+Zb0zIp1eLcZCY5g0/L0G04ZQqdAx/BUCuOLP9WTqpdJHUZB9cXyVE0O9Iqysxzjd/Gpoy8yktdolSYi6FbLpFmtjXmH1cDWiaZH5+SBQxv/LaoBY9rjkE77E0jhrJJog046hdDlFIw0FjWgefAQ1oD6r3rlgySlRzn//1blhD/M4qmekxlzs6HIZHePyjudfAyFBoqLrhD8apDUevqKq965jmFkt/MEMR08QWeJPrp/SxpY42wtm6jHbur5KFCDtz57wB2eBuJxMdg4/C3zPwEUrXSfyh1NXXVgw2Co20ceuVp1YQJc= 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: On 20.06.23 18:28, Peter Xu wrote: > On Tue, Jun 20, 2023 at 05:23:09PM +0200, David Hildenbrand wrote: >> On 20.06.23 01:10, Peter Xu wrote: >>> follow_page() doesn't need it, but we'll start to need it when unifying gup >>> for hugetlb. >>> >>> Signed-off-by: Peter Xu >>> --- >>> include/linux/hugetlb.h | 8 +++++--- >>> mm/gup.c | 3 ++- >>> mm/hugetlb.c | 5 ++++- >>> 3 files changed, 11 insertions(+), 5 deletions(-) >>> >>> diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h >>> index beb7c63d2871..2e2d89e79d6c 100644 >>> --- a/include/linux/hugetlb.h >>> +++ b/include/linux/hugetlb.h >>> @@ -131,7 +131,8 @@ int move_hugetlb_page_tables(struct vm_area_struct *vma, >>> int copy_hugetlb_page_range(struct mm_struct *, struct mm_struct *, >>> struct vm_area_struct *, struct vm_area_struct *); >>> struct page *hugetlb_follow_page_mask(struct vm_area_struct *vma, >>> - unsigned long address, unsigned int flags); >>> + unsigned long address, unsigned int flags, >>> + unsigned int *page_mask); >>> long follow_hugetlb_page(struct mm_struct *, struct vm_area_struct *, >>> struct page **, unsigned long *, unsigned long *, >>> long, unsigned int, int *); >>> @@ -297,8 +298,9 @@ static inline void adjust_range_if_pmd_sharing_possible( >>> { >>> } >>> -static inline struct page *hugetlb_follow_page_mask(struct vm_area_struct *vma, >>> - unsigned long address, unsigned int flags) >>> +static inline struct page *hugetlb_follow_page_mask( >>> + struct vm_area_struct *vma, unsigned long address, unsigned int flags, >>> + unsigned int *page_mask) >>> { >>> BUILD_BUG(); /* should never be compiled in if !CONFIG_HUGETLB_PAGE*/ >>> } >>> diff --git a/mm/gup.c b/mm/gup.c >>> index abcd841d94b7..9fc9271cba8d 100644 >>> --- a/mm/gup.c >>> +++ b/mm/gup.c >>> @@ -780,7 +780,8 @@ static struct page *follow_page_mask(struct vm_area_struct *vma, >>> * Ordinary GUP uses follow_hugetlb_page for hugetlb processing. >>> */ >>> if (is_vm_hugetlb_page(vma)) >>> - return hugetlb_follow_page_mask(vma, address, flags); >>> + return hugetlb_follow_page_mask(vma, address, flags, >>> + &ctx->page_mask); >>> pgd = pgd_offset(mm, address); >>> diff --git a/mm/hugetlb.c b/mm/hugetlb.c >>> index 9a6918c4250a..fbf6a09c0ec4 100644 >>> --- a/mm/hugetlb.c >>> +++ b/mm/hugetlb.c >>> @@ -6454,7 +6454,8 @@ static inline bool __follow_hugetlb_must_fault(struct vm_area_struct *vma, >>> } >>> struct page *hugetlb_follow_page_mask(struct vm_area_struct *vma, >>> - unsigned long address, unsigned int flags) >>> + unsigned long address, unsigned int flags, >>> + unsigned int *page_mask) >>> { >>> struct hstate *h = hstate_vma(vma); >>> struct mm_struct *mm = vma->vm_mm; >>> @@ -6499,6 +6500,8 @@ struct page *hugetlb_follow_page_mask(struct vm_area_struct *vma, >>> page = NULL; >>> goto out; >>> } >>> + >>> + *page_mask = ~huge_page_mask(h) >> PAGE_SHIFT; >> >> As discussed, can be simplified. But can be done on top (or not at all, but >> it is confusing code). > > Since we decided to make this prettier.. At last I decided to go with this: > > *page_mask = (1U << huge_page_order(h)) - 1; > > The previous suggestion of PHYS_PFN() will do two shifts over PAGE_SIZE > (the other one in huge_page_size()) which might be unnecessary, also, PHYS_ > can be slightly misleading too as prefix. > >> >> Reviewed-by: David Hildenbrand > > I'll take this with above change, please shoot if not applicable. Thanks, > Perfectly fine :) -- Cheers, David / dhildenb