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 ABEAFCE8E74 for ; Thu, 24 Oct 2024 13:21:12 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 433CE6B008C; Thu, 24 Oct 2024 09:21:12 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 3E4136B0098; Thu, 24 Oct 2024 09:21:12 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2D2AA6B0099; Thu, 24 Oct 2024 09:21:12 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 0FD746B008C for ; Thu, 24 Oct 2024 09:21:12 -0400 (EDT) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 7AD6F161304 for ; Thu, 24 Oct 2024 13:20:50 +0000 (UTC) X-FDA: 82708556070.06.56E185C Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91]) by imf26.hostedemail.com (Postfix) with ESMTP id E8E3B140016 for ; Thu, 24 Oct 2024 13:20:55 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=vB7YmSqa; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf26.hostedemail.com: domain of will@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=will@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1729776017; a=rsa-sha256; cv=none; b=qtGjWb9n7Dq6/VmLg86HTBQ3xZwfegy7Hsg6wP7SvPQDneQONnJqAw/TsHTd+e/NUcAcQ5 8POdie+TRFYDIw7fXr+fmR/SRlOdFTQzafVUtOa7w7RDdoxd+2FVWsNGzjbhRFo1etGppD JJGWm40jp36K4Pvn6FyxtXstDtYz80g= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=vB7YmSqa; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf26.hostedemail.com: domain of will@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=will@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1729776017; 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=IpXZeBZhriIjqiJ6b2iGkCBmaD6UbXOzKj18bjBZOm8=; b=4wu6Gne7lXdRUDxO2UsP2u1X31xYIZwFodUsmI7O7mj8vY/dTMcKcJffLJOYLaBpU3cSzc I+1oCn5Pnyzg25ImnkWX3kA4NHOIrzRPyiouVtggG3LHgsmroeIaityfZ8S/jBMqzoxDVM RcSo+Jb1S8kfCgVzEApX/J0LNvHDvQc= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by nyc.source.kernel.org (Postfix) with ESMTP id EDABCA453B3; Thu, 24 Oct 2024 13:20:59 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0753FC4CEC7; Thu, 24 Oct 2024 13:21:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1729776068; bh=e4IrghhwsHkxR0OyKbORiHFfT4EMU5qRE0ljkJ5jEes=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=vB7YmSqaDXohGnpgcjhdOkXb3IFfDJR5uzxgtSmMIcdsuyMCeJDK2ZtMmSgRwUZSz ML+8qCaCTydwfvT8/Lrbm3FCRd+cGzNoe9DDZw+vRKew7kHzuU0I/1EDQkRfL/DZ/M 900SIJ5ZBkZEMXEw8sZj8bbOOOuv47hjWjDbe38Getqzdcx6vqGqEswr3tttey2L4f W+wa9JKtfMBOFgMhupzVvaa3ZoLvS0JlvrEDGlpZOojTmQ009+iMhEfjqSvCa5rOB2 kY1kaz/WuIS4LbV98R93J4aTDHVFoFlMRTn5HunXmp6+0mwC21jzDSyoxKbRvtVb4+ +iZbwxa2sIoBw== Date: Thu, 24 Oct 2024 14:21:02 +0100 From: Will Deacon To: Jann Horn Cc: Qi Zheng , 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 Subject: Re: [PATCH v1 5/7] mm: pgtable: try to reclaim empty PTE page in madvise(MADV_DONTNEED) Message-ID: <20241024132101.GJ30704@willie-the-truck> References: <6c7fe15b0434a08a287c400869f9ba434e1a8fa3.1729157502.git.zhengqi.arch@bytedance.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.10.1 (2018-07-13) X-Rspam-User: X-Rspamd-Queue-Id: E8E3B140016 X-Rspamd-Server: rspam01 X-Stat-Signature: tzhq9yydpthit6bi6r3xk4gmz9cozgmd X-HE-Tag: 1729776055-363065 X-HE-Meta: U2FsdGVkX1/qkZHJO8tao82jITF+ea9gSPJav8g8m4mrjXllKtXoY99gWU5eBx5RpuG1dYZqJgZZ+muARu017gRYKxs6I4N/hU37lnb1KdRgV77MqyF3bdgJtLLyUDgUPYmEQZLOim4FZCz7b2yL0XezMLVEgf4cVgnAmEeeBustRh6CBJwQ6wB6whiwB7YL/66cKw4CgxOe5BsQ2hRX305KdrkAGCEkVWitFtZb8aINw1felUCHEA6h+EH3BFrR6EQHabL4M60xnDvpWxk0eu5mPCXkIzL82C2uIOu/71HV1zwdI9i9BTQhLqpGPSLdGE/pBwNdd6wLAZA75/aU6+a5F4CG/t+0Y1jMn+MnL4N7sGuYczAPDEOi2YWx+6vxR1sYhf/+IXekepzvIOm9So/bK9b0Vl2CNoVB3nzVQL8YW/7RR0DmjpDQ/ukUMn9CiBHQkJLXHGCqQT93t1yy1/xGj1xCvvbjzjALvOtfmpbuULvwnQqlbDAKIT4Wd5/YxGNvlL6X0QbXiAK1a0G2kXofFBVjBfKy4eiMugXbQMMeztd/X3tNyw6aGWyu0Lk88pOKBqQ221kpzUlPPDRw+2QiZAEJUO0YgFw4dmY25jCAUEu5Fc4S2uyS1I5HpCPcntXyWUkS1zZLAA5MrX5t543wQSr+diB01cX5w2HjZSaLGrN5l2YwoFveTzDtAZ+pkoYlwymbBuYLJpIsYobQRlXUqckSGfGlSYGYBVyMtAT4icXXIxTCvoXJl4m/DBMrb/klM42caBPqHAkQYLOKnv0EiWBSRwkYMDTa+YV4YW1LFZO3TIOGiYtHnXmbWF0o5CiXXvsqeDDYT+NWyROq1QFTWSsGjYVICRmPTxDUZwM2cwQUZZM804wdr66AXwF645sHRpQgd1nBGN9kHfucC2YE4RtYQaIRxXKFOUuXb6x67s/g9kDTQBo5ad/XXW6hjsipg0VZrMFuMoXdeS8 F24DvGX2 flhJYD/Da0j6vlGUKIi2gmWpDCzyu+azZ8DvIbUBeaGM/CdrjcjlbGlgU15CwLaacWJ1zv5LS5G7lkQLNjQjo3DV8FGw1o+TU0fQtlWu7zvnNTkOzd2FZmF9f1PJZwXFFIp301nUhjv3cR/QGav5oPba+99JQRo1qYOKv+XFG9CzEje7SQgrDMWU1ltYF5Tv8TOxs93Y4L8Sf7/PTiXLMzhOOzRpB++FLtz+nK/hJbqcRLrNoMxwcD3io/hURLc4JPCc61Pn4Bo7EBjGXPsczaGGxk8kvKbFWil7/DXtGd4zWBYVB6EPPoVpLIA== 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 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? Will