Lines Matching defs:hv_ghcb
32 union hv_ghcb {
71 union hv_ghcb *hv_ghcb;
83 hv_ghcb = (union hv_ghcb *)*ghcb_base;
84 if (!hv_ghcb) {
89 hv_ghcb->ghcb.protocol_version = GHCB_PROTOCOL_MAX;
90 hv_ghcb->ghcb.ghcb_usage = GHCB_USAGE_HYPERV_CALL;
92 hv_ghcb->hypercall.outputgpa = (u64)output;
93 hv_ghcb->hypercall.hypercallinput.asuint64 = 0;
94 hv_ghcb->hypercall.hypercallinput.callcode = control;
97 memcpy(hv_ghcb->hypercall.hypercalldata, input, input_size);
101 hv_ghcb->ghcb.ghcb_usage = 0xffffffff;
102 memset(hv_ghcb->ghcb.save.valid_bitmap, 0,
103 sizeof(hv_ghcb->ghcb.save.valid_bitmap));
105 status = hv_ghcb->hypercall.hypercalloutput.callstatus;
188 union hv_ghcb *hv_ghcb;
199 hv_ghcb = (union hv_ghcb *)*ghcb_base;
200 if (!hv_ghcb) {
205 ghcb_set_rcx(&hv_ghcb->ghcb, msr);
206 ghcb_set_rax(&hv_ghcb->ghcb, lower_32_bits(value));
207 ghcb_set_rdx(&hv_ghcb->ghcb, upper_32_bits(value));
209 if (hv_ghcb_hv_call(&hv_ghcb->ghcb, SVM_EXIT_MSR, 1, 0))
217 union hv_ghcb *hv_ghcb;
221 /* Check size of union hv_ghcb here. */
222 BUILD_BUG_ON(sizeof(union hv_ghcb) != HV_HYP_PAGE_SIZE);
231 hv_ghcb = (union hv_ghcb *)*ghcb_base;
232 if (!hv_ghcb) {
237 ghcb_set_rcx(&hv_ghcb->ghcb, msr);
238 if (hv_ghcb_hv_call(&hv_ghcb->ghcb, SVM_EXIT_MSR, 0, 0))
241 *value = (u64)lower_32_bits(hv_ghcb->ghcb.save.rax)
242 | ((u64)lower_32_bits(hv_ghcb->ghcb.save.rdx) << 32);