svm.h (3e5a516f3bf1a33f2bf219f570e9b5c031616f6a) | svm.h (0d7bf5e5b00a131cc02ecadbbf42563c0721aaeb) |
---|---|
1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * Kernel-based Virtual Machine driver for Linux 4 * 5 * AMD SVM support 6 * 7 * Copyright (C) 2006 Qumranet, Inc. 8 * Copyright 2010 Red Hat, Inc. and/or its affiliates. --- 650 unchanged lines hidden (view full) --- 659void avic_vcpu_unblocking(struct kvm_vcpu *vcpu); 660void avic_ring_doorbell(struct kvm_vcpu *vcpu); 661unsigned long avic_vcpu_get_apicv_inhibit_reasons(struct kvm_vcpu *vcpu); 662void avic_refresh_virtual_apic_mode(struct kvm_vcpu *vcpu); 663 664 665/* sev.c */ 666 | 1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * Kernel-based Virtual Machine driver for Linux 4 * 5 * AMD SVM support 6 * 7 * Copyright (C) 2006 Qumranet, Inc. 8 * Copyright 2010 Red Hat, Inc. and/or its affiliates. --- 650 unchanged lines hidden (view full) --- 659void avic_vcpu_unblocking(struct kvm_vcpu *vcpu); 660void avic_ring_doorbell(struct kvm_vcpu *vcpu); 661unsigned long avic_vcpu_get_apicv_inhibit_reasons(struct kvm_vcpu *vcpu); 662void avic_refresh_virtual_apic_mode(struct kvm_vcpu *vcpu); 663 664 665/* sev.c */ 666 |
667#define GHCB_VERSION_MAX 1ULL 668#define GHCB_VERSION_MIN 1ULL | 667void pre_sev_run(struct vcpu_svm *svm, int cpu); 668void sev_init_vmcb(struct vcpu_svm *svm); 669void sev_vcpu_after_set_cpuid(struct vcpu_svm *svm); 670int sev_es_string_io(struct vcpu_svm *svm, int size, unsigned int port, int in); 671void sev_es_vcpu_reset(struct vcpu_svm *svm); 672void sev_vcpu_deliver_sipi_vector(struct kvm_vcpu *vcpu, u8 vector); 673void sev_es_prepare_switch_to_guest(struct sev_es_save_area *hostsa); 674void sev_es_unmap_ghcb(struct vcpu_svm *svm); |
669 | 675 |
670 671extern unsigned int max_sev_asid; 672 673void sev_vm_destroy(struct kvm *kvm); | 676#ifdef CONFIG_KVM_AMD_SEV |
674int sev_mem_enc_ioctl(struct kvm *kvm, void __user *argp); 675int sev_mem_enc_register_region(struct kvm *kvm, 676 struct kvm_enc_region *range); 677int sev_mem_enc_unregister_region(struct kvm *kvm, 678 struct kvm_enc_region *range); 679int sev_vm_copy_enc_context_from(struct kvm *kvm, unsigned int source_fd); 680int sev_vm_move_enc_context_from(struct kvm *kvm, unsigned int source_fd); 681void sev_guest_memory_reclaimed(struct kvm *kvm); | 677int sev_mem_enc_ioctl(struct kvm *kvm, void __user *argp); 678int sev_mem_enc_register_region(struct kvm *kvm, 679 struct kvm_enc_region *range); 680int sev_mem_enc_unregister_region(struct kvm *kvm, 681 struct kvm_enc_region *range); 682int sev_vm_copy_enc_context_from(struct kvm *kvm, unsigned int source_fd); 683int sev_vm_move_enc_context_from(struct kvm *kvm, unsigned int source_fd); 684void sev_guest_memory_reclaimed(struct kvm *kvm); |
685int sev_handle_vmgexit(struct kvm_vcpu *vcpu); |
|
682 | 686 |
683void pre_sev_run(struct vcpu_svm *svm, int cpu); | 687/* These symbols are used in common code and are stubbed below. */ 688struct page *snp_safe_alloc_page(struct kvm_vcpu *vcpu); 689void sev_free_vcpu(struct kvm_vcpu *vcpu); 690void sev_vm_destroy(struct kvm *kvm); |
684void __init sev_set_cpu_caps(void); 685void __init sev_hardware_setup(void); 686void sev_hardware_unsetup(void); 687int sev_cpu_init(struct svm_cpu_data *sd); | 691void __init sev_set_cpu_caps(void); 692void __init sev_hardware_setup(void); 693void sev_hardware_unsetup(void); 694int sev_cpu_init(struct svm_cpu_data *sd); |
688void sev_init_vmcb(struct vcpu_svm *svm); 689void sev_vcpu_after_set_cpuid(struct vcpu_svm *svm); 690void sev_free_vcpu(struct kvm_vcpu *vcpu); 691int sev_handle_vmgexit(struct kvm_vcpu *vcpu); 692int sev_es_string_io(struct vcpu_svm *svm, int size, unsigned int port, int in); 693void sev_es_vcpu_reset(struct vcpu_svm *svm); 694void sev_vcpu_deliver_sipi_vector(struct kvm_vcpu *vcpu, u8 vector); 695void sev_es_prepare_switch_to_guest(struct sev_es_save_area *hostsa); 696void sev_es_unmap_ghcb(struct vcpu_svm *svm); 697struct page *snp_safe_alloc_page(struct kvm_vcpu *vcpu); | 695extern unsigned int max_sev_asid; 696#else 697static inline struct page *snp_safe_alloc_page(struct kvm_vcpu *vcpu) { 698 return alloc_page(GFP_KERNEL_ACCOUNT | __GFP_ZERO); 699} |
698 | 700 |
701static inline void sev_free_vcpu(struct kvm_vcpu *vcpu) {} 702static inline void sev_vm_destroy(struct kvm *kvm) {} 703static inline void __init sev_set_cpu_caps(void) {} 704static inline void __init sev_hardware_setup(void) {} 705static inline void sev_hardware_unsetup(void) {} 706static inline int sev_cpu_init(struct svm_cpu_data *sd) { return 0; } 707#define max_sev_asid 0 708#endif 709 |
|
699/* vmenter.S */ 700 701void __svm_sev_es_vcpu_run(struct vcpu_svm *svm, bool spec_ctrl_intercepted); 702void __svm_vcpu_run(struct vcpu_svm *svm, bool spec_ctrl_intercepted); 703 704#define DEFINE_KVM_GHCB_ACCESSORS(field) \ 705 static __always_inline bool kvm_ghcb_##field##_is_valid(const struct vcpu_svm *svm) \ 706 { \ --- 22 unchanged lines hidden --- | 710/* vmenter.S */ 711 712void __svm_sev_es_vcpu_run(struct vcpu_svm *svm, bool spec_ctrl_intercepted); 713void __svm_vcpu_run(struct vcpu_svm *svm, bool spec_ctrl_intercepted); 714 715#define DEFINE_KVM_GHCB_ACCESSORS(field) \ 716 static __always_inline bool kvm_ghcb_##field##_is_valid(const struct vcpu_svm *svm) \ 717 { \ --- 22 unchanged lines hidden --- |