Name
Machine Check Error Avoidance on Page Size Change
Also known as
iTLB multihit
Kind
Other
CVE published
2019-11-14 CVE record
Advisories
INTEL-SA-00210
Linux reports it in
itlb_multihit
When software remaps a linear address from 4 KB pages to a large page (2 MB, 4 MB or 1 GB) with a different physical address or memory type, an affected processor can find both the old and the new translation in its instruction TLB on the next code fetch, before software invalidates the old one, and raise a machine check that hangs or resets the machine. An operating system does not do this, but a guest controls its own page tables, so on a host that maps guest memory with large pages it can take down the host. It is a denial of service, not a leak.

Affected processors

16 of the 57 microarchitectures listed are affected in all or some of their models.

What the sources say of each microarchitecture. Intel’s list gives each CPUID family, model and stepping it covers, with Intel’s mitigation for it (Software, MCU for a microcode update, or Hardware).
MicroarchitectureStatusDetailSource
NetBurst (Prescott, Nocona)AffectedLinux 7.3 sets the bug on INTEL_P4_CEDARMILL, INTEL_P4_PRESCOTT, INTEL_P4_PRESCOTT_2M: cpu_vuln_whitelist does not list them with NO_ITLB_MULTIHIT; and a processor released before 2018 does not report PSCHANGE_MC_NOLinux 7.3
Core (Merom, Conroe)AffectedLinux 7.3 sets the bug on INTEL_CORE2_MEROM, INTEL_CORE2_MEROM_L: cpu_vuln_whitelist does not list them with NO_ITLB_MULTIHIT; and a processor released before 2018 does not report PSCHANGE_MC_NOLinux 7.3
PenrynAffectedLinux 7.3 sets the bug on INTEL_CORE2_DUNNINGTON, INTEL_CORE2_PENRYN: cpu_vuln_whitelist does not list them with NO_ITLB_MULTIHIT; and a processor released before 2018 does not report PSCHANGE_MC_NOLinux 7.3
NehalemAffectedLinux 7.3 sets the bug on INTEL_NEHALEM, INTEL_NEHALEM_EP, INTEL_NEHALEM_EX, INTEL_NEHALEM_G: cpu_vuln_whitelist does not list them with NO_ITLB_MULTIHIT; and a processor released before 2018 does not report PSCHANGE_MC_NOLinux 7.3
WestmereAffectedLinux 7.3 sets the bug on INTEL_WESTMERE, INTEL_WESTMERE_EP, INTEL_WESTMERE_EX: cpu_vuln_whitelist does not list them with NO_ITLB_MULTIHIT; and a processor released before 2018 does not report PSCHANGE_MC_NOLinux 7.3
Sandy BridgeAffectedLinux 7.3 sets the bug on INTEL_SANDYBRIDGE, INTEL_SANDYBRIDGE_X: cpu_vuln_whitelist does not list them with NO_ITLB_MULTIHIT; and a processor released before 2018 does not report PSCHANGE_MC_NOLinux 7.3
Ivy BridgeAffectedLinux 7.3 sets the bug on INTEL_IVYBRIDGE, INTEL_IVYBRIDGE_X: cpu_vuln_whitelist does not list them with NO_ITLB_MULTIHIT; and a processor released before 2018 does not report PSCHANGE_MC_NOLinux 7.3
HaswellAffected06_3FH stepping 2 (Haswell Server EP/EP4S): Software
06_3FH stepping 4 (Haswell Server EX): Software
Intel’s list
BroadwellAffected06_4FH stepping 1 (1. Broadwell Server E/EP/EP4S - 2. Broadwell Server EX): Software
06_56H stepping 3 (Broadwell DE V2 - V3): Software
06_56H stepping 4 (Broadwell DE Y0): Software
06_56H stepping 5 (Hewitt Lake (Broadwell DE)): Software
Intel’s list
SkylakeAffected06_5EH stepping 3 (1. Skylake Xeon E3 - 2. Skylake H - 3. Skylake S): SoftwareIntel’s list
Kaby LakeAffected06_8EH stepping 9 (1. Amber Lake-Y - 2. Kaby Lake U - 3. Kaby Lake U23e - 4. Kaby Lake Y): Software
06_8EH stepping C (1. Whiskey Lake V - 2. Comet Lake U42 - 3. Amber Lake Y): Software
06_9EH stepping 9 (1. Kaby Lake S - 2. Kaby Lake Xeon E3): Software
Intel’s list
Coffee LakeAffected06_8EH stepping A (1. Coffee Lake U43e - 2. Whiskey Lake): Software
06_8EH stepping B (Whiskey Lake U): Software
06_8EH stepping C (1. Whiskey Lake V - 2. Comet Lake U42 - 3. Amber Lake Y): Software
06_9EH stepping A (Coffee Lake H): Software
06_9EH stepping C (Coffee Lake S): Software
06_9EH stepping D (1. Coffee Lake H - 2. Coffee Lake Xeon E - 3. Coffee Lake S): Software
Intel’s list
Comet LakeAffected06_8EH stepping C (1. Whiskey Lake V - 2. Comet Lake U42 - 3. Amber Lake Y): Software
06_A5H stepping 2 (Comet Lake H): Software
06_A5H stepping 3 (Comet Lake-S): Software
06_A5H stepping 5 (Comet Lake-S): Software
06_A6H stepping 0 (Comet Lake U62): Software
06_A6H stepping 1 (Comet Lake U62): Software
Intel’s list
Ice Lake (client)Affected06_7EH stepping 5 (Ice Lake U - Ice Lake Y): SoftwareIntel’s list
Skylake-SPAffected06_55H stepping 3 (Skylake Server): Software
06_55H stepping 4 (1. Skylake Server - 2. Skylake D/Bakerville): Software
Intel’s list
Cooper LakeAffected06_55H stepping B (Cooper Lake): SoftwareIntel’s list
Tiger LakeNot affected06_8CH stepping 1 (Tiger Lake U): Not Affected
06_8CH stepping 1 (Tiger Lake U): Not Affected
06_8CH stepping 2 (1. Tiger Lake U Refresh - 2. Tiger Lake H35): Not Affected
06_8DH stepping 1 (Tiger Lake H): Not Affected
06_8DH stepping 1 (Tiger Lake H): Not Affected
Intel’s list
Alder LakeNot affected06_97H stepping 2 (Alder Lake S (Golden Cove - Gracemont)): Not Affected
06_97H stepping 5 (Alder Lake S (Golden Cove - Gracemont)): Not Affected
06_97H stepping 5 (Catlow (Golden Cove)): Not Affected
06_9AH stepping 3 (1. Alder Lake H (Golden Cove - Gracemont) - 2. Alder Lake P (Golden Cove - Gracemont)): Not Affected
06_9AH stepping 4 (Alder Lake U (Golden Cove - Gracemont)): Not Affected
Intel’s list
Rocket LakeNot affected06_A7H stepping 1 (Rocket Lake): Not AffectedIntel’s list
Raptor LakeNot affected06_B7H stepping 1 (1. Raptor Lake S - 2. Raptor Lake HX (Raptor Cove/Gracemont)): Not Affected
06_B7H stepping 1 (Catlow (Raptor Cove)): Not Affected
06_BAH stepping 2 - 3 - 8 (1. Raptor Lake P - 2. Raptor Lake H + refresh - 3. Raptor Lake U + refresh (Raptor Cove/Gracemont)): Not Affected
06_BFH stepping 2 - 5 (Raptor Lake S (Raptor Cove/Gracemont)): Not Affected
Intel’s list
Meteor LakeNot affected06_AAH stepping 4 (Meteor Lake U/H/PS (Redwood Cove - Crestmont)): Not AffectedIntel’s list
Arrow LakeNot affected06_B5H stepping 0 (Arrow Lake U (Redwood Cove - Crestmont)): Not Affected
06_C5H stepping 2 (Arrow Lake H (Lion Cove - Skymont)): Not Affected
06_C6H stepping 2 (Arrow Lake H/HX/S/S Plus (Lion Cove - Skymont)): Not Affected
Intel’s list
Lunar LakeNot affected06_BDH stepping 1 (Lunar Lake (Lion Cove - Skymont)): Not AffectedIntel’s list
Panther LakeNot affected06_CCH stepping 2 - 3 (Panther Lake (Cougar Cove - Darkmont)): Not AffectedIntel’s list
Ice Lake (server)Not affected06_6AH stepping 6 (Ice Lake Xeon-SP): Not Affected
06_6CH stepping All (Ice Lake Xeon D (Idaville)): Not Affected
Intel’s list
Emerald RapidsNot affected06_CFH stepping 2 (Emerald Rapids (Raptor Cove)): Not AffectedIntel’s list
Sapphire RapidsNot affected06_8FH stepping 5 - 6 - 7 - 8 (1. Sapphire Rapids - 2. Sapphire Rapids Edge Enhanced (Golden Cove)): Not Affected
06_8FH stepping 5 - 6 - 8 (Sapphire Rapids (Golden Cove) - Sapphire Rapids HBM): Not Affected
Intel’s list
Granite RapidsNot affected06_ADH stepping 1 (Granite Rapids (Redwood Cove)): Not Affected
06_ADH stepping 1 (Granite Rapids (Redwood Cove)): Not Affected
06_ADH stepping 1 (Granite Rapids R1S (Redwood Cove)): Not Affected
06_AEH stepping 1 (Granite Rapids D (Redwood Cove)/Kaseyville): Not Affected
Intel’s list
Sierra ForestNot affected06_AFH stepping 3 (Sierra Forest (Crestmont)): Not AffectedIntel’s list
Clearwater ForestNot affected06_DDH stepping 1 (Clearwater Forest (Darkmont)): Not AffectedIntel’s list
BonnellNot affectedLinux 7.3 lists INTEL_ATOM_BONNELL, INTEL_ATOM_BONNELL_MID in cpu_vuln_whitelist with NO_ITLB_MULTIHITLinux 7.3
SaltwellNot affectedLinux 7.3 lists INTEL_ATOM_SALTWELL, INTEL_ATOM_SALTWELL_MID, INTEL_ATOM_SALTWELL_TABLET in cpu_vuln_whitelist with NO_ITLB_MULTIHITLinux 7.3
SilvermontNot affectedLinux 7.3 lists INTEL_ATOM_SILVERMONT, INTEL_ATOM_SILVERMONT_D, INTEL_ATOM_SILVERMONT_MID, INTEL_ATOM_SILVERMONT_MID2 in cpu_vuln_whitelist with NO_ITLB_MULTIHITLinux 7.3
AirmontNot affectedLinux 7.3 lists INTEL_ATOM_AIRMONT, INTEL_ATOM_AIRMONT_NP in cpu_vuln_whitelist with NO_ITLB_MULTIHITLinux 7.3
GoldmontNot affected06_5CH stepping A (Apollo Lake): Not Affected
06_5FH stepping All (Denverton (Goldmont)): Not Affected
Intel’s list
Goldmont PlusNot affected06_7AH stepping 8 (Gemini Lake): Not AffectedIntel’s list
TremontNot affected06_86H stepping 5 (Snow Ridge BTS (Tremont)): Not Affected
06_86H stepping 7 (Parker Ridge / Snow Ridge NS/NX/BTS): Not Affected
06_96H stepping All (Elkhart Lake (Tremont)): Not Affected
06_9CH stepping All (Jasper Lake (Tremont)): Not Affected
Intel’s list
GracemontNot affected06_9AH stepping 4 (Arizona Beach (Gracemont)): Not Affected
06_BEH stepping 0 (Alder Lake N (Gracemont)/Twin Lake): Not Affected
Intel’s list
Knights LandingNot affectedLinux 7.3 lists INTEL_XEON_PHI_KNL in cpu_vuln_whitelist with NO_ITLB_MULTIHITLinux 7.3
Knights MillNot affectedLinux 7.3 lists INTEL_XEON_PHI_KNM in cpu_vuln_whitelist with NO_ITLB_MULTIHITLinux 7.3
K8 (Hammer)Not affectedLinux 7.3 lists AMD family Fh in cpu_vuln_whitelist with NO_ITLB_MULTIHITLinux 7.3
K10 (Family 10h)Not affectedLinux 7.3 lists AMD family 10h, AMD family 12h in cpu_vuln_whitelist with NO_ITLB_MULTIHITLinux 7.3
BulldozerNot affectedLinux 7.3 lists AMD family 15h in cpu_vuln_whitelist with NO_ITLB_MULTIHITLinux 7.3
PiledriverNot affectedLinux 7.3 lists AMD family 15h in cpu_vuln_whitelist with NO_ITLB_MULTIHITLinux 7.3
SteamrollerNot affectedLinux 7.3 lists AMD family 15h in cpu_vuln_whitelist with NO_ITLB_MULTIHITLinux 7.3
ExcavatorNot affectedLinux 7.3 lists AMD family 15h in cpu_vuln_whitelist with NO_ITLB_MULTIHITLinux 7.3
ZenNot affectedLinux 7.3 lists AMD family 17h in cpu_vuln_whitelist with NO_ITLB_MULTIHITLinux 7.3
Zen+Not affectedLinux 7.3 lists AMD family 17h in cpu_vuln_whitelist with NO_ITLB_MULTIHITLinux 7.3
Zen 2Not affectedLinux 7.3 lists AMD family 17h in cpu_vuln_whitelist with NO_ITLB_MULTIHITLinux 7.3
Zen 3Not affectedLinux 7.3 lists AMD family 19h in cpu_vuln_whitelist with NO_ITLB_MULTIHITLinux 7.3
Zen 4Not affectedLinux 7.3 lists AMD family 19h in cpu_vuln_whitelist with NO_ITLB_MULTIHITLinux 7.3
Zen 5Not affectedLinux 7.3 lists AMD family 1Ah in cpu_vuln_whitelist with NO_ITLB_MULTIHITLinux 7.3
Zen 6Not affectedLinux 7.3 lists AMD family 1Ah in cpu_vuln_whitelist with NO_ITLB_MULTIHITLinux 7.3
BobcatNot affectedLinux 7.3 lists AMD family 14h in cpu_vuln_whitelist with NO_ITLB_MULTIHITLinux 7.3
JaguarNot affectedLinux 7.3 lists AMD family 16h in cpu_vuln_whitelist with NO_ITLB_MULTIHITLinux 7.3
PumaNot affectedLinux 7.3 lists AMD family 16h in cpu_vuln_whitelist with NO_ITLB_MULTIHITLinux 7.3
DhyanaNot affectedLinux 7.3 lists Hygon family 18h in cpu_vuln_whitelist with NO_ITLB_MULTIHITLinux 7.3

Mitigations

  • Hypervisor: KVM maps guest memory in large pages only as not executable; when the guest runs code there, KVM splits that page into 4 KB pages. The kvm.nx_huge_pages option controls it. Source.

How to check a machine

On Linux, /sys/devices/system/cpu/vulnerabilities/itlb_multihit holds one of these lines:

  • Not affected
  • KVM: Mitigation: VMX disabled
  • KVM: Mitigation: Split huge pages
  • KVM: Vulnerable

Source.

Sources

  1. Linux 7.3 Documentation/admin-guide/hw-vuln/multihit.rst: problem