* 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 -----BEGIN PGP SIGNATURE----- iQFIBAABCAAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAmLaTFwUHHBib256aW5p QHJlZGhhdC5jb20ACgkQv/vSX3jHroO5Dwf/bRHhFs7XXdC5YU687bEFq/8/XCbY wczM6cEIsWk0chzx92xIXzjb6DKPhrUFjGNH2C55XhLwHhCCUI+Q0zCfZ89ghjdX Fe3fNcs6SAq6aLPjRBkk0+vt1jq233KzIV/GQJ5FivocPlWX562FXVEXoB/T26Ml ljTmtPBn4Hd+LIE+7+HED2qCNzvNYtx3KGGTsZR7hcjoQmfFjXg+OTN0Uqsa+enW lCEcN/gDMaTWFxY7lII63IJA4mE4WkdfYWjzuzvfUFsNU0IQZk+NrVZpiAP9zXeS 20o9nzetS7h1enLWqdGvJ+m5ot19l24nJeWZ8QQsS3T4XF2h7vL0lY/WBg== =BDnJ -----END PGP SIGNATURE----- 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
This commit is contained in:
commit
515f71412b
@ -5658,7 +5658,7 @@ by a string of size ``name_size``.
|
|||||||
#define KVM_STATS_UNIT_SECONDS (0x2 << KVM_STATS_UNIT_SHIFT)
|
#define KVM_STATS_UNIT_SECONDS (0x2 << KVM_STATS_UNIT_SHIFT)
|
||||||
#define KVM_STATS_UNIT_CYCLES (0x3 << KVM_STATS_UNIT_SHIFT)
|
#define KVM_STATS_UNIT_CYCLES (0x3 << KVM_STATS_UNIT_SHIFT)
|
||||||
#define KVM_STATS_UNIT_BOOLEAN (0x4 << KVM_STATS_UNIT_SHIFT)
|
#define KVM_STATS_UNIT_BOOLEAN (0x4 << KVM_STATS_UNIT_SHIFT)
|
||||||
#define KVM_STATS_UNIT_MAX KVM_STATS_UNIT_CYCLES
|
#define KVM_STATS_UNIT_MAX KVM_STATS_UNIT_BOOLEAN
|
||||||
|
|
||||||
#define KVM_STATS_BASE_SHIFT 8
|
#define KVM_STATS_BASE_SHIFT 8
|
||||||
#define KVM_STATS_BASE_MASK (0xF << KVM_STATS_BASE_SHIFT)
|
#define KVM_STATS_BASE_MASK (0xF << KVM_STATS_BASE_SHIFT)
|
||||||
|
@ -6029,6 +6029,11 @@ split_irqchip_unlock:
|
|||||||
r = 0;
|
r = 0;
|
||||||
break;
|
break;
|
||||||
case KVM_CAP_X86_USER_SPACE_MSR:
|
case KVM_CAP_X86_USER_SPACE_MSR:
|
||||||
|
r = -EINVAL;
|
||||||
|
if (cap->args[0] & ~(KVM_MSR_EXIT_REASON_INVAL |
|
||||||
|
KVM_MSR_EXIT_REASON_UNKNOWN |
|
||||||
|
KVM_MSR_EXIT_REASON_FILTER))
|
||||||
|
break;
|
||||||
kvm->arch.user_space_msr_mask = cap->args[0];
|
kvm->arch.user_space_msr_mask = cap->args[0];
|
||||||
r = 0;
|
r = 0;
|
||||||
break;
|
break;
|
||||||
@ -6183,6 +6188,9 @@ static int kvm_vm_ioctl_set_msr_filter(struct kvm *kvm, void __user *argp)
|
|||||||
if (copy_from_user(&filter, user_msr_filter, sizeof(filter)))
|
if (copy_from_user(&filter, user_msr_filter, sizeof(filter)))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
|
|
||||||
|
if (filter.flags & ~KVM_MSR_FILTER_DEFAULT_DENY)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(filter.ranges); i++)
|
for (i = 0; i < ARRAY_SIZE(filter.ranges); i++)
|
||||||
empty &= !filter.ranges[i].nmsrs;
|
empty &= !filter.ranges[i].nmsrs;
|
||||||
|
|
||||||
|
@ -2084,7 +2084,7 @@ struct kvm_stats_header {
|
|||||||
#define KVM_STATS_UNIT_SECONDS (0x2 << KVM_STATS_UNIT_SHIFT)
|
#define KVM_STATS_UNIT_SECONDS (0x2 << KVM_STATS_UNIT_SHIFT)
|
||||||
#define KVM_STATS_UNIT_CYCLES (0x3 << KVM_STATS_UNIT_SHIFT)
|
#define KVM_STATS_UNIT_CYCLES (0x3 << KVM_STATS_UNIT_SHIFT)
|
||||||
#define KVM_STATS_UNIT_BOOLEAN (0x4 << KVM_STATS_UNIT_SHIFT)
|
#define KVM_STATS_UNIT_BOOLEAN (0x4 << KVM_STATS_UNIT_SHIFT)
|
||||||
#define KVM_STATS_UNIT_MAX KVM_STATS_UNIT_CYCLES
|
#define KVM_STATS_UNIT_MAX KVM_STATS_UNIT_BOOLEAN
|
||||||
|
|
||||||
#define KVM_STATS_BASE_SHIFT 8
|
#define KVM_STATS_BASE_SHIFT 8
|
||||||
#define KVM_STATS_BASE_MASK (0xF << KVM_STATS_BASE_SHIFT)
|
#define KVM_STATS_BASE_MASK (0xF << KVM_STATS_BASE_SHIFT)
|
||||||
|
@ -2084,7 +2084,7 @@ struct kvm_stats_header {
|
|||||||
#define KVM_STATS_UNIT_SECONDS (0x2 << KVM_STATS_UNIT_SHIFT)
|
#define KVM_STATS_UNIT_SECONDS (0x2 << KVM_STATS_UNIT_SHIFT)
|
||||||
#define KVM_STATS_UNIT_CYCLES (0x3 << KVM_STATS_UNIT_SHIFT)
|
#define KVM_STATS_UNIT_CYCLES (0x3 << KVM_STATS_UNIT_SHIFT)
|
||||||
#define KVM_STATS_UNIT_BOOLEAN (0x4 << KVM_STATS_UNIT_SHIFT)
|
#define KVM_STATS_UNIT_BOOLEAN (0x4 << KVM_STATS_UNIT_SHIFT)
|
||||||
#define KVM_STATS_UNIT_MAX KVM_STATS_UNIT_CYCLES
|
#define KVM_STATS_UNIT_MAX KVM_STATS_UNIT_BOOLEAN
|
||||||
|
|
||||||
#define KVM_STATS_BASE_SHIFT 8
|
#define KVM_STATS_BASE_SHIFT 8
|
||||||
#define KVM_STATS_BASE_MASK (0xF << KVM_STATS_BASE_SHIFT)
|
#define KVM_STATS_BASE_MASK (0xF << KVM_STATS_BASE_SHIFT)
|
||||||
|
@ -82,8 +82,9 @@ static int next_cpu(int cpu)
|
|||||||
return cpu;
|
return cpu;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void *migration_worker(void *ign)
|
static void *migration_worker(void *__rseq_tid)
|
||||||
{
|
{
|
||||||
|
pid_t rseq_tid = (pid_t)(unsigned long)__rseq_tid;
|
||||||
cpu_set_t allowed_mask;
|
cpu_set_t allowed_mask;
|
||||||
int r, i, cpu;
|
int r, i, cpu;
|
||||||
|
|
||||||
@ -106,7 +107,7 @@ static void *migration_worker(void *ign)
|
|||||||
* stable, i.e. while changing affinity is in-progress.
|
* stable, i.e. while changing affinity is in-progress.
|
||||||
*/
|
*/
|
||||||
smp_wmb();
|
smp_wmb();
|
||||||
r = sched_setaffinity(0, sizeof(allowed_mask), &allowed_mask);
|
r = sched_setaffinity(rseq_tid, sizeof(allowed_mask), &allowed_mask);
|
||||||
TEST_ASSERT(!r, "sched_setaffinity failed, errno = %d (%s)",
|
TEST_ASSERT(!r, "sched_setaffinity failed, errno = %d (%s)",
|
||||||
errno, strerror(errno));
|
errno, strerror(errno));
|
||||||
smp_wmb();
|
smp_wmb();
|
||||||
@ -231,7 +232,8 @@ int main(int argc, char *argv[])
|
|||||||
vm = vm_create_default(VCPU_ID, 0, guest_code);
|
vm = vm_create_default(VCPU_ID, 0, guest_code);
|
||||||
ucall_init(vm, NULL);
|
ucall_init(vm, NULL);
|
||||||
|
|
||||||
pthread_create(&migration_thread, NULL, migration_worker, 0);
|
pthread_create(&migration_thread, NULL, migration_worker,
|
||||||
|
(void *)(unsigned long)gettid());
|
||||||
|
|
||||||
for (i = 0; !done; i++) {
|
for (i = 0; !done; i++) {
|
||||||
vcpu_run(vm, VCPU_ID);
|
vcpu_run(vm, VCPU_ID);
|
||||||
|
Loading…
Reference in New Issue
Block a user