On 17.04.19 17:28, Christian Borntraeger wrote: > Instead of adding a new machine option to disable/enable the keywrapping > options of pckmo (like for AES and DEA) we can now use the CPU model to > decide. > > Signed-off-by: Christian Borntraeger <borntraeger@xxxxxxxxxx> > Reviewed-by: Collin Walling <walling@xxxxxxxxxxxxx> > --- > arch/s390/include/asm/kvm_host.h | 1 + > arch/s390/kvm/kvm-s390.c | 4 ++++ > 2 files changed, 5 insertions(+) > > diff --git a/arch/s390/include/asm/kvm_host.h b/arch/s390/include/asm/kvm_host.h > index c47e22bba87f..e224246ff93c 100644 > --- a/arch/s390/include/asm/kvm_host.h > +++ b/arch/s390/include/asm/kvm_host.h > @@ -278,6 +278,7 @@ struct kvm_s390_sie_block { > #define ECD_HOSTREGMGMT 0x20000000 > #define ECD_MEF 0x08000000 > #define ECD_ETOKENF 0x02000000 > +#define ECD_ECC 0x00200000 > __u32 ecd; /* 0x01c8 */ > __u8 reserved1cc[18]; /* 0x01cc */ > __u64 pp; /* 0x01de */ > diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c > index 0dad61ccde3d..ff2444d935fd 100644 > --- a/arch/s390/kvm/kvm-s390.c > +++ b/arch/s390/kvm/kvm-s390.c > @@ -2933,6 +2933,10 @@ int kvm_arch_vcpu_setup(struct kvm_vcpu *vcpu) > VCPU_EVENT(vcpu, 3, "AIV gisa format-%u enabled for cpu %03u", > vcpu->arch.sie_block->gd & 0x3, vcpu->vcpu_id); > } > + /* if any of 32,33,34,40,41 is active, enable pckmo for ecc */ > + if ((vcpu->kvm->arch.model.subfuncs.pckmo[4] & 0xe0) || > + (vcpu->kvm->arch.model.subfuncs.pckmo[5] & 0xc0)) > + vcpu->arch.sie_block->ecd |= ECD_ECC; > vcpu->arch.sie_block->sdnxo = ((unsigned long) &vcpu->run->s.regs.sdnx) > | SDNXC; > vcpu->arch.sie_block->riccbd = (unsigned long) &vcpu->run->s.regs.riccb; > Just noting here that user space can set pckmo and friends even though HW does not support it (if I remember correctly), resulting in ECD_ECC being able to be set from user space although not supported. Is that sane? Shouldn't we somehow check if the HW actually supports it? (features should only be used if the indication is on, not because it "might" work) -- Thanks, David / dhildenb