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 8146FC25B75 for ; Mon, 3 Jun 2024 21:01:00 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E9C5A6B008C; Mon, 3 Jun 2024 17:00:59 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E4CC56B0092; Mon, 3 Jun 2024 17:00:59 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D149C6B0095; Mon, 3 Jun 2024 17:00:59 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id B54D06B008C for ; Mon, 3 Jun 2024 17:00:59 -0400 (EDT) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 709D6A2287 for ; Mon, 3 Jun 2024 21:00:59 +0000 (UTC) X-FDA: 82190797038.02.68579BA Received: from mail-vs1-f50.google.com (mail-vs1-f50.google.com [209.85.217.50]) by imf14.hostedemail.com (Postfix) with ESMTP id 95E85100015 for ; Mon, 3 Jun 2024 21:00:57 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=StQCBdzV; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf14.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.217.50 as permitted sender) smtp.mailfrom=21cnbao@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1717448457; 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=Tl/tLmHUxVE8PR415A8/Y/rCk+YfJ+4K/h4oejfCHnM=; b=uftXowdHVlb42aR6G5CwdN8uzFM/r72sToJZTX7DKsMUq6oFwr9jYRZvWm0eIrpj7HBTt3 R4KhJ5ATNFt65e7gxh8A2hdSnmOS9yU/mRew/cRy1KwsN05gOyVImZJKzWJGjpzE/dVHSd VDW7kzWCoim088OyjyiDWuJCLQt4ugo= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=StQCBdzV; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf14.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.217.50 as permitted sender) smtp.mailfrom=21cnbao@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1717448457; a=rsa-sha256; cv=none; b=yPLVXKuWtIMJS2tJgq4cxAmS4tx62ydAVcwjDCfCz58sJpeBA/AomHgZs5R3p1LaK5w39f lyChacBb4UAIl3DHBH3cm1I7EG+owEVLwVt1fNDWbyh+rMMZK5KVVrqILewqvDc0sc2lJk +3HqOwctBpS2/LNEmFH8CIJs9AD6siw= Received: by mail-vs1-f50.google.com with SMTP id ada2fe7eead31-48bd4cefe5cso521585137.0 for ; Mon, 03 Jun 2024 14:00:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717448456; x=1718053256; darn=kvack.org; 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=Tl/tLmHUxVE8PR415A8/Y/rCk+YfJ+4K/h4oejfCHnM=; b=StQCBdzVv8i44b79JjjgjOQpzx0rC1y2/OqxhpbPNM5NK47g90niciB7SEslseifPV caSHP8hli6WVq1zVeOxKfm/1YBvvqgIikaeyNtnI9UcWB2UWPDM23Q0jVA6ImD8GRQfj 6p9OuVRJ+Okf7oLFqdfiDd4mZMmGfnxOAD5MbIskn/SaYjigUd+vQs3A6fBwB2zQqgMW mFMPvftDKD2YNXqu1JV1ZxyrCIVxTAVo61Z+6Z2wJdCtsw5+Lw/3kARb09gCYkDVxWG7 uIYkRUCOdLuJ5K94WGEsU6nSCvS6TwwoTemjej/UFT6KAjZclE1UzIb90HqVZdS/FmnZ SjXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717448456; x=1718053256; 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=Tl/tLmHUxVE8PR415A8/Y/rCk+YfJ+4K/h4oejfCHnM=; b=UkssxRcwxOiUexGTmyfnejydJ8YmLodMgMD1Jv16CTUhrIv2npKh0zguo/hqrTtY27 57l1kJvj6dw380V+VYtD6vCEnqmVthh7ZnughuffZG4X/z267yNnk1dEvFazTMnSMFO/ tLlNNKjmIcOaAATAEcGxnmfrt/A7DzMlVUFci99uPHLf6yvuDXPSZdkMWuBNAIFtUqtJ 45M5z4D4rAQDZET51aLHy/snB19WBE10i69EqkqJnTKV32CnDfust+ftJfcMCj/5cgwC LqR3O8bdHrELmDELJ/mV3OAXLRC23XwkGpvDcNSeQHOzReeQIsUFnvZM4DY1UwaYY4z8 TxNA== X-Forwarded-Encrypted: i=1; AJvYcCVkYVJZg9DtrwCpEBaSkXXkEf1xTj5tkWO18szJvX1pfLBLV33GX/0cdNFqcHjA6hwJisUIKvLsLLng2vK847dmYDw= X-Gm-Message-State: AOJu0YznGrQqECStbxBqccajAF3+iZVEWL8V9Ql9zKvlHd7C4qUwjRkH YRWRK1krwxARPn70qSnYkilsQJ9R69PbRMeqm6/o99tKQxY0N1eoBRlHoP8cxJt2te1UDqxQR85 TlS836dyweGgxnzjsAdQY4cRQKRk= X-Google-Smtp-Source: AGHT+IEvPvzqYmJeRojd3qT1NEMLMX0goTyVSSdJMab9ylacn0zwvrUz4LBErlIDXHllCWdHfZSGyURC/rJZWCEeVWc= X-Received: by 2002:a67:fa03:0:b0:48b:abba:5d8f with SMTP id ada2fe7eead31-48bc211f15cmr10267933137.19.1717448456522; Mon, 03 Jun 2024 14:00:56 -0700 (PDT) MIME-Version: 1.0 References: <20240603140745.83880-1-ioworker0@gmail.com> In-Reply-To: From: Barry Song <21cnbao@gmail.com> Date: Tue, 4 Jun 2024 09:00:45 +1200 Message-ID: Subject: Re: [PATCH v2 1/1] mm/mlock: implement folio_mlock_step() using folio_pte_batch() To: Lance Yang Cc: David Hildenbrand , Matthew Wilcox , akpm@linux-foundation.org, ryan.roberts@arm.com, baolin.wang@linux.alibaba.com, ziy@nvidia.com, fengwei.yin@intel.com, ying.huang@intel.com, libang.li@antgroup.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 95E85100015 X-Stat-Signature: yji3sowo48aotzj3wwx7iiesj5ism7wu X-Rspam-User: X-Rspamd-Server: rspam11 X-HE-Tag: 1717448457-762175 X-HE-Meta: U2FsdGVkX1+srQw2zsCOSEBIHaT65gJ6+MSCAql7W6wOZFkZYVg/18SJvVR1FRhbn94l1y1pauYu9FnqAC6wBvMaXnaAvp78LFWF1cgUfHgaVAR7aY1hAViVIQXxO8Ru8j3HcYWtkAxbgHxT4L0tS/pEYWzZDA6suj3zWuqB6bIdoOVgNasq8qJ//cXvLgUSEx2gmuBrXlAR84qXd/XH8BFdMSdzXhtBdOVP27JSVVoPZZ/PUSlRYTyW6RQFovxHH0VFP9qSIcO7dKzovZiN4Oz4XSdcDIXEn8bzZKY5HD6xlS0HwRYZV0eW7iKUrFrGxd9x4z8jc7Vbe4Vx8fbfYbraE9oE+rU3NCl7VWKM5sXdEhFGcsCK9NDtiplv0c/Rm3qQZ98jf4trJfOw/fOB1uOm/Ty0Sfp1inSZVb7+Rl/jUNky/hEF7BPfTSY4oVteMPjDgPAw5WKMHCz7L9i5Kr1nqQjlZqR4rBIfbm76fHvAScLbkeRkbTb26oL7XmudVqn9bbtlW39DZKw9w6JLUWNLu+gdFPgLTQ/R+7ULeljbWSEDry6IkN+yEc0xqsWqqH0v1fY9U057h/K8V1K/KH+jwVFjNCEqXOBiVP12tgvrUVo3FexnoGWxiDw9xJ2LE5xRgxURxLdFKY7I6LCxG5KiRVnwPpzlm7zTFyVKQARlK+hQNgA0/yC9GuLypvWl7IAfHQEUeKxx5j6rh10a790RVjgK7prPF1gFIoCgzwGHARdr+ZlYiJL1eW0/BKLKmzsksFH9FIOX5ciSEaVQ6hdcR4odYWoCPTJtM2U0viDTI7E6irNo5BF0yMLq274UTJGYIZSxXR/WBR08Nu+LLuUpil5RAiL8P7Glzt/3AtFNaZorGw1swA8BHI9byyWUSzVkdRmTagcdOHdMYjAMCZR3BpDMDFxEokSj+bisogzkh637ldgvT7qMy3mrOyPAn0Xiwfux1l/22mJf2oK N5Eb16MZ yFHGfwOx6fMVQOxuPUJdn9XjNuMqXE85Qa2WLHf+EXYkhWgpElk7BzZur29LOnkqvR/NOa/Ghh/9IzqzfCTpIT4u0q0Poqr0XQa83E6URAXNpfoggc14DjBR2cwi1l+yJrW7Hm/Xp2FV/DBixQYdjqZocVuMhXYGVtQBbdo4CUJf0UUdPIt0ieDBNnFiJtVQLAxsOSYWUQ3rzGzYiQQBoVecScNev/upnBvuiP3sWS2eUCr6wI+pSdkLpE521NNng8UTJaiadjgxTAv0qm1Og6+7mb/ij5tu0dBrBQJyLjAVuqQZ762LwFCjKDiN4UqYuX1oDn1QQ7Q6BLc1ajvHJ4m4DLlk++G8N8wi8SESsEzzxdSu2xTsR9NHRsoS2obVlbUInQ+ZU3OImWpku6xA5J0hc959DsLOGofS/wMtk5kNaoyFW9NTiBoXtBQa/ZOsg0PWk 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: List-Subscribe: List-Unsubscribe: On Tue, Jun 4, 2024 at 3:46=E2=80=AFAM Lance Yang wro= te: > > On Mon, Jun 3, 2024 at 11:26=E2=80=AFPM David Hildenbrand wrote: > > > > On 03.06.24 17:01, Matthew Wilcox wrote: > > > On Mon, Jun 03, 2024 at 04:56:05PM +0200, David Hildenbrand wrote: > > >> On 03.06.24 16:43, Matthew Wilcox wrote: > > >>> On Mon, Jun 03, 2024 at 10:07:45PM +0800, Lance Yang wrote: > > >>>> +++ b/mm/mlock.c > > >>>> @@ -307,26 +307,15 @@ void munlock_folio(struct folio *folio) > > >>>> static inline unsigned int folio_mlock_step(struct folio *folio= , > > >>>> pte_t *pte, unsigned long addr, unsigned long e= nd) > > >>>> { > > >>>> - unsigned int count, i, nr =3D folio_nr_pages(folio); > > >>>> - unsigned long pfn =3D folio_pfn(folio); > > >>>> + const fpb_t fpb_flags =3D FPB_IGNORE_DIRTY | FPB_IGNORE_SOFT_DI= RTY; > > >>>> + unsigned int count =3D (end - addr) >> PAGE_SHIFT; > > >>> > > >>> This is a pre-existing bug, but ... what happens if you're on a 64-= bit > > >>> system and you mlock() a range that is exactly 2^44 bytes? Seems t= o me > > >>> that count becomes 0. Why not use an unsigned long here and avoid = the > > >>> problem entirely? > > >>> > > >>> folio_pte_batch() also needs to take an unsigned long max_nr in tha= t > > >>> case, because you aren't restricting it to folio_nr_pages(). > > >> > > >> Yeah, likely we should also take a look at other folio_pte_batch() u= sers > > >> like copy_present_ptes() that pass the count as an int. Nothing shou= ld > > >> really be broken, but we might not batch as much as we could, which = is > > >> unfortunate. > > > > > > You did include: > > > > > > VM_WARN_ON_FOLIO(!folio_test_large(folio) || max_nr < 1, fol= io); > > > > > > so at the least we have a userspace-triggerable warning. > > > > Yes, and max_nr =3D=3D 0 would likely not be healthy to the system. > > > > But > > > > For copy_pte_range(), zap_pte_range() and the madvise users, we should > > always have: > > next =3D pmd_addr_end(addr, end); > > > > and use "next" as the actual "end" -- not the VMA end. So "end - addr" = =3D > > "next - addr" should never exceed a single PMD size. > > > > > > mlock_pte_range() is also called from walk_page_range(), which uses > > next =3D pmd_addr_end(addr, end); > > > > So likely exceeding PMD size is not possible here and all is working as > > expected. > > Thanks for clarifying! > > I agree that currently all is fine, so perhaps we don't worry about that = :) I agree with this point. These functions are all scanning PTEs under a PMD. Any value exceeding the PTE entries of one PMD has been a bug of callers but not the callee. > > > > > Will double check later. > > I did a double-check and you're correct. > > Thanks, > Lance > > > > > -- > > Cheers, > > > > David / dhildenb > > Thanks Barry