[oe] [meta-oe][PATCH 4/4] microcode-ctl: add new recipe
Martin Jansa
martin.jansa at gmail.com
Tue Jun 13 05:14:12 UTC 2017
On Fri, Jun 09, 2017 at 02:40:33PM +0800, jackie.huang at windriver.com wrote:
> From: Jackie Huang <jackie.huang at windriver.com>
>
> The microcode_ctl utility is a companion to the
> IA32 microcode driver.
>
> Signed-off-by: Jackie Huang <jackie.huang at windriver.com>
> ---
> .../0001-add-support-for-other-distributions.patch | 27 ++++++++++
> .../files/0001-fix-the-help-return-code.patch | 57 ++++++++++++++++++++
> .../files/fix-No-GNU_HASH-in-the-elf-binary.patch | 30 +++++++++++
> .../microcode-ctl/files/microcode_ctl.service | 11 ++++
> .../recipes-bsp/microcode-ctl/microcode-ctl_git.bb | 62 ++++++++++++++++++++++
> 5 files changed, 187 insertions(+)
> create mode 100644 meta-oe/recipes-bsp/microcode-ctl/files/0001-add-support-for-other-distributions.patch
> create mode 100644 meta-oe/recipes-bsp/microcode-ctl/files/0001-fix-the-help-return-code.patch
> create mode 100644 meta-oe/recipes-bsp/microcode-ctl/files/fix-No-GNU_HASH-in-the-elf-binary.patch
> create mode 100644 meta-oe/recipes-bsp/microcode-ctl/files/microcode_ctl.service
> create mode 100755 meta-oe/recipes-bsp/microcode-ctl/microcode-ctl_git.bb
>
> 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 000000000..fe5428493
> --- /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 at 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 000000000..cbe7755e9
> --- /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 at 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 000000000..87d8f7dfe
> --- /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 at 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 at 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 000000000..0658ff378
> --- /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 000000000..12fa5f564
> --- /dev/null
> +++ b/meta-oe/recipes-bsp/microcode-ctl/microcode-ctl_git.bb
> @@ -0,0 +1,62 @@
> +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"
> +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
There is no indication about the license in the repository?
> +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 -I${STAGING_KERNEL_DIR}/include' \
> + "
I don't see kernel in DEPENDS and this MACHINE specific variable causes:
=== Comparing signatures for task do_configure.sigdata between qemux86copy and qemux86 ===
ERROR: microcode-ctl different signature for task do_configure.sigdata between qemux86copy and qemux86
basehash changed from 9d921f4621d8cd18acd74d559a452755 to 9d45e86d0e1b32712658581b752e0e8c
Variable MACHINE value changed from 'qemux86copy' to 'qemux86'
ERROR: 1 errors found in /home/jenkins/oe/world/shr-core/tmp-glibc/sstate-diff/1497333018/signatures.qemux86.do_configure.sigdata.log
=== Comparing signatures for task do_populate_sysroot.sigdata between qemux86copy and qemux86 ===
ERROR: microcode-ctl different signature for task do_populate_sysroot.sigdata between qemux86copy and qemux86
runtaskdeps changed:
microcode-ctl/microcode-ctl_git.bb.do_install with hash e21ec08f024dad0c8c16f78d5f3e7677
changed to
microcode-ctl/microcode-ctl_git.bb.do_install with hash f86df62ab78761dcb0bbcb94c45c6872
Hash for dependent task microcode-ctl/microcode-ctl_git.bb.do_install changed from e21ec08f024dad0c8c16f78d5f3e7677 to f86df62ab78761dcb0bbcb94c45c6872
ERROR: 1 errors found in /home/jenkins/oe/world/shr-core/tmp-glibc/sstate-diff/1497333018/signatures.qemux86.do_populate_sysroot.sigdata.log
=== Comparing signatures for task do_package_write_ipk.sigdata between qemux86copy and qemux86 ===
ERROR: microcode-ctl different signature for task do_package_write_ipk.sigdata between qemux86copy and qemux86
runtaskdeps changed:
microcode-ctl/microcode-ctl_git.bb.do_package with hash 98d64d16e53c5f53e53299f55b5667ae
changed to
microcode-ctl/microcode-ctl_git.bb.do_package with hash c3d694be45ffd4fdb8c5a617f4cdeb5d
microcode-ctl/microcode-ctl_git.bb.do_packagedata with hash 57a09030b203208086363b7d4f88735e
changed to
microcode-ctl/microcode-ctl_git.bb.do_packagedata with hash 87f202cce6bacbcf0c7128ab55d7c6c5
Hash for dependent task microcode-ctl/microcode-ctl_git.bb.do_package changed from 98d64d16e53c5f53e53299f55b5667ae to c3d694be45ffd4fdb8c5a617f4cdeb5d
Hash for dependent task microcode-ctl/microcode-ctl_git.bb.do_packagedata changed from 57a09030b203208086363b7d4f88735e to 87f202cce6bacbcf0c7128ab55d7c6c5
ERROR: 1 errors found in /home/jenkins/oe/world/shr-core/tmp-glibc/sstate-diff/1497333018/signatures.qemux86.do_package_write_ipk.sigdata.log
> +
> +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, at 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"
> --
> 2.11.0
>
> --
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-devel
--
Martin 'JaMa' Jansa jabber: Martin.Jansa at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 195 bytes
Desc: Digital signature
URL: <http://lists.openembedded.org/pipermail/openembedded-devel/attachments/20170613/55a4ca79/attachment-0002.sig>
More information about the Openembedded-devel
mailing list