Userspace can use ioctl KVM_SET_MSRS to update a set of MSRs of guest. This ioctl sets specified MSRs one by one. Once it fails to set an MSR due to setting reserved bits, the MSR is not supported/emulated by kvm, or violating other restrictions, it stops further processing and returns the number of MSRs have been set successfully. Signed-off-by: Xiaoyao Li <xiaoyao.li@xxxxxxxxx> --- v2: elaborate the changelog and description of ioctl KVM_SET_MSRS based on Sean's comments. --- Documentation/virt/kvm/api.txt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Documentation/virt/kvm/api.txt b/Documentation/virt/kvm/api.txt index 2d067767b617..4638e893dec0 100644 --- a/Documentation/virt/kvm/api.txt +++ b/Documentation/virt/kvm/api.txt @@ -586,7 +586,7 @@ Capability: basic Architectures: x86 Type: vcpu ioctl Parameters: struct kvm_msrs (in) -Returns: 0 on success, -1 on error +Returns: number of msrs successfully set (see below), -1 on error Writes model-specific registers to the vcpu. See KVM_GET_MSRS for the data structures. @@ -595,6 +595,11 @@ Application code should set the 'nmsrs' member (which indicates the size of the entries array), and the 'index' and 'data' members of each array entry. +It tries to set the MSRs in array entries[] one by one. Once failing to +set an MSR (due to setting reserved bits, the MSR is not supported/emulated +by kvm, or violating other restrctions), it stops setting following MSRs +and returns the number of MSRs have been set successfully. + 4.20 KVM_SET_CPUID -- 2.19.1