]> git.openpandora.org Git - pandora-kernel.git/commitdiff
KVM: s390: use facilities and cpu_id per KVM
authorMichael Mueller <mimu@linux.vnet.ibm.com>
Mon, 2 Feb 2015 14:42:51 +0000 (15:42 +0100)
committerChristian Borntraeger <borntraeger@de.ibm.com>
Mon, 9 Feb 2015 11:44:12 +0000 (12:44 +0100)
The patch introduces facilities and cpu_ids per virtual machine.
Different virtual machines may want to expose different facilities and
cpu ids to the guest, so let's make them per-vm instead of global.

Signed-off-by: Michael Mueller <mimu@linux.vnet.ibm.com>
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Reviewed-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
arch/s390/include/asm/kvm_host.h
arch/s390/kvm/gaccess.c
arch/s390/kvm/kvm-s390.c
arch/s390/kvm/kvm-s390.h
arch/s390/kvm/priv.c

index 77ae01444e982fa69ad872422744eae09fe91152..79dc3b0aa65fb9aa6bd0ca86f9dc052ad784940b 100644 (file)
@@ -506,6 +506,26 @@ struct s390_io_adapter {
 #define MAX_S390_IO_ADAPTERS ((MAX_ISC + 1) * 8)
 #define MAX_S390_ADAPTER_MAPS 256
 
+/* maximum size of facilities and facility mask is 2k bytes */
+#define S390_ARCH_FAC_LIST_SIZE_BYTE (1<<11)
+#define S390_ARCH_FAC_LIST_SIZE_U64 \
+       (S390_ARCH_FAC_LIST_SIZE_BYTE / sizeof(u64))
+#define S390_ARCH_FAC_MASK_SIZE_BYTE S390_ARCH_FAC_LIST_SIZE_BYTE
+#define S390_ARCH_FAC_MASK_SIZE_U64 \
+       (S390_ARCH_FAC_MASK_SIZE_BYTE / sizeof(u64))
+
+struct s390_model_fac {
+       /* facilities used in SIE context */
+       __u64 sie[S390_ARCH_FAC_LIST_SIZE_U64];
+       /* subset enabled by kvm */
+       __u64 kvm[S390_ARCH_FAC_LIST_SIZE_U64];
+};
+
+struct kvm_s390_cpu_model {
+       struct s390_model_fac *fac;
+       struct cpuid cpu_id;
+};
+
 struct kvm_s390_crypto {
        struct kvm_s390_crypto_cb *crycb;
        __u32 crycbd;
@@ -536,6 +556,7 @@ struct kvm_arch{
        int ipte_lock_count;
        struct mutex ipte_mutex;
        spinlock_t start_stop_lock;
+       struct kvm_s390_cpu_model model;
        struct kvm_s390_crypto crypto;
        u64 epoch;
 };
Simple merge
Simple merge
Simple merge
Simple merge