lkml.org 
[lkml]   [2021]   [Jul]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.12 227/700] EDAC/Intel: Do not load EDAC driver when running as a guest
    Date
    From: Luck, Tony <tony.luck@intel.com>

    [ Upstream commit f0a029fff4a50eb01648810a77ba1873e829fdd4 ]

    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
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/edac/i10nm_base.c | 3 +++
    drivers/edac/pnd2_edac.c | 3 +++
    drivers/edac/sb_edac.c | 3 +++
    drivers/edac/skx_base.c | 3 +++
    4 files changed, 12 insertions(+)

    diff --git a/drivers/edac/i10nm_base.c b/drivers/edac/i10nm_base.c
    index 238a4ad1e526..37b4e875420e 100644
    --- a/drivers/edac/i10nm_base.c
    +++ b/drivers/edac/i10nm_base.c
    @@ -278,6 +278,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;
    diff --git a/drivers/edac/pnd2_edac.c b/drivers/edac/pnd2_edac.c
    index 928f63a374c7..c94ca1f790c4 100644
    --- a/drivers/edac/pnd2_edac.c
    +++ b/drivers/edac/pnd2_edac.c
    @@ -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;
    diff --git a/drivers/edac/sb_edac.c b/drivers/edac/sb_edac.c
    index 93daa4297f2e..4c626fcd4dcb 100644
    --- a/drivers/edac/sb_edac.c
    +++ b/drivers/edac/sb_edac.c
    @@ -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;
    diff --git a/drivers/edac/skx_base.c b/drivers/edac/skx_base.c
    index 6a4f0b27c654..4dbd46575bfb 100644
    --- a/drivers/edac/skx_base.c
    +++ b/drivers/edac/skx_base.c
    @@ -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;
    --
    2.30.2


    \
     
     \ /
      Last update: 2021-07-12 09:35    [W:2.099 / U:0.208 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site