Lines Matching full:hv
89 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()
128 !!hv->synic_auto_eoi_used); in synic_update_vector()
316 struct kvm_hv *hv = to_kvm_hv(vcpu->kvm); in kvm_hv_syndbg_complete_userspace() local
319 hv->hv_syndbg.control.status = in kvm_hv_syndbg_complete_userspace()
548 struct kvm_hv *hv = to_kvm_hv(kvm); in get_time_ref_counter() local
556 if (hv->hv_tsc_page_status != HV_TSC_PAGE_SET) in get_time_ref_counter()
561 return mul_u64_u64_shr(tsc, hv->tsc_ref.tsc_scale, 64) in get_time_ref_counter()
562 + hv->tsc_ref.tsc_offset; in get_time_ref_counter()
1003 struct kvm_hv *hv = to_kvm_hv(kvm); in kvm_hv_msr_get_crash_data() local
1004 size_t size = ARRAY_SIZE(hv->hv_crash_param); in kvm_hv_msr_get_crash_data()
1009 *pdata = hv->hv_crash_param[array_index_nospec(index, size)]; in kvm_hv_msr_get_crash_data()
1015 struct kvm_hv *hv = to_kvm_hv(kvm); in kvm_hv_msr_get_crash_ctl() local
1017 *pdata = hv->hv_crash_ctl; in kvm_hv_msr_get_crash_ctl()
1023 struct kvm_hv *hv = to_kvm_hv(kvm); in kvm_hv_msr_set_crash_ctl() local
1025 hv->hv_crash_ctl = data & HV_CRASH_CTL_CRASH_NOTIFY; in kvm_hv_msr_set_crash_ctl()
1032 struct kvm_hv *hv = to_kvm_hv(kvm); in kvm_hv_msr_set_crash_data() local
1033 size_t size = ARRAY_SIZE(hv->hv_crash_param); in kvm_hv_msr_set_crash_data()
1038 hv->hv_crash_param[array_index_nospec(index, size)] = data; in kvm_hv_msr_set_crash_data()
1120 static inline bool tsc_page_update_unsafe(struct kvm_hv *hv) in tsc_page_update_unsafe() argument
1122 return (hv->hv_tsc_page_status != HV_TSC_PAGE_GUEST_CHANGED) && in tsc_page_update_unsafe()
1123 hv->hv_tsc_emulation_control; in tsc_page_update_unsafe()
1129 struct kvm_hv *hv = to_kvm_hv(kvm); in kvm_hv_setup_tsc_page() local
1133 BUILD_BUG_ON(sizeof(tsc_seq) != sizeof(hv->tsc_ref.tsc_sequence)); in kvm_hv_setup_tsc_page()
1136 mutex_lock(&hv->hv_lock); in kvm_hv_setup_tsc_page()
1138 if (hv->hv_tsc_page_status == HV_TSC_PAGE_BROKEN || in kvm_hv_setup_tsc_page()
1139 hv->hv_tsc_page_status == HV_TSC_PAGE_SET || in kvm_hv_setup_tsc_page()
1140 hv->hv_tsc_page_status == HV_TSC_PAGE_UNSET) in kvm_hv_setup_tsc_page()
1143 if (!(hv->hv_tsc_page & HV_X64_MSR_TSC_REFERENCE_ENABLE)) in kvm_hv_setup_tsc_page()
1146 gfn = hv->hv_tsc_page >> HV_X64_MSR_TSC_REFERENCE_ADDRESS_SHIFT; in kvm_hv_setup_tsc_page()
1155 if (tsc_seq && tsc_page_update_unsafe(hv)) { in kvm_hv_setup_tsc_page()
1156 if (kvm_read_guest(kvm, gfn_to_gpa(gfn), &hv->tsc_ref, sizeof(hv->tsc_ref))) in kvm_hv_setup_tsc_page()
1159 hv->hv_tsc_page_status = HV_TSC_PAGE_SET; in kvm_hv_setup_tsc_page()
1167 hv->tsc_ref.tsc_sequence = 0; in kvm_hv_setup_tsc_page()
1169 &hv->tsc_ref, sizeof(hv->tsc_ref.tsc_sequence))) in kvm_hv_setup_tsc_page()
1172 if (!compute_tsc_page_parameters(hv_clock, &hv->tsc_ref)) in kvm_hv_setup_tsc_page()
1177 if (kvm_write_guest(kvm, gfn_to_gpa(gfn), &hv->tsc_ref, sizeof(hv->tsc_ref))) in kvm_hv_setup_tsc_page()
1190 hv->tsc_ref.tsc_sequence = tsc_seq; in kvm_hv_setup_tsc_page()
1192 &hv->tsc_ref, sizeof(hv->tsc_ref.tsc_sequence))) in kvm_hv_setup_tsc_page()
1195 hv->hv_tsc_page_status = HV_TSC_PAGE_SET; in kvm_hv_setup_tsc_page()
1199 hv->hv_tsc_page_status = HV_TSC_PAGE_BROKEN; in kvm_hv_setup_tsc_page()
1201 mutex_unlock(&hv->hv_lock); in kvm_hv_setup_tsc_page()
1206 struct kvm_hv *hv = to_kvm_hv(kvm); in kvm_hv_request_tsc_page_update() local
1208 mutex_lock(&hv->hv_lock); in kvm_hv_request_tsc_page_update()
1210 if (hv->hv_tsc_page_status == HV_TSC_PAGE_SET && in kvm_hv_request_tsc_page_update()
1211 !tsc_page_update_unsafe(hv)) in kvm_hv_request_tsc_page_update()
1212 hv->hv_tsc_page_status = HV_TSC_PAGE_HOST_CHANGED; in kvm_hv_request_tsc_page_update()
1214 mutex_unlock(&hv->hv_lock); in kvm_hv_request_tsc_page_update()
1295 struct kvm_hv *hv = to_kvm_hv(kvm); in kvm_hv_set_msr_pw() local
1302 hv->hv_guest_os_id = data; in kvm_hv_set_msr_pw()
1304 if (!hv->hv_guest_os_id) in kvm_hv_set_msr_pw()
1305 hv->hv_hypercall &= ~HV_X64_MSR_HYPERCALL_ENABLE; in kvm_hv_set_msr_pw()
1313 if (!hv->hv_guest_os_id) in kvm_hv_set_msr_pw()
1316 hv->hv_hypercall = data; in kvm_hv_set_msr_pw()
1345 hv->hv_hypercall = data; in kvm_hv_set_msr_pw()
1349 hv->hv_tsc_page = data; in kvm_hv_set_msr_pw()
1350 if (hv->hv_tsc_page & HV_X64_MSR_TSC_REFERENCE_ENABLE) { in kvm_hv_set_msr_pw()
1352 hv->hv_tsc_page_status = HV_TSC_PAGE_GUEST_CHANGED; in kvm_hv_set_msr_pw()
1354 hv->hv_tsc_page_status = HV_TSC_PAGE_HOST_CHANGED; in kvm_hv_set_msr_pw()
1357 hv->hv_tsc_page_status = HV_TSC_PAGE_UNSET; in kvm_hv_set_msr_pw()
1369 vcpu_debug(vcpu, "hv crash (0x%llx 0x%llx 0x%llx 0x%llx 0x%llx)\n", in kvm_hv_set_msr_pw()
1370 hv->hv_crash_param[0], in kvm_hv_set_msr_pw()
1371 hv->hv_crash_param[1], in kvm_hv_set_msr_pw()
1372 hv->hv_crash_param[2], in kvm_hv_set_msr_pw()
1373 hv->hv_crash_param[3], in kvm_hv_set_msr_pw()
1374 hv->hv_crash_param[4]); in kvm_hv_set_msr_pw()
1387 hv->hv_reenlightenment_control = data; in kvm_hv_set_msr_pw()
1390 hv->hv_tsc_emulation_control = data; in kvm_hv_set_msr_pw()
1396 hv->hv_tsc_emulation_status = data; in kvm_hv_set_msr_pw()
1433 struct kvm_hv *hv = to_kvm_hv(vcpu->kvm); in kvm_hv_set_msr() local
1449 atomic_inc(&hv->num_mismatched_vp_indexes); in kvm_hv_set_msr()
1451 atomic_dec(&hv->num_mismatched_vp_indexes); in kvm_hv_set_msr()
1542 struct kvm_hv *hv = to_kvm_hv(kvm); in kvm_hv_get_msr_pw() local
1549 data = hv->hv_guest_os_id; in kvm_hv_get_msr_pw()
1552 data = hv->hv_hypercall; in kvm_hv_get_msr_pw()
1558 data = hv->hv_tsc_page; in kvm_hv_get_msr_pw()
1570 data = hv->hv_reenlightenment_control; in kvm_hv_get_msr_pw()
1573 data = hv->hv_tsc_emulation_control; in kvm_hv_get_msr_pw()
1576 data = hv->hv_tsc_emulation_status; in kvm_hv_get_msr_pw()
1656 struct kvm_hv *hv = to_kvm_hv(vcpu->kvm); in kvm_hv_set_msr_common() local
1667 mutex_lock(&hv->hv_lock); in kvm_hv_set_msr_common()
1669 mutex_unlock(&hv->hv_lock); in kvm_hv_set_msr_common()
1677 struct kvm_hv *hv = to_kvm_hv(vcpu->kvm); in kvm_hv_get_msr_common() local
1688 mutex_lock(&hv->hv_lock); in kvm_hv_get_msr_common()
1690 mutex_unlock(&hv->hv_lock); in kvm_hv_get_msr_common()
1699 struct kvm_hv *hv = to_kvm_hv(kvm); in sparse_set_to_vcpu_mask() local
1700 bool has_mismatch = atomic_read(&hv->num_mismatched_vp_indexes); in sparse_set_to_vcpu_mask()
2078 struct kvm_hv *hv = to_kvm_hv(vcpu->kvm); in kvm_hvcall_signal_event() local
2108 eventfd = idr_find(&hv->conn_to_evt, hc->ingpa); in kvm_hvcall_signal_event()
2359 struct kvm_hv *hv = to_kvm_hv(kvm); in kvm_hv_init_vm() local
2361 mutex_init(&hv->hv_lock); in kvm_hv_init_vm()
2362 idr_init(&hv->conn_to_evt); in kvm_hv_init_vm()
2367 struct kvm_hv *hv = to_kvm_hv(kvm); in kvm_hv_destroy_vm() local
2371 idr_for_each_entry(&hv->conn_to_evt, eventfd, i) in kvm_hv_destroy_vm()
2373 idr_destroy(&hv->conn_to_evt); in kvm_hv_destroy_vm()
2378 struct kvm_hv *hv = to_kvm_hv(kvm); in kvm_hv_eventfd_assign() local
2386 mutex_lock(&hv->hv_lock); in kvm_hv_eventfd_assign()
2387 ret = idr_alloc(&hv->conn_to_evt, eventfd, conn_id, conn_id + 1, in kvm_hv_eventfd_assign()
2389 mutex_unlock(&hv->hv_lock); in kvm_hv_eventfd_assign()
2402 struct kvm_hv *hv = to_kvm_hv(kvm); in kvm_hv_eventfd_deassign() local
2405 mutex_lock(&hv->hv_lock); in kvm_hv_eventfd_deassign()
2406 eventfd = idr_remove(&hv->conn_to_evt, conn_id); in kvm_hv_eventfd_deassign()
2407 mutex_unlock(&hv->hv_lock); in kvm_hv_eventfd_deassign()
2461 memcpy(signature, "Linux KVM Hv", 12); in kvm_get_hv_cpuid()
2553 memcpy(signature, "Linux KVM Hv", 12); in kvm_get_hv_cpuid()