On 06.09.2013, at 14:19, Jens Freimann wrote: > 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@xxxxxxxxxxxxxxxxxx> > Reviewed-by: Cornelia Huck <cornelia.huck@xxxxxxxxxx> > --- > arch/s390/include/asm/kvm_host.h | 34 +--------------------- > include/uapi/linux/kvm.h | 63 ++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 64 insertions(+), 33 deletions(-) > > diff --git a/arch/s390/include/asm/kvm_host.h b/arch/s390/include/asm/kvm_host.h > index e87ecaa..adb05c5 100644 > --- a/arch/s390/include/asm/kvm_host.h > +++ b/arch/s390/include/asm/kvm_host.h > @@ -16,6 +16,7 @@ > #include <linux/hrtimer.h> > #include <linux/interrupt.h> > #include <linux/kvm_host.h> > +#include <linux/kvm.h> > #include <asm/debug.h> > #include <asm/cpu.h> > > @@ -162,18 +163,6 @@ struct kvm_vcpu_stat { > u32 diagnose_9c; > }; > > -struct kvm_s390_io_info { > - __u16 subchannel_id; /* 0x0b8 */ > - __u16 subchannel_nr; /* 0x0ba */ > - __u32 io_int_parm; /* 0x0bc */ > - __u32 io_int_word; /* 0x0c0 */ > -}; > - > -struct kvm_s390_ext_info { > - __u32 ext_params; > - __u64 ext_params2; > -}; > - > #define PGM_OPERATION 0x01 > #define PGM_PRIVILEGED_OP 0x02 > #define PGM_EXECUTE 0x03 > @@ -182,27 +171,6 @@ struct kvm_s390_ext_info { > #define PGM_SPECIFICATION 0x06 > #define PGM_DATA 0x07 > > -struct kvm_s390_pgm_info { > - __u16 code; > -}; > - > -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; > -}; > - > struct kvm_s390_interrupt_info { > struct list_head list; > u64 type; > diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h > index 99c2533..eeb08a1 100644 > --- a/include/uapi/linux/kvm.h > +++ b/include/uapi/linux/kvm.h > @@ -434,6 +434,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]; > + }; Avi always complained about anonymous structs :). Apparently they're a gcc only extension. Alex -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html