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. _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot