diff options
Diffstat (limited to 'share')
-rw-r--r-- | share/man/man4/Makefile | 2 | ||||
-rw-r--r-- | share/man/man4/cpuctl.4 | 146 |
2 files changed, 148 insertions, 0 deletions
diff --git a/share/man/man4/Makefile b/share/man/man4/Makefile index 69d9dc8..544a542 100644 --- a/share/man/man4/Makefile +++ b/share/man/man4/Makefile @@ -52,6 +52,7 @@ MAN= aac.4 \ cmx.4 \ coda.4 \ ${_coretemp.4} \ + ${_cpuctl.4} \ cpufreq.4 \ crypto.4 \ cue.4 \ @@ -551,6 +552,7 @@ _acpi_dock.4= acpi_dock.4 _amdsmb.4= amdsmb.4 _asmc.4= asmc.4 _coretemp.4= coretemp.4 +_cpuctl.4= cpuctl.4 _hptiop.4= hptiop.4 _hptmv.4= hptmv.4 _hptrr.4= hptrr.4 diff --git a/share/man/man4/cpuctl.4 b/share/man/man4/cpuctl.4 new file mode 100644 index 0000000..0e60801 --- /dev/null +++ b/share/man/man4/cpuctl.4 @@ -0,0 +1,146 @@ +.\" Copyright (c) 2006-2008 Stanislav Sedov <stas@FreeBSD.org> +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" $FreeBSD$ +.\" +.Dd May 31, 2008 +.Dt CPUCTL 4 +.Os +.Sh NAME +.Nm cpuctl +.Nd cpuctl pseudo device +.Sh SYNOPSIS +To compile this driver into the kernel, +place the following lines in your kernel +configuration file: +.Bd -ragged -offset indent +.Cd "device cpuctl" +.Ed +.Pp +Alternatively, to load the driver as a module +at boot time, place the following in +.Xr loader.conf 5 : +.Bd -literal -offset indent +cpuctl_load="YES" +.Ed +.Sh DESCRIPTION +The special file +.Pa /dev/cpuctl +presents interace to the system CPU. It provides functionality to retrieve +CPUID information, read/write machine specific registers (MSR) and perform +cpu firmware updates. +.Pp +For each cpu present in the system, special file +.Pa /dev/cpuctl%d +with the appropriate index will be created. For multicore cpus the +special file will be created for each core. +.Pp +Currently, only i386 and amd64 processors are +supported. +.Sh IOCTL INTERFACE +All of the supported operations are invoked using the +.Fr ioctl 2 +system call. Refer to that manpage for further information about +this interface. Currently, the following ioctls are defined: +.Bl -tag -width CPUCTL_UPDATE +.It Dv CPUCTL_RDMSR Fa cpuctl_msr_args_t *args +.It Dv CPUCTL_WRMSR Fa cpuctl_msr_args_t *args +Read/write cpu machine specific register. The +.Vt cpuctl_msr_args_t +structure defined in +.In sys/cpuctl.h +as: +.Pp +.Bd -literal +typedef struct { + int msr; /* MSR to read */ + uint64_t data; +} cpuctl_msr_args_t; +.Ed +.It Dv CPUCTL_CPUID Fa cpuctl_cpuid_args_t *args +Retrieve CPUID information. Arguments are supplied in +the following struct: +.Pp +.Bd -literal +typedef struct { + int level; /* CPUID level */ + uint32_t data[4]; +} cpuctl_cpuid_args_t; +.Ed +.Pp +The +.Va level +field indicates the CPUID level to retrieve information for, while the +.Va data +used to store CPUID data received. +.It Dv CPUCTL_UPDATE cpuctl_update_args_t *args +Update cpu firmware (microcode). The structure defined in +.In sys/cpuctl.h +as: +.Pp +.Bd -literal +typedef struct { + void *data; + size_t size; +} cpuctl_update_args_t; +.Ed +.Pp +The +.Va data +field should point to the firmware image of size +.Va size . +.El +.Pp +For additional information refer to +.Pa cpuctl.h . +.Sh RETURN VALUES +.Bl -tag -width Er +.It Bq Er ENXIO +The operation requested is not supported by device (e.g. unsupported +architecture or cpu was disabled) +.It Bq Er EINVAL +Incorrect request was supplied, or microcode image is not correct. +.It Bq Er ENOMEM +No physical memory was available to complete the request. +.It Bq Er EFAULT +The firmware image address points outside process address space. +.El +.Sh FILES +.Bl -tag -width /dev/cpuctl -compact +.It Pa /dev/cpuctl +.El +.Sh SEE ALSO +.Xr hwpmc 4 +.Sh HISTORY +The +.Nm +driver first appeared in +.Fx 8.0 +.Sh BUGS +Yes, probably, report if any. +.Sh AUTHORS +The +.Nm +module and this manual page was written by +.An Stanislav Sedov Aq stas@FreeBSD.org . |