/linux-master/arch/x86/kernel/ |
H A D | sev-shared.c | 171 static __always_inline void vc_ghcb_invalidate(struct ghcb *ghcb) argument 173 ghcb->save.sw_exit_code = 0; 174 __builtin_memset(ghcb->save.valid_bitmap, 0, sizeof(ghcb->save.valid_bitmap)); 204 static enum es_result verify_exception_info(struct ghcb *ghcb, struct es_em_ctxt *ctxt) argument 208 ret = ghcb->save.sw_exit_info_1 & GENMASK_ULL(31, 0); 213 u64 info = ghcb->save.sw_exit_info_2; 232 static enum es_result sev_es_ghcb_hv_call(struct ghcb *ghc argument 289 __sev_cpuid_hv_ghcb(struct ghcb *ghcb, struct es_em_ctxt *ctxt, struct cpuid_leaf *leaf) argument 322 sev_cpuid_hv(struct ghcb *ghcb, struct es_em_ctxt *ctxt, struct cpuid_leaf *leaf) argument 431 snp_cpuid_hv(struct ghcb *ghcb, struct es_em_ctxt *ctxt, struct cpuid_leaf *leaf) argument 437 snp_cpuid_postprocess(struct ghcb *ghcb, struct es_em_ctxt *ctxt, struct cpuid_leaf *leaf) argument 533 snp_cpuid(struct ghcb *ghcb, struct es_em_ctxt *ctxt, struct cpuid_leaf *leaf) argument 825 vc_handle_ioio(struct ghcb *ghcb, struct es_em_ctxt *ctxt) argument 933 vc_handle_cpuid_snp(struct ghcb *ghcb, struct es_em_ctxt *ctxt) argument 952 vc_handle_cpuid(struct ghcb *ghcb, struct es_em_ctxt *ctxt) argument 994 vc_handle_rdtsc(struct ghcb *ghcb, struct es_em_ctxt *ctxt, unsigned long exit_code) argument 1116 vmgexit_psc(struct ghcb *ghcb, struct snp_psc_desc *desc) argument [all...] |
H A D | sev.c | 84 static struct ghcb boot_ghcb_page __bss_decrypted __aligned(PAGE_SIZE); 90 static struct ghcb *boot_ghcb __section(".data"); 97 struct ghcb ghcb_page; 106 struct ghcb backup_ghcb; 133 struct ghcb *ghcb; member in struct:ghcb_state 235 static noinstr struct ghcb *__sev_get_ghcb(struct ghcb_state *state) 238 struct ghcb *ghcb; local 243 ghcb 513 vc_slow_virt_to_phys(struct ghcb *ghcb, struct es_em_ctxt *ctxt, unsigned long vaddr, phys_addr_t *paddr) argument 581 struct ghcb *ghcb; local 606 struct ghcb *ghcb; local 677 struct ghcb *ghcb; local 808 struct ghcb *ghcb; local 981 struct ghcb *ghcb; local 1203 vc_handle_msr(struct ghcb *ghcb, struct es_em_ctxt *ctxt) argument 1231 struct ghcb *ghcb; local 1285 struct ghcb *ghcb; local 1430 vc_do_mmio(struct ghcb *ghcb, struct es_em_ctxt *ctxt, unsigned int bytes, bool read) argument 1529 vc_handle_mmio(struct ghcb *ghcb, struct es_em_ctxt *ctxt) argument 1610 vc_handle_dr7_write(struct ghcb *ghcb, struct es_em_ctxt *ctxt) argument 1651 vc_handle_dr7_read(struct ghcb *ghcb, struct es_em_ctxt *ctxt) argument 1671 vc_handle_wbinvd(struct ghcb *ghcb, struct es_em_ctxt *ctxt) argument 1677 vc_handle_rdpmc(struct ghcb *ghcb, struct es_em_ctxt *ctxt) argument 1696 vc_handle_monitor(struct ghcb *ghcb, struct es_em_ctxt *ctxt) argument 1706 vc_handle_mwait(struct ghcb *ghcb, struct es_em_ctxt *ctxt) argument 1713 vc_handle_vmmcall(struct ghcb *ghcb, struct es_em_ctxt *ctxt) argument 1745 vc_handle_trap_ac(struct ghcb *ghcb, struct es_em_ctxt *ctxt) argument 1758 vc_handle_exitcode(struct es_em_ctxt *ctxt, struct ghcb *ghcb, unsigned long exit_code) argument 1874 struct ghcb *ghcb; local 2199 struct ghcb *ghcb; local [all...] |
H A D | kvm.c | 986 static void kvm_sev_es_hcall_prepare(struct ghcb *ghcb, struct pt_regs *regs) argument 989 ghcb_set_rbx(ghcb, regs->bx); 990 ghcb_set_rcx(ghcb, regs->cx); 991 ghcb_set_rdx(ghcb, regs->dx); 992 ghcb_set_rsi(ghcb, regs->si); 995 static bool kvm_sev_es_hcall_finish(struct ghcb *ghcb, struct pt_regs *regs) argument
|
/linux-master/arch/x86/kernel/cpu/ |
H A D | vmware.c | 484 static void vmware_sev_es_hcall_prepare(struct ghcb *ghcb, argument 488 ghcb_set_rip(ghcb, regs->ip); 489 ghcb_set_rbx(ghcb, regs->bx); 490 ghcb_set_rcx(ghcb, regs->cx); 491 ghcb_set_rdx(ghcb, regs->dx); 492 ghcb_set_rsi(ghcb, regs->si); 493 ghcb_set_rdi(ghcb, regs->di); 494 ghcb_set_rbp(ghcb, regs->bp); 497 static bool vmware_sev_es_hcall_finish(struct ghcb *ghc argument [all...] |
H A D | mshyperv.c | 625 static void hv_sev_es_hcall_prepare(struct ghcb *ghcb, struct pt_regs *regs) argument 628 ghcb_set_rcx(ghcb, regs->cx); 629 ghcb_set_rdx(ghcb, regs->dx); 630 ghcb_set_r8(ghcb, regs->r8); 633 static bool hv_sev_es_hcall_finish(struct ghcb *ghcb, struct pt_regs *regs) argument
|
/linux-master/arch/x86/include/asm/ |
H A D | x86_init.h | 5 struct ghcb; 272 void (*sev_es_hcall_prepare)(struct ghcb *ghcb, struct pt_regs *regs); 273 bool (*sev_es_hcall_finish)(struct ghcb *ghcb, struct pt_regs *regs);
|
H A D | svm.h | 501 struct ghcb { struct 528 BUILD_BUG_ON(sizeof(struct ghcb) != EXPECTED_GHCB_SIZE); 561 BUILD_BUG_RESERVED_OFFSET(ghcb, 0xff0); 630 static __always_inline bool ghcb_##field##_is_valid(const struct ghcb *ghcb) \ 633 (unsigned long *)&ghcb->save.valid_bitmap); \ 636 static __always_inline u64 ghcb_get_##field(struct ghcb *ghcb) \ 638 return ghcb->save.field; \ 641 static __always_inline u64 ghcb_get_##field##_if_valid(struct ghcb *ghc [all...] |
/linux-master/arch/x86/hyperv/ |
H A D | ivm.c | 33 struct ghcb ghcb; member in union:hv_ghcb 89 hv_ghcb->ghcb.protocol_version = GHCB_PROTOCOL_MAX; 90 hv_ghcb->ghcb.ghcb_usage = GHCB_USAGE_HYPERV_CALL; 101 hv_ghcb->ghcb.ghcb_usage = 0xffffffff; 102 memset(hv_ghcb->ghcb.save.valid_bitmap, 0, 103 sizeof(hv_ghcb->ghcb.save.valid_bitmap)); 122 static enum es_result hv_ghcb_hv_call(struct ghcb *ghcb, u64 exit_code, argument 126 ghcb [all...] |
/linux-master/arch/x86/boot/compressed/ |
H A D | sev.c | 29 static struct ghcb boot_ghcb_page __aligned(PAGE_SIZE); 30 struct ghcb *boot_ghcb; 275 static void __noreturn sev_es_ghcb_terminate(struct ghcb *ghcb, unsigned int set, argument 280 vc_ghcb_invalidate(ghcb); 281 ghcb_set_sw_exit_code(ghcb, SVM_VMGEXIT_TERM_REQUEST); 282 ghcb_set_sw_exit_info_1(ghcb, exit_info_1); 283 ghcb_set_sw_exit_info_2(ghcb, exit_info_2); 285 sev_es_wr_ghcb_msr(__pa(ghcb));
|
/linux-master/arch/x86/kvm/svm/ |
H A D | sev.c | 2395 struct ghcb *ghcb = svm->sev_es.ghcb; local 2404 nbits = sizeof(ghcb->save.valid_bitmap) * 8; 2408 ghcb->save.sw_exit_code, ghcb_sw_exit_code_is_valid(ghcb)); 2410 ghcb->save.sw_exit_info_1, ghcb_sw_exit_info_1_is_valid(ghcb)); 2412 ghcb->save.sw_exit_info_2, ghcb_sw_exit_info_2_is_valid(ghcb)); 2421 struct ghcb *ghcb = svm->sev_es.ghcb; local 2441 struct ghcb *ghcb = svm->sev_es.ghcb; local [all...] |
H A D | svm.h | 196 struct ghcb *ghcb; member in struct:vcpu_sev_es_state 712 static __always_inline u64 kvm_ghcb_get_##field##_if_valid(struct vcpu_svm *svm, struct ghcb *ghcb) \ 714 return kvm_ghcb_##field##_is_valid(svm) ? ghcb->save.field : 0; \
|
H A D | svm.c | 2935 if (!err || !sev_es_guest(vcpu->kvm) || WARN_ON_ONCE(!svm->sev_es.ghcb)) 2938 ghcb_set_sw_exit_info_1(svm->sev_es.ghcb, 1); 2939 ghcb_set_sw_exit_info_2(svm->sev_es.ghcb, 3352 pr_err("%-20s%016llx\n", "ghcb:", control->ghcb_gpa);
|
/linux-master/arch/x86/kvm/ |
H A D | trace.h | 1745 TP_PROTO(unsigned int vcpu_id, struct ghcb *ghcb), 1746 TP_ARGS(vcpu_id, ghcb), 1757 __entry->exit_reason = ghcb->save.sw_exit_code; 1758 __entry->info1 = ghcb->save.sw_exit_info_1; 1759 __entry->info2 = ghcb->save.sw_exit_info_2; 1771 TP_PROTO(unsigned int vcpu_id, struct ghcb *ghcb), 1772 TP_ARGS(vcpu_id, ghcb), 1783 __entry->exit_reason = ghcb [all...] |