mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-15 22:41:38 +00:00
- After the guest becomes secure, when we handle a page fault of a page belonging to SVM in HV, send that page to UV via UV_PAGE_IN. - Whenever a page is unmapped on the HV side, inform UV via UV_PAGE_INVAL. - Ensure all those routines that walk the secondary page tables of the guest don't do so in case of secure VM. For secure guest, the active secondary page tables are in secure memory and the secondary page tables in HV are freed when guest becomes secure. Signed-off-by: Bharata B Rao <bharata@linux.ibm.com> Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
69 lines
1.8 KiB
C
69 lines
1.8 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef __ASM_KVM_BOOK3S_UVMEM_H__
|
|
#define __ASM_KVM_BOOK3S_UVMEM_H__
|
|
|
|
#ifdef CONFIG_PPC_UV
|
|
int kvmppc_uvmem_init(void);
|
|
void kvmppc_uvmem_free(void);
|
|
int kvmppc_uvmem_slot_init(struct kvm *kvm, const struct kvm_memory_slot *slot);
|
|
void kvmppc_uvmem_slot_free(struct kvm *kvm,
|
|
const struct kvm_memory_slot *slot);
|
|
unsigned long kvmppc_h_svm_page_in(struct kvm *kvm,
|
|
unsigned long gra,
|
|
unsigned long flags,
|
|
unsigned long page_shift);
|
|
unsigned long kvmppc_h_svm_page_out(struct kvm *kvm,
|
|
unsigned long gra,
|
|
unsigned long flags,
|
|
unsigned long page_shift);
|
|
unsigned long kvmppc_h_svm_init_start(struct kvm *kvm);
|
|
unsigned long kvmppc_h_svm_init_done(struct kvm *kvm);
|
|
int kvmppc_send_page_to_uv(struct kvm *kvm, unsigned long gfn);
|
|
#else
|
|
static inline int kvmppc_uvmem_init(void)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
static inline void kvmppc_uvmem_free(void) { }
|
|
|
|
static inline int
|
|
kvmppc_uvmem_slot_init(struct kvm *kvm, const struct kvm_memory_slot *slot)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
static inline void
|
|
kvmppc_uvmem_slot_free(struct kvm *kvm, const struct kvm_memory_slot *slot) { }
|
|
|
|
static inline unsigned long
|
|
kvmppc_h_svm_page_in(struct kvm *kvm, unsigned long gra,
|
|
unsigned long flags, unsigned long page_shift)
|
|
{
|
|
return H_UNSUPPORTED;
|
|
}
|
|
|
|
static inline unsigned long
|
|
kvmppc_h_svm_page_out(struct kvm *kvm, unsigned long gra,
|
|
unsigned long flags, unsigned long page_shift)
|
|
{
|
|
return H_UNSUPPORTED;
|
|
}
|
|
|
|
static inline unsigned long kvmppc_h_svm_init_start(struct kvm *kvm)
|
|
{
|
|
return H_UNSUPPORTED;
|
|
}
|
|
|
|
static inline unsigned long kvmppc_h_svm_init_done(struct kvm *kvm)
|
|
{
|
|
return H_UNSUPPORTED;
|
|
}
|
|
|
|
static inline int kvmppc_send_page_to_uv(struct kvm *kvm, unsigned long gfn)
|
|
{
|
|
return -EFAULT;
|
|
}
|
|
#endif /* CONFIG_PPC_UV */
|
|
#endif /* __ASM_KVM_BOOK3S_UVMEM_H__ */
|