Hi Simon, On Mon, Mar 7, 2016 at 10:28 AM, Simon Glass <s...@chromium.org> wrote: > As each core starts up, record its microcode version and CPU ID so these can > be presented with the 'cpu detail' command. > > Signed-off-by: Simon Glass <s...@chromium.org> > --- > > arch/x86/cpu/intel_common/microcode_intel.c | 2 +- > arch/x86/cpu/mp_init.c | 5 +++++ > arch/x86/include/asm/microcode.h | 9 +++++++++ > 3 files changed, 15 insertions(+), 1 deletion(-) > > diff --git a/arch/x86/cpu/intel_common/microcode_intel.c > b/arch/x86/cpu/intel_common/microcode_intel.c > index 3054fab..26b1316 100644 > --- a/arch/x86/cpu/intel_common/microcode_intel.c > +++ b/arch/x86/cpu/intel_common/microcode_intel.c > @@ -64,7 +64,7 @@ static int microcode_decode_node(const void *blob, int node, > return 0; > } > > -static inline uint32_t microcode_read_rev(void) > +int microcode_read_rev(void) > { > /* > * Some Intel CPUs can be very finicky about the CPUID sequence used. > diff --git a/arch/x86/cpu/mp_init.c b/arch/x86/cpu/mp_init.c > index ca47e9e..94ddbbb 100644 > --- a/arch/x86/cpu/mp_init.c > +++ b/arch/x86/cpu/mp_init.c > @@ -15,6 +15,7 @@ > #include <asm/cpu.h> > #include <asm/interrupt.h> > #include <asm/lapic.h> > +#include <asm/microcode.h> > #include <asm/mp.h> > #include <asm/msr.h> > #include <asm/mtrr.h> > @@ -560,12 +561,16 @@ int mp_init(struct mp_params *p) > > int mp_init_cpu(struct udevice *cpu, void *unused) > { > + struct cpu_platdata *plat = dev_get_parent_platdata(cpu); > + > /* > * Multiple APs are brought up simultaneously and they may get the > same > * seq num in the uclass_resolve_seq() during device_probe(). To avoid > * this, set req_seq to the reg number in the device tree in advance. > */ > cpu->req_seq = fdtdec_get_int(gd->fdt_blob, cpu->of_offset, "reg", > -1); > + plat->ucode_version = microcode_read_rev();
This won't work on Quark as Quark does not have microcode MSRs. > + plat->device_id = cpuid_eax(1); Why not just use gd->arch.x86_device? > > return device_probe(cpu); > } > diff --git a/arch/x86/include/asm/microcode.h > b/arch/x86/include/asm/microcode.h > index 67f32cc..0478935 100644 > --- a/arch/x86/include/asm/microcode.h > +++ b/arch/x86/include/asm/microcode.h > @@ -18,6 +18,15 @@ > * not updates were found, -EINVAL if an update was invalid > */ > int microcode_update_intel(void); > + > +/** > + * microcode_read_rev() - Read the microcode version > + * > + * This reads the microcode version of the currently running CPU > + * > + * @return microcode version number > + */ > +int microcode_read_rev(void); > #endif /* __ASSEMBLY__ */ > > #endif > -- Regards, Bin _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot