On Thu, Apr 28, 2016 at 1:38 AM, Alexander Böcken
<[email protected]> wrote:
> Hi community,
>
> I'm trying to get coreboot running on a Braswell CPU but it hangs when 
> updating the microcode. I'm stuck in bootblock before CAR and could pin down 
> the problem to the intel_microcode_load_unlocked function in 
> src/cpu/intel/microcode.c where coreboot writes the microcode base address to 
> the IA32_BIOS_UPDT_TRIG register (0x79).
>
>     outb(0xF7, 0x80);
>
>     msr.lo = (unsigned long)m + sizeof(struct microcode);
>     msr.hi = 0;
>     wrmsr(0x79, msr);
>
>     outb(0xF8, 0x80);
>
> The outb calls have been added by me, and F7 is just the last post code I 
> see, a few seconds before the CPU reboots. It never reaches F8. So I checked 
> the microcode that I've received from Intel and everything seems fine. The 
> microcode signature matches the CPUID, the platform flags match, the checksum 
> correctly yields to zero, and the base address is aligned on a 16-byte 
> boundary. Some checks are also done by coreboot at runtime. I just can't 
> figure out what the problem is here.
>

What's the disassembly of your bootblock look like?  Or if you have a
board target I can try and build one myself.

> Some more Info:
>
> $ build/cbfstool build/coreboot.rom print
> Performing operation on 'COREBOOT' region...
> Name                           Offset     Type         Size
> cbfs master header             0x0        cbfs header  32
> fallback/romstage              0x80       stage        30660
> fallback/ramstage              0x78c0     stage        63482
> fallback/payload               0x17100    payload      61118
> config                         0x26000    raw          439
> revision                       0x26200    raw          575
> cmos_layout.bin                0x26480    cmos_layout  1128
> fallback/dsdt.aml              0x26940    raw          17603
> payload_config                 0x2ae80    raw          1563
> payload_revision               0x2b500    raw          233
> (empty)                        0x2b640    null         248856
> cpu_microcode_blob.bin         0x68280    microcode    68608
> (empty)                        0x78f00    null         683928
> fsp.bin                        0x11fec0   fsp          296960
> (empty)                        0x168700   null         489368
> mrc.cache                      0x1dfec0   mrc_cache    65536
> (empty)                        0x1eff00   null         63960
> bootblock                      0x1ff900   bootblock    1424
>
> $ cat ".config" | grep "MICROCODE"
> # CONFIG_USES_MICROCODE_HEADER_FILES is not set
> CONFIG_CPU_MICROCODE_CBFS_GENERATE=y
> # CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_HEADER is not set
> # CONFIG_CPU_MICROCODE_CBFS_NONE is not set
> # CONFIG_CPU_MICROCODE_MULTIPLE_FILES is not set
> CONFIG_CPU_MICROCODE_CBFS_LEN=0x10C00
> CONFIG_CPU_MICROCODE_CBFS_LOC=0xFFE68400
> # CONFIG_HAVE_ROMSTAGE_MICROCODE_CBFS_SPINLOCK is not set
>
> I really appreciate any hints.
>
> Alex
>
> --
> coreboot mailing list: [email protected]
> https://www.coreboot.org/mailman/listinfo/coreboot

-- 
coreboot mailing list: [email protected]
https://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to