From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ivan Gorinov Date: Tue, 17 Apr 2018 11:29:56 -0700 Subject: [U-Boot] [PATCH] x86: Use microcode update from device tree for all processors In-Reply-To: References: <20180404230700.GA57192@intel.com> Message-ID: <20180417182956.GA57575@intel.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 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.