4 ms·
> New CPU microcode is enough What would that entail? Disabling speculation completely? Disabling memory accesses during speculation?
by contrarian_ 9y ago
> New CPU microcode is enough
What would that entail? Disabling speculation completely? Disabling memory accesses during speculation?
- bonzini 9y agoDisabling indirect branch prediction (and thus speculation after indirect branches) while in kernel mode, or flushing the indirect branch predictor on kernel mode entry. Both need OS support in addition to the microcode, but the change is less invasive than PTI.
- contrarian_ 9y agoThat only fixes one variant of Spectre, and only for code running in kernel mode. The "out of bounds" Spectre variant is still feasible. Also: What about hyperthreads? It seems to be many people's assumption that the BTB is shared within a physical core.
- bonzini 9y agoThe out of bounds variant is fixable in the OS, just add a fence instruction between the check and the load. For code running in user mode, you flush the branch predictor on each context switch---again, new microcode + patched OS. Hyperthreads are tricky. Those are not yet fixed by microcode AIUI, and in the future you may want a usermode program to say "I don't want indirect branch prediction because I am afraid of what the other hyperthread might do to me". That would require some new system call (like a new prctl on Linux) or something like that.
- wilun 9y agoGreat. Now we just have to think of new attacks using the same general idea to slow down all computers by yet another 10% :p
- PeterisP 9y agoWouldn't that be a serious performance hit?
- bonzini 9y agoIt is. Same ballpark as PTI on microbenchmarks, but a little better on macrobenchmarks.