aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc')
-rw-r--r--arch/powerpc/include/asm/kvm.h7
-rw-r--r--arch/powerpc/include/asm/kvm_host.h8
-rw-r--r--arch/powerpc/kvm/book3s_paired_singles.c9
-rw-r--r--arch/powerpc/kvm/powerpc.c18
4 files changed, 23 insertions, 19 deletions
diff --git a/arch/powerpc/include/asm/kvm.h b/arch/powerpc/include/asm/kvm.h
index f41adcda1468..b921c3f48928 100644
--- a/arch/powerpc/include/asm/kvm.h
+++ b/arch/powerpc/include/asm/kvm.h
@@ -269,13 +269,6 @@ struct kvm_guest_debug_arch {
269struct kvm_sync_regs { 269struct kvm_sync_regs {
270}; 270};
271 271
272#define KVM_REG_MASK 0x001f
273#define KVM_REG_EXT_MASK 0xffe0
274#define KVM_REG_GPR 0x0000
275#define KVM_REG_FPR 0x0020
276#define KVM_REG_QPR 0x0040
277#define KVM_REG_FQPR 0x0060
278
279#define KVM_INTERRUPT_SET -1U 272#define KVM_INTERRUPT_SET -1U
280#define KVM_INTERRUPT_UNSET -2U 273#define KVM_INTERRUPT_UNSET -2U
281#define KVM_INTERRUPT_SET_LEVEL -3U 274#define KVM_INTERRUPT_SET_LEVEL -3U
diff --git a/arch/powerpc/include/asm/kvm_host.h b/arch/powerpc/include/asm/kvm_host.h
index 1cb6e522485b..af438b1e8a3c 100644
--- a/arch/powerpc/include/asm/kvm_host.h
+++ b/arch/powerpc/include/asm/kvm_host.h
@@ -485,4 +485,12 @@ struct kvm_vcpu_arch {
485#define KVMPPC_VCPU_BUSY_IN_HOST 1 485#define KVMPPC_VCPU_BUSY_IN_HOST 1
486#define KVMPPC_VCPU_RUNNABLE 2 486#define KVMPPC_VCPU_RUNNABLE 2
487 487
488/* Values for vcpu->arch.io_gpr */
489#define KVM_MMIO_REG_MASK 0x001f
490#define KVM_MMIO_REG_EXT_MASK 0xffe0
491#define KVM_MMIO_REG_GPR 0x0000
492#define KVM_MMIO_REG_FPR 0x0020
493#define KVM_MMIO_REG_QPR 0x0040
494#define KVM_MMIO_REG_FQPR 0x0060
495
488#endif /* __POWERPC_KVM_HOST_H__ */ 496#endif /* __POWERPC_KVM_HOST_H__ */
diff --git a/arch/powerpc/kvm/book3s_paired_singles.c b/arch/powerpc/kvm/book3s_paired_singles.c
index 7b0ee96c1bed..e70ef2d86431 100644
--- a/arch/powerpc/kvm/book3s_paired_singles.c
+++ b/arch/powerpc/kvm/book3s_paired_singles.c
@@ -196,7 +196,8 @@ static int kvmppc_emulate_fpr_load(struct kvm_run *run, struct kvm_vcpu *vcpu,
196 kvmppc_inject_pf(vcpu, addr, false); 196 kvmppc_inject_pf(vcpu, addr, false);
197 goto done_load; 197 goto done_load;
198 } else if (r == EMULATE_DO_MMIO) { 198 } else if (r == EMULATE_DO_MMIO) {
199 emulated = kvmppc_handle_load(run, vcpu, KVM_REG_FPR | rs, len, 1); 199 emulated = kvmppc_handle_load(run, vcpu, KVM_MMIO_REG_FPR | rs,
200 len, 1);
200 goto done_load; 201 goto done_load;
201 } 202 }
202 203
@@ -286,11 +287,13 @@ static int kvmppc_emulate_psq_load(struct kvm_run *run, struct kvm_vcpu *vcpu,
286 kvmppc_inject_pf(vcpu, addr, false); 287 kvmppc_inject_pf(vcpu, addr, false);
287 goto done_load; 288 goto done_load;
288 } else if ((r == EMULATE_DO_MMIO) && w) { 289 } else if ((r == EMULATE_DO_MMIO) && w) {
289 emulated = kvmppc_handle_load(run, vcpu, KVM_REG_FPR | rs, 4, 1); 290 emulated = kvmppc_handle_load(run, vcpu, KVM_MMIO_REG_FPR | rs,
291 4, 1);
290 vcpu->arch.qpr[rs] = tmp[1]; 292 vcpu->arch.qpr[rs] = tmp[1];
291 goto done_load; 293 goto done_load;
292 } else if (r == EMULATE_DO_MMIO) { 294 } else if (r == EMULATE_DO_MMIO) {
293 emulated = kvmppc_handle_load(run, vcpu, KVM_REG_FQPR | rs, 8, 1); 295 emulated = kvmppc_handle_load(run, vcpu, KVM_MMIO_REG_FQPR | rs,
296 8, 1);
294 goto done_load; 297 goto done_load;
295 } 298 }
296 299
diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c
index e23270779ff5..0e21d155eea7 100644
--- a/arch/powerpc/kvm/powerpc.c
+++ b/arch/powerpc/kvm/powerpc.c
@@ -448,20 +448,20 @@ static void kvmppc_complete_mmio_load(struct kvm_vcpu *vcpu,
448 448
449 kvmppc_set_gpr(vcpu, vcpu->arch.io_gpr, gpr); 449 kvmppc_set_gpr(vcpu, vcpu->arch.io_gpr, gpr);
450 450
451 switch (vcpu->arch.io_gpr & KVM_REG_EXT_MASK) { 451 switch (vcpu->arch.io_gpr & KVM_MMIO_REG_EXT_MASK) {
452 case KVM_REG_GPR: 452 case KVM_MMIO_REG_GPR:
453 kvmppc_set_gpr(vcpu, vcpu->arch.io_gpr, gpr); 453 kvmppc_set_gpr(vcpu, vcpu->arch.io_gpr, gpr);
454 break; 454 break;
455 case KVM_REG_FPR: 455 case KVM_MMIO_REG_FPR:
456 vcpu->arch.fpr[vcpu->arch.io_gpr & KVM_REG_MASK] = gpr; 456 vcpu->arch.fpr[vcpu->arch.io_gpr & KVM_MMIO_REG_MASK] = gpr;
457 break; 457 break;
458#ifdef CONFIG_PPC_BOOK3S 458#ifdef CONFIG_PPC_BOOK3S
459 case KVM_REG_QPR: 459 case KVM_MMIO_REG_QPR:
460 vcpu->arch.qpr[vcpu->arch.io_gpr & KVM_REG_MASK] = gpr; 460 vcpu->arch.qpr[vcpu->arch.io_gpr & KVM_MMIO_REG_MASK] = gpr;
461 break; 461 break;
462 case KVM_REG_FQPR: 462 case KVM_MMIO_REG_FQPR:
463 vcpu->arch.fpr[vcpu->arch.io_gpr & KVM_REG_MASK] = gpr; 463 vcpu->arch.fpr[vcpu->arch.io_gpr & KVM_MMIO_REG_MASK] = gpr;
464 vcpu->arch.qpr[vcpu->arch.io_gpr & KVM_REG_MASK] = gpr; 464 vcpu->arch.qpr[vcpu->arch.io_gpr & KVM_MMIO_REG_MASK] = gpr;
465 break; 465 break;
466#endif 466#endif
467 default: 467 default: