From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from stravinsky.debian.org (stravinsky.debian.org [82.195.75.108]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CEB3E28F50F for ; Wed, 11 Feb 2026 12:32:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=82.195.75.108 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770813166; cv=none; b=C3lRpCY15yw9wigbheQ5R8K9L0y7GhTMEbcc764hsbsJjO+KL2ygHE8UMqKzWbxoOnlGkS8z7gvadxjBTbyHoeMqcrh3WgoWDaKWsiXJL3Qac5g4++jzQw9jsLsATzIU8YhQPx2eDVRpQZbKz3yTyGknRv2GH32FojDksirwMrw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770813166; c=relaxed/simple; bh=PaMKfS3oOVI4Hu9v3A8dH98Yf18DSDx4TRNt2oPK+Zs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=sdoN1BftGyNw4lzdGY8DRcn/NEzoqUOE0IWrzoxLo7t4pEh1jDzM6H/41u2a7alaSpdDwLJVuehKv+/Q+0OzpPIWy1xMy018b+33hxiqsgvr2lW1DIWEhlAUjHJExJ8VWl+LG7KZc7RDLyjV0qgWespbzEvLu+hgVo+TWXzMPok= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=debian.org; spf=none smtp.mailfrom=debian.org; dkim=pass (2048-bit key) header.d=debian.org header.i=@debian.org header.b=M6UY8LD0; arc=none smtp.client-ip=82.195.75.108 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=debian.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=debian.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=debian.org header.i=@debian.org header.b="M6UY8LD0" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debian.org; s=smtpauto.stravinsky; h=X-Debian-User:Cc:To:In-Reply-To:References: Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description; bh=iDDy54e0brmx47WRdslaCKq/+Ha+VGBjeV2WAK1uklY=; b=M6UY8LD0zmnorNFs+AqCRVY3Cu rrN3gv0ruEkYAZej6Ut1pPOcESt2df1KRzxNI+XuKpWfMCQ5D8/Yu5yYUy+NH2UaLjAwiNzxKn+Me qrBcNb7DNvFfzHDiwGL2VM72YiJoLll9KC4JKj2GCupG8Y+9i2QXZeezTDZOuAAkYG5wkW6dWCjTe BvwoDhAHXGX7TkB93UCikEAtRyiKzdhpRe2QXntjJwb4wvkfb6atG7jkerLfhT9hJllFJ2BzqwVWL ULqnmCmUIv/eduqie+9avCKtJYECR9ZXpBUB2sQFAC/NDAFwweMFL+LptqcT7hN9m8Sn2bk/TkNUd s1fynMQw==; Received: from authenticated user by stravinsky.debian.org with esmtpsa (TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim 4.94.2) (envelope-from ) id 1vq9OZ-00B22k-TT; Wed, 11 Feb 2026 12:32:40 +0000 From: Breno Leitao Date: Wed, 11 Feb 2026 04:29:16 -0800 Subject: [PATCH 2/4] workqueue: Rename pool->watchdog_ts to pool->last_progress_ts Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20260211-wqstall_start-at-v1-2-bd9499a18c19@debian.org> References: <20260211-wqstall_start-at-v1-0-bd9499a18c19@debian.org> In-Reply-To: <20260211-wqstall_start-at-v1-0-bd9499a18c19@debian.org> To: Tejun Heo , Lai Jiangshan , Andrew Morton Cc: linux-kernel@vger.kernel.org, Omar Sandoval , kernel-team@meta.com, Breno Leitao X-Mailer: b4 0.15-dev-f4305 X-Developer-Signature: v=1; a=openpgp-sha256; l=3162; i=leitao@debian.org; h=from:subject:message-id; bh=PaMKfS3oOVI4Hu9v3A8dH98Yf18DSDx4TRNt2oPK+Zs=; b=owEBbQKS/ZANAwAIATWjk5/8eHdtAcsmYgBpjHbcobf5wkSpOXDRatcxIb1h0P6h1/AosZEjY ZNXhRojLx6JAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCaYx23AAKCRA1o5Of/Hh3 bfW4D/44/CZCBhK2uwXoKlFJt3Z8t7uHvHtuvtVTlIRtFQFfp40/fqjf4bCl6ws4Yt82DdnNiE2 awAxgvgPAkKTS4XLQY7IdsOs3AATMIB1+/1aF44txxW3+QGuyWRwgqRi4gI1nHubuegy7+CdDrh c51NFCAcGkhovt7IqHqRIxjwy2d6X86nH8LTSNDOKuF61EQ1nvUd6p6UKfrYkLfxcnnqe5pmadL CxOgbRW3CFey6bIbr7cwfy1Z3Ps/+KcVtOUrrUYkF59544E6RTaFUZZh91/RalWQu+sZzSOmyE1 3LOQXmJAI3eGd9fDypBACxiU0iy9yYOwf0ndn62B3NZxUYkaSJCTHUWO/eyGjDQsknsOmjl3HSZ DjuotkcIso7OHbcGm0sAEgAbYDhfc4q5X6em9eIb+vWU1JOLPFwM/wR1vSc3+CZzbT06TeEkTEH k72jOi53/FLjJoNSvgJ0mkCvpHAsNehAk+QLovUd2/vWfBrVM/4TOne+si4pxfV2kikCZlaNF5N DOb/nkOBes36WnpoEE35DzcQP5HBFtrv/FHn5nugObBH5mMk3QFZEWflexlZl5S0nJqVh+U9Ea0 ptMUvhar8FryltBN8RirQjefid1Sy7TIXEFaDXxckeLebfGqKIDMWfgN6g8jnz9uWCpe5lyAarf FUBOZ3uz5FDENKw== X-Developer-Key: i=leitao@debian.org; a=openpgp; fpr=AC8539A6E8F46702CA4A439B35A3939FFC78776D X-Debian-User: leitao The watchdog_ts name doesn't convey what the timestamp actually tracks. This field tracks the last time a workqueue got progress. Rename it to last_progress_ts to make it clear that it records when the pool last made forward progress (started processing new work items). No functional change. Signed-off-by: Breno Leitao --- kernel/workqueue.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/kernel/workqueue.c b/kernel/workqueue.c index 265d841e1b81c..b3ba739cf493a 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -190,7 +190,7 @@ struct worker_pool { int id; /* I: pool ID */ unsigned int flags; /* L: flags */ - unsigned long watchdog_ts; /* L: watchdog timestamp */ + unsigned long last_progress_ts; /* L: last forward progress timestamp */ bool cpu_stall; /* WD: stalled cpu bound pool */ /* @@ -1697,7 +1697,7 @@ static void __pwq_activate_work(struct pool_workqueue *pwq, WARN_ON_ONCE(!(*wdb & WORK_STRUCT_INACTIVE)); trace_workqueue_activate_work(work); if (list_empty(&pwq->pool->worklist)) - pwq->pool->watchdog_ts = jiffies; + pwq->pool->last_progress_ts = jiffies; move_linked_works(work, &pwq->pool->worklist, NULL); __clear_bit(WORK_STRUCT_INACTIVE_BIT, wdb); } @@ -2348,7 +2348,7 @@ static void __queue_work(int cpu, struct workqueue_struct *wq, */ if (list_empty(&pwq->inactive_works) && pwq_tryinc_nr_active(pwq, false)) { if (list_empty(&pool->worklist)) - pool->watchdog_ts = jiffies; + pool->last_progress_ts = jiffies; trace_workqueue_activate_work(work); insert_work(pwq, work, &pool->worklist, work_flags); @@ -3352,7 +3352,7 @@ static void process_scheduled_works(struct worker *worker) while ((work = list_first_entry_or_null(&worker->scheduled, struct work_struct, entry))) { if (first) { - worker->pool->watchdog_ts = jiffies; + worker->pool->last_progress_ts = jiffies; first = false; } process_one_work(worker, work); @@ -4850,7 +4850,7 @@ static int init_worker_pool(struct worker_pool *pool) pool->cpu = -1; pool->node = NUMA_NO_NODE; pool->flags |= POOL_DISASSOCIATED; - pool->watchdog_ts = jiffies; + pool->last_progress_ts = jiffies; INIT_LIST_HEAD(&pool->worklist); INIT_LIST_HEAD(&pool->idle_list); hash_init(pool->busy_hash); @@ -6462,7 +6462,7 @@ static void show_one_worker_pool(struct worker_pool *pool) /* How long the first pending work is waiting for a worker. */ if (!list_empty(&pool->worklist)) - hung = jiffies_to_msecs(jiffies - pool->watchdog_ts) / 1000; + hung = jiffies_to_msecs(jiffies - pool->last_progress_ts) / 1000; /* * Defer printing to avoid deadlocks in console drivers that @@ -7688,7 +7688,7 @@ static void wq_watchdog_timer_fn(struct timer_list *unused) touched = READ_ONCE(per_cpu(wq_watchdog_touched_cpu, pool->cpu)); else touched = READ_ONCE(wq_watchdog_touched); - pool_ts = READ_ONCE(pool->watchdog_ts); + pool_ts = READ_ONCE(pool->last_progress_ts); if (time_after(pool_ts, touched)) ts = pool_ts; -- 2.47.3