x86_msr_xcall(9) - NetBSD Manual Pages

Command: Section: Arch: Collection:  
X86_MSR_XCALL(9)     NetBSD/x86 Kernel Developer's Manual     X86_MSR_XCALL(9)


NAME
x86_msr_xcall -- MSR specific cross-call
SYNOPSIS
#include <x86/cpu_msr.h> void x86_msr_xcall(void *arg1, void *arg1);
DESCRIPTION
The x86_msr_xcall() function provides a x86-specific IPI handler suitable for use with the xcall(9) interface. It can be used to ensure that a given MSR call is executed on all processors. The prototype follows the xcfunc_t function pointer type and the opaque arg1 pointer is casted to the following structure: struct msr_rw_info { int msr_read; int msr_type; uint64_t msr_value; uint64_t msr_mask; }; This structure must be filled prior to the call. Two fields are compul- sory: msr_type is used as the address of the MSR and msr_value is the value to be written. If msr_read is not zero, x86_msr_xcall() will first read from msr_type and then clear the mask specified in msr_mask before the write operation.
EXAMPLES
The following example writes a value zero to the MSR_THERM_CONTROL model- specific register on all processors in the system: struct msr_rw_info msr; uint64_t xc; msr.msr_value = 0; msr.msr_read = true; msr.msr_type = MSR_THERM_CONTROL; msr.msr_mask = 0x1e; xc = xc_broadcast(0, (xcfunc_t)x86_msr_xcall, &msr, NULL); xc_wait(xc);
SEE ALSO
x86/rdmsr(9), xcall(9) NetBSD 9.1 February 17, 2017 NetBSD 9.1
Powered by man-cgi (2024-03-20). Maintained for NetBSD by Kimmo Suominen. Based on man-cgi by Panagiotis Christias.