lkml.org 
[lkml]   [2011]   [Jan]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[34-longterm 159/260] x86, cpu: After uncapping CPUID, re-run CPU feature detection
    Date
    From: H. Peter Anvin <hpa@linux.intel.com>

    commit d900329e20f4476db6461752accebcf7935a8055 upstream.

    After uncapping the CPUID level, we need to also re-run the CPU
    feature detection code.

    This resolves kernel bugzilla 16322.

    Reported-by: boris64 <bugzilla.kernel.org@boris64.net>
    LKML-Reference: <tip-@git.kernel.org>
    Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
    Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
    ---
    arch/x86/kernel/cpu/common.c | 2 +-
    arch/x86/kernel/cpu/cpu.h | 1 +
    arch/x86/kernel/cpu/intel.c | 1 +
    3 files changed, 3 insertions(+), 1 deletions(-)

    diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c
    index 4868e4a..c4329af 100644
    --- a/arch/x86/kernel/cpu/common.c
    +++ b/arch/x86/kernel/cpu/common.c
    @@ -537,7 +537,7 @@ void __cpuinit cpu_detect(struct cpuinfo_x86 *c)
    }
    }

    -static void __cpuinit get_cpu_cap(struct cpuinfo_x86 *c)
    +void __cpuinit get_cpu_cap(struct cpuinfo_x86 *c)
    {
    u32 tfms, xlvl;
    u32 ebx;
    diff --git a/arch/x86/kernel/cpu/cpu.h b/arch/x86/kernel/cpu/cpu.h
    index 3624e8a..f668bb1 100644
    --- a/arch/x86/kernel/cpu/cpu.h
    +++ b/arch/x86/kernel/cpu/cpu.h
    @@ -33,5 +33,6 @@ extern const struct cpu_dev *const __x86_cpu_dev_start[],
    *const __x86_cpu_dev_end[];

    extern void cpu_detect_cache_sizes(struct cpuinfo_x86 *c);
    +extern void get_cpu_cap(struct cpuinfo_x86 *c);

    #endif
    diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c
    index 1366c7c..e546d54 100644
    --- a/arch/x86/kernel/cpu/intel.c
    +++ b/arch/x86/kernel/cpu/intel.c
    @@ -40,6 +40,7 @@ static void __cpuinit early_init_intel(struct cpuinfo_x86 *c)
    misc_enable &= ~MSR_IA32_MISC_ENABLE_LIMIT_CPUID;
    wrmsrl(MSR_IA32_MISC_ENABLE, misc_enable);
    c->cpuid_level = cpuid_eax(0);
    + get_cpu_cap(c);
    }
    }

    --
    1.7.3.3


    \
     
     \ /
      Last update: 2011-01-02 08:49    [W:0.020 / U:67.004 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site