Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1332143 > unrolled thread

[PATCH] x86, microcode: Remove unnecessary paravirt_enabled check

Started byBoris Ostrovsky <boris.ostrovsky@oracle.com>
First post2016-02-11 16:20 +0100
Last post2016-02-19 12:40 +0100
Articles 11 — 3 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH] x86, microcode: Remove unnecessary paravirt_enabled check Boris Ostrovsky <boris.ostrovsky@oracle.com> - 2016-02-11 16:20 +0100
    Re: [PATCH] x86, microcode: Remove unnecessary paravirt_enabled check Borislav Petkov <bp@alien8.de> - 2016-02-11 19:20 +0100
    Re: [PATCH] x86, microcode: Remove unnecessary paravirt_enabled check Andy Shevchenko <andy.shevchenko@gmail.com> - 2016-02-19 11:10 +0100
      Re: [PATCH] x86, microcode: Remove unnecessary paravirt_enabled check Borislav Petkov <bp@alien8.de> - 2016-02-19 11:20 +0100
        Re: [PATCH] x86, microcode: Remove unnecessary paravirt_enabled check Andy Shevchenko <andy.shevchenko@gmail.com> - 2016-02-19 11:40 +0100
          Re: [PATCH] x86, microcode: Remove unnecessary paravirt_enabled check Borislav Petkov <bp@alien8.de> - 2016-02-19 11:50 +0100
            Re: [PATCH] x86, microcode: Remove unnecessary paravirt_enabled check Andy Shevchenko <andy.shevchenko@gmail.com> - 2016-02-19 12:00 +0100
              Re: [PATCH] x86, microcode: Remove unnecessary paravirt_enabled check Andy Shevchenko <andy.shevchenko@gmail.com> - 2016-02-19 12:10 +0100
                Re: [PATCH] x86, microcode: Remove unnecessary paravirt_enabled check Borislav Petkov <bp@alien8.de> - 2016-02-19 12:20 +0100
                  Re: [PATCH] x86, microcode: Remove unnecessary paravirt_enabled check Andy Shevchenko <andy.shevchenko@gmail.com> - 2016-02-19 12:30 +0100
                    Re: [PATCH] x86, microcode: Remove unnecessary paravirt_enabled check Borislav Petkov <bp@alien8.de> - 2016-02-19 12:40 +0100

#1332143 — [PATCH] x86, microcode: Remove unnecessary paravirt_enabled check

