Re: [PATCH] x86: Unbreak early processor microcode loading

From: Daniel J Blueman
Date: Wed Mar 18 2015 - 05:09:34 EST


On Wed, Mar 4, 2015 at 7:45 PM, Borislav Petkov <bp@xxxxxxxxx> wrote:
On Wed, Mar 04, 2015 at 10:18:47AM +0100, Borislav Petkov wrote:
Let me try to reproduce that here.

Well, it works fine on a single-socket box here:

[ 1.045426] microcode: updated early to new patch_level=0x010000dc
[ 1.060957] microcode: CPU0: patch_level=0x010000dc
[ 1.061143] microcode: CPU1: patch_level=0x010000dc
[ 1.061310] microcode: CPU2: patch_level=0x010000dc
[ 1.061495] microcode: CPU3: patch_level=0x010000dc
[ 1.061677] microcode: CPU4: patch_level=0x010000dc
[ 1.061863] microcode: CPU5: patch_level=0x010000dc

That's early patching.

$ grep -E "(FIRMWARE|MICROCODE)" .config
CONFIG_MICROCODE=y
CONFIG_MICROCODE_INTEL=y
CONFIG_MICROCODE_AMD=y
CONFIG_MICROCODE_OLD_INTERFACE=y
CONFIG_MICROCODE_INTEL_EARLY=y
CONFIG_MICROCODE_AMD_EARLY=y
CONFIG_MICROCODE_EARLY=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_FIRMWARE_IN_KERNEL=y
CONFIG_EXTRA_FIRMWARE="microcode_amd.bin microcode_amd_fam15h.bin microcode_amd_fam16h.bin"
CONFIG_EXTRA_FIRMWARE_DIR="/lib/firmware/amd-ucode"
# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set
CONFIG_FIRMWARE_EDID=y
CONFIG_FIRMWARE_MEMMAP=y
# CONFIG_GOOGLE_FIRMWARE is not set
# CONFIG_TEST_FIRMWARE is not set

Thanks for checking Boris!

I can't reproduce your early-loading case with this same config; I suspect your udev is loading the firmware which is available in the initramfs, or it's being loaded later from the rootfs non-early.

In my case, the microcode is in neither, hence we build it into the kernel image.

The full console log, config and bzImage are at https://resources.numascale.com/telemetry/

I find the changes I posted earlier fix this. Maybe I'm missing something still?

Daniel

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/