Provided by: iucode-tool_1.0.1-1_amd64 bug

NAME

       iucode_tool - Tool to manipulate Intel® IA32/X86_64 microcode bundles

SYNOPSIS

       iucode_tool [options] [[-ttype] filename|dirname] ...

DESCRIPTION

       iucode_tool is an utility that can load Intel® processor microcode data from files in both
       text and binary microcode bundle formats.

       It can output a list of the microcodes in these files, merge  them,  upload  them  to  the
       kernel  (to upgrade the microcode in the system processor cores) or write some of them out
       to a file in binary format for later use.

       iucode_tool will load all microcodes in the specified files and directories to memory,  in
       order to process them.  Duplicated and outdated microcodes will be discarded.  It can read
       microcode data from standard input (stdin), by specifying a file name of "-" (minus sign).

       Microcode data files are assumed to be in .dat text format if they have a .dat suffix, and
       to  be  in  binary format otherwise.  Standard input (stdin) is assumed to be in .dat text
       format.  The -t option can be used to change the type of the  files  specified  after  it,
       including for stdin.

       If a directory is specified, all files whose names do not begin with a dot will be loaded,
       in unspecified order.  Nested directories are skipped.

       Empty files and directories are ignored, and will be skipped.

       You can select which microcodes should be written out, listed or uploaded  to  the  kernel
       using the -S, -s, --date-before and --date-after options.  Should none of those options be
       specified, all microcodes will be selected.

       You can upload the selected microcodes to the kernel, write them out to a file (in  binary
       format),  to  a  Linux  early  initramfs  archive,  to  per-processor-signature files in a
       directory, or to per-microcode files in a directory using the -w, --write-earlyfw, -k, -K,
       and -W options.

       For   more  information  about  Intel  processor  microcodes,  please  read  the  included
       documentation and the Intel manuals listed in the SEE ALSO section.

OPTIONS

       iucode_tool accepts the following options:

       -q, --quiet
              Inhibit usual output.

       -v, --verbose
              Print more information.  Use more than once for added verbosity.

       -h, -?, --help
              List all available options and their meanings.

       --usage
              Show summary of options.

       -V, --version
              Show version of program.

       -t type
              Sets the file type of the following files. type can be:

              b      binary format.  This is the same format used by the kernel  driver  and  the
                     BIOS/EFI,   which  is  described  in  detail  by  the  Intel  64  and  IA-32
                     Architectures Software Developer's Manual, Volume 3A, section 9.11.

              d      Intel microcode .dat text format.  This is the format normally used by Intel
                     to distribute microcode data files.

              a      (default)  iucode_tool will use the filename suffix to select the file type:
                     .dat text format for  files  that  have  a  .dat  suffix,  and  binary  type
                     otherwise.  Note that for stdin, .dat text format is assumed.

       --downgrade
              When multiple versions of the microcode for a specific processor are available from
              different files, keep the one from the file loaded  last,  regardless  of  revision
              levels.   Files  are  always loaded in the order they were specified in the command
              line.  This option has no effect when just one file has been loaded.

       --no-downgrade
              When multiple versions of the microcode for a specific processor are available from
              different files, keep the one with the highest revision level.  This is the default
              mode of operation.

       --strict-checks
              Perform strict checks on the microcode data.  It will refuse to load microcodes and
              microcode  data  files  with  unexpected size and metadata.  It will also refuse to
              load microcode entries that have the same metadata, but different payload.  This is
              the default mode of operation.

       --no-strict-checks
              Perform  less  strict checks on the microcode data.  Use only if you happen to come
              across a microcode data file that has microcodes with weird  sizes  inside,  or  to
              load  microcodes  from a truncated microcode data file (in which case you will also
              need the --ignore-broken option).

       --ignore-broken
              Skip broken microcode entries during load, instead of aborting execution.

       --no-ignore-broken
              Abort program execution if a broken microcode is found during load.   This  is  the
              default mode of operation.

       -s ! | [!]signature[,pf_mask]
              Select  microcodes  by  the specified signature and processor flags mask (pf_mask).
              If pf_mask is specified, it will select only microcodes that are  suitable  for  at
              least one of the processor flag combinations in the mask.

              Specify more than once to select more microcodes.  This option can be combined with
              the --scan-system option to select more microcodes.  If signature is prefixed  with
              a  !, it will unselect microcodes instead.  Ordering matters, with later -s options
              overriding earlier ones.

              The special notation -s! (with no signature  parameter)  instructs  iucode-tool  to
              require  explicit  inclusion of microcode signatures (using the non-negated form of
              -s, or using --scan-system).

              The --scan-system option has precedence, therefore the microcodes it selects cannot
              be unselected.

       -S, --scan-system
              Select  microcodes  by  scanning  all  online  processors  on this system for their
              signatures.

              This option can be combined with the -s option to select more microcodes.

              Should the scan fail, the program will print a warning to the user and continue  as
              if --scan-system had not been specified.

       --date-before=YYYY-MM-DD and --date-after=YYYY-MM-DD
              Limit  the  selected  microcodes  by  a  date range.  The date must be given in ISO
              format, with four digits for the year and two digits for the month and  day  and  -
              for   the  separator.   Dates  are  not  range-checked,  so  you  can  use  --date-
              after=2000-00-00 to select all microcodes dated since January 1st, 2000.

       --loose-date-filtering
              When a date range is specified, all revisions of the microcode will  be  considered
              for  selection (ignoring just the date range, all other filters still apply) should
              any of the microcode's revisions be within the date range.

       --strict-date-filtering
              When a date range is specified, select only microcodes which are  within  the  date
              range.  This is the default mode of operation.

       -l, --list
              List selected microcode signatures.

       -L, --list-all
              List all microcode signatures while they're being processed.

       -k[device], --kernel[=device]
              Upload  selected  microcodes  to  the  kernel.   Optionally, the device path can be
              specified (default: /dev/cpu/microcode).  This update method is being deprecated.

       -K[directory], --write-firmware[=directory]
              Write selected microcodes with the filenames expected by the Linux kernel  firmware
              loader.    Optionally,   the  destination  directory  can  be  specified  (default:
              /lib/firmware/intel-ucode).

       -wfile, --write-to=file
              Write selected microcodes to a file in binary format.

       --write-earlyfw=file
              Write selected microcodes to an early initramfs archive, which should be  prepended
              to  the  regular  initramfs  to allow the kernel to update processor microcode very
              early during system boot.

       -Wdirectory, --write-named-to=file
              Write selected microcodes to the specified directory, one microcode  per  file,  in
              binary format.  The file names reflect the microcode signature, mask and revision.

       --overwrite
              Remove  the destination file before writing.  Without this option, iucode_tool will
              abort if the file already exists.   Do  note  that  it  will  remove  non-directory
              symlinks  instead  of  following  them,  and  that it will also break any hardlinks
              before writing the output file.

       --no-overwrite
              Abort if the destination  file  already  exists.   This  is  the  default  mode  of
              operation.  Do note that iucode_tool does not follow symlinks when writing files.

