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 EAAACD58D5D for ; Mon, 25 Nov 2024 15:22:13 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4FCE56B0089; Mon, 25 Nov 2024 10:22:13 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 4AC3B6B008A; Mon, 25 Nov 2024 10:22:13 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 374766B008C; Mon, 25 Nov 2024 10:22:13 -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 0FE876B0089 for ; Mon, 25 Nov 2024 10:22:13 -0500 (EST) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 97FAEA04BE for ; Mon, 25 Nov 2024 15:22:12 +0000 (UTC) X-FDA: 82824983262.11.56800E3 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf05.hostedemail.com (Postfix) with ESMTP id 894CF100021 for ; Mon, 25 Nov 2024 15:22:04 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=QR3rS21M; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf05.hostedemail.com: domain of will@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=will@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1732548129; a=rsa-sha256; cv=none; b=t5OoqvplT/1HztfXgaHz1dXvOvotePctu7I00tZ0q568d8qcfniLplLmIpN5AIXMQfvjbg B80KOg74nnFzr7Iqo6+b/Bv/u1YKG+aBIEuQsbI1QMwpGcqexeK7PWABLnXTGZjCOew93p 9THksZCvVSnGs8nbbau6xNrQ4UUJz6w= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=QR3rS21M; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf05.hostedemail.com: domain of will@kernel.org designates 139.178.84.217 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=1732548129; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=CyX0cTgA/MvjHnLtiS0Xd8bF9aSHKXc1mygDDIUAEu8=; b=z00QCnugd3iA16pNip4ZqCrJE+S3PsfXxx4wYKguDn/CNyiyVxWRDobYSjm1+3MiZfSw/W G/RVZ+hJwW//TYN6voXY2xf0j/hiFE1IVdU2fhmupUXABHu9BpWfx3QjcTGMirMguW6z2p Dj3ivC+J3/Fi8LjpGrFbmcVCOgiG1rQ= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 3F4475C5B2F; Mon, 25 Nov 2024 15:21:26 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 42357C4CECE; Mon, 25 Nov 2024 15:22:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1732548129; bh=dy2fUC3Stp8CrKtZQSEcsiEhBheaz3FIUb1u3DlnIdE=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=QR3rS21M2KGkHEHHH8+vdXJI0OSl9SBbDyKKk7PcozxHkk3zUnqUIaDOpxeeetRgg kBNBSbIwXN7917M36RVEDC5JrNihq/Kk2RUcbG/XKlHhOom1iK5Z5RUAqpnmXRcZv1 l9Ht9LmV1UkcMDcgeq6CArGanLjiQbZ+t/H9yhDVBqpB+YRHXy/GmV062UcVbRq9JD ckMwZcOGpnLlGqBbLxVjlgw4cNfxg8uakhCZ2RBlf9fXpHw4vtE+eXwKEB3sCzehHP /FS5qlpVU048kOl5H2NvfPMFCg2tlR+CuM3cuMFPEJDe7UgQpLw6XOpo8rE9xoQMML kGB8VEBsmgAsQ== Date: Mon, 25 Nov 2024 15:22:03 +0000 From: Will Deacon To: Yu Zhao Cc: Andrew Morton , Catalin Marinas , Marc Zyngier , Muchun Song , Thomas Gleixner , Douglas Anderson , Mark Rutland , Nanyong Sun , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: Re: [PATCH v2 0/6] mm/arm64: re-enable HVO Message-ID: <20241125152203.GA954@willie-the-truck> References: <20241107202033.2721681-1-yuzhao@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20241107202033.2721681-1-yuzhao@google.com> User-Agent: Mutt/1.10.1 (2018-07-13) X-Rspam-User: X-Rspamd-Queue-Id: 894CF100021 X-Rspamd-Server: rspam01 X-Stat-Signature: p4b8n3ty9x9hytkkdzds7hoqbbgwabie X-HE-Tag: 1732548124-255988 X-HE-Meta: U2FsdGVkX1+llLFfuBtF3jsR58SEh6BAtGlNx269ixmmYRTdUVX/8JX/yUYM2Qnbfaz5a8RIVeNEYBJV2/RLbkEwFQCepbrfhA3lwr5oSDAZFLXv+QVHMhStWCVwAux4FAZQWx53nuLT2gxFSgccHvkRH8mUtie1w/D6dZNNvSja6ziFlSx7Otm7tXueCeeOfMYenjPu0tRTSUnra949vySRgzNOjbONJrc0tqmQTp+4lDuAxHig07ByrMSQCIKEnP4nOukHJr0aawsctbw7EpaUiclW7ZF60B9Qm5kmRoPTMaCrxlWBwrnmB8etGqtQuR++ziBzgm25wIYbeNxZedGWtBbbMZfM9tRgyh5OPPCQI6yyL8ASCPC1mS7ENfg+1t1y0O2Zj9QjKD4I7HR3I++WbR+hF4fwwqwgecLRJWHhmM+iHaibnNu51/gvRNBGqBSx7/c9hs3tL+VgtPvyVNcvFgaaqMkx8YeCvcwC15BH/CEHL+cbhkJew2uZ+/Gvj83ndrUfo/mYYfAKHiOdYJykegECudosMMEpjKEI1R/Yggap0+7PLZ5EITbm8DPwUM0dB9NOvfVIPt6N6Tkw400KGS7g8qWQEB0OCTKz52oS4Jswbf0d00pTD+bLSCOx+ptlG6EnJd9Ga5uME7M73r7BBQr8yBAP/4Sqds+XXBi6yQjXMp0ecNECRM34PRPklrJ7C/juh2dzsITBVsqq1ADcruzj7sfsj1V0OauyF1GWAa9A+YK6SIFL3d5YFAmw2v1ygvpWuwDC6Za1psYZHxEDTQmtFeyXc7nDvBLZHRV3yK0O7uOrePmNWOjyrejdKLP1hMjAwT9Toly01LR9KK9p7n2nqfqKw1AgdTEcKxpHOrP8KzeHeF8oKUozQ3ahBdVGmtS9c+nK8AZ/ow732B2K1BbcpTXxmuJKCgJ2DiYGcRjvjd2Q3YmRcg1xNnsfWklLD87Zes4f4B1DpgO cECTEO7t 43fPqZjgnTUf6WEinkRF4tndur/KlxctFJSHzM5Oa3Q7FVRUoNL0nv3VioEfrI0+iLoVhHjkG2NiZeg04iFa+gMQ+YdCEdn6lalwcFJg23Kw+h8M92SX5g4n3fiXQS4k+r9c/2csVp3ILmKiozXRdD77Gd+jXaKewXIxQBdk2HyBLzjvqmOMmCz/zBf23dXPRgT7xgiTELaa2VyJ/gs4M2A+8eRa3ej0j1iEd 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 Yu Zhao, On Thu, Nov 07, 2024 at 01:20:27PM -0700, Yu Zhao wrote: > HVO was disabled by commit 060a2c92d1b6 ("arm64: mm: hugetlb: Disable > HUGETLB_PAGE_OPTIMIZE_VMEMMAP") due to the following reason: > > This is deemed UNPREDICTABLE by the Arm architecture without a > break-before-make sequence (make the PTE invalid, TLBI, write the > new valid PTE). However, such sequence is not possible since the > vmemmap may be concurrently accessed by the kernel. > > This series presents one of the previously discussed approaches to > re-enable HugeTLB Vmemmap Optimization (HVO) on arm64. Before jumping into the new mechanisms here, I'd really like to understand how the current code is intended to work in the relatively simple case where the vmemmap is page-mapped to start with (i.e. when we don't need to worry about block-splitting). In that case, who are the concurrent users of the vmemmap that we need to worry about? Is it solely speculative references via page_ref_add_unless() or are there others? Looking at page_ref_add_unless(), what serialises that against __hugetlb_vmemmap_restore_folio()? I see there's a synchronize_rcu() call in the latter, but what prevents an RCU reader coming in immediately after that? Even if we resolve the BBM issues, we still need to get the synchronisation right so that we don't e.g. attempt a cmpxchg() to a read-only mapping, as the CAS instruction requires write permission on arm64 even if the comparison ultimately fails. So please help me to understand the basics of HVO before we get bogged down by the block-splitting on arm64. Cheers, Will