Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
CPUCTL(4)		 BSD Kernel Interfaces Manual		     CPUCTL(4)

NAME
     cpuctl -- cpuctl pseudo device

SYNOPSIS
     To	compile	this driver into the kernel, place the following lines in your
     kernel configuration file:

	   device cpuctl

     Alternatively, to load the	driver as a module at boot time, place the
     following in loader.conf(5):

	   cpuctl_load="YES"

DESCRIPTION
     The special device	/dev/cpuctl presents interface to the system CPU.  It
     provides functionality to retrieve	CPUID information, read/write machine
     specific registers	(MSR) and perform CPU firmware updates.

     For each CPU present in the system, the special device /dev/cpuctl%d with
     the appropriate index will	be created.  For multicore CPUs	such a special
     device will be created for	each core.

     Currently,	only i386 and amd64 processors are supported.

IOCTL INTERFACE
     All of the	supported operations are invoked using the ioctl(2) system
     call.  Currently, the following ioctls are	defined:

     CPUCTL_RDMSR cpuctl_msr_args_t *args

     CPUCTL_WRMSR cpuctl_msr_args_t *args
		    Read/write CPU machine specific register.  The
		    cpuctl_msr_args_t structure	is defined in <sys/cpuctl.h>
		    as:

		    typedef struct {
			    int		    msr;    /* MSR to read */
			    uint64_t	    data;
		    } cpuctl_msr_args_t;

     CPUCTL_CPUID cpuctl_cpuid_args_t *args
		    Retrieve CPUID information.	 Arguments are supplied	in the
		    following struct:

		    typedef struct {
			    int		    level;  /* CPUID level */
			    uint32_t	    data[4];
		    } cpuctl_cpuid_args_t;

		    The	level field indicates the CPUID	level to retrieve in-
		    formation for, while the data field	is used	to store the
		    received CPUID data.

     CPUCTL_UPDATE cpuctl_update_args_t	*args
		    Update CPU firmware	(microcode).  The structure is defined
		    in <sys/cpuctl.h> as:

		    typedef struct {
			    void    *data;
			    size_t  size;
		    } cpuctl_update_args_t;

		    The	data field should point	to the firmware	image of size
		    size.

     For additional information	refer to cpuctl.h.

RETURN VALUES
     [ENXIO]		The operation requested	is not supported by the	device
			(e.g. unsupported architecture or the CPU is disabled)

     [EINVAL]		Incorrect request was supplied,	or microcode image is
			not correct.

     [ENOMEM]		No physical memory was available to complete the re-
			quest.

     [EFAULT]		The firmware image address points outside the process
			address	space.

FILES
     /dev/cpuctl

SEE ALSO
     hwpmc(4), cpucontrol(8)

HISTORY
     The cpuctl	driver first appeared in FreeBSD 7.2.

BUGS
     Yes, probably, report if any.

AUTHORS
     The cpuctl	module and this	manual page were written by Stanislav Sedov
     <stas@FreeBSD.org>.

BSD				 May 31, 2008				   BSD

NAME | SYNOPSIS | DESCRIPTION | IOCTL INTERFACE | RETURN VALUES | FILES | SEE ALSO | HISTORY | BUGS | AUTHORS

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=cpuctl&sektion=4&manpath=FreeBSD+7.2-RELEASE>

home | help