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