Lines Matching refs:entry
129 struct kvm_cpuid_entry2 *e, *entry; in cpuid_fix_nx_cap() local
131 entry = NULL; in cpuid_fix_nx_cap()
135 entry = e; in cpuid_fix_nx_cap()
139 if (entry && (entry->edx & F(NX)) && !is_efer_nx()) { in cpuid_fix_nx_cap()
140 entry->edx &= ~F(NX); in cpuid_fix_nx_cap()
249 static void do_cpuid_1_ent(struct kvm_cpuid_entry2 *entry, u32 function, in do_cpuid_1_ent() argument
252 entry->function = function; in do_cpuid_1_ent()
253 entry->index = index; in do_cpuid_1_ent()
254 cpuid_count(entry->function, entry->index, in do_cpuid_1_ent()
255 &entry->eax, &entry->ebx, &entry->ecx, &entry->edx); in do_cpuid_1_ent()
256 entry->flags = 0; in do_cpuid_1_ent()
259 static int __do_cpuid_ent_emulated(struct kvm_cpuid_entry2 *entry, in __do_cpuid_ent_emulated() argument
264 entry->eax = 1; /* only one leaf currently */ in __do_cpuid_ent_emulated()
268 entry->ecx = F(MOVBE); in __do_cpuid_ent_emulated()
275 entry->function = func; in __do_cpuid_ent_emulated()
276 entry->index = index; in __do_cpuid_ent_emulated()
281 static inline int __do_cpuid_ent(struct kvm_cpuid_entry2 *entry, u32 function, in __do_cpuid_ent() argument
363 do_cpuid_1_ent(entry, function, index); in __do_cpuid_ent()
368 entry->eax = min(entry->eax, (u32)0xd); in __do_cpuid_ent()
371 entry->edx &= kvm_supported_word0_x86_features; in __do_cpuid_ent()
372 cpuid_mask(&entry->edx, 0); in __do_cpuid_ent()
373 entry->ecx &= kvm_supported_word4_x86_features; in __do_cpuid_ent()
374 cpuid_mask(&entry->ecx, 4); in __do_cpuid_ent()
377 entry->ecx |= F(X2APIC); in __do_cpuid_ent()
384 int t, times = entry->eax & 0xff; in __do_cpuid_ent()
386 entry->flags |= KVM_CPUID_FLAG_STATEFUL_FUNC; in __do_cpuid_ent()
387 entry->flags |= KVM_CPUID_FLAG_STATE_READ_NEXT; in __do_cpuid_ent()
392 do_cpuid_1_ent(&entry[t], function, 0); in __do_cpuid_ent()
393 entry[t].flags |= KVM_CPUID_FLAG_STATEFUL_FUNC; in __do_cpuid_ent()
402 entry->flags |= KVM_CPUID_FLAG_SIGNIFCANT_INDEX; in __do_cpuid_ent()
408 cache_type = entry[i - 1].eax & 0x1f; in __do_cpuid_ent()
411 do_cpuid_1_ent(&entry[i], function, i); in __do_cpuid_ent()
412 entry[i].flags |= in __do_cpuid_ent()
419 entry->flags |= KVM_CPUID_FLAG_SIGNIFCANT_INDEX; in __do_cpuid_ent()
422 entry->ebx &= kvm_supported_word9_x86_features; in __do_cpuid_ent()
423 cpuid_mask(&entry->ebx, 9); in __do_cpuid_ent()
425 entry->ebx |= F(TSC_ADJUST); in __do_cpuid_ent()
427 entry->ebx = 0; in __do_cpuid_ent()
428 entry->eax = 0; in __do_cpuid_ent()
429 entry->ecx = 0; in __do_cpuid_ent()
430 entry->edx = 0; in __do_cpuid_ent()
458 entry->eax = eax.full; in __do_cpuid_ent()
459 entry->ebx = cap.events_mask; in __do_cpuid_ent()
460 entry->ecx = 0; in __do_cpuid_ent()
461 entry->edx = edx.full; in __do_cpuid_ent()
468 entry->flags |= KVM_CPUID_FLAG_SIGNIFCANT_INDEX; in __do_cpuid_ent()
474 level_type = entry[i - 1].ecx & 0xff00; in __do_cpuid_ent()
477 do_cpuid_1_ent(&entry[i], function, i); in __do_cpuid_ent()
478 entry[i].flags |= in __do_cpuid_ent()
488 entry->eax &= supported; in __do_cpuid_ent()
489 entry->ebx = xstate_required_size(supported, false); in __do_cpuid_ent()
490 entry->ecx = entry->ebx; in __do_cpuid_ent()
491 entry->edx &= supported >> 32; in __do_cpuid_ent()
492 entry->flags |= KVM_CPUID_FLAG_SIGNIFCANT_INDEX; in __do_cpuid_ent()
501 do_cpuid_1_ent(&entry[i], function, idx); in __do_cpuid_ent()
503 entry[i].eax &= kvm_supported_word10_x86_features; in __do_cpuid_ent()
504 entry[i].ebx = 0; in __do_cpuid_ent()
505 if (entry[i].eax & (F(XSAVES)|F(XSAVEC))) in __do_cpuid_ent()
506 entry[i].ebx = in __do_cpuid_ent()
510 if (entry[i].eax == 0 || !(supported & mask)) in __do_cpuid_ent()
512 if (WARN_ON_ONCE(entry[i].ecx & 1)) in __do_cpuid_ent()
515 entry[i].ecx = 0; in __do_cpuid_ent()
516 entry[i].edx = 0; in __do_cpuid_ent()
517 entry[i].flags |= in __do_cpuid_ent()
527 entry->eax = KVM_CPUID_FEATURES; in __do_cpuid_ent()
528 entry->ebx = sigptr[0]; in __do_cpuid_ent()
529 entry->ecx = sigptr[1]; in __do_cpuid_ent()
530 entry->edx = sigptr[2]; in __do_cpuid_ent()
534 entry->eax = (1 << KVM_FEATURE_CLOCKSOURCE) | in __do_cpuid_ent()
543 entry->eax |= (1 << KVM_FEATURE_STEAL_TIME); in __do_cpuid_ent()
545 entry->ebx = 0; in __do_cpuid_ent()
546 entry->ecx = 0; in __do_cpuid_ent()
547 entry->edx = 0; in __do_cpuid_ent()
550 entry->eax = min(entry->eax, 0x8000001a); in __do_cpuid_ent()
553 entry->edx &= kvm_supported_word1_x86_features; in __do_cpuid_ent()
554 cpuid_mask(&entry->edx, 1); in __do_cpuid_ent()
555 entry->ecx &= kvm_supported_word6_x86_features; in __do_cpuid_ent()
556 cpuid_mask(&entry->ecx, 6); in __do_cpuid_ent()
560 entry->edx &= (1 << 8); in __do_cpuid_ent()
562 entry->edx &= boot_cpu_data.x86_power; in __do_cpuid_ent()
563 entry->eax = entry->ebx = entry->ecx = 0; in __do_cpuid_ent()
566 unsigned g_phys_as = (entry->eax >> 16) & 0xff; in __do_cpuid_ent()
567 unsigned virt_as = max((entry->eax >> 8) & 0xff, 48U); in __do_cpuid_ent()
568 unsigned phys_as = entry->eax & 0xff; in __do_cpuid_ent()
572 entry->eax = g_phys_as | (virt_as << 8); in __do_cpuid_ent()
573 entry->ebx = entry->edx = 0; in __do_cpuid_ent()
577 entry->ecx = entry->edx = 0; in __do_cpuid_ent()
586 entry->eax = min(entry->eax, 0xC0000004); in __do_cpuid_ent()
589 entry->edx &= kvm_supported_word5_x86_features; in __do_cpuid_ent()
590 cpuid_mask(&entry->edx, 5); in __do_cpuid_ent()
599 entry->eax = entry->ebx = entry->ecx = entry->edx = 0; in __do_cpuid_ent()
603 kvm_x86_ops->set_supported_cpuid(function, entry); in __do_cpuid_ent()
613 static int do_cpuid_ent(struct kvm_cpuid_entry2 *entry, u32 func, in do_cpuid_ent() argument
617 return __do_cpuid_ent_emulated(entry, func, idx, nent, maxnent); in do_cpuid_ent()
619 return __do_cpuid_ent(entry, func, idx, nent, maxnent); in do_cpuid_ent()