Re: missing patch

From: Evalds Iodzevics
Date: Sun May 26 2019 - 03:36:21 EST


Hi, sorry for super long delay i was a little bit busy but i finally
got time to work this out in full.
This applies to 4.4 and 4.9.

Intel requires CPUID eax=1 for microcode operations, microcode
routines use sync_core() for this.
Back in December of 2016 Andy Lutomirski submitted few patches
https://lore.kernel.org/lkml/cover.1481307769.git.luto@xxxxxxxxxx/

Second patch does not apply to 4.4 and 4.9 as it is revert

Unfortunately only the first one got backported to 4.4 and 4.9 and
broke microcode early loading on 32 bit platforms because it always
jumps past cpuid in sync_core() as data structure boot_cpu_data are
not populated so early in code.

Thanks to Your recent backport of 4167709bbf826512a52ebd6aafda2be104adaec9
the only place that uses sync_core() is
arch/x86/include/microcode_intel.h it should use native_cpuid_eax(1)
as in original Boris submitt.
To make this work we should apply
5dedade6dfa243c130b85d1e4daba6f027805033 witch defines
native_cpuid_eax and others.

As for c198b121b1a1d7a7171770c634cd49191bac4477 i think it is a good
idea to include this as sync_core in present state behaves differently
depending on call time, those compiler warnings can be ignored, on
older compiler they are not generated and this compiles fine. I tested
it on GCC 5.5

On Mon, Apr 1, 2019 at 7:59 PM Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx> wrote:
>
> On Mon, Apr 01, 2019 at 06:06:29PM +0200, Greg KH wrote:
> > On Sat, Mar 30, 2019 at 06:13:16PM +0200, Evalds Iodzevics wrote:
> > > Hi back in the December of 2016 there was commit
> > > "1c52d859cb2d417e7216d3e56bb7fea88444cec9"
> > >
> > > witch was followed shortly by "c198b121b1a1d7a7171770c634cd49191bac4477"
> > >
> > > Unfortunately only the first commit was later included in long-term kernel
> > > branches such as 4.4 and 4.9 witch left some of microcode functionality
> > > broken on 32 bit systems
> > >
> > > I guess it should be easily fixed by including
> > > "c198b121b1a1d7a7171770c634cd49191bac4477" in those branches
> >
> > Now queued up, thanks!
>
> Hm, no, it causes a bunch of build warnings that look like things are
> about to break:
> arch/x86/kernel/alternative.o: warning: objtool: do_sync_core()+0x1b: unsupported instruction in callable function
> arch/x86/kernel/alternative.o: warning: objtool: text_poke_early()+0x83: unsupported instruction in callable function
> arch/x86/kernel/alternative.o: warning: objtool: apply_alternatives()+0x366: unsupported instruction in callable function
> arch/x86/kernel/alternative.o: warning: objtool: text_poke()+0x196: unsupported instruction in callable function
>
> So I'm going to drop this patch from both trees now. Can you provide a
> working backported version, or find what else needs to be applied as
> well for this patch?
>
> thanks,
>
> greg k-h