Blame SPECS/README.caveats

Packit Service 2ad00c
The microcode_ctl package contains microcode files (vendor-provided binary data
Packit Service 2ad00c
and/or code in proprietary format that affects behaviour of a device) for Intel
Packit Service 2ad00c
CPUs that may be loaded into the CPU during boot.
Packit Service 2ad00c
Packit Service 2ad00c
The microcode_ctl package contains provisions for some issues related
Packit Service 2ad00c
to microcode loading.  While those provisions are expected to suit most users,
Packit Service 2ad00c
several knobs are available in order to provide ability to override the default
Packit Service 2ad00c
behaviour.
Packit Service 2ad00c
Packit Service 2ad00c
Packit Service 2ad00c
General behaviour
Packit Service 2ad00c
=================
Packit Service 2ad00c
In RHEL 8 (as well as RHEL 7 before it), there are currently two main handlers
Packit Service 2ad00c
for CPU microcode update:
Packit Service 2ad00c
 * Early microcode update. It uses GenuineIntel.bin or AuthenticAMD.bin file
Packit Service 2ad00c
   placed at the beginning of an initramfs image
Packit Service 2ad00c
   (/boot/initramfs-KERNEL_VERSION.img, where "KERNEL_VERSION" is a kernel
Packit Service 2ad00c
   version in the same format as provided by "uname -r") as a source
Packit Service 2ad00c
   of microcode data, and is performed very early during the boot process
Packit Service 2ad00c
   (if the relevant microcode file is available in the aforementioned file).
Packit Service 2ad00c
 * On-demand (late) microcode update. It can be triggered by writing "1" to
Packit Service 2ad00c
   /sys/devices/system/cpu/microcode/reload file (provided my the "microcode"
Packit Service 2ad00c
   module). It relies on request_firmware infrastructure, which searches (and
Packit Service 2ad00c
   loads, if found) microcode from a file present in one of the following
Packit Service 2ad00c
   directories (in the search order):
Packit Service 2ad00c
       /lib/firmware/updates/KERNEL_VERSION/
Packit Service 2ad00c
       /lib/firmware/updates/
Packit Service 2ad00c
       /lib/firmware/KERNEL_VERSION/
Packit Service 2ad00c
       /lib/firmware/
Packit Service 2ad00c
  (there is also an additional directory that can be configured via the
Packit Service 2ad00c
  "fw_path_para" module option of the "firmware_class" module; as this module
Packit Service 2ad00c
  is built-in in RHEL kernel, a boot parameter "firmware_class.fw_path_para"
Packit Service 2ad00c
  should be used for that purpose; this is out of the document's scope, however)
Packit Service 2ad00c
Packit Service 2ad00c
The firmware for Intel CPUs is searched in "intel-ucode" subdirectory, and for
Packit Service 2ad00c
AMD CPUs, a file under "amd-ucode" is searched.
Packit Service 2ad00c
Packit Service 2ad00c
For Intel CPUs, the name of the specific microcode file the kernel tries to load
Packit Service 2ad00c
has the format "FF-MM-SS", where "FF" is the family number, "MM" is the model
Packit Service 2ad00c
number, and "SS" is the stepping. All those numbers are zero-filled to two digits
Packit Service 2ad00c
and are written in hexadecimal (letters are in the lower case).  For AMD CPUs,
Packit Service 2ad00c
the file name has the format "microcode_amd_famFFh.bin", where "FF" is the
Packit Service 2ad00c
family number, written in hexadecimal, letters are in the lower case, not
Packit Service 2ad00c
zero-filled.
Packit Service 2ad00c
Packit Service 2ad00c
The early microcode is placed into initramfs image by the "dracut" script, which
Packit Service 2ad00c
scans the aforementioned subdirectories of the configured list of firmware
Packit Service 2ad00c
directories (by default, the list consists of two directories in RHEL 8,
Packit Service 2ad00c
"/lib/firmware/updates" and "/lib/firmware").
Packit Service 2ad00c
Packit Service 2ad00c
In RHEL 8, AMD CPU microcode is shipped as a part of the linux-firmware package,
Packit Service 2ad00c
and Intel microcode is shipped as a part of the microcode_ctl package.
Packit Service 2ad00c
Packit Service 2ad00c
The microcode_ctl package currently includes the following:
Packit Service 2ad00c
 * Intel CPU microcode files, placed in /usr/share/microcode_ctl/intel-ucode
Packit Service 2ad00c
   directory (currently there are none);
Packit Service 2ad00c
 * A dracut module, /usr/lib/dracut/modules.d/99microcode_ctl-fw_dir_override,
Packit Service 2ad00c
   that controls which additional firmware directories will be added to dracut's
Packit Service 2ad00c
   default configuration;
Packit Service 2ad00c
 * A dracut configuration file, /usr/lib/dracut/dracut.conf.d/01-microcode.conf,
Packit Service 2ad00c
   that enables inclusion of early microcode to the generated initramfs
Packit Service 2ad00c
   in dracut;
Packit Service 2ad00c
 * A dracut configuration file,
Packit Service 2ad00c
   /usr/lib/dracut/dracut.conf.d/99-microcode-override.conf, that provides a way
Packit Service 2ad00c
   to quickly disable 99microcode_ctl-fw_dir-override dracut module;
Packit Service 2ad00c
 * A systemd service file, microcode.service, that triggers microcode reload
Packit Service 2ad00c
   late during boot;
Packit Service 2ad00c
 * A set of directories in /usr/share/microcode_ctl/ucode_with_caveats, each
Packit Service 2ad00c
   of which contains configuration and related data for various caveats related
Packit Service 2ad00c
   to microcode:
Packit Service 2ad00c
   * readme - description of caveat and related information,
Packit Service 2ad00c
   * config - caveat configuration file, with syntax as described in "Caveat
Packit Service 2ad00c
     configuration" section below,
Packit Service 2ad00c
   * intel-ucode - directory containing microcode files related to the caveat;
Packit Service 2ad00c
 * A set of support scripts, placed in /usr/libexec/microcode_ctl:
Packit Service 2ad00c
   * "check_caveats" is an utility script that performs checks of the target
Packit Service 2ad00c
     kernel (and running CPU) in accordance with caveat configuration files
Packit Service 2ad00c
     in ucode_with_caveats directory and reports whether it passes them or not,
Packit Service 2ad00c
   * "reload_microcode" is a script that is called by microcode.service and
Packit Service 2ad00c
     triggers microcode reloading (by writing "1" to
Packit Service 2ad00c
     /sys/devices/system/cpu/microcode/reload) if the running kernel passes
Packit Service 2ad00c
     check_caveats checks,
Packit Service 2ad00c
   * "update_ucode" is a script that populates symlinks to microcode files
Packit Service 2ad00c
     in /lib/firmware, so it can be picked up by relevant kernels for the late
Packit Service 2ad00c
     microcode loading.
Packit Service 2ad00c
Packit Service 2ad00c
Also, microcode_ctl RPM includes triggers that run update_ucode script on every
Packit Service 2ad00c
installation or removal of a kernel RPM in order to provide microcode files
Packit Service 2ad00c
for newly installed kernels and cleanup symlinks for the uninstalled ones.
Packit Service 2ad00c
Packit Service 2ad00c
Packit Service 2ad00c
Caveat configuration
Packit Service 2ad00c
--------------------
Packit Service 2ad00c
There is a directory for each caveat under
Packit Service 2ad00c
/usr/share/microcode_ctl/ucode_with_caveats, containing the following files:
Packit Service 2ad00c
 * "config", a configuration file for the caveat;
Packit Service 2ad00c
 * "readme", that contains description of the caveat;
Packit Service 2ad00c
 * set of related associated microcode files.
Packit Service 2ad00c
Packit Service 2ad00c
"config" file is a set of lines each containing option name and its value,
Packit Service 2ad00c
separated by white space.  Currently, the following options are supported:
Packit Service 2ad00c
 * "model" option, which has format "VENDOR_ID FF-MM-SS", that specifies
Packit Service 2ad00c
   to which CPU model the caveat is applicable (check_caveats ignores caveats
Packit Service 2ad00c
   with non-matching models if "-m" option is passed to it). Can be set
Packit Service 2ad00c
   in the configuration file only once (the last provided value is used).
Packit Service 2ad00c
 * "vendor" option specifies CPUs of which vendor (as provided
Packit Service 2ad00c
   in the /proc/cpuinfo file) the caveat is applicable to (check_caveats
Packit Service 2ad00c
   ignores caveats with non-matching models when it is invoked with "-m"
Packit Service 2ad00c
   option). Can be set in the configuration file only once.
Packit Service 2ad00c
 * "path" is a glob pattern that specifies set of microcode files associated
Packit Service 2ad00c
   with the caveat as a relative path to the caveat directory. This option
Packit Service 2ad00c
   is used for populating files in /lib/firmware by update_ucode script and
Packit Service 2ad00c
   for matching microcode file when dracut is run in host-only mode
Packit Service 2ad00c
   (as in that case it uses only the first directory in firmware directory list
Packit Service 2ad00c
   to look for the microcode file applicable to the host CPU).  Can be set
Packit Service 2ad00c
   in the configuration file multiple times.
Packit Service 2ad00c
 * "kernel" is a minimal kernel version that supports proper handling
Packit Service 2ad00c
   of the related microcode files during late microcode load.  It may be
Packit Service 2ad00c
   provided in one of the following formats that affect the way it is compared
Packit Service 2ad00c
   to the running kernel version:
Packit Service 2ad00c
    * A.B.C (where A, B, and C are decimal numbers), "upstream version". In this
Packit Service 2ad00c
      case, simple version comparison against the respective part of the running
Packit Service 2ad00c
      kernel version is used, and the running kernel version should be greater
Packit Service 2ad00c
      or equal than the version provided in the configuration option in order
Packit Service 2ad00c
      for comparison to succeed (that is, the first part, major version number,
Packit Service 2ad00c
      of the running kernel version should be greater than the value provided
Packit Service 2ad00c
      in the configuration option, or those should be equal and the second part,
Packit Service 2ad00c
      minor version number, should be greater than the minor version number
Packit Service 2ad00c
      of the kernel version provided in the configuration option, or the first
Packit Service 2ad00c
      two parts should be equal and the third part, patch level, should
Packit Service 2ad00c
      be greater or equal the patch level of the version in the configuration
Packit Service 2ad00c
      option).
Packit Service 2ad00c
    * A.B.C-Y (where A, B, C, and Y are decimal numbers), "Y-stream version".
Packit Service 2ad00c
      In this case, A.B.C part should be equal, and Y part of the running kernel
Packit Service 2ad00c
      version should be greater or equal than the Y part of the configuration
Packit Service 2ad00c
      option version in order to satisfy the comparison requirement.
Packit Service 2ad00c
    * A.B.C-Y.Z1.Z2 (where A, B, C, Y, Z1, and Z2 are decimal numbers),
Packit Service 2ad00c
      "Z-stream version". In this case, A.B.C-Y part should be equal and Z1.Z2
Packit Service 2ad00c
      part of the running kernel should be greater or equal than the respective
Packit Service 2ad00c
      part of the configuration option version (when compared as a version)
Packit Service 2ad00c
      for comparison to succeed.
Packit Service 2ad00c
   Kernel version check passed if at least one comparison of the running kernel
Packit Service 2ad00c
   version against a kernel version provided in a configuration option
Packit Service 2ad00c
   succeeded.  The "kernel" configuration option can be provided
Packit Service 2ad00c
   in the configuration file multiple times.
Packit Service 2ad00c
 * "kernel_early" is a minimal kernel version that supports proper handling
Packit Service 2ad00c
   of the related microcode during early microcode load. The format of the
Packit Service 2ad00c
   option and its semantics is similar to the "kernel" configuration options.
Packit Service 2ad00c
   This option can be provided multiple times as well.
Packit Service 2ad00c
 * "mc_min_ver_late" is the minimal version of the currently loaded microcode
Packit Service 2ad00c
   on the CPU (as reported in /proc/cpuinfo) that supports late microcode
Packit Service 2ad00c
   update.  Microcode update will be attempted only if the currently loaded
Packit Service 2ad00c
   microcode version is greater or equal the microcode version provided
Packit Service 2ad00c
   in the configuration option. Can be set in the configuration file only once.
Packit Service 2ad00c
 * "disable" is a way to disable a specific caveat from inside its
Packit Service 2ad00c
   configuration. Argument for the argument is a list of stages ("early",
Packit Service 2ad00c
   "late") for which the caveat should be disable. The configuration option
Packit Service 2ad00c
   can be provided multiple times in a configuration file.
Packit Service 2ad00c
 * "blacklist" is a marker for a start of list of blacklisted model names,
Packit Service 2ad00c
   one model name per line. The model name of the running CPU (as reported
Packit Service 2ad00c
   in /proc/cpuinfo) is compared against the names in the provided list, and,
Packit Service 2ad00c
   if there is a match, caveat check fails.
Packit Service 2ad00c
 * "pci_config_val" performs check for specific values in selected parts
Packit Service 2ad00c
   of configuration space of specified PCI devices.  If "-m" option
Packit Service 2ad00c
   is not specified, then the actual check is skipped, and the check returns
Packit Service 2ad00c
   result in accordance with the provided "mode" option (se below).  Check
Packit Service 2ad00c
   arguments are a white-space-separated list of "key=value" pairs.
Packit Service 2ad00c
   The following keys are supported:
Packit Service 2ad00c
    * "domain" - PCI domain number, or "*" (an asterisk) for any domain.
Packit Service 2ad00c
      Default is "*".
Packit Service 2ad00c
    * "bus" - PCI bus number, or "*" (an asterisk) for any bus.  Default is "*".
Packit Service 2ad00c
    * "device" - PCI device number, or "*" (an asterisk) for any device.
Packit Service 2ad00c
      Default is "*".
Packit Service 2ad00c
    * "function" - PCI function number, or "*" (an asterisk) for any function.
Packit Service 2ad00c
      Default is "*".
Packit Service 2ad00c
    * "vid" - PCI vendor ID, or empty string for any vendor ID.  Default
Packit Service 2ad00c
      is empty string.
Packit Service 2ad00c
    * "did" - PCI device ID, or empty string for any device ID.  Default
Packit Service 2ad00c
      is empty string.
Packit Service 2ad00c
    * "offset" - offset in device's configuration space where the value resides.
Packit Service 2ad00c
      Default is 0.
Packit Service 2ad00c
    * "size" - field size.  Possible values are 1, 2, 4, or 8.  Default is 4.
Packit Service 2ad00c
    * "mask" - mask applied to the values during the check.  Default is 0.
Packit Service 2ad00c
    * "val" - comma-separated list of matching values.  Default is 0.
Packit Service 2ad00c
    * "mode" - check mode, the way matches are interpreted:
Packit Service 2ad00c
       * "success-any" - check succeeds if there was at least one match,
Packit Service 2ad00c
         otherwise it fails.
Packit Service 2ad00c
       * "success-all" - check succeeds if there was at least one device checked
Packit Service 2ad00c
         and all the checked devices have matches, otherwise the check fails.
Packit Service 2ad00c
       * "fail-any" - check fails if there was at least one match, otherwise
Packit Service 2ad00c
         it succeeds.
Packit Service 2ad00c
       * "fail-all" - check fails if there was at least one device checked
Packit Service 2ad00c
         and all the checked devices have matches, otherwise the check succeeds.
Packit Service 2ad00c
      Default is "success-any".
Packit Service 2ad00c
   An example of a check:
Packit Service 2ad00c
       pci_config_val mode=success-all device=30 function=3 vid=0x8086 did=0x2083 offset=0x84 size=4 mask=0x38 val=0x38,0x18,0x8
Packit Service 2ad00c
   It interprets 4 bytes at offset 0x84 of special files "config" under
Packit Service 2ad00c
   directories that match glob pattern "/sys/bus/pci/devices/*:*:1e.3"
Packit Service 2ad00c
   as an unsigned integer value, applies mask 0x38 (thus selecting bit 5..3
Packit Service 2ad00c
   of it) and checks whether it is one of the values 0x38, 0x18, or 0x8 (0b111,
Packit Service 2ad00c
   0b011, or 0b001 in bits 5..3, respectively); if there are such files,
Packit Service 2ad00c
   and all the checked values in every checked file has matched at least one
Packit Service 2ad00c
   of the aforementioned value, then the check is successful, otherwise
Packit Service 2ad00c
   it fails (in accordance with "mode=success-all" semantics).  This check fails
Packit Service 2ad00c
   if "-m" option is not specified.
Packit Service 2ad00c
 * "dmi" performs checks for specific values available in DMI sysfs files
Packit Service 2ad00c
   (present under /sys/devices/virtual/dmi/id/).  The check fails if file
Packit Service 2ad00c
   is not readable.  If "-m" option is specified, then the actual check
Packit Service 2ad00c
   is skipped, and the check returns value in accordance with "no-model-mode"
Packit Service 2ad00c
   parameter value (see below).  Check arguments are a white-space-separated
Packit Service 2ad00c
   list of "key=value" pairs.  The following keys are supported:
Packit Service 2ad00c
    * "key" - DMI file to check. Value can be one of the following: bios_date,
Packit Service 2ad00c
      bios_vendor, bios_version, board_asset_tag, board_name, board_serial,
Packit Service 2ad00c
      board_vendor, board_version, chassis_asset_tag, chassis_serial,
Packit Service 2ad00c
      chassis_type, chassis_vendor, chassis_version, product_family,
Packit Service 2ad00c
      product_name, product_serial, product_uuid, product_version, sys_vendor.
Packit Service 2ad00c
      Default is empty string.
Packit Service 2ad00c
    * "val" - a string to match DMI data against.  Can be enclosed in single
Packit Service 2ad00c
      or double quotes.  Default is empty string.
Packit Service 2ad00c
    * "mode" - check mode, the way matches are interpreted:
Packit Service 2ad00c
       * "success-equal" - returns 0 if the value present in the file
Packit Service 2ad00c
         with the name supplied via the "key" parameter file under
Packit Service 2ad00c
	 /sys/devices/virtual/dmi/id/ is equal to the value supplied as a value
Packit Service 2ad00c
	 of "val" parameter, otherwise 1.
Packit Service 2ad00c
       * "success-equal" - returns 1 if the value present in the file
Packit Service 2ad00c
         with the name supplied via the "key" parameter file under
Packit Service 2ad00c
	 /sys/devices/virtual/dmi/id/ is equal to the value supplied as a value
Packit Service 2ad00c
	 of "val" parameter, otherwise 0.
Packit Service 2ad00c
      Default is "success-any".
Packit Service 2ad00c
    * "no-model-mode" - return value if model filter ("-m" option)
Packit Service 2ad00c
      is not enabled:
Packit Service 2ad00c
       * "success" - return 0.
Packit Service 2ad00c
       * "fail" - return 1.
Packit Service 2ad00c
      Default is "success".
Packit Service 2ad00c
   An example of a check:
Packit Service 2ad00c
       dmi mode=fail-equal no-model-mode=success key=bios_vendor val="Dell Inc."
Packit Service 2ad00c
   It checks file /sys/devices/virtual/dmi/id/bios_vendor and fails if its
Packit Service 2ad00c
   content is "Dell Inc." (without quotes).  It succeeds if "-m" option
Packit Service 2ad00c
   is not enabled.
Packit Service 2ad00c
Packit Service 2ad00c
Packit Service 2ad00c
check_caveats script
Packit Service 2ad00c
--------------------
Packit Service 2ad00c
"check_caveats" is an utility script (called by update_ucode, reload_microcode,
Packit Service 2ad00c
dracut module) that performs checks of the target kernel (and running CPU)
Packit Service 2ad00c
in accordance with caveat configuration files in directory
Packit Service 2ad00c
"/usr/share/microcode_ctl/ucode_with_caveats", and returns information, whether
Packit Service 2ad00c
the system passes the checks, or not.
Packit Service 2ad00c
Packit Service 2ad00c
Usage:
Packit Service 2ad00c
    check_caveats [-e] [-k TARGET_KVER] [-c CONFIG]* [-m] [-v]'
Packit Service 2ad00c
Packit Service 2ad00c
Options:
Packit Service 2ad00c
  -e - check for early microcode load possibility (instead of late microcode
Packit Service 2ad00c
       load). "kernel_early" caveat configuration options are used for checking
Packit Service 2ad00c
       instead of "kernel", and "mc_min_ver_late" is not checked.
Packit Service 2ad00c
  -k - target kernel version to check against, $(uname -r) is used otherwise.
Packit Service 2ad00c
  -c - caveat(s) to check, all caveat configurations found inside
Packit Service 2ad00c
       $MC_CAVEATS_DATA_DIR are checked otherwise.
Packit Service 2ad00c
  -m - ignore caveats that do not apply to the current CPU model.
Packit Service 2ad00c
  -v - verbose output.
Packit Service 2ad00c
Packit Service 2ad00c
Environment:
Packit Service 2ad00c
  MC_CAVEATS_DATA_DIR - directory that contains caveats configurations,
Packit Service 2ad00c
                        "/usr/share/microcode_ctl/ucode_with_caveats"
Packit Service 2ad00c
			by default.
Packit Service 2ad00c
  FW_DIR - directory containing firmware files (per-kernel configuration
Packit Service 2ad00c
           overrides are checked there), "/lib/firmware" by default.
Packit Service 2ad00c
  CFG_DIR - directory containing global caveats overrides,
Packit Service 2ad00c
            "/etc/microcode_ctl/ucode_with_caveats" by default.
Packit Service 2ad00c
Packit Service 2ad00c
Output:
Packit Service 2ad00c
  Script returns information about caveats check results. Output has a format
Packit Service 2ad00c
  of "KEY VALUE1 VALUE2 ..." with KEY defining the semantics of the VALUEs.
Packit Service 2ad00c
  Currently, the following data is issued:
Packit Service 2ad00c
   - "cfgs" - list of caveats that have been processed (and not skipped
Packit Service 2ad00c
      due to missing "config", "readme", or a disallow-* override described
Packit Service 2ad00c
      below);
Packit Service 2ad00c
   - "skip_cfgs" - list of caveats that have been skipped (due to missing
Packit Service 2ad00c
     config/readme file, or because of overrides);
Packit Service 2ad00c
   - "paths" - list of glob patterns matching files associated with caveats
Packit Service 2ad00c
     that have been processed;
Packit Service 2ad00c
   - "ok_cfgs" - list of caveat configurations that have all the checks passed
Packit Service 2ad00c
     (or have enforced by one of force-* overrides described below);
Packit Service 2ad00c
   - "ok_paths" - list of glob patterns associated with caveat files from
Packit Service 2ad00c
     the "ok_cfgs" list;
Packit Service 2ad00c
   - "fail_cfgs" - list of caveats that have one of the checks failed.
Packit Service 2ad00c
   - "fail_paths" - list of glob patterns associated with caveats from the
Packit Service 2ad00c
     "fail_cfgs" list.
Packit Service 2ad00c
Packit Service 2ad00c
Return value:
Packit Service 2ad00c
  - 0 in case caveats check has passed, 1 otherwise.
Packit Service 2ad00c
  - In "-d" mode, 0 is always returned.
Packit Service 2ad00c
Packit Service 2ad00c
Overrides:
Packit Service 2ad00c
Packit Service 2ad00c
When check_caveats perform its checks, it also checks for presence of files
Packit Service 2ad00c
in specific places, and, if they exist, check_caveats skips a caveat or ignores
Packit Service 2ad00c
its checks; that mechanism allows overriding the information provided
Packit Service 2ad00c
in configuration on local systems and affect the behaviour of the microcode
Packit Service 2ad00c
update process.
Packit Service 2ad00c
Packit Service 2ad00c
Current list of overrides (where $FW_DIR and $CFG_DIR are the environment
Packit Service 2ad00c
options described earlier; $kver - the currently processed kernel version,
Packit Service 2ad00c
$s is the requested stage ("early" or "late"), $cfg is the caveat directory
Packit Service 2ad00c
name):
Packit Service 2ad00c
    $FW_DIR/$kver/disallow-$s-$cfg - skip a caveat for the requested stage for
Packit Service 2ad00c
                                     a specific kernel version..
Packit Service 2ad00c
    $FW_DIR/$kver/force-$s-$cfg - apply a specific caveat file for a specific
Packit Service 2ad00c
                                  kernel version for the requested stage without
Packit Service 2ad00c
				  performing any checks.
Packit Service 2ad00c
    $FW_DIR/$kver/disallow-$cfg - skip a caveat for any stage for a specific
Packit Service 2ad00c
                                  kernel version.
Packit Service 2ad00c
    $FW_DIR/$kver/force-$cfg - apply a specific caveat for any stage
Packit Service 2ad00c
                               for a specific kernel version without checks.
Packit Service 2ad00c
    $FW_DIR/$kver/disallow-$s - skip all caveats for a specific stage
Packit Service 2ad00c
                                for a specific kernel version.
Packit Service 2ad00c
    $CFG_DIR/disallow-$s-$cfg - skip a caveat for a specific stage for all
Packit Service 2ad00c
                                kernel versions.
Packit Service 2ad00c
    $FW_DIR/$kver/force-$s - apply all caveats for a specific stage
Packit Service 2ad00c
                             for a specific kernel version without checks.
Packit Service 2ad00c
    $CFG_DIR/force-$s-$cfg - apply a specific caveat for a specific stage for
Packit Service 2ad00c
                             all kernel versions without checks.
Packit Service 2ad00c
    $FW_DIR/$kver/disallow - skip all caveats for all stages for a specific
Packit Service 2ad00c
                             kernel version.
Packit Service 2ad00c
    $CFG_DIR/disallow-$cfg - skip a caveat for all stages for all kernel
Packit Service 2ad00c
                             versions.
Packit Service 2ad00c
    $FW_DIR/$kver/force - apply all caveats for all stages for a specific kernel
Packit Service 2ad00c
                          version without checks.
Packit Service 2ad00c
    $CFG_DIR/force-$cfg - apply a caveat for all stages for all kernel versions
Packit Service 2ad00c
                          without checks.
Packit Service 2ad00c
    $CFG_DIR/disallow-$s - skip all caveat for all kernel versions
Packit Service 2ad00c
                           for a specific stage.
Packit Service 2ad00c
    $CFG_DIR/force-$s - apply all caveats for all kernel versions for  specific
Packit Service 2ad00c
                        stage without checks.
Packit Service 2ad00c
    $CFG_DIR/disallow - skip all caveats for all stages for all kernel versions
Packit Service 2ad00c
                        (disable everything).
Packit Service 2ad00c
    $CFG_DIR/force - force all caveats for all stages for all kernel versions
Packit Service 2ad00c
                     (enable everything).
Packit Service 2ad00c
Packit Service 2ad00c
The "apply" action above means creating symlinks in /lib/firmware by
Packit Service 2ad00c
update_ucode in case of the "late" stage and adding caveat directory to the list
Packit Service 2ad00c
of firmware directories by dracut plugin in case of the "early" stage.
Packit Service 2ad00c
Packit Service 2ad00c
The files are checked for existence until the first match, so more specific
Packit Service 2ad00c
overrides can override more broad ones.
Packit Service 2ad00c
Packit Service 2ad00c
Also, a caveat is ignored if it lacks either config or readme file.
Packit Service 2ad00c
Packit Service 2ad00c
Packit Service 2ad00c
update_ucode script
Packit Service 2ad00c
-------------------
Packit Service 2ad00c
"update_ucode" populates symlinks to microcode files in accordance with caveats
Packit Service 2ad00c
configuration.  It enables late microcode loading that is invoked by triggering
Packit Service 2ad00c
/sys/devices/system/cpu/microcode/reload file.  Since caveats depend
Packit Service 2ad00c
on the kernel version, symlinks are populated inside
Packit Service 2ad00c
"/lib/firmware/KERNEL_VERSION" directory for each installed kernel.
Packit Service 2ad00c
As a consequence, this script is triggered upon each kernel package installation
Packit Service 2ad00c
and removal.
Packit Service 2ad00c
Packit Service 2ad00c
The script has two parts: common and kernel-version-specific.
Packit Service 2ad00c
Packit Service 2ad00c
During the common part, files are populated from
Packit Service 2ad00c
/usr/share/microcode_ctl/intel-ucode in /lib/firmware/intel-ucode. There are
Packit Service 2ad00c
several possibilities to affect the process:
Packit Service 2ad00c
 * Presence of "/etc/microcode_ctl/intel-ucode-disallow" file leads to skipping
Packit Service 2ad00c
   the common part of the script.
Packit Service 2ad00c
 * The same for "/lib/firmware/intel-ucode-disallow".
Packit Service 2ad00c
Packit Service 2ad00c
During the kernel-version-specific part, each caveat is checked against every
Packit Service 2ad00c
kernel version, and those combinations, for which caveat check succeeds,
Packit Service 2ad00c
gets the symlinks to the associated microcode files populated.
Packit Service 2ad00c
 * Absence of "/lib/firmware/KERNEL_VERSION/readme-CAVEAT" prevents update_ucode
Packit Service 2ad00c
   from removing symlinks related to the caveat for specific kernel version.
Packit Service 2ad00c
 * Since the check is being done by check_caveats, all the overrides that
Packit Service 2ad00c
   described there also stay.
Packit Service 2ad00c
Packit Service 2ad00c
Usage:
Packit Service 2ad00c
    update_ucode [--action {add|remove|refresh|list}] [--kernel KERNELVER]*
Packit Service 2ad00c
                 [--verbose] [--dry-run] [--cleanup intel_ucode caveats_ucode]
Packit Service 2ad00c
                 [--skip-common] [--skip-kernel-specific]
Packit Service 2ad00c
Packit Service 2ad00c
Options:
Packit Service 2ad00c
  --action - action to perform. Currently, the following actions are supported:
Packit Service 2ad00c
              * "add" - create new symlinks.
Packit Service 2ad00c
              * "remove" - remove old symlinks that are no longer needed.
Packit Service 2ad00c
              * "refresh" - re-populate symlinks.
Packit Service 2ad00c
              * "list" - list files under control of update_ucode.
Packit Service 2ad00c
             By default, "refresh" action is executed.
Packit Service 2ad00c
  --kernel - kernel version to process. By default, list of kernel versions
Packit Service 2ad00c
             is formed based on contents of /lib/firmware and /lib/modules
Packit Service 2ad00c
             directories.
Packit Service 2ad00c
  --verbose - verbose output.
Packit Service 2ad00c
  --dry-run - do not call commands, just print the invocation lines.
Packit Service 2ad00c
  --cleanup - cleanup mode. Used by post-uninstall script during package
Packit Service 2ad00c
              upgrades. Removes excess files in accordance to the contents
Packit Service 2ad00c
              of the files provided in the arguments to the option.
Packit Service 2ad00c
  --skip-common - do not process /lib/firmware directory.
Packit Service 2ad00c
  --skip-kernel-specific - do not process /lib/firmware/KERNEL_VERSION
Packit Service 2ad00c
                           directories.
Packit Service 2ad00c
Packit Service 2ad00c
Return value:
Packit Service 2ad00c
  0 on success, 1 on error.
Packit Service 2ad00c
Packit Service 2ad00c
Packit Service 2ad00c
reload_microcode script
Packit Service 2ad00c
-----------------------
Packit Service 2ad00c
"reload_microcode" is a script that is called by microcode.service and
Packit Service 2ad00c
triggers late microcode reloading (by writing "1" to
Packit Service 2ad00c
/sys/devices/system/cpu/microcode/reload) if the following check are passed:
Packit Service 2ad00c
 * the microcode update performed not in a virtualised environment;
Packit Service 2ad00c
 * running kernel passes "check_caveats" checks that applicable to the current
Packit Service 2ad00c
   CPU model.
Packit Service 2ad00c
Packit Service 2ad00c
For a virtualised environment check, the script searches the "/proc/cpuinfo"
Packit Service 2ad00c
file for presence of the "hypervisor" flag among CPU features (it corresponds
Packit Service 2ad00c
to a CPUID feature bit set by hypervisors in order to inform that the kernel
Packit Service 2ad00c
operates inside a virtual machine).  This check can be overridden and skipped
Packit Service 2ad00c
by creation of a file "/etc/microcode_ctl/ignore-hypervisor-flag".
Packit Service 2ad00c
Packit Service 2ad00c
The script has no options and always returns 0.
Packit Service 2ad00c
Packit Service 2ad00c
Packit Service 2ad00c
99microcode_ctl-fw_dir_override dracut module
Packit Service 2ad00c
---------------------------------------------
Packit Service 2ad00c
This dracut module injects directories with microcode files for caveats
Packit Service 2ad00c
that pass "early" check_caveats check (with "-e" flag). In addition
Packit Service 2ad00c
to "check_caveats" overrides, the following abilities to control module's
Packit Service 2ad00c
behaviour are present:
Packit Service 2ad00c
 * Presence of one of the following files:
Packit Service 2ad00c
   - /etc/microcode_ctl/ucode_with_caveats/skip-host-only-check
Packit Service 2ad00c
   - /etc/microcode_ctl/ucode_with_caveats/skip-host-only-check-$cfg
Packit Service 2ad00c
   - /lib/firmware/$kver/skip-host-only-check
Packit Service 2ad00c
   - /lib/firmware/$kver/skip-host-only-check-$cfg
Packit Service 2ad00c
   (where "$kver" is the kernel version in question and "$cfg" is the caveat
Packit Service 2ad00c
   directory name) allows skipping matching of microcode file name when dracut's
Packit Service 2ad00c
   Host-Only mode is enabled.
Packit Service 2ad00c
Packit Service 2ad00c
When caveats_check succeeds, caveats directory (not its possibly populated
Packit Service 2ad00c
version for late microcode update: "/lib/firmware/KERNEL_VERSION";
Packit Service 2ad00c
it is done so in order
Packit Service 2ad00c
to have ability to configure list of caveats enabled for early and late
Packit Service 2ad00c
microcode update, independently) is added to dracut's list of firmware search
Packit Service 2ad00c
directories.
Packit Service 2ad00c
Packit Service 2ad00c
The module can be disabled by running dracut with
Packit Service 2ad00c
"-o microcode_ctl-fw_dir_override" (for one-time exclusion), or it can
Packit Service 2ad00c
be disabled permanently by uncommenting string
Packit Service 2ad00c
"omit_dracutmodules+=' microcode_ctl-fw_dir_override '" in
Packit Service 2ad00c
/usr/lib/dracut/dracut.conf.d/99-microcode-override.conf configuration file.
Packit Service 2ad00c
Packit Service 2ad00c
See dracut(8), section "Omitting dracut Modules", and dracut.conf(5), variable
Packit Service 2ad00c
"omit_dracutmodules" for additional information.
Packit Service 2ad00c
Packit Service 2ad00c
Packit Service 2ad00c
Caveats
Packit Service 2ad00c
=======
Packit Service 2ad00c
Packit Service 2ad00c
Intel Broadwell-EP/EX ("BDX-ML B/M/R0") caveat
Packit Service 2ad00c
----------------------------------------------
Packit Service 2ad00c
Microcode update process on Intel Broadwell-EP/EX CPUs (BDX-ML B/M/R0,
Packit Service 2ad00c
family 6, model 79, stepping 1) has issues that lead to system instability.
Packit Service 2ad00c
A series of changes for the Linux kernel has been developed in order to work
Packit Service 2ad00c
around those issues; however, as it turned out, some systems have issues even
Packit Service 2ad00c
when a microcode update performed on a kernel that contains those changes.
Packit Service 2ad00c
As a result, microcode update for this CPU model is disabled by default;
Packit Service 2ad00c
the microcode file, however, is still shipped as a part of microcode_ctl
Packit Service 2ad00c
package and can be used for performing a microcode update if it is enforced
Packit Service 2ad00c
via the aforementioned overrides. (See the sections "check_caveats script"
Packit Service 2ad00c
and "reload_microcode script" for details.)
Packit Service 2ad00c
Packit Service 2ad00c
Caveat name: intel-06-4f-01
Packit Service 2ad00c
Packit Service 2ad00c
Affected microcode: intel-ucode/06-4f-01.
Packit Service 2ad00c
Packit Service 2ad00c
Mitigation: microcode loading is disabled for the affected CPU model.
Packit Service 2ad00c
Packit Service 2ad00c
Minimum versions of the kernel package that contain the aforementioned patch
Packit Service 2ad00c
series:
Packit Service 2ad00c
 - Upstream/RHEL 8: 4.17.0
Packit Service 2ad00c
 - RHEL 7.6 onwards:  3.10.0-894
Packit Service 2ad00c
 - RHEL 7.5:  3.10.0-862.6.1
Packit Service 2ad00c
 - RHEL 7.4:  3.10.0-693.35.1
Packit Service 2ad00c
 - RHEL 7.3:  3.10.0-514.52.1
Packit Service 2ad00c
 - RHEL 7.2:  3.10.0-327.70.1
Packit Service 2ad00c
 - RHEL 6.10: 2.6.32-754.1.1
Packit Service 2ad00c
 - RHEL 6.7:  2.6.32-573.58.1
Packit Service 2ad00c
 - RHEL 6.6:  2.6.32-504.71.1
Packit Service 2ad00c
 - RHEL 6.5:  2.6.32-431.90.1
Packit Service 2ad00c
 - RHEL 6.4:  2.6.32-358.90.1
Packit Service 2ad00c
Packit Service 2ad00c
Packit Service 2ad00c
Early microcode load inside a virtual machine
Packit Service 2ad00c
---------------------------------------------
Packit Service 2ad00c
RHEL 8 kernel supports performing microcode update during early boot stage
Packit Service 2ad00c
from a cpio archive placed at the beginning of the initramfs image.  However,
Packit Service 2ad00c
when an early microcode update is attempted inside some virtualised
Packit Service 2ad00c
environments, that may result in unexpected system behaviour.
Packit Service 2ad00c
Packit Service 2ad00c
Caveat name: intel
Packit Service 2ad00c
Packit Service 2ad00c
Affected microcode: all.
Packit Service 2ad00c
Packit Service 2ad00c
Mitigation: early microcode loading is disabled for all CPU models on kernels
Packit Service 2ad00c
without the fix.
Packit Service 2ad00c
Packit Service 2ad00c
Minimum versions of the kernel package that contain the fix:
Packit Service 2ad00c
 - Upstream/RHEL 8: 4.10.0
Packit Service 2ad00c
 - RHEL 7.6 onwards: 3.10.0-930
Packit Service 2ad00c
 - RHEL 7.5: 3.10.0-862.14.1
Packit Service 2ad00c
 - RHEL 7.4: 3.10.0-693.38.1
Packit Service 2ad00c
 - RHEL 7.3: 3.10.0-514.57.1
Packit Service 2ad00c
 - RHEL 7.2: 3.10.0-327.73.1
Packit Service 2ad00c
Packit Service 2ad00c
Packit Service 2ad00c
Intel Sandy Bridge-E/EN/EP caveat
Packit Service 2ad00c
---------------------------------
Packit Service 2ad00c
Microcode revision 0x718 for Intel Sandy Bridge-E/EN/EP (SNB-EP, family 6,
Packit Service 2ad00c
model 45, stepping 7), that was released to address MDS vulnerability,
Packit Service 2ad00c
and was available from microcode-20190618 up to microcode-20190508 release)
Packit Service 2ad00c
could lead to system instability[1][2].  In order to address this,
Packit Service 2ad00c
this microcode update was not used and the previous microcode revision
Packit Service 2ad00c
was provided instead by default; the microcode file, however, was still shipped
Packit Service 2ad00c
as part of microcode_ctl package and could be used for performing a microcode
Packit Service 2ad00c
update if it is enforced via the aforementioned overrides.  With the release
Packit Service 2ad00c
of 0x71a revision of the microcode (as art of microcode-20200520 release)
Packit Service 2ad00c
that aims at fixing the aforementioned stability issue, the latest microcode
Packit Service 2ad00c
revision is again used by default; it is still provided via the caveat
Packit Service 2ad00c
mechanism, hovewer, in order to enable ability to disable it in case such
Packit Service 2ad00c
a need arises.  (See the sections "check_caveats script" and "reload_microcode
Packit Service 2ad00c
script" for details regarding caveats mechanism operation.)
Packit Service 2ad00c
Packit Service 2ad00c
[1] https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/issues/15
Packit Service 2ad00c
[2] https://access.redhat.com/solutions/4593951
Packit Service 2ad00c
Packit Service 2ad00c
Caveat name: intel-06-2d-07
Packit Service 2ad00c
Packit Service 2ad00c
Affected microcode: intel-ucode/06-2d-07.
Packit Service 2ad00c
Packit Service 2ad00c
Mitigation: None; the latest revision of the microcode file is used by default;
Packit Service 2ad00c
previously published microcode revision 0x714 is still available as a fallback
Packit Service 2ad00c
as part of "intel" caveat.
Packit Service 2ad00c
Packit Service 2ad00c
Packit Service 2ad00c
Intel Skylake-SP/W/X caveat
Packit Service 2ad00c
---------------------------
Packit Service 2ad00c
Microcode revision 0x2000065 (that was provided with microcode releases
Packit Service 2ad00c
microcode-20191112 up to microcode-20200520) for some CPU models that belong
Packit Service 2ad00c
to Intel Skylake Scalable Platform (SKL-W/X, family 6, model 85, stepping 4,
Packit Service 2ad00c
Workstation/HEDT segments) could lead to hangs during reboot[1].  In order
Packit Service 2ad00c
to address this, by default this microcode update was disabled by default and
Packit Service 2ad00c
and the previous 0x2000064 microcode revision was used instead; the microcode
Packit Service 2ad00c
file with, however, is still shipped as part of microcode_ctl package and can
Packit Service 2ad00c
be used for performing a microcode update if it is enforced
Packit Service 2ad00c
via the aforementioned overrides. With the availability of 0x2006906 revision
Packit Service 2ad00c
of the microcode (in the microcode-20200609 release) that fixes
Packit Service 2ad00c
the aforementioned issue, the latest microcode revision is again used
Packit Service 2ad00c
by default; it is still provided via caveat mechanism, hovewer, in order
Packit Service 2ad00c
to enable ability to disable it in case such a need arises.  (See the sections
Packit Service 2ad00c
"check_caveats script" and "reload_microcode script" for details regarding
Packit Service 2ad00c
caveats mechanism operation.)
Packit Service 2ad00c
Packit Service 2ad00c
[1] https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/issues/21
Packit Service 2ad00c
Packit Service 2ad00c
Caveat name: intel-06-55-04
Packit Service 2ad00c
Packit Service 2ad00c
Affected microcode: intel-ucode/06-55-04.
Packit Service 2ad00c
Packit Service 2ad00c
Mitigation: None; the latest revision of the microcode file is used by default;
Packit Service 2ad00c
previously published microcode revision 0x2000064 is still available
Packit Service 2ad00c
as a fallback as part of "intel" caveat.
Packit Service 2ad00c
Packit Service 2ad00c
Packit Service 2ad00c
Intel Skylake-U/Y/H/S/Xeon E3 v5 caveats
Packit Service 2ad00c
----------------------------------------
Packit Service 2ad00c
Some Intel Skylake CPU models (SKL-U/Y, family 6, model 78, stepping 3;
Packit Service 2ad00c
and SKL-H/S/Xeon E3 v5, family 6, model 94, stepping 3) have reports of system
Packit Service 2ad00c
hangs when revision 0xdc of microcode, that is included in microcode-20200609
Packit Service 2ad00c
update to address CVE-2020-0543, CVE-2020-0548, and CVE-2020-0549,
Packit Service 2ad00c
is applied[1][2].  In order to address this, microcode update to the newer
Packit Service 2ad00c
revision has been disabled by default on these systems, and the previously
Packit Service 2ad00c
published microcode revision 0xd6 is used instead; the newer microcode files,
Packit Service 2ad00c
however, are still shipped as part of microcode_ctl package and can be used
Packit Service 2ad00c
for performing a microcode update if they are enforced via the aforementioned
Packit Service 2ad00c
overrides.  (See the sections "check_caveats script" and "reload_microcode
Packit Service 2ad00c
script" for details.)
Packit Service 2ad00c
Packit Service 2ad00c
[1] https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/issues/31
Packit Service 2ad00c
[2] https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/issues/31#issuecomment-644885826
Packit Service 2ad00c
Packit Service 2ad00c
Caveat names: intel-06-4e-03, intel-06-5e-03
Packit Service 2ad00c
Packit Service 2ad00c
Affected microcode: intel-ucode/06-4e-03, intel-ucode/06-5e-03.
Packit Service 2ad00c
Packit Service 2ad00c
Mitigation: previously published microcode revision 0xd6 is used by default.
Packit Service 2ad00c
Packit Service 2ad00c
Packit Service 2ad00c
Dell caveats
Packit Service 2ad00c
------------
Packit Service 2ad00c
Some Dell systems that use some models of Intel CPUs are susceptible to hangs
Packit Service 2ad00c
and system instability during or after microcode update to revision 0xc6/0xca
Packit Service 2ad00c
(included as part of microcode-20191113/microcode-20191115 update that addressed
Packit Service 2ad00c
CVE-2019-0117, CVE-2019-0123, CVE-2019-11135, and CVE-2019-11139)
Packit Service 2ad00c
and/or revision 0xd6 (included as part of microcode-20200609 update
Packit Service 2ad00c
that addressed CVE-2020-0543, CVE-2020-0548, and CVE-2020-0549)
Packit Service 2ad00c
[1][2][3][4][5][6].  In order to address this, microcode update to the newer
Packit Service 2ad00c
revision has been disabled by default on these systems, and the previously
Packit Service 2ad00c
published microcode revisions 0xae/0xb4/0xb8 are used by default
Packit Service 2ad00c
for the OS-driven microcode update.
Packit Service 2ad00c
Packit Service 2ad00c
[1] https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/issues/23
Packit Service 2ad00c
[2] https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/issues/24
Packit Service 2ad00c
[3] https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/issues/33
Packit Service 2ad00c
[4] https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/issues/34
Packit Service 2ad00c
[5] https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/issues/35
Packit Service 2ad00c
[6] https://bugzilla.redhat.com/show_bug.cgi?id=1846097
Packit Service 2ad00c
Packit Service 2ad00c
Caveat names: intel-06-8e-9e-0x-dell, intel-06-8e-9e-0x-0xca
Packit Service 2ad00c
Packit Service 2ad00c
Affected microcode: intel-ucode/06-8e-09, intel-ucode/06-8e-0a,
Packit Service 2ad00c
                    intel-ucode/06-8e-0b, intel-ucode/06-8e-0c,
Packit Service 2ad00c
                    intel-ucode/06-9e-09, intel-ucode/06-9e-0a,
Packit Service 2ad00c
                    intel-ucode/06-9e-0b, intel-ucode/06-9e-0c,
Packit Service 2ad00c
                    intel-ucode/06-9e-0d.
Packit Service 2ad00c
Packit Service 2ad00c
Mitigation: previously published microcode revision 0xac/0xb4/0xb8 is used
Packit Service 2ad00c
            by default if /sys/devices/virtual/dmi/id/bios_vendor reports
Packit Service 2ad00c
	    "Dell Inc."; otherwise, the latest microcode revision is used.
Packit Service 2ad00c
	    Caveat with revision 0xca of microcode files is provided
Packit Service 2ad00c
	    as a convenience for the cases where it was working well before.
Packit Service 2ad00c
Packit Service 2ad00c
Packit Service 2ad00c
Packit Service 2ad00c
Additional information
Packit Service 2ad00c
======================
Packit Service 2ad00c
Red Hat provides updated microcode, developed by its microprocessor partners,
Packit Service 2ad00c
as a customer convenience.  Please contact your hardware vendor to determine
Packit Service 2ad00c
whether more recent BIOS/firmware updates are recommended because additional
Packit Service 2ad00c
improvements may be available.
Packit Service 2ad00c
Packit Service 2ad00c
Information regarding microcode revisions required for mitigating specific
Packit Service 2ad00c
Intel CPU vulnerabilities is available in the following knowledge base articles:
Packit Service 2ad00c
 * CVE-2017-5715 ("Spectre"):
Packit Service 2ad00c
   https://access.redhat.com/articles/3436091
Packit Service 2ad00c
 * CVE-2018-3639 ("Speculative Store Bypass"):
Packit Service 2ad00c
   https://access.redhat.com/articles/3540901
Packit Service 2ad00c
 * CVE-2018-3620, CVE-2018-3646 ("L1 Terminal Fault Attack"):
Packit Service 2ad00c
   https://access.redhat.com/articles/3562741
Packit Service 2ad00c
 * CVE-2018-12130, CVE-2018-12126, CVE-2018-12127, and CVE-2019-11091
Packit Service 2ad00c
   ("Microarchitectural Data Sampling"):
Packit Service 2ad00c
   https://access.redhat.com/articles/4138151
Packit Service 2ad00c
 * CVE-2019-0117 (Intel SGX Information Leak),
Packit Service 2ad00c
   CVE-2019-0123 (Intel SGX Privilege Escalation),
Packit Service 2ad00c
   CVE-2019-11135 (TSX Asynchronous Abort),
Packit Service 2ad00c
   CVE-2019-11139 (Voltage Setting Modulation):
Packit Service 2ad00c
   https://access.redhat.com/solutions/2019-microcode-nov
Packit Service 2ad00c
 * CVE-2020-0543 (Special Register Buffer Data Sampling),
Packit Service 2ad00c
   CVE-2020-0548 (Vector Register Data Sampling),
Packit Service 2ad00c
   CVE-2020-0549 (L1D Cache Eviction Sampling):
Packit Service 2ad00c
   https://access.redhat.com/solutions/5142751