Loading Documentation/virtual/kvm/devices/vm.txt +2 −1 Original line number Diff line number Diff line Loading @@ -140,7 +140,8 @@ struct kvm_s390_vm_cpu_subfunc { u8 kmo[16]; # valid with Message-Security-Assist-Extension 4 u8 pcc[16]; # valid with Message-Security-Assist-Extension 4 u8 ppno[16]; # valid with Message-Security-Assist-Extension 5 u8 reserved[1824]; # reserved for future instructions u8 kma[16]; # valid with Message-Security-Assist-Extension 8 u8 reserved[1808]; # reserved for future instructions }; Parameters: address of a buffer to load the subfunction blocks from. Loading arch/s390/include/asm/cpacf.h +3 −2 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ #define CPACF_PCC 0xb92c /* MSA4 */ #define CPACF_KMCTR 0xb92d /* MSA4 */ #define CPACF_PPNO 0xb93c /* MSA5 */ #define CPACF_KMA 0xb929 /* MSA8 */ /* * En/decryption modifier bits Loading Loading @@ -149,8 +150,8 @@ static inline void __cpacf_query(unsigned int opcode, cpacf_mask_t *mask) asm volatile( " spm 0\n" /* pckmo doesn't change the cc */ /* Parameter registers are ignored, but may not be 0 */ "0: .insn rrf,%[opc] << 16,2,2,2,0\n" /* Parameter regs are ignored, but must be nonzero and unique */ "0: .insn rrf,%[opc] << 16,2,4,6,0\n" " brc 1,0b\n" /* handle partial completion */ : "=m" (*mask) : [fc] "d" (r0), [pba] "a" (r1), [opc] "i" (opcode) Loading arch/s390/include/uapi/asm/kvm.h +2 −1 Original line number Diff line number Diff line Loading @@ -141,7 +141,8 @@ struct kvm_s390_vm_cpu_subfunc { __u8 kmo[16]; /* with MSA4 */ __u8 pcc[16]; /* with MSA4 */ __u8 ppno[16]; /* with MSA5 */ __u8 reserved[1824]; __u8 kma[16]; /* with MSA8 */ __u8 reserved[1808]; }; /* kvm attributes for crypto */ Loading arch/s390/kvm/kvm-s390.c +4 −0 Original line number Diff line number Diff line Loading @@ -276,6 +276,10 @@ static void kvm_s390_cpu_feat_init(void) __cpacf_query(CPACF_PPNO, (cpacf_mask_t *) kvm_s390_available_subfunc.ppno); if (test_facility(146)) /* MSA8 */ __cpacf_query(CPACF_KMA, (cpacf_mask_t *) kvm_s390_available_subfunc.kma); if (MACHINE_HAS_ESOP) allow_cpu_feat(KVM_S390_VM_CPU_FEAT_ESOP); /* Loading arch/s390/tools/gen_facilities.c +1 −0 Original line number Diff line number Diff line Loading @@ -82,6 +82,7 @@ static struct facility_def facility_defs[] = { 78, /* enhanced-DAT 2 */ 130, /* instruction-execution-protection */ 131, /* enhanced-SOP 2 and side-effect */ 146, /* msa extension 8 */ -1 /* END */ } }, Loading Loading
Documentation/virtual/kvm/devices/vm.txt +2 −1 Original line number Diff line number Diff line Loading @@ -140,7 +140,8 @@ struct kvm_s390_vm_cpu_subfunc { u8 kmo[16]; # valid with Message-Security-Assist-Extension 4 u8 pcc[16]; # valid with Message-Security-Assist-Extension 4 u8 ppno[16]; # valid with Message-Security-Assist-Extension 5 u8 reserved[1824]; # reserved for future instructions u8 kma[16]; # valid with Message-Security-Assist-Extension 8 u8 reserved[1808]; # reserved for future instructions }; Parameters: address of a buffer to load the subfunction blocks from. Loading
arch/s390/include/asm/cpacf.h +3 −2 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ #define CPACF_PCC 0xb92c /* MSA4 */ #define CPACF_KMCTR 0xb92d /* MSA4 */ #define CPACF_PPNO 0xb93c /* MSA5 */ #define CPACF_KMA 0xb929 /* MSA8 */ /* * En/decryption modifier bits Loading Loading @@ -149,8 +150,8 @@ static inline void __cpacf_query(unsigned int opcode, cpacf_mask_t *mask) asm volatile( " spm 0\n" /* pckmo doesn't change the cc */ /* Parameter registers are ignored, but may not be 0 */ "0: .insn rrf,%[opc] << 16,2,2,2,0\n" /* Parameter regs are ignored, but must be nonzero and unique */ "0: .insn rrf,%[opc] << 16,2,4,6,0\n" " brc 1,0b\n" /* handle partial completion */ : "=m" (*mask) : [fc] "d" (r0), [pba] "a" (r1), [opc] "i" (opcode) Loading
arch/s390/include/uapi/asm/kvm.h +2 −1 Original line number Diff line number Diff line Loading @@ -141,7 +141,8 @@ struct kvm_s390_vm_cpu_subfunc { __u8 kmo[16]; /* with MSA4 */ __u8 pcc[16]; /* with MSA4 */ __u8 ppno[16]; /* with MSA5 */ __u8 reserved[1824]; __u8 kma[16]; /* with MSA8 */ __u8 reserved[1808]; }; /* kvm attributes for crypto */ Loading
arch/s390/kvm/kvm-s390.c +4 −0 Original line number Diff line number Diff line Loading @@ -276,6 +276,10 @@ static void kvm_s390_cpu_feat_init(void) __cpacf_query(CPACF_PPNO, (cpacf_mask_t *) kvm_s390_available_subfunc.ppno); if (test_facility(146)) /* MSA8 */ __cpacf_query(CPACF_KMA, (cpacf_mask_t *) kvm_s390_available_subfunc.kma); if (MACHINE_HAS_ESOP) allow_cpu_feat(KVM_S390_VM_CPU_FEAT_ESOP); /* Loading
arch/s390/tools/gen_facilities.c +1 −0 Original line number Diff line number Diff line Loading @@ -82,6 +82,7 @@ static struct facility_def facility_defs[] = { 78, /* enhanced-DAT 2 */ 130, /* instruction-execution-protection */ 131, /* enhanced-SOP 2 and side-effect */ 146, /* msa extension 8 */ -1 /* END */ } }, Loading