Index: UPDATING =================================================================== --- UPDATING +++ UPDATING @@ -139,6 +139,20 @@ Due to these changes, CVS, GUI, PERFORCE, and SUBVERSION options as well as gui and svn flavors were removed from the port. +20211010: + AFFECTS: users of sysutils/devcpu-data + AUTHOR: jrm@FreeBSD.org + + The RC variable name microcode_cpus was changed to + microcode_update_cpus. If the old names appears in your rc.conf, it + must be updated to the new name. + + Two new ports were branched from sysutils/devcpu-data, + sysustils/devcpu-data-amd and sysustils/devcpu-data-intel. The two + new ports contain only the CPU microcode updates for each vendor and + sysutils/devcpu-data now only contains an RC script. Both new ports + are on-by-default, optional dependencies of sysutils/devcpu-data. + 20211010: AFFECTS: users of gtk2 flavored devel/geany* AUTHOR: madpilot@FreeBSD.org 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,35 @@ +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 + +LICENSE= EULA +LICENSE_NAME= Advanced Micro Devices License Agreement +LICENSE_FILE= ${FILESDIR}/LICENSE.amd-ucode +LICENSE_PERMS= dist-mirror no-dist-sell pkg-mirror no-pkg-sell auto-accept + +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 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/files/LICENSE.amd-ucode =================================================================== --- /dev/null +++ sysutils/devcpu-data-amd/files/LICENSE.amd-ucode @@ -0,0 +1,64 @@ +Copyright (C) 2010-2018 Advanced Micro Devices, Inc., All rights reserved. + +Permission is hereby granted by Advanced Micro Devices, Inc. ("AMD"), +free of any license fees, to any person obtaining a copy of this +microcode in binary form (the "Software") ("You"), to install, +reproduce, copy and distribute copies of the Software and to permit +persons to whom the Software is provided to do the same, subject to +the following terms and conditions. Your use of any portion of the +Software shall constitute Your acceptance of the following terms and +conditions. If You do not agree to the following terms and conditions, +do not use, retain or redistribute any portion of the Software. + +If You redistribute this Software, You must reproduce the above +copyright notice and this license with the Software. +Without specific, prior, written permission from AMD, You may not +reference AMD or AMD products in the promotion of any product derived +from or incorporating this Software in any manner that implies that +AMD endorses or has certified such product derived from or +incorporating this Software. + +You may not reverse engineer, decompile, or disassemble this Software +or any portion thereof. + +THE SOFTWARE IS PROVIDED "AS IS" WITHOUT ANY EXPRESS OR IMPLIED +WARRANTY OF ANY KIND, INCLUDING BUT NOT LIMITED TO WARRANTIES OF +MERCHANTABILITY, NONINFRINGEMENT, TITLE, FITNESS FOR ANY PARTICULAR +PURPOSE, OR WARRANTIES ARISING FROM CONDUCT, COURSE OF DEALING, OR +USAGE OF TRADE. IN NO EVENT SHALL AMD OR ITS LICENSORS BE LIABLE FOR +ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR +LOSS OF PROFITS, BUSINESS INTERRUPTION, OR LOSS OF DATA OR +INFORMATION) ARISING OUT OF AMD'S NEGLIGENCE, GROSS NEGLIGENCE, THE +USE OF OR INABILITY TO USE THE SOFTWARE, EVEN IF AMD HAS BEEN ADVISED +OF THE POSSIBILITY OF SUCH DAMAGES. BECAUSE SOME JURISDICTIONS +PROHIBIT THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR +INCIDENTAL DAMAGES OR THE EXCLUSION OF IMPLIED WARRANTIES, THE ABOVE +LIMITATION MAY NOT APPLY TO YOU. + +Without limiting the foregoing, the Software may implement third party +technologies for which You must obtain licenses from parties other +than AMD. You agree that AMD has not obtained or conveyed to You, and +that You shall be responsible for obtaining the rights to use and/or +distribute the applicable underlying intellectual property rights +related to the third party technologies. These third party +technologies are not licensed hereunder. + +If You use the Software (in whole or in part), You shall adhere to all +applicable U.S., European, and other export laws, including but not +limited to the U.S. Export Administration Regulations ("EAR"), (15 +C.F.R. Sections 730 through 774), and E.U. Council Regulation (EC) No +1334/2000 of 22 June 2000. Further, pursuant to Section 740.6 of the +EAR, You hereby certify that, except pursuant to a license granted by +the United States Department of Commerce Bureau of Industry and +Security or as otherwise permitted pursuant to a License Exception +under the U.S. Export Administration Regulations ("EAR"), You will not +(1) export, re-export or release to a national of a country in Country +Groups D:1, E:1 or E:2 any restricted technology, software, or source +code You receive hereunder, or (2) export to Country Groups D:1, E:1 +or E:2 the direct product of such technology or software, if such +foreign produced direct product is subject to national security +controls as identified on the Commerce Control List (currently found +in Supplement 1 to Part 774 of EAR). For the most current Country +Group listings, or for additional information about the EAR or Your +obligations under those regulations, please refer to the U.S. Bureau +of Industry and Security?s website at ttp://www.bis.doc.gov/. 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: < ${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: < ${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 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 1" # Set to "ALL" by default. # microcode_update_flags (str): Flags for cpucontrol(8). @@ -40,11 +40,11 @@ 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 @@ 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 @@ 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" Index: sysutils/devcpu-data/files/pkg-message.in =================================================================== --- /dev/null +++ sysutils/devcpu-data/files/pkg-message.in @@ -0,0 +1,46 @@ +[ +{ type: install + message: < -#include -#include -#include -#include -#include -#include -#include - -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: <