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 E31CFD116E1 for ; Fri, 25 Oct 2024 02:44:00 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 270A46B0096; Thu, 24 Oct 2024 22:44:00 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 220526B0099; Thu, 24 Oct 2024 22:44:00 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0E8506B009B; Thu, 24 Oct 2024 22:44:00 -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 E63F46B0096 for ; Thu, 24 Oct 2024 22:43:59 -0400 (EDT) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 1319A803BA for ; Fri, 25 Oct 2024 02:43:43 +0000 (UTC) X-FDA: 82710579630.14.6C43C72 Received: from mail-pl1-f169.google.com (mail-pl1-f169.google.com [209.85.214.169]) by imf30.hostedemail.com (Postfix) with ESMTP id 80F9C8000A for ; Fri, 25 Oct 2024 02:43:20 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=Ga7CtJTc; spf=pass (imf30.hostedemail.com: domain of zhengqi.arch@bytedance.com designates 209.85.214.169 as permitted sender) smtp.mailfrom=zhengqi.arch@bytedance.com; dmarc=pass (policy=quarantine) header.from=bytedance.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1729824185; 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=NS8TN/FyHs7Xg5AbwP+wxkRyw/n6EluIDzhX1W904yE=; b=Oi52SabkanJkx+WJvMo1eH6ilZaDmMoYb8HN0beD4EJyyQ/2gx0V7++6NCpus9Pwf+FJ05 vCFnX3DeUB4yr4dWT5tuPudinRtmkRQuB1snHc5VrIA8fhqxdoqgTOJAk8fZvF8arFzhwT G/WV7GDyQfi7TLbIh0gcTuAjttLdkgo= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=Ga7CtJTc; spf=pass (imf30.hostedemail.com: domain of zhengqi.arch@bytedance.com designates 209.85.214.169 as permitted sender) smtp.mailfrom=zhengqi.arch@bytedance.com; dmarc=pass (policy=quarantine) header.from=bytedance.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1729824185; a=rsa-sha256; cv=none; b=qNsrgo2BTuwioDE7KdsFxI5lo0jbU0x3SDIueTMpvt2KJtfjwIqOALLaA6ObHFoyZEuJmi nLOzQLiQ+ae7b3f0eScrd+6OwJkt74He23BwyAVM/gNeGYzPMbZ+wCUMJDxaHeHgczWvMz DhCJdxH1qVKfFD7NTKhuwW3c4ROjxkk= Received: by mail-pl1-f169.google.com with SMTP id d9443c01a7336-208cf673b8dso13123715ad.3 for ; Thu, 24 Oct 2024 19:43:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1729824235; x=1730429035; darn=kvack.org; h=content-transfer-encoding:in-reply-to:content-language:from :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=NS8TN/FyHs7Xg5AbwP+wxkRyw/n6EluIDzhX1W904yE=; b=Ga7CtJTcjUPhO8FP+tb9ZGtmHSrd99XVGX4/zKYJGO/VIVBWpYarr4Mw1QP0MsmXwB LRIBdTJwd+TwlZ0JqThChDakbKZ/yKILn5czRZZQONnz5X51orCEPffeHDI/h0IeiyIx P79IqckW1L+i0UlbfKcmi3Nnx60yQ6Z11YJn7L8ff466UXi5wfoUgK5n2JnU7ZlBzweh qPxVWW3scSvGL+cS5HtGYbX71OExluhGgoMo2337fLIJ89pco6pr/zQ5n/AS4OlWiihZ 8jNgxjEMSqQ7BDlFZJXExJKqYh3nUKD83C4nn16BFj4X6aGlpk2no2MkazfGrybPA5Ij 0Ctw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1729824235; x=1730429035; h=content-transfer-encoding:in-reply-to:content-language:from :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=NS8TN/FyHs7Xg5AbwP+wxkRyw/n6EluIDzhX1W904yE=; b=DLE4nnlh+ka/Ie3ntrb1c0Rv+mB0iT8DP4eAQeQb7T3YKKhaBVKfAJGTf/Iw39gIg5 jmxv/6BJstOiZ/BreFx1513OCfqIwW5hyW8E69EpPodLT/43FT5+icLx7zYDJb+h9w13 h6wvfLM/ENdEb5nY0gzUKXn+S4z+tkiXPO9mU2005hkufAWB8Hd45iF+6b5hM9nKhQXX RajsLm/3uyNwaJ3Dd8ULjy8Hr93j42IVx/iOM4zK9M31gHAIcyZagyopceV1Tru+WeZD j7NCYzvqBYX5na3t0NyOSjJpgdYi7lf36Y2aX2ykfLX4IskSgo4acyCqSK/401vVTzSU 34iQ== X-Forwarded-Encrypted: i=1; AJvYcCXVOFS8GXLsg5wxmNGbY6FoaXxwPCvuykOL95k/fqzVqD2p0zDH2jiSDT6lBg33Ok4gxA6rZg7A/Q==@kvack.org X-Gm-Message-State: AOJu0YwLZZBZcGU7IA+ZqNod5Mw9UMYTXCu5grEa63u1N4RpcitUuqUi rq4yNpzF3zK/q4gOKd8S1Jp6EwkjYhZS774TCTTDpwI3Jj2X6eoDIsg/ddQH00g= X-Google-Smtp-Source: AGHT+IFNqnHChyBRrv8DZcRHKNKvmuEqDjs3FD7U8maZSSNy9k8Qf2nm2fSTpENkFBRXGrHZ0Nflqw== X-Received: by 2002:a17:902:e5c7:b0:20c:be0e:d47e with SMTP id d9443c01a7336-20fb9a75cafmr60398045ad.56.1729824235385; Thu, 24 Oct 2024 19:43:55 -0700 (PDT) Received: from [10.84.149.95] ([203.208.167.151]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-210bc0445a3sm1188145ad.237.2024.10.24.19.43.49 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 24 Oct 2024 19:43:54 -0700 (PDT) Message-ID: Date: Fri, 25 Oct 2024 10:43:47 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v1 5/7] mm: pgtable: try to reclaim empty PTE page in madvise(MADV_DONTNEED) To: Will Deacon Cc: Jann Horn , Catalin Marinas , david@redhat.com, hughd@google.com, willy@infradead.org, mgorman@suse.de, muchun.song@linux.dev, vbabka@kernel.org, akpm@linux-foundation.org, zokeefe@google.com, rientjes@google.com, peterx@redhat.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, x86@kernel.org References: <6c7fe15b0434a08a287c400869f9ba434e1a8fa3.1729157502.git.zhengqi.arch@bytedance.com> <20241024132101.GJ30704@willie-the-truck> From: Qi Zheng Content-Language: en-US In-Reply-To: <20241024132101.GJ30704@willie-the-truck> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Rspam-User: X-Stat-Signature: qcuy6pgy6oiywbxtgpx15opjwhq5srcf X-Rspamd-Queue-Id: 80F9C8000A X-Rspamd-Server: rspam11 X-HE-Tag: 1729824200-452268 X-HE-Meta: U2FsdGVkX19JKxu7Ol36FNg/NrwxVShlwTdnUec+dhV8focsP99q6PjJXdHwlZlnRfR5aKS+PxfDOmOAt9YM9ZeVG23Fzauz0ZH4KTOMUtwodnwXvcRMZ3sExmWgd49IVPeFAOOEmC/VRQzGMknJB5sRVIYHMmYOhZPuumJoucssagyjWeAoLt6fNVkHuAigH/pcc/MPBO+7Mo8kq2imkEdw5BiVuFPNVZyS4jtv+gOLRun0Mc+YMjZXRiRbgEYYNYw4xw+a8L8/2oPZYyRA6cznsHva3iSEMiVSOLvf9h6PYeh7MAKxj1L3makgPVS2NctJrjtcV4hSfbH4K+hJmUc2KYfq5led6MXPH7ySAzU/fXKGpW6DJfdey8wd6UHAGI77QjCmXA+D7zt7l9+1fBDQ/By9mWSC/sCP8onu8QfFs3axMY2Q0oDrELMDkH6IvvwyJMiXvcGTfITMWv9RxgXgY8VaLJjRNq1234uMDfgu6+a0nrX0IsYu8RZexa4yBchQiIQF8jPQJ/C1kTDt/4q0THvVn/VOcQkX6eL7yxV11vbteBs1gfcvkc9QqDtrf1RByrnrVa/SXW4x1ETYzAxJ3oy5zlFZfcWlABMuDL3+m/OxtjQsGv077WK5MAtWemGgoHPox/j+hhzLNSqZfGX5CWNrSBScSSoW3jfK1xK/ZzNFvRuiG8zuSFiAB8uAW0jfBTwqEf6uR5qT3nu8Zdeswr219Wp+mkJWVwgr56ZZiBog9yKmQcKaPFlBzp2OoakeG+EtlNn8SMOHnRVdzRD1Skdgu1GZQ6h885b/lwh8dIUIIPoS7FOfH8yNo2eNyXZJwM5FPWRwp2c9ky9Q8sx25PQRqyPr+QsCgfrDJChWtDCv6hdRR4FbM03fbsMF1nI565yZQ4frZmi367bJ83OnsGzKNxByk40OQ0BC35xkkoj9Ne0qpPpgVX2JiAIstO38JWei+h3u2BMkn5H HDPA68r0 5/5+AH/7kiavlcAhyuqymrLDDuGayqQPH+0kspNJ5ojtPsBGriicVPQAUPPr4xeMtNCzECJ8pkg6cYaE6qculw9NueVQaZwf00TKMitT/7+M6xObEeuzB5D8eBTwE2UXjskm6NoVQNTnUroUYbVGAHGlmOHXBFMfKHjRtBy7BUK+5t5iSFgTuYYy+3CPAyMf7qzkfGX5SbLgdqQlUcaTVDp9M10nprMAxQL6YZ1d7Vw42U4aJIbvV7pT9M1wGfycHLF+eoM57WWoMtYelBrYIGMoX7J7fXNUOXRshnpX+RSfzQ+7su55jTFlMbpagRMzi+5JGMB05AQvPuUwaIE//WJyU3rOj9IEhBLqf4cun5XEM6Mq2/4dmo/LaS7PmTMvKKiF1blF5grpuUzv8Ux5Jnq7kcWFHC+p4YvhOpZ/7Zl0nuv5lzN6BRMXo6kdhoq397lOfMOWmwFn9oxU= 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: Hi Will, On 2024/10/24 21:21, Will Deacon wrote: > On Thu, Oct 17, 2024 at 08:43:43PM +0200, Jann Horn wrote: >> +arm64 maintainers in case they have opinions on the break-before-make aspects > > Thanks, Jann. > >> On Thu, Oct 17, 2024 at 11:48 AM Qi Zheng wrote: >>> +void try_to_free_pte(struct mm_struct *mm, pmd_t *pmd, unsigned long addr, >>> + struct mmu_gather *tlb) >>> +{ >>> + pmd_t pmdval; >>> + spinlock_t *pml, *ptl; >>> + pte_t *start_pte, *pte; >>> + int i; >>> + >>> + start_pte = pte_offset_map_rw_nolock(mm, pmd, addr, &pmdval, &ptl); >>> + if (!start_pte) >>> + return; >>> + >>> + pml = pmd_lock(mm, pmd); >>> + if (ptl != pml) >>> + spin_lock_nested(ptl, SINGLE_DEPTH_NESTING); >>> + >>> + if (unlikely(!pmd_same(pmdval, pmdp_get_lockless(pmd)))) >>> + goto out_ptl; >>> + >>> + /* Check if it is empty PTE page */ >>> + for (i = 0, pte = start_pte; i < PTRS_PER_PTE; i++, pte++) { >>> + if (!pte_none(ptep_get(pte))) >>> + goto out_ptl; >>> + } >>> + pte_unmap(start_pte); >>> + >>> + pmd_clear(pmd); >>> + >>> + if (ptl != pml) >>> + spin_unlock(ptl); >>> + spin_unlock(pml); >> >> At this point, you have cleared the PMD and dropped the locks >> protecting against concurrency, but have not yet done a TLB flush. If >> another thread concurrently repopulates the PMD at this point, can we >> get incoherent TLB state in a way that violates the arm64 >> break-before-make rule? > > Sounds like it, yes, unless there's something that constrains the new > PMD value to be some function of what it was in the first place? Thank you for taking a look at this! I have tried to detect this case and flush TLB in page fault. For details, please refer to this RFC patch: https://lore.kernel.org/lkml/20240815120715.14516-1-zhengqi.arch@bytedance.com/ And more context here: https://lore.kernel.org/lkml/6f38cb19-9847-4f70-bbe7-06881bb016be@bytedance.com/ If necessary, I can rebase the RFC patch and resend it. Thanks! > > Will