mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 02:32:09 -04:00
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 <[email protected]> Signed-off-by: Christian Borntraeger <[email protected]> Acked-by: Cornelia Huck <[email protected]>
This commit is contained in:
parent
b4aec92567
commit
47b43c52ee
4 changed files with 70 additions and 1 deletions
|
|
@ -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
|
||||
------------------------
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue