Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F143166501
D32349.id96496.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
28 KB
Referenced Files
None
Subscribers
None
D32349.id96496.diff
View Options
Index: sysutils/Makefile
===================================================================
--- sysutils/Makefile
+++ sysutils/Makefile
@@ -255,6 +255,8 @@
SUBDIR += desktop-installer
SUBDIR += detox
SUBDIR += devcpu-data
+ SUBDIR += devcpu-data-amd
+ SUBDIR += devcpu-data-intel
SUBDIR += devstat
SUBDIR += dfc
SUBDIR += di
Index: sysutils/devcpu-data-amd/Makefile
===================================================================
--- /dev/null
+++ sysutils/devcpu-data-amd/Makefile
@@ -0,0 +1,30 @@
+PORTNAME= data
+PORTVERSION= 20191228
+CATEGORIES= sysutils
+MASTER_SITES= LOCAL/sbruno
+PKGNAMEPREFIX= devcpu-
+PKGNAMESUFFIX= -amd
+DISTNAME= amd64-microcode.${PORTVERSION}
+
+MAINTAINER= sbruno@FreeBSD.org
+COMMENT= AMD CPUs microcode updates
+
+ONLY_FOR_ARCHS= amd64 i386
+
+USES= tar:xz
+
+NO_ARCH= yes
+NO_BUILD= yes
+
+NO_WRKSUBDIR= yes
+
+DATADIR= ${PREFIX}/share/cpucontrol
+
+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}/
+
+.include <bsd.port.mk>
Index: sysutils/devcpu-data-amd/distinfo
===================================================================
--- /dev/null
+++ sysutils/devcpu-data-amd/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1633576196
+SHA256 (amd64-microcode.20191228.tar.xz) = 156eef8950f28436e045c1d5ac6e4738d99c07a6737d35bf966901f4b260abb3
+SIZE (amd64-microcode.20191228.tar.xz) = 28827
Index: sysutils/devcpu-data-amd/pkg-descr
===================================================================
--- /dev/null
+++ sysutils/devcpu-data-amd/pkg-descr
@@ -0,0 +1,2 @@
+This port uses the cpuctl(4) microcode update facility to keep your AMD
+processor's firmware up-to-date.
Index: sysutils/devcpu-data-amd/pkg-message
===================================================================
--- /dev/null
+++ sysutils/devcpu-data-amd/pkg-message
@@ -0,0 +1,7 @@
+[
+{ type: install
+ message: <<EOM
+Refer to the devcpu-data installation notes to enable AMD microcode updates.
+EOM
+}
+]
Index: sysutils/devcpu-data-amd/pkg-plist
===================================================================
--- /dev/null
+++ sysutils/devcpu-data-amd/pkg-plist
@@ -0,0 +1,4 @@
+%%DATADIR%%/microcode_amd.bin
+%%DATADIR%%/microcode_amd_fam15h.bin
+%%DATADIR%%/microcode_amd_fam16h.bin
+%%DATADIR%%/microcode_amd_fam17h.bin
Index: sysutils/devcpu-data-intel/Makefile
===================================================================
--- sysutils/devcpu-data-intel/Makefile
+++ sysutils/devcpu-data-intel/Makefile
@@ -1,45 +1,39 @@
-# Created by: stas
-
PORTNAME= data
-PORTVERSION= 1.39
+DISTVERSIONPREFIX= microcode-
+DISTVERSION= 20210608
CATEGORIES= sysutils
-MASTER_SITES= LOCAL/sbruno:amd
PKGNAMEPREFIX= devcpu-
-DISTFILES= amd64-microcode.20191228.tar.xz:amd
+PKGNAMESUFFIX= -intel
MAINTAINER= sbruno@FreeBSD.org
-COMMENT= Intel and AMD CPUs microcode updates
+COMMENT= Intel CPU 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
+ONLY_FOR_ARCHS= amd64 i386
+
USE_GITHUB= yes
GH_ACCOUNT= intel
GH_PROJECT= Intel-Linux-Processor-Microcode-Data-Files
-GH_TAGNAME= microcode-20210608
-
-ONLY_FOR_ARCHS= amd64 i386
-NO_ARCH= yes
-NO_WRKSUBDIR= yes
DATADIR= ${PREFIX}/share/cpucontrol
FWDIR= /boot/firmware
+NO_ARCH= yes
-USE_RC_SUBR= microcode_update
+NO_WRKSUBDIR= yes
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
+ ${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
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}/
Index: sysutils/devcpu-data-intel/distinfo
===================================================================
--- /dev/null
+++ sysutils/devcpu-data-intel/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1633571846
+SHA256 (intel-Intel-Linux-Processor-Microcode-Data-Files-microcode-20210608_GH0.tar.gz) = fd85b6b769efd029dec6a2c07106fd18fb4dcb548b7bc4cde09295a8344ef6d7
+SIZE (intel-Intel-Linux-Processor-Microcode-Data-Files-microcode-20210608_GH0.tar.gz) = 4782451
Index: sysutils/devcpu-data-intel/pkg-descr
===================================================================
--- /dev/null
+++ sysutils/devcpu-data-intel/pkg-descr
@@ -0,0 +1,9 @@
+This port uses the cpuctl(4) microcode update facility to keep your Intel
+processor's firmware up-to-date.
+
+Updating your microcode can help to mitigate certain potential security
+vulnerabilities in CPUs as well as address certain functional issues that could,
+for example, result in unpredictable system behavior such as hangs, crashes,
+unexpected reboots, data errors, etc.
+
+WWW: https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files
Index: sysutils/devcpu-data-intel/pkg-message
===================================================================
--- /dev/null
+++ sysutils/devcpu-data-intel/pkg-message
@@ -0,0 +1,7 @@
+[
+{ type: install
+ message: <<EOM
+Refer to the devcpu-data installation notes to enable Intel microcode updates.
+EOM
+}
+]
Index: sysutils/devcpu-data-intel/pkg-plist
===================================================================
--- sysutils/devcpu-data-intel/pkg-plist
+++ sysutils/devcpu-data-intel/pkg-plist
@@ -201,8 +201,4 @@
%%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
Index: sysutils/devcpu-data/Makefile
===================================================================
--- sysutils/devcpu-data/Makefile
+++ sysutils/devcpu-data/Makefile
@@ -1,47 +1,37 @@
# Created by: stas
PORTNAME= data
-PORTVERSION= 1.39
+PORTVERSION= 20211006
CATEGORIES= sysutils
-MASTER_SITES= LOCAL/sbruno:amd
PKGNAMEPREFIX= devcpu-
-DISTFILES= amd64-microcode.20191228.tar.xz:amd
+MASTER_SITES= # none
+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
+
+USE_RC_SUBR= microcode_update
+
NO_ARCH= yes
+NO_BUILD= yes
+NO_INSTALL= yes
+SUB_FILES= pkg-message
+
NO_WRKSUBDIR= yes
-DATADIR= ${PREFIX}/share/cpucontrol
-FWDIR= /boot/firmware
+OPTIONS_DEFAULT= AMD INTEL
+OPTIONS_MULTI= VENDOR
+OPTIONS_MULTI_VENDOR= AMD INTEL
-USE_RC_SUBR= microcode_update
+AMD_DESC= Depend on sysutils/devcpu-data-amd
+INTEL_DESC= Depend on sysutils/devcpu-data-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
-
-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>
Index: sysutils/devcpu-data/distinfo
===================================================================
--- 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
Index: sysutils/devcpu-data/files/LICENSE
===================================================================
--- /dev/null
+++ sysutils/devcpu-data/files/LICENSE
@@ -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.
Index: sysutils/devcpu-data/files/Makefile
===================================================================
--- /dev/null
+++ sysutils/devcpu-data/files/Makefile
@@ -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
Index: sysutils/devcpu-data/files/microcode_update.in
===================================================================
--- sysutils/devcpu-data/files/microcode_update.in
+++ 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 CPU0"
# Set to "ALL" by default.
# microcode_update_flags (str): Flags for cpucontrol(8).
@@ -44,7 +44,7 @@
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} \
@@ -72,7 +72,7 @@
# Set default values
: ${microcode_update_enable="NO"}
: ${microcode_update_datadir="%%DATADIR%%"}
-: ${microcode_cpus="ALL"}
+: ${microcode_update_cpus="ALL"}
: ${microcode_update_flags=""}
run_rc_command "$1"
Index: sysutils/devcpu-data/files/pkg-message.in
===================================================================
--- /dev/null
+++ 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
+}
+]
Index: sysutils/devcpu-data/files/ucode-split.c
===================================================================
--- /dev/null
+++ sysutils/devcpu-data/files/ucode-split.c
@@ -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);
- }
-}
Index: sysutils/devcpu-data/pkg-descr
===================================================================
--- sysutils/devcpu-data/pkg-descr
+++ 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.
Index: sysutils/devcpu-data/pkg-message
===================================================================
--- 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
-}
-]
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Tue, Jan 27, 8:24 PM (8 h, 2 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28059960
Default Alt Text
D32349.id96496.diff (28 KB)
Attached To
Mode
D32349: WIP to separate out sysutils/devcpu-data into two ports
Attached
Detach File
Event Timeline
Log In to Comment