NOTES

       iucode_tool reads all data to memory before doing any processing.

       iucode_tool's  selected  microcode  listing  and  microcode output files are sorted by cpu
       signature, however the ordering inside a group of  microcodes  that  share  the  same  cpu
       signature  is  undefined:  it  is  deterministic,  but  it  is  sensitive  to command line
       parameters and their ordering,  and  also  depends  on  the  ordering  of  the  individual
       microcodes inside each loaded data file.

       When multiple revisions of a microcode are selected, the older ones will be skipped.  Only
       the newest selected revision of a microcode (or the  last  one  in  load  order  when  the
       --downgrade option is active) will be written to a file or uploaded to the kernel.

       Intel  microcode  data  files,  both  in  binary  and text formats, can be concatenated to
       generate a bigger and still valid microcode data file.

       iucode_tool does not follow symlinks when writing microcode data files.   It  will  either
       refuse  to  write the file and abort (default mode of operation), or (when the --overwrite
       option is active) it will remove the  target  symlink  or  file  (and  therefore  breaking
       hardlinks) before writing the new file.

       iucode_tool does follow directory symlinks to locate the directory to write files into.

   Linux Notes
       The cpuid kernel driver is required for the --scan-system functionality to work.

       Early  initramfs  support  for  microcode  updates is available since Linux v3.9.  Kernels
       without early initramfs support will  just  make  the  microcode  file  available  to  the
       initramfs environment at /kernel/x86/microcode/GenuineIntel.bin.

       Each  Intel  processor  microcode  must  be  uploaded  through  a  single write syscall to
       /dev/cpu/microcode, but more than  one  microcode  can  be  uploaded  per  write  syscall.
       Writing the microcode to the kernel device will update all system processor cores at once.
       This method is being deprecated and does not work on other system processor types.

       The old Linux firmware interface for microcode updates needs to be triggered on a per-core
       basis,  by  writing the number 1 to /sys/devices/system/cpu/*/microcode/reload.  Depending
       on kernel version, you must either trigger it on every core to avoid a dangerous situation
       where  some cores are using outdated microcode, or the kernel will accept the request only
       for the boot processor and use it to trigger an update on all system processor cores.

       Since Linux v3.6, the per-core interface has been  replaced  with  a  new  interface  that
       explicitly  triggers  an  update  for  every  core at once when the number 1 is written to
       /sys/devices/system/cpu/microcode/reload.

       The microcode driver should not be unloaded unless you are sure it  is  not  going  to  be
       needed.   The  driver  needs to be loaded in order for the kernel to reapply the microcode
       updates after the system resumes from suspend or  hibernation,  and  also  to  update  any
       system processor cores that were off-line at the time the update was applied.

EXAMPLES

   Updating files in /lib/firmware/intel-ucode:
              iucode_tool -K/lib/firmware/intel-ucode /lib/firmware/intel-ucode/* /tmp/file-with-
              new-microcodes.bin

   Processing several compressed files at once:
              zcat intel-microcode*.dat.gz | iucode-tool -k -

              zcat intel-microcode*.bin.gz | iucode-tool -k -tb -

BUGS

       iucode_tool will waste space when writing microcodes with extended  signatures  (one  copy
       per signature).

       The  extended  signature  code is completely untested, and likely buggy.  Intel so far has
       never distributed microcode data files using the extended signatures.

       Microcode with negative revision numbers is not special-cased, and will not  be  preferred
       over regular microcode.

       Files  are not replaced atomically: if iucode_tool is interrupted while writing to a file,
       that file will be corrupted.

SEE ALSO

       The Intel 64 and IA-32  Architectures  Software  Developer's  Manual,  Volume  3A:  System
       Programming Guide, Part 1 (order number 253668), section 9.11.

AUTHOR

       Henrique de Moraes Holschuh <hmh@hmh.eng.br>