Lines Matching refs:entry

131 	struct kvm_cpuid_entry2 *e, *entry;  in cpuid_fix_nx_cap()  local
133 entry = NULL; in cpuid_fix_nx_cap()
137 entry = e; in cpuid_fix_nx_cap()
141 if (entry && (entry->edx & F(NX)) && !is_efer_nx()) { in cpuid_fix_nx_cap()
142 entry->edx &= ~F(NX); in cpuid_fix_nx_cap()
251 static void do_cpuid_1_ent(struct kvm_cpuid_entry2 *entry, u32 function, in do_cpuid_1_ent() argument
254 entry->function = function; in do_cpuid_1_ent()
255 entry->index = index; in do_cpuid_1_ent()
256 cpuid_count(entry->function, entry->index, in do_cpuid_1_ent()
257 &entry->eax, &entry->ebx, &entry->ecx, &entry->edx); in do_cpuid_1_ent()
258 entry->flags = 0; in do_cpuid_1_ent()
261 static int __do_cpuid_ent_emulated(struct kvm_cpuid_entry2 *entry, in __do_cpuid_ent_emulated() argument
266 entry->eax = 1; /* only one leaf currently */ in __do_cpuid_ent_emulated()
270 entry->ecx = F(MOVBE); in __do_cpuid_ent_emulated()
277 entry->function = func; in __do_cpuid_ent_emulated()
278 entry->index = index; in __do_cpuid_ent_emulated()
283 static inline int __do_cpuid_ent(struct kvm_cpuid_entry2 *entry, u32 function, in __do_cpuid_ent() argument
365 do_cpuid_1_ent(entry, function, index); in __do_cpuid_ent()
370 entry->eax = min(entry->eax, (u32)0xd); in __do_cpuid_ent()
373 entry->edx &= kvm_supported_word0_x86_features; in __do_cpuid_ent()
374 cpuid_mask(&entry->edx, 0); in __do_cpuid_ent()
375 entry->ecx &= kvm_supported_word4_x86_features; in __do_cpuid_ent()
376 cpuid_mask(&entry->ecx, 4); in __do_cpuid_ent()
379 entry->ecx |= F(X2APIC); in __do_cpuid_ent()
386 int t, times = entry->eax & 0xff; in __do_cpuid_ent()
388 entry->flags |= KVM_CPUID_FLAG_STATEFUL_FUNC; in __do_cpuid_ent()
389 entry->flags |= KVM_CPUID_FLAG_STATE_READ_NEXT; in __do_cpuid_ent()
394 do_cpuid_1_ent(&entry[t], function, 0); in __do_cpuid_ent()
395 entry[t].flags |= KVM_CPUID_FLAG_STATEFUL_FUNC; in __do_cpuid_ent()
404 entry->flags |= KVM_CPUID_FLAG_SIGNIFCANT_INDEX; in __do_cpuid_ent()
410 cache_type = entry[i - 1].eax & 0x1f; in __do_cpuid_ent()
413 do_cpuid_1_ent(&entry[i], function, i); in __do_cpuid_ent()
414 entry[i].flags |= in __do_cpuid_ent()
421 entry->eax = 0x4; /* allow ARAT */ in __do_cpuid_ent()
422 entry->ebx = 0; in __do_cpuid_ent()
423 entry->ecx = 0; in __do_cpuid_ent()
424 entry->edx = 0; in __do_cpuid_ent()
427 entry->flags |= KVM_CPUID_FLAG_SIGNIFCANT_INDEX; in __do_cpuid_ent()
430 entry->ebx &= kvm_supported_word9_x86_features; in __do_cpuid_ent()
431 cpuid_mask(&entry->ebx, 9); in __do_cpuid_ent()
433 entry->ebx |= F(TSC_ADJUST); in __do_cpuid_ent()
435 entry->ebx = 0; in __do_cpuid_ent()
436 entry->eax = 0; in __do_cpuid_ent()
437 entry->ecx = 0; in __do_cpuid_ent()
438 entry->edx = 0; in __do_cpuid_ent()
466 entry->eax = eax.full; in __do_cpuid_ent()
467 entry->ebx = cap.events_mask; in __do_cpuid_ent()
468 entry->ecx = 0; in __do_cpuid_ent()
469 entry->edx = edx.full; in __do_cpuid_ent()
476 entry->flags |= KVM_CPUID_FLAG_SIGNIFCANT_INDEX; in __do_cpuid_ent()
482 level_type = entry[i - 1].ecx & 0xff00; in __do_cpuid_ent()
485 do_cpuid_1_ent(&entry[i], function, i); in __do_cpuid_ent()
486 entry[i].flags |= in __do_cpuid_ent()
496 entry->eax &= supported; in __do_cpuid_ent()
497 entry->ebx = xstate_required_size(supported, false); in __do_cpuid_ent()
498 entry->ecx = entry->ebx; in __do_cpuid_ent()
499 entry->edx &= supported >> 32; in __do_cpuid_ent()
500 entry->flags |= KVM_CPUID_FLAG_SIGNIFCANT_INDEX; in __do_cpuid_ent()
509 do_cpuid_1_ent(&entry[i], function, idx); in __do_cpuid_ent()
511 entry[i].eax &= kvm_supported_word10_x86_features; in __do_cpuid_ent()
512 cpuid_mask(&entry[i].eax, 10); in __do_cpuid_ent()
513 entry[i].ebx = 0; in __do_cpuid_ent()
514 if (entry[i].eax & (F(XSAVES)|F(XSAVEC))) in __do_cpuid_ent()
515 entry[i].ebx = in __do_cpuid_ent()
519 if (entry[i].eax == 0 || !(supported & mask)) in __do_cpuid_ent()
521 if (WARN_ON_ONCE(entry[i].ecx & 1)) in __do_cpuid_ent()
524 entry[i].ecx = 0; in __do_cpuid_ent()
525 entry[i].edx = 0; in __do_cpuid_ent()
526 entry[i].flags |= in __do_cpuid_ent()
536 entry->eax = KVM_CPUID_FEATURES; in __do_cpuid_ent()
537 entry->ebx = sigptr[0]; in __do_cpuid_ent()
538 entry->ecx = sigptr[1]; in __do_cpuid_ent()
539 entry->edx = sigptr[2]; in __do_cpuid_ent()
543 entry->eax = (1 << KVM_FEATURE_CLOCKSOURCE) | in __do_cpuid_ent()
552 entry->eax |= (1 << KVM_FEATURE_STEAL_TIME); in __do_cpuid_ent()
554 entry->ebx = 0; in __do_cpuid_ent()
555 entry->ecx = 0; in __do_cpuid_ent()
556 entry->edx = 0; in __do_cpuid_ent()
559 entry->eax = min(entry->eax, 0x8000001a); in __do_cpuid_ent()
562 entry->edx &= kvm_supported_word1_x86_features; in __do_cpuid_ent()
563 cpuid_mask(&entry->edx, 1); in __do_cpuid_ent()
564 entry->ecx &= kvm_supported_word6_x86_features; in __do_cpuid_ent()
565 cpuid_mask(&entry->ecx, 6); in __do_cpuid_ent()
569 entry->edx &= (1 << 8); in __do_cpuid_ent()
571 entry->edx &= boot_cpu_data.x86_power; in __do_cpuid_ent()
572 entry->eax = entry->ebx = entry->ecx = 0; in __do_cpuid_ent()
575 unsigned g_phys_as = (entry->eax >> 16) & 0xff; in __do_cpuid_ent()
576 unsigned virt_as = max((entry->eax >> 8) & 0xff, 48U); in __do_cpuid_ent()
577 unsigned phys_as = entry->eax & 0xff; in __do_cpuid_ent()
581 entry->eax = g_phys_as | (virt_as << 8); in __do_cpuid_ent()
582 entry->ebx = entry->edx = 0; in __do_cpuid_ent()
586 entry->ecx = entry->edx = 0; in __do_cpuid_ent()
595 entry->eax = min(entry->eax, 0xC0000004); in __do_cpuid_ent()
598 entry->edx &= kvm_supported_word5_x86_features; in __do_cpuid_ent()
599 cpuid_mask(&entry->edx, 5); in __do_cpuid_ent()
607 entry->eax = entry->ebx = entry->ecx = entry->edx = 0; in __do_cpuid_ent()
611 kvm_x86_ops->set_supported_cpuid(function, entry); in __do_cpuid_ent()
621 static int do_cpuid_ent(struct kvm_cpuid_entry2 *entry, u32 func, in do_cpuid_ent() argument
625 return __do_cpuid_ent_emulated(entry, func, idx, nent, maxnent); in do_cpuid_ent()
627 return __do_cpuid_ent(entry, func, idx, nent, maxnent); in do_cpuid_ent()