diff options
author | Jens Freimann <jfrei@linux.vnet.ibm.com> | 2013-10-07 10:13:44 -0400 |
---|---|---|
committer | Christian Borntraeger <borntraeger@de.ibm.com> | 2014-01-29 16:00:41 -0500 |
commit | 81aa8efe0190cf5bf7eaafb57341cd7d0aea96cd (patch) | |
tree | 47bf8d718e963777541893806c407e097c00ebac /include/uapi/linux/kvm.h | |
parent | c760f5e29d92adf5184589f1e616a4be146fb57c (diff) |
KVM: s390: add and extend interrupt information data structs
With the currently available struct kvm_s390_interrupt it is not possible to
inject every kind of interrupt as defined in the z/Architecture. Add
additional interruption parameters to the structures and move it to kvm.h
Signed-off-by: Jens Freimann <jfrei@linux.vnet.ibm.com>
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Diffstat (limited to 'include/uapi/linux/kvm.h')
-rw-r--r-- | include/uapi/linux/kvm.h | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h index 932d7f2637d6..86faf47ae494 100644 --- a/include/uapi/linux/kvm.h +++ b/include/uapi/linux/kvm.h | |||
@@ -434,6 +434,69 @@ struct kvm_s390_interrupt { | |||
434 | __u64 parm64; | 434 | __u64 parm64; |
435 | }; | 435 | }; |
436 | 436 | ||
437 | struct kvm_s390_io_info { | ||
438 | __u16 subchannel_id; | ||
439 | __u16 subchannel_nr; | ||
440 | __u32 io_int_parm; | ||
441 | __u32 io_int_word; | ||
442 | }; | ||
443 | |||
444 | struct kvm_s390_ext_info { | ||
445 | __u32 ext_params; | ||
446 | __u32 pad; | ||
447 | __u64 ext_params2; | ||
448 | }; | ||
449 | |||
450 | struct kvm_s390_pgm_info { | ||
451 | __u64 trans_exc_code; | ||
452 | __u64 mon_code; | ||
453 | __u64 per_address; | ||
454 | __u32 data_exc_code; | ||
455 | __u16 code; | ||
456 | __u16 mon_class_nr; | ||
457 | __u8 per_code; | ||
458 | __u8 per_atmid; | ||
459 | __u8 exc_access_id; | ||
460 | __u8 per_access_id; | ||
461 | __u8 op_access_id; | ||
462 | __u8 pad[3]; | ||
463 | }; | ||
464 | |||
465 | struct kvm_s390_prefix_info { | ||
466 | __u32 address; | ||
467 | }; | ||
468 | |||
469 | struct kvm_s390_extcall_info { | ||
470 | __u16 code; | ||
471 | }; | ||
472 | |||
473 | struct kvm_s390_emerg_info { | ||
474 | __u16 code; | ||
475 | }; | ||
476 | |||
477 | struct kvm_s390_mchk_info { | ||
478 | __u64 cr14; | ||
479 | __u64 mcic; | ||
480 | __u64 failing_storage_address; | ||
481 | __u32 ext_damage_code; | ||
482 | __u32 pad; | ||
483 | __u8 fixed_logout[16]; | ||
484 | }; | ||
485 | |||
486 | struct kvm_s390_irq { | ||
487 | __u64 type; | ||
488 | union { | ||
489 | struct kvm_s390_io_info io; | ||
490 | struct kvm_s390_ext_info ext; | ||
491 | struct kvm_s390_pgm_info pgm; | ||
492 | struct kvm_s390_emerg_info emerg; | ||
493 | struct kvm_s390_extcall_info extcall; | ||
494 | struct kvm_s390_prefix_info prefix; | ||
495 | struct kvm_s390_mchk_info mchk; | ||
496 | char reserved[64]; | ||
497 | } u; | ||
498 | }; | ||
499 | |||
437 | /* for KVM_SET_GUEST_DEBUG */ | 500 | /* for KVM_SET_GUEST_DEBUG */ |
438 | 501 | ||
439 | #define KVM_GUESTDBG_ENABLE 0x00000001 | 502 | #define KVM_GUESTDBG_ENABLE 0x00000001 |