Skip to content

Commit

Permalink
EDAC/Intel: Do not load EDAC driver when running as a guest
Browse files Browse the repository at this point in the history
There's little to no point in loading an EDAC driver running in a guest:
1) The CPU model reported by CPUID may not represent actual h/w
2) The hypervisor likely does not pass in access to memory controller devices
3) Hypervisors generally do not pass corrected error details to guests

Add a check in each of the Intel EDAC drivers for X86_FEATURE_HYPERVISOR
and simply return -ENODEV in the init routine.

Acked-by: Borislav Petkov <bp@suse.de>
Signed-off-by: Tony Luck <tony.luck@intel.com>
Link: https://lore.kernel.org/r/20210615174419.GA1087688@agluck-desk2.amr.corp.intel.com
  • Loading branch information
Luck, Tony committed Jun 18, 2021
1 parent ad774bd commit f0a029f
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 0 deletions.
3 changes: 3 additions & 0 deletions drivers/edac/i10nm_base.c
Original file line number Diff line number Diff line change
Expand Up @@ -414,6 +414,9 @@ static int __init i10nm_init(void)
if (owner && strncmp(owner, EDAC_MOD_STR, sizeof(EDAC_MOD_STR)))
return -EBUSY;

if (cpu_feature_enabled(X86_FEATURE_HYPERVISOR))
return -ENODEV;

id = x86_match_cpu(i10nm_cpuids);
if (!id)
return -ENODEV;
Expand Down
3 changes: 3 additions & 0 deletions drivers/edac/pnd2_edac.c
Original file line number Diff line number Diff line change
Expand Up @@ -1554,6 +1554,9 @@ static int __init pnd2_init(void)
if (owner && strncmp(owner, EDAC_MOD_STR, sizeof(EDAC_MOD_STR)))
return -EBUSY;

if (cpu_feature_enabled(X86_FEATURE_HYPERVISOR))
return -ENODEV;

id = x86_match_cpu(pnd2_cpuids);
if (!id)
return -ENODEV;
Expand Down
3 changes: 3 additions & 0 deletions drivers/edac/sb_edac.c
Original file line number Diff line number Diff line change
Expand Up @@ -3510,6 +3510,9 @@ static int __init sbridge_init(void)
if (owner && strncmp(owner, EDAC_MOD_STR, sizeof(EDAC_MOD_STR)))
return -EBUSY;

if (cpu_feature_enabled(X86_FEATURE_HYPERVISOR))
return -ENODEV;

id = x86_match_cpu(sbridge_cpuids);
if (!id)
return -ENODEV;
Expand Down
3 changes: 3 additions & 0 deletions drivers/edac/skx_base.c
Original file line number Diff line number Diff line change
Expand Up @@ -656,6 +656,9 @@ static int __init skx_init(void)
if (owner && strncmp(owner, EDAC_MOD_STR, sizeof(EDAC_MOD_STR)))
return -EBUSY;

if (cpu_feature_enabled(X86_FEATURE_HYPERVISOR))
return -ENODEV;

id = x86_match_cpu(skx_cpuids);
if (!id)
return -ENODEV;
Expand Down

0 comments on commit f0a029f

Please sign in to comment.