• Jari Ruusu's avatar
    Fix built-in early-load Intel microcode alignment · 12d64426
    Jari Ruusu authored
    BugLink: https://bugs.launchpad.net/bugs/1860681
    
    commit f5ae2ea6 upstream.
    
    Intel Software Developer's Manual, volume 3, chapter 9.11.6 says:
    
     "Note that the microcode update must be aligned on a 16-byte boundary
      and the size of the microcode update must be 1-KByte granular"
    
    When early-load Intel microcode is loaded from initramfs, userspace tool
    'iucode_tool' has already 16-byte aligned those microcode bits in that
    initramfs image.  Image that was created something like this:
    
     iucode_tool --write-earlyfw=FOO.cpio microcode-files...
    
    However, when early-load Intel microcode is loaded from built-in
    firmware BLOB using CONFIG_EXTRA_FIRMWARE= kernel config option, that
    16-byte alignment is not guaranteed.
    
    Fix this by forcing all built-in firmware BLOBs to 16-byte alignment.
    
    [ If we end up having other firmware with much bigger alignment
      requirements, we might need to introduce some method for the firmware
      to specify it, this is the minimal "just increase the alignment a bit
      to account for this one special case" patch    - Linus ]
    Signed-off-by: default avatarJari Ruusu <jari.ruusu@gmail.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Fenghua Yu <fenghua.yu@intel.com>
    Cc: Luis Chamberlain <mcgrof@kernel.org>
    Cc: stable@kernel.org
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: default avatarConnor Kuehl <connor.kuehl@canonical.com>
    Signed-off-by: default avatarKhalid Elmously <khalid.elmously@canonical.com>
    12d64426
Makefile 6.72 KB