[PATCH v2 for-4.21 0/9] x86/HPET: broadcast IRQ and other improvements

Jan Beulich posted 9 patches 1 week, 2 days ago
Failed in applying to current master (apply log)
There is a newer version of this series
[PATCH v2 for-4.21 0/9] x86/HPET: broadcast IRQ and other improvements
Posted by Jan Beulich 1 week, 2 days ago
While 1db7829e5657 ("x86/hpet: do local APIC EOI after interrupt processing")
helped quite a bit, nested interrupts could still occur. First and foremost
as a result of IRQ migration (where we don't have any control over the vectors
chosen). Hence besides reducing the number of IRQs that can be raised (first
patch), the main goal here is to eliminate the potential for nested IRQs
(patch 2). These patches are imo 4.21 candidates. Patches 3 and onwards likely
aren't important enough anymore at this point of the release cycle, even if
those with a Fixes: tag may end up being backported later on.

v2 has 3 patches dropped and 2 new ones introduced, plus in particular a fair
bit of rework of the "main" patch. See individual patches for details.

1: disable unused channels
2: use single, global, low-priority vector for broadcast IRQ
3: replace handle_hpet_broadcast()'s on-stack cpumask_t
4: avoid indirect call to event handler
5: make another channel flags update atomic
6: move legacy tick IRQ count adjustment
7: reduce hpet_next_event() call sites
8: don't use hardcoded 0 for "long timeout"
9: simplify "expire" check a little in reprogram_hpet_evt_channel()

Jan