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 1111FD68B02 for ; Thu, 14 Nov 2024 12:51:43 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 82CFF6B0083; Thu, 14 Nov 2024 07:51:43 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 7DC796B0085; Thu, 14 Nov 2024 07:51:43 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6A3FE6B0088; Thu, 14 Nov 2024 07:51:43 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 4C3836B0083 for ; Thu, 14 Nov 2024 07:51:43 -0500 (EST) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id EEC6040952 for ; Thu, 14 Nov 2024 12:51:42 +0000 (UTC) X-FDA: 82784684220.20.6294FB9 Received: from mail-pf1-f172.google.com (mail-pf1-f172.google.com [209.85.210.172]) by imf01.hostedemail.com (Postfix) with ESMTP id 48A7D40017 for ; Thu, 14 Nov 2024 12:51:04 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=MOuYr5Gj; dmarc=pass (policy=quarantine) header.from=bytedance.com; spf=pass (imf01.hostedemail.com: domain of zhengqi.arch@bytedance.com designates 209.85.210.172 as permitted sender) smtp.mailfrom=zhengqi.arch@bytedance.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1731588613; 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=ZC5INDeabHnT71NmEDIa3Mv0iVBAAHNk77rjOFhIaNw=; b=vQOrg78hUKE/AWrSipn3+nb98XyLWN1kmBTrsSJR0PpnndsDAgqaw9gK6tZUjWQ6AuvPLw ZrMjKcUvf+eMFmdqsRWmf6mKIE4/YN9SlT/7KOAFS6WSyaAnbu0d72nEk2Qa3Q0nTX9sUB oJhYCQDgn7IgQM2BIbyFSlEM6BPDVM8= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=MOuYr5Gj; dmarc=pass (policy=quarantine) header.from=bytedance.com; spf=pass (imf01.hostedemail.com: domain of zhengqi.arch@bytedance.com designates 209.85.210.172 as permitted sender) smtp.mailfrom=zhengqi.arch@bytedance.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1731588613; a=rsa-sha256; cv=none; b=05hQKDfaAPA8D2wo2UqYErGQwczrPbg6vAjdgwLmBGnFmb4p4nNkUuigR7clUDl2KnL7pY rOumvhf2ilEtVKykjgFEXAhCCzLawpQb+cOv0otxiU8c/DeN+qdtOr1WW4ZXFpdRIV7Obu 6LBrMp95FaEnyuRAUjj9aS17W63Sncw= Received: by mail-pf1-f172.google.com with SMTP id d2e1a72fcca58-71e592d7f6eso369353b3a.3 for ; Thu, 14 Nov 2024 04:51:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1731588697; x=1732193497; darn=kvack.org; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=ZC5INDeabHnT71NmEDIa3Mv0iVBAAHNk77rjOFhIaNw=; b=MOuYr5Gj5hkJWKBVKZkX5+wtEZh+XFX1jsr08xp/6nI9g60bnVPhLcSswvkwLfGZs/ oEApiYPP3xyMHHTDYiMhBg+vuWDDovcaaVUE/kOhamNbMOB4ItCEgxNgZ0QzfDFd78l6 9mkN8Uj5Ph16f0exywmneMUlOCtfCKTxBdWUHbGr/JyqT8fI8QofefHzNokXM5ivdYK3 PY5Ldp624u/A46k9LfMrRQv8ZL1sbCuXSl3Co15TFnzJjSKReHsg9+9LhgsXbi3PBizj cGjccTU5QB8Jl0aAp6ptvVZ0K0lLPHRLzokILb3WN1pthOE7OmZGUBlgQjL2Xlvx1Ds2 r2Ng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1731588697; x=1732193497; h=content-transfer-encoding:in-reply-to: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=ZC5INDeabHnT71NmEDIa3Mv0iVBAAHNk77rjOFhIaNw=; b=s4rzDcoEVf8iKViBscOjVGEZKTFosD800juthHpwJlVdohkBWfF1iDjNITaUjTfk9t Gvj6Pj0kGjFK6tdTXqiiv5fPyGowRxfS4hPo5tkB4uzAUPVB3WLkXqRVZ5hOjV+LFmnX c+HViZP+71dXJKL+y6BEALaFuoc95iAbM/nI8e3wMjGlZ1G9i5EdSQiM8n/cuwRtnhty Xm8PJl9wrwDYq3+NUR9RRqtV4EpL8+kcob4Wi4ZrF69VDRQHMik4sxAGuQu407/Kgzpx t6esIicINMd8Fq1uX1segCWlHuXcV5SMCKf8r07OvUeoJglD5QKVtifg/DUFOKOufQd6 Cb/A== X-Forwarded-Encrypted: i=1; AJvYcCVFhRJpLFK3Y1nF2FMkEc4zVNE5XnuH+8RkR2eo3ljNvQPFAhS/mOODg6xJ7uSgWoYpTHFf2dUWpg==@kvack.org X-Gm-Message-State: AOJu0Yw0WQuDfTFzJaHbQFgg9XYfDxuFwQpH//GYoY68G1zrqSlLql91 2zljUQH4K6UGZuITqqpoaWEVGRPQRrLed0X8apYEHJAjcgO5O5MFderBu0Qczbk= X-Google-Smtp-Source: AGHT+IE6YNcQajPHmUZtx2yiT0fJOw3M/4hiatkcBJRSA6HMdKocYS46njw84M/KfuTqyRFvYDdTaw== X-Received: by 2002:a05:6a00:3d52:b0:71e:3b51:e850 with SMTP id d2e1a72fcca58-72469c5e105mr2873394b3a.2.1731588696726; Thu, 14 Nov 2024 04:51:36 -0800 (PST) Received: from [10.84.149.95] ([63.216.146.178]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7246a9bf773sm1155490b3a.159.2024.11.14.04.51.30 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 14 Nov 2024 04:51:36 -0800 (PST) Message-ID: Date: Thu, 14 Nov 2024 20:51:27 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v3 4/9] mm: introduce skip_none_ptes() Content-Language: en-US To: David Hildenbrand Cc: jannh@google.com, hughd@google.com, willy@infradead.org, muchun.song@linux.dev, vbabka@kernel.org, akpm@linux-foundation.org, peterx@redhat.com, mgorman@suse.de, catalin.marinas@arm.com, will@kernel.org, dave.hansen@linux.intel.com, luto@kernel.org, peterz@infradead.org, x86@kernel.org, lorenzo.stoakes@oracle.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, zokeefe@google.com, rientjes@google.com References: <574bc9b646c87d878a5048edb63698a1f8483e10.1731566457.git.zhengqi.arch@bytedance.com> <617a063e-bd84-4da5-acf4-6ff516512055@bytedance.com> From: Qi Zheng In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 48A7D40017 X-Stat-Signature: r785aco49hn19dtjaq9ymq7wqmyd1php X-HE-Tag: 1731588664-684137 X-HE-Meta: U2FsdGVkX19AvJjapASzF6oSbEPH31gaF5MrFzcEgYgl6yYr97DfCZr5/Ou8EpmB6tANsM7TIDYctDtyC9QBBExOU7NYgM4GF9aqIuovAYG5So5cZ4/IXv7W1/XgbM9xu3JFCcKqyXNYTe7uS8bO4sh+yqRT2jfLHyhjmAOBzgrmzBYVZ3hN8x7eBLL99eDyMRD2vNryFB/7k+P2muVaIuSezE0uDjYZFWtpdqIkV4OWr0HcAvV6kwfvSYJ+1/BOK8S+c6OLOMzb09VhudXKjnKQBQPQXhgiWX3+4oB/2zsT1jef7iVG+FjTVXejeu40I33m6bsjQHdF2b6PIMC+95nu1efC2GOa6Uc9Pn9D/uBoLy0Mqj5ksmJgJP2FDqhAbSvw86BUrqFwitsGLOjvldyC4xWTsd8KZeK/EbeFPmRvv1qgESBLiauCmjPNmRJ8ZplycRTxRDoFsjCrpENCQS+pSSSKtoqFxsbv8HNeZL+CK6Xq/CpLbBrOGJM+PxmF7sxsWatAK1G1jHM4NgJh7+8UJi1a1wRxfnALQsrcJxv9oeysbkYKjTWAlM44FnmzbejCXD01PILrEXXvAinGWOjXwnPmQMypTr+iaihzTC8rdRL3GO2ocS6jZBgYDPQYLnCr8srsPZZQsNeusMqLsBt/cXxamGuyPJUD2YPMTSbv43hDaejnFuuBVPqbSR0ymlzqznsMhg35alMtvAZbWn9vvXKfOZyoB/YRb0tYOQ1z1SHpO80JJor/HtyVMLhiCs2Z/6/egOSxf7012B7nnYR98DgXxi1vfKBfNZdOyZFAEUV/G/SZ6dg5bPHCbp2g53kVuzr0eNf4Qy2Mh8qz2afn/+McFD5DT06lk4AYSmmY2+ulB+C/CC0WCjlM5M+BszSC7D1YeZDGQa+gYJoMvRF70k0PfbIY/L1xAS9YYuIS7UOK6PFvs3YtTdG6WsUhhOmLp2yXZaazwSXrb8E znNhFzM9 kPfTfK2eaBud42hOLZrdtQJXZsDTn/51i//vfLV45hd9ZRAbuY0EhQCHXg3hknNfxQlK3YSxDU9SW5pnqGouMB1jzxEfSKyX5zeILgdsW8Qw/NYqDuwx8s2a1l+Ohpv7TTtTIr/HXn4llljfP/Xvbtq9AYEQOLi4YmSqn4m7v+lE3aI83HsMtWeINjiB6N6+PF+ZCRVhZuzu4WCSXYAM3iryoGfJESlVBPzyzjkv1sOIBXQzIJV3YKl8zrlFPL1/p0cp+NhyKxffsLtx+DxRybyDh8f96PQBjQy73ImKOMCPmT90lV0Llt+jjh8zYwPOeKBkz32ddMcjpf4gXmmxmpQUC6DpM+F5+0Yham/6ISOx8ovQ0AJKFLvHFyaQvRHZAd1uHTRgnMQpj54FwFXAXjmOSDw== 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 2024/11/14 20:32, David Hildenbrand wrote: > On 14.11.24 10:20, Qi Zheng wrote: >> >> >> On 2024/11/14 16:04, David Hildenbrand wrote: >>> >>>>    static unsigned long zap_pte_range(struct mmu_gather *tlb, >>>>                    struct vm_area_struct *vma, pmd_t *pmd, >>>>                    unsigned long addr, unsigned long end, >>>> @@ -1682,13 +1704,17 @@ static unsigned long zap_pte_range(struct >>>> mmu_gather *tlb, >>>>            pte_t ptent = ptep_get(pte); >>>>            int max_nr; >>>> -        nr = 1; >>>> -        if (pte_none(ptent)) >>>> -            continue; >>>> - >>>>            if (need_resched()) >>>>                break; >>>> +        nr = skip_none_ptes(pte, addr, end); >>>> +        if (nr) { >>>> +            addr += PAGE_SIZE * nr; >>>> +            if (addr == end) >>>> +                break; >>>> +            pte += nr; >>>> +        } >>>> + >>>>            max_nr = (end - addr) / PAGE_SIZE; >>> >>> I dislike calculating max_nr twice, once here and once in skip_non_ptes. >>> >>> Further, you're missing to update ptent here. >> >> Oh, my bad. However, with [PATCH v3 5/9], there will be no problem, but >> there are still two ptep_get() and max_nr calculation. >> >> If you inline it you can >>> avoid another ptep_get(). >> >> Do you mean to inline the skip_none_ptes() into do_zap_pte_range()? > > Effectively moving this patch after #5, and have it be something like: > > diff --git a/mm/memory.c b/mm/memory.c > index 1949f5e0fece5..4f5d1e4c6688e 100644 > --- a/mm/memory.c > +++ b/mm/memory.c > @@ -1667,8 +1667,21 @@ static inline int do_zap_pte_range(struct > mmu_gather *tlb, >         pte_t ptent = ptep_get(pte); >         int max_nr = (end - addr) / PAGE_SIZE; > > -       if (pte_none(ptent)) > -               return 1; > +       /* Skip all consecutive pte_none(). */ > +       if (pte_none(ptent)) { > +               int nr; > + > +               for (nr = 1; nr < max_nr; nr++) { > +                       ptent = ptep_get(pte + nr); > +                       if (!pte_none(ptent)) > +                               break; > +               } > +               max_nr -= nr; > +               if (!max_nr) > +                       return nr; > +               pte += nr; > +               addr += nr * PAGE_SIZE; > +       } > >         if (pte_present(ptent)) >                 return zap_present_ptes(tlb, vma, pte, ptent, max_nr, > > > In the context of this patch this makes most sense. > > Regarding "count_pte_none" comment, I assume you talk about patch #7. Yes. > > Can't you simply return the number of pte_none that you skipped here > using another > input variable, if really required? Suppose we add an input variable nr_skip to do_zap_pte_range(), you mean to return the above nr to zap_pte_range() through: *nr_skip = nr; and then: zap_pte_range --> nr = do_zap_pte_range(tlb, vma, pte, addr, end, details, &skip_nr, rss, &force_flush, &force_break); if (can_reclaim_pt) { none_nr += count_pte_none(pte, nr); none_nr += nr_skip; } Right? >