summaryrefslogtreecommitdiffstats
path: root/arch/s390/include/asm
diff options
context:
space:
mode:
authorMichael Mueller <mimu@linux.vnet.ibm.com>2015-02-02 15:49:35 +0100
committerChristian Borntraeger <borntraeger@de.ibm.com>2015-02-09 12:44:13 +0100
commit658b6eda2042c0fe0e3f8acd7ffd11fc6f280119 (patch)
tree51849b96f3a5b295af5d943ad02659fab7caa714 /arch/s390/include/asm
parent9d8d578605b4fca37bd2230bbacb3ad0ee48e7e4 (diff)
downloadop-kernel-dev-658b6eda2042c0fe0e3f8acd7ffd11fc6f280119.zip
op-kernel-dev-658b6eda2042c0fe0e3f8acd7ffd11fc6f280119.tar.gz
KVM: s390: add cpu model support
This patch enables cpu model support in kvm/s390 via the vm attribute interface. During KVM initialization, the host properties cpuid, IBC value and the facility list are stored in the architecture specific cpu model structure. During vcpu setup, these properties are taken to initialize the related SIE state. This mechanism allows to adjust the properties from user space and thus to implement different selectable cpu models. This patch uses the IBC functionality to block instructions that have not been implemented at the requested CPU type and GA level compared to the full host capability. Userspace has to initialize the cpu model before vcpu creation. A cpu model change of running vcpus is not possible. 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>
Diffstat (limited to 'arch/s390/include/asm')
-rw-r--r--arch/s390/include/asm/kvm_host.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/s390/include/asm/kvm_host.h b/arch/s390/include/asm/kvm_host.h
index 79dc3b0..d84559e 100644
--- a/arch/s390/include/asm/kvm_host.h
+++ b/arch/s390/include/asm/kvm_host.h
@@ -89,7 +89,8 @@ struct kvm_s390_sie_block {
atomic_t cpuflags; /* 0x0000 */
__u32 : 1; /* 0x0004 */
__u32 prefix : 18;
- __u32 : 13;
+ __u32 : 1;
+ __u32 ibc : 12;
__u8 reserved08[4]; /* 0x0008 */
#define PROG_IN_SIE (1<<0)
__u32 prog0c; /* 0x000c */
@@ -524,6 +525,7 @@ struct s390_model_fac {
struct kvm_s390_cpu_model {
struct s390_model_fac *fac;
struct cpuid cpu_id;
+ unsigned short ibc;
};
struct kvm_s390_crypto {
OpenPOWER on IntegriCloud