Lines Matching defs:hv

111 	struct kvm_hv *hv = to_kvm_hv(vcpu->kvm);
140 hv->synic_auto_eoi_used++;
142 hv->synic_auto_eoi_used--;
150 !!hv->synic_auto_eoi_used);
338 struct kvm_hv *hv = to_kvm_hv(vcpu->kvm);
341 hv->hv_syndbg.control.status =
570 struct kvm_hv *hv = to_kvm_hv(kvm);
578 if (hv->hv_tsc_page_status != HV_TSC_PAGE_SET)
583 return mul_u64_u64_shr(tsc, hv->tsc_ref.tsc_scale, 64)
584 + hv->tsc_ref.tsc_offset;
1035 struct kvm_hv *hv = to_kvm_hv(kvm);
1036 size_t size = ARRAY_SIZE(hv->hv_crash_param);
1041 *pdata = hv->hv_crash_param[array_index_nospec(index, size)];
1047 struct kvm_hv *hv = to_kvm_hv(kvm);
1049 *pdata = hv->hv_crash_ctl;
1055 struct kvm_hv *hv = to_kvm_hv(kvm);
1057 hv->hv_crash_ctl = data & HV_CRASH_CTL_CRASH_NOTIFY;
1064 struct kvm_hv *hv = to_kvm_hv(kvm);
1065 size_t size = ARRAY_SIZE(hv->hv_crash_param);
1070 hv->hv_crash_param[array_index_nospec(index, size)] = data;
1152 static inline bool tsc_page_update_unsafe(struct kvm_hv *hv)
1154 return (hv->hv_tsc_page_status != HV_TSC_PAGE_GUEST_CHANGED) &&
1155 hv->hv_tsc_emulation_control;
1161 struct kvm_hv *hv = to_kvm_hv(kvm);
1165 BUILD_BUG_ON(sizeof(tsc_seq) != sizeof(hv->tsc_ref.tsc_sequence));
1168 mutex_lock(&hv->hv_lock);
1170 if (hv->hv_tsc_page_status == HV_TSC_PAGE_BROKEN ||
1171 hv->hv_tsc_page_status == HV_TSC_PAGE_SET ||
1172 hv->hv_tsc_page_status == HV_TSC_PAGE_UNSET)
1175 if (!(hv->hv_tsc_page & HV_X64_MSR_TSC_REFERENCE_ENABLE))
1178 gfn = hv->hv_tsc_page >> HV_X64_MSR_TSC_REFERENCE_ADDRESS_SHIFT;
1187 if (tsc_seq && tsc_page_update_unsafe(hv)) {
1188 if (kvm_read_guest(kvm, gfn_to_gpa(gfn), &hv->tsc_ref, sizeof(hv->tsc_ref)))
1191 hv->hv_tsc_page_status = HV_TSC_PAGE_SET;
1199 hv->tsc_ref.tsc_sequence = 0;
1201 &hv->tsc_ref, sizeof(hv->tsc_ref.tsc_sequence)))
1204 if (!compute_tsc_page_parameters(hv_clock, &hv->tsc_ref))
1209 if (kvm_write_guest(kvm, gfn_to_gpa(gfn), &hv->tsc_ref, sizeof(hv->tsc_ref)))
1222 hv->tsc_ref.tsc_sequence = tsc_seq;
1224 &hv->tsc_ref, sizeof(hv->tsc_ref.tsc_sequence)))
1227 hv->hv_tsc_page_status = HV_TSC_PAGE_SET;
1231 hv->hv_tsc_page_status = HV_TSC_PAGE_BROKEN;
1233 mutex_unlock(&hv->hv_lock);
1238 struct kvm_hv *hv = to_kvm_hv(kvm);
1240 mutex_lock(&hv->hv_lock);
1242 if (hv->hv_tsc_page_status == HV_TSC_PAGE_SET &&
1243 !tsc_page_update_unsafe(hv))
1244 hv->hv_tsc_page_status = HV_TSC_PAGE_HOST_CHANGED;
1246 mutex_unlock(&hv->hv_lock);
1338 struct kvm_hv *hv = to_kvm_hv(kvm);
1341 if (hv->xsaves_xsavec_checked)
1344 if ((hv->hv_guest_os_id & KVM_HV_WIN2016_GUEST_ID_MASK) !=
1348 hv->xsaves_xsavec_checked = true;
1364 struct kvm_hv *hv = to_kvm_hv(vcpu->kvm);
1367 hv->xsaves_xsavec_checked)
1370 mutex_lock(&hv->hv_lock);
1372 mutex_unlock(&hv->hv_lock);
1379 struct kvm_hv *hv = to_kvm_hv(kvm);
1386 hv->hv_guest_os_id = data;
1388 if (!hv->hv_guest_os_id)
1389 hv->hv_hypercall &= ~HV_X64_MSR_HYPERCALL_ENABLE;
1397 if (!hv->hv_guest_os_id)
1400 hv->hv_hypercall = data;
1429 hv->hv_hypercall = data;
1433 hv->hv_tsc_page = data;
1434 if (hv->hv_tsc_page & HV_X64_MSR_TSC_REFERENCE_ENABLE) {
1436 hv->hv_tsc_page_status = HV_TSC_PAGE_GUEST_CHANGED;
1438 hv->hv_tsc_page_status = HV_TSC_PAGE_HOST_CHANGED;
1441 hv->hv_tsc_page_status = HV_TSC_PAGE_UNSET;
1453 vcpu_debug(vcpu, "hv crash (0x%llx 0x%llx 0x%llx 0x%llx 0x%llx)\n",
1454 hv->hv_crash_param[0],
1455 hv->hv_crash_param[1],
1456 hv->hv_crash_param[2],
1457 hv->hv_crash_param[3],
1458 hv->hv_crash_param[4]);
1471 hv->hv_reenlightenment_control = data;
1474 hv->hv_tsc_emulation_control = data;
1480 hv->hv_tsc_emulation_status = data;
1493 if (!host && hv->hv_invtsc_control && !data)
1496 hv->hv_invtsc_control = data;
1527 struct kvm_hv *hv = to_kvm_hv(vcpu->kvm);
1543 atomic_inc(&hv->num_mismatched_vp_indexes);
1545 atomic_dec(&hv->num_mismatched_vp_indexes);
1635 struct kvm_hv *hv = to_kvm_hv(kvm);
1642 data = hv->hv_guest_os_id;
1645 data = hv->hv_hypercall;
1651 data = hv->hv_tsc_page;
1663 data = hv->hv_reenlightenment_control;
1666 data = hv->hv_tsc_emulation_control;
1669 data = hv->hv_tsc_emulation_status;
1672 data = hv->hv_invtsc_control;
1752 struct kvm_hv *hv = to_kvm_hv(vcpu->kvm);
1763 mutex_lock(&hv->hv_lock);
1765 mutex_unlock(&hv->hv_lock);
1773 struct kvm_hv *hv = to_kvm_hv(vcpu->kvm);
1784 mutex_lock(&hv->hv_lock);
1786 mutex_unlock(&hv->hv_lock);
1795 struct kvm_hv *hv = to_kvm_hv(kvm);
1796 bool has_mismatch = atomic_read(&hv->num_mismatched_vp_indexes);
2406 struct kvm_hv *hv = to_kvm_hv(vcpu->kvm);
2436 eventfd = idr_find(&hv->conn_to_evt, hc->ingpa);
2691 struct kvm_hv *hv = to_kvm_hv(kvm);
2693 mutex_init(&hv->hv_lock);
2694 idr_init(&hv->conn_to_evt);
2699 struct kvm_hv *hv = to_kvm_hv(kvm);
2703 idr_for_each_entry(&hv->conn_to_evt, eventfd, i)
2705 idr_destroy(&hv->conn_to_evt);
2710 struct kvm_hv *hv = to_kvm_hv(kvm);
2718 mutex_lock(&hv->hv_lock);
2719 ret = idr_alloc(&hv->conn_to_evt, eventfd, conn_id, conn_id + 1,
2721 mutex_unlock(&hv->hv_lock);
2734 struct kvm_hv *hv = to_kvm_hv(kvm);
2737 mutex_lock(&hv->hv_lock);
2738 eventfd = idr_remove(&hv->conn_to_evt, conn_id);
2739 mutex_unlock(&hv->hv_lock);