KVM: s390: add ioctl to inject local interrupts
We have introduced struct kvm_s390_irq a while ago which allows to inject all kinds of interrupts as defined in the Principles of Operation. Add ioctl to inject interrupts with the extended struct kvm_s390_irq Signed-off-by: Jens Freimann <jfrei@linux.vnet.ibm.com> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com> Acked-by: Cornelia Huck <cornelia.huck@de.ibm.com>
This commit is contained in:

committed by
Christian Borntraeger

parent
b4aec92567
commit
47b43c52ee
@@ -2820,6 +2820,62 @@ single frame starting at start_gfn for count frames.
|
||||
Note: If any architecturally invalid key value is found in the given data then
|
||||
the ioctl will return -EINVAL.
|
||||
|
||||
4.92 KVM_S390_IRQ
|
||||
|
||||
Capability: KVM_CAP_S390_INJECT_IRQ
|
||||
Architectures: s390
|
||||
Type: vcpu ioctl
|
||||
Parameters: struct kvm_s390_irq (in)
|
||||
Returns: 0 on success, -1 on error
|
||||
Errors:
|
||||
EINVAL: interrupt type is invalid
|
||||
type is KVM_S390_SIGP_STOP and flag parameter is invalid value
|
||||
type is KVM_S390_INT_EXTERNAL_CALL and code is bigger
|
||||
than the maximum of VCPUs
|
||||
EBUSY: type is KVM_S390_SIGP_SET_PREFIX and vcpu is not stopped
|
||||
type is KVM_S390_SIGP_STOP and a stop irq is already pending
|
||||
type is KVM_S390_INT_EXTERNAL_CALL and an external call interrupt
|
||||
is already pending
|
||||
|
||||
Allows to inject an interrupt to the guest.
|
||||
|
||||
Using struct kvm_s390_irq as a parameter allows
|
||||
to inject additional payload which is not
|
||||
possible via KVM_S390_INTERRUPT.
|
||||
|
||||
Interrupt parameters are passed via kvm_s390_irq:
|
||||
|
||||
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_stop_info stop;
|
||||
struct kvm_s390_mchk_info mchk;
|
||||
char reserved[64];
|
||||
} u;
|
||||
};
|
||||
|
||||
type can be one of the following:
|
||||
|
||||
KVM_S390_SIGP_STOP - sigp stop; parameter in .stop
|
||||
KVM_S390_PROGRAM_INT - program check; parameters in .pgm
|
||||
KVM_S390_SIGP_SET_PREFIX - sigp set prefix; parameters in .prefix
|
||||
KVM_S390_RESTART - restart; no parameters
|
||||
KVM_S390_INT_CLOCK_COMP - clock comparator interrupt; no parameters
|
||||
KVM_S390_INT_CPU_TIMER - CPU timer interrupt; no parameters
|
||||
KVM_S390_INT_EMERGENCY - sigp emergency; parameters in .emerg
|
||||
KVM_S390_INT_EXTERNAL_CALL - sigp external call; parameters in .extcall
|
||||
KVM_S390_MCHK - machine check interrupt; parameters in .mchk
|
||||
|
||||
|
||||
Note that the vcpu ioctl is asynchronous to vcpu execution.
|
||||
|
||||
|
||||
5. The kvm_run structure
|
||||
------------------------
|
||||
|
||||
|
Reference in New Issue
Block a user