lkml.org 
[lkml]   [2012]   [Apr]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 2/2] x86, microcode: Ensure that module is only loaded for
    From: Andreas Herrmann <andreas.herrmann3@amd.com>
    Date: Thu, 12 Apr 2012 16:51:57 +0200
    Subject: [PATCH 2/2] x86, microcode: Ensure that module is only loaded for supported AMD CPUs

    Exit early when there's no support for a particular CPU family. Also,
    fixup the "no support for this CPU vendor" to be issued only when the
    driver is attempted to be loaded on an unsupported vendor.

    Cc: stable@vger.kernel.org
    Cc: Tigran Aivazian <tigran@aivazian.fsnet.co.uk>
    Cc: Borislav Petkov <borislav.petkov@amd.com>
    [Boris: added a commit msg because Andreas is lazy]
    Signed-off-by: Andreas Herrmann <andreas.herrmann3@amd.com>
    ---
    arch/x86/kernel/microcode_amd.c | 12 +++++++-----
    arch/x86/kernel/microcode_core.c | 6 +++---
    2 files changed, 10 insertions(+), 8 deletions(-)

    diff --git a/arch/x86/kernel/microcode_amd.c b/arch/x86/kernel/microcode_amd.c
    index 73465aa..8a2ce8f 100644
    --- a/arch/x86/kernel/microcode_amd.c
    +++ b/arch/x86/kernel/microcode_amd.c
    @@ -82,11 +82,6 @@ static int collect_cpu_info_amd(int cpu, struct cpu_signature *csig)
    {
    struct cpuinfo_x86 *c = &cpu_data(cpu);

    - if (c->x86_vendor != X86_VENDOR_AMD || c->x86 < 0x10) {
    - pr_warning("CPU%d: family %d not supported\n", cpu, c->x86);
    - return -1;
    - }
    -
    csig->rev = c->microcode;
    pr_info("CPU%d: patch_level=0x%08x\n", cpu, csig->rev);

    @@ -380,6 +375,13 @@ static struct microcode_ops microcode_amd_ops = {

    struct microcode_ops * __init init_amd_microcode(void)
    {
    + struct cpuinfo_x86 *c = &cpu_data(0);
    +
    + if (c->x86_vendor != X86_VENDOR_AMD || c->x86 < 0x10) {
    + pr_warning("AMD CPU family 0x%x not supported\n", c->x86);
    + return NULL;
    + }
    +
    patch = (void *)get_zeroed_page(GFP_KERNEL);
    if (!patch)
    return NULL;
    diff --git a/arch/x86/kernel/microcode_core.c b/arch/x86/kernel/microcode_core.c
    index d389e74..c9bda6d 100644
    --- a/arch/x86/kernel/microcode_core.c
    +++ b/arch/x86/kernel/microcode_core.c
    @@ -526,11 +526,11 @@ static int __init microcode_init(void)
    microcode_ops = init_intel_microcode();
    else if (c->x86_vendor == X86_VENDOR_AMD)
    microcode_ops = init_amd_microcode();
    -
    - if (!microcode_ops) {
    + else
    pr_err("no support for this CPU vendor\n");
    +
    + if (!microcode_ops)
    return -ENODEV;
    - }

    microcode_pdev = platform_device_register_simple("microcode", -1,
    NULL, 0);
    --
    1.7.8.4
    --
    Regards/Gruss,
    Boris.

    Advanced Micro Devices GmbH
    Einsteinring 24, 85609 Dornach
    GM: Alberto Bozzo
    Reg: Dornach, Landkreis Muenchen
    HRB Nr. 43632 WEEE Registernr: 129 19551



    \
     
     \ /
      Last update: 2012-04-12 18:37    [W:0.026 / U:32.268 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site