diff options
Diffstat (limited to 'arch/powerpc/include/asm/kvm_ppc.h')
| -rw-r--r-- | arch/powerpc/include/asm/kvm_ppc.h | 41 | 
1 files changed, 37 insertions, 4 deletions
| diff --git a/arch/powerpc/include/asm/kvm_ppc.h b/arch/powerpc/include/asm/kvm_ppc.h index ac22b28ae78d..bc892380e6cd 100644 --- a/arch/powerpc/include/asm/kvm_ppc.h +++ b/arch/powerpc/include/asm/kvm_ppc.h @@ -197,10 +197,6 @@ extern struct kvmppc_spapr_tce_table *kvmppc_find_table(  		(iommu_tce_check_ioba((stt)->page_shift, (stt)->offset, \  				(stt)->size, (ioba), (npages)) ?        \  				H_PARAMETER : H_SUCCESS) -extern long kvmppc_tce_to_ua(struct kvm *kvm, unsigned long tce, -		unsigned long *ua, unsigned long **prmap); -extern void kvmppc_tce_put(struct kvmppc_spapr_tce_table *tt, -		unsigned long idx, unsigned long tce);  extern long kvmppc_h_put_tce(struct kvm_vcpu *vcpu, unsigned long liobn,  			     unsigned long ioba, unsigned long tce);  extern long kvmppc_h_put_tce_indirect(struct kvm_vcpu *vcpu, @@ -273,6 +269,7 @@ union kvmppc_one_reg {  		u64	addr;  		u64	length;  	}	vpaval; +	u64	xive_timaval[2];  };  struct kvmppc_ops { @@ -480,6 +477,9 @@ extern void kvm_hv_vm_activated(void);  extern void kvm_hv_vm_deactivated(void);  extern bool kvm_hv_mode_active(void); +extern void kvmppc_check_need_tlb_flush(struct kvm *kvm, int pcpu, +					struct kvm_nested_guest *nested); +  #else  static inline void __init kvm_cma_reserve(void)  {} @@ -594,6 +594,22 @@ extern int kvmppc_xive_set_icp(struct kvm_vcpu *vcpu, u64 icpval);  extern int kvmppc_xive_set_irq(struct kvm *kvm, int irq_source_id, u32 irq,  			       int level, bool line_status);  extern void kvmppc_xive_push_vcpu(struct kvm_vcpu *vcpu); + +static inline int kvmppc_xive_enabled(struct kvm_vcpu *vcpu) +{ +	return vcpu->arch.irq_type == KVMPPC_IRQ_XIVE; +} + +extern int kvmppc_xive_native_connect_vcpu(struct kvm_device *dev, +					   struct kvm_vcpu *vcpu, u32 cpu); +extern void kvmppc_xive_native_cleanup_vcpu(struct kvm_vcpu *vcpu); +extern void kvmppc_xive_native_init_module(void); +extern void kvmppc_xive_native_exit_module(void); +extern int kvmppc_xive_native_get_vp(struct kvm_vcpu *vcpu, +				     union kvmppc_one_reg *val); +extern int kvmppc_xive_native_set_vp(struct kvm_vcpu *vcpu, +				     union kvmppc_one_reg *val); +  #else  static inline int kvmppc_xive_set_xive(struct kvm *kvm, u32 irq, u32 server,  				       u32 priority) { return -1; } @@ -617,6 +633,21 @@ static inline int kvmppc_xive_set_icp(struct kvm_vcpu *vcpu, u64 icpval) { retur  static inline int kvmppc_xive_set_irq(struct kvm *kvm, int irq_source_id, u32 irq,  				      int level, bool line_status) { return -ENODEV; }  static inline void kvmppc_xive_push_vcpu(struct kvm_vcpu *vcpu) { } + +static inline int kvmppc_xive_enabled(struct kvm_vcpu *vcpu) +	{ return 0; } +static inline int kvmppc_xive_native_connect_vcpu(struct kvm_device *dev, +			  struct kvm_vcpu *vcpu, u32 cpu) { return -EBUSY; } +static inline void kvmppc_xive_native_cleanup_vcpu(struct kvm_vcpu *vcpu) { } +static inline void kvmppc_xive_native_init_module(void) { } +static inline void kvmppc_xive_native_exit_module(void) { } +static inline int kvmppc_xive_native_get_vp(struct kvm_vcpu *vcpu, +					    union kvmppc_one_reg *val) +{ return 0; } +static inline int kvmppc_xive_native_set_vp(struct kvm_vcpu *vcpu, +					    union kvmppc_one_reg *val) +{ return -ENOENT; } +  #endif /* CONFIG_KVM_XIVE */  #if defined(CONFIG_PPC_POWERNV) && defined(CONFIG_KVM_BOOK3S_64_HANDLER) @@ -665,6 +696,8 @@ long kvmppc_h_clear_ref(struct kvm_vcpu *vcpu, unsigned long flags,                          unsigned long pte_index);  long kvmppc_h_clear_mod(struct kvm_vcpu *vcpu, unsigned long flags,                          unsigned long pte_index); +long kvmppc_rm_h_page_init(struct kvm_vcpu *vcpu, unsigned long flags, +			   unsigned long dest, unsigned long src);  long kvmppc_hpte_hv_fault(struct kvm_vcpu *vcpu, unsigned long addr,                            unsigned long slb_v, unsigned int status, bool data);  unsigned long kvmppc_rm_h_xirr(struct kvm_vcpu *vcpu); |