Revert "x86/apic: Always explicitly disarm TSC-deadline timer"
This reverts commit 5a5d98e292
.
This commit is contained in:
parent
e19e6b3388
commit
57c42b3af7
1 changed files with 1 additions and 13 deletions
|
@ -491,19 +491,7 @@ static int lapic_timer_shutdown(struct clock_event_device *evt)
|
||||||
v = apic_read(APIC_LVTT);
|
v = apic_read(APIC_LVTT);
|
||||||
v |= (APIC_LVT_MASKED | LOCAL_TIMER_VECTOR);
|
v |= (APIC_LVT_MASKED | LOCAL_TIMER_VECTOR);
|
||||||
apic_write(APIC_LVTT, v);
|
apic_write(APIC_LVTT, v);
|
||||||
|
apic_write(APIC_TMICT, 0);
|
||||||
/*
|
|
||||||
* Setting APIC_LVT_MASKED (above) should be enough to tell
|
|
||||||
* the hardware that this timer will never fire. But AMD
|
|
||||||
* erratum 411 and some Intel CPU behavior circa 2024 say
|
|
||||||
* otherwise. Time for belt and suspenders programming: mask
|
|
||||||
* the timer _and_ zero the counter registers:
|
|
||||||
*/
|
|
||||||
if (v & APIC_LVT_TIMER_TSCDEADLINE)
|
|
||||||
wrmsrl(MSR_IA32_TSC_DEADLINE, 0);
|
|
||||||
else
|
|
||||||
apic_write(APIC_TMICT, 0);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue