Lines Matching refs:hv_ghcb
31 union hv_ghcb { union
70 union hv_ghcb *hv_ghcb; in hv_ghcb_hypercall() local
82 hv_ghcb = (union hv_ghcb *)*ghcb_base; in hv_ghcb_hypercall()
83 if (!hv_ghcb) { in hv_ghcb_hypercall()
88 hv_ghcb->ghcb.protocol_version = GHCB_PROTOCOL_MAX; in hv_ghcb_hypercall()
89 hv_ghcb->ghcb.ghcb_usage = GHCB_USAGE_HYPERV_CALL; in hv_ghcb_hypercall()
91 hv_ghcb->hypercall.outputgpa = (u64)output; in hv_ghcb_hypercall()
92 hv_ghcb->hypercall.hypercallinput.asuint64 = 0; in hv_ghcb_hypercall()
93 hv_ghcb->hypercall.hypercallinput.callcode = control; in hv_ghcb_hypercall()
96 memcpy(hv_ghcb->hypercall.hypercalldata, input, input_size); in hv_ghcb_hypercall()
100 hv_ghcb->ghcb.ghcb_usage = 0xffffffff; in hv_ghcb_hypercall()
101 memset(hv_ghcb->ghcb.save.valid_bitmap, 0, in hv_ghcb_hypercall()
102 sizeof(hv_ghcb->ghcb.save.valid_bitmap)); in hv_ghcb_hypercall()
104 status = hv_ghcb->hypercall.hypercalloutput.callstatus; in hv_ghcb_hypercall()
187 union hv_ghcb *hv_ghcb; in hv_ghcb_msr_write() local
198 hv_ghcb = (union hv_ghcb *)*ghcb_base; in hv_ghcb_msr_write()
199 if (!hv_ghcb) { in hv_ghcb_msr_write()
204 ghcb_set_rcx(&hv_ghcb->ghcb, msr); in hv_ghcb_msr_write()
205 ghcb_set_rax(&hv_ghcb->ghcb, lower_32_bits(value)); in hv_ghcb_msr_write()
206 ghcb_set_rdx(&hv_ghcb->ghcb, upper_32_bits(value)); in hv_ghcb_msr_write()
208 if (hv_ghcb_hv_call(&hv_ghcb->ghcb, SVM_EXIT_MSR, 1, 0)) in hv_ghcb_msr_write()
216 union hv_ghcb *hv_ghcb; in hv_ghcb_msr_read() local
221 BUILD_BUG_ON(sizeof(union hv_ghcb) != HV_HYP_PAGE_SIZE); in hv_ghcb_msr_read()
230 hv_ghcb = (union hv_ghcb *)*ghcb_base; in hv_ghcb_msr_read()
231 if (!hv_ghcb) { in hv_ghcb_msr_read()
236 ghcb_set_rcx(&hv_ghcb->ghcb, msr); in hv_ghcb_msr_read()
237 if (hv_ghcb_hv_call(&hv_ghcb->ghcb, SVM_EXIT_MSR, 0, 0)) in hv_ghcb_msr_read()
240 *value = (u64)lower_32_bits(hv_ghcb->ghcb.save.rax) in hv_ghcb_msr_read()
241 | ((u64)lower_32_bits(hv_ghcb->ghcb.save.rdx) << 32); in hv_ghcb_msr_read()