Intel 6th and 7th Gen Processor Microcode Flaws Exposed

A new flaw has been discovered in Intel microprocessor codes that affects all intel 6th gen and 7th gen Skylake and Kaby Lake processors. This new flaw in the hyperthreading micro-code can cause “unpredictable system behaviors”. The issue was first taken up by the eminent journalists at hothardware, We strive to provide some more insight onto the matter.

650px-kaby_lake_(quad_core)

The credit to the discovery of this flaw goes to Mark Shinwell who is a core toolchain developer at OCaml, Though, this issue also seems to have been studied by Intel and is documented in their own errata studies, and is presented here courtesy of Debian Listings.

microcode

It is always good to understand at least a bit of the problem. So, to shed more light on the meanings of the terms, note that program codes are usually assembled in the processor registers rather than system memory for speed. But a x86 processor does not have too many registers. There are 4 main categories, General, Segment, Pointers, and EFLAGS. This particular flaw seems to be from the general registers. There are many categories of general registers, namely Accumulator (A), Base (B), Counter (C) and Data (D). While H and L stands for “high byte” and “low byte”. Thus, we have terminologies like AH, BH, CH and DH. These are 8 bit registers. And their extensions are the AX, EAX and RAX registers, which play the role of 16, or 32 bit registers. The logical processor stands for the hyperthreading implementation, which the system actually sees as another full core. What the documentation clearly says is that the problem has been observed to occur only if hyperthreading is active.

The problem has not been documented explicitly enough to know the full extent of system instabilities one may face. It seems that compiler and program crashes are possible outcomes. And the fix is currently nontrivial for both Skylake and Kabylake processors. For owners of Kaby Lake processors, the safest way right now, is to completely disable hyperthreading from bios and wait for a fix from your motherboard vendor. In all probability, they are working on a fix as we speak. Contact your motherboard vendor and refrain from turning hyperthreading on until a bios update that fixes the issue.

For Skylake users, the process is rather complicated. For Linux users, the procedure has been listed out in the link to the Debian listings given above, in great detail, along with other insights to the problem, as well as instances where the problem may occur. If your processor model (as it is listed in /proc/cpuinfo) is 78 or 94, and the stepping is 3, there is a fix available for you. Do give them a visit to know much more about this flaw. For Windows users, currently it is recommended that you simply disable hyperthreading and wait for Microsoft to issue a patch, or for motherboard vendors to issue a BIOS update for your motherboard.

One should use such opportunities like these to check that their system is fully up to date. Hyperthreading had always been a bumpy ride for Intel, starting from all the way back to P4 days to the Nehalem days. Hopefully there will be lesser and lesser issues as the platform matures, though it is rather unusual to see such a flaw this late into its age.