From nobody Tue Dec 2 02:04:08 2025 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (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 EC98B33CEB7 for ; Thu, 20 Nov 2025 14:57:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763650632; cv=none; b=Td5OvVOM+uAP8DR5sHflZK1VBT5+xRMVyVt9CILRB1kzpFmXkzwNgj4OdXVeZlNvXTFDqb1KK/TiCCnDByE5fCw/VxOXrJgd93G0sQE3Di5YFX2cIk6L63Kx/d/U8N2rb07lv/jFYjeZtX6Pr4o5G2vBWwSIkpBxNSOokhMDaQ0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763650632; c=relaxed/simple; bh=O9zK34ymQ3KroWMW5Fi9ejCqmujGPuZ0x+pj68Q/DUE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=KVzjTo4g3liQRoMloh0c3Hfr9hyBbWMSygo/doN5soLX/jPLtGH7r+t/GFssw/GpQhVBSl2d2D/RoLVtVP8Qg2lEVECv5+Q4aX2keCOEHuY00Gmjtnn7KuCtp0R5ME7zM4UO/CuvC/qcK1BhndaLMtYhtkSR/136RQwm5xPiRNI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=f5kIQd65; arc=none smtp.client-ip=170.10.133.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="f5kIQd65" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1763650628; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=zND6J3nrdpEPxMayGU9dWtIyvlRFzw/cBOy+nF51860=; b=f5kIQd65ahZlyunbhO1s+AK4BJeUSd4uvbchNAsN3EfW4+BPHxpQmSb/NDniBRKvwRsv+N 8nu1klv7EORuUzT/qxXMkWh2TrYjpPq4RoUc2UUL1r2m7wS9ozf65ZgpHcBHmt97V0uxkx pF8Ip/NHYz2u4tmNK7cfNbOv3G18QpQ= Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-116-HEhayZAiOkKMRRntAy_oCw-1; Thu, 20 Nov 2025 09:57:05 -0500 X-MC-Unique: HEhayZAiOkKMRRntAy_oCw-1 X-Mimecast-MFC-AGG-ID: HEhayZAiOkKMRRntAy_oCw_1763650624 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 4290F195609D; Thu, 20 Nov 2025 14:57:04 +0000 (UTC) Received: from gmonaco-thinkpadt14gen3.rmtit.csb (unknown [10.45.224.239]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id AA4C51940E88; Thu, 20 Nov 2025 14:57:01 +0000 (UTC) From: Gabriele Monaco To: linux-kernel@vger.kernel.org, Anna-Maria Behnsen , Frederic Weisbecker , Thomas Gleixner , Waiman Long Cc: Gabriele Monaco Subject: [PATCH v16 1/7] timers/migration: Rename 'online' bit to 'available' Date: Thu, 20 Nov 2025 15:56:47 +0100 Message-ID: <20251120145653.296659-2-gmonaco@redhat.com> In-Reply-To: <20251120145653.296659-1-gmonaco@redhat.com> References: <20251120145653.296659-1-gmonaco@redhat.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 Content-Type: text/plain; charset="utf-8" The timer migration hierarchy excludes offline CPUs via the tmigr_is_not_available function, which is essentially checking the online bit for the CPU. Rename the online bit to available and all references in function names and tracepoint to generalise the concept of available CPUs. Reviewed-by: Frederic Weisbecker Reviewed-by: Thomas Gleixner Signed-off-by: Gabriele Monaco --- include/trace/events/timer_migration.h | 4 ++-- kernel/time/timer_migration.c | 24 ++++++++++++------------ kernel/time/timer_migration.h | 2 +- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/include/trace/events/timer_migration.h b/include/trace/events/= timer_migration.h index 47db5eaf2f9a..61171b13c687 100644 --- a/include/trace/events/timer_migration.h +++ b/include/trace/events/timer_migration.h @@ -173,14 +173,14 @@ DEFINE_EVENT(tmigr_cpugroup, tmigr_cpu_active, TP_ARGS(tmc) ); =20 -DEFINE_EVENT(tmigr_cpugroup, tmigr_cpu_online, +DEFINE_EVENT(tmigr_cpugroup, tmigr_cpu_available, =20 TP_PROTO(struct tmigr_cpu *tmc), =20 TP_ARGS(tmc) ); =20 -DEFINE_EVENT(tmigr_cpugroup, tmigr_cpu_offline, +DEFINE_EVENT(tmigr_cpugroup, tmigr_cpu_unavailable, =20 TP_PROTO(struct tmigr_cpu *tmc), =20 diff --git a/kernel/time/timer_migration.c b/kernel/time/timer_migration.c index 57e38674e56e..2cfebed35e22 100644 --- a/kernel/time/timer_migration.c +++ b/kernel/time/timer_migration.c @@ -429,7 +429,7 @@ static DEFINE_PER_CPU(struct tmigr_cpu, tmigr_cpu); =20 static inline bool tmigr_is_not_available(struct tmigr_cpu *tmc) { - return !(tmc->tmgroup && tmc->online); + return !(tmc->tmgroup && tmc->available); } =20 /* @@ -926,7 +926,7 @@ static void tmigr_handle_remote_cpu(unsigned int cpu, u= 64 now, * updated the event takes care when hierarchy is completely * idle. Otherwise the migrator does it as the event is enqueued. */ - if (!tmc->online || tmc->remote || tmc->cpuevt.ignore || + if (!tmc->available || tmc->remote || tmc->cpuevt.ignore || now < tmc->cpuevt.nextevt.expires) { raw_spin_unlock_irq(&tmc->lock); return; @@ -973,7 +973,7 @@ static void tmigr_handle_remote_cpu(unsigned int cpu, u= 64 now, * (See also section "Required event and timerqueue update after a * remote expiry" in the documentation at the top) */ - if (!tmc->online || !tmc->idle) { + if (!tmc->available || !tmc->idle) { timer_unlock_remote_bases(cpu); goto unlock; } @@ -1422,19 +1422,19 @@ static long tmigr_trigger_active(void *unused) { struct tmigr_cpu *tmc =3D this_cpu_ptr(&tmigr_cpu); =20 - WARN_ON_ONCE(!tmc->online || tmc->idle); + WARN_ON_ONCE(!tmc->available || tmc->idle); =20 return 0; } =20 -static int tmigr_cpu_offline(unsigned int cpu) +static int tmigr_clear_cpu_available(unsigned int cpu) { struct tmigr_cpu *tmc =3D this_cpu_ptr(&tmigr_cpu); int migrator; u64 firstexp; =20 raw_spin_lock_irq(&tmc->lock); - tmc->online =3D false; + tmc->available =3D false; WRITE_ONCE(tmc->wakeup, KTIME_MAX); =20 /* @@ -1442,7 +1442,7 @@ static int tmigr_cpu_offline(unsigned int cpu) * offline; Therefore nextevt value is set to KTIME_MAX */ firstexp =3D __tmigr_cpu_deactivate(tmc, KTIME_MAX); - trace_tmigr_cpu_offline(tmc); + trace_tmigr_cpu_unavailable(tmc); raw_spin_unlock_irq(&tmc->lock); =20 if (firstexp !=3D KTIME_MAX) { @@ -1453,7 +1453,7 @@ static int tmigr_cpu_offline(unsigned int cpu) return 0; } =20 -static int tmigr_cpu_online(unsigned int cpu) +static int tmigr_set_cpu_available(unsigned int cpu) { struct tmigr_cpu *tmc =3D this_cpu_ptr(&tmigr_cpu); =20 @@ -1462,11 +1462,11 @@ static int tmigr_cpu_online(unsigned int cpu) return -EINVAL; =20 raw_spin_lock_irq(&tmc->lock); - trace_tmigr_cpu_online(tmc); + trace_tmigr_cpu_available(tmc); tmc->idle =3D timer_base_is_idle(); if (!tmc->idle) __tmigr_cpu_activate(tmc); - tmc->online =3D true; + tmc->available =3D true; raw_spin_unlock_irq(&tmc->lock); return 0; } @@ -1758,7 +1758,7 @@ static int tmigr_add_cpu(unsigned int cpu) * The (likely) current CPU is expected to be online in the hierarchy, * otherwise the old root may not be active as expected. */ - WARN_ON_ONCE(!per_cpu_ptr(&tmigr_cpu, raw_smp_processor_id())->online); + WARN_ON_ONCE(!per_cpu_ptr(&tmigr_cpu, raw_smp_processor_id())->available= ); ret =3D tmigr_setup_groups(-1, old_root->numa_node, old_root, true); } =20 @@ -1854,7 +1854,7 @@ static int __init tmigr_init(void) goto err; =20 ret =3D cpuhp_setup_state(CPUHP_AP_TMIGR_ONLINE, "tmigr:online", - tmigr_cpu_online, tmigr_cpu_offline); + tmigr_set_cpu_available, tmigr_clear_cpu_available); if (ret) goto err; =20 diff --git a/kernel/time/timer_migration.h b/kernel/time/timer_migration.h index ae19f70f8170..70879cde6fdd 100644 --- a/kernel/time/timer_migration.h +++ b/kernel/time/timer_migration.h @@ -97,7 +97,7 @@ struct tmigr_group { */ struct tmigr_cpu { raw_spinlock_t lock; - bool online; + bool available; bool idle; bool remote; struct tmigr_group *tmgroup; --=20 2.51.1