Lines Matching refs:entry

180 	struct kvm_cpuid_entry2 *entry;  in kvm_update_kvm_cpuid_base()  local
185 entry = kvm_find_cpuid_entry(vcpu, function); in kvm_update_kvm_cpuid_base()
187 if (entry) { in kvm_update_kvm_cpuid_base()
190 signature[0] = entry->ebx; in kvm_update_kvm_cpuid_base()
191 signature[1] = entry->ecx; in kvm_update_kvm_cpuid_base()
192 signature[2] = entry->edx; in kvm_update_kvm_cpuid_base()
316 struct kvm_cpuid_entry2 *entry; in kvm_cpuid_has_hyperv() local
318 entry = cpuid_entry2_find(entries, nent, HYPERV_CPUID_INTERFACE, in kvm_cpuid_has_hyperv()
320 return entry && entry->eax == HYPERV_CPUID_SIGNATURE_EAX; in kvm_cpuid_has_hyperv()
535 struct kvm_cpuid_entry2 entry; in __kvm_cpu_cap_mask() local
540 &entry.eax, &entry.ebx, &entry.ecx, &entry.edx); in __kvm_cpu_cap_mask()
542 kvm_cpu_caps[leaf] &= *__cpuid_entry_get_reg(&entry, cpuid.reg); in __kvm_cpu_cap_mask()
765 struct kvm_cpuid_entry2 *entry; in do_host_cpuid() local
770 entry = &array->entries[array->nent++]; in do_host_cpuid()
772 memset(entry, 0, sizeof(*entry)); in do_host_cpuid()
773 entry->function = function; in do_host_cpuid()
774 entry->index = index; in do_host_cpuid()
778 return entry; in do_host_cpuid()
790 return entry; in do_host_cpuid()
798 cpuid_count(entry->function, entry->index, in do_host_cpuid()
799 &entry->eax, &entry->ebx, &entry->ecx, &entry->edx); in do_host_cpuid()
802 entry->flags |= KVM_CPUID_FLAG_SIGNIFCANT_INDEX; in do_host_cpuid()
804 return entry; in do_host_cpuid()
809 struct kvm_cpuid_entry2 *entry; in __do_cpuid_func_emulated() local
814 entry = &array->entries[array->nent]; in __do_cpuid_func_emulated()
815 entry->function = func; in __do_cpuid_func_emulated()
816 entry->index = 0; in __do_cpuid_func_emulated()
817 entry->flags = 0; in __do_cpuid_func_emulated()
821 entry->eax = 7; in __do_cpuid_func_emulated()
825 entry->ecx = F(MOVBE); in __do_cpuid_func_emulated()
829 entry->flags |= KVM_CPUID_FLAG_SIGNIFCANT_INDEX; in __do_cpuid_func_emulated()
830 entry->eax = 0; in __do_cpuid_func_emulated()
832 entry->ecx = F(RDPID); in __do_cpuid_func_emulated()
844 struct kvm_cpuid_entry2 *entry; in __do_cpuid_func() local
852 entry = do_host_cpuid(array, function, 0); in __do_cpuid_func()
853 if (!entry) in __do_cpuid_func()
859 entry->eax = min(entry->eax, 0x1fU); in __do_cpuid_func()
862 cpuid_entry_override(entry, CPUID_1_EDX); in __do_cpuid_func()
863 cpuid_entry_override(entry, CPUID_1_ECX); in __do_cpuid_func()
881 WARN_ON_ONCE((entry->eax & 0xff) > 1); in __do_cpuid_func()
890 for (i = 1; entry->eax & 0x1f; ++i) { in __do_cpuid_func()
891 entry = do_host_cpuid(array, function, i); in __do_cpuid_func()
892 if (!entry) in __do_cpuid_func()
897 entry->eax = 0x4; /* allow ARAT */ in __do_cpuid_func()
898 entry->ebx = 0; in __do_cpuid_func()
899 entry->ecx = 0; in __do_cpuid_func()
900 entry->edx = 0; in __do_cpuid_func()
904 entry->eax = min(entry->eax, 1u); in __do_cpuid_func()
905 cpuid_entry_override(entry, CPUID_7_0_EBX); in __do_cpuid_func()
906 cpuid_entry_override(entry, CPUID_7_ECX); in __do_cpuid_func()
907 cpuid_entry_override(entry, CPUID_7_EDX); in __do_cpuid_func()
910 if (entry->eax == 1) { in __do_cpuid_func()
911 entry = do_host_cpuid(array, function, 1); in __do_cpuid_func()
912 if (!entry) in __do_cpuid_func()
915 cpuid_entry_override(entry, CPUID_7_1_EAX); in __do_cpuid_func()
916 entry->ebx = 0; in __do_cpuid_func()
917 entry->ecx = 0; in __do_cpuid_func()
918 entry->edx = 0; in __do_cpuid_func()
926 entry->eax = entry->ebx = entry->ecx = entry->edx = 0; in __do_cpuid_func()
942 entry->eax = eax.full; in __do_cpuid_func()
943 entry->ebx = kvm_pmu_cap.events_mask; in __do_cpuid_func()
944 entry->ecx = 0; in __do_cpuid_func()
945 entry->edx = edx.full; in __do_cpuid_func()
959 for (i = 1; entry->ecx & 0xff00; ++i) { in __do_cpuid_func()
960 entry = do_host_cpuid(array, function, i); in __do_cpuid_func()
961 if (!entry) in __do_cpuid_func()
969 entry->eax &= permitted_xcr0; in __do_cpuid_func()
970 entry->ebx = xstate_required_size(permitted_xcr0, false); in __do_cpuid_func()
971 entry->ecx = entry->ebx; in __do_cpuid_func()
972 entry->edx &= permitted_xcr0 >> 32; in __do_cpuid_func()
976 entry = do_host_cpuid(array, function, 1); in __do_cpuid_func()
977 if (!entry) in __do_cpuid_func()
980 cpuid_entry_override(entry, CPUID_D_1_EAX); in __do_cpuid_func()
981 if (entry->eax & (F(XSAVES)|F(XSAVEC))) in __do_cpuid_func()
982 entry->ebx = xstate_required_size(permitted_xcr0 | permitted_xss, in __do_cpuid_func()
986 entry->ebx = 0; in __do_cpuid_func()
988 entry->ecx &= permitted_xss; in __do_cpuid_func()
989 entry->edx &= permitted_xss >> 32; in __do_cpuid_func()
1000 entry = do_host_cpuid(array, function, i); in __do_cpuid_func()
1001 if (!entry) in __do_cpuid_func()
1012 if (WARN_ON_ONCE(!entry->eax || (entry->ecx & 0x1) != s_state)) { in __do_cpuid_func()
1018 entry->ecx &= ~BIT_ULL(2); in __do_cpuid_func()
1019 entry->edx = 0; in __do_cpuid_func()
1026 entry->eax = entry->ebx = entry->ecx = entry->edx = 0; in __do_cpuid_func()
1036 cpuid_entry_override(entry, CPUID_12_EAX); in __do_cpuid_func()
1037 entry->ebx &= SGX_MISC_EXINFO; in __do_cpuid_func()
1039 entry = do_host_cpuid(array, function, 1); in __do_cpuid_func()
1040 if (!entry) in __do_cpuid_func()
1050 entry->eax &= SGX_ATTR_DEBUG | SGX_ATTR_MODE64BIT | in __do_cpuid_func()
1053 entry->ebx &= 0; in __do_cpuid_func()
1058 entry->eax = entry->ebx = entry->ecx = entry->edx = 0; in __do_cpuid_func()
1062 for (i = 1, max_idx = entry->eax; i <= max_idx; ++i) { in __do_cpuid_func()
1070 entry->eax = entry->ebx = entry->ecx = entry->edx = 0; in __do_cpuid_func()
1074 for (i = 1, max_idx = entry->eax; i <= max_idx; ++i) { in __do_cpuid_func()
1081 entry->eax = entry->ebx = entry->ecx = entry->edx = 0; in __do_cpuid_func()
1087 entry->eax = KVM_CPUID_FEATURES; in __do_cpuid_func()
1088 entry->ebx = sigptr[0]; in __do_cpuid_func()
1089 entry->ecx = sigptr[1]; in __do_cpuid_func()
1090 entry->edx = sigptr[2]; in __do_cpuid_func()
1094 entry->eax = (1 << KVM_FEATURE_CLOCKSOURCE) | in __do_cpuid_func()
1109 entry->eax |= (1 << KVM_FEATURE_STEAL_TIME); in __do_cpuid_func()
1111 entry->ebx = 0; in __do_cpuid_func()
1112 entry->ecx = 0; in __do_cpuid_func()
1113 entry->edx = 0; in __do_cpuid_func()
1116 entry->eax = min(entry->eax, 0x80000021); in __do_cpuid_func()
1130 if (entry->eax >= 0x8000001d && in __do_cpuid_func()
1133 entry->eax = max(entry->eax, 0x80000021); in __do_cpuid_func()
1136 entry->ebx &= ~GENMASK(27, 16); in __do_cpuid_func()
1137 cpuid_entry_override(entry, CPUID_8000_0001_EDX); in __do_cpuid_func()
1138 cpuid_entry_override(entry, CPUID_8000_0001_ECX); in __do_cpuid_func()
1142 entry->edx &= ~GENMASK(17, 16); in __do_cpuid_func()
1146 entry->edx &= (1 << 8); in __do_cpuid_func()
1148 entry->edx &= boot_cpu_data.x86_power; in __do_cpuid_func()
1149 entry->eax = entry->ebx = entry->ecx = 0; in __do_cpuid_func()
1152 unsigned g_phys_as = (entry->eax >> 16) & 0xff; in __do_cpuid_func()
1153 unsigned virt_as = max((entry->eax >> 8) & 0xff, 48U); in __do_cpuid_func()
1154 unsigned phys_as = entry->eax & 0xff; in __do_cpuid_func()
1171 entry->eax = g_phys_as | (virt_as << 8); in __do_cpuid_func()
1172 entry->ecx &= ~(GENMASK(31, 16) | GENMASK(11, 8)); in __do_cpuid_func()
1173 entry->edx = 0; in __do_cpuid_func()
1174 cpuid_entry_override(entry, CPUID_8000_0008_EBX); in __do_cpuid_func()
1179 entry->eax = entry->ebx = entry->ecx = entry->edx = 0; in __do_cpuid_func()
1182 entry->eax = 1; /* SVM revision 1 */ in __do_cpuid_func()
1183 entry->ebx = 8; /* Lets support 8 ASIDs in case we add proper in __do_cpuid_func()
1185 entry->ecx = 0; /* Reserved */ in __do_cpuid_func()
1186 cpuid_entry_override(entry, CPUID_8000_000A_EDX); in __do_cpuid_func()
1189 entry->ecx = entry->edx = 0; in __do_cpuid_func()
1192 entry->eax &= GENMASK(2, 0); in __do_cpuid_func()
1193 entry->ebx = entry->ecx = entry->edx = 0; in __do_cpuid_func()
1199 entry->eax = entry->ebx = entry->ecx = entry->edx = 0; in __do_cpuid_func()
1201 cpuid_entry_override(entry, CPUID_8000_001F_EAX); in __do_cpuid_func()
1203 entry->ebx &= ~GENMASK(31, 12); in __do_cpuid_func()
1208 entry->ebx &= ~GENMASK(11, 6); in __do_cpuid_func()
1212 entry->eax = entry->ebx = entry->ecx = entry->edx = 0; in __do_cpuid_func()
1215 entry->ebx = entry->ecx = entry->edx = 0; in __do_cpuid_func()
1226 entry->eax &= BIT(0) | BIT(2) | BIT(6); in __do_cpuid_func()
1228 entry->eax |= BIT(2); in __do_cpuid_func()
1230 entry->eax |= BIT(6); in __do_cpuid_func()
1235 entry->eax = min(entry->eax, 0xC0000004); in __do_cpuid_func()
1238 cpuid_entry_override(entry, CPUID_C000_0001_EDX); in __do_cpuid_func()
1246 entry->eax = entry->ebx = entry->ecx = entry->edx = 0; in __do_cpuid_func()
1451 struct kvm_cpuid_entry2 *entry; in kvm_cpuid() local
1454 entry = kvm_find_cpuid_entry_index(vcpu, function, index); in kvm_cpuid()
1455 exact = !!entry; in kvm_cpuid()
1457 if (!entry && !exact_only) { in kvm_cpuid()
1458 entry = get_out_of_range_cpuid_entry(vcpu, &function, index); in kvm_cpuid()
1459 used_max_basic = !!entry; in kvm_cpuid()
1462 if (entry) { in kvm_cpuid()
1463 *eax = entry->eax; in kvm_cpuid()
1464 *ebx = entry->ebx; in kvm_cpuid()
1465 *ecx = entry->ecx; in kvm_cpuid()
1466 *edx = entry->edx; in kvm_cpuid()
1483 entry = kvm_find_cpuid_entry_index(vcpu, function, 1); in kvm_cpuid()
1484 if (entry) { in kvm_cpuid()
1486 *edx = entry->edx; in kvm_cpuid()