Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 356882
b: refs/heads/master
c: 9d98b3f
h: refs/heads/master
v: v3
  • Loading branch information
Alexander Graf committed Jan 24, 2013
1 parent c6ec882 commit e6d7d0f
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 32 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 2c378fd779d2b37aed64cb44caa607707edc51d3
refs/heads/master: 9d98b3ff949dab3bafa2c50856ce9e1f88497f9a
38 changes: 7 additions & 31 deletions trunk/arch/powerpc/kvm/e500_tlb.c
Original file line number Diff line number Diff line change
Expand Up @@ -878,8 +878,8 @@ int kvmppc_e500_emul_tlbsx(struct kvm_vcpu *vcpu, gva_t ea)
int kvmppc_e500_emul_tlbwe(struct kvm_vcpu *vcpu)
{
struct kvmppc_vcpu_e500 *vcpu_e500 = to_e500(vcpu);
struct kvm_book3e_206_tlb_entry *gtlbe, stlbe;
int tlbsel, esel, stlbsel, sesel;
struct kvm_book3e_206_tlb_entry *gtlbe;
int tlbsel, esel;
int recal = 0;

tlbsel = get_tlb_tlbsel(vcpu);
Expand Down Expand Up @@ -917,40 +917,16 @@ int kvmppc_e500_emul_tlbwe(struct kvm_vcpu *vcpu)

/* Invalidate shadow mappings for the about-to-be-clobbered TLBE. */
if (tlbe_is_host_safe(vcpu, gtlbe)) {
u64 eaddr;
u64 raddr;
u64 eaddr = get_tlb_eaddr(gtlbe);
u64 raddr = get_tlb_raddr(gtlbe);

switch (tlbsel) {
case 0:
/* TLB0 */
if (tlbsel == 0) {
gtlbe->mas1 &= ~MAS1_TSIZE(~0);
gtlbe->mas1 |= MAS1_TSIZE(BOOK3E_PAGESZ_4K);

stlbsel = 0;
kvmppc_e500_tlb0_map(vcpu_e500, esel, &stlbe);
sesel = 0; /* unused */

break;

case 1:
/* TLB1 */
eaddr = get_tlb_eaddr(gtlbe);
raddr = get_tlb_raddr(gtlbe);

/* Create a 4KB mapping on the host.
* If the guest wanted a large page,
* only the first 4KB is mapped here and the rest
* are mapped on the fly. */
stlbsel = 1;
sesel = kvmppc_e500_tlb1_map(vcpu_e500, eaddr,
raddr >> PAGE_SHIFT, gtlbe, &stlbe, esel);
break;

default:
BUG();
}

write_stlbe(vcpu_e500, gtlbe, &stlbe, stlbsel, sesel);
/* Premap the faulting page */
kvmppc_mmu_map(vcpu, eaddr, raddr, index_of(tlbsel, esel));
}

kvmppc_set_exit_type(vcpu, EMULATED_TLBWE_EXITS);
Expand Down

0 comments on commit e6d7d0f

Please sign in to comment.