Lines Matching full:cpuid

4  * cpuid support routines
22 #include "cpuid.h"
102 * save the feature bitmap to avoid cpuid lookup for every PV in kvm_update_pv_runtime()
176 * Bits 127:0 of the allowed SECS.ATTRIBUTES (CPUID.0x12.0x1) enumerate in kvm_vcpu_after_set_cpuid()
237 struct kvm_cpuid *cpuid, in kvm_vcpu_ioctl_set_cpuid() argument
244 if (cpuid->nent > KVM_MAX_CPUID_ENTRIES) in kvm_vcpu_ioctl_set_cpuid()
247 if (cpuid->nent) { in kvm_vcpu_ioctl_set_cpuid()
248 e = vmemdup_user(entries, array_size(sizeof(*e), cpuid->nent)); in kvm_vcpu_ioctl_set_cpuid()
252 e2 = kvmalloc_array(cpuid->nent, sizeof(*e2), GFP_KERNEL_ACCOUNT); in kvm_vcpu_ioctl_set_cpuid()
258 for (i = 0; i < cpuid->nent; i++) { in kvm_vcpu_ioctl_set_cpuid()
271 r = kvm_check_cpuid(e2, cpuid->nent); in kvm_vcpu_ioctl_set_cpuid()
279 vcpu->arch.cpuid_nent = cpuid->nent; in kvm_vcpu_ioctl_set_cpuid()
291 struct kvm_cpuid2 *cpuid, in kvm_vcpu_ioctl_set_cpuid2() argument
297 if (cpuid->nent > KVM_MAX_CPUID_ENTRIES) in kvm_vcpu_ioctl_set_cpuid2()
300 if (cpuid->nent) { in kvm_vcpu_ioctl_set_cpuid2()
301 e2 = vmemdup_user(entries, array_size(sizeof(*e2), cpuid->nent)); in kvm_vcpu_ioctl_set_cpuid2()
306 r = kvm_check_cpuid(e2, cpuid->nent); in kvm_vcpu_ioctl_set_cpuid2()
314 vcpu->arch.cpuid_nent = cpuid->nent; in kvm_vcpu_ioctl_set_cpuid2()
323 struct kvm_cpuid2 *cpuid, in kvm_vcpu_ioctl_get_cpuid2() argument
329 if (cpuid->nent < vcpu->arch.cpuid_nent) in kvm_vcpu_ioctl_get_cpuid2()
338 cpuid->nent = vcpu->arch.cpuid_nent; in kvm_vcpu_ioctl_get_cpuid2()
342 /* Mask kvm_cpu_caps for @leaf with the raw CPUID capabilities of this CPU. */
345 const struct cpuid_reg cpuid = x86_feature_cpuid(leaf * 32); in __kvm_cpu_cap_mask() local
350 cpuid_count(cpuid.function, cpuid.index, in __kvm_cpu_cap_mask()
353 kvm_cpu_caps[leaf] &= *__cpuid_entry_get_reg(&entry, cpuid.reg); in __kvm_cpu_cap_mask()
397 * advertised to guests via CPUID! in kvm_set_cpu_caps()
666 * CPUID(function=2, index=0) may return different results each in __do_cpuid_func()
668 * number of times software should do CPUID(2, 0). in __do_cpuid_func()
674 * APM states that CPUID(2) is reserved. in __do_cpuid_func()
677 * a stateful CPUID.0x2 is encountered. in __do_cpuid_func()
761 * previous entry is zero. Note, CPUID EAX.{0x1f,0xb}.0 is in __do_cpuid_func()
907 /* invariant TSC is CPUID.80000007H:EDX[8] */ in __do_cpuid_func()
968 /*Add support for Centaur's CPUID instruction*/ in __do_cpuid_func()
1056 int kvm_dev_ioctl_get_cpuid(struct kvm_cpuid2 *cpuid, in kvm_dev_ioctl_get_cpuid() argument
1069 if (cpuid->nent < 1) in kvm_dev_ioctl_get_cpuid()
1071 if (cpuid->nent > KVM_MAX_CPUID_ENTRIES) in kvm_dev_ioctl_get_cpuid()
1072 cpuid->nent = KVM_MAX_CPUID_ENTRIES; in kvm_dev_ioctl_get_cpuid()
1074 if (sanity_check_entries(entries, cpuid->nent, type)) in kvm_dev_ioctl_get_cpuid()
1078 cpuid->nent)); in kvm_dev_ioctl_get_cpuid()
1082 array.maxnent = cpuid->nent; in kvm_dev_ioctl_get_cpuid()
1089 cpuid->nent = array.nent; in kvm_dev_ioctl_get_cpuid()
1109 * Intel CPUID semantics treats any query for an out-of-range leaf as if the
1110 * highest basic leaf (i.e. CPUID.0H:EAX) were requested. AMD CPUID semantics
1120 * class exists if a guest CPUID entry for its <base> leaf exists. For a given
1121 * class, CPUID.<base>.EAX contains the max supported leaf for the class.
1131 * CPUID sub-classes are:
1163 * entry for CPUID.0xb.index (see below), then the output value for EDX in get_out_of_range_cpuid_entry()
1164 * needs to be pulled from CPUID.0xb.1. in get_out_of_range_cpuid_entry()
1170 * the effective CPUID entry is the max basic leaf. Note, the index of in get_out_of_range_cpuid_entry()