4eb1a6
Older RHEL 7 kernels try to early load microcode even inside virtual
4eb1a6
machine, which may lead to panic on some hypervisors.  In order to circumvent
4eb1a6
that, microcode is installed into a kernel-version-specific directory (which
4eb1a6
is not scanned by the dracut script, that constructs early microcode binary
4eb1a6
in initramfs, by default), and path to microcode files provided only in case
4eb1a6
initramfs is generated for the kernel version that properly handles early
4eb1a6
microcode inside a virtual machine (i.e. do not attempts yo load it).
4eb1a6
The versions of the kernel package that properly handle early microcode load
4eb1a6
inside a virtual machine are as follows:
742279
 * RHEL 7.6 onwards: kernel-3.10.0-930 or newer;
742279
 * RHEL 7.5: kernel-3.10.0-862.14.1 or newer;
742279
 * RHEL 7.4: kernel-3.10.0-693.38.1 or newer;
742279
 * RHEL 7.3: kernel-3.10.0-514.57.1 or newer;
742279
 * RHEL 7.2: kernel-3.10.0-327.73.1 or newer.
742279
742279
If you want to avoid early load of microcode for a specific kernel, please
742279
create "disallow-early-intel" file inside /lib/firmware/<kernel_version>
742279
directory and run dracut -f --kver "<kernel_version>":
4eb1a6
ee041c
    touch /lib/firmware/3.10.0-862.9.1/disallow-early-intel
4eb1a6
    dracut -f --kver 3.10.0-862.9.1
4eb1a6
742279
If you want to avoid early load of microcode for all kernels, please create
4eb1a6
"disallow-early-intel" file inside the "/etc/microcode_ctl/ucode_with_caveats"
4eb1a6
directory and run dracut -f --regenerate-all:
4eb1a6
4eb1a6
    mkdir -p /etc/microcode_ctl/ucode_with_caveats
ee041c
    touch /etc/microcode_ctl/ucode_with_caveats/disallow-early-intel
ee041c
    dracut -f --regenerate-all
4eb1a6
742279
If you want to enforce early load of microcode for a specific kernel, please
742279
create "force-early-intel" file inside /lib/firmware/<kernel_version> directory
742279
and run dracut -f --kver "<kernel_version>":
4eb1a6
4eb1a6
    touch /lib/firmware/3.10.0-862.9.1/force-early-intel
4eb1a6
    dracut -f --kver 3.10.0-862.9.1
4eb1a6
742279
If you want to enforce early load of microcode for all kernels, please create
742279
"force-early-intel" file inside /etc/microcode_ctl/ucode_with_caveats
4eb1a6
directory and run dracut -f --kver "<kernel_version>":
4eb1a6
4eb1a6
    mkdir -p /etc/microcode_ctl/ucode_with_caveats
4eb1a6
    touch /etc/microcode_ctl/ucode_with_caveats/force-early-intel
4eb1a6
    dracut -f --regenerate-all
4eb1a6
ee041c
In order to override the late load behaviour, the "early" part of file names
ee041c
should be replaced with "late" (and there is no need to call dracut
ee041c
in that case).
4eb1a6
4eb1a6
742279
Please refer to /usr/share/doc/microcode_ctl/README.caveats for additional
742279
information.