Lines Matching full:hv

41 /* "Hv#1" signature */
92 struct kvm_hv *hv = to_kvm_hv(vcpu->kvm); in synic_update_vector() local
118 hv->synic_auto_eoi_used++; in synic_update_vector()
120 hv->synic_auto_eoi_used--; in synic_update_vector()
123 !hv->synic_auto_eoi_used, in synic_update_vector()
309 struct kvm_hv *hv = to_kvm_hv(vcpu->kvm); in kvm_hv_syndbg_complete_userspace() local
312 hv->hv_syndbg.control.status = in kvm_hv_syndbg_complete_userspace()
538 struct kvm_hv *hv = to_kvm_hv(kvm); in get_time_ref_counter() local
546 if (hv->hv_tsc_page_status != HV_TSC_PAGE_SET) in get_time_ref_counter()
551 return mul_u64_u64_shr(tsc, hv->tsc_ref.tsc_scale, 64) in get_time_ref_counter()
552 + hv->tsc_ref.tsc_offset; in get_time_ref_counter()
992 struct kvm_hv *hv = to_kvm_hv(kvm); in kvm_hv_msr_get_crash_data() local
993 size_t size = ARRAY_SIZE(hv->hv_crash_param); in kvm_hv_msr_get_crash_data()
998 *pdata = hv->hv_crash_param[array_index_nospec(index, size)]; in kvm_hv_msr_get_crash_data()
1004 struct kvm_hv *hv = to_kvm_hv(kvm); in kvm_hv_msr_get_crash_ctl() local
1006 *pdata = hv->hv_crash_ctl; in kvm_hv_msr_get_crash_ctl()
1012 struct kvm_hv *hv = to_kvm_hv(kvm); in kvm_hv_msr_set_crash_ctl() local
1014 hv->hv_crash_ctl = data & HV_CRASH_CTL_CRASH_NOTIFY; in kvm_hv_msr_set_crash_ctl()
1021 struct kvm_hv *hv = to_kvm_hv(kvm); in kvm_hv_msr_set_crash_data() local
1022 size_t size = ARRAY_SIZE(hv->hv_crash_param); in kvm_hv_msr_set_crash_data()
1027 hv->hv_crash_param[array_index_nospec(index, size)] = data; in kvm_hv_msr_set_crash_data()
1109 static inline bool tsc_page_update_unsafe(struct kvm_hv *hv) in tsc_page_update_unsafe() argument
1111 return (hv->hv_tsc_page_status != HV_TSC_PAGE_GUEST_CHANGED) && in tsc_page_update_unsafe()
1112 hv->hv_tsc_emulation_control; in tsc_page_update_unsafe()
1118 struct kvm_hv *hv = to_kvm_hv(kvm); in kvm_hv_setup_tsc_page() local
1122 BUILD_BUG_ON(sizeof(tsc_seq) != sizeof(hv->tsc_ref.tsc_sequence)); in kvm_hv_setup_tsc_page()
1125 if (hv->hv_tsc_page_status == HV_TSC_PAGE_BROKEN || in kvm_hv_setup_tsc_page()
1126 hv->hv_tsc_page_status == HV_TSC_PAGE_UNSET) in kvm_hv_setup_tsc_page()
1129 mutex_lock(&hv->hv_lock); in kvm_hv_setup_tsc_page()
1130 if (!(hv->hv_tsc_page & HV_X64_MSR_TSC_REFERENCE_ENABLE)) in kvm_hv_setup_tsc_page()
1133 gfn = hv->hv_tsc_page >> HV_X64_MSR_TSC_REFERENCE_ADDRESS_SHIFT; in kvm_hv_setup_tsc_page()
1142 if (tsc_seq && tsc_page_update_unsafe(hv)) { in kvm_hv_setup_tsc_page()
1143 if (kvm_read_guest(kvm, gfn_to_gpa(gfn), &hv->tsc_ref, sizeof(hv->tsc_ref))) in kvm_hv_setup_tsc_page()
1146 hv->hv_tsc_page_status = HV_TSC_PAGE_SET; in kvm_hv_setup_tsc_page()
1154 hv->tsc_ref.tsc_sequence = 0; in kvm_hv_setup_tsc_page()
1156 &hv->tsc_ref, sizeof(hv->tsc_ref.tsc_sequence))) in kvm_hv_setup_tsc_page()
1159 if (!compute_tsc_page_parameters(hv_clock, &hv->tsc_ref)) in kvm_hv_setup_tsc_page()
1164 if (kvm_write_guest(kvm, gfn_to_gpa(gfn), &hv->tsc_ref, sizeof(hv->tsc_ref))) in kvm_hv_setup_tsc_page()
1177 hv->tsc_ref.tsc_sequence = tsc_seq; in kvm_hv_setup_tsc_page()
1179 &hv->tsc_ref, sizeof(hv->tsc_ref.tsc_sequence))) in kvm_hv_setup_tsc_page()
1182 hv->hv_tsc_page_status = HV_TSC_PAGE_SET; in kvm_hv_setup_tsc_page()
1186 hv->hv_tsc_page_status = HV_TSC_PAGE_BROKEN; in kvm_hv_setup_tsc_page()
1188 mutex_unlock(&hv->hv_lock); in kvm_hv_setup_tsc_page()
1193 struct kvm_hv *hv = to_kvm_hv(kvm); in kvm_hv_invalidate_tsc_page() local
1197 if (hv->hv_tsc_page_status == HV_TSC_PAGE_BROKEN || in kvm_hv_invalidate_tsc_page()
1198 hv->hv_tsc_page_status == HV_TSC_PAGE_UNSET || in kvm_hv_invalidate_tsc_page()
1199 tsc_page_update_unsafe(hv)) in kvm_hv_invalidate_tsc_page()
1202 mutex_lock(&hv->hv_lock); in kvm_hv_invalidate_tsc_page()
1204 if (!(hv->hv_tsc_page & HV_X64_MSR_TSC_REFERENCE_ENABLE)) in kvm_hv_invalidate_tsc_page()
1208 if (hv->hv_tsc_page_status == HV_TSC_PAGE_SET) in kvm_hv_invalidate_tsc_page()
1209 hv->hv_tsc_page_status = HV_TSC_PAGE_UPDATING; in kvm_hv_invalidate_tsc_page()
1211 gfn = hv->hv_tsc_page >> HV_X64_MSR_TSC_REFERENCE_ADDRESS_SHIFT; in kvm_hv_invalidate_tsc_page()
1213 hv->tsc_ref.tsc_sequence = 0; in kvm_hv_invalidate_tsc_page()
1221 &hv->tsc_ref, sizeof(hv->tsc_ref.tsc_sequence))) in kvm_hv_invalidate_tsc_page()
1222 hv->hv_tsc_page_status = HV_TSC_PAGE_BROKEN; in kvm_hv_invalidate_tsc_page()
1226 mutex_unlock(&hv->hv_lock); in kvm_hv_invalidate_tsc_page()
1308 struct kvm_hv *hv = to_kvm_hv(kvm); in kvm_hv_set_msr_pw() local
1315 hv->hv_guest_os_id = data; in kvm_hv_set_msr_pw()
1317 if (!hv->hv_guest_os_id) in kvm_hv_set_msr_pw()
1318 hv->hv_hypercall &= ~HV_X64_MSR_HYPERCALL_ENABLE; in kvm_hv_set_msr_pw()
1326 if (!hv->hv_guest_os_id) in kvm_hv_set_msr_pw()
1329 hv->hv_hypercall = data; in kvm_hv_set_msr_pw()
1358 hv->hv_hypercall = data; in kvm_hv_set_msr_pw()
1362 hv->hv_tsc_page = data; in kvm_hv_set_msr_pw()
1363 if (hv->hv_tsc_page & HV_X64_MSR_TSC_REFERENCE_ENABLE) { in kvm_hv_set_msr_pw()
1365 hv->hv_tsc_page_status = HV_TSC_PAGE_GUEST_CHANGED; in kvm_hv_set_msr_pw()
1367 hv->hv_tsc_page_status = HV_TSC_PAGE_HOST_CHANGED; in kvm_hv_set_msr_pw()
1370 hv->hv_tsc_page_status = HV_TSC_PAGE_UNSET; in kvm_hv_set_msr_pw()
1382 vcpu_debug(vcpu, "hv crash (0x%llx 0x%llx 0x%llx 0x%llx 0x%llx)\n", in kvm_hv_set_msr_pw()
1383 hv->hv_crash_param[0], in kvm_hv_set_msr_pw()
1384 hv->hv_crash_param[1], in kvm_hv_set_msr_pw()
1385 hv->hv_crash_param[2], in kvm_hv_set_msr_pw()
1386 hv->hv_crash_param[3], in kvm_hv_set_msr_pw()
1387 hv->hv_crash_param[4]); in kvm_hv_set_msr_pw()
1400 hv->hv_reenlightenment_control = data; in kvm_hv_set_msr_pw()
1403 hv->hv_tsc_emulation_control = data; in kvm_hv_set_msr_pw()
1409 hv->hv_tsc_emulation_status = data; in kvm_hv_set_msr_pw()
1446 struct kvm_hv *hv = to_kvm_hv(vcpu->kvm); in kvm_hv_set_msr() local
1462 atomic_inc(&hv->num_mismatched_vp_indexes); in kvm_hv_set_msr()
1464 atomic_dec(&hv->num_mismatched_vp_indexes); in kvm_hv_set_msr()
1555 struct kvm_hv *hv = to_kvm_hv(kvm); in kvm_hv_get_msr_pw() local
1562 data = hv->hv_guest_os_id; in kvm_hv_get_msr_pw()
1565 data = hv->hv_hypercall; in kvm_hv_get_msr_pw()
1571 data = hv->hv_tsc_page; in kvm_hv_get_msr_pw()
1583 data = hv->hv_reenlightenment_control; in kvm_hv_get_msr_pw()
1586 data = hv->hv_tsc_emulation_control; in kvm_hv_get_msr_pw()
1589 data = hv->hv_tsc_emulation_status; in kvm_hv_get_msr_pw()
1669 struct kvm_hv *hv = to_kvm_hv(vcpu->kvm); in kvm_hv_set_msr_common() local
1682 mutex_lock(&hv->hv_lock); in kvm_hv_set_msr_common()
1684 mutex_unlock(&hv->hv_lock); in kvm_hv_set_msr_common()
1692 struct kvm_hv *hv = to_kvm_hv(vcpu->kvm); in kvm_hv_get_msr_common() local
1705 mutex_lock(&hv->hv_lock); in kvm_hv_get_msr_common()
1707 mutex_unlock(&hv->hv_lock); in kvm_hv_get_msr_common()
1717 struct kvm_hv *hv = to_kvm_hv(kvm); in sparse_set_to_vcpu_mask() local
1727 if (likely(!atomic_read(&hv->num_mismatched_vp_indexes))) { in sparse_set_to_vcpu_mask()
2049 struct kvm_hv *hv = to_kvm_hv(vcpu->kvm); in kvm_hvcall_signal_event() local
2079 eventfd = idr_find(&hv->conn_to_evt, hc->ingpa); in kvm_hvcall_signal_event()
2326 struct kvm_hv *hv = to_kvm_hv(kvm); in kvm_hv_init_vm() local
2328 mutex_init(&hv->hv_lock); in kvm_hv_init_vm()
2329 idr_init(&hv->conn_to_evt); in kvm_hv_init_vm()
2334 struct kvm_hv *hv = to_kvm_hv(kvm); in kvm_hv_destroy_vm() local
2338 idr_for_each_entry(&hv->conn_to_evt, eventfd, i) in kvm_hv_destroy_vm()
2340 idr_destroy(&hv->conn_to_evt); in kvm_hv_destroy_vm()
2345 struct kvm_hv *hv = to_kvm_hv(kvm); in kvm_hv_eventfd_assign() local
2353 mutex_lock(&hv->hv_lock); in kvm_hv_eventfd_assign()
2354 ret = idr_alloc(&hv->conn_to_evt, eventfd, conn_id, conn_id + 1, in kvm_hv_eventfd_assign()
2356 mutex_unlock(&hv->hv_lock); in kvm_hv_eventfd_assign()
2369 struct kvm_hv *hv = to_kvm_hv(kvm); in kvm_hv_eventfd_deassign() local
2372 mutex_lock(&hv->hv_lock); in kvm_hv_eventfd_deassign()
2373 eventfd = idr_remove(&hv->conn_to_evt, conn_id); in kvm_hv_eventfd_deassign()
2374 mutex_unlock(&hv->hv_lock); in kvm_hv_eventfd_deassign()
2432 memcpy(signature, "Linux KVM Hv", 12); in kvm_get_hv_cpuid()
2523 memcpy(signature, "Linux KVM Hv", 12); in kvm_get_hv_cpuid()