diff --git a/sysutils/devcpu-data/Makefile b/sysutils/devcpu-data/Makefile index 639501ac8550..b8f7e54f2af0 100644 --- a/sysutils/devcpu-data/Makefile +++ b/sysutils/devcpu-data/Makefile @@ -1,36 +1,37 @@ PORTNAME= data PORTVERSION= 20230617 +PORTREVISION= 1 CATEGORIES= sysutils MASTER_SITES= # none PKGNAMEPREFIX= devcpu- DISTFILES= # none EXTRACT_ONLY= # none MAINTAINER= sbruno@FreeBSD.org COMMENT= AMD and Intel CPUs microcode updates LICENSE= BSD2CLAUSE ONLY_FOR_ARCHS= amd64 i386 USE_RC_SUBR= microcode_update DATADIR= ${PREFIX}/share/cpucontrol NO_ARCH= yes NO_BUILD= yes NO_INSTALL= yes SUB_FILES= pkg-message NO_WRKSUBDIR= yes OPTIONS_DEFAULT= AMD INTEL OPTIONS_GROUP= VENDOR OPTIONS_GROUP_VENDOR= AMD INTEL AMD_DESC= Depend on sysutils/devcpu-data-amd INTEL_DESC= Depend on sysutils/devcpu-data-intel 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 diff --git a/sysutils/devcpu-data/files/microcode_update.in b/sysutils/devcpu-data/files/microcode_update.in index b06b21d6f903..e2ad59592c06 100644 --- a/sysutils/devcpu-data/files/microcode_update.in +++ b/sysutils/devcpu-data/files/microcode_update.in @@ -1,88 +1,77 @@ #!/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_precmd="microcode_update_prepare" start_cmd="microcode_update_start" -requires_modules="cpuctl" +required_modules="cpuctl" CMT="/usr/sbin/cpucontrol" -microcode_update_prepare() -{ - if ! kldstat -q -m cpuctl; then - if ! kldload cpuctl > /dev/null 2>&1; then - warn "Can't load cpuctl module." - return 1 - fi - fi -} - 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"