aboutsummaryrefslogtreecommitdiff
path: root/sysutils/devcpu-data
diff options
context:
space:
mode:
authorJoseph Mingrone <jrm@FreeBSD.org>2021-10-06 21:23:53 +0000
committerJoseph Mingrone <jrm@FreeBSD.org>2021-11-07 21:17:03 +0000
commit813905682ec40c3323f0cb0b5dc86bb21bbf2f0d (patch)
treef29898fbfb4ce91c66b394bb263630d5a78177f8 /sysutils/devcpu-data
parentab33834c94052e9b8a36c836e752364d0b3bf9e0 (diff)
Diffstat (limited to 'sysutils/devcpu-data')
-rw-r--r--sysutils/devcpu-data/Makefile51
-rw-r--r--sysutils/devcpu-data/distinfo5
-rw-r--r--sysutils/devcpu-data/files/LICENSE125
-rw-r--r--sysutils/devcpu-data/files/Makefile18
-rw-r--r--sysutils/devcpu-data/files/microcode_update.in20
-rw-r--r--sysutils/devcpu-data/files/pkg-message.in46
-rw-r--r--sysutils/devcpu-data/files/ucode-split.c203
-rw-r--r--sysutils/devcpu-data/pkg-descr6
-rw-r--r--sysutils/devcpu-data/pkg-message46
-rw-r--r--sysutils/devcpu-data/pkg-plist208
10 files changed, 85 insertions, 643 deletions
diff --git a/sysutils/devcpu-data/Makefile b/sysutils/devcpu-data/Makefile
index 1a822c2f4ece..9a16ab166af3 100644
--- a/sysutils/devcpu-data/Makefile
+++ b/sysutils/devcpu-data/Makefile
@@ -1,47 +1,38 @@
# Created by: stas
PORTNAME= data
-PORTVERSION= 1.39
+PORTVERSION= 20211006
CATEGORIES= sysutils
-MASTER_SITES= LOCAL/sbruno:amd
+MASTER_SITES= # none
PKGNAMEPREFIX= devcpu-
-DISTFILES= amd64-microcode.20191228.tar.xz:amd
+DISTFILES= # none
+EXTRACT_ONLY= # none
MAINTAINER= sbruno@FreeBSD.org
-COMMENT= Intel and AMD CPUs microcode updates
+COMMENT= AMD and Intel CPUs microcode updates
-LICENSE= EULA
-LICENSE_NAME= Intel Software License Agreement
-LICENSE_FILE= ${FILESDIR}/LICENSE
-LICENSE_PERMS= dist-mirror no-dist-sell pkg-mirror no-pkg-sell auto-accept
-
-USE_GITHUB= yes
-GH_ACCOUNT= intel
-GH_PROJECT= Intel-Linux-Processor-Microcode-Data-Files
-GH_TAGNAME= microcode-20210608
+LICENSE= BSD2CLAUSE
ONLY_FOR_ARCHS= amd64 i386
-NO_ARCH= yes
-NO_WRKSUBDIR= yes
+
+USE_RC_SUBR= microcode_update
DATADIR= ${PREFIX}/share/cpucontrol
-FWDIR= /boot/firmware
+NO_ARCH= yes
+NO_BUILD= yes
+NO_INSTALL= yes
+SUB_FILES= pkg-message
-USE_RC_SUBR= microcode_update
+NO_WRKSUBDIR= yes
+
+OPTIONS_DEFAULT= AMD INTEL
+OPTIONS_MULTI= VENDOR
+OPTIONS_MULTI_VENDOR= AMD INTEL
-post-extract:
- ${CP} -p ${FILESDIR}/Makefile ${FILESDIR}/ucode-split.c ${WRKSRC}
- ${REINPLACE_CMD} 's|%%GH_TAGNAME%%|${GH_TAGNAME}|g' ${WRKSRC}/Makefile
- ${CAT} ${WRKSRC}/Intel-Linux-Processor-Microcode-Data-Files-${GH_TAGNAME}/intel-ucode/* ${WRKSRC}/Intel-Linux-Processor-Microcode-Data-Files-${GH_TAGNAME}/intel-ucode-with-caveats/* > ${WRKSRC}/intel-ucode.bin
+AMD_DESC= Depend on sysutils/devcpu-data-amd
+INTEL_DESC= Depend on sysutils/devcpu-data-intel
-do-install:
- ${MKDIR} ${STAGEDIR}${DATADIR}/
- ${INSTALL_DATA} ${WRKSRC}/microcode_amd.bin ${STAGEDIR}${DATADIR}/
- ${INSTALL_DATA} ${WRKSRC}/microcode_amd_fam15h.bin ${STAGEDIR}${DATADIR}/
- ${INSTALL_DATA} ${WRKSRC}/microcode_amd_fam16h.bin ${STAGEDIR}${DATADIR}/
- ${INSTALL_DATA} ${WRKSRC}/microcode_amd_fam17h.bin ${STAGEDIR}${DATADIR}/
- ${INSTALL_DATA} ${WRKSRC}/mcodes/* ${STAGEDIR}${DATADIR}/
- ${MKDIR} ${STAGEDIR}${FWDIR}
- ${INSTALL_DATA} ${WRKSRC}/intel-ucode.bin ${STAGEDIR}${FWDIR}/
+AMD_RUN_DEPENDS= ${LOCALBASE}/share/cpucontrol/microcode_amd.bin:sysutils/devcpu-data-amd
+INTEL_RUN_DEPENDS= /boot/firmware/intel-ucode.bin:sysutils/devcpu-data-intel
.include <bsd.port.mk>
diff --git a/sysutils/devcpu-data/distinfo b/sysutils/devcpu-data/distinfo
deleted file mode 100644
index 06b3847dded6..000000000000
--- a/sysutils/devcpu-data/distinfo
+++ /dev/null
@@ -1,5 +0,0 @@
-TIMESTAMP = 1623192235
-SHA256 (amd64-microcode.20191228.tar.xz) = 156eef8950f28436e045c1d5ac6e4738d99c07a6737d35bf966901f4b260abb3
-SIZE (amd64-microcode.20191228.tar.xz) = 28827
-SHA256 (intel-Intel-Linux-Processor-Microcode-Data-Files-1.39-microcode-20210608_GH0.tar.gz) = fd85b6b769efd029dec6a2c07106fd18fb4dcb548b7bc4cde09295a8344ef6d7
-SIZE (intel-Intel-Linux-Processor-Microcode-Data-Files-1.39-microcode-20210608_GH0.tar.gz) = 4782451
diff --git a/sysutils/devcpu-data/files/LICENSE b/sysutils/devcpu-data/files/LICENSE
deleted file mode 100644
index 905826435746..000000000000
--- a/sysutils/devcpu-data/files/LICENSE
+++ /dev/null
@@ -1,125 +0,0 @@
-The terms of the software license agreement included with any software you download will control your use of the software.
-
-INTEL SOFTWARE LICENSE AGREEMENT
-
-IMPORTANT - READ BEFORE COPYING, INSTALLING OR USING.
-Do not use or load this software and any associated materials (collectively,
-the "Software") until you have carefully read the following terms and
-conditions. By loading or using the Software, you agree to the terms of this
-Agreement. If you do not wish to so agree, do not install or use the Software.
-
-LICENSES: Please Note:
-- If you are a network administrator, the "Site License" below shall
-apply to you.
-- If you are an end user, the "Single User License" shall apply to you.
-- If you are an original equipment manufacturer (OEM), the "OEM License"
-shall apply to you.
-
-SITE LICENSE. You may copy the Software onto your organization's computers
-for your organization's use, and you may make a reasonable number of
-back-up copies of the Software, subject to these conditions:
-
-1. This Software is licensed for use only in conjunction with Intel
-component products. Use of the Software in conjunction with non-Intel
-component products is not licensed hereunder.
-2. You may not copy, modify, rent, sell, distribute or transfer any part
-of the Software except as provided in this Agreement, and you agree to
-prevent unauthorized copying of the Software.
-3. You may not reverse engineer, decompile, or disassemble the Software.
-4. You may not sublicense or permit simultaneous use of the Software by
-more than one user.
-5. The Software may include portions offered on terms in addition to those
-set out here, as set out in a license accompanying those portions.
-
-SINGLE USER LICENSE. You may copy the Software onto a single computer for
-your personal, noncommercial use, and you may make one back-up copy of the
-Software, subject to these conditions:
-
-1. This Software is licensed for use only in conjunction with Intel
-component products. Use of the Software in conjunction with non-Intel
-component products is not licensed hereunder.
-2. You may not copy, modify, rent, sell, distribute or transfer any part
-of the Software except as provided in this Agreement, and you agree to
-prevent unauthorized copying of the Software.
-3. You may not reverse engineer, decompile, or disassemble the Software.
-4. You may not sublicense or permit simultaneous use of the Software by
-more than one user.
-5. The Software may include portions offered on terms in addition to those
-set out here, as set out in a license accompanying those portions.
-
-OEM LICENSE: You may reproduce and distribute the Software only as an
-integral part of or incorporated in Your product or as a standalone
-Software maintenance update for existing end users of Your products,
-excluding any other standalone products, subject to these conditions:
-
-1. This Software is licensed for use only in conjunction with Intel
-component products. Use of the Software in conjunction with non-Intel
-component products is not licensed hereunder.
-2. You may not copy, modify, rent, sell, distribute or transfer any part
-of the Software except as provided in this Agreement, and you agree to
-prevent unauthorized copying of the Software.
-3. You may not reverse engineer, decompile, or disassemble the Software.
-4. You may only distribute the Software to your customers pursuant to a
-written license agreement. Such license agreement may be a "break-the-
-seal" license agreement. At a minimum such license shall safeguard
-Intel's ownership rights to the Software.
-5. The Software may include portions offered on terms in addition to those
-set out here, as set out in a license accompanying those portions.
-
-NO OTHER RIGHTS. No rights or licenses are granted by Intel to You, expressly
-or by implication, with respect to any proprietary information or patent,
-copyright, mask work, trademark, trade secret, or other intellectual property
-right owned or controlled by Intel, except as expressly provided in this
-Agreement.
-
-OWNERSHIP OF SOFTWARE AND COPYRIGHTS. Title to all copies of the Software
-remains with Intel or its suppliers. The Software is copyrighted and
-protected by the laws of the United States and other countries, and
-international treaty provisions. You may not remove any copyright notices
-from the Software. Intel may make changes to the Software, or to items
-referenced therein, at any time without notice, but is not obligated to
-support or update the Software. Except as otherwise expressly provided, Intel
-grants no express or implied right under Intel patents, copyrights,
-trademarks, or other intellectual property rights. You may transfer the
-Software only if the recipient agrees to be fully bound by these terms and if
-you retain no copies of the Software.
-
-LIMITED MEDIA WARRANTY. If the Software has been delivered by Intel on
-physical media, Intel warrants the media to be free from material physical
-defects for a period of ninety days after delivery by Intel. If such a defect
-is found, return the media to Intel for replacement or alternate delivery of
-the Software as Intel may select.
-
-EXCLUSION OF OTHER WARRANTIES. EXCEPT AS PROVIDED ABOVE, THE SOFTWARE IS
-PROVIDED "AS IS" WITHOUT ANY EXPRESS OR IMPLIED WARRANTY OF ANY KIND
-INCLUDING WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT, OR FITNESS FOR A
-PARTICULAR PURPOSE. Intel does not warrant or assume responsibility for the
-accuracy or completeness of any information, text, graphics, links or other
-items contained within the Software.
-
-LIMITATION OF LIABILITY. IN NO EVENT SHALL INTEL OR ITS SUPPLIERS BE LIABLE
-FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, LOST PROFITS,
-BUSINESS INTERRUPTION, OR LOST INFORMATION) ARISING OUT OF THE USE OF OR
-INABILITY TO USE THE SOFTWARE, EVEN IF INTEL HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES. SOME JURISDICTIONS PROHIBIT EXCLUSION OR
-LIMITATION OF LIABILITY FOR IMPLIED WARRANTIES OR CONSEQUENTIAL OR INCIDENTAL
-DAMAGES, SO THE ABOVE LIMITATION MAY NOT APPLY TO YOU. YOU MAY ALSO HAVE
-OTHER LEGAL RIGHTS THAT VARY FROM JURISDICTION TO JURISDICTION.
-
-TERMINATION OF THIS AGREEMENT. Intel may terminate this Agreement at any time
-if you violate its terms. Upon termination, you will immediately destroy the
-Software or return all copies of the Software to Intel.
-
-APPLICABLE LAWS. Claims arising under this Agreement shall be governed by the
-laws of California, excluding its principles of conflict of laws and the
-United Nations Convention on Contracts for the Sale of Goods. You may not
-export the Software in violation of applicable export laws and regulations.
-Intel is not obligated under any other agreements unless they are in writing
-and signed by an authorized representative of Intel.
-
-GOVERNMENT RESTRICTED RIGHTS. The Software is provided with "RESTRICTED
-RIGHTS." Use, duplication, or disclosure by the Government is subject to
-restrictions as set forth in FAR52.227-14 and DFAR252.227-7013 et seq. or its
-successor. Use of the Software by the Government constitutes acknowledgment
-of Intel's proprietary rights therein. Contractor or Manufacturer is Intel
-2200 Mission College Blvd., Santa Clara, CA 95052.
diff --git a/sysutils/devcpu-data/files/Makefile b/sysutils/devcpu-data/files/Makefile
deleted file mode 100644
index 975279ec2a14..000000000000
--- a/sysutils/devcpu-data/files/Makefile
+++ /dev/null
@@ -1,18 +0,0 @@
-INTEL_UCODE= Intel-Linux-Processor-Microcode-Data-Files-%%GH_TAGNAME%%/intel-ucode
-OUTPUT_DIR= mcodes
-
-all: ucode
-ucode: ucode-split
- mkdir -p $(OUTPUT_DIR)
- cd ${OUTPUT_DIR} && \
- for file in \
- ../${INTEL_UCODE}/[0-9,a-f][0-9,a-f]-[0-9,a-f][0-9,a-f]-[0-9,a-f][0-9,a-f]; do \
- ../ucode-split $$file; \
- done
-
-# Use the host cc to compile ucode-split in case of cross-compile
-ucode-split: ucode-split.c
- ${CC} ucode-split.c -o $@
-
-clean:
- rm -rf $(OUTPUT_DIR) ucode-split
diff --git a/sysutils/devcpu-data/files/microcode_update.in b/sysutils/devcpu-data/files/microcode_update.in
index 005845df4f56..b06b21d6f903 100644
--- a/sysutils/devcpu-data/files/microcode_update.in
+++ b/sysutils/devcpu-data/files/microcode_update.in
@@ -12,7 +12,7 @@
# microcode_update_datadir (str): Directory, microcode updates stored in.
# Default is "%%DATADIR%%"
# microcode_update_cpus (str): A list of cpus to update on startup, or "ALL" for all.
-# Example: microcode_update_cpus_cpus="0 CPU0"
+# Example: microcode_update_cpus="0 1"
# Set to "ALL" by default.
# microcode_update_flags (str): Flags for cpucontrol(8).
@@ -40,11 +40,11 @@ microcode_update_prepare()
microcode_update_start()
{
echo "Updating CPU Microcode..."
- if [ "${microcode_cpus}" = "ALL" ]; then
+ if [ "${microcode_update_cpus}" = "ALL" ]; then
ncpu=`/sbin/sysctl -n hw.ncpu`
cpus=`jot ${ncpu} 0`;
else
- cpus=${microcode_cpus}
+ cpus=${microcode_update_cpus}
fi
for i in ${cpus}; do
${CMT} -u ${microcode_update_flags} \
@@ -52,7 +52,7 @@ microcode_update_start()
logger -p daemon.notice -t microcode_update || \
(echo "Microcode Update Failed." && exit 1)
done
- if [ "${microcode_cpus}" = "ALL" ]; then
+ if [ "${microcode_update_cpus}" = "ALL" ]; then
CPUCONTROL_UPDATED=$(cpucontrol -h 2>&1 | grep -q -- -e; echo $?)
if [ ${CPUCONTROL_UPDATED} -ne 0 ]; then
echo "Please update your system in order to update CPU microcode."
@@ -70,9 +70,19 @@ microcode_update_start()
load_rc_config $name
# Set default values
+if [ -n "${microcode_cpus}" ]; then
+ if [ -n "${microcode_update_cpus}" ]; then
+ echo "Warning: Ignoring deprecated rc variable, microcode_cpus."
+ else
+ echo "Warning: rc variable microcode_cpus is deprecated.
+Warning: Set microcode_udpate_cpus instead."
+ microcode_update_cpus="${microcode_cpus}"
+ fi
+fi
+
: ${microcode_update_enable="NO"}
: ${microcode_update_datadir="%%DATADIR%%"}
-: ${microcode_cpus="ALL"}
+: ${microcode_update_cpus="ALL"}
: ${microcode_update_flags=""}
run_rc_command "$1"
diff --git a/sysutils/devcpu-data/files/pkg-message.in b/sysutils/devcpu-data/files/pkg-message.in
new file mode 100644
index 000000000000..c2860f035372
--- /dev/null
+++ b/sysutils/devcpu-data/files/pkg-message.in
@@ -0,0 +1,46 @@
+[
+{ type: install
+ message: <<EOM
+This port includes an RC script, which is one of two methods to update the
+CPU microcode on a FreeBSD system.
+
+1. The first method, which does not require the RC script included in this
+ port is currently only supported on FreeBSD 12.0 or later and Intel i386
+ and amd64 processors. It is the preferred method when available because
+ it ensures that any CPU features introduced by a microcode update are
+ visible to the kernel by applying the update before the kernel performs
+ CPU feature detection.
+
+ To enable updates using the first method, add the following lines to
+ /boot/loader.conf:
+
+ cpu_microcode_load="YES"
+ cpu_microcode_name="/boot/firmware/intel-ucode.bin"
+
+ The microcode update will be loaded when the system is rebooted.
+
+
+2. The second method, which uses the RC script included in this port can
+ be enabled by adding the following line to /etc/rc.conf:
+
+ microcode_update_enable="YES"
+
+ The microcode update is then applied upon reboot or when the microcode
+ update service is run via:
+
+ # service microcode_update start
+
+ If the CPU requires a microcode update, a console message such as the
+ following will appear:
+
+ Updating CPU Microcode...
+ %%DATADIR%%/m32306c3_00000022.fw: updating cpu /dev/cpuctl0 from rev 0x17 to rev 0x22... done.
+ %%DATADIR%%/m32306c3_00000022.fw: updating cpu /dev/cpuctl2 from rev 0x17 to rev 0x22... done.
+ %%DATADIR%%/m32306c3_00000022.fw: updating cpu /dev/cpuctl4 from rev 0x17 to rev 0x22... done.
+ %%DATADIR%%/m32306c3_00000022.fw: updating cpu /dev/cpuctl6 from rev 0x17 to rev 0x22... done.
+ Done.
+
+It is safe to enable both methods.
+EOM
+}
+]
diff --git a/sysutils/devcpu-data/files/ucode-split.c b/sysutils/devcpu-data/files/ucode-split.c
deleted file mode 100644
index be659a613902..000000000000
--- a/sysutils/devcpu-data/files/ucode-split.c
+++ /dev/null
@@ -1,203 +0,0 @@
-/*-
- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
- *
- * Copyright (C) 2018 The FreeBSD Foundation.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
- */
-
-#include <err.h>
-#include <fcntl.h>
-#include <stdbool.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-static const size_t bufsize = 65536;
-
-/* SDM vol 3 9.11.1 Intel microcode header. */
-struct microcode_update_header {
- uint32_t header_version;
- uint32_t update_revision;
- uint32_t date; /* BCD mmddyyyy */
- uint32_t processor_signature;
- uint32_t checksum; /* Over update data and header */
- uint32_t loader_revision;
- uint32_t processor_flags;
- uint32_t data_size;
- uint32_t total_size;
- uint32_t reserved[3];
-};
-
-/*
- * SDM vol 2A CPUID EAX = 01h Returns Model, Family, Stepping Information.
- * Caller must free the returned string.
- */
-
-static char *
-format_signature(uint32_t signature)
-{
- char *buf;
- unsigned family, model, stepping;
-
- family = (signature & 0xf00) >> 8;
- model = (signature & 0xf0) >> 4;
- stepping = signature & 0xf;
- if (family == 0x06 || family == 0x0f)
- model += (signature & 0xf0000) >> 12;
- if (family == 0x0f)
- family += (signature & 0xff00000) >> 20;
- asprintf(&buf, "%02x-%02x-%02x", family, model, stepping);
- if (buf == NULL)
- err(1, "asprintf");
- return (buf);
-}
-
-static void
-dump_header(const struct microcode_update_header *hdr)
-{
- char *sig_str;
- int i;
- bool platformid_printed;
-
- sig_str = format_signature(hdr->processor_signature);
- printf("header version\t0x%x\n", hdr->header_version);
- printf("revision\t0x%x\n", hdr->update_revision);
- printf("date\t\t0x%x\t%04x-%02x-%02x\n", hdr->date,
- hdr->date & 0xffff, (hdr->date & 0xff000000) >> 24,
- (hdr->date & 0xff0000) >> 16);
- printf("signature\t0x%x\t\t%s\n", hdr->processor_signature, sig_str);
- printf("checksum\t0x%x\n", hdr->checksum);
- printf("loader revision\t0x%x\n", hdr->loader_revision);
- printf("processor flags\t0x%x", hdr->processor_flags);
- platformid_printed = false;
- for (i = 0; i < 8; i++) {
- if (hdr->processor_flags & 1 << i) {
- printf("%s%d", platformid_printed ? ", " : "\t\t", i);
- platformid_printed = true;
- }
- }
- printf("\n");
- printf("datasize\t0x%x\t\t0x%x\n", hdr->data_size,
- hdr->data_size != 0 ? hdr->data_size : 2000);
- printf("size\t\t0x%x\t\t0x%x\n", hdr->total_size,
- hdr->total_size != 0 ? hdr->total_size : 2048);
- free(sig_str);
-}
-
-static void
-usage(void)
-{
-
- printf("ucode-split [-v] microcode_file\n");
- exit(1);
-}
-
-int
-main(int argc, char *argv[])
-{
- struct microcode_update_header hdr;
- char *buf, *output_file, *sig_str;
- size_t len, resid;
- ssize_t rv;
- int c, ifd, ofd;
- bool vflag;
-
- vflag = false;
- while ((c = getopt(argc, argv, "v")) != -1) {
- switch (c) {
- case 'v':
- vflag = true;
- break;
- default:
- usage();
- }
- }
- argc -= optind;
- argv += optind;
-
- if (argc != 1)
- usage();
-
- ifd = open(argv[0], O_RDONLY);
- if (ifd < 0)
- err(1, "open");
-
- buf = malloc(bufsize);
- if (buf == NULL)
- err(1, "malloc");
-
- for (;;) {
- /* Read header. */
- rv = read(ifd, &hdr, sizeof(hdr));
- if (rv < 0) {
- err(1, "read");
- } else if (rv == 0) {
- break;
- } else if (rv < (ssize_t)sizeof(hdr)) {
- errx(1, "invalid microcode header");
- }
- if (hdr.header_version != 1)
- errx(1, "invalid header version");
-
- if (vflag)
- dump_header(&hdr);
-
- sig_str = format_signature(hdr.processor_signature);
- asprintf(&output_file, "%s.%02x", sig_str,
- hdr.processor_flags & 0xff);
- free(sig_str);
- if (output_file == NULL)
- err(1, "asprintf");
- ofd = open(output_file, O_WRONLY | O_CREAT | O_TRUNC, 0600);
- if (ofd < 0)
- err(1, "open");
-
- /* Write header. */
- rv = write(ofd, &hdr, sizeof(hdr));
- if (rv < (ssize_t)sizeof(hdr))
- err(1, "write");
-
- /* Copy data. */
- resid = (hdr.total_size != 0 ? hdr.total_size : 2048) -
- sizeof(hdr);
- if (resid > 1 << 24) /* Arbitrary chosen maximum size. */
- errx(1, "header total_size too large");
- while (resid > 0) {
- len = resid < bufsize ? resid : bufsize;
- rv = read(ifd, buf, len);
- if (rv < 0)
- err(1, "read");
- else if (rv < (ssize_t)len)
- errx(1, "truncated microcode data");
- if (write(ofd, buf, len) < (ssize_t)len)
- err(1, "write");
- resid -= len;
- }
- if (vflag)
- printf("written to %s\n\n", output_file);
- close(ofd);
- free(output_file);
- }
-}
diff --git a/sysutils/devcpu-data/pkg-descr b/sysutils/devcpu-data/pkg-descr
index 2f4bf5362506..815fa3126b0d 100644
--- a/sysutils/devcpu-data/pkg-descr
+++ b/sysutils/devcpu-data/pkg-descr
@@ -1,3 +1,3 @@
-This port supplies microcode updates for use with cpuctl(4) microcode
-update facility. These could be used to keep your processor's firmware
-up-to-date.
+An RC script for use with the cpuctl(4) microcode update facility to keep your
+processor's firmware up-to-date. CPU microcode data must be installed from a
+vendor. See sysutils/devcpu-data-amd and sysutils/devcpu-data-intel.
diff --git a/sysutils/devcpu-data/pkg-message b/sysutils/devcpu-data/pkg-message
deleted file mode 100644
index b645f50bc138..000000000000
--- a/sysutils/devcpu-data/pkg-message
+++ /dev/null
@@ -1,46 +0,0 @@
-[
-{ type: install
- message: <<EOM
-Installing this port will allow host startup to update the CPU microcode on
-a FreeBSD system automatically. There are two methods for updating CPU
-microcode: the first methods loads and applies the update before the kernel
-begins booting, and the second method loads and applies updates using an
-rc script. The first method is preferred, but is currently only supported
-on Intel i386 and amd64 processors running FreeBSD 12.0. It is safe to
-enable both methods.
-
-The first method ensures that any CPU features introduced by a microcode
-update are visible to the kernel. In other words, the update is loaded
-before the kernel performs CPU feature detection.
-
-To enable updates using the first method, add the following lines to
-the system's /boot/loader.conf:
-
-cpu_microcode_load="YES"
-cpu_microcode_name="/boot/firmware/intel-ucode.bin"
-
-This method will not load the microcode update until the system is
-rebooted.
-
-To enable updates using the second method, add the following line to
-the system's /etc/rc.conf:
-
-microcode_update_enable="YES"
-
-Then, to ensure the update is applied, reboot the system or start the
-microcode update service via:
-
-# service microcode_update start
-
-If the CPU requires a microcode update, a console message such as the following
-will appear:
-
-Updating CPU Microcode...
-/usr/local/share/cpucontrol/m32306c3_00000022.fw: updating cpu /dev/cpuctl0 from rev 0x17 to rev 0x22... done.
-/usr/local/share/cpucontrol/m32306c3_00000022.fw: updating cpu /dev/cpuctl2 from rev 0x17 to rev 0x22... done.
-/usr/local/share/cpucontrol/m32306c3_00000022.fw: updating cpu /dev/cpuctl4 from rev 0x17 to rev 0x22... done.
-/usr/local/share/cpucontrol/m32306c3_00000022.fw: updating cpu /dev/cpuctl6 from rev 0x17 to rev 0x22... done.
-Done.
-EOM
-}
-]
diff --git a/sysutils/devcpu-data/pkg-plist b/sysutils/devcpu-data/pkg-plist
deleted file mode 100644
index ed0fa8528474..000000000000
--- a/sysutils/devcpu-data/pkg-plist
+++ /dev/null
@@ -1,208 +0,0 @@
-%%DATADIR%%/06-03-02.00
-%%DATADIR%%/06-05-00.01
-%%DATADIR%%/06-05-00.02
-%%DATADIR%%/06-05-00.08
-%%DATADIR%%/06-05-01.01
-%%DATADIR%%/06-05-02.01
-%%DATADIR%%/06-05-02.02
-%%DATADIR%%/06-05-02.04
-%%DATADIR%%/06-05-03.01
-%%DATADIR%%/06-05-03.02
-%%DATADIR%%/06-05-03.04
-%%DATADIR%%/06-05-03.08
-%%DATADIR%%/06-06-00.01
-%%DATADIR%%/06-06-05.10
-%%DATADIR%%/06-06-0a.02
-%%DATADIR%%/06-06-0a.08
-%%DATADIR%%/06-06-0a.20
-%%DATADIR%%/06-06-0d.02
-%%DATADIR%%/06-06-0d.08
-%%DATADIR%%/06-06-0d.20
-%%DATADIR%%/06-07-01.04
-%%DATADIR%%/06-07-02.04
-%%DATADIR%%/06-07-03.04
-%%DATADIR%%/06-08-01.01
-%%DATADIR%%/06-08-01.04
-%%DATADIR%%/06-08-01.08
-%%DATADIR%%/06-08-01.10
-%%DATADIR%%/06-08-01.20
-%%DATADIR%%/06-08-03.08
-%%DATADIR%%/06-08-03.20
-%%DATADIR%%/06-08-06.01
-%%DATADIR%%/06-08-06.02
-%%DATADIR%%/06-08-06.04
-%%DATADIR%%/06-08-06.10
-%%DATADIR%%/06-08-06.80
-%%DATADIR%%/06-08-0a.10
-%%DATADIR%%/06-08-0a.20
-%%DATADIR%%/06-08-0a.80
-%%DATADIR%%/06-09-05.10
-%%DATADIR%%/06-09-05.20
-%%DATADIR%%/06-09-05.80
-%%DATADIR%%/06-0a-00.04
-%%DATADIR%%/06-0a-01.04
-%%DATADIR%%/06-0b-01.10
-%%DATADIR%%/06-0b-01.20
-%%DATADIR%%/06-0b-04.10
-%%DATADIR%%/06-0b-04.20
-%%DATADIR%%/06-0d-06.20
-%%DATADIR%%/06-0e-08.20
-%%DATADIR%%/06-0e-0c.20
-%%DATADIR%%/06-0e-0c.80
-%%DATADIR%%/06-0f-02.01
-%%DATADIR%%/06-0f-02.20
-%%DATADIR%%/06-0f-06.01
-%%DATADIR%%/06-0f-06.04
-%%DATADIR%%/06-0f-06.20
-%%DATADIR%%/06-0f-07.10
-%%DATADIR%%/06-0f-07.40
-%%DATADIR%%/06-0f-0a.80
-%%DATADIR%%/06-0f-0b.01
-%%DATADIR%%/06-0f-0b.04
-%%DATADIR%%/06-0f-0b.08
-%%DATADIR%%/06-0f-0b.10
-%%DATADIR%%/06-0f-0b.20
-%%DATADIR%%/06-0f-0b.40
-%%DATADIR%%/06-0f-0b.80
-%%DATADIR%%/06-0f-0d.01
-%%DATADIR%%/06-0f-0d.20
-%%DATADIR%%/06-0f-0d.80
-%%DATADIR%%/06-16-01.01
-%%DATADIR%%/06-16-01.02
-%%DATADIR%%/06-16-01.80
-%%DATADIR%%/06-17-06.01
-%%DATADIR%%/06-17-06.04
-%%DATADIR%%/06-17-06.10
-%%DATADIR%%/06-17-06.40
-%%DATADIR%%/06-17-06.80
-%%DATADIR%%/06-17-07.10
-%%DATADIR%%/06-17-0a.11
-%%DATADIR%%/06-17-0a.44
-%%DATADIR%%/06-17-0a.a0
-%%DATADIR%%/06-1a-04.03
-%%DATADIR%%/06-1a-05.03
-%%DATADIR%%/06-1c-02.01
-%%DATADIR%%/06-1c-02.04
-%%DATADIR%%/06-1c-02.08
-%%DATADIR%%/06-1c-0a.01
-%%DATADIR%%/06-1c-0a.04
-%%DATADIR%%/06-1c-0a.08
-%%DATADIR%%/06-1c-0a.10
-%%DATADIR%%/06-1d-01.08
-%%DATADIR%%/06-1e-05.13
-%%DATADIR%%/06-25-02.12
-%%DATADIR%%/06-25-05.92
-%%DATADIR%%/06-26-01.01
-%%DATADIR%%/06-26-01.02
-%%DATADIR%%/06-2a-07.12
-%%DATADIR%%/06-2c-02.03
-%%DATADIR%%/06-2d-06.6d
-%%DATADIR%%/06-2d-07.6d
-%%DATADIR%%/06-2e-06.04
-%%DATADIR%%/06-2f-02.05
-%%DATADIR%%/06-37-08.02
-%%DATADIR%%/06-37-08.0c
-%%DATADIR%%/06-37-09.0f
-%%DATADIR%%/06-3a-09.12
-%%DATADIR%%/06-3c-03.32
-%%DATADIR%%/06-3d-04.c0
-%%DATADIR%%/06-3e-04.ed
-%%DATADIR%%/06-3e-06.ed
-%%DATADIR%%/06-3e-07.ed
-%%DATADIR%%/06-3f-02.6f
-%%DATADIR%%/06-3f-04.80
-%%DATADIR%%/06-45-01.72
-%%DATADIR%%/06-46-01.32
-%%DATADIR%%/06-47-01.22
-%%DATADIR%%/06-4c-03.01
-%%DATADIR%%/06-4c-04.01
-%%DATADIR%%/06-4d-08.01
-%%DATADIR%%/06-4e-03.c0
-%%DATADIR%%/06-55-03.97
-%%DATADIR%%/06-55-04.b7
-%%DATADIR%%/06-55-05.b7
-%%DATADIR%%/06-55-06.bf
-%%DATADIR%%/06-55-07.bf
-%%DATADIR%%/06-55-0b.bf
-%%DATADIR%%/06-56-02.10
-%%DATADIR%%/06-56-03.10
-%%DATADIR%%/06-56-04.10
-%%DATADIR%%/06-56-05.10
-%%DATADIR%%/06-5c-02.01
-%%DATADIR%%/06-5c-09.03
-%%DATADIR%%/06-5c-0a.03
-%%DATADIR%%/06-5e-03.36
-%%DATADIR%%/06-5f-01.01
-%%DATADIR%%/06-66-03.80
-%%DATADIR%%/06-6a-05.87
-%%DATADIR%%/06-6a-06.87
-%%DATADIR%%/06-7a-01.01
-%%DATADIR%%/06-7a-08.01
-%%DATADIR%%/06-7e-05.80
-%%DATADIR%%/06-86-05.01
-%%DATADIR%%/06-8a-01.10
-%%DATADIR%%/06-8c-01.80
-%%DATADIR%%/06-8c-02.c2
-%%DATADIR%%/06-8d-01.c2
-%%DATADIR%%/06-8e-09.10
-%%DATADIR%%/06-8e-09.c0
-%%DATADIR%%/06-8e-0a.c0
-%%DATADIR%%/06-8e-0b.d0
-%%DATADIR%%/06-8e-0c.94
-%%DATADIR%%/06-96-01.01
-%%DATADIR%%/06-9c-00.01
-%%DATADIR%%/06-9e-09.2a
-%%DATADIR%%/06-9e-0a.22
-%%DATADIR%%/06-9e-0b.02
-%%DATADIR%%/06-9e-0c.22
-%%DATADIR%%/06-9e-0d.22
-%%DATADIR%%/06-a5-02.20
-%%DATADIR%%/06-a5-03.22
-%%DATADIR%%/06-a5-05.22
-%%DATADIR%%/06-a6-00.80
-%%DATADIR%%/06-a6-01.80
-%%DATADIR%%/06-a7-01.02
-%%DATADIR%%/0f-00-07.01
-%%DATADIR%%/0f-00-07.02
-%%DATADIR%%/0f-00-0a.01
-%%DATADIR%%/0f-00-0a.02
-%%DATADIR%%/0f-00-0a.04
-%%DATADIR%%/0f-01-02.04
-%%DATADIR%%/0f-02-04.02
-%%DATADIR%%/0f-02-04.04
-%%DATADIR%%/0f-02-04.10
-%%DATADIR%%/0f-02-05.01
-%%DATADIR%%/0f-02-05.02
-%%DATADIR%%/0f-02-05.04
-%%DATADIR%%/0f-02-05.10
-%%DATADIR%%/0f-02-06.02
-%%DATADIR%%/0f-02-07.02
-%%DATADIR%%/0f-02-07.04
-%%DATADIR%%/0f-02-07.08
-%%DATADIR%%/0f-02-09.02
-%%DATADIR%%/0f-02-09.04
-%%DATADIR%%/0f-02-09.08
-%%DATADIR%%/0f-03-02.0d
-%%DATADIR%%/0f-03-03.0d
-%%DATADIR%%/0f-03-04.1d
-%%DATADIR%%/0f-04-01.02
-%%DATADIR%%/0f-04-01.bd
-%%DATADIR%%/0f-04-03.9d
-%%DATADIR%%/0f-04-04.9d
-%%DATADIR%%/0f-04-07.9d
-%%DATADIR%%/0f-04-08.01
-%%DATADIR%%/0f-04-08.02
-%%DATADIR%%/0f-04-08.5f
-%%DATADIR%%/0f-04-09.bd
-%%DATADIR%%/0f-04-0a.5c
-%%DATADIR%%/0f-04-0a.5d
-%%DATADIR%%/0f-06-02.04
-%%DATADIR%%/0f-06-04.01
-%%DATADIR%%/0f-06-04.34
-%%DATADIR%%/0f-06-05.01
-%%DATADIR%%/0f-06-08.22
-%%DATADIR%%/microcode_amd.bin
-%%DATADIR%%/microcode_amd_fam15h.bin
-%%DATADIR%%/microcode_amd_fam16h.bin
-%%DATADIR%%/microcode_amd_fam17h.bin
-/boot/firmware/intel-ucode.bin