lkml.org 
[lkml]   [2023]   [Oct]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[patch V5 16/39] x86/microcode/intel: Rework intel_cpu_collect_info()
    Date
    From: Thomas Gleixner <tglx@linutronix.de>

    Nothing needs struct ucode_cpu_info. Make it take struct cpu_signature,
    let it return a boolean and simplify the implementation. Rename it now
    that the silly name clash with collect_cpu_info() is gone.

    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    ---
    arch/x86/include/asm/cpu.h | 4 ++--
    arch/x86/kernel/cpu/microcode/intel.c | 33 +++++++++------------------------
    drivers/platform/x86/intel/ifs/load.c | 8 +++-----
    3 files changed, 14 insertions(+), 31 deletions(-)
    ---
    --- a/arch/x86/include/asm/cpu.h
    +++ b/arch/x86/include/asm/cpu.h
    @@ -73,9 +73,9 @@ static inline void init_ia32_feat_ctl(st

    extern __noendbr void cet_disable(void);

    -struct ucode_cpu_info;
    +struct cpu_signature;

    -int intel_cpu_collect_info(struct ucode_cpu_info *uci);
    +void intel_collect_cpu_info(struct cpu_signature *sig);

    static inline bool intel_cpu_signatures_match(unsigned int s1, unsigned int p1,
    unsigned int s2, unsigned int p2)
    --- a/arch/x86/kernel/cpu/microcode/intel.c
    +++ b/arch/x86/kernel/cpu/microcode/intel.c
    @@ -66,36 +66,21 @@ static inline unsigned int exttable_size
    return et->count * EXT_SIGNATURE_SIZE + EXT_HEADER_SIZE;
    }

    -int intel_cpu_collect_info(struct ucode_cpu_info *uci)
    +void intel_collect_cpu_info(struct cpu_signature *sig)
    {
    - unsigned int val[2];
    - unsigned int family, model;
    - struct cpu_signature csig = { 0 };
    - unsigned int eax, ebx, ecx, edx;
    + sig->sig = cpuid_eax(1);
    + sig->pf = 0;
    + sig->rev = intel_get_microcode_revision();

    - memset(uci, 0, sizeof(*uci));
    + if (x86_model(sig->sig) >= 5 || x86_family(sig->sig) > 6) {
    + unsigned int val[2];

    - eax = 0x00000001;
    - ecx = 0;
    - native_cpuid(&eax, &ebx, &ecx, &edx);
    - csig.sig = eax;
    -
    - family = x86_family(eax);
    - model = x86_model(eax);
    -
    - if (model >= 5 || family > 6) {
    /* get processor flags from MSR 0x17 */
    native_rdmsr(MSR_IA32_PLATFORM_ID, val[0], val[1]);
    - csig.pf = 1 << ((val[1] >> 18) & 7);
    + sig->pf = 1 << ((val[1] >> 18) & 7);
    }
    -
    - csig.rev = intel_get_microcode_revision();
    -
    - uci->cpu_sig = csig;
    -
    - return 0;
    }
    -EXPORT_SYMBOL_GPL(intel_cpu_collect_info);
    +EXPORT_SYMBOL_GPL(intel_collect_cpu_info);

    /*
    * Returns 1 if update has been found, 0 otherwise.
    @@ -378,7 +363,7 @@ static __init struct microcode_intel *ge
    if (!(cp.data && cp.size))
    return NULL;

    - intel_cpu_collect_info(uci);
    + intel_collect_cpu_info(&uci->cpu_sig);

    return scan_microcode(cp.data, cp.size, uci);
    }
    --- a/drivers/platform/x86/intel/ifs/load.c
    +++ b/drivers/platform/x86/intel/ifs/load.c
    @@ -227,7 +227,7 @@ static int scan_chunks_sanity_check(stru

    static int image_sanity_check(struct device *dev, const struct microcode_header_intel *data)
    {
    - struct ucode_cpu_info uci;
    + struct cpu_signature sig;

    /* Provide a specific error message when loading an older/unsupported image */
    if (data->hdrver != MC_HEADER_TYPE_IFS) {
    @@ -240,11 +240,9 @@ static int image_sanity_check(struct dev
    return -EINVAL;
    }

    - intel_cpu_collect_info(&uci);
    + intel_collect_cpu_info(&sig);

    - if (!intel_find_matching_signature((void *)data,
    - uci.cpu_sig.sig,
    - uci.cpu_sig.pf)) {
    + if (!intel_find_matching_signature((void *)data, sig.sig, sig.pf)) {
    dev_err(dev, "cpu signature, processor flags not matching\n");
    return -EINVAL;
    }
    \
     
     \ /
      Last update: 2023-10-17 23:24    [W:2.060 / U:0.096 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site