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 CA254C36008 for ; Tue, 1 Apr 2025 07:25:11 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D57FD280003; Tue, 1 Apr 2025 03:25:10 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id CDEBB280001; Tue, 1 Apr 2025 03:25:10 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B7FEF280003; Tue, 1 Apr 2025 03:25:10 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 97712280001 for ; Tue, 1 Apr 2025 03:25:10 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 825C3BACBF for ; Tue, 1 Apr 2025 07:25:10 +0000 (UTC) X-FDA: 83284638780.09.20A58E7 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.12]) by imf19.hostedemail.com (Postfix) with ESMTP id C0A121A000A for ; Tue, 1 Apr 2025 07:25:07 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=jWHonyYS; dmarc=pass (policy=none) header.from=intel.com; spf=none (imf19.hostedemail.com: domain of kirill.shutemov@linux.intel.com has no SPF policy when checking 192.198.163.12) smtp.mailfrom=kirill.shutemov@linux.intel.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1743492308; 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=ljoLblcAzt+lcLkJ3ZWi5p/OVUmvQmwOi5sLO9ECs6A=; b=TJcoXZ5I2a46CtUznzvrIuq+DdxKR4Etm5zGQRg0tS9JLOrsqdJaS205teV5xi4zslF4MM CcQISM5ysCC/pyS8kR47RtyHbO3Cekg1EiC5A8OZTXD68rdBlDfa8oEEhOUIs6wNp5Vwhi uAsf2rWSu1HCGlF7weUO0mBk3155/kg= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=jWHonyYS; dmarc=pass (policy=none) header.from=intel.com; spf=none (imf19.hostedemail.com: domain of kirill.shutemov@linux.intel.com has no SPF policy when checking 192.198.163.12) smtp.mailfrom=kirill.shutemov@linux.intel.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1743492308; a=rsa-sha256; cv=none; b=DHZ076JhxPjlaHbSakdKqx5bejKiTnFKpDLKa06kaWCX+z5G41fZ4eayd9ZbDe7XvcyNcE kzSMQeztjrPXtuQeE0A7w32C9vXbxQIhVFj70BV4rhUItewOr05GB/ER+Mc9TQvDnrmmF4 wFuvuWvCVfTINfBapvwJhCiTdH9Me8s= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1743492308; x=1775028308; h=date:from:to:cc:subject:message-id:references: mime-version:in-reply-to; bh=lviFBdN6BXt0GE8RcFoBwRgn67ez6kJJ1ofE+xH7fuk=; b=jWHonyYSGuhpAdbG5TbcTjv+4LLiThAdH5D09vhs9ePn8H7b4sx05wcO 0ID8QII7HoDDbst5Vi41AXZMifI+AWbwQB1G0ausEzkQ5HIUy6ZrJcWtS NMuefeWfRlN+270h87mRytVa4tphEYRk2vwE+pZGXlQq4CpAZaFVJEAta lT5mV93SCav7XUF1UIJ6sOuifAFUxfzUBNmWkFkPf1+l9kSxHXkkQQMhp BTEbAC1IrXAK5ThyY/SjbvqyEoiQpVkZx6JjXp0KZCkhZJPS1lbbSlkn2 3sYqjJBGBXVSI3fVdBVKV8X7aD+AAxdKcAlWJN/BYNbnjyc5hSZpYlzMx A==; X-CSE-ConnectionGUID: WWqAzFBPTg2SE/LgWI8KdQ== X-CSE-MsgGUID: jsRcVuO8TcS+kvqWSMaqog== X-IronPort-AV: E=McAfee;i="6700,10204,11390"; a="48670621" X-IronPort-AV: E=Sophos;i="6.14,292,1736841600"; d="scan'208";a="48670621" Received: from fmviesa006.fm.intel.com ([10.60.135.146]) by fmvoesa106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Apr 2025 00:25:06 -0700 X-CSE-ConnectionGUID: 3Pztk+laTtaenkiK1mG16A== X-CSE-MsgGUID: EE/yTQiGQoGexTN3UtIhNw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,292,1736841600"; d="scan'208";a="126139787" Received: from black.fi.intel.com ([10.237.72.28]) by fmviesa006.fm.intel.com with ESMTP; 01 Apr 2025 00:25:03 -0700 Received: by black.fi.intel.com (Postfix, from userid 1000) id 6C2B8278; Tue, 01 Apr 2025 10:25:02 +0300 (EEST) Date: Tue, 1 Apr 2025 10:25:02 +0300 From: "Kirill A. Shutemov" To: Dave Hansen Cc: Andrew Morton , Mike Rapoport , David Hildenbrand , Vlastimil Babka , Mel Gorman , Tom Lendacky , "Kalra, Ashish" , Rick Edgecombe , linux-mm@kvack.org, linux-coco@lists.linux.dev, linux-kernel@vger.kernel.org, Srikanth Aithal Subject: Re: [PATCH] mm/page_alloc: fix deadlock on cpu_hotplug_lock in __accept_page() Message-ID: References: <20250329171030.3942298-1-kirill.shutemov@linux.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspamd-Server: rspam11 X-Rspamd-Queue-Id: C0A121A000A X-Stat-Signature: hnh6nt1acwdehis6rarocu7tpm7bzqog X-Rspam-User: X-HE-Tag: 1743492307-373582 X-HE-Meta: U2FsdGVkX19YUMVKspjy8Z4gIoN6xjKsYJHnQ14oY4845Zm/4D9WQhxjBJzEvB/tZCTtclNCA87WISWEYuz42L/dTra+8AgETWMslJpNXrpPmWbgOrvLXZjGLlsUIvZY8uvR9ZC3DhHqtAK52T47Sr3mR4OBSWOKGIxM4fT9ov6TBdyif5WMdAaQuvjlwqK7HwiRSd8eNjohE1YH+95n5s/LUIZosDbg06nSDcHDNoTgTKUFOdnUp5JrUKUfu4EYDp2N9aQ9x+Jz5fjAtdkZcJWRqfn/CXkKhiQDc+IImKe1WU+mW1lnlW8AbCi+HLfpBPc0SS+zd/weNOP3x3ydloOQ+j7v+fjThnBBvhAqUqNDqFZnHoZ8fZN8UR3J/zJlZ1zYMWEoi710tRwA9rTXafUtdF2rOdPCLOd8+e7Y/sLHfUs59ScFBt0Js7iJkK4BsbA1QuT7B4QEsGwRpGMrCxBXAkJo1siJ7IkSbC/Suc9TB/19zjLsby3XpzCpwuM2twQdZNwDnmTm6Lt4UWHclVZHkz/XLZhwWZXPegPtdONCssQprV0kBWibXL+9KLLvVWhc3qxgwY8q2Cl9mJp0ERM0+QXE0vaHC3nb14SCNB3kG9XQYpS/58nBHy1WQSqjDJm8RCEF3QzuQ2YL1x4YlLyEafXpbLCZ1150lnDeLz+IbeHIWKlFY6uj2r0f7BoocxTeBBfWwg7xkBfiEafVUEzxKJL1QD52WodZlON0aGqfYCJIFktQbYBQbcH6dLB7WvVsmv7AYvXNwaOZN6TDfxjUmvsFS3HE362w2D6upCGFxdRjIo3GwWQQtDATBQz6SmP7P6KvJA/C0TDuFbvxOoeUpg3k4xEoHMqOC8TzC0w+RsQS30xg+sxWPSl31/h/hRND4F8IEX/e/pwuWGdmtjrz21sF/OsJcYkGJHD8UzbyH1RO3rBc5GKAu7g0DDYfnPCDYZDn4XX8SoNlP3E nmjWQYut eOaa909p0+gYY7s81GBL9c2FBo9Ki3MKHrht5HMrJ9Kvgle7QT1Q++xf7FVYnPVEa+pEgSh9oC4lb5JK2o/HE6NcjZcPnWsD60Dyh+z8m8WQ4XqHeikGjILc7GFSSq+edH/pYFqLxA5gWcOOr9ftEXbAsZAUF1LmdoDHbF8kJWAXz7VMDcF3Lpxk8Xf+7XsU6svjvS+Du/nU3p0EJ2S/fG6h1p77Ii2fNRrMlwqeaK8QGlYg= 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 Mon, Mar 31, 2025 at 12:07:07PM -0700, Dave Hansen wrote: > On 3/29/25 10:10, Kirill A. Shutemov wrote: > > + if (system_wq) > > + schedule_work(&zone->unaccepted_cleanup); > > + else > > + unaccepted_cleanup_work(&zone->unaccepted_cleanup); > > + } > > } > > The 'system_wq' check seems like an awfully big hack. No other > schedule_work() user does anything similar that I can find across the tree. I don't see how it is "an awfully big hack". It is "use system_wq if it is ready". Maybe it is going to be marginally cleaner if schedule_work() would be open-coded: if (system_wq) queue_work(system_wq, &zone->unaccepted_cleanup); else unaccepted_cleanup_work(&zone->unaccepted_cleanup); ? > > Instead of hacking in some internal state, could you use 'system_state', > like: > > if (system_state == SYSTEM_BOOTING) > unaccepted_cleanup_work(&zone->unaccepted_cleanup); > else > schedule_work(&zone->unaccepted_cleanup); Really? The transition points between these states are arbitrary defined. Who said that if we are out of SYSTEM_BOOTING we can use system_wq? Tomorrow we can introduce additional state between BOOTING and SCHEDULING and this code will be silently broken. The same for any new state before BOOTING. > The other method would be to make it more opportunistic? Basically, > detect when it might deadlock: > > bool try_to_dec() > { > if (!cpus_read_trylock()) > return false; > > static_branch_dec_cpuslocked(&zones_with_unaccepted_pages); > cpus_read_unlock(); > > return true; > } > > That still requires a bit in the zone to say whether the > static_branch_dec() was deferred or not, though. It's kinda open-coding > schedule_work(). It will also require special handling for soft CPU online/offline. -- Kiryl Shutsemau / Kirill A. Shutemov