summaryrefslogtreecommitdiff
path: root/sysutils/intel-microcode-netbsd/files/intel-microcode.sh
blob: 9cb27373e195d4261e2d49f2193f90d8a7ac4917 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!@RCD_SCRIPTS_SHELL@

# PROVIDE: microcode
# REQUIRE: mountall
#
# attempts microcode update on all CPU cores (for Intel x86)
#

$_rc_subr_loaded . /etc/rc.subr

name=microcode
rcvar=$name
start_cmd="microcode_start"

_microcode_baremetal()
{
	ncpu=`/sbin/sysctl -n hw.ncpu`

	for i in `/usr/bin/jot - 0 \`expr $ncpu - 1\` 1`; do
		/usr/sbin/cpuctl ucode $i || true
	done
}

_microcode_xen()
{
	/usr/sbin/cpuctl ucode || true
}

microcode_start()
{
	if [ -e /kern/xen/privcmd ]; then
		_microcode_xen
	else
		_microcode_baremetal
	fi
}

load_rc_config $name
run_rc_command "$1"