FromBoris Ostrovsky <boris.ostrovsky@oracle.com>
Date2016-02-11 16:20 +0100
Subject[PATCH] x86, microcode: Remove unnecessary paravirt_enabled check
Message-ID<r11cf-26P-29@gated-at.bofh.it>
Commit a18a0f6850d4 ("x86, microcode: Don't initialize microcode code on
paravirt") added a paravirt test in microcode_init(), primarily to avoid
making mc_bp_resume()->load_ucode_ap()->check_loader_disabled_ap() calls
On 32-bit kernels this callchain ends up using __pa_nodebug() macro
which is invalid for Xen PV guests.

A subsequent commit, fbae4ba8c4a3 ("x86, microcode: Reload microcode on
resume"), eliminated this callchain thus making a18a0f6850d4
unnecessary.

Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
---
 arch/x86/kernel/cpu/microcode/core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/kernel/cpu/microcode/core.c b/arch/x86/kernel/cpu/microcode/core.c
index cea8552..ac360bf 100644
--- a/arch/x86/kernel/cpu/microcode/core.c
+++ b/arch/x86/kernel/cpu/microcode/core.c
@@ -623,7 +623,7 @@ int __init microcode_init(void)
 	struct cpuinfo_x86 *c = &boot_cpu_data;
 	int error;
 
-	if (paravirt_enabled() || dis_ucode_ldr)
+	if (dis_ucode_ldr)
 		return -EINVAL;
 
 	if (c->x86_vendor == X86_VENDOR_INTEL)
-- 
2.1.0

[toc] | [next] | [standalone]


#1332276

FromBorislav Petkov <bp@alien8.de>
Date2016-02-11 19:20 +0100
Message-ID<r140q-40Y-15@gated-at.bofh.it>
In reply to#1332143
On Thu, Feb 11, 2016 at 10:13:18AM -0500, Boris Ostrovsky wrote:
> Commit a18a0f6850d4 ("x86, microcode: Don't initialize microcode code on
> paravirt") added a paravirt test in microcode_init(), primarily to avoid
> making mc_bp_resume()->load_ucode_ap()->check_loader_disabled_ap() calls
> On 32-bit kernels this callchain ends up using __pa_nodebug() macro
> which is invalid for Xen PV guests.
> 
> A subsequent commit, fbae4ba8c4a3 ("x86, microcode: Reload microcode on
> resume"), eliminated this callchain thus making a18a0f6850d4
> unnecessary.
> 
> Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
> ---
>  arch/x86/kernel/cpu/microcode/core.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Applied, thanks.

-- 
Regards/Gruss,
    Boris.

ECO tip #101: Trim your mails when you reply.

[toc] | [prev] | [next] | [standalone]


#1338024

FromAndy Shevchenko <andy.shevchenko@gmail.com>
Date2016-02-19 11:10 +0100
Message-ID<r3QaC-3rb-5@gated-at.bofh.it>
In reply to#1332143
On Thu, Feb 11, 2016 at 5:13 PM, Boris Ostrovsky
<boris.ostrovsky@oracle.com> wrote:
> Commit a18a0f6850d4 ("x86, microcode: Don't initialize microcode code on
> paravirt") added a paravirt test in microcode_init(), primarily to avoid
> making mc_bp_resume()->load_ucode_ap()->check_loader_disabled_ap() calls
> On 32-bit kernels this callchain ends up using __pa_nodebug() macro
> which is invalid for Xen PV guests.
>
> A subsequent commit, fbae4ba8c4a3 ("x86, microcode: Reload microcode on
> resume"), eliminated this callchain thus making a18a0f6850d4
> unnecessary.

Sorry for being too late, but this commit breaks 32-bit kernel on
Intel Medfield.
Reverting the only commit from today's linux-next helps.

Put me in Cc list to pursue testing whatever you come with.

> Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
> ---
>  arch/x86/kernel/cpu/microcode/core.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/x86/kernel/cpu/microcode/core.c b/arch/x86/kernel/cpu/microcode/core.c
> index cea8552..ac360bf 100644
> --- a/arch/x86/kernel/cpu/microcode/core.c
> +++ b/arch/x86/kernel/cpu/microcode/core.c
> @@ -623,7 +623,7 @@ int __init microcode_init(void)
>         struct cpuinfo_x86 *c = &boot_cpu_data;
>         int error;
>
> -       if (paravirt_enabled() || dis_ucode_ldr)
> +       if (dis_ucode_ldr)
>                 return -EINVAL;
>
>         if (c->x86_vendor == X86_VENDOR_INTEL)
> --
> 2.1.0
>



-- 
With Best Regards,
Andy Shevchenko

[toc] | [prev] | [next] | [standalone]


#1338031

FromBorislav Petkov <bp@alien8.de>
Date2016-02-19 11:20 +0100
Message-ID<r3Qki-3vx-7@gated-at.bofh.it>
In reply to#1338024
On Fri, Feb 19, 2016 at 12:06:33PM +0200, Andy Shevchenko wrote:
> Sorry for being too late, but this commit breaks 32-bit kernel on
> Intel Medfield. Reverting the only commit from today's linux-next
> helps.

You mean this commit?!

fbae4ba8c4a3 ("x86, microcode: Reload microcode on resume")

This has been in since 3.19.

Please explain.

-- 
Regards/Gruss,
    Boris.

ECO tip #101: Trim your mails when you reply.

[toc] | [prev] | [next] | [standalone]


#1338041

FromAndy Shevchenko <andy.shevchenko@gmail.com>
Date2016-02-19 11:40 +0100
Message-ID<r3QDE-3H6-11@gated-at.bofh.it>
In reply to#1338031
On Fri, Feb 19, 2016 at 12:18 PM, Borislav Petkov <bp@alien8.de> wrote:
> On Fri, Feb 19, 2016 at 12:06:33PM +0200, Andy Shevchenko wrote:
>> Sorry for being too late, but this commit breaks 32-bit kernel on
>> Intel Medfield. Reverting the only commit from today's linux-next
>> helps.
>
> You mean this commit?!
>
> fbae4ba8c4a3 ("x86, microcode: Reload microcode on resume")
>
> This has been in since 3.19.
>
> Please explain.

No, the commit 84aba677f009 as of today's linux-next on which I commented.

commit 84aba677f009e20185aea322563389ad56e0ef7e
Author: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Date:   Tue Feb 16 09:43:19 2016 +0100

    x86/microcode: Remove unnecessary paravirt_enabled check

One more thing: I run this kernel as a second from kexec. It might be
related as well. For now I have no possibility to run it as a first
kernel.

-- 
With Best Regards,
Andy Shevchenko

[toc] | [prev] | [next] | [standalone]


#1338047

FromBorislav Petkov <bp@alien8.de>
Date2016-02-19 11:50 +0100
Message-ID<r3QNk-3My-15@gated-at.bofh.it>
In reply to#1338041
On Fri, Feb 19, 2016 at 12:33:46PM +0200, Andy Shevchenko wrote:
> No, the commit 84aba677f009 as of today's linux-next on which I commented.

You commented under the "> A subsequent commit, fbae4ba8c4a3" which confused me
as to which commit is the culprit.

> commit 84aba677f009e20185aea322563389ad56e0ef7e
> Author: Boris Ostrovsky <boris.ostrovsky@oracle.com>
> Date:   Tue Feb 16 09:43:19 2016 +0100
> 
>     x86/microcode: Remove unnecessary paravirt_enabled check
> 
> One more thing: I run this kernel as a second from kexec. It might be
> related as well. For now I have no possibility to run it as a first
> kernel.

Well, how exactly are you triggering this? Do you have a splat or some
other register dump so that I can try to pinpoint this. I'll need more
info so that I can reproduce it here and debug it.

-- 
Regards/Gruss,
    Boris.

ECO tip #101: Trim your mails when you reply.

[toc] | [prev] | [next] | [standalone]


#1338050

FromAndy Shevchenko <andy.shevchenko@gmail.com>
Date2016-02-19 12:00 +0100
Message-ID<r3QX2-3RC-47@gated-at.bofh.it>
In reply to#1338047
On Fri, Feb 19, 2016 at 12:46 PM, Borislav Petkov <bp@alien8.de> wrote:
> On Fri, Feb 19, 2016 at 12:33:46PM +0200, Andy Shevchenko wrote:
>> No, the commit 84aba677f009 as of today's linux-next on which I commented.
>
> You commented under the "> A subsequent commit, fbae4ba8c4a3" which confused me
> as to which commit is the culprit.

Yeah, at least now it's clear I suppose.

>> commit 84aba677f009e20185aea322563389ad56e0ef7e
>> Author: Boris Ostrovsky <boris.ostrovsky@oracle.com>
>> Date:   Tue Feb 16 09:43:19 2016 +0100
>>
>>     x86/microcode: Remove unnecessary paravirt_enabled check
>>
>> One more thing: I run this kernel as a second from kexec. It might be
>> related as well. For now I have no possibility to run it as a first
>> kernel.
>
> Well, how exactly are you triggering this? Do you have a splat or some
> other register dump so that I can try to pinpoint this. I'll need more
> info so that I can reproduce it here and debug it.

It stuck at some point during boot. I'm trying to get earlycon or
earlyprintk to show me something...

-- 
With Best Regards,
Andy Shevchenko

[toc] | [prev] | [next] | [standalone]


#1338056

FromAndy Shevchenko <andy.shevchenko@gmail.com>
Date2016-02-19 12:10 +0100
Message-ID<r3R6G-4cA-7@gated-at.bofh.it>
In reply to#1338050
On Fri, Feb 19, 2016 at 12:50 PM, Andy Shevchenko
<andy.shevchenko@gmail.com> wrote:
> On Fri, Feb 19, 2016 at 12:46 PM, Borislav Petkov <bp@alien8.de> wrote:
>> On Fri, Feb 19, 2016 at 12:33:46PM +0200, Andy Shevchenko wrote:

>>> commit 84aba677f009e20185aea322563389ad56e0ef7e
>>> Author: Boris Ostrovsky <boris.ostrovsky@oracle.com>
>>> Date:   Tue Feb 16 09:43:19 2016 +0100
>>>
>>>     x86/microcode: Remove unnecessary paravirt_enabled check
>>>
>>> One more thing: I run this kernel as a second from kexec. It might be
>>> related as well. For now I have no possibility to run it as a first
>>> kernel.
>>
>> Well, how exactly are you triggering this? Do you have a splat or some
>> other register dump so that I can try to pinpoint this. I'll need more
>> info so that I can reproduce it here and debug it.
>
> It stuck at some point during boot. I'm trying to get earlycon or
> earlyprintk to show me something...

That what I see last with earlycon enabled + `debug` in cmdline:

…
[    0.000000] Console: colour VGA+ 80x25
[    0.000000] console [tty1] enabled
[    0.000000] console [ttyS1] enabled
[    0.000000] bootconsole [uart8250] disabled

Without it I see nothing at all.

-- 
With Best Regards,
Andy Shevchenko

[toc] | [prev] | [next] | [standalone]


#1338058

FromBorislav Petkov <bp@alien8.de>
Date2016-02-19 12:20 +0100
Message-ID<r3Rgm-4hQ-9@gated-at.bofh.it>
In reply to#1338056
On Fri, Feb 19, 2016 at 01:00:35PM +0200, Andy Shevchenko wrote:
> That what I see last with earlycon enabled + `debug` in cmdline:

That doesn't help. Can you dump RIP, etc registers as to where the
machine freezes?

Let me confirm this: booting with "dis_ucode_ldr" works?

Also, please send .config and detailed steps how to reproduce.

-- 
Regards/Gruss,
    Boris.

ECO tip #101: Trim your mails when you reply.

[toc] | [prev] | [next] | [standalone]


#1338059

FromAndy Shevchenko <andy.shevchenko@gmail.com>
Date2016-02-19 12:30 +0100
Message-ID<r3Rq1-4mn-7@gated-at.bofh.it>
In reply to#1338058
On Fri, Feb 19, 2016 at 1:10 PM, Borislav Petkov <bp@alien8.de> wrote:
> On Fri, Feb 19, 2016 at 01:00:35PM +0200, Andy Shevchenko wrote:
>> That what I see last with earlycon enabled + `debug` in cmdline:
>
> That doesn't help.

Heh, rebuilt on clean repository -> everything works. Looks like false
alarm and practical proof to do clean build first.

-- 
With Best Regards,
Andy Shevchenko

[toc] | [prev] | [next] | [standalone]


#1338069

FromBorislav Petkov <bp@alien8.de>
Date2016-02-19 12:40 +0100
Message-ID<r3RzI-4rt-23@gated-at.bofh.it>
In reply to#1338059
On Fri, Feb 19, 2016 at 01:21:10PM +0200, Andy Shevchenko wrote:

> Heh, rebuilt on clean repository -> everything works. Looks like false
> alarm and practical proof to do clean build first.

Always, like *really* *always*, do

$ make mrproper

or even

$ git clean -dqfx

before testing kernels. I've learned that the hard way and it seems
you just did too.

:)

Btw, be careful with that git clean command - it kills *everything*. I
do "git clean -dnx" just in case before doing the "-f" thing.

-- 
Regards/Gruss,
    Boris.

ECO tip #101: Trim your mails when you reply.

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web