Re: Bug (minor): microcode_intel.c applies updates to hyperthreadedcores

From: Michael Breuer
Date: Wed Dec 02 2009 - 23:35:11 EST


Fair point - guess it's a different bug. Looks like the mechanism sets up the requests first for all cpus, then loads them. apply_microcode doesn't recheck.

CPU is a core i7 920; ht enabled. cpuinfo shows 4 cores; 8 cpus, as expected.




From my log:
Dec 2 16:53:47 mail kernel: microcode: CPU0 sig=0x106a5, pf=0x2, revision=0xf
Dec 2 16:53:47 mail kernel: platform microcode: firmware: requesting intel-ucode/06-1a-05
Dec 2 16:53:47 mail kernel: microcode: CPU1 sig=0x106a5, pf=0x2, revision=0xf
Dec 2 16:53:47 mail kernel: platform microcode: firmware: requesting intel-ucode/06-1a-05
Dec 2 16:53:47 mail kernel: microcode: CPU2 sig=0x106a5, pf=0x2, revision=0xf
Dec 2 16:53:47 mail kernel: platform microcode: firmware: requesting intel-ucode/06-1a-05
Dec 2 16:53:47 mail kernel: microcode: CPU3 sig=0x106a5, pf=0x2, revision=0xf
Dec 2 16:53:47 mail kernel: platform microcode: firmware: requesting intel-ucode/06-1a-05
Dec 2 16:53:47 mail kernel: microcode: CPU4 sig=0x106a5, pf=0x2, revision=0xf
Dec 2 16:53:47 mail kernel: platform microcode: firmware: requesting intel-ucode/06-1a-05
Dec 2 16:53:47 mail kernel: microcode: CPU5 sig=0x106a5, pf=0x2, revision=0xf
Dec 2 16:53:47 mail kernel: platform microcode: firmware: requesting intel-ucode/06-1a-05
Dec 2 16:53:47 mail kernel: microcode: CPU6 sig=0x106a5, pf=0x2, revision=0xf
Dec 2 16:53:47 mail kernel: platform microcode: firmware: requesting intel-ucode/06-1a-05
Dec 2 16:53:47 mail kernel: microcode: CPU7 sig=0x106a5, pf=0x2, revision=0xf
Dec 2 16:53:47 mail kernel: platform microcode: firmware: requesting intel-ucode/06-1a-05
Dec 2 16:53:47 mail kernel: microcode: CPU0 updated to revision 0x11, date = 2009-04-14
Dec 2 16:53:47 mail kernel: microcode: CPU1 updated to revision 0x11, date = 2009-04-14
Dec 2 16:53:47 mail kernel: microcode: CPU2 updated to revision 0x11, date = 2009-04-14
Dec 2 16:53:47 mail kernel: microcode: CPU3 updated to revision 0x11, date = 2009-04-14
Dec 2 16:53:47 mail kernel: microcode: CPU4 updated to revision 0x11, date = 2009-04-14
Dec 2 16:53:47 mail kernel: microcode: CPU5 updated to revision 0x11, date = 2009-04-14
Dec 2 16:53:47 mail kernel: microcode: CPU6 updated to revision 0x11, date = 2009-04-14
Dec 2 16:53:47 mail kernel: microcode: CPU7 updated to revision 0x11, date = 2009-04-14


On 12/02/2009 11:20 PM, Arjan van de Ven wrote:
On Wed, 02 Dec 2009 23:06:19 -0500
Michael Breuer<mbreuer@xxxxxxxxxx> wrote:

According to spec, microcode should only be applied to actual cores.
As things are currently structured, looks like the fix would be in
microcode_core.c. I don't think changing the loop to look for cores
vs. cpu's would affect anything adversely, but honestly am not
familiar enough with this code or other cpu types to be sure.

isn't this

for each (logical) cpu
check microcode version of the cpu
if too old, apply microcode

the 2nd pair of a hyperthreading pair will never see the 'too old' case
happen...



--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/