On Wed, Mar 13 2024 at 21:59, Russell King (Oracle) wrote: > On Wed, Mar 13, 2024 at 02:30:43PM -0700, Florian Fainelli wrote: > I haven't understood the code there yet, and how it would interact with > arch code, but one thing that immediately jumps out to me is this: > > " As long as a CPU is busy it expires both local and global timers. When a > CPU goes idle it arms for the first expiring local timer." > > So are local timers "armed" when they are enqueued while the cpu is > "busy" during initialisation, and will they expire, and will that > expiry be delivered in a timely manner? The local timers are timers which are pinned on a CPU. Global ones do not care about the CPU they expire on. So if the CPU goes idle then it arms for the first local timer. If the first global timer expires after the first local, nothing to see. If it expires before then that timer is queued in the migration hierarchy and some other busy CPU will take care of it. If the last CPU goes idle then it has to arm for the first timer (it's own local, global and the hierarchy). So it's all covered in theory, but there seems to be an issue somewhere. We'll figure it out. Thanks, tglx