Main index | Section 4 | Options |
Alternatively, to load the driver as a module at boot time, place the following in loader.conf(5):
cpuctl_load="YES"
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.
CPUCTL_RDMSRcpuctl_msr_args_t, *args
CPUCTL_WRMSRcpuctl_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_MSRSBITcpuctl_msr_args_t, *args
CPUCTL_MSRCBITcpuctl_msr_args_t, *args | |
Set/clear MSR bits according to the mask given in the data field. | |
CPUCTL_CPUIDcpuctl_cpuid_args_t, *args | |
Retrieve CPUID information.
Arguments are supplied in the following structure:
typedef struct { int level; /* CPUID level */ uint32_t data[4]; } cpuctl_cpuid_args_t;It is equivalent to the CPUCTL_CPUID_COUNT request with level_type set to 0. | |
CPUCTL_CPUID_COUNTcpuctl_cpuid_count_args_t, *args | |
Retrieve CPUID information.
Arguments are supplied in the following structure:
typedef struct { int level; /* CPUID level */ int level_type; /* CPUID level type */ uint32_t data[4]; } cpuctl_cpuid_count_args_t;The level field indicates the CPUID level to retrieve, it is loaded into the %eax register before the CPUID instruction is executed, The level_type field indicates the CPUID level type to retrieve, it is loaded into the %ecx register. The data field is used to store the received CPUID data. That is, data[0] contains the value of %eax register after the CPUID instruction is executed, data[1] is for %ebx, data[2] for %ecx, and data[3] for %edx. | |
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.
/dev/cpuctl | |
[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 request. | |
[EFAULT] | |
The firmware image address points outside the process address space. | |
CPUCTL (4) | June 20, 2014 |
Main index | Section 4 | Options |
Please direct any comments about this manual page service to Ben Bullock. Privacy policy.