]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
KVM: s390: gaccess: convert get_vcpu_asce()
authorDavid Hildenbrand <dahi@linux.vnet.ibm.com>
Tue, 31 May 2016 18:21:03 +0000 (20:21 +0200)
committerChristian Borntraeger <borntraeger@de.ibm.com>
Fri, 10 Jun 2016 10:07:16 +0000 (12:07 +0200)
Let's use our new function for preparing translation exceptions.

Signed-off-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
arch/s390/kvm/gaccess.c

index ec6c91e85dbe923b1bc79fe1f9a53d96bc622ef3..8e245e764c210ad908dfb33270414b70186c6692 100644 (file)
@@ -543,13 +543,6 @@ static int get_vcpu_asce(struct kvm_vcpu *vcpu, union asce *asce,
 {
        int rc;
        struct psw_bits psw = psw_bits(vcpu->arch.sie_block->gpsw);
-       struct kvm_s390_pgm_info *pgm = &vcpu->arch.pgm;
-       struct trans_exc_code_bits *tec_bits;
-
-       memset(pgm, 0, sizeof(*pgm));
-       tec_bits = (struct trans_exc_code_bits *)&pgm->trans_exc_code;
-       tec_bits->fsi = mode == GACC_STORE ? FSI_STORE : FSI_FETCH;
-       tec_bits->as = psw.as;
 
        if (!psw.t) {
                asce->val = 0;
@@ -572,22 +565,8 @@ static int get_vcpu_asce(struct kvm_vcpu *vcpu, union asce *asce,
                return 0;
        case PSW_AS_ACCREG:
                rc = ar_translation(vcpu, asce, ar, mode);
-               switch (rc) {
-               case PGM_ALEN_TRANSLATION:
-               case PGM_ALE_SEQUENCE:
-               case PGM_ASTE_VALIDITY:
-               case PGM_ASTE_SEQUENCE:
-               case PGM_EXTENDED_AUTHORITY:
-                       vcpu->arch.pgm.exc_access_id = ar;
-                       break;
-               case PGM_PROTECTION:
-                       tec_bits->addr = ga >> PAGE_SHIFT;
-                       tec_bits->b60 = 1;
-                       tec_bits->b61 = 1;
-                       break;
-               }
                if (rc > 0)
-                       pgm->code = rc;
+                       return trans_exc(vcpu, rc, ga, ar, mode, PROT_TYPE_ALC);
                return rc;
        }
        return 0;