mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
x86/HPET: make another channel flags update atomic
Unlike the setting of HPET_EVT_LEGACY in hpet_broadcast_init(), the
setting of HPET_EVT_DISABLE in hpet_disable_legacy_broadcast() isn't init-
only and hence can race other flag manipulation (not all of which occur
while holding the channel's lock). While possibly any such updates would
only ever occur when HPET_EVT_LEGACY isn't set in the first place, this
doesn't look straightforward to prove, so better be on the safe side.
Fixes: d09486dba3 ("cpuidle: Enable hpet broadcast by default")
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Roger Pau Monné <roger.pau@citrix.com>
This commit is contained in:
1 parent
93c8070e02
commit
d4691d3aaa
1 file changed
+1
-1
+1
-1
@@ -729,7 +729,7 @@ void hpet_disable_legacy_broadcast(void)
|
||||
|
||||
spin_lock_irqsave(&hpet_events->lock, flags);
|
||||
|
||||
hpet_events->flags |= HPET_EVT_DISABLE;
|
||||
set_bit(HPET_EVT_DISABLE_BIT, &hpet_events->flags);
|
||||
|
||||
/* disable HPET T0 */
|
||||
cfg = hpet_read32(HPET_Tn_CFG(0));
|
||||
|
||||