tick/broadcast: Allow per-cpu timers to be used instead of broadcast
From: | Will Deacon <will-AT-kernel.org> | |
To: | linux-arm-kernel-AT-lists.infradead.org | |
Subject: | [PATCH 0/5] tick/broadcast: Allow per-cpu timers to be used instead of broadcast | |
Date: | Thu, 20 May 2021 19:47:00 +0100 | |
Message-ID: | <20210520184705.10845-1-will@kernel.org> | |
Cc: | linux-kernel-AT-vger.kernel.org, Will Deacon <will-AT-kernel.org>, Frederic Weisbecker <fweisbec-AT-gmail.com>, Thomas Gleixner <tglx-AT-linutronix.de>, Marc Zyngier <maz-AT-kernel.org>, Lorenzo Colitti <lorenzo-AT-google.com>, John Stultz <john.stultz-AT-linaro.org>, Stephen Boyd <sboyd-AT-kernel.org>, kernel-team-AT-android.com | |
Archive-link: | Article |
Hi all, This patch series adds support for hardware where the per-cpu tick timer cannot wake up from deep idle states (i.e. CLOCK_EVT_FEAT_C3STOP is set) yet there is a secondary per-cpu timer which is generally less preferable (i.e. slow to access) yet capable of delivering the wakeup. The meat and potatoes are in patches 3 and 4, but since I've not hacked on this part of the kernel before I would appreciate feedback on any of the changes I'm proposing. Cheers, Will Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Marc Zyngier <maz@kernel.org> Cc: Lorenzo Colitti <lorenzo@google.com> Cc: John Stultz <john.stultz@linaro.org> Cc: Stephen Boyd <sboyd@kernel.org> Cc: kernel-team@android.com --->8 Will Deacon (5): tick/broadcast: Drop unneeded CONFIG_GENERIC_CLOCKEVENTS_BROADCAST guard tick/broadcast: Split __tick_broadcast_oneshot_control() into a helper tick/broadcast: Prefer per-cpu oneshot wakeup timers to broadcast tick/broadcast: Program wakeup timer when entering idle if required timer_list: Print name of per-cpu wakeup device kernel/time/tick-broadcast.c | 135 ++++++++++++++++++++++++++++++----- kernel/time/tick-common.c | 2 +- kernel/time/tick-internal.h | 5 +- kernel/time/timer_list.c | 11 ++- 4 files changed, 133 insertions(+), 20 deletions(-) -- 2.31.1.818.g46aad6cb9e-goog