* 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
[parent not found: <20141201220057.GC4730@pd.tnic>]
* 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