* Re: [PATCH] x86, microcode: Don't initialize microcode code on paravirt
[not found] <1417469264-31470-1-git-send-email-boris.ostrovsky@oracle.com>
@ 2014-12-01 21:57 ` Konrad Rzeszutek Wilk
2014-12-01 22:12 ` Paolo Bonzini
[not found] ` <20141201220057.GC4730@pd.tnic>
1 sibling, 1 reply; 7+ messages in thread
From: Konrad Rzeszutek Wilk @ 2014-12-01 21:57 UTC (permalink / raw)
To: Boris Ostrovsky, gleb, pbonzini, kvm
Cc: bp, x86, linux-kernel, stable, david.vrabel
On Mon, Dec 01, 2014 at 04:27:44PM -0500, Boris Ostrovsky wrote:
> Paravirtual guests are not expected to load microcode into processors
> and therefore it is not necessary to initialize microcode loading
> logic.
CC-ing the KVM folks since they use the paravirt interface too.
>
> In fact, under certain circumstances initializing this logic may cause
> the guest to crash. Specifically, 32-bit kernels use __pa_nodebug()
> macro which does not work in Xen (the code path that leads to this macro
> happens during resume when we call mc_bp_resume()->load_ucode_ap()
> ->check_loader_disabled_ap())
>
> Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
> ---
> arch/x86/kernel/cpu/microcode/core.c | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/arch/x86/kernel/cpu/microcode/core.c b/arch/x86/kernel/cpu/microcode/core.c
> index 2ce9051..ebd232d 100644
> --- a/arch/x86/kernel/cpu/microcode/core.c
> +++ b/arch/x86/kernel/cpu/microcode/core.c
> @@ -557,7 +557,7 @@ static int __init microcode_init(void)
> struct cpuinfo_x86 *c = &cpu_data(0);
> int error;
>
> - if (dis_ucode_ldr)
> + if (paravirt_enabled() || dis_ucode_ldr)
> return 0;
>
> if (c->x86_vendor == X86_VENDOR_INTEL)
> --
> 1.7.1
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] x86, microcode: Don't initialize microcode code on paravirt
2014-12-01 21:57 ` [PATCH] x86, microcode: Don't initialize microcode code on paravirt Konrad Rzeszutek Wilk
@ 2014-12-01 22:12 ` Paolo Bonzini
2014-12-01 22:31 ` Borislav Petkov
0 siblings, 1 reply; 7+ messages in thread
From: Paolo Bonzini @ 2014-12-01 22:12 UTC (permalink / raw)
To: Konrad Rzeszutek Wilk, Boris Ostrovsky, gleb, kvm
Cc: bp, x86, linux-kernel, stable, david.vrabel
On 01/12/2014 22:57, Konrad Rzeszutek Wilk wrote:
> On Mon, Dec 01, 2014 at 04:27:44PM -0500, Boris Ostrovsky wrote:
>> Paravirtual guests are not expected to load microcode into processors
>> and therefore it is not necessary to initialize microcode loading
>> logic.
>
> CC-ing the KVM folks since they use the paravirt interface too.
We also do not want to load microcode. :) Thanks for the heads-up.
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
Paolo
>> In fact, under certain circumstances initializing this logic may cause
>> the guest to crash. Specifically, 32-bit kernels use __pa_nodebug()
>> macro which does not work in Xen (the code path that leads to this macro
>> happens during resume when we call mc_bp_resume()->load_ucode_ap()
>> ->check_loader_disabled_ap())
>>
>> Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
>> ---
>> arch/x86/kernel/cpu/microcode/core.c | 2 +-
>> 1 files changed, 1 insertions(+), 1 deletions(-)
>>
>> diff --git a/arch/x86/kernel/cpu/microcode/core.c b/arch/x86/kernel/cpu/microcode/core.c
>> index 2ce9051..ebd232d 100644
>> --- a/arch/x86/kernel/cpu/microcode/core.c
>> +++ b/arch/x86/kernel/cpu/microcode/core.c
>> @@ -557,7 +557,7 @@ static int __init microcode_init(void)
>> struct cpuinfo_x86 *c = &cpu_data(0);
>> int error;
>>
>> - if (dis_ucode_ldr)
>> + if (paravirt_enabled() || dis_ucode_ldr)
>> return 0;
>>
>> if (c->x86_vendor == X86_VENDOR_INTEL)
>> --
>> 1.7.1
>>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] x86, microcode: Don't initialize microcode code on paravirt
2014-12-01 22:12 ` Paolo Bonzini
@ 2014-12-01 22:31 ` Borislav Petkov
0 siblings, 0 replies; 7+ messages in thread
From: Borislav Petkov @ 2014-12-01 22:31 UTC (permalink / raw)
To: Paolo Bonzini
Cc: Konrad Rzeszutek Wilk, Boris Ostrovsky, gleb, kvm, x86,
linux-kernel, stable, david.vrabel
On Mon, Dec 01, 2014 at 11:12:38PM +0100, Paolo Bonzini wrote:
> We also do not want to load microcode. :) Thanks for the heads-up.
You don't need to :P
--
Regards/Gruss,
Boris.
Sent from a fat crate under my desk. Formatting is fine.
--
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] x86, microcode: Don't initialize microcode code on paravirt
[not found] ` <20141201220057.GC4730@pd.tnic>
@ 2014-12-01 22:31 ` Boris Ostrovsky
2014-12-01 22:37 ` Borislav Petkov
0 siblings, 1 reply; 7+ messages in thread
From: Boris Ostrovsky @ 2014-12-01 22:31 UTC (permalink / raw)
To: Borislav Petkov
Cc: x86, linux-kernel, stable, david.vrabel, konrad.wilk, pbonzini,
gleb, kvm
On 12/01/2014 05:00 PM, Borislav Petkov wrote:
> On Mon, Dec 01, 2014 at 04:27:44PM -0500, Boris Ostrovsky wrote:
>> Paravirtual guests are not expected to load microcode into processors
>> and therefore it is not necessary to initialize microcode loading
>> logic.
>>
>> In fact, under certain circumstances initializing this logic may cause
>> the guest to crash. Specifically, 32-bit kernels use __pa_nodebug()
>> macro which does not work in Xen (the code path that leads to this macro
>> happens during resume when we call mc_bp_resume()->load_ucode_ap()
>> ->check_loader_disabled_ap())
>>
>> Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
>> ---
>> arch/x86/kernel/cpu/microcode/core.c | 2 +-
>> 1 files changed, 1 insertions(+), 1 deletions(-)
>>
>> diff --git a/arch/x86/kernel/cpu/microcode/core.c b/arch/x86/kernel/cpu/microcode/core.c
>> index 2ce9051..ebd232d 100644
>> --- a/arch/x86/kernel/cpu/microcode/core.c
>> +++ b/arch/x86/kernel/cpu/microcode/core.c
>> @@ -557,7 +557,7 @@ static int __init microcode_init(void)
>> struct cpuinfo_x86 *c = &cpu_data(0);
>> int error;
>>
>> - if (dis_ucode_ldr)
>> + if (paravirt_enabled() || dis_ucode_ldr)
> Ok, let me make sure I understand this correctly: The early path doesn't
> get executed on paravirt, i.e. the path along load_ucode_intel_ap()?
(+KVM folks here as well)
Xen PV doesn't start with startup_32()/startup_32_smp() so for Xen this
is true. Don't know about KVM (or lguest).
>
> And you want to avoid loading of the microcode driver because the only
> path we come to load_ucode_ap() on paravirt is the hotplug notifier?
That's my understanding, yes.
>
> Btw, we've applied another fix today for 3.18 final which limits the
> microcode reloading to 64-bit only:
>
> http://git.kernel.org/tip/02ecc41abcea4ff9291d548f6f846b29b354ddd2
>
> which should accidentally fix the paravirt issue too, no?
I think so. The problem we have now is __pa() macro that we only use on
32-bit. I'll queue this for overnight tests to make sure and if it
indeed works then 3.19 should be fine.
Thanks.
-boris
>
> Because if so, I'd like to delay your patch for the 3.19 merge window
> unless absolutely necessary.
>
> Thanks.
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] x86, microcode: Don't initialize microcode code on paravirt
2014-12-01 22:31 ` Boris Ostrovsky
@ 2014-12-01 22:37 ` Borislav Petkov
2014-12-02 14:36 ` Boris Ostrovsky
0 siblings, 1 reply; 7+ messages in thread
From: Borislav Petkov @ 2014-12-01 22:37 UTC (permalink / raw)
To: Boris Ostrovsky
Cc: x86, linux-kernel, stable, david.vrabel, konrad.wilk, pbonzini,
gleb, kvm
On Mon, Dec 01, 2014 at 05:31:56PM -0500, Boris Ostrovsky wrote:
> I think so. The problem we have now is __pa() macro that we only use
> on 32-bit. I'll queue this for overnight tests to make sure and if it
> indeed works then 3.19 should be fine.
Cool, thanks.
I'd still take your patch for 3.19 though because I'm fixing the 32-bit
reloading path properly and will remove the ifdef afterwards.
And even then, I'd like to prevent loading the module on a paravirt
guest if it is totally unneeded there.
--
Regards/Gruss,
Boris.
Sent from a fat crate under my desk. Formatting is fine.
--
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] x86, microcode: Don't initialize microcode code on paravirt
2014-12-01 22:37 ` Borislav Petkov
@ 2014-12-02 14:36 ` Boris Ostrovsky
2014-12-02 14:58 ` Borislav Petkov
0 siblings, 1 reply; 7+ messages in thread
From: Boris Ostrovsky @ 2014-12-02 14:36 UTC (permalink / raw)
To: Borislav Petkov
Cc: x86, linux-kernel, stable, david.vrabel, konrad.wilk, pbonzini,
gleb, kvm
On 12/01/2014 05:37 PM, Borislav Petkov wrote:
> On Mon, Dec 01, 2014 at 05:31:56PM -0500, Boris Ostrovsky wrote:
>> I think so. The problem we have now is __pa() macro that we only use
>> on 32-bit. I'll queue this for overnight tests to make sure and if it
>> indeed works then 3.19 should be fine.
> Cool, thanks.
All tests passed.
> I'd still take your patch for 3.19 though because I'm fixing the 32-bit
> reloading path properly and will remove the ifdef afterwards.
>
> And even then, I'd like to prevent loading the module on a paravirt
> guest if it is totally unneeded there.
>
I wonder whether we should prevent all guests (not just paravirt) from
loading microcode driver (and from doing early microcode loading).
-boris
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] x86, microcode: Don't initialize microcode code on paravirt
2014-12-02 14:36 ` Boris Ostrovsky
@ 2014-12-02 14:58 ` Borislav Petkov
0 siblings, 0 replies; 7+ messages in thread
From: Borislav Petkov @ 2014-12-02 14:58 UTC (permalink / raw)
To: Boris Ostrovsky
Cc: x86, linux-kernel, stable, david.vrabel, konrad.wilk, pbonzini,
gleb, kvm
On Tue, Dec 02, 2014 at 09:36:40AM -0500, Boris Ostrovsky wrote:
> All tests passed.
Thanks!
> I wonder whether we should prevent all guests (not just paravirt) from
> loading microcode driver (and from doing early microcode loading).
I don't think the unmodified ones need to. At least I haven't seen any
issues so far.
--
Regards/Gruss,
Boris.
Sent from a fat crate under my desk. Formatting is fine.
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2014-12-02 14:58 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <1417469264-31470-1-git-send-email-boris.ostrovsky@oracle.com>
2014-12-01 21:57 ` [PATCH] x86, microcode: Don't initialize microcode code on paravirt Konrad Rzeszutek Wilk
2014-12-01 22:12 ` Paolo Bonzini
2014-12-01 22:31 ` Borislav Petkov
[not found] ` <20141201220057.GC4730@pd.tnic>
2014-12-01 22:31 ` Boris Ostrovsky
2014-12-01 22:37 ` Borislav Petkov
2014-12-02 14:36 ` Boris Ostrovsky
2014-12-02 14:58 ` Borislav Petkov
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).