Messages in this thread | | | Date | Thu, 24 Jul 2014 12:07:40 -0300 | From | Henrique de Moraes Holschuh <> | Subject | Re: [PATCH 5/8] x86, microcode, intel: don't use fields from unknown format header |
| |
On Thu, 24 Jul 2014, Borislav Petkov wrote: > On Thu, Jul 24, 2014 at 10:30:59AM -0300, Henrique de Moraes Holschuh wrote: > > We care about ->hdrver to get data from the header. We only care about > > ->ldrver for the exact procedure to install it in the processor. > > Does it matter?
It might. It could break backwards-compatibility in the microcode update distribution.
> microcode_sanity_check() errors out if any of the two are not 1 and we > end up not applying the microcode if so.
We don't just skip that microcode, we also skip every microcode after that one, because we _abort_ on the first error we find. This is not the best possible behaviour for a ldrver mismatch, where we could safely skip just that one microcode.
Suppose you have a box that takes ldrver 1 microcode, and Intel releases microcode for a new type of core that has a ldrver of 2, and it happens to not be the last one in the microcode collection sent by userspace (via the early initrd or /dev/cpu/microcode). We might well abort before we find the correct microcode update for that box.
It is an unlikely scenario, but AFAIK it is not impossible. All it takes is Intel releasing something APU-like and deciding to use the microcode update facilities to update something that is not a CPU core.
-- "One disk to rule them all, One disk to find them. One disk to bring them all and in the darkness grind them. In the Land of Redmond where the shadows lie." -- The Silicon Valley Tarot Henrique Holschuh
| |