History

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

Jens Freimann committed 13 years ago

Commit 81aa8ef1 parent c760f5e2 files · +64 −33Browse files

Showing the changes to include/uapi/linux (1 of 2 files). Show all

Unified · Split

include/uapi/linux/kvm.h+63−0
@@ -434,6 +434,69 @@ struct kvm_s390_interrupt { · 433 unmodified lines
434434 __u64 parm64;
435435 };
436436
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+
437500 /* for KVM_SET_GUEST_DEBUG */
438501
439502 #define KVM_GUESTDBG_ENABLE 0x00000001