/kernel/linux/linux-5.10/arch/x86/kernel/ |
H A D | sev-es.c | 37 static struct ghcb boot_ghcb_page __bss_decrypted __aligned(PAGE_SIZE); 43 static struct ghcb __initdata *boot_ghcb; 47 struct ghcb ghcb_page; 56 struct ghcb backup_ghcb; 83 struct ghcb *ghcb; member 157 static noinstr struct ghcb *__sev_get_ghcb(struct ghcb_state *state) in __sev_get_ghcb() 160 struct ghcb *ghcb; in __sev_get_ghcb() local 165 ghcb in __sev_get_ghcb() 416 vc_slow_virt_to_phys(struct ghcb *ghcb, struct es_em_ctxt *ctxt, unsigned long vaddr, phys_addr_t *paddr) vc_slow_virt_to_phys() argument 484 struct ghcb *ghcb; __sev_put_ghcb() local 509 struct ghcb *ghcb; __sev_es_nmi_complete() local 528 struct ghcb *ghcb; get_jump_table_addr() local 619 vc_handle_msr(struct ghcb *ghcb, struct es_em_ctxt *ctxt) vc_handle_msr() argument 670 struct ghcb *ghcb; sev_es_ap_hlt_loop() local 823 vc_do_mmio(struct ghcb *ghcb, struct es_em_ctxt *ctxt, unsigned int bytes, bool read) vc_do_mmio() argument 855 vc_handle_mmio_twobyte_ops(struct ghcb *ghcb, struct es_em_ctxt *ctxt) vc_handle_mmio_twobyte_ops() argument 992 vc_handle_mmio(struct ghcb *ghcb, struct es_em_ctxt *ctxt) vc_handle_mmio() argument 1077 vc_handle_dr7_write(struct ghcb *ghcb, struct es_em_ctxt *ctxt) vc_handle_dr7_write() argument 1115 vc_handle_dr7_read(struct ghcb *ghcb, struct es_em_ctxt *ctxt) vc_handle_dr7_read() argument 1132 vc_handle_wbinvd(struct ghcb *ghcb, struct es_em_ctxt *ctxt) vc_handle_wbinvd() argument 1138 vc_handle_rdpmc(struct ghcb *ghcb, struct es_em_ctxt *ctxt) vc_handle_rdpmc() argument 1157 vc_handle_monitor(struct ghcb *ghcb, struct es_em_ctxt *ctxt) vc_handle_monitor() argument 1167 vc_handle_mwait(struct ghcb *ghcb, struct es_em_ctxt *ctxt) vc_handle_mwait() argument 1174 vc_handle_vmmcall(struct ghcb *ghcb, struct es_em_ctxt *ctxt) vc_handle_vmmcall() argument 1206 vc_handle_trap_ac(struct ghcb *ghcb, struct es_em_ctxt *ctxt) vc_handle_trap_ac() argument 1219 vc_handle_exitcode(struct es_em_ctxt *ctxt, struct ghcb *ghcb, unsigned long exit_code) vc_handle_exitcode() argument 1319 struct ghcb *ghcb; vc_raw_handle_exception() local [all...] |
H A D | sev-es-shared.c | 64 static __always_inline void vc_ghcb_invalidate(struct ghcb *ghcb) in vc_ghcb_invalidate() argument 66 ghcb->save.sw_exit_code = 0; in vc_ghcb_invalidate() 67 memset(ghcb->save.valid_bitmap, 0, sizeof(ghcb->save.valid_bitmap)); in vc_ghcb_invalidate() 97 static enum es_result sev_es_ghcb_hv_call(struct ghcb *ghcb, in sev_es_ghcb_hv_call() argument 105 ghcb->protocol_version = GHCB_PROTOCOL_MAX; in sev_es_ghcb_hv_call() 106 ghcb->ghcb_usage = GHCB_DEFAULT_USAGE; in sev_es_ghcb_hv_call() 108 ghcb_set_sw_exit_code(ghcb, exit_cod in sev_es_ghcb_hv_call() 403 vc_handle_ioio(struct ghcb *ghcb, struct es_em_ctxt *ctxt) vc_handle_ioio() argument 511 vc_handle_cpuid(struct ghcb *ghcb, struct es_em_ctxt *ctxt) vc_handle_cpuid() argument 546 vc_handle_rdtsc(struct ghcb *ghcb, struct es_em_ctxt *ctxt, unsigned long exit_code) vc_handle_rdtsc() argument [all...] |
H A D | kvm.c | 822 static void kvm_sev_es_hcall_prepare(struct ghcb *ghcb, struct pt_regs *regs) in kvm_sev_es_hcall_prepare() argument 825 ghcb_set_rbx(ghcb, regs->bx); in kvm_sev_es_hcall_prepare() 826 ghcb_set_rcx(ghcb, regs->cx); in kvm_sev_es_hcall_prepare() 827 ghcb_set_rdx(ghcb, regs->dx); in kvm_sev_es_hcall_prepare() 828 ghcb_set_rsi(ghcb, regs->si); in kvm_sev_es_hcall_prepare() 831 static bool kvm_sev_es_hcall_finish(struct ghcb *ghcb, struct pt_regs *regs) in kvm_sev_es_hcall_finish() argument
|
/kernel/linux/linux-6.6/arch/x86/kernel/ |
H A D | sev-shared.c | 164 static __always_inline void vc_ghcb_invalidate(struct ghcb *ghcb) in vc_ghcb_invalidate() argument 166 ghcb->save.sw_exit_code = 0; in vc_ghcb_invalidate() 167 __builtin_memset(ghcb->save.valid_bitmap, 0, sizeof(ghcb->save.valid_bitmap)); in vc_ghcb_invalidate() 197 static enum es_result verify_exception_info(struct ghcb *ghcb, struct es_em_ctxt *ctxt) in verify_exception_info() argument 201 ret = ghcb->save.sw_exit_info_1 & GENMASK_ULL(31, 0); in verify_exception_info() 206 u64 info = ghcb->save.sw_exit_info_2; in verify_exception_info() 225 static enum es_result sev_es_ghcb_hv_call(struct ghcb *ghc argument 282 __sev_cpuid_hv_ghcb(struct ghcb *ghcb, struct es_em_ctxt *ctxt, struct cpuid_leaf *leaf) __sev_cpuid_hv_ghcb() argument 315 sev_cpuid_hv(struct ghcb *ghcb, struct es_em_ctxt *ctxt, struct cpuid_leaf *leaf) sev_cpuid_hv() argument 430 snp_cpuid_hv(struct ghcb *ghcb, struct es_em_ctxt *ctxt, struct cpuid_leaf *leaf) snp_cpuid_hv() argument 436 snp_cpuid_postprocess(struct ghcb *ghcb, struct es_em_ctxt *ctxt, struct cpuid_leaf *leaf) snp_cpuid_postprocess() argument 531 snp_cpuid(struct ghcb *ghcb, struct es_em_ctxt *ctxt, struct cpuid_leaf *leaf) snp_cpuid() argument 818 vc_handle_ioio(struct ghcb *ghcb, struct es_em_ctxt *ctxt) vc_handle_ioio() argument 926 vc_handle_cpuid_snp(struct ghcb *ghcb, struct es_em_ctxt *ctxt) vc_handle_cpuid_snp() argument 945 vc_handle_cpuid(struct ghcb *ghcb, struct es_em_ctxt *ctxt) vc_handle_cpuid() argument 987 vc_handle_rdtsc(struct ghcb *ghcb, struct es_em_ctxt *ctxt, unsigned long exit_code) vc_handle_rdtsc() argument 1108 vmgexit_psc(struct ghcb *ghcb, struct snp_psc_desc *desc) vmgexit_psc() argument [all...] |
H A D | sev.c | 63 static struct ghcb boot_ghcb_page __bss_decrypted __aligned(PAGE_SIZE); 69 static struct ghcb *boot_ghcb __section(".data"); 76 struct ghcb ghcb_page; 85 struct ghcb backup_ghcb; 112 struct ghcb *ghcb; member 214 static noinstr struct ghcb *__sev_get_ghcb(struct ghcb_state *state) in __sev_get_ghcb() 217 struct ghcb *ghcb; in __sev_get_ghcb() local 222 ghcb in __sev_get_ghcb() 492 vc_slow_virt_to_phys(struct ghcb *ghcb, struct es_em_ctxt *ctxt, unsigned long vaddr, phys_addr_t *paddr) vc_slow_virt_to_phys() argument 560 struct ghcb *ghcb; __sev_put_ghcb() local 585 struct ghcb *ghcb; __sev_es_nmi_complete() local 656 struct ghcb *ghcb; get_jump_table_addr() local 801 struct ghcb *ghcb; __set_pages_state() local 974 struct ghcb *ghcb; wakeup_cpu_via_vmgexit() local 1196 vc_handle_msr(struct ghcb *ghcb, struct es_em_ctxt *ctxt) vc_handle_msr() argument 1224 struct ghcb *ghcb; snp_register_per_cpu_ghcb() local 1278 struct ghcb *ghcb; sev_es_ap_hlt_loop() local 1423 vc_do_mmio(struct ghcb *ghcb, struct es_em_ctxt *ctxt, unsigned int bytes, bool read) vc_do_mmio() argument 1522 vc_handle_mmio(struct ghcb *ghcb, struct es_em_ctxt *ctxt) vc_handle_mmio() argument 1603 vc_handle_dr7_write(struct ghcb *ghcb, struct es_em_ctxt *ctxt) vc_handle_dr7_write() argument 1644 vc_handle_dr7_read(struct ghcb *ghcb, struct es_em_ctxt *ctxt) vc_handle_dr7_read() argument 1664 vc_handle_wbinvd(struct ghcb *ghcb, struct es_em_ctxt *ctxt) vc_handle_wbinvd() argument 1670 vc_handle_rdpmc(struct ghcb *ghcb, struct es_em_ctxt *ctxt) vc_handle_rdpmc() argument 1689 vc_handle_monitor(struct ghcb *ghcb, struct es_em_ctxt *ctxt) vc_handle_monitor() argument 1699 vc_handle_mwait(struct ghcb *ghcb, struct es_em_ctxt *ctxt) vc_handle_mwait() argument 1706 vc_handle_vmmcall(struct ghcb *ghcb, struct es_em_ctxt *ctxt) vc_handle_vmmcall() argument 1738 vc_handle_trap_ac(struct ghcb *ghcb, struct es_em_ctxt *ctxt) vc_handle_trap_ac() argument 1751 vc_handle_exitcode(struct es_em_ctxt *ctxt, struct ghcb *ghcb, unsigned long exit_code) vc_handle_exitcode() argument 1864 struct ghcb *ghcb; vc_raw_handle_exception() local 2178 struct ghcb *ghcb; snp_issue_guest_request() local [all...] |
H A D | kvm.c | 984 static void kvm_sev_es_hcall_prepare(struct ghcb *ghcb, struct pt_regs *regs) in kvm_sev_es_hcall_prepare() argument 987 ghcb_set_rbx(ghcb, regs->bx); in kvm_sev_es_hcall_prepare() 988 ghcb_set_rcx(ghcb, regs->cx); in kvm_sev_es_hcall_prepare() 989 ghcb_set_rdx(ghcb, regs->dx); in kvm_sev_es_hcall_prepare() 990 ghcb_set_rsi(ghcb, regs->si); in kvm_sev_es_hcall_prepare() 993 static bool kvm_sev_es_hcall_finish(struct ghcb *ghcb, struct pt_regs *regs) in kvm_sev_es_hcall_finish() argument
|
/kernel/linux/linux-5.10/arch/x86/kernel/cpu/ |
H A D | vmware.c | 481 static void vmware_sev_es_hcall_prepare(struct ghcb *ghcb, in vmware_sev_es_hcall_prepare() argument 485 ghcb_set_rip(ghcb, regs->ip); in vmware_sev_es_hcall_prepare() 486 ghcb_set_rbx(ghcb, regs->bx); in vmware_sev_es_hcall_prepare() 487 ghcb_set_rcx(ghcb, regs->cx); in vmware_sev_es_hcall_prepare() 488 ghcb_set_rdx(ghcb, regs->dx); in vmware_sev_es_hcall_prepare() 489 ghcb_set_rsi(ghcb, regs->si); in vmware_sev_es_hcall_prepare() 490 ghcb_set_rdi(ghcb, regs->di); in vmware_sev_es_hcall_prepare() 491 ghcb_set_rbp(ghcb, regs->bp); in vmware_sev_es_hcall_prepare() 494 static bool vmware_sev_es_hcall_finish(struct ghcb *ghc argument [all...] |
/kernel/linux/linux-6.6/arch/x86/kernel/cpu/ |
H A D | vmware.c | 484 static void vmware_sev_es_hcall_prepare(struct ghcb *ghcb, in vmware_sev_es_hcall_prepare() argument 488 ghcb_set_rip(ghcb, regs->ip); in vmware_sev_es_hcall_prepare() 489 ghcb_set_rbx(ghcb, regs->bx); in vmware_sev_es_hcall_prepare() 490 ghcb_set_rcx(ghcb, regs->cx); in vmware_sev_es_hcall_prepare() 491 ghcb_set_rdx(ghcb, regs->dx); in vmware_sev_es_hcall_prepare() 492 ghcb_set_rsi(ghcb, regs->si); in vmware_sev_es_hcall_prepare() 493 ghcb_set_rdi(ghcb, regs->di); in vmware_sev_es_hcall_prepare() 494 ghcb_set_rbp(ghcb, regs->bp); in vmware_sev_es_hcall_prepare() 497 static bool vmware_sev_es_hcall_finish(struct ghcb *ghc argument [all...] |
H A D | mshyperv.c | 621 static void hv_sev_es_hcall_prepare(struct ghcb *ghcb, struct pt_regs *regs) in hv_sev_es_hcall_prepare() argument 624 ghcb_set_rcx(ghcb, regs->cx); in hv_sev_es_hcall_prepare() 625 ghcb_set_rdx(ghcb, regs->dx); in hv_sev_es_hcall_prepare() 626 ghcb_set_r8(ghcb, regs->r8); in hv_sev_es_hcall_prepare() 629 static bool hv_sev_es_hcall_finish(struct ghcb *ghcb, struct pt_regs *regs) in hv_sev_es_hcall_finish() argument
|
/kernel/linux/linux-6.6/arch/x86/hyperv/ |
H A D | ivm.c | 32 struct ghcb ghcb; member 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() 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() 121 static enum es_result hv_ghcb_hv_call(struct ghcb *ghcb, u64 exit_code, in hv_ghcb_hv_call() argument 125 ghcb in hv_ghcb_hv_call() [all...] |
/kernel/linux/linux-6.6/arch/x86/kvm/svm/ |
H A D | sev.c | 2374 struct ghcb *ghcb = svm->sev_es.ghcb; in dump_ghcb() local 2383 nbits = sizeof(ghcb->save.valid_bitmap) * 8; in dump_ghcb() 2387 ghcb->save.sw_exit_code, ghcb_sw_exit_code_is_valid(ghcb)); in dump_ghcb() 2389 ghcb->save.sw_exit_info_1, ghcb_sw_exit_info_1_is_valid(ghcb)); in dump_ghcb() 2391 ghcb->save.sw_exit_info_2, ghcb_sw_exit_info_2_is_valid(ghcb)); in dump_ghcb() 2400 struct ghcb *ghcb = svm->sev_es.ghcb; sev_es_sync_to_ghcb() local 2420 struct ghcb *ghcb = svm->sev_es.ghcb; sev_es_sync_from_ghcb() local [all...] |
H A D | svm.h | 194 struct ghcb *ghcb; member 708 static __always_inline u64 kvm_ghcb_get_##field##_if_valid(struct vcpu_svm *svm, struct ghcb *ghcb) \ 710 return kvm_ghcb_##field##_is_valid(svm) ? ghcb->save.field : 0; \
|
H A D | svm.c | 2955 if (!err || !sev_es_guest(vcpu->kvm) || WARN_ON_ONCE(!svm->sev_es.ghcb)) in svm_complete_emulated_msr() 2958 ghcb_set_sw_exit_info_1(svm->sev_es.ghcb, 1); in svm_complete_emulated_msr() 2959 ghcb_set_sw_exit_info_2(svm->sev_es.ghcb, in svm_complete_emulated_msr() 3372 pr_err("%-20s%016llx\n", "ghcb:", control->ghcb_gpa); in dump_vmcb()
|
/kernel/linux/linux-6.6/arch/x86/include/asm/ |
H A D | svm.h | 505 struct ghcb { struct 532 BUILD_BUG_ON(sizeof(struct ghcb) != EXPECTED_GHCB_SIZE); in __unused_size_checks() 565 BUILD_BUG_RESERVED_OFFSET(ghcb, 0xff0); in __unused_size_checks() 636 static __always_inline bool ghcb_##field##_is_valid(const struct ghcb *ghcb) \ 639 (unsigned long *)&ghcb->save.valid_bitmap); \ 642 static __always_inline u64 ghcb_get_##field(struct ghcb *ghcb) \ 644 return ghcb->save.field; \ 647 static __always_inline u64 ghcb_get_##field##_if_valid(struct ghcb *ghc [all...] |
H A D | x86_init.h | 7 struct ghcb; 271 void (*sev_es_hcall_prepare)(struct ghcb *ghcb, struct pt_regs *regs); 272 bool (*sev_es_hcall_finish)(struct ghcb *ghcb, struct pt_regs *regs);
|
/kernel/linux/linux-5.10/arch/x86/include/asm/ |
H A D | svm.h | 286 struct ghcb { struct 306 BUILD_BUG_ON(sizeof(struct ghcb) != EXPECTED_GHCB_SIZE); in __unused_size_checks() 378 static inline bool ghcb_##field##_is_valid(const struct ghcb *ghcb) \ 381 (unsigned long *)&ghcb->save.valid_bitmap); \ 384 static inline void ghcb_set_##field(struct ghcb *ghcb, u64 value) \ 387 (unsigned long *)&ghcb->save.valid_bitmap); \ 388 ghcb->save.field = value; \
|
H A D | x86_init.h | 7 struct ghcb; 248 void (*sev_es_hcall_prepare)(struct ghcb *ghcb, struct pt_regs *regs); 249 bool (*sev_es_hcall_finish)(struct ghcb *ghcb, struct pt_regs *regs);
|
/kernel/linux/linux-6.6/arch/x86/boot/compressed/ |
H A D | sev.c | 28 struct ghcb boot_ghcb_page __aligned(PAGE_SIZE); 29 struct ghcb *boot_ghcb; 271 static void __noreturn sev_es_ghcb_terminate(struct ghcb *ghcb, unsigned int set, in sev_es_ghcb_terminate() argument 276 vc_ghcb_invalidate(ghcb); in sev_es_ghcb_terminate() 277 ghcb_set_sw_exit_code(ghcb, SVM_VMGEXIT_TERM_REQUEST); in sev_es_ghcb_terminate() 278 ghcb_set_sw_exit_info_1(ghcb, exit_info_1); in sev_es_ghcb_terminate() 279 ghcb_set_sw_exit_info_2(ghcb, exit_info_2); in sev_es_ghcb_terminate() 281 sev_es_wr_ghcb_msr(__pa(ghcb)); in sev_es_ghcb_terminate()
|
/kernel/linux/linux-5.10/arch/x86/boot/compressed/ |
H A D | sev-es.c | 26 struct ghcb boot_ghcb_page __aligned(PAGE_SIZE); 27 struct ghcb *boot_ghcb;
|
/kernel/linux/linux-6.6/arch/x86/kvm/ |
H A D | trace.h | 1742 TP_PROTO(unsigned int vcpu_id, struct ghcb *ghcb), 1743 TP_ARGS(vcpu_id, ghcb), 1754 __entry->exit_reason = ghcb->save.sw_exit_code; 1755 __entry->info1 = ghcb->save.sw_exit_info_1; 1756 __entry->info2 = ghcb->save.sw_exit_info_2; 1768 TP_PROTO(unsigned int vcpu_id, struct ghcb *ghcb), 1769 TP_ARGS(vcpu_id, ghcb), 1780 __entry->exit_reason = ghcb [all...] |