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 C5DA4C46467 for ; Tue, 10 Jan 2023 14:51:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2F11E8E0002; Tue, 10 Jan 2023 09:51:15 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 2A1178E0001; Tue, 10 Jan 2023 09:51:15 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1698D8E0002; Tue, 10 Jan 2023 09:51:15 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 08B698E0001 for ; Tue, 10 Jan 2023 09:51:15 -0500 (EST) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id CAB2B80D91 for ; Tue, 10 Jan 2023 14:51:14 +0000 (UTC) X-FDA: 80339177268.04.D83DF09 Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) by imf08.hostedemail.com (Postfix) with ESMTP id 356C6160011 for ; Tue, 10 Jan 2023 14:51:12 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=mcbpw9yV; spf=pass (imf08.hostedemail.com: domain of jthoughton@google.com designates 209.85.128.44 as permitted sender) smtp.mailfrom=jthoughton@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=1673362273; 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=muRPvoodtHXWL4NNIYk10Fq+4im2yIJuL90gKAD23Fo=; b=MKSay0TPqoga+gH8GcPvWsToHRs0OBazrRG3w9FcPMTAtVtMCQxOfEsbmotXusWF6itjyJ lse70+S9l7WiLPOCDovjuT45BR/Lik1IISsz55nSY/6Y0HszOfKELdEQIbDI1W1ttIkxWj A8UIypUJiJSVuokOVXP2aPe5knGHgUE= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=mcbpw9yV; spf=pass (imf08.hostedemail.com: domain of jthoughton@google.com designates 209.85.128.44 as permitted sender) smtp.mailfrom=jthoughton@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1673362273; a=rsa-sha256; cv=none; b=qNVawwsNgyMR6iWyi6cl/Nv39GClk+4P8zkQxd5g6YVCwMAPMa+IRe6sjUJ9wpn1tnKMrc deskQB+8V11VAg/WH1RSN8C1FixvlDp1IECWh3E4YoBxYVDStL+ih80GVtaamGwIWu8CqJ shs5bz19ky+V2wL1HdYofnJiHeW+vXo= Received: by mail-wm1-f44.google.com with SMTP id p3-20020a05600c1d8300b003d9ee5f125bso5584992wms.4 for ; Tue, 10 Jan 2023 06:51:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=muRPvoodtHXWL4NNIYk10Fq+4im2yIJuL90gKAD23Fo=; b=mcbpw9yVFKa2pKs33yjofN8fOHvlBpdccQJAlKL7ez+aiyuIx+eugxWQ+737C90Xqk 94lKTbMRxUCxdgv64bmONJ8O9xzmKja9V0uQZ7tLRjJytMve2/HMj6dvV1i+F6ViaTz7 rwNBEIiGdGHQbGa36FvsnGv2WoCw9tu/HMLK0kArZxC2r4KE6Cp9zA+FVqr/cCgHS6/0 daETULbrXIXK/8K0KdcRWnkFz5t9OppacT1Ba//AQBEKZyGqkIGnedHeRto8LCeLaDpT 1d656DHBQxKmoaNYQ5qpVzmkt12JDCaMI5AUHvMohdzRSVRwNZVXnhAnLvUXqktVzTv7 9NXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=muRPvoodtHXWL4NNIYk10Fq+4im2yIJuL90gKAD23Fo=; b=4wuYBa1aTog8iY+GpcgAUVkGQDsIs1w1MVSjckz8C+2RxU0MguG37YwjQTByiTnYYQ CrKSnFAgzkpM9IQd10sP7G6ZIgdS9xYLv5wnVld1mPnHP8lgygdzUG5rapudty9uEBCS puF4xMd0q8MFbq94PLjNlOFQ+EYOXfgZBtaKd4Y4x6GaMCvcTzZLvp/1AXSnUsgtvATl 3UbjM8On67fZRk43O/uUYjPv5cCSFqMi+G3nHQfF2OAn1rZPWuRZW54qyfxnlMHPMd2D 2Gcfmu51l2iDJHTRRE1I8v+ZFtsaSDf3lgnlfvMorbYLJ1dcd1rw8MMBICrmcytKXhDR 7DKg== X-Gm-Message-State: AFqh2koOqAvaosy0l7l3kl6+UmXZjFx6MGdMZCp/NYTQfsy2xARDDmFA 3q5oYlKOLhj0y7gCmYxTJgSVoeISU3+XD7z9taAxTA== X-Google-Smtp-Source: AMrXdXs4xy9xMIlVczjqZL2d+TSIfcJDWWQwF9xsndZPEJis6d+4cFr03Ck5XyKySBDlvnKM6yEO/8ClXSEvQXEa8ZQ= X-Received: by 2002:a05:600c:4c22:b0:3cf:f2aa:3dc2 with SMTP id d34-20020a05600c4c2200b003cff2aa3dc2mr3621686wmp.175.1673362271690; Tue, 10 Jan 2023 06:51:11 -0800 (PST) MIME-Version: 1.0 References: <20230105101844.1893104-1-jthoughton@google.com> <20230105101844.1893104-35-jthoughton@google.com> In-Reply-To: From: James Houghton Date: Tue, 10 Jan 2023 09:50:59 -0500 Message-ID: Subject: Re: [PATCH 34/46] hugetlb: userfaultfd: when using MADV_SPLIT, round addresses to PAGE_SIZE To: Peter Xu Cc: Mike Kravetz , Muchun Song , David Hildenbrand , David Rientjes , Axel Rasmussen , Mina Almasry , "Zach O'Keefe" , Manish Mishra , Naoya Horiguchi , "Dr . David Alan Gilbert" , "Matthew Wilcox (Oracle)" , Vlastimil Babka , Baolin Wang , Miaohe Lin , Yang Shi , Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 356C6160011 X-Rspam-User: X-Stat-Signature: tcikyjtsxc5abpim9ipekwjhgbqzyhe3 X-HE-Tag: 1673362272-485293 X-HE-Meta: U2FsdGVkX1+WHe9IBwb2+G79+IaVfkdjb1Ys363G7xFIQkF8PaMAzuSpYhQ7EmRg8GBV9w9a3IKm9XkGldtlSs4IXTejA9pgSN7YMjrchHqf/828yRpDLw9ntEHyDWVvIa21a4XllwwUQKsrUwFk20ENNKMUCSPRY4t3o1rfvG+H6LoUrzrXOsO6GgYI+0TKiBLmcPHRxDJGozkXOxvmwhuSULSp5ofyp7DlDlu2ozeDiROnBBz4DaokMiMoF1w0Yf4+S6H/iPWIXJWk/vpe70UxOki5Whz0kAzUYO5VhYz9ClwcclVMmoi0DyPK+zneujDFeDzOPomLgBlJfa+MU+87CXiO9lfcMxOFiFmq7C6f2gcEiRv1RMJAAg8VbAOcGd4J+JyrQRfjBftFgXt59TDMMCLWTE39DxCWWV1sXFXZUYxICseVWFoDuyamYFWlbpol/ww39H4BhUs5DNOxYca6S7N5FtXaCuiK2ZYfv0fzmdRh/saIRzNF0Dl2GscAPLpLBOKMGPEoiOfBDLpui5RZPSR/Mbagwdgb6Q+09jjpmOb9bawHI7dgdu4ZmohFBSgmMYMaCsYvXwoxI/Y+Yy4ZeuEaXhdHOQfDSSz/Fg3snJt691nDNVtU8IjamHGVPx0zi7crQL3XxvAZFcAc6NSc+rDBxvnpkBmxAenVSg/pj7emnNVzdvXncxb+nrlWdc3PH6zoLpLfywD1hgoWZsvyQBPZW5xWQdUVN5J3x8MsuZoMjxJ6Igo1YSEoxJ/mfwwjJiVwN4shOyg6+7/1N4XHHg+luY9ZVJ3eu/hjpx1NwlvbFlUA7H49ayh4ZeDoEx0JHQkqLNKmrSloMrQnADONTxutOyCYdMBw2Lzt3EEu7E5pG9yj21v/xQPIuKNUBuqnaTCxVEYc6ei0mVKr/Xfg8jMha2E0ehlj2RZbMnKFlmHeJXeW8UMrRWFsRExZzjDsTTyGDgCTsxGCW1b IApWvUQA bOKaxwYKjT3f1SkMOLHN4vtd2RXQVyVLtArP8Zmbpd/fa4WMOyTdCaUs+8Q== 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 Fri, Jan 6, 2023 at 10:13 AM Peter Xu wrote: > > On Thu, Jan 05, 2023 at 10:18:32AM +0000, James Houghton wrote: > > MADV_SPLIT enables HugeTLB HGM which allows for UFFDIO_CONTINUE in > > PAGE_SIZE chunks. If a huge-page-aligned address were to be provided, > > userspace would be completely unable to take advantage of HGM. That > > would then require userspace to know to provide > > UFFD_FEATURE_EXACT_ADDRESS. > > > > This patch would make it harder to make a mistake. Instead of requiring > > userspace to provide UFFD_FEATURE_EXACT_ADDRESS, always provide a usabl= e > > address. > > > > Signed-off-by: James Houghton > > --- > > mm/hugetlb.c | 31 +++++++++++++++---------------- > > 1 file changed, 15 insertions(+), 16 deletions(-) > > > > diff --git a/mm/hugetlb.c b/mm/hugetlb.c > > index 5af6db52f34e..5b6215e03fe1 100644 > > --- a/mm/hugetlb.c > > +++ b/mm/hugetlb.c > > @@ -5936,28 +5936,27 @@ static inline vm_fault_t hugetlb_handle_userfau= lt(struct vm_area_struct *vma, > > unsigned long addr, > > unsigned long reason) > > { > > + u32 hash; > > + struct vm_fault vmf; > > + > > /* > > * Don't use the hpage-aligned address if the user has explicitly > > * enabled HGM. > > */ > > if (hugetlb_hgm_advised(vma) && reason =3D=3D VM_UFFD_MINOR) > > - haddr =3D address & PAGE_MASK; > > - > > - u32 hash; > > - struct vm_fault vmf =3D { > > - .vma =3D vma, > > - .address =3D haddr, > > - .real_address =3D addr, > > - .flags =3D flags, > > + haddr =3D addr & PAGE_MASK; > > > > - /* > > - * Hard to debug if it ends up being > > - * used by a callee that assumes > > - * something about the other > > - * uninitialized fields... same as in > > - * memory.c > > - */ > > - }; > > + vmf.vma =3D vma; > > + vmf.address =3D haddr; > > + vmf.real_address =3D addr; > > + vmf.flags =3D flags; > > Const fields here: > > mm/hugetlb.c: In function =E2=80=98hugetlb_handle_userfault=E2=80=99: > mm/hugetlb.c:5961:17: error: assignment of member =E2=80=98vma=E2=80=99 i= n read-only object > 5961 | vmf.vma =3D vma; > | ^ > mm/hugetlb.c:5962:21: error: assignment of member =E2=80=98address=E2=80= =99 in read-only object > 5962 | vmf.address =3D haddr; > | ^ > mm/hugetlb.c:5963:26: error: assignment of member =E2=80=98real_address= =E2=80=99 in read-only object > 5963 | vmf.real_address =3D addr; Thanks Peter for this and your other findings. Not sure why my compiler (clang) let me do this. :/ Will send a v2 soon with this + the other problems fixed.