meta-intel/common/recipes-core/microcode/intel-microcode_20140624.bb
Nitin A Kamble a3a380373b intel-microcode: Add ability to filter microcode
The microcode data file released by Intel has microcode for many Intel
processors, which by default all get installed onto the target image.
In some situations it may desirable to choose microcode for only a
selected processor or processors.  This change provides an easier way
to filter and select only the microcode of interest for BSPs from
recipe space.

A new variable, UCODE_FILTER_PARAMETERS, is introduced, which can be
defined to contain parameters to the iucode_tool which will filter the
microcode of interest for the BSP under consideration.  More
information on the iucode-tool parameters is available here:
http://manned.org/iucode-tool.

This filtering makes the generated microcode files very
machine-specific, hence making the recipe machine-specific. BSPs using
the common Intel kernel will not be using the filtered microcode, and
will be able to share the intel-microcode packages with the common
Intel package arch for the recipe.

Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
Acked-by: Darren Hart <dvhart@linux.intel.com>
Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com>
2014-10-21 15:50:37 -05:00

66 lines
2.3 KiB
BlitzBasic

SUMMARY = "Intel Processor Microcode Datafile for Linux"
HOMEPAGE = "http://www.intel.com/"
DESCRIPTION = "The microcode data file contains the latest microcode\
definitions for all Intel processors. Intel releases microcode updates\
to correct processor behavior as documented in the respective processor\
specification updates. While the regular approach to getting this microcode\
update is via a BIOS upgrade, Intel realizes that this can be an\
administrative hassle. The Linux operating system and VMware ESX\
products have a mechanism to update the microcode after booting.\
For example, this file will be used by the operating system mechanism\
if the file is placed in the /etc/firmware directory of the Linux system."
LICENSE = "Intel-Microcode-License"
LIC_FILES_CHKSUM = "file://microcode.dat;md5=3c3b208607a00a3d70aad3af5629f7c7"
SRC_URI = "http://downloadmirror.intel.com/23984/eng/microcode-20140624.tgz"
SRC_URI[md5sum] = "eec20032e6bef99dc4282c0ca317e100"
SRC_URI[sha256sum] = "b4662ac780438a7b2d87e6d26a7066feb807f37c6e5b6fa147089f4edb02ea37"
RDEPENDS_${PN} = "iucode-tool"
DEPENDS = "iucode-tool-native"
S = "${WORKDIR}"
PACKAGE_ARCH = "${MACHINE_ARCH}"
inherit deploy
# Use any of the iucode_tool parameters to filter specific microcodes from the data file
# For further information, check the iucode-tool's manpage : http://manned.org/iucode-tool
UCODE_FILTER_PARAMETERS ?= ""
do_compile() {
mkdir -p ${WORKDIR}/ucode/kernel/x86/microcode
${STAGING_DIR_NATIVE}${sbindir_native}/iucode_tool \
${UCODE_FILTER_PARAMETERS} \
--overwrite \
--write-to=${WORKDIR}/microcode_${PV}.bin \
${WORKDIR}/microcode.dat
${STAGING_DIR_NATIVE}${sbindir_native}/iucode_tool \
${UCODE_FILTER_PARAMETERS} \
--overwrite \
--write-earlyfw=${WORKDIR}/microcode_${PV}.cpio \
${WORKDIR}/microcode.dat
}
do_install() {
install -d ${D}${base_libdir}/firmware/intel-ucode/
install ${WORKDIR}/microcode_${PV}.bin ${D}${base_libdir}/firmware/intel-ucode/
cd ${D}${base_libdir}/firmware/intel-ucode/
ln -sf microcode_${PV}.bin microcode.bin
}
do_deploy() {
install -d ${DEPLOYDIR}
install ${S}/microcode_${PV}.cpio ${DEPLOYDIR}/
cd ${DEPLOYDIR}
rm -f microcode.cpio
ln -sf microcode_${PV}.cpio microcode.cpio
}
addtask deploy before do_build after do_compile
PACKAGES = "${PN}"
FILES_${PN} = "${base_libdir}"