AMD errata 400
"APIC Timer Interrupt Does Not Occur in Processor C-States"
is only mentioned in the revision guides for family 0fh and 10h
but we were checking for and disabling C1E on >= family 0fh.
Since family 16h all the bits of the Interrupt Pending MSR the
workaround uses are documented as read as zero. So this didn't cause
any problems on real hardware but did on EPYC based AWS t3a instances
according to Ilya Voronin who sent an initial patch to not attempt the
workaround on family 17h.
Tested on non-virtualised EPYC 7702P 17-31-00 by Hrvoje Popovski and
Ryzen 5 2600X 17-08-02 by myself.
ok mlarkin@
-/* $OpenBSD: lapic.c,v 1.57 2020/09/06 20:50:00 cheloha Exp $ */
+/* $OpenBSD: lapic.c,v 1.58 2021/06/11 05:33:16 jsg Exp $ */
/* $NetBSD: lapic.c,v 1.2 2003/05/08 01:04:35 fvdl Exp $ */
/*-
* Family 0Fh Processors"
* #32559 revision 3.00
*/
- if ((cpu_id & 0x00000f00) == 0x00000f00 &&
- (cpu_id & 0x0fff0000) >= 0x00040000) {
+ if (ci->ci_family == 0xf || ci->ci_family == 0x10) {
uint64_t msr;
msr = rdmsr(MSR_INT_PEN_MSG);
-/* $OpenBSD: lapic.c,v 1.47 2018/07/30 14:19:12 kettenis Exp $ */
+/* $OpenBSD: lapic.c,v 1.48 2021/06/11 05:33:16 jsg Exp $ */
/* $NetBSD: lapic.c,v 1.1.2.8 2000/02/23 06:10:50 sommerfeld Exp $ */
/*-
* Family 0Fh Processors"
* #32559 revision 3.00
*/
- if ((cpu_id & 0x00000f00) == 0x00000f00 &&
- (cpu_id & 0x0fff0000) >= 0x00040000) {
+ if (ci->ci_family == 0xf || ci->ci_family == 0x10) {
uint64_t msr;
msr = rdmsr(MSR_INT_PEN_MSG);