Lines Matching refs:entry

196 	struct kvm_cpuid_entry2 *entry;  in kvm_get_hypervisor_cpuid()  local
200 entry = kvm_find_cpuid_entry(vcpu, base); in kvm_get_hypervisor_cpuid()
202 if (entry) { in kvm_get_hypervisor_cpuid()
205 signature[0] = entry->ebx; in kvm_get_hypervisor_cpuid()
206 signature[1] = entry->ecx; in kvm_get_hypervisor_cpuid()
207 signature[2] = entry->edx; in kvm_get_hypervisor_cpuid()
211 cpuid.limit = entry->eax; in kvm_get_hypervisor_cpuid()
317 struct kvm_cpuid_entry2 *entry; in kvm_cpuid_has_hyperv() local
319 entry = cpuid_entry2_find(entries, nent, HYPERV_CPUID_INTERFACE, in kvm_cpuid_has_hyperv()
321 return entry && entry->eax == HYPERV_CPUID_SIGNATURE_EAX; in kvm_cpuid_has_hyperv()
545 struct kvm_cpuid_entry2 entry; in __kvm_cpu_cap_mask() local
550 &entry.eax, &entry.ebx, &entry.ecx, &entry.edx); in __kvm_cpu_cap_mask()
552 kvm_cpu_caps[leaf] &= *__cpuid_entry_get_reg(&entry, cpuid.reg); in __kvm_cpu_cap_mask()
822 struct kvm_cpuid_entry2 *entry = get_next_cpuid(array); in do_host_cpuid() local
824 if (!entry) in do_host_cpuid()
827 memset(entry, 0, sizeof(*entry)); in do_host_cpuid()
828 entry->function = function; in do_host_cpuid()
829 entry->index = index; in do_host_cpuid()
833 return entry; in do_host_cpuid()
845 return entry; in do_host_cpuid()
853 cpuid_count(entry->function, entry->index, in do_host_cpuid()
854 &entry->eax, &entry->ebx, &entry->ecx, &entry->edx); in do_host_cpuid()
857 entry->flags |= KVM_CPUID_FLAG_SIGNIFCANT_INDEX; in do_host_cpuid()
859 return entry; in do_host_cpuid()
864 struct kvm_cpuid_entry2 *entry; in __do_cpuid_func_emulated() local
869 entry = &array->entries[array->nent]; in __do_cpuid_func_emulated()
870 entry->function = func; in __do_cpuid_func_emulated()
871 entry->index = 0; in __do_cpuid_func_emulated()
872 entry->flags = 0; in __do_cpuid_func_emulated()
876 entry->eax = 7; in __do_cpuid_func_emulated()
880 entry->ecx = F(MOVBE); in __do_cpuid_func_emulated()
884 entry->flags |= KVM_CPUID_FLAG_SIGNIFCANT_INDEX; in __do_cpuid_func_emulated()
885 entry->eax = 0; in __do_cpuid_func_emulated()
887 entry->ecx = F(RDPID); in __do_cpuid_func_emulated()
899 struct kvm_cpuid_entry2 *entry; in __do_cpuid_func() local
907 entry = do_host_cpuid(array, function, 0); in __do_cpuid_func()
908 if (!entry) in __do_cpuid_func()
914 entry->eax = min(entry->eax, 0x1fU); in __do_cpuid_func()
917 cpuid_entry_override(entry, CPUID_1_EDX); in __do_cpuid_func()
918 cpuid_entry_override(entry, CPUID_1_ECX); in __do_cpuid_func()
936 WARN_ON_ONCE((entry->eax & 0xff) > 1); in __do_cpuid_func()
945 for (i = 1; entry->eax & 0x1f; ++i) { in __do_cpuid_func()
946 entry = do_host_cpuid(array, function, i); in __do_cpuid_func()
947 if (!entry) in __do_cpuid_func()
952 entry->eax = 0x4; /* allow ARAT */ in __do_cpuid_func()
953 entry->ebx = 0; in __do_cpuid_func()
954 entry->ecx = 0; in __do_cpuid_func()
955 entry->edx = 0; in __do_cpuid_func()
959 entry->eax = min(entry->eax, 1u); in __do_cpuid_func()
960 cpuid_entry_override(entry, CPUID_7_0_EBX); in __do_cpuid_func()
961 cpuid_entry_override(entry, CPUID_7_ECX); in __do_cpuid_func()
962 cpuid_entry_override(entry, CPUID_7_EDX); in __do_cpuid_func()
965 if (entry->eax == 1) { in __do_cpuid_func()
966 entry = do_host_cpuid(array, function, 1); in __do_cpuid_func()
967 if (!entry) in __do_cpuid_func()
970 cpuid_entry_override(entry, CPUID_7_1_EAX); in __do_cpuid_func()
971 cpuid_entry_override(entry, CPUID_7_1_EDX); in __do_cpuid_func()
972 entry->ebx = 0; in __do_cpuid_func()
973 entry->ecx = 0; in __do_cpuid_func()
981 entry->eax = entry->ebx = entry->ecx = entry->edx = 0; in __do_cpuid_func()
997 entry->eax = eax.full; in __do_cpuid_func()
998 entry->ebx = kvm_pmu_cap.events_mask; in __do_cpuid_func()
999 entry->ecx = 0; in __do_cpuid_func()
1000 entry->edx = edx.full; in __do_cpuid_func()
1009 entry->eax = entry->ebx = entry->ecx = 0; in __do_cpuid_func()
1015 entry->eax &= permitted_xcr0; in __do_cpuid_func()
1016 entry->ebx = xstate_required_size(permitted_xcr0, false); in __do_cpuid_func()
1017 entry->ecx = entry->ebx; in __do_cpuid_func()
1018 entry->edx &= permitted_xcr0 >> 32; in __do_cpuid_func()
1022 entry = do_host_cpuid(array, function, 1); in __do_cpuid_func()
1023 if (!entry) in __do_cpuid_func()
1026 cpuid_entry_override(entry, CPUID_D_1_EAX); in __do_cpuid_func()
1027 if (entry->eax & (F(XSAVES)|F(XSAVEC))) in __do_cpuid_func()
1028 entry->ebx = xstate_required_size(permitted_xcr0 | permitted_xss, in __do_cpuid_func()
1032 entry->ebx = 0; in __do_cpuid_func()
1034 entry->ecx &= permitted_xss; in __do_cpuid_func()
1035 entry->edx &= permitted_xss >> 32; in __do_cpuid_func()
1046 entry = do_host_cpuid(array, function, i); in __do_cpuid_func()
1047 if (!entry) in __do_cpuid_func()
1058 if (WARN_ON_ONCE(!entry->eax || (entry->ecx & 0x1) != s_state)) { in __do_cpuid_func()
1064 entry->ecx &= ~BIT_ULL(2); in __do_cpuid_func()
1065 entry->edx = 0; in __do_cpuid_func()
1072 entry->eax = entry->ebx = entry->ecx = entry->edx = 0; in __do_cpuid_func()
1082 cpuid_entry_override(entry, CPUID_12_EAX); in __do_cpuid_func()
1083 entry->ebx &= SGX_MISC_EXINFO; in __do_cpuid_func()
1085 entry = do_host_cpuid(array, function, 1); in __do_cpuid_func()
1086 if (!entry) in __do_cpuid_func()
1096 entry->eax &= SGX_ATTR_PRIV_MASK | SGX_ATTR_UNPRIV_MASK; in __do_cpuid_func()
1097 entry->ebx &= 0; in __do_cpuid_func()
1102 entry->eax = entry->ebx = entry->ecx = entry->edx = 0; in __do_cpuid_func()
1106 for (i = 1, max_idx = entry->eax; i <= max_idx; ++i) { in __do_cpuid_func()
1114 entry->eax = entry->ebx = entry->ecx = entry->edx = 0; in __do_cpuid_func()
1118 for (i = 1, max_idx = entry->eax; i <= max_idx; ++i) { in __do_cpuid_func()
1125 entry->eax = entry->ebx = entry->ecx = entry->edx = 0; in __do_cpuid_func()
1131 entry->eax = KVM_CPUID_FEATURES; in __do_cpuid_func()
1132 entry->ebx = sigptr[0]; in __do_cpuid_func()
1133 entry->ecx = sigptr[1]; in __do_cpuid_func()
1134 entry->edx = sigptr[2]; in __do_cpuid_func()
1138 entry->eax = (1 << KVM_FEATURE_CLOCKSOURCE) | in __do_cpuid_func()
1153 entry->eax |= (1 << KVM_FEATURE_STEAL_TIME); in __do_cpuid_func()
1155 entry->ebx = 0; in __do_cpuid_func()
1156 entry->ecx = 0; in __do_cpuid_func()
1157 entry->edx = 0; in __do_cpuid_func()
1160 entry->eax = min(entry->eax, 0x80000022); in __do_cpuid_func()
1174 if (entry->eax >= 0x8000001d && in __do_cpuid_func()
1177 entry->eax = max(entry->eax, 0x80000021); in __do_cpuid_func()
1180 entry->ebx &= ~GENMASK(27, 16); in __do_cpuid_func()
1181 cpuid_entry_override(entry, CPUID_8000_0001_EDX); in __do_cpuid_func()
1182 cpuid_entry_override(entry, CPUID_8000_0001_ECX); in __do_cpuid_func()
1189 entry->edx &= ~GENMASK(17, 16); in __do_cpuid_func()
1192 cpuid_entry_override(entry, CPUID_8000_0007_EDX); in __do_cpuid_func()
1195 entry->edx &= boot_cpu_data.x86_power; in __do_cpuid_func()
1196 entry->eax = entry->ebx = entry->ecx = 0; in __do_cpuid_func()
1199 unsigned g_phys_as = (entry->eax >> 16) & 0xff; in __do_cpuid_func()
1200 unsigned virt_as = max((entry->eax >> 8) & 0xff, 48U); in __do_cpuid_func()
1201 unsigned phys_as = entry->eax & 0xff; in __do_cpuid_func()
1218 entry->eax = g_phys_as | (virt_as << 8); in __do_cpuid_func()
1219 entry->ecx &= ~(GENMASK(31, 16) | GENMASK(11, 8)); in __do_cpuid_func()
1220 entry->edx = 0; in __do_cpuid_func()
1221 cpuid_entry_override(entry, CPUID_8000_0008_EBX); in __do_cpuid_func()
1226 entry->eax = entry->ebx = entry->ecx = entry->edx = 0; in __do_cpuid_func()
1229 entry->eax = 1; /* SVM revision 1 */ in __do_cpuid_func()
1230 entry->ebx = 8; /* Lets support 8 ASIDs in case we add proper in __do_cpuid_func()
1232 entry->ecx = 0; /* Reserved */ in __do_cpuid_func()
1233 cpuid_entry_override(entry, CPUID_8000_000A_EDX); in __do_cpuid_func()
1236 entry->ecx = entry->edx = 0; in __do_cpuid_func()
1239 entry->eax &= GENMASK(2, 0); in __do_cpuid_func()
1240 entry->ebx = entry->ecx = entry->edx = 0; in __do_cpuid_func()
1244 entry->eax = entry->ebx = entry->ecx = 0; in __do_cpuid_func()
1245 entry->edx = 0; /* reserved */ in __do_cpuid_func()
1249 entry->eax = entry->ebx = entry->ecx = entry->edx = 0; in __do_cpuid_func()
1251 cpuid_entry_override(entry, CPUID_8000_001F_EAX); in __do_cpuid_func()
1253 entry->ebx &= ~GENMASK(31, 12); in __do_cpuid_func()
1258 entry->ebx &= ~GENMASK(11, 6); in __do_cpuid_func()
1262 entry->eax = entry->ebx = entry->ecx = entry->edx = 0; in __do_cpuid_func()
1265 entry->ebx = entry->ecx = entry->edx = 0; in __do_cpuid_func()
1266 cpuid_entry_override(entry, CPUID_8000_0021_EAX); in __do_cpuid_func()
1272 entry->ecx = entry->edx = 0; in __do_cpuid_func()
1274 entry->eax = entry->ebx; in __do_cpuid_func()
1278 cpuid_entry_override(entry, CPUID_8000_0022_EAX); in __do_cpuid_func()
1287 entry->ebx = ebx.full; in __do_cpuid_func()
1293 entry->eax = min(entry->eax, 0xC0000004); in __do_cpuid_func()
1296 cpuid_entry_override(entry, CPUID_C000_0001_EDX); in __do_cpuid_func()
1304 entry->eax = entry->ebx = entry->ecx = entry->edx = 0; in __do_cpuid_func()
1509 struct kvm_cpuid_entry2 *entry; in kvm_cpuid() local
1512 entry = kvm_find_cpuid_entry_index(vcpu, function, index); in kvm_cpuid()
1513 exact = !!entry; in kvm_cpuid()
1515 if (!entry && !exact_only) { in kvm_cpuid()
1516 entry = get_out_of_range_cpuid_entry(vcpu, &function, index); in kvm_cpuid()
1517 used_max_basic = !!entry; in kvm_cpuid()
1520 if (entry) { in kvm_cpuid()
1521 *eax = entry->eax; in kvm_cpuid()
1522 *ebx = entry->ebx; in kvm_cpuid()
1523 *ecx = entry->ecx; in kvm_cpuid()
1524 *edx = entry->edx; in kvm_cpuid()
1544 entry = kvm_find_cpuid_entry_index(vcpu, function, 1); in kvm_cpuid()
1545 if (entry) { in kvm_cpuid()
1547 *edx = entry->edx; in kvm_cpuid()