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 76246C77B7F for ; Fri, 27 Jun 2025 10:29:20 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 139076B00B6; Fri, 27 Jun 2025 06:29:20 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 0EB8E6B00B7; Fri, 27 Jun 2025 06:29:20 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id F14B66B00B7; Fri, 27 Jun 2025 06:29:19 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id DF8556B00B4 for ; Fri, 27 Jun 2025 06:29:19 -0400 (EDT) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 84F3C16069F for ; Fri, 27 Jun 2025 10:29:19 +0000 (UTC) X-FDA: 83600808438.27.0AD055E Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130]) by imf17.hostedemail.com (Postfix) with ESMTP id 5AF0140008 for ; Fri, 27 Jun 2025 10:29:17 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=suse.de header.s=susede2_rsa header.b=0HuLtnqg; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=Ezmsx4Ov; dkim=pass header.d=suse.de header.s=susede2_rsa header.b=0HuLtnqg; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=Ezmsx4Ov; spf=pass (imf17.hostedemail.com: domain of osalvador@suse.de designates 195.135.223.130 as permitted sender) smtp.mailfrom=osalvador@suse.de; dmarc=pass (policy=none) header.from=suse.de ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1751020157; 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-transfer-encoding:content-transfer-encoding: in-reply-to:references:dkim-signature; bh=/Nz3rHqrUjYxoZ53w69TmDEbWGJFOtlq8zBUlOUNVng=; b=vDRdaNOjCsez7y3ru0fXy6N60TRDC/h8MoDHPWI8mS1HXVeNryDJZ32cMFqpGkz96hIkFo 4y3YgBePeeuUKXhWLAMPaFG7DfkLtFcSDraWKLUU11Ms3ZMNlxKEViGijbdrScJNpm21Mp 4InjLWmy1TrCiXjVSjynTofdBCqA8ME= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1751020157; a=rsa-sha256; cv=none; b=U5RVc7xj8vdgTrbB+qv6D3uZCfV404rVppBlN29DyXQB2vhY2sR3vXL9l9bDvKjorCB0H2 h6aRXWJ1v80dhglhXVu1Stv3cc8fDKGrGTFBUGbSCEfNJARPjTJDxCpC7ylgfydYkSPdnl wywleTwjqaHSB7x91aAxiCxmLic5ZgY= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=suse.de header.s=susede2_rsa header.b=0HuLtnqg; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=Ezmsx4Ov; dkim=pass header.d=suse.de header.s=susede2_rsa header.b=0HuLtnqg; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=Ezmsx4Ov; spf=pass (imf17.hostedemail.com: domain of osalvador@suse.de designates 195.135.223.130 as permitted sender) smtp.mailfrom=osalvador@suse.de; dmarc=pass (policy=none) header.from=suse.de Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [IPv6:2a07:de40:b281:104:10:150:64:97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 82DCD21175; Fri, 27 Jun 2025 10:29:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1751020155; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=/Nz3rHqrUjYxoZ53w69TmDEbWGJFOtlq8zBUlOUNVng=; b=0HuLtnqgKgmZWI3glmjKdrtfPTIVZjsuYbYquWvxBGYqFSQc1Vo5V/pgN5Pme2VKXH2HLc apo8856e15DCQNBnT7dN1LZRWdP+SH6kdbiKHOkaisKviPaAfMTw27XSqv8TdvUC0vweMj BptZg/u1RLiqwrGZEOuIunGI0b4tAzI= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1751020155; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=/Nz3rHqrUjYxoZ53w69TmDEbWGJFOtlq8zBUlOUNVng=; b=Ezmsx4Ovj24Sqxs7XFDLhVDrfkSvFAf383fN1K2tkSz9PXk66rrJ378vKkPWjefyvze0nx +zRBRk6sd7qlzoBQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1751020155; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=/Nz3rHqrUjYxoZ53w69TmDEbWGJFOtlq8zBUlOUNVng=; b=0HuLtnqgKgmZWI3glmjKdrtfPTIVZjsuYbYquWvxBGYqFSQc1Vo5V/pgN5Pme2VKXH2HLc apo8856e15DCQNBnT7dN1LZRWdP+SH6kdbiKHOkaisKviPaAfMTw27XSqv8TdvUC0vweMj BptZg/u1RLiqwrGZEOuIunGI0b4tAzI= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1751020155; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=/Nz3rHqrUjYxoZ53w69TmDEbWGJFOtlq8zBUlOUNVng=; b=Ezmsx4Ovj24Sqxs7XFDLhVDrfkSvFAf383fN1K2tkSz9PXk66rrJ378vKkPWjefyvze0nx +zRBRk6sd7qlzoBQ== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 0D03113786; Fri, 27 Jun 2025 10:29:15 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id mCwjAHtyXmgIAgAAD6G6ig (envelope-from ); Fri, 27 Jun 2025 10:29:15 +0000 From: Oscar Salvador To: Andrew Morton Cc: David Hildenbrand , Muchun Song , Peter Xu , Gavin Guo , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Oscar Salvador Subject: [PATCH v3 0/5] Misc rework on hugetlb faulting path Date: Fri, 27 Jun 2025 12:28:59 +0200 Message-ID: <20250627102904.107202-1-osalvador@suse.de> X-Mailer: git-send-email 2.49.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Action: no action X-Rspamd-Queue-Id: 5AF0140008 X-Rspam-User: X-Rspamd-Server: rspam06 X-Stat-Signature: on739f11dyxrn9akhnmpkcn1djw934e7 X-HE-Tag: 1751020157-903845 X-HE-Meta: U2FsdGVkX18HTwtckssgg2L5wfspDz7ahQltZwiovhSFPZ1VbgSLrzrEzg1VYT1ED65eq2ps92EHTYN1tjX87eJPLy/ufkCfECvZBgf2UA3+j5ub0g9iK4dLO8qXDnLynkNkVekbyAxPvu4G+lpebleZoLCJBrZndBI3KqxzNp4e/EBruSfIAJWw8ZSvtQ7hafkSUujKczcyxJcySYrNyMRU2rP1OOgeQ4lNTbwaUGNVqIIpfJOJSDiNqkRkzu7xRfaH37x44SUTs/ReD5lEu9597F3viFl78owYNm5KqiE9WH171iTOOIsGkI4McyrwQCz3yVvvOJhYFLyuDstGi6G7ko6jO23qqlmSp1E3VTSCcHqk7uyjbOuPP/9dWmpuR6dZQeAxEZQBJA69tF2+MQ584zuMONQD4s+nxZu3c/41RArFv+3rdhZPIthOrYasOwMWjK5/vo4kzkEJnejFsdZH29x9ULba0p6Fi/fR7hp+5SHt1TXql54FQWPlSfix+8KKnS8diIik0vLMKhd/AbI17s2WaB/lEJ5jINdEV/6v9wLZFKC/92g8gBrEzMnonfHf+YTBnAEN4sySxXgGJI6OamBDTimqCWsxk/6/WSIcnrPjab8uk/z9fE2EI/aAXcmob6V2G6hhSrr39VpTtdMOeKvICcBC1fVxvKDDql2ZTlbrAGh/mfLg4Dt7K9mqfQOGMm4rR8h0z/ixSdGtQKR1BYDWCCVcVEellvYCrk0h9kSHnQ467jTpgZRiwvP6G6WFn1ChZo4M4nfKQnHIwmtDFl1bIBbdOG+4zwoC5Ngk1ggy5OvRACPZVZ1h7OBVFkRd6s8GZZLpA/9J7OzsgF2lFmkB0SbwpEojOtdJPgC7nGNgfyoFe6xa03vDyVQK3/YJdvWJnPCsJTBjhei1p9N8OqML9pUIJNYtKYL+8vWTAP2LUpZF1BpvYVK77w0Wup2pzZr1mG9NMWseF1Y BLLhe6jz VjzAznvYcm/jrv40GBiqh9yBjfsqAPUJ69YArRDy2zpztWsJinMOVurq8qapbP6FQ/B+Idqs11/UJ5mS/Q/MSPQcAXDfxlWjKLsE3nlh5FJCzP4tNvjaAfnR6jivEe+jsSjDnrUONQ7SOK0BwuVuN7FXVRH/mhy0qF6jfpEHq4BF0S/dSoDCjsg2QuhjZ7cVZrl1JwEps2MQPv0kdi9oNU38pWbx+vlSWnlVnhfdpqAiSToz/bJJ1PxLJPX3CYY/6HhYi5XVG7znR4Ebgx22MZZWTMq66srNtXovJF6EkXlBWgYPCBdjqQam0RONsNDmxrE5s3CH3b2vANobF3Nloza4uxg== 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: v1 -> v2: - Addressed issue folio_lock when holding spinlock (per David) - Simplify new_anon_folio (per David) - Slightly rework patch#2 to make it simpler v1 -> v2: - Addressed feedback from David - Settle ideas wrt. locking in faulting path after discussion with David - Add Acks-by RFC -> v1: - Stop looking up folio in the pagecache for detecting a COW on a private mapping. - Document the locks This patchset aims to give some love to the hugetlb faulting path, doing so by removing obsolete comments that are no longer true, sorting out the folio lock, and changing the mechanism we use to determine whether we are COWing a private mapping already. The most important patch of the series is #1, as it fixes a deadlock that was described in [1], where two processes were holding the same lock for the folio in the pagecache, and then deadlocked in the mutex. Looking up and locking the folio in the pagecache was done to check whether that folio was the same folio we had mapped in our pagetables, meaning that if it was different we knew that we already mapped that folio privately, so any further CoW would be made on a private mapping, which lead us to the question: __Was the reservation for that address consumed?__ That is all we care about, because if it was indeed consumed and we are the owner and we cannot allocate more folios, we need to unmap the folio from the processes pagetables and make it exclusive for us. We figured we do not need to look up the folio at all, and it is just enough to check whether the folio we have mapped is anonymous, which means we mapped it privately, so the reservation was indeed consumed. Patch#2 sorts out folio locking in the faulting path, reducing the scope of it ,only taking it when we are dealing with an anonymous folio and document it. More details in the patch. Patch#3-5 are cleanups. [1] https://lore.kernel.org/lkml/20250513093448.592150-1-gavinguo@igalia.com/ Oscar Salvador (5): mm,hugetlb: Change mechanism to detect a COW on private mapping mm,hugetlb: Sort out folio locking in the faulting path mm,hugetlb: Rename anon_rmap to new_anon_folio and make it boolean mm,hugetlb: Drop obsolete comment about non-present pte and second faults mm,hugetlb: Drop unlikelys from hugetlb_fault mm/hugetlb.c | 132 ++++++++++++++++++++++----------------------------- 1 file changed, 56 insertions(+), 76 deletions(-) -- 2.50.0