aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kvm
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc/kvm')
-rw-r--r--arch/powerpc/kvm/book3s.c14
-rw-r--r--arch/powerpc/kvm/book3s_emulate.c6
-rw-r--r--arch/powerpc/kvm/book3s_paired_singles.c2
-rw-r--r--arch/powerpc/kvm/booke.c2
-rw-r--r--arch/powerpc/kvm/booke_emulate.c4
5 files changed, 14 insertions, 14 deletions
diff --git a/arch/powerpc/kvm/book3s.c b/arch/powerpc/kvm/book3s.c
index eb401b6d4d8c..4d46f8b13cc6 100644
--- a/arch/powerpc/kvm/book3s.c
+++ b/arch/powerpc/kvm/book3s.c
@@ -594,14 +594,14 @@ int kvmppc_handle_pagefault(struct kvm_run *run, struct kvm_vcpu *vcpu,
594 594
595 if (page_found == -ENOENT) { 595 if (page_found == -ENOENT) {
596 /* Page not found in guest PTE entries */ 596 /* Page not found in guest PTE entries */
597 vcpu->arch.dear = kvmppc_get_fault_dar(vcpu); 597 vcpu->arch.shared->dar = kvmppc_get_fault_dar(vcpu);
598 vcpu->arch.shared->dsisr = to_svcpu(vcpu)->fault_dsisr; 598 vcpu->arch.shared->dsisr = to_svcpu(vcpu)->fault_dsisr;
599 vcpu->arch.shared->msr |= 599 vcpu->arch.shared->msr |=
600 (to_svcpu(vcpu)->shadow_srr1 & 0x00000000f8000000ULL); 600 (to_svcpu(vcpu)->shadow_srr1 & 0x00000000f8000000ULL);
601 kvmppc_book3s_queue_irqprio(vcpu, vec); 601 kvmppc_book3s_queue_irqprio(vcpu, vec);
602 } else if (page_found == -EPERM) { 602 } else if (page_found == -EPERM) {
603 /* Storage protection */ 603 /* Storage protection */
604 vcpu->arch.dear = kvmppc_get_fault_dar(vcpu); 604 vcpu->arch.shared->dar = kvmppc_get_fault_dar(vcpu);
605 vcpu->arch.shared->dsisr = 605 vcpu->arch.shared->dsisr =
606 to_svcpu(vcpu)->fault_dsisr & ~DSISR_NOHPTE; 606 to_svcpu(vcpu)->fault_dsisr & ~DSISR_NOHPTE;
607 vcpu->arch.shared->dsisr |= DSISR_PROTFAULT; 607 vcpu->arch.shared->dsisr |= DSISR_PROTFAULT;
@@ -610,7 +610,7 @@ int kvmppc_handle_pagefault(struct kvm_run *run, struct kvm_vcpu *vcpu,
610 kvmppc_book3s_queue_irqprio(vcpu, vec); 610 kvmppc_book3s_queue_irqprio(vcpu, vec);
611 } else if (page_found == -EINVAL) { 611 } else if (page_found == -EINVAL) {
612 /* Page not found in guest SLB */ 612 /* Page not found in guest SLB */
613 vcpu->arch.dear = kvmppc_get_fault_dar(vcpu); 613 vcpu->arch.shared->dar = kvmppc_get_fault_dar(vcpu);
614 kvmppc_book3s_queue_irqprio(vcpu, vec + 0x80); 614 kvmppc_book3s_queue_irqprio(vcpu, vec + 0x80);
615 } else if (!is_mmio && 615 } else if (!is_mmio &&
616 kvmppc_visible_gfn(vcpu, pte.raddr >> PAGE_SHIFT)) { 616 kvmppc_visible_gfn(vcpu, pte.raddr >> PAGE_SHIFT)) {
@@ -867,17 +867,17 @@ int kvmppc_handle_exit(struct kvm_run *run, struct kvm_vcpu *vcpu,
867 if (to_svcpu(vcpu)->fault_dsisr & DSISR_NOHPTE) { 867 if (to_svcpu(vcpu)->fault_dsisr & DSISR_NOHPTE) {
868 r = kvmppc_handle_pagefault(run, vcpu, dar, exit_nr); 868 r = kvmppc_handle_pagefault(run, vcpu, dar, exit_nr);
869 } else { 869 } else {
870 vcpu->arch.dear = dar; 870 vcpu->arch.shared->dar = dar;
871 vcpu->arch.shared->dsisr = to_svcpu(vcpu)->fault_dsisr; 871 vcpu->arch.shared->dsisr = to_svcpu(vcpu)->fault_dsisr;
872 kvmppc_book3s_queue_irqprio(vcpu, exit_nr); 872 kvmppc_book3s_queue_irqprio(vcpu, exit_nr);
873 kvmppc_mmu_pte_flush(vcpu, vcpu->arch.dear, ~0xFFFUL); 873 kvmppc_mmu_pte_flush(vcpu, dar, ~0xFFFUL);
874 r = RESUME_GUEST; 874 r = RESUME_GUEST;
875 } 875 }
876 break; 876 break;
877 } 877 }
878 case BOOK3S_INTERRUPT_DATA_SEGMENT: 878 case BOOK3S_INTERRUPT_DATA_SEGMENT:
879 if (kvmppc_mmu_map_segment(vcpu, kvmppc_get_fault_dar(vcpu)) < 0) { 879 if (kvmppc_mmu_map_segment(vcpu, kvmppc_get_fault_dar(vcpu)) < 0) {
880 vcpu->arch.dear = kvmppc_get_fault_dar(vcpu); 880 vcpu->arch.shared->dar = kvmppc_get_fault_dar(vcpu);
881 kvmppc_book3s_queue_irqprio(vcpu, 881 kvmppc_book3s_queue_irqprio(vcpu,
882 BOOK3S_INTERRUPT_DATA_SEGMENT); 882 BOOK3S_INTERRUPT_DATA_SEGMENT);
883 } 883 }
@@ -997,7 +997,7 @@ program_interrupt:
997 if (kvmppc_read_inst(vcpu) == EMULATE_DONE) { 997 if (kvmppc_read_inst(vcpu) == EMULATE_DONE) {
998 vcpu->arch.shared->dsisr = kvmppc_alignment_dsisr(vcpu, 998 vcpu->arch.shared->dsisr = kvmppc_alignment_dsisr(vcpu,
999 kvmppc_get_last_inst(vcpu)); 999 kvmppc_get_last_inst(vcpu));
1000 vcpu->arch.dear = kvmppc_alignment_dar(vcpu, 1000 vcpu->arch.shared->dar = kvmppc_alignment_dar(vcpu,
1001 kvmppc_get_last_inst(vcpu)); 1001 kvmppc_get_last_inst(vcpu));
1002 kvmppc_book3s_queue_irqprio(vcpu, exit_nr); 1002 kvmppc_book3s_queue_irqprio(vcpu, exit_nr);
1003 } 1003 }
diff --git a/arch/powerpc/kvm/book3s_emulate.c b/arch/powerpc/kvm/book3s_emulate.c
index 9982ff163af0..c1478642f856 100644
--- a/arch/powerpc/kvm/book3s_emulate.c
+++ b/arch/powerpc/kvm/book3s_emulate.c
@@ -212,7 +212,7 @@ int kvmppc_core_emulate_op(struct kvm_run *run, struct kvm_vcpu *vcpu,
212 r = kvmppc_st(vcpu, &addr, 32, zeros, true); 212 r = kvmppc_st(vcpu, &addr, 32, zeros, true);
213 if ((r == -ENOENT) || (r == -EPERM)) { 213 if ((r == -ENOENT) || (r == -EPERM)) {
214 *advance = 0; 214 *advance = 0;
215 vcpu->arch.dear = vaddr; 215 vcpu->arch.shared->dar = vaddr;
216 to_svcpu(vcpu)->fault_dar = vaddr; 216 to_svcpu(vcpu)->fault_dar = vaddr;
217 217
218 dsisr = DSISR_ISSTORE; 218 dsisr = DSISR_ISSTORE;
@@ -330,7 +330,7 @@ int kvmppc_core_emulate_mtspr(struct kvm_vcpu *vcpu, int sprn, int rs)
330 vcpu->arch.shared->dsisr = spr_val; 330 vcpu->arch.shared->dsisr = spr_val;
331 break; 331 break;
332 case SPRN_DAR: 332 case SPRN_DAR:
333 vcpu->arch.dear = spr_val; 333 vcpu->arch.shared->dar = spr_val;
334 break; 334 break;
335 case SPRN_HIOR: 335 case SPRN_HIOR:
336 to_book3s(vcpu)->hior = spr_val; 336 to_book3s(vcpu)->hior = spr_val;
@@ -443,7 +443,7 @@ int kvmppc_core_emulate_mfspr(struct kvm_vcpu *vcpu, int sprn, int rt)
443 kvmppc_set_gpr(vcpu, rt, vcpu->arch.shared->dsisr); 443 kvmppc_set_gpr(vcpu, rt, vcpu->arch.shared->dsisr);
444 break; 444 break;
445 case SPRN_DAR: 445 case SPRN_DAR:
446 kvmppc_set_gpr(vcpu, rt, vcpu->arch.dear); 446 kvmppc_set_gpr(vcpu, rt, vcpu->arch.shared->dar);
447 break; 447 break;
448 case SPRN_HIOR: 448 case SPRN_HIOR:
449 kvmppc_set_gpr(vcpu, rt, to_book3s(vcpu)->hior); 449 kvmppc_set_gpr(vcpu, rt, to_book3s(vcpu)->hior);
diff --git a/arch/powerpc/kvm/book3s_paired_singles.c b/arch/powerpc/kvm/book3s_paired_singles.c
index 749dfbd04738..807576f148ce 100644
--- a/arch/powerpc/kvm/book3s_paired_singles.c
+++ b/arch/powerpc/kvm/book3s_paired_singles.c
@@ -169,7 +169,7 @@ static void kvmppc_inject_pf(struct kvm_vcpu *vcpu, ulong eaddr, bool is_store)
169 169
170 shared->msr = kvmppc_set_field(shared->msr, 33, 36, 0); 170 shared->msr = kvmppc_set_field(shared->msr, 33, 36, 0);
171 shared->msr = kvmppc_set_field(shared->msr, 42, 47, 0); 171 shared->msr = kvmppc_set_field(shared->msr, 42, 47, 0);
172 vcpu->arch.dear = eaddr; 172 shared->dar = eaddr;
173 /* Page Fault */ 173 /* Page Fault */
174 dsisr = kvmppc_set_field(0, 33, 33, 1); 174 dsisr = kvmppc_set_field(0, 33, 33, 1);
175 if (is_store) 175 if (is_store)
diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c
index 4ec9d49a1cb9..4aab6d2ce133 100644
--- a/arch/powerpc/kvm/booke.c
+++ b/arch/powerpc/kvm/booke.c
@@ -195,7 +195,7 @@ static int kvmppc_booke_irqprio_deliver(struct kvm_vcpu *vcpu,
195 if (update_esr == true) 195 if (update_esr == true)
196 vcpu->arch.esr = vcpu->arch.queued_esr; 196 vcpu->arch.esr = vcpu->arch.queued_esr;
197 if (update_dear == true) 197 if (update_dear == true)
198 vcpu->arch.dear = vcpu->arch.queued_dear; 198 vcpu->arch.shared->dar = vcpu->arch.queued_dear;
199 kvmppc_set_msr(vcpu, vcpu->arch.shared->msr & msr_mask); 199 kvmppc_set_msr(vcpu, vcpu->arch.shared->msr & msr_mask);
200 200
201 clear_bit(priority, &vcpu->arch.pending_exceptions); 201 clear_bit(priority, &vcpu->arch.pending_exceptions);
diff --git a/arch/powerpc/kvm/booke_emulate.c b/arch/powerpc/kvm/booke_emulate.c
index b115203ac118..51ef4539ed51 100644
--- a/arch/powerpc/kvm/booke_emulate.c
+++ b/arch/powerpc/kvm/booke_emulate.c
@@ -105,7 +105,7 @@ int kvmppc_booke_emulate_mtspr(struct kvm_vcpu *vcpu, int sprn, int rs)
105 105
106 switch (sprn) { 106 switch (sprn) {
107 case SPRN_DEAR: 107 case SPRN_DEAR:
108 vcpu->arch.dear = spr_val; break; 108 vcpu->arch.shared->dar = spr_val; break;
109 case SPRN_ESR: 109 case SPRN_ESR:
110 vcpu->arch.esr = spr_val; break; 110 vcpu->arch.esr = spr_val; break;
111 case SPRN_DBCR0: 111 case SPRN_DBCR0:
@@ -200,7 +200,7 @@ int kvmppc_booke_emulate_mfspr(struct kvm_vcpu *vcpu, int sprn, int rt)
200 case SPRN_IVPR: 200 case SPRN_IVPR:
201 kvmppc_set_gpr(vcpu, rt, vcpu->arch.ivpr); break; 201 kvmppc_set_gpr(vcpu, rt, vcpu->arch.ivpr); break;
202 case SPRN_DEAR: 202 case SPRN_DEAR:
203 kvmppc_set_gpr(vcpu, rt, vcpu->arch.dear); break; 203 kvmppc_set_gpr(vcpu, rt, vcpu->arch.shared->dar); break;
204 case SPRN_ESR: 204 case SPRN_ESR:
205 kvmppc_set_gpr(vcpu, rt, vcpu->arch.esr); break; 205 kvmppc_set_gpr(vcpu, rt, vcpu->arch.esr); break;
206 case SPRN_DBCR0: 206 case SPRN_DBCR0: