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 18CFAC6FD1F for ; Wed, 20 Mar 2024 13:57:29 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 48BF36B0082; Wed, 20 Mar 2024 09:57:28 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 43B826B0085; Wed, 20 Mar 2024 09:57:28 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 32A936B0088; Wed, 20 Mar 2024 09:57:28 -0400 (EDT) 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 206616B0082 for ; Wed, 20 Mar 2024 09:57:28 -0400 (EDT) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id D9BC280F6B for ; Wed, 20 Mar 2024 13:57:27 +0000 (UTC) X-FDA: 81917569734.07.F86C6E6 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf14.hostedemail.com (Postfix) with ESMTP id 17EE7100005 for ; Wed, 20 Mar 2024 13:57:25 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=none; spf=pass (imf14.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com; dmarc=pass (policy=none) header.from=arm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1710943046; a=rsa-sha256; cv=none; b=qnXfYC6O+BEp8eCKfBOshv0CIByyelIpsfKzkYUi7q586uJCo3vzp+7XVR5mIbbg3H2vki hbgfRKMDCPJux+tt5KmZ0AAfR1b/J5JA7YY09GTW2Rq2kpm8fYkVW4PYzWiyYvXETzWfCO p90c7pli8wmTrpdqvJdjNYYIemf+BGc= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=none; spf=pass (imf14.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com; dmarc=pass (policy=none) header.from=arm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1710943046; 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; bh=UsnWJnv4PHU0fEyJ7dCOOBwqvNw/0qXbGlKQbnDQ2l0=; b=H7A9VY1Blb8Kb7BXOx4cEgiaHSS1sKafA9y5HmAuhYZVzSpvggJRNNgSkNF6p1FCbnsCOz jxTzyQdU27zGdnnGRFz6dH0r2phOZEPZnICRiSO6i12itgtxZ8jJdnoNKlkU6uLyuAMgEY BNds3/Ai9jf6AMtVP4g1e7rsu8B9PBo= Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id C7C3A1007; Wed, 20 Mar 2024 06:57:59 -0700 (PDT) Received: from [10.57.72.78] (unknown [10.57.72.78]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 3C1B83F64C; Wed, 20 Mar 2024 06:57:22 -0700 (PDT) Message-ID: <9ce7b66f-f84e-4e94-863c-2f02dcff4bd3@arm.com> Date: Wed, 20 Mar 2024 13:57:21 +0000 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v4 6/6] mm: madvise: Avoid split during MADV_PAGEOUT and MADV_COLD Content-Language: en-GB To: David Hildenbrand , Andrew Morton , Matthew Wilcox , Huang Ying , Gao Xiang , Yu Zhao , Yang Shi , Michal Hocko , Kefeng Wang , Barry Song <21cnbao@gmail.com>, Chris Li Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org References: <20240311150058.1122862-1-ryan.roberts@arm.com> <20240311150058.1122862-7-ryan.roberts@arm.com> From: Ryan Roberts In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 17EE7100005 X-Stat-Signature: 3gpyrdwr6xuffsdpkbxf1utsrw1dda1t X-HE-Tag: 1710943045-61372 X-HE-Meta: U2FsdGVkX1/wiEBaDgFF+V2UolmBH5AJkLwI5hFlWrDjyqMHMLkqnn5s09LncFtGPzrNDhk7qeM6nAQ05axAjnQ5FC3QPx/fTMqlyq4d8F+QAY9oerS0yy3aw6xIgE02Brl9ni83KzRuseK0L67cI5zYO6tYPDSXhEPimeoIi8Ye51WsGnGMtb6hIqSI/GdOA7SJupoxaq/ROFtpIoX6La/hLTeX6cXOpRus3Lq9WAyagAp76w+93+qfAc+UUIkVN7qcqWUZF92DPCthsiRfxKQymfsm3yjJPYVhdohz5184ZADoF6kz/Mzm+8Pcw5g5JVQ9gAmBTYTlmhOQJrhO5XgJGO42x/aixgw+0ooC19a+9hQ11G9ObUPkjh2FOstTYQ7l97pSA60Kmh/B5Q0E+B38d7IDpvjz2XTFw8TKFzLSCN+22GWO5U6+Yio0dpssk5YaeaSBVhB034NbtD6sN5/levEJ9gRsjzptEhEBVCqmvV2V81yOUxEXrMCU9lfPC1d74ixzzuvF67cyNeXzA+T2L+J0vaV+ye/x6EEt38nVd1S+UBGRZ9nAi18DNig5auWsoeJGGC5F+g9424I9xVnvWgjfE9BKYpWafwipTrSEQdNtgiGlMkMsHfFPRTXmIn2OHdaGsebe77imsN8OiTQMZnLwlePWXLiH0MxYZka2uNzQe8mSQxMGuhMGmC8TI9Wd6iCdLuVD+YJFBdcA/XWQu0DN7VigfiH5WdiInhxCwTqdv/n0PXYVEPiBrdkjHu2Jl4MK6hTp4JopP5dpiaxLQiWwQ12LhwFqDBHzo98+RJFg3M27rPNOlQtfP4spkwHaluPFo3JoqAXZIY2WQ4QqPBl7Ti0pOSqFQliUnGfJKQq2OEbKDokMeeruk+O5uwWMtr7BFiTahMSNqZvza1pLeJtk4GOy1pwySqcDjDlzCmxLAnfbygeicYYEGO0iPuuxKOdsEShccO5s0Mm kBOXjwJ7 u4V3399RkFb9Xs1qApeY+KIfVlqTLaftuECY48LcCg8MtJ7SLtCJyWG9tDtCtFP2D9i2YGZh8L9KC+BnrHcVKI4YFU+3SkZifX9pn/SUDYFlt8HD6Mty5g8p8OJ5LydCQPbWp7i6wtk1wEZLwH+HNHmowu6ifqjasSgsYggTyS+SpQP2AvHnLj+a2ydfb87rTWotQBh3yAWiJm8Hxlvtq97BgQLKmlv5ux/6+ 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 15/03/2024 10:35, David Hildenbrand wrote: >> -        if (!pageout && pte_young(ptent)) { >> -            ptent = ptep_get_and_clear_full(mm, addr, pte, >> -                            tlb->fullmm); >> -            ptent = pte_mkold(ptent); >> -            set_pte_at(mm, addr, pte, ptent); >> -            tlb_remove_tlb_entry(tlb, pte, addr); >> +        if (!pageout) { >> +            for (; nr != 0; nr--, pte++, addr += PAGE_SIZE) { >> +                if (ptep_test_and_clear_young(vma, addr, pte)) >> +                    tlb_remove_tlb_entry(tlb, pte, addr); >> +            } >>           } > > > The following might turn out a bit nicer: Make folio_pte_batch() collect > "any_young", then doing something like we do with "any_writable" in the fork() > case: > > ... >     nr = folio_pte_batch(folio, addr, pte, ptent, max_nr, >                  fpb_flags, NULL, any_young); >     if (any_young) >         pte_mkyoung(ptent) > ... > > if (!pageout && pte_young(ptent)) { >     mkold_full_ptes(mm, addr, pte, nr, tlb->fullmm); I don't think tlb->fullmm makes sense here because we are not clearing the pte, so there is no chance of optimization? So planning to call this mkold_ptes() and remove that param. Have I missed something? >     tlb_remove_tlb_entries(tlb, pte, nr, addr); > } >