All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Zijlstra <a.p.zijlstra@chello.nl>
To: Andi Kleen <andi@firstfloor.org>
Cc: x86@kernel.org, hpa@zytor.com, eranian@google.com,
	linux-kernel@vger.kernel.org, Andi Kleen <ak@linux.intel.com>
Subject: Re: [PATCH 1/2] x86: Track minimum microcode revision globally v2
Date: Wed, 13 Jun 2012 10:49:52 +0200	[thread overview]
Message-ID: <1339577392.31548.122.camel@twins> (raw)
In-Reply-To: <1339536350-10463-1-git-send-email-andi@firstfloor.org>

On Tue, 2012-06-12 at 14:25 -0700, Andi Kleen wrote:
> +void update_min_microcode(struct cpuinfo_x86 *c)
> +{
> +       int i;
> +
> +       for_each_online_cpu (i)

Superfluous whitespace

> +               if (cpu_data(i).microcode < c->microcode)
> +                       return;

That needs {}

> +       if (boot_cpu_data.microcode != c->microcode) {
> +               boot_cpu_data.microcode = c->microcode;
> +               pr_info("Minimum microcode revision updated to %x\n", c->microcode);
> +       }
> +}
> +EXPORT_SYMBOL_GPL(update_min_microcode);
> +
>  /*
>   * cpu_init() initializes state that is per-CPU. Some data is already
>   * initialized (naturally) in the bootstrap process, such as the GDT


> diff --git a/arch/x86/kernel/microcode_amd.c b/arch/x86/kernel/microcode_amd.c
> index 8a2ce8f..b589c7a 100644
> --- a/arch/x86/kernel/microcode_amd.c
> +++ b/arch/x86/kernel/microcode_amd.c
> @@ -215,6 +215,7 @@ static int apply_microcode_amd(int cpu)
>         pr_info("CPU%d: new patch_level=0x%08x\n", cpu, rev);
>         uci->cpu_sig.rev = rev;
>         c->microcode = rev;
> +       update_min_microcode(c);
>  
>         return 0;
>  }
> diff --git a/arch/x86/kernel/microcode_intel.c b/arch/x86/kernel/microcode_intel.c
> index 0327e2b..50afbb9 100644
> --- a/arch/x86/kernel/microcode_intel.c
> +++ b/arch/x86/kernel/microcode_intel.c
> @@ -326,6 +326,7 @@ static int apply_microcode(int cpu)
>         uci->cpu_sig.rev = val[1];
>         c->microcode = val[1];
>  
> +       update_min_microcode(c);
>         return 0;
>  }

Doing it here means doing the for_each_cpu thing with preempt/irqs
disabled, that's not funny.

Also this is still a O(n^2) proposition.. so how is this better than the
notifier thing I had?

We should just kill reload_store() dead, and do a notifier per system
update, that gives sane semantics and avoids all the O(n^2) nonsense.

  parent reply	other threads:[~2012-06-13  8:50 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-12 21:25 [PATCH 1/2] x86: Track minimum microcode revision globally v2 Andi Kleen
2012-06-12 21:25 ` [PATCH 2/2] perf/x86: check ucode before disabling PEBS on SandyBridge v3 Andi Kleen
2012-06-12 21:39 ` [PATCH 1/2] x86: Track minimum microcode revision globally v2 Borislav Petkov
2012-06-12 22:09   ` Andi Kleen
2012-06-12 22:19     ` Borislav Petkov
2012-06-12 22:53       ` Andi Kleen
2012-06-13  6:55         ` Borislav Petkov
2012-06-13  8:49 ` Peter Zijlstra [this message]
2012-06-13 14:49   ` Andi Kleen
2012-06-13  8:57 ` Peter Zijlstra

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1339577392.31548.122.camel@twins \
    --to=a.p.zijlstra@chello.nl \
    --cc=ak@linux.intel.com \
    --cc=andi@firstfloor.org \
    --cc=eranian@google.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.