[U-Boot] [PATCH] x86: Use microcode update from device tree for all processors

Bin Meng
2018-04-18T12:48:59Z

Hi Ivan,

On Wed, Apr 18, 2018 at 2:29 AM, Ivan Gorinov <ivan.gorinov@intel.com> wrote:
> On Thu, Apr 05, 2018 at 09:31:34AM -0600, Bin Meng wrote:
>> > The microcode update data block encoded in Device Tree is used by
>> > the bootstrap processor (BSP) but not passed to the other CPUs (AP).
>>
>> I don't understand what the bug is here. The AP microcode update is
>> done in sipi_vector.S.
>
> I have found how it works. When a ROM image is built, the binman tool
> looks for symbol '_dt_ucode_base_size' and updates position and size
> of the microcode update data in the ucode_base and ucode_size variables.
> The ucode_base pointer is used to update the bootstrap CPU very early,
> and the other CPUs later in the multiprocessing code.
>
> On x86, binman is called from Makefile only if a ROM image is created:
>
> u-boot.rom: u-boot-x86-16bit.bin u-boot.bin \
> ...
> $(call if_changed,binman)
>
> If there is no ROM image, ucode_base and ucode_size are not initialized and
> the microcode update data from DTB applied by microcode_update_intel() to the
> bootstrap CPU is not used by the multiprocessing code.

Correct. If it's not a ROM image, which means U-Boot is probably not
the 1st stage bootloader, which means updating microcode is not
necessary. So is there any issue with current implementation?

Regards,
Bin