Re: [PATCH 02/12] KVM: s390: define GISA format-0 data structure

David Hildenbrand
2018-01-16T20:25:12Z

> +struct kvm_s390_gisa {
> + u32 next_alert;
> + u8 ipm;
> + u8 reserved01;
> + u8:6;
> + u8 g:1;
> + u8 c:1;
> + u8 iam;
> + u8 reserved02[4];
> + u32 airq_count;
> +};
> +
> /*
> - * sie_page2 has to be allocated as DMA because fac_list and crycb need
> - * 31bit addresses in the sie control block.
> + * sie_page2 has to be allocated as DMA because fac_list, crycb and
> + * gisa need 31bit addresses in the sie control block.
> */
> struct sie_page2 {
> __u64 fac_list[S390_ARCH_FAC_LIST_SIZE_U64]; /* 0x0000 */
> struct kvm_s390_crypto_cb crycb; /* 0x0800 */
> - u8 reserved900[0x1000 - 0x900]; /* 0x0900 */
> + struct kvm_s390_gisa gisa __aligned(sizeof(struct kvm_s390_gisa)); /* 0x0900 */

can we instead specify sie_page2 as packed if really needed? (I can see
that we have a BUILD_BUG_ON below, which is nice)

(alignment within well defined data structures looks strange)

> + u8 reserved910[0x1000 - 0x910]; /* 0x0910 */
> };
>
> struct kvm_s390_vsie {
> @@ -757,6 +772,7 @@ struct kvm_arch{
> struct kvm_s390_migration_state *migration_state;
> /* subset of available cpu features enabled by user space */
> DECLARE_BITMAP(cpu_feat, KVM_S390_VM_CPU_FEAT_NR_BITS);
> + struct kvm_s390_gisa *gisa;

What's this little fellow doing in this patch? :)

--

Thanks,

David / dhildenb