diff options
-rw-r--r-- | arch/s390/kvm/gaccess.c | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/arch/s390/kvm/gaccess.c b/arch/s390/kvm/gaccess.c index d55c829a5944..ddbffb715b40 100644 --- a/arch/s390/kvm/gaccess.c +++ b/arch/s390/kvm/gaccess.c | |||
@@ -168,8 +168,7 @@ union page_table_entry { | |||
168 | unsigned long z : 1; /* Zero Bit */ | 168 | unsigned long z : 1; /* Zero Bit */ |
169 | unsigned long i : 1; /* Page-Invalid Bit */ | 169 | unsigned long i : 1; /* Page-Invalid Bit */ |
170 | unsigned long p : 1; /* DAT-Protection Bit */ | 170 | unsigned long p : 1; /* DAT-Protection Bit */ |
171 | unsigned long co : 1; /* Change-Recording Override */ | 171 | unsigned long : 9; |
172 | unsigned long : 8; | ||
173 | }; | 172 | }; |
174 | }; | 173 | }; |
175 | 174 | ||
@@ -745,8 +744,6 @@ static unsigned long guest_translate(struct kvm_vcpu *vcpu, unsigned long gva, | |||
745 | return PGM_PAGE_TRANSLATION; | 744 | return PGM_PAGE_TRANSLATION; |
746 | if (pte.z) | 745 | if (pte.z) |
747 | return PGM_TRANSLATION_SPEC; | 746 | return PGM_TRANSLATION_SPEC; |
748 | if (pte.co && !edat1) | ||
749 | return PGM_TRANSLATION_SPEC; | ||
750 | dat_protection |= pte.p; | 747 | dat_protection |= pte.p; |
751 | raddr.pfra = pte.pfra; | 748 | raddr.pfra = pte.pfra; |
752 | real_address: | 749 | real_address: |
@@ -1182,7 +1179,7 @@ int kvm_s390_shadow_fault(struct kvm_vcpu *vcpu, struct gmap *sg, | |||
1182 | rc = gmap_read_table(sg->parent, pgt + vaddr.px * 8, &pte.val); | 1179 | rc = gmap_read_table(sg->parent, pgt + vaddr.px * 8, &pte.val); |
1183 | if (!rc && pte.i) | 1180 | if (!rc && pte.i) |
1184 | rc = PGM_PAGE_TRANSLATION; | 1181 | rc = PGM_PAGE_TRANSLATION; |
1185 | if (!rc && (pte.z || (pte.co && sg->edat_level < 1))) | 1182 | if (!rc && pte.z) |
1186 | rc = PGM_TRANSLATION_SPEC; | 1183 | rc = PGM_TRANSLATION_SPEC; |
1187 | shadow_page: | 1184 | shadow_page: |
1188 | pte.p |= dat_protection; | 1185 | pte.p |= dat_protection; |