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 A028EE77198 for ; Mon, 6 Jan 2025 10:04:51 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 265EE6B0082; Mon, 6 Jan 2025 05:04:51 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 215066B0088; Mon, 6 Jan 2025 05:04:51 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0DC176B008A; Mon, 6 Jan 2025 05:04:51 -0500 (EST) 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 E46036B0088 for ; Mon, 6 Jan 2025 05:04:50 -0500 (EST) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 82717A142E for ; Mon, 6 Jan 2025 10:04:50 +0000 (UTC) X-FDA: 82976593140.01.4279B26 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf14.hostedemail.com (Postfix) with ESMTP id C0D42100018 for ; Mon, 6 Jan 2025 10:04:48 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=none; spf=pass (imf14.hostedemail.com: domain of mark.rutland@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=mark.rutland@arm.com; dmarc=pass (policy=none) header.from=arm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1736157888; 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; bh=IH7fTlumo1XNRKIsDHnHYY4gey0YL6QktJtFUriBXD4=; b=xkzV/wqkqDHs3gzaE3eOA+fdCI3LULdZqmp1hQU8lSpQWf0DUQSMgs4O1opqDVDN8R4ZnM bsp5xwZwGchR6BcPBqZNHtoFQiqak6xf9O3MnFdEHnKJDzB+BSZeO8vS19XJzU3MfzLF/j +1iphLm3qPno/z9hb8S14Ca9dPr/WYE= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=none; spf=pass (imf14.hostedemail.com: domain of mark.rutland@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=mark.rutland@arm.com; dmarc=pass (policy=none) header.from=arm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1736157888; a=rsa-sha256; cv=none; b=Zl/myDieb29IGIU88+YWx8YsrlYc2KNs8TqlCVYW/k8n3p6t2b54wzz2K8d4W3hE9COSn2 Y0GBRovPCVbCZ7OPVeZO5dyf2JqxiUDWv1hlpylbISSN0C6IP2DGwkxOTCIOYDyX3qsLQW dxXQjjDCoTH9yJXukfg4ATzsJsMUgXk= Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id E261D143D; Mon, 6 Jan 2025 02:05:15 -0800 (PST) Received: from J2N7QTR9R3 (usa-sjc-imap-foss1.foss.arm.com [10.121.207.14]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 708CA3F59E; Mon, 6 Jan 2025 02:04:46 -0800 (PST) Date: Mon, 6 Jan 2025 10:04:43 +0000 From: Mark Rutland To: Koichiro Den Cc: Lorenzo Stoakes , linux-mm@kvack.org, akpm@linux-foundation.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v2] vmstat: disable vmstat_work on vmstat_cpu_down_prep() Message-ID: References: <20241221033321.4154409-1-koichiro.den@canonical.com> <2q7ge6cgzeowqffyn6w6ed4trhaaumv5ubdgud2tsoolen7wpw@4akuomhbacyh> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <2q7ge6cgzeowqffyn6w6ed4trhaaumv5ubdgud2tsoolen7wpw@4akuomhbacyh> X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: C0D42100018 X-Rspam-User: X-Stat-Signature: z8iy7nawtcu1z47nkptko7sh3hwh9i4y X-HE-Tag: 1736157888-198143 X-HE-Meta: U2FsdGVkX1/geMHybg+81rO1QhbkVSv7CLGLXcRUOYAtYqIRGy0uy35Hhf63q60CRs39WHI9P/KhJLzg2yMg30B0Z++HPGUjvdZIyHm0rTJ0PSoy0RzoJQhGa/FCat6d1NBGssaYqCMClinjHfOCVABiZi0Hudtwu5qYV+LJzpeDZzzQGpRTUmmQCAJ04/VSnGB5sgAZFo9jzNclSdDCTI8TUK5XGKO/5Z3AGtuOqDwqL1Pgtrv33oIkKkLLueUhl5WikQCKRnTpPpljC4446zzONil+bT58qelAUWZ/qTsJZRtv8bWOU89L7Pcg9jD1eVh7utL4HuCMK1jTlq4V2j9Du7vy/REPmUpXT2YIWshQ0iCGDWd2eINuCJhmrrEauv1a4SFNTX8yumDm4z6Q9Qwj1/vwqrkBc3mXT9/cZ0hhris2864+3dGx7jiEgoBvbPccivOoKm83A77E4VS8KKV0wEZPDxuxs0dfamz9I3ICR2AiX4aiEtFbT3rf2a5RSa209lp6b8RUqFxOTV0MZ0jomIJrEopQanHJH1/Z2q7ZQMbZ0epZX4o7KzMYQqpFTD9JNUvtfJxSR65MTTWQk4V8wS2jq3Opae0rtbwJoZUXRLp2r83exb3L+GJ9tFMLr2RwteCcrCiTj4thW9oAwZOZegMzhVP433sreWj7inFeQ3oOk8OJ8NMhevT2ndhaw6TTATgomGKWaYWcfkfEHDkM+tlUdPRKcJMjfwk5yh6zO9L5fNSuT2LYBfJ8scqj03I0Qlk+37+ie8D19gLrVu2Iix5CdTMaBYQRSKcj7ACR6gdpABuoIjhaMAeIIkx4hR/MhSPJTHquIFYlrT8Z0VNTRmgA4hVW82p7cAYcNN0Hgudluw/omliv8h1XobSq1nDOyOStC7XZvV7TfNd2YlPfY9+gmN0Li5NnlcQmBZ0NMbb9OYC4I3FFPF8ZRT0dNGSpBXDLvQNtp8Dc0mk nq9oVlE+ 999P/X3XU/r+JgK0wuK1TcqBsqijbbLWH1Ox4OpJFLitU9BpFX7se0qobGUhCfGTWvoL8LUnMQvLqVPGa2OyUBaonR8vFSsJbIE42ZhOXxaeVxG0ROb8lQpp6msMp3IQzH6POC19FkqqEGISr7pEBIN1Zl9jVofEN/0yaRzv/lxBHWmfs5KUcrmKoTg== X-Bogosity: Ham, tests=bogofilter, spamicity=0.043971, 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 Sat, Jan 04, 2025 at 01:00:17PM +0900, Koichiro Den wrote: > On Fri, Jan 03, 2025 at 11:33:19PM +0000, Lorenzo Stoakes wrote: > > Hi, > > > > I observed a warning in my qemu and real hardware, which I bisected to this commit: > > > > [ 0.087733] ------------[ cut here ]------------ > > [ 0.087733] workqueue: work disable count underflowed > > [ 0.087733] WARNING: CPU: 1 PID: 21 at kernel/workqueue.c:4313 enable_work+0xb5/0xc0 FWIW, I hit similar when testing v6.13-rc6 defconfig on arm64, when booting secondaries I always get a splat (trimmed): | ------------[ cut here ]------------ | workqueue: work disable count underflowed | WARNING: CPU: 1 PID: 21 at kernel/workqueue.c:4317 enable_work+0xfc/0x108 | Modules linked in: | CPU: 1 UID: 0 PID: 21 Comm: cpuhp/1 Not tainted 6.13.0-rc6 #1 | Hardware name: linux,dummy-virt (DT) | [...] | Call trace: | enable_work+0xfc/0x108 (P) | enable_delayed_work+0x10/0x1c | vmstat_cpu_online+0x88/0xbc | cpuhp_invoke_callback+0x10c/0x208 | cpuhp_thread_fun+0xb0/0x1a0 | smpboot_thread_fn+0x20c/0x234 | kthread+0x110/0x114 | ret_from_fork+0x10/0x20 | ---[ end trace 0000000000000000 ]--- [...] > In my current view, the simplest solution would be to make sure a local > vmstat_work is disabled until vmstat_cpu_online() runs for the cpu, even > during boot-up. The following patch suppresses the warning: > > diff --git a/mm/vmstat.c b/mm/vmstat.c > index 0889b75cef14..19ceed5d34bf 100644 > --- a/mm/vmstat.c > +++ b/mm/vmstat.c > @@ -2122,10 +2122,14 @@ static void __init start_shepherd_timer(void) > { > int cpu; > > - for_each_possible_cpu(cpu) > + for_each_possible_cpu(cpu) { > INIT_DEFERRABLE_WORK(per_cpu_ptr(&vmstat_work, cpu), > vmstat_update); > > + /* will be enabled on vmstat_cpu_online */ > + disable_delayed_work_sync(&per_cpu(vmstat_work, cpu)); > + } > + > schedule_delayed_work(&shepherd, > round_jiffies_relative(sysctl_stat_interval)); > } FWIW, the above solves the warning for me. Mark.