Merge tag 'kvm-4.9-1' of git://git.kernel.org/pub/scm/virt/kvm/kvm
[cascardo/linux.git] / arch / s390 / kvm / kvm-s390.c
index 0a9ce9d..9c7a1ec 100644 (file)
@@ -245,22 +245,33 @@ static void kvm_s390_cpu_feat_init(void)
                     PTFF_QAF);
 
        if (test_facility(17)) { /* MSA */
-               __cpacf_query(CPACF_KMAC, kvm_s390_available_subfunc.kmac);
-               __cpacf_query(CPACF_KMC, kvm_s390_available_subfunc.kmc);
-               __cpacf_query(CPACF_KM, kvm_s390_available_subfunc.km);
-               __cpacf_query(CPACF_KIMD, kvm_s390_available_subfunc.kimd);
-               __cpacf_query(CPACF_KLMD, kvm_s390_available_subfunc.klmd);
+               __cpacf_query(CPACF_KMAC, (cpacf_mask_t *)
+                             kvm_s390_available_subfunc.kmac);
+               __cpacf_query(CPACF_KMC, (cpacf_mask_t *)
+                             kvm_s390_available_subfunc.kmc);
+               __cpacf_query(CPACF_KM, (cpacf_mask_t *)
+                             kvm_s390_available_subfunc.km);
+               __cpacf_query(CPACF_KIMD, (cpacf_mask_t *)
+                             kvm_s390_available_subfunc.kimd);
+               __cpacf_query(CPACF_KLMD, (cpacf_mask_t *)
+                             kvm_s390_available_subfunc.klmd);
        }
        if (test_facility(76)) /* MSA3 */
-               __cpacf_query(CPACF_PCKMO, kvm_s390_available_subfunc.pckmo);
+               __cpacf_query(CPACF_PCKMO, (cpacf_mask_t *)
+                             kvm_s390_available_subfunc.pckmo);
        if (test_facility(77)) { /* MSA4 */
-               __cpacf_query(CPACF_KMCTR, kvm_s390_available_subfunc.kmctr);
-               __cpacf_query(CPACF_KMF, kvm_s390_available_subfunc.kmf);
-               __cpacf_query(CPACF_KMO, kvm_s390_available_subfunc.kmo);
-               __cpacf_query(CPACF_PCC, kvm_s390_available_subfunc.pcc);
+               __cpacf_query(CPACF_KMCTR, (cpacf_mask_t *)
+                             kvm_s390_available_subfunc.kmctr);
+               __cpacf_query(CPACF_KMF, (cpacf_mask_t *)
+                             kvm_s390_available_subfunc.kmf);
+               __cpacf_query(CPACF_KMO, (cpacf_mask_t *)
+                             kvm_s390_available_subfunc.kmo);
+               __cpacf_query(CPACF_PCC, (cpacf_mask_t *)
+                             kvm_s390_available_subfunc.pcc);
        }
        if (test_facility(57)) /* MSA5 */
-               __cpacf_query(CPACF_PPNO, kvm_s390_available_subfunc.ppno);
+               __cpacf_query(CPACF_PPNO, (cpacf_mask_t *)
+                             kvm_s390_available_subfunc.ppno);
 
        if (MACHINE_HAS_ESOP)
                allow_cpu_feat(KVM_S390_VM_CPU_FEAT_ESOP);
@@ -2252,9 +2263,10 @@ int kvm_arch_vcpu_ioctl_set_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu)
                return -EINVAL;
        current->thread.fpu.fpc = fpu->fpc;
        if (MACHINE_HAS_VX)
-               convert_fp_to_vx(current->thread.fpu.vxrs, (freg_t *)fpu->fprs);
+               convert_fp_to_vx((__vector128 *) vcpu->run->s.regs.vrs,
+                                (freg_t *) fpu->fprs);
        else
-               memcpy(current->thread.fpu.fprs, &fpu->fprs, sizeof(fpu->fprs));
+               memcpy(vcpu->run->s.regs.fprs, &fpu->fprs, sizeof(fpu->fprs));
        return 0;
 }
 
@@ -2263,9 +2275,10 @@ int kvm_arch_vcpu_ioctl_get_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu)
        /* make sure we have the latest values */
        save_fpu_regs();
        if (MACHINE_HAS_VX)
-               convert_vx_to_fp((freg_t *)fpu->fprs, current->thread.fpu.vxrs);
+               convert_vx_to_fp((freg_t *) fpu->fprs,
+                                (__vector128 *) vcpu->run->s.regs.vrs);
        else
-               memcpy(fpu->fprs, current->thread.fpu.fprs, sizeof(fpu->fprs));
+               memcpy(fpu->fprs, vcpu->run->s.regs.fprs, sizeof(fpu->fprs));
        fpu->fpc = current->thread.fpu.fpc;
        return 0;
 }