Message ID | 20200220125638.7241-16-frankja@linux.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | s390x: Protected Virtualization support | expand |
On 20.02.20 13:56, Janosch Frank wrote: > From: Christian Borntraeger <borntraeger@de.ibm.com> > Needs some love. What does the facility unlock/allow. Why can we enable it now. What's in place, what's missing. > Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com> > --- > target/s390x/gen-features.c | 1 + > target/s390x/kvm.c | 7 +++++++ > 2 files changed, 8 insertions(+) > > diff --git a/target/s390x/gen-features.c b/target/s390x/gen-features.c > index 6278845b12..8ddeebc544 100644 > --- a/target/s390x/gen-features.c > +++ b/target/s390x/gen-features.c > @@ -562,6 +562,7 @@ static uint16_t full_GEN15_GA1[] = { > S390_FEAT_GROUP_MSA_EXT_9, > S390_FEAT_GROUP_MSA_EXT_9_PCKMO, > S390_FEAT_ETOKEN, > + S390_FEAT_UNPACK, > }; > > /* Default features (in order of release) > diff --git a/target/s390x/kvm.c b/target/s390x/kvm.c > index 31dd49729b..5b6a7ca466 100644 > --- a/target/s390x/kvm.c > +++ b/target/s390x/kvm.c > @@ -154,6 +154,7 @@ static int cap_ri; > static int cap_gs; > static int cap_hpage_1m; > static int cap_vcpu_resets; > +static int cap_protected; > > static int active_cmma; > > @@ -346,6 +347,7 @@ int kvm_arch_init(MachineState *ms, KVMState *s) > cap_mem_op = kvm_check_extension(s, KVM_CAP_S390_MEM_OP); > cap_s390_irq = kvm_check_extension(s, KVM_CAP_S390_INJECT_IRQ); > cap_vcpu_resets = kvm_check_extension(s, KVM_CAP_S390_VCPU_RESETS); > + cap_protected = kvm_check_extension(s, KVM_CAP_S390_PROTECTED); > > if (!kvm_check_extension(s, KVM_CAP_S390_GMAP) > || !kvm_check_extension(s, KVM_CAP_S390_COW)) { > @@ -2394,6 +2396,11 @@ void kvm_s390_get_host_cpu_model(S390CPUModel *model, Error **errp) > clear_bit(S390_FEAT_BPB, model->features); > } > > + /* we do have the IPL enhancements */ > + if (cap_protected) { > + set_bit(S390_FEAT_UNPACK, model->features); > + } > + > /* We emulate a zPCI bus and AEN, therefore we don't need HW support */ > set_bit(S390_FEAT_ZPCI, model->features); > set_bit(S390_FEAT_ADAPTER_EVENT_NOTIFICATION, model->features); > In general, LGTM.
diff --git a/target/s390x/gen-features.c b/target/s390x/gen-features.c index 6278845b12..8ddeebc544 100644 --- a/target/s390x/gen-features.c +++ b/target/s390x/gen-features.c @@ -562,6 +562,7 @@ static uint16_t full_GEN15_GA1[] = { S390_FEAT_GROUP_MSA_EXT_9, S390_FEAT_GROUP_MSA_EXT_9_PCKMO, S390_FEAT_ETOKEN, + S390_FEAT_UNPACK, }; /* Default features (in order of release) diff --git a/target/s390x/kvm.c b/target/s390x/kvm.c index 31dd49729b..5b6a7ca466 100644 --- a/target/s390x/kvm.c +++ b/target/s390x/kvm.c @@ -154,6 +154,7 @@ static int cap_ri; static int cap_gs; static int cap_hpage_1m; static int cap_vcpu_resets; +static int cap_protected; static int active_cmma; @@ -346,6 +347,7 @@ int kvm_arch_init(MachineState *ms, KVMState *s) cap_mem_op = kvm_check_extension(s, KVM_CAP_S390_MEM_OP); cap_s390_irq = kvm_check_extension(s, KVM_CAP_S390_INJECT_IRQ); cap_vcpu_resets = kvm_check_extension(s, KVM_CAP_S390_VCPU_RESETS); + cap_protected = kvm_check_extension(s, KVM_CAP_S390_PROTECTED); if (!kvm_check_extension(s, KVM_CAP_S390_GMAP) || !kvm_check_extension(s, KVM_CAP_S390_COW)) { @@ -2394,6 +2396,11 @@ void kvm_s390_get_host_cpu_model(S390CPUModel *model, Error **errp) clear_bit(S390_FEAT_BPB, model->features); } + /* we do have the IPL enhancements */ + if (cap_protected) { + set_bit(S390_FEAT_UNPACK, model->features); + } + /* We emulate a zPCI bus and AEN, therefore we don't need HW support */ set_bit(S390_FEAT_ZPCI, model->features); set_bit(S390_FEAT_ADAPTER_EVENT_NOTIFICATION, model->features);