Index: MOVED =================================================================== --- MOVED +++ MOVED @@ -7780,3 +7780,6 @@ lang/go118||2023-08-04|Upstream support ended devel/hhdate|devel/date|2023-08-05|Dedup library x11-toolkits/wlinfo||2023-08-10|Redundant with wayland-info from graphics/wayland-utils +sysutils/devcpu-data-amd|sysutils/cpu-microcode-amd|2023-08-10|Reorganize CPU microcode ports +sysutils/devcpu-data-intel|sysutils/cpu-microcode-intel|2023-08-10|Reorganize CPU microcode ports +sysutils/devcpu-data|sysutils/cpu-microcode-rc|2023-08-10|Reorganize CPU microcode ports Index: sysutils/Makefile =================================================================== --- sysutils/Makefile +++ sysutils/Makefile @@ -234,6 +234,10 @@ SUBDIR += coreos-ct SUBDIR += coreutils SUBDIR += cpdup + SUBDIR += cpu-microcode + SUBDIR += cpu-microcode-amd + SUBDIR += cpu-microcode-intel + SUBDIR += cpu-microcode-rc SUBDIR += cpu-x SUBDIR += cpuburn SUBDIR += cpufetch @@ -275,9 +279,6 @@ SUBDIR += deltup SUBDIR += desktop-installer SUBDIR += detox - SUBDIR += devcpu-data - SUBDIR += devcpu-data-amd - SUBDIR += devcpu-data-intel SUBDIR += devctl-jail-kmod SUBDIR += devd-mount SUBDIR += devedeng Index: sysutils/cpu-microcode-amd/Makefile =================================================================== --- sysutils/cpu-microcode-amd/Makefile +++ sysutils/cpu-microcode-amd/Makefile @@ -1,8 +1,8 @@ -PORTNAME= data +PORTNAME= microcode PORTVERSION= 20230724 CATEGORIES= sysutils MASTER_SITES= https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/amd-ucode/ -PKGNAMEPREFIX= devcpu- +PKGNAMEPREFIX= cpu- PKGNAMESUFFIX= -amd DISTFILES= microcode_amd.bin?id=${_REV} \ microcode_amd_fam15h.bin?id=${_REV} \ @@ -12,7 +12,7 @@ DIST_SUBDIR= ${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX} MAINTAINER= sbruno@FreeBSD.org -COMMENT= AMD CPUs microcode updates +COMMENT= AMD CPU microcode updates LICENSE= EULA LICENSE_NAME= Advanced Micro Devices License Agreement @@ -21,13 +21,15 @@ ONLY_FOR_ARCHS= amd64 i386 +RUN_DEPENDS= ${LOCALBASE}/etc/rc.d/microcode_update:sysutils/cpu-microcode-rc + +DATADIR= ${PREFIX}/share/cpucontrol EXTRACT_CMD= ${CP} EXTRACT_BEFORE_ARGS= # empty EXTRACT_AFTER_ARGS= . NO_ARCH= yes NO_BUILD= yes -DATADIR= ${PREFIX}/share/cpucontrol NO_WRKSUBDIR= yes PLIST_FILES= ${DISTFILES:S/^/${DATADIR}\//g:C/\?.*//} Index: sysutils/cpu-microcode-amd/distinfo =================================================================== --- /dev/null +++ sysutils/cpu-microcode-amd/distinfo @@ -0,0 +1,11 @@ +TIMESTAMP = 1691693284 +SHA256 (cpu-microcode-amd/microcode_amd.bin?id=0bc3126c9cfa0b8c761483215c25382f831a7c6f) = 8a9d9e8b788e31e61cddc03cb1eeab5db99e0f667128943ff0780e6437d2e43e +SIZE (cpu-microcode-amd/microcode_amd.bin?id=0bc3126c9cfa0b8c761483215c25382f831a7c6f) = 12684 +SHA256 (cpu-microcode-amd/microcode_amd_fam15h.bin?id=0bc3126c9cfa0b8c761483215c25382f831a7c6f) = 9d4a668410e72a4bdb86dc23e4261eca04daa83456ada02504115223f356981a +SIZE (cpu-microcode-amd/microcode_amd_fam15h.bin?id=0bc3126c9cfa0b8c761483215c25382f831a7c6f) = 7876 +SHA256 (cpu-microcode-amd/microcode_amd_fam16h.bin?id=0bc3126c9cfa0b8c761483215c25382f831a7c6f) = e02ad653b39c975d6c52674b50f23727bb6706bab7b4e5b391a4ce229e7ff121 +SIZE (cpu-microcode-amd/microcode_amd_fam16h.bin?id=0bc3126c9cfa0b8c761483215c25382f831a7c6f) = 3510 +SHA256 (cpu-microcode-amd/microcode_amd_fam17h.bin?id=0bc3126c9cfa0b8c761483215c25382f831a7c6f) = 1eeaf4c86fb72a0f0e9d4ff28d3213d264ecb47a8dce8bcbd85addd0cfd999bb +SIZE (cpu-microcode-amd/microcode_amd_fam17h.bin?id=0bc3126c9cfa0b8c761483215c25382f831a7c6f) = 12924 +SHA256 (cpu-microcode-amd/microcode_amd_fam19h.bin?id=0bc3126c9cfa0b8c761483215c25382f831a7c6f) = 2e503e1381154297e30f7fdc83a639d81b02196ff965f63427652709423fdcc4 +SIZE (cpu-microcode-amd/microcode_amd_fam19h.bin?id=0bc3126c9cfa0b8c761483215c25382f831a7c6f) = 16804 Index: sysutils/cpu-microcode-amd/pkg-message =================================================================== --- /dev/null +++ sysutils/cpu-microcode-amd/pkg-message @@ -0,0 +1,8 @@ +[ +{ type: install + message: < Index: sysutils/cpu-microcode-rc/files/pkg-message.in =================================================================== --- sysutils/cpu-microcode-rc/files/pkg-message.in +++ sysutils/cpu-microcode-rc/files/pkg-message.in @@ -1,15 +1,14 @@ [ { type: install message: < Index: sysutils/cpu-microcode/pkg-descr =================================================================== --- /dev/null +++ sysutils/cpu-microcode/pkg-descr @@ -0,0 +1,4 @@ +The cpu-microcode package depends on microcode updates available for any +CPU vendor. Users who wish to install CPU microcode updates from a +specific vendor can directly install cpu-microcode-amd or +cpu-microcode-intel. Index: sysutils/devcpu-data-amd/distinfo =================================================================== --- sysutils/devcpu-data-amd/distinfo +++ /dev/null @@ -1,11 +0,0 @@ -TIMESTAMP = 1690217806 -SHA256 (devcpu-data-amd/microcode_amd.bin?id=0bc3126c9cfa0b8c761483215c25382f831a7c6f) = 8a9d9e8b788e31e61cddc03cb1eeab5db99e0f667128943ff0780e6437d2e43e -SIZE (devcpu-data-amd/microcode_amd.bin?id=0bc3126c9cfa0b8c761483215c25382f831a7c6f) = 12684 -SHA256 (devcpu-data-amd/microcode_amd_fam15h.bin?id=0bc3126c9cfa0b8c761483215c25382f831a7c6f) = 9d4a668410e72a4bdb86dc23e4261eca04daa83456ada02504115223f356981a -SIZE (devcpu-data-amd/microcode_amd_fam15h.bin?id=0bc3126c9cfa0b8c761483215c25382f831a7c6f) = 7876 -SHA256 (devcpu-data-amd/microcode_amd_fam16h.bin?id=0bc3126c9cfa0b8c761483215c25382f831a7c6f) = e02ad653b39c975d6c52674b50f23727bb6706bab7b4e5b391a4ce229e7ff121 -SIZE (devcpu-data-amd/microcode_amd_fam16h.bin?id=0bc3126c9cfa0b8c761483215c25382f831a7c6f) = 3510 -SHA256 (devcpu-data-amd/microcode_amd_fam17h.bin?id=0bc3126c9cfa0b8c761483215c25382f831a7c6f) = 1eeaf4c86fb72a0f0e9d4ff28d3213d264ecb47a8dce8bcbd85addd0cfd999bb -SIZE (devcpu-data-amd/microcode_amd_fam17h.bin?id=0bc3126c9cfa0b8c761483215c25382f831a7c6f) = 12924 -SHA256 (devcpu-data-amd/microcode_amd_fam19h.bin?id=0bc3126c9cfa0b8c761483215c25382f831a7c6f) = 2e503e1381154297e30f7fdc83a639d81b02196ff965f63427652709423fdcc4 -SIZE (devcpu-data-amd/microcode_amd_fam19h.bin?id=0bc3126c9cfa0b8c761483215c25382f831a7c6f) = 16804 Index: sysutils/devcpu-data-amd/files/LICENSE.amd-ucode =================================================================== --- /dev/null +++ sysutils/devcpu-data-amd/files/LICENSE.amd-ucode @@ -1,64 +0,0 @@ -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 @@ -1,4 +0,0 @@ -Processor microcode updates provide bug fixes, which can be critical to -the security and stability of your system. 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 =================================================================== --- sysutils/devcpu-data-amd/pkg-message +++ /dev/null @@ -1,7 +0,0 @@ -[ -{ 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-intel/pkg-descr =================================================================== --- /dev/null +++ sysutils/devcpu-data-intel/pkg-descr @@ -1,7 +0,0 @@ -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. Index: sysutils/devcpu-data-intel/pkg-message =================================================================== --- sysutils/devcpu-data-intel/pkg-message +++ /dev/null @@ -1,7 +0,0 @@ -[ -{ type: install - message: < Index: sysutils/devcpu-data/distinfo =================================================================== --- /dev/null +++ sysutils/devcpu-data/distinfo @@ -1 +0,0 @@ -TIMESTAMP = 1644363016 Index: sysutils/devcpu-data/files/microcode_update.in =================================================================== --- /dev/null +++ sysutils/devcpu-data/files/microcode_update.in @@ -1,77 +0,0 @@ -#!/bin/sh - -# PROVIDE: microcode_update -# REQUIRE: root mountcritlocal -# KEYWORD: nojail -# BEFORE: SERVERS - -# -# Add the following line to /etc/rc.conf to enable flow-capture: -# microcode_update_enable (bool): Set it to "YES" to update microcode on startup -# Set to "NO" by default. -# 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="0 1" -# Set to "ALL" by default. -# microcode_update_flags (str): Flags for cpucontrol(8). - -. /etc/rc.subr - -name="microcode_update" -rcvar=microcode_update_enable -stop_cmd=":" -start_cmd="microcode_update_start" -required_modules="cpuctl" - -CMT="/usr/sbin/cpucontrol" - -microcode_update_start() -{ - echo "Updating CPU Microcode..." - if [ "${microcode_update_cpus}" = "ALL" ]; then - ncpu=`/sbin/sysctl -n hw.ncpu` - cpus=`jot ${ncpu} 0`; - else - cpus=${microcode_update_cpus} - fi - for i in ${cpus}; do - ${CMT} -u ${microcode_update_flags} \ - -d "${microcode_update_datadir}" /dev/cpuctl${i} 2>&1 | \ - logger -p daemon.notice -t microcode_update || \ - (echo "Microcode Update Failed." && exit 1) - done - 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." - else - ${CMT} -e /dev/cpuctl0 >/dev/null 2>&1 - if [ $? -ne 0 ]; then - echo "Re-evalulation of CPU flags Failed." - exit 1 - fi - fi - fi - echo "Done." -} - -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_update_cpus="ALL"} -: ${microcode_update_flags=""} - -run_rc_command "$1" Index: sysutils/devcpu-data/pkg-descr =================================================================== --- /dev/null +++ sysutils/devcpu-data/pkg-descr @@ -1,3 +0,0 @@ -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.