Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm

Pull kvm fixes from Paolo Bonzini:

- Check for invalid flags to KVM_CAP_X86_USER_SPACE_MSR

- Fix use of sched_setaffinity in selftests

- Sync kernel headers to tools

- Fix KVM_STATS_UNIT_MAX

* tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
KVM: x86: Protect the unused bits in MSR exiting flags
tools headers UAPI: Sync linux/kvm.h with the kernel sources
KVM: selftests: Fix target thread to be migrated in rseq_test
KVM: stats: Fix value for KVM_STATS_UNIT_MAX for boolean stats

Changed files
+16 -6
Documentation
virt
kvm
arch
x86
kvm
include
uapi
linux
tools
include
uapi
linux
testing
selftests
+1 -1
Documentation/virt/kvm/api.rst
··· 5658 5658 #define KVM_STATS_UNIT_SECONDS (0x2 << KVM_STATS_UNIT_SHIFT) 5659 5659 #define KVM_STATS_UNIT_CYCLES (0x3 << KVM_STATS_UNIT_SHIFT) 5660 5660 #define KVM_STATS_UNIT_BOOLEAN (0x4 << KVM_STATS_UNIT_SHIFT) 5661 - #define KVM_STATS_UNIT_MAX KVM_STATS_UNIT_CYCLES 5661 + #define KVM_STATS_UNIT_MAX KVM_STATS_UNIT_BOOLEAN 5662 5662 5663 5663 #define KVM_STATS_BASE_SHIFT 8 5664 5664 #define KVM_STATS_BASE_MASK (0xF << KVM_STATS_BASE_SHIFT)
+8
arch/x86/kvm/x86.c
··· 6029 6029 r = 0; 6030 6030 break; 6031 6031 case KVM_CAP_X86_USER_SPACE_MSR: 6032 + r = -EINVAL; 6033 + if (cap->args[0] & ~(KVM_MSR_EXIT_REASON_INVAL | 6034 + KVM_MSR_EXIT_REASON_UNKNOWN | 6035 + KVM_MSR_EXIT_REASON_FILTER)) 6036 + break; 6032 6037 kvm->arch.user_space_msr_mask = cap->args[0]; 6033 6038 r = 0; 6034 6039 break; ··· 6187 6182 6188 6183 if (copy_from_user(&filter, user_msr_filter, sizeof(filter))) 6189 6184 return -EFAULT; 6185 + 6186 + if (filter.flags & ~KVM_MSR_FILTER_DEFAULT_DENY) 6187 + return -EINVAL; 6190 6188 6191 6189 for (i = 0; i < ARRAY_SIZE(filter.ranges); i++) 6192 6190 empty &= !filter.ranges[i].nmsrs;
+1 -1
include/uapi/linux/kvm.h
··· 2084 2084 #define KVM_STATS_UNIT_SECONDS (0x2 << KVM_STATS_UNIT_SHIFT) 2085 2085 #define KVM_STATS_UNIT_CYCLES (0x3 << KVM_STATS_UNIT_SHIFT) 2086 2086 #define KVM_STATS_UNIT_BOOLEAN (0x4 << KVM_STATS_UNIT_SHIFT) 2087 - #define KVM_STATS_UNIT_MAX KVM_STATS_UNIT_CYCLES 2087 + #define KVM_STATS_UNIT_MAX KVM_STATS_UNIT_BOOLEAN 2088 2088 2089 2089 #define KVM_STATS_BASE_SHIFT 8 2090 2090 #define KVM_STATS_BASE_MASK (0xF << KVM_STATS_BASE_SHIFT)
+1 -1
tools/include/uapi/linux/kvm.h
··· 2084 2084 #define KVM_STATS_UNIT_SECONDS (0x2 << KVM_STATS_UNIT_SHIFT) 2085 2085 #define KVM_STATS_UNIT_CYCLES (0x3 << KVM_STATS_UNIT_SHIFT) 2086 2086 #define KVM_STATS_UNIT_BOOLEAN (0x4 << KVM_STATS_UNIT_SHIFT) 2087 - #define KVM_STATS_UNIT_MAX KVM_STATS_UNIT_CYCLES 2087 + #define KVM_STATS_UNIT_MAX KVM_STATS_UNIT_BOOLEAN 2088 2088 2089 2089 #define KVM_STATS_BASE_SHIFT 8 2090 2090 #define KVM_STATS_BASE_MASK (0xF << KVM_STATS_BASE_SHIFT)
+5 -3
tools/testing/selftests/kvm/rseq_test.c
··· 82 82 return cpu; 83 83 } 84 84 85 - static void *migration_worker(void *ign) 85 + static void *migration_worker(void *__rseq_tid) 86 86 { 87 + pid_t rseq_tid = (pid_t)(unsigned long)__rseq_tid; 87 88 cpu_set_t allowed_mask; 88 89 int r, i, cpu; 89 90 ··· 107 106 * stable, i.e. while changing affinity is in-progress. 108 107 */ 109 108 smp_wmb(); 110 - r = sched_setaffinity(0, sizeof(allowed_mask), &allowed_mask); 109 + r = sched_setaffinity(rseq_tid, sizeof(allowed_mask), &allowed_mask); 111 110 TEST_ASSERT(!r, "sched_setaffinity failed, errno = %d (%s)", 112 111 errno, strerror(errno)); 113 112 smp_wmb(); ··· 232 231 vm = vm_create_default(VCPU_ID, 0, guest_code); 233 232 ucall_init(vm, NULL); 234 233 235 - pthread_create(&migration_thread, NULL, migration_worker, 0); 234 + pthread_create(&migration_thread, NULL, migration_worker, 235 + (void *)(unsigned long)gettid()); 236 236 237 237 for (i = 0; !done; i++) { 238 238 vcpu_run(vm, VCPU_ID);