aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorScott Wood <scottwood@freescale.com>2011-03-28 16:01:24 -0400
committerAvi Kivity <avi@redhat.com>2011-05-22 08:47:47 -0400
commit49ea06957bf637b28aa338fba26432d5bafdeb99 (patch)
treea141af139f4d7e59765a8cdb2640b81560164b11 /arch
parent90d34b0e45df3bfe522e9e9d604c4c1a0253699d (diff)
KVM: PPC: fix exit accounting for SPRs, tlbwe, tlbsx
The exit type setting for mfspr/mtspr is moved from 44x to toplevel SPR emulation. This enables it on e500, and makes sure that all SPRs are covered. Exit accounting for tlbwe and tlbsx is added to e500. Signed-off-by: Stuart Yoder <stuart.yoder@freescale.com> Signed-off-by: Scott Wood <scottwood@freescale.com> Signed-off-by: Alexander Graf <agraf@suse.de>
Diffstat (limited to 'arch')
-rw-r--r--arch/powerpc/kvm/44x_emulate.c2
-rw-r--r--arch/powerpc/kvm/e500_tlb.c5
-rw-r--r--arch/powerpc/kvm/emulate.c2
3 files changed, 6 insertions, 3 deletions
diff --git a/arch/powerpc/kvm/44x_emulate.c b/arch/powerpc/kvm/44x_emulate.c
index 65ea083a5b27..549bb2c9a47a 100644
--- a/arch/powerpc/kvm/44x_emulate.c
+++ b/arch/powerpc/kvm/44x_emulate.c
@@ -158,7 +158,6 @@ int kvmppc_core_emulate_mtspr(struct kvm_vcpu *vcpu, int sprn, int rs)
158 emulated = kvmppc_booke_emulate_mtspr(vcpu, sprn, rs); 158 emulated = kvmppc_booke_emulate_mtspr(vcpu, sprn, rs);
159 } 159 }
160 160
161 kvmppc_set_exit_type(vcpu, EMULATED_MTSPR_EXITS);
162 return emulated; 161 return emulated;
163} 162}
164 163
@@ -179,7 +178,6 @@ int kvmppc_core_emulate_mfspr(struct kvm_vcpu *vcpu, int sprn, int rt)
179 emulated = kvmppc_booke_emulate_mfspr(vcpu, sprn, rt); 178 emulated = kvmppc_booke_emulate_mfspr(vcpu, sprn, rt);
180 } 179 }
181 180
182 kvmppc_set_exit_type(vcpu, EMULATED_MFSPR_EXITS);
183 return emulated; 181 return emulated;
184} 182}
185 183
diff --git a/arch/powerpc/kvm/e500_tlb.c b/arch/powerpc/kvm/e500_tlb.c
index d6d6d47a75a9..56ac4523857d 100644
--- a/arch/powerpc/kvm/e500_tlb.c
+++ b/arch/powerpc/kvm/e500_tlb.c
@@ -1,5 +1,5 @@
1/* 1/*
2 * Copyright (C) 2008 Freescale Semiconductor, Inc. All rights reserved. 2 * Copyright (C) 2008-2011 Freescale Semiconductor, Inc. All rights reserved.
3 * 3 *
4 * Author: Yu Liu, yu.liu@freescale.com 4 * Author: Yu Liu, yu.liu@freescale.com
5 * 5 *
@@ -24,6 +24,7 @@
24#include "../mm/mmu_decl.h" 24#include "../mm/mmu_decl.h"
25#include "e500_tlb.h" 25#include "e500_tlb.h"
26#include "trace.h" 26#include "trace.h"
27#include "timing.h"
27 28
28#define to_htlb1_esel(esel) (tlb1_entry_num - (esel) - 1) 29#define to_htlb1_esel(esel) (tlb1_entry_num - (esel) - 1)
29 30
@@ -506,6 +507,7 @@ int kvmppc_e500_emul_tlbsx(struct kvm_vcpu *vcpu, int rb)
506 vcpu_e500->mas7 = 0; 507 vcpu_e500->mas7 = 0;
507 } 508 }
508 509
510 kvmppc_set_exit_type(vcpu, EMULATED_TLBSX_EXITS);
509 return EMULATE_DONE; 511 return EMULATE_DONE;
510} 512}
511 513
@@ -571,6 +573,7 @@ int kvmppc_e500_emul_tlbwe(struct kvm_vcpu *vcpu)
571 write_host_tlbe(vcpu_e500, stlbsel, sesel); 573 write_host_tlbe(vcpu_e500, stlbsel, sesel);
572 } 574 }
573 575
576 kvmppc_set_exit_type(vcpu, EMULATED_TLBWE_EXITS);
574 return EMULATE_DONE; 577 return EMULATE_DONE;
575} 578}
576 579
diff --git a/arch/powerpc/kvm/emulate.c b/arch/powerpc/kvm/emulate.c
index c64fd2909bb2..8f7a3aa03c26 100644
--- a/arch/powerpc/kvm/emulate.c
+++ b/arch/powerpc/kvm/emulate.c
@@ -294,6 +294,7 @@ int kvmppc_emulate_instruction(struct kvm_run *run, struct kvm_vcpu *vcpu)
294 } 294 }
295 break; 295 break;
296 } 296 }
297 kvmppc_set_exit_type(vcpu, EMULATED_MFSPR_EXITS);
297 break; 298 break;
298 299
299 case OP_31_XOP_STHX: 300 case OP_31_XOP_STHX:
@@ -363,6 +364,7 @@ int kvmppc_emulate_instruction(struct kvm_run *run, struct kvm_vcpu *vcpu)
363 printk("mtspr: unknown spr %x\n", sprn); 364 printk("mtspr: unknown spr %x\n", sprn);
364 break; 365 break;
365 } 366 }
367 kvmppc_set_exit_type(vcpu, EMULATED_MTSPR_EXITS);
366 break; 368 break;
367 369
368 case OP_31_XOP_DCBI: 370 case OP_31_XOP_DCBI: