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 450FAEB64D7 for ; Fri, 16 Jun 2023 08:08:37 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CD8A08E0003; Fri, 16 Jun 2023 04:08:36 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C887D8E0002; Fri, 16 Jun 2023 04:08:36 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B2A6B8E0003; Fri, 16 Jun 2023 04:08:36 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id A2C058E0002 for ; Fri, 16 Jun 2023 04:08:36 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 761A4120BDC for ; Fri, 16 Jun 2023 08:08:36 +0000 (UTC) X-FDA: 80907884232.20.E603453 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by imf18.hostedemail.com (Postfix) with ESMTP id 4217F1C0013 for ; Fri, 16 Jun 2023 08:08:34 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=gkFy9TCR; dmarc=pass (policy=none) header.from=redhat.com; spf=pass (imf18.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=1686902914; 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=Gr7a6v7Egyynk2whMDZ85Y4nh+6uiz4a8aewos3ecfU=; b=rbTtGmdngRGlqyvYH4dqjgKJe33wMgIKUOLl9a6I2PDs+75wnyY05GWdqcz5/40L3KrRGz VhpRy5oIgFxoryDjwr1hEqtTaDDV7GWCQTNGQmUuuQAIZZdOrr08GRLti/60vl0PGgtJIV 8iGiv2pVR6TecMkYK69bcEz6p9EW+yQ= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=gkFy9TCR; dmarc=pass (policy=none) header.from=redhat.com; spf=pass (imf18.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=1686902914; a=rsa-sha256; cv=none; b=jDRwp1y+atdUZ0F3mpPKEruRDNcD/GhwaaLJdk3Cpx0pWF4lffFfpdLkluSt+D+yBJR5Y/ yv3NHwQsgtcvof9tBqkNofXREaPw9Dreqi1ISlfquvwhP7qYGRrPxgmP3IqaVelCSYTvy+ dcTcgKuuAmOYb6bFhikyvJWpC40mlU0= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1686902913; 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=Gr7a6v7Egyynk2whMDZ85Y4nh+6uiz4a8aewos3ecfU=; b=gkFy9TCRX3LlVJLQqhXksTodXeO1PaSoILFPldsnHua3655eTyG7kNb21ndQ7s206R1tbq KqOehCUcbedLcGdYL3Ht6+rlqcwFSpV0wWuRrhsF6a3J3DBSGtsCpNL6h5PLY7FHE50ex9 8tt20ct1N0/kOXwraBIoH76ooHdnPyU= Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-121-jF9V36y5M9mEh6QsAbLSFQ-1; Fri, 16 Jun 2023 04:08:29 -0400 X-MC-Unique: jF9V36y5M9mEh6QsAbLSFQ-1 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-30c6060eb32so520404f8f.1 for ; Fri, 16 Jun 2023 01:08:29 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686902908; x=1689494908; 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=Gr7a6v7Egyynk2whMDZ85Y4nh+6uiz4a8aewos3ecfU=; b=kzkbKhlf9GpO3C1MqZNgsmN2klnVvJMAn1bZWICiYoMBTXrtCgy9erQ3b/qRGzPful OP2PuiU3LQ9z4kyKmfKO8KlOZUTKJHbkWuJTGEHB1G5CD3+LpnyN3aIcEU0RrmqpDSLx FZRvkRo1HnmDlT/oihaf2AE72P9Okq4M7+9WdRsOEBYxYoaPcLHXTN0VX/8URKmwJWaO R9M9COU9Ri2QxE0kUqQuptZnekemCsHBg1pWIgOPDXENFAaLYsXx8c4Ttp5rFMfvzOa0 3bTe01/nA7HuCBhLy/2M+k7BIzpCtFw/iiajPWg0t36mL60Y1rgRKxkTYExW++7RbNU8 h7NQ== X-Gm-Message-State: AC+VfDwsAET5sGtcLTqPt9FtZBndsW/NVacry1EyriguBs8exwTVYy5I u1i3ncxivAK+LzJ3rKMvc4r9HK2NqHgCNfly868p1Fwng27NJZ/73AFzucW4/NgEnNWSlHl5YxZ v+W7taI2DXAA= X-Received: by 2002:adf:fe48:0:b0:311:1b34:a7c9 with SMTP id m8-20020adffe48000000b003111b34a7c9mr782842wrs.12.1686902908113; Fri, 16 Jun 2023 01:08:28 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7poTm3R+mJyphj8XV8uoLBMWM2wgwZ2t8vqhpRIMaOFweUpkhxLxpRt8sELV1wUja3WEGZ+Q== X-Received: by 2002:adf:fe48:0:b0:311:1b34:a7c9 with SMTP id m8-20020adffe48000000b003111b34a7c9mr782815wrs.12.1686902907698; Fri, 16 Jun 2023 01:08:27 -0700 (PDT) Received: from ?IPV6:2003:cb:c707:9800:59ba:1006:9052:fb40? (p200300cbc707980059ba10069052fb40.dip0.t-ipconnect.de. [2003:cb:c707:9800:59ba:1006:9052:fb40]) by smtp.gmail.com with ESMTPSA id a8-20020a5d5088000000b0030f9c3219aasm20732258wrt.47.2023.06.16.01.08.26 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 16 Jun 2023 01:08:27 -0700 (PDT) Message-ID: <9a4b168b-fb27-b4e4-94e9-5a2c1390aa2a@redhat.com> Date: Fri, 16 Jun 2023 10:08:26 +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 1/7] mm/hugetlb: Handle FOLL_DUMP well in follow_page_mask() To: Peter Xu , linux-kernel@vger.kernel.org, linux-mm@kvack.org Cc: Matthew Wilcox , Andrea Arcangeli , John Hubbard , Mike Rapoport , Vlastimil Babka , "Kirill A . Shutemov" , Andrew Morton , Mike Kravetz , James Houghton , Hugh Dickins References: <20230613215346.1022773-1-peterx@redhat.com> <20230613215346.1022773-2-peterx@redhat.com> From: David Hildenbrand Organization: Red Hat In-Reply-To: <20230613215346.1022773-2-peterx@redhat.com> 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-Stat-Signature: 6iyxswnqto7ddz6cdnxxnja5py81ndns X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 4217F1C0013 X-HE-Tag: 1686902914-490284 X-HE-Meta: U2FsdGVkX197K4pQONVdKS6C4VGoUeuRTkElwiexWZrmz4Mrux3VUrD1hnqi8b0xni631ocDNAu+nsCoLW09BK3MeMmPA2fwS4eYChvGna55ruQIyaY1nVv9sRZzZ4AXS3F0lLQy3hL1xk55QWZkXnEzDVz0CqHtWom5SOfCyD74GWkbOCwJR66EwaXa04Mk/kNwfX2EngjZBroenFeFiUy4sBkH46qad+8BZZky8oyWnMz7v94uTsj7CQxqdOX/b8+vT9ikj+LMoRRso4xnftuxqm3Ym3w0YgbCyNpbF6MeLfo9fcRbjmXDSotYqH5RFbrCvyo5oYxYFDCnxNxnQABVs0d2m7oIJ+mxEN1KSK5lt85PksnhcUV1Wfc7gbajq5T9pT5scuuLO80iGGiOB1Tp0iZzDGCno7VvxAnnRMzaotEVdeTI/Egy7aYqCOi6Mu8t+vehYhejz8qWtvb5NzKtBsBCJC+csCGwE0tZBV/aOI1XoJwxC7MxGZJJ/jYWbF1U150H5tdUn8q24OMeF8wU5o5+Nj8hWSRQ3fEpLgQnPgyju0JREuVXNFuKaK1T/I9AzsN0siicMKiyJDsNraeRwg5wVDBGXuiRZilJaJQFESN3DShW1v6Gmz26Bub8TLU8GZiMs6JTpe/UpLOkC8OxK8kKlf60i+JaS2qINQOJf8thzbOcwZRkUdEDxn1eGwjuLuHY3uN7w+2p9R2k22LptX/BxOAnQWArrIb0TL5crWpHaInlnMI3jPXy36qyq7bBdosFmrqSeyCqnTju10FS0bpFlbWq46+iMAelmmtfGck8HBJgt91sPKNZXeyFoD0aNFCNKeREvT5TdPl6xH0AqQ09yp6leaEull3Fem6m8t12/tmUHopWlgb8fDawiPc5i8nT2XolxIYwtIIPx+eUpszbRrNcQOtJpDHgHUPPBvqEu83bs+YHgApLODwlF/GmzoMI4TwmV1RJ+YZ 99x0L2pX 8Le6nwLgYPjzVEekZdvemIiV6NYH9j1uIQKWyFnVpVFLdKlTYLyDdPKYpFHu5nMvuPZjcU2zRxpvN7obb29MJiFzA3wK0KyuZBrtDhhHQTFdaegoRCU5O8fWkpwq2IENY9E8nDZGMRhxjZ/vdN8eHL2d1vd1yp3o0AcSPrFWYSRToBDFEFFtM1REw3x7d/8dmA6skPQE0Cs4VInWXfCOH38EH8YnQKiNDnPS3KMPR8/VM+bFdmo64Zs/1Pd54gUKfWUhVmIUd5cWUdCYXoGaicnd+Mtzvkg6/PGCphpcedpEaOV6zztDFtp5f93rYoLZPfdUW9BqZXmUwfJdLfJRh5QbdrhJdxuCCIa9K+48NaVaZRR6tLnPraP7fC5hLfqohM999OYfQ2fdEa3TVyDW0bDTRpVoknKLbQ1UD/Md4m4mVb9axJc4idRCsd3zpUoheZxIWxkVUN+qoBxg= 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 13.06.23 23:53, Peter Xu wrote: > Firstly, the no_page_table() is meaningless for hugetlb which is a no-op > there, because a hugetlb page always satisfies: > > - vma_is_anonymous() == false > - vma->vm_ops->fault != NULL > > So we can already safely remove it in hugetlb_follow_page_mask(), alongside > with the page* variable. > > Meanwhile, what we do in follow_hugetlb_page() actually makes sense for a > dump: we try to fault in the page only if the page cache is already > allocated. Let's do the same here for follow_page_mask() on hugetlb. > > It should so far has zero effect on real dumps, because that still goes > into follow_hugetlb_page(). But this may start to influence a bit on > follow_page() users who mimics a "dump page" scenario, but hopefully in a > good way. This also paves way for unifying the hugetlb gup-slow. > > Signed-off-by: Peter Xu > --- > mm/gup.c | 9 ++------- > mm/hugetlb.c | 9 +++++++++ > 2 files changed, 11 insertions(+), 7 deletions(-) > > diff --git a/mm/gup.c b/mm/gup.c > index dbe96d266670..aa0668505d61 100644 > --- a/mm/gup.c > +++ b/mm/gup.c > @@ -781,7 +781,6 @@ static struct page *follow_page_mask(struct vm_area_struct *vma, > struct follow_page_context *ctx) > { > pgd_t *pgd; > - struct page *page; > struct mm_struct *mm = vma->vm_mm; > > ctx->page_mask = 0; > @@ -794,12 +793,8 @@ static struct page *follow_page_mask(struct vm_area_struct *vma, > * hugetlb_follow_page_mask is only for follow_page() handling here. > * Ordinary GUP uses follow_hugetlb_page for hugetlb processing. > */ > - if (is_vm_hugetlb_page(vma)) { > - page = hugetlb_follow_page_mask(vma, address, flags); > - if (!page) > - page = no_page_table(vma, flags); > - return page; > - } > + if (is_vm_hugetlb_page(vma)) > + return hugetlb_follow_page_mask(vma, address, flags); > > pgd = pgd_offset(mm, address); > > diff --git a/mm/hugetlb.c b/mm/hugetlb.c > index 270ec0ecd5a1..82dfdd96db4c 100644 > --- a/mm/hugetlb.c > +++ b/mm/hugetlb.c > @@ -6501,6 +6501,15 @@ struct page *hugetlb_follow_page_mask(struct vm_area_struct *vma, > spin_unlock(ptl); > out_unlock: > hugetlb_vma_unlock_read(vma); > + > + /* > + * Fixup retval for dump requests: if pagecache doesn't exist, > + * don't try to allocate a new page but just skip it. > + */ > + if (!page && (flags & FOLL_DUMP) && > + !hugetlbfs_pagecache_present(h, vma, address)) > + page = ERR_PTR(-EFAULT); > + > return page; > } > Makes sense to me: Reviewed-by: David Hildenbrand -- Cheers, David / dhildenb