diff options
| author | Paolo Bonzini <pbonzini@redhat.com> | 2019-02-22 17:44:23 +0100 | 
|---|---|---|
| committer | Paolo Bonzini <pbonzini@redhat.com> | 2019-02-22 17:44:23 +0100 | 
| commit | 8f060f53554cf58dcb28c85ff05d03ed8b02f4b2 (patch) | |
| tree | bba474bccdc99e46fe11e3867f2ddbde7353d69f /arch/s390/include/asm/kvm_host.h | |
| parent | a242010776f880ec0d8917aae0406e4a70cdc36c (diff) | |
| parent | 11ba5961a2156a4f210627ed8421387e2531b100 (diff) | |
| download | linux-8f060f53554cf58dcb28c85ff05d03ed8b02f4b2.tar.bz2 | |
Merge tag 'kvm-s390-next-5.1-1' of git://git.kernel.org/pub/scm/linux/kernel/git/kvms390/linux into kvm-next
KVM: s390: Features for 5.1
- Clarify KVM related kernel messages
- Interrupt cleanup
- Introduction of the Guest Information Block (GIB)
- Preparation for processor subfunctions in cpu model
Diffstat (limited to 'arch/s390/include/asm/kvm_host.h')
| -rw-r--r-- | arch/s390/include/asm/kvm_host.h | 37 | 
1 files changed, 34 insertions, 3 deletions
| diff --git a/arch/s390/include/asm/kvm_host.h b/arch/s390/include/asm/kvm_host.h index c2b8c8c6c9be..c47e22bba87f 100644 --- a/arch/s390/include/asm/kvm_host.h +++ b/arch/s390/include/asm/kvm_host.h @@ -591,7 +591,6 @@ struct kvm_s390_float_interrupt {  	struct kvm_s390_mchk_info mchk;  	struct kvm_s390_ext_info srv_signal;  	int next_rr_cpu; -	unsigned long idle_mask[BITS_TO_LONGS(KVM_MAX_VCPUS)];  	struct mutex ais_lock;  	u8 simm;  	u8 nimm; @@ -712,6 +711,7 @@ struct s390_io_adapter {  struct kvm_s390_cpu_model {  	/* facility mask supported by kvm & hosting machine */  	__u64 fac_mask[S390_ARCH_FAC_LIST_SIZE_U64]; +	struct kvm_s390_vm_cpu_subfunc subfuncs;  	/* facility list requested by guest (in dma page) */  	__u64 *fac_list;  	u64 cpuid; @@ -782,9 +782,21 @@ struct kvm_s390_gisa {  			u8  reserved03[11];  			u32 airq_count;  		} g1; +		struct { +			u64 word[4]; +		} u64;  	};  }; +struct kvm_s390_gib { +	u32 alert_list_origin; +	u32 reserved01; +	u8:5; +	u8  nisc:3; +	u8  reserved03[3]; +	u32 reserved04[5]; +}; +  /*   * sie_page2 has to be allocated as DMA because fac_list, crycb and   * gisa need 31bit addresses in the sie control block. @@ -793,7 +805,8 @@ struct sie_page2 {  	__u64 fac_list[S390_ARCH_FAC_LIST_SIZE_U64];	/* 0x0000 */  	struct kvm_s390_crypto_cb crycb;		/* 0x0800 */  	struct kvm_s390_gisa gisa;			/* 0x0900 */ -	u8 reserved920[0x1000 - 0x920];			/* 0x0920 */ +	struct kvm *kvm;				/* 0x0920 */ +	u8 reserved928[0x1000 - 0x928];			/* 0x0928 */  };  struct kvm_s390_vsie { @@ -804,6 +817,20 @@ struct kvm_s390_vsie {  	struct page *pages[KVM_MAX_VCPUS];  }; +struct kvm_s390_gisa_iam { +	u8 mask; +	spinlock_t ref_lock; +	u32 ref_count[MAX_ISC + 1]; +}; + +struct kvm_s390_gisa_interrupt { +	struct kvm_s390_gisa *origin; +	struct kvm_s390_gisa_iam alert; +	struct hrtimer timer; +	u64 expires; +	DECLARE_BITMAP(kicked_mask, KVM_MAX_VCPUS); +}; +  struct kvm_arch{  	void *sca;  	int use_esca; @@ -837,7 +864,8 @@ struct kvm_arch{  	atomic64_t cmma_dirty_pages;  	/* subset of available cpu features enabled by user space */  	DECLARE_BITMAP(cpu_feat, KVM_S390_VM_CPU_FEAT_NR_BITS); -	struct kvm_s390_gisa *gisa; +	DECLARE_BITMAP(idle_mask, KVM_MAX_VCPUS); +	struct kvm_s390_gisa_interrupt gisa_int;  };  #define KVM_HVA_ERR_BAD		(-1UL) @@ -871,6 +899,9 @@ void kvm_arch_crypto_set_masks(struct kvm *kvm, unsigned long *apm,  extern int sie64a(struct kvm_s390_sie_block *, u64 *);  extern char sie_exit; +extern int kvm_s390_gisc_register(struct kvm *kvm, u32 gisc); +extern int kvm_s390_gisc_unregister(struct kvm *kvm, u32 gisc); +  static inline void kvm_arch_hardware_disable(void) {}  static inline void kvm_arch_check_processor_compat(void *rtn) {}  static inline void kvm_arch_sync_events(struct kvm *kvm) {} |