CPUCONTROL(8)

NAME
cpucontrol - control utility for the cpuctl(4) device

SYNOPSIS
cpucontrol [-vh] -m msr device
cpucontrol [-vh] -m msr=value device
cpucontrol [-vh] -m msr&=mask device
cpucontrol [-vh] -m msr|=mask device
cpucontrol [-vh] -i level device
cpucontrol [-vh] -i level,level_type device
cpucontrol [-vh] [-d datadir] -u device

DESCRIPTION
The cpucontrol utility can be used to read and write arbitrary machine-specific CPU registers via the cpuctl(4) special device. It can also be used to apply CPU firmware updates.

The following options are available:

-d datadir
    Where to look for microcode images. The option can be specified multiple times.

-m msr[=value]
    Show value of the specified MSR. MSR register number should be given as a hexadecimal number.

-m msr=value
    Store the value in the specified MSR register. The value argument can be prefixed with ~ operator. In this case the inverted value of argument will be stored in the register.

-m msr&=mask
    Store the result of bitwise AND operation between mask and the current MSR value in the MSR register. The mask argument can be prefixed with ~ operator. In this case the inverted value of mask will be used.

-m msr|=mask
    Store the result of bitwise OR operation between mask and the current MSR value in the MSR register. The mask argument can be prefixed with ~ operator. In this case the inverted value of mask will be used.

-i level
    Retrieve CPUID info. Level should be given as a hex number.

-i level,level_type
    Retrieve CPUID info. Level and level_type should be given as hex numbers.

-u  Apply CPU firmware updates. The cpucontrol utility will walk through the configured data directories and apply all firmware updates available for this CPU.

-v  Increase the verbosity level.

-h  Show help message.

EXIT STATUS

EXAMPLES
The command

“cpucontrol -m 0x10 /dev/cpuctl0”

will read the contents of TSC MSR from CPU 0.

To set the CPU 0 TSC MSR register value to 0x1 issue

“cpucontrol -m 0x10=0x1 /dev/cpuctl0”.

The following command will clear the second bit of TSC register:

“cpucontrol -m 0x10&=~0x02 /dev/cpuctl0”.

The following command will set the forth and second bit of TSC register:

“cpucontrol -m 0x10|=0x0a /dev/cpuctl0”.

The command

“cpucontrol -i 0x1 /dev/cpuctl1”

will retrieve the CPUID level 0x1 from CPU 1.

To perform firmware updates on CPU 0 from images located at /usr/local/share/cpuctl/ use the following command:

“cpucontrol -d /usr/local/share/cpuctl/ -u /dev/cpuctl0”

SEE ALSO
cpuctl(4)

HISTORY
The cpucontrol utility first appeared in FreeBSD 7.2.

AUTHORS
The cpucontrol utility and this manual page was written by Stanislav Sedov <stas@FreeBSD.org>.

BUGS
Yes, probably, report if any.