lkml.org 
[lkml]   [2012]   [Jun]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 2/4] x86: Track minimum microcode revision globally v2
    On Wed, Jun 13, 2012 at 01:20:40PM -0700, Andi Kleen wrote:
    > From: Andi Kleen <ak@linux.intel.com>
    >
    > For bug workarounds depending on microcode revisions we need to
    > know the minimum microcode revision shared by all CPUs.
    >
    > This patch adds infrastructure to track this.
    >
    > Every time microcode is updated we update a global variable for
    > the minimum microcode revision of all the CPUs in the system.
    > At boot time we use the lowest available microcode (and warn
    > if they are inconsistent)
    >
    > At CPU hotplug or S3 resume time there is a short race window
    > where something might run on the CPUs but before the microcode
    > update notifier runs. For the current workarounds that need this
    > this is acceptable and shouldn't be a problem.
    >
    > Only tested on Intel CPUs, but should work for AMD too.
    >
    > v2: Use boot_cpu_data.microcode to track minimum revision (H. Peter Anvin)
    > Signed-off-by: Andi Kleen <ak@linux.intel.com>
    > ---

    [ … ]

    > +/*
    > + * Track the minimum global microcode version. On early bootup assume
    > + * the BIOS set all CPUs to the same revision. If that's not the case
    > + * some code may be already running assuming the newer revision, but
    > + * there's not much we can do about that (but it's unlikely to be
    > + * problem in early bootup)
    > + */
    > +__cpuinit void boot_update_min_microcode(struct cpuinfo_x86 *c)
    > +{
    > + static int boot_min_microcode;
    > +
    > + if (!boot_min_microcode) {
    > + boot_min_microcode = c->microcode;
    > + boot_cpu_data.microcode = c->microcode;
    > + } else if (c->microcode < boot_min_microcode) {
    > + pr_warn("CPU %d has lower microcode revision %x at boot than boot CPU (%x)\n",
    > + smp_processor_id(),
    > + c->microcode,
    > + boot_min_microcode);
    > + boot_cpu_data.microcode = c->microcode;
    > + }


    Apply? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all y
    Applying: x86: Track minimum microcode revision globally v2
    /home/boris/kernel/.git/rebase-apply/patch:52: trailing whitespace.
    {
    /home/boris/kernel/.git/rebase-apply/patch:60: trailing whitespace.
    smp_processor_id(),
    warning: 2 lines add whitespace errors.

    --
    Regards/Gruss,
    Boris.
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2012-06-14 15:01    [W:4.932 / U:0.056 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site