aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta-oe/licenses/Intel-ucode30
-rw-r--r--meta-oe/recipes-bsp/microcode-ctl/files/0001-add-support-for-other-distributions.patch27
-rw-r--r--meta-oe/recipes-bsp/microcode-ctl/files/0001-fix-the-help-return-code.patch57
-rw-r--r--meta-oe/recipes-bsp/microcode-ctl/files/fix-No-GNU_HASH-in-the-elf-binary.patch30
-rw-r--r--meta-oe/recipes-bsp/microcode-ctl/files/microcode_ctl.service11
-rwxr-xr-xmeta-oe/recipes-bsp/microcode-ctl/microcode-ctl_git.bb65
6 files changed, 220 insertions, 0 deletions
diff --git a/meta-oe/licenses/Intel-ucode b/meta-oe/licenses/Intel-ucode
new file mode 100644
index 00000000000..964953bb9d1
--- /dev/null
+++ b/meta-oe/licenses/Intel-ucode
@@ -0,0 +1,30 @@
+ Copyright (c) <1995-2017>, Intel Corporation.
+All rights reserved.
+
+Redistribution. Redistribution and use in binary form, without modification, are
+permitted provided that the following conditions are met:
+ .Redistributions must reproduce the above copyright notice and the following
+disclaimer in the documentation and/or other materials provided with the
+distribution.
+ .Neither the name of Intel Corporation nor the names of its suppliers may be used
+to endorse or promote products derived from this software without specific prior
+written permission.
+ .No reverse engineering, decompilation, or disassembly of this software is
+permitted.
+ ."Binary form" includes any format commonly used for electronic conveyance
+which is a reversible, bit-exact translation of binary representation to ASCII or
+ISO text, for example, "uuencode."
+
+DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
+HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/meta-oe/recipes-bsp/microcode-ctl/files/0001-add-support-for-other-distributions.patch b/meta-oe/recipes-bsp/microcode-ctl/files/0001-add-support-for-other-distributions.patch
new file mode 100644
index 00000000000..fe54284939e
--- /dev/null
+++ b/meta-oe/recipes-bsp/microcode-ctl/files/0001-add-support-for-other-distributions.patch
@@ -0,0 +1,27 @@
+Subject: [PATCH] add support for other distributions
+
+Upstream-Status: Inappropriate [OE specific]
+
+Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
+---
+ microcode_ctl.start | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/microcode_ctl.start b/microcode_ctl.start
+index 6fa9d72..e9321d0 100755
+--- a/microcode_ctl.start
++++ b/microcode_ctl.start
+@@ -47,8 +47,8 @@ elif [ -f /etc/slackware-version ]; then
+ END=slack_end
+ fi
+ else
+- echo "$0: Can't guess distribution, aborting!"
+- exit 1
++ START=
++ END=
+ fi
+
+ # Lets just be sure we have a device file...
+--
+2.11.0
+
diff --git a/meta-oe/recipes-bsp/microcode-ctl/files/0001-fix-the-help-return-code.patch b/meta-oe/recipes-bsp/microcode-ctl/files/0001-fix-the-help-return-code.patch
new file mode 100644
index 00000000000..cbe7755e950
--- /dev/null
+++ b/meta-oe/recipes-bsp/microcode-ctl/files/0001-fix-the-help-return-code.patch
@@ -0,0 +1,57 @@
+[PATCH] fix the help return code
+
+Upstream-Status: Pending
+
+not always return 1 when call usage(), differ the return code by user action;
+if a use wants to get help information, it is normal action, should be
+return 0;
+if input parameter is wrong, and microcode_ctl prompts the help information,
+it should be return 1;
+
+Signed-off-by: Roy Li <rongqing.li@windriver.com>
+---
+ microcode_ctl.c | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/microcode_ctl.c b/microcode_ctl.c
+index 3f9c151..cdcdc10 100644
+--- a/microcode_ctl.c
++++ b/microcode_ctl.c
+@@ -40,7 +40,6 @@ static void usage(void)
+ " -u upload microcode (default filename:\"%s\"\n"
+ " -f upload microcode from named Intel formatted file\n\n",
+ progname, MICROCODE_FILE_DEFAULT);
+- exit(1);
+ }
+
+ /*
+@@ -141,6 +140,7 @@ int main(int argc, char *argv[])
+ switch(c) {
+ case 'h':
+ usage();
++ return 0;
+
+ case 'q':
+ print_normal_messages=0;
+@@ -168,14 +168,17 @@ int main(int argc, char *argv[])
+
+ case '?':
+ usage();
++ return 0;
+ }
+ }
+
+ if (upload) {
+ if((return_code = do_update(device, filename)))
+ exit(return_code);
+- } else
++ } else {
+ usage();
++ return 1;
++ }
+
+ return 0;
+ }
+--
+1.9.1
+
diff --git a/meta-oe/recipes-bsp/microcode-ctl/files/fix-No-GNU_HASH-in-the-elf-binary.patch b/meta-oe/recipes-bsp/microcode-ctl/files/fix-No-GNU_HASH-in-the-elf-binary.patch
new file mode 100644
index 00000000000..87d8f7dfe06
--- /dev/null
+++ b/meta-oe/recipes-bsp/microcode-ctl/files/fix-No-GNU_HASH-in-the-elf-binary.patch
@@ -0,0 +1,30 @@
+From a5d4baf79ee332cf73e5259a2568958babcdbce2 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Mon, 1 Aug 2016 07:00:35 -0400
+Subject: [PATCH] fix No GNU_HASH in the elf binary
+
+Let recipe's LDFLAGS work in Makefile.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index 590ae7e..d4e0610 100644
+--- a/Makefile
++++ b/Makefile
+@@ -37,7 +37,7 @@ RCFILETO = $(RCDIR)/$(RCHOMEDIR)
+ all: microcode_ctl
+
+ microcode_ctl: microcode_ctl.c
+- $(CC) $(CFLAGS) -o $(PROGRAM) microcode_ctl.c
++ $(CC) $(CFLAGS) -o $(PROGRAM) microcode_ctl.c $(LDFLAGS)
+ mkdir intel-ucode amd-ucode
+ tar xfz $(MICROCODE_INTEL) -C intel-ucode
+ tar --strip-components 1 -xf $(MICROCODE_AMD) -C amd-ucode
+--
+2.8.1
+
diff --git a/meta-oe/recipes-bsp/microcode-ctl/files/microcode_ctl.service b/meta-oe/recipes-bsp/microcode-ctl/files/microcode_ctl.service
new file mode 100644
index 00000000000..0658ff378e5
--- /dev/null
+++ b/meta-oe/recipes-bsp/microcode-ctl/files/microcode_ctl.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Apply Cpu Microcode
+
+[Service]
+Type=forking
+KillMode=process
+RemainAfterExit=yes
+ExecStart=@SBINDIR@/microcode_ctl -Qu
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-oe/recipes-bsp/microcode-ctl/microcode-ctl_git.bb b/meta-oe/recipes-bsp/microcode-ctl/microcode-ctl_git.bb
new file mode 100755
index 00000000000..81ee5fbbb7e
--- /dev/null
+++ b/meta-oe/recipes-bsp/microcode-ctl/microcode-ctl_git.bb
@@ -0,0 +1,65 @@
+SUMMARY = "Microcode Control Tool"
+DESCRIPTION = "The microcode_ctl utility is a companion to the IA32 microcode driver \
+ The utility has two uses: \
+ a) it decodes and sends new microcode to the kernel driver to be uploaded \
+ to Intel IA32 family processors. (Pentium Pro, PII, Celeron, PIII, \
+ Xeon, Pentium 4 etc, x86_64) \
+ b) it signals the kernel driver to release any buffers it may hold \
+"
+HOMEPAGE = "https://pagure.io/microcode_ctl/"
+SECTION = "console/utils"
+
+LICENSE = "GPLv2 & Intel-ucode"
+LICENSE_${PN} = "GPLv2"
+LICENSE_${PN}-firmware = "Intel-ucode"
+
+LIC_FILES_CHKSUM = "file://microcode_ctl.c;endline=12;md5=4b3c92a397fc1c9efc2cf13a82981424 \
+ file://intel-ucode/microcode.dat;endline=33;md5=e5199e4965078af6c7dee6aa7c5d8404 \
+ "
+
+SRC_URI = "git://pagure.io/microcode_ctl.git;protocol=https \
+ file://0001-add-support-for-other-distributions.patch \
+ file://0001-fix-the-help-return-code.patch \
+ file://fix-No-GNU_HASH-in-the-elf-binary.patch \
+ file://microcode_ctl.service \
+ "
+
+SRCREV = "8c8ae77e661bdba298f256948867d5a619bf1588"
+
+# DO NOT use the v2.x which is in the obsolete branch
+PV = "v1.34+git${SRCREV}"
+
+S = "${WORKDIR}/git"
+
+inherit update-rc.d systemd
+
+INITSCRIPT_PACKAGES = "microcode-ctl"
+INITSCRIPT_NAME_microcode-ctl = "microcode_ctl"
+INITSCRIPT_PARAMS_microcode-ctl = "start 80 2 3 4 5 . stop 20 0 1 6 ."
+
+SYSTEMD_SERVICE_${PN} = "microcode_ctl.service"
+
+COMPATIBLE_HOST = "(i.86|x86_64).*-linux"
+
+FIRMWARE_DIR = "${nonarch_base_libdir}/firmware"
+
+EXTRA_OEMAKE = "'CC=${CC}' 'CFLAGS+=-Wall'"
+
+do_install() {
+ oe_runmake install DESTDIR=${D} PREFIX=${prefix}
+ rm -rf ${D}${FIRMWARE_DIR}/amd-ucode
+
+ install -d ${D}${systemd_system_unitdir}
+ install -D -m 0644 ${WORKDIR}/microcode_ctl.service ${D}${systemd_system_unitdir}/microcode_ctl.service
+ sed -i -e 's,@SBINDIR@,${sbindir},g' ${D}${systemd_system_unitdir}/microcode_ctl.service
+}
+
+# do_populate_sysroot is not needed for this package,
+# otherwise, it will conflict with the linux-firmware,
+do_populate_sysroot[noexec] = "1"
+
+PACKAGES += "${PN}-firmware"
+
+FILES_${PN}-firmware = "${FIRMWARE_DIR}/microcode.dat"
+
+RDEPENDS_${PN} = "${PN}-firmware bash"