Two new features are added by this patch set:
- The floating interrupt controller (flic) that allows us to inject, clear and inspect non-vcpu local interrupts. This also gives us an opportunity to fix deficiencies in our existing interrupt definitions. - Support for asynchronous page faults via the pfault mechanism. Testing show significant guest performance improvements under host swap. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) iQIcBAABAgAGBQJS6kZMAAoJEBF7vIC1phx8OOcP/jbMTi3pbCPGfyL4tCyyIL6d FYmoVqJMg1lTxLzhdqhli81ahT683I0/jrH17oz1O+PdgxP9annZnNfNs1bO8YzG F4XvmrgQ/JnJLl2xKq0MVPOUbLivMiVkCemhPnzg39JKJDTGPSKBLBTEso+dMVKb 5qxo8UDijJ/TJS4CLYG3AcNWIMtMBlQWCmFMTvVUmaDe8iFEeMoWZRgBJ3X43Hxj uQr6zBvG7zd4+IgfrXGaExLJw9EsLIs8MwkqTvYbuDdxoU/jjyvo3xSR5T+3u3fp raK2RHirfb31XWNC33hTm4VvTHxBQ0gjUZgWb8AZe8UnhpHgnMS1QWGbU9Tj3RKm d5p+AWMT2l+2TzKQRp85NSJCySnQQIgI9Vh3A6MTAsanRpLncpHzOVaBvYKmphWV RG94pjxa3NNDvZ3m8V2htWKArlB+rr1S0nz7R5IHM/1IwmPj5VfianhfT3qmjexC 0CvPlS3FXTbSiTC8xnGET4wvKNUBMThq6alP2/MArqM+28NjDpwOG8/hDpAAIksL COho3/csBHH5mpxI0odkfoyIJLDDdIPOWE3kIQBKkg/Qt3nPUcPOKamKTsP7s7RA T3K1Kz6bljkvY1eDeJ2pWB85XPGxSig2UVxSdTs+ywQ5UcQnEF3aN5dFKjewk8Xv bUgdLiW7ABkj+rCOGIJ8 =z8I9 -----END PGP SIGNATURE----- Merge tag 'kvm-s390-20140130' of git://git.kernel.org/pub/scm/linux/kernel/git/kvms390/linux into HEAD Two new features are added by this patch set: - The floating interrupt controller (flic) that allows us to inject, clear and inspect non-vcpu local interrupts. This also gives us an opportunity to fix deficiencies in our existing interrupt definitions. - Support for asynchronous page faults via the pfault mechanism. Testing show significant guest performance improvements under host swap.
This commit is contained in:
		
				commit
				
					
						f244d910ea
					
				
			
		
					 20 changed files with 827 additions and 109 deletions
				
			
		|  | @ -413,6 +413,8 @@ struct kvm_s390_psw { | |||
| #define KVM_S390_PROGRAM_INT		0xfffe0001u | ||||
| #define KVM_S390_SIGP_SET_PREFIX	0xfffe0002u | ||||
| #define KVM_S390_RESTART		0xfffe0003u | ||||
| #define KVM_S390_INT_PFAULT_INIT	0xfffe0004u | ||||
| #define KVM_S390_INT_PFAULT_DONE	0xfffe0005u | ||||
| #define KVM_S390_MCHK			0xfffe1000u | ||||
| #define KVM_S390_INT_VIRTIO		0xffff2603u | ||||
| #define KVM_S390_INT_SERVICE		0xffff2401u | ||||
|  | @ -434,6 +436,69 @@ struct kvm_s390_interrupt { | |||
| 	__u64 parm64; | ||||
| }; | ||||
| 
 | ||||
| struct kvm_s390_io_info { | ||||
| 	__u16 subchannel_id; | ||||
| 	__u16 subchannel_nr; | ||||
| 	__u32 io_int_parm; | ||||
| 	__u32 io_int_word; | ||||
| }; | ||||
| 
 | ||||
| struct kvm_s390_ext_info { | ||||
| 	__u32 ext_params; | ||||
| 	__u32 pad; | ||||
| 	__u64 ext_params2; | ||||
| }; | ||||
| 
 | ||||
| struct kvm_s390_pgm_info { | ||||
| 	__u64 trans_exc_code; | ||||
| 	__u64 mon_code; | ||||
| 	__u64 per_address; | ||||
| 	__u32 data_exc_code; | ||||
| 	__u16 code; | ||||
| 	__u16 mon_class_nr; | ||||
| 	__u8 per_code; | ||||
| 	__u8 per_atmid; | ||||
| 	__u8 exc_access_id; | ||||
| 	__u8 per_access_id; | ||||
| 	__u8 op_access_id; | ||||
| 	__u8 pad[3]; | ||||
| }; | ||||
| 
 | ||||
| struct kvm_s390_prefix_info { | ||||
| 	__u32 address; | ||||
| }; | ||||
| 
 | ||||
| struct kvm_s390_extcall_info { | ||||
| 	__u16 code; | ||||
| }; | ||||
| 
 | ||||
| struct kvm_s390_emerg_info { | ||||
| 	__u16 code; | ||||
| }; | ||||
| 
 | ||||
| struct kvm_s390_mchk_info { | ||||
| 	__u64 cr14; | ||||
| 	__u64 mcic; | ||||
| 	__u64 failing_storage_address; | ||||
| 	__u32 ext_damage_code; | ||||
| 	__u32 pad; | ||||
| 	__u8 fixed_logout[16]; | ||||
| }; | ||||
| 
 | ||||
| struct kvm_s390_irq { | ||||
| 	__u64 type; | ||||
| 	union { | ||||
| 		struct kvm_s390_io_info io; | ||||
| 		struct kvm_s390_ext_info ext; | ||||
| 		struct kvm_s390_pgm_info pgm; | ||||
| 		struct kvm_s390_emerg_info emerg; | ||||
| 		struct kvm_s390_extcall_info extcall; | ||||
| 		struct kvm_s390_prefix_info prefix; | ||||
| 		struct kvm_s390_mchk_info mchk; | ||||
| 		char reserved[64]; | ||||
| 	} u; | ||||
| }; | ||||
| 
 | ||||
| /* for KVM_SET_GUEST_DEBUG */ | ||||
| 
 | ||||
| #define KVM_GUESTDBG_ENABLE		0x00000001 | ||||
|  | @ -855,6 +920,7 @@ struct kvm_device_attr { | |||
| #define   KVM_DEV_VFIO_GROUP_ADD			1 | ||||
| #define   KVM_DEV_VFIO_GROUP_DEL			2 | ||||
| #define KVM_DEV_TYPE_ARM_VGIC_V2	5 | ||||
| #define KVM_DEV_TYPE_FLIC		6 | ||||
| 
 | ||||
| /*
 | ||||
|  * ioctls for VM fds | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Paolo Bonzini
				Paolo Bonzini