pkvm_hyp_vm
DEFINE(PKVM_HYP_VM_SIZE, sizeof(struct pkvm_hyp_vm));
int __pkvm_host_reclaim_page_guest(u64 gfn, struct pkvm_hyp_vm *vm);
int __pkvm_host_unshare_guest(u64 gfn, u64 nr_pages, struct pkvm_hyp_vm *hyp_vm);
int __pkvm_host_wrprotect_guest(u64 gfn, u64 nr_pages, struct pkvm_hyp_vm *hyp_vm);
int __pkvm_host_test_clear_young_guest(u64 gfn, u64 nr_pages, bool mkold, struct pkvm_hyp_vm *vm);
int kvm_guest_prepare_stage2(struct pkvm_hyp_vm *vm, void *pgd);
void kvm_guest_destroy_stage2(struct pkvm_hyp_vm *vm);
void reclaim_pgtable_pages(struct pkvm_hyp_vm *vm, struct kvm_hyp_memcache *mc);
static inline struct pkvm_hyp_vm *
return container_of(hyp_vcpu->vcpu.kvm, struct pkvm_hyp_vm, kvm);
static inline bool pkvm_hyp_vm_is_protected(struct pkvm_hyp_vm *hyp_vm)
struct pkvm_hyp_vm *get_vm_by_handle(pkvm_handle_t handle);
struct pkvm_hyp_vm *get_pkvm_hyp_vm(pkvm_handle_t handle);
struct pkvm_hyp_vm *get_np_pkvm_hyp_vm(pkvm_handle_t handle);
void put_pkvm_hyp_vm(struct pkvm_hyp_vm *hyp_vm);
struct pkvm_hyp_vm *hyp_vm;
struct pkvm_hyp_vm *hyp_vm;
struct pkvm_hyp_vm *hyp_vm;
struct pkvm_hyp_vm *hyp_vm = get_np_pkvm_hyp_vm(handle);
struct pkvm_hyp_vm *vm = pkvm_hyp_vcpu_to_hyp_vm(vcpu);
static int host_stage2_get_guest_info(phys_addr_t phys, struct pkvm_hyp_vm **vm,
struct pkvm_hyp_vm *vm;
int __pkvm_host_reclaim_page_guest(u64 gfn, struct pkvm_hyp_vm *vm)
struct pkvm_hyp_vm *vm = pkvm_hyp_vcpu_to_hyp_vm(vcpu);
struct pkvm_hyp_vm *vm = pkvm_hyp_vcpu_to_hyp_vm(vcpu);
struct pkvm_hyp_vm *vm = pkvm_hyp_vcpu_to_hyp_vm(vcpu);
static int __check_host_shared_guest(struct pkvm_hyp_vm *vm, u64 *__phys, u64 ipa, u64 size)
int __pkvm_host_unshare_guest(u64 gfn, u64 nr_pages, struct pkvm_hyp_vm *vm)
static void assert_host_shared_guest(struct pkvm_hyp_vm *vm, u64 ipa, u64 size)
struct pkvm_hyp_vm *vm = pkvm_hyp_vcpu_to_hyp_vm(vcpu);
int __pkvm_host_wrprotect_guest(u64 gfn, u64 nr_pages, struct pkvm_hyp_vm *vm)
int __pkvm_host_test_clear_young_guest(u64 gfn, u64 nr_pages, bool mkold, struct pkvm_hyp_vm *vm)
struct pkvm_hyp_vm *vm = pkvm_hyp_vcpu_to_hyp_vm(vcpu);
struct pkvm_hyp_vm *vm;
struct pkvm_hyp_vm *vm;
int kvm_guest_prepare_stage2(struct pkvm_hyp_vm *vm, void *pgd)
void kvm_guest_destroy_stage2(struct pkvm_hyp_vm *vm)
static DEFINE_PER_CPU(struct pkvm_hyp_vm *, __current_vm);
void reclaim_pgtable_pages(struct pkvm_hyp_vm *vm, struct kvm_hyp_memcache *mc)
static void guest_lock_component(struct pkvm_hyp_vm *vm)
static void guest_unlock_component(struct pkvm_hyp_vm *vm)
static u64 host_stage2_encode_gfn_meta(struct pkvm_hyp_vm *vm, u64 gfn)
static int host_stage2_decode_gfn_meta(kvm_pte_t pte, struct pkvm_hyp_vm **vm,
static int __guest_check_page_state_range(struct pkvm_hyp_vm *vm, u64 addr,
static int get_valid_guest_pte(struct pkvm_hyp_vm *vm, u64 ipa, kvm_pte_t *ptep, u64 *physp)
struct pkvm_hyp_vm *vm = pkvm_hyp_vcpu_to_hyp_vm(hyp_vcpu);
struct pkvm_hyp_vm *vm = pkvm_hyp_vcpu_to_hyp_vm(vcpu);
static struct pkvm_hyp_vm **vm_table;
struct pkvm_hyp_vm *get_vm_by_handle(pkvm_handle_t handle)
struct pkvm_hyp_vm *hyp_vm;
struct pkvm_hyp_vm *hyp_vm = pkvm_hyp_vcpu_to_hyp_vm(hyp_vcpu);
struct pkvm_hyp_vm *get_pkvm_hyp_vm(pkvm_handle_t handle)
struct pkvm_hyp_vm *hyp_vm;
void put_pkvm_hyp_vm(struct pkvm_hyp_vm *hyp_vm)
struct pkvm_hyp_vm *get_np_pkvm_hyp_vm(pkvm_handle_t handle)
struct pkvm_hyp_vm *hyp_vm = get_pkvm_hyp_vm(handle);
static void pkvm_init_features_from_host(struct pkvm_hyp_vm *hyp_vm, const struct kvm *host_kvm)
static void init_pkvm_hyp_vm(struct kvm *host_kvm, struct pkvm_hyp_vm *hyp_vm,
struct pkvm_hyp_vm *hyp_vm = pkvm_hyp_vcpu_to_hyp_vm(hyp_vcpu);
struct pkvm_hyp_vm *hyp_vm,
struct pkvm_hyp_vm *hyp_vm)
struct pkvm_hyp_vm *hyp_vm)
return size_add(sizeof(struct pkvm_hyp_vm),
static struct pkvm_hyp_vm selftest_vm = {
struct pkvm_hyp_vm *hyp_vm = NULL;
static int register_hyp_vcpu(struct pkvm_hyp_vm *hyp_vm,
struct pkvm_hyp_vm *hyp_vm;
struct pkvm_hyp_vm *hyp_vm = get_pkvm_hyp_vm(handle);
static struct pkvm_hyp_vm *get_pkvm_unref_hyp_vm_locked(pkvm_handle_t handle)
struct pkvm_hyp_vm *hyp_vm;
struct pkvm_hyp_vm *hyp_vm;
struct pkvm_hyp_vm *hyp_vm;