Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 197798
b: refs/heads/master
c: 251585b
h: refs/heads/master
v: v3
  • Loading branch information
Alexander Graf authored and Avi Kivity committed May 17, 2010
1 parent de02c75 commit e96182a
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 14 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: 5156f274bb1ee1cfc22240445ef94f7dcfc9929d
refs/heads/master: 251585b5d02152973dbc24c803ca322bb977d4a2
5 changes: 0 additions & 5 deletions trunk/arch/powerpc/kernel/ppc_ksyms.c
Original file line number Diff line number Diff line change
Expand Up @@ -178,11 +178,6 @@ EXPORT_SYMBOL(switch_mmu_context);
extern long mol_trampoline;
EXPORT_SYMBOL(mol_trampoline); /* For MOL */
EXPORT_SYMBOL(flush_hash_pages); /* For MOL */

extern struct hash_pte *Hash;
extern unsigned long _SDR1;
EXPORT_SYMBOL_GPL(Hash); /* For KVM */
EXPORT_SYMBOL_GPL(_SDR1); /* For KVM */
#ifdef CONFIG_SMP
extern int mmu_hash_lock;
EXPORT_SYMBOL(mmu_hash_lock); /* For MOL */
Expand Down
21 changes: 13 additions & 8 deletions trunk/arch/powerpc/kvm/book3s_32_mmu_host.c
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,9 @@
#error Only 32 bit pages are supported for now
#endif

static ulong htab;
static u32 htabmask;

static void invalidate_pte(struct kvm_vcpu *vcpu, struct hpte_cache *pte)
{
volatile u32 *pteg;
Expand Down Expand Up @@ -217,28 +220,24 @@ static struct kvmppc_sid_map *find_sid_vsid(struct kvm_vcpu *vcpu, u64 gvsid)
return NULL;
}

extern struct hash_pte *Hash;
extern unsigned long _SDR1;

static u32 *kvmppc_mmu_get_pteg(struct kvm_vcpu *vcpu, u32 vsid, u32 eaddr,
bool primary)
{
u32 page, hash, htabmask;
ulong pteg = (ulong)Hash;
u32 page, hash;
ulong pteg = htab;

page = (eaddr & ~ESID_MASK) >> 12;

hash = ((vsid ^ page) << 6);
if (!primary)
hash = ~hash;

htabmask = ((_SDR1 & 0x1FF) << 16) | 0xFFC0;
hash &= htabmask;

pteg |= hash;

dprintk_mmu("htab: %p | hash: %x | htabmask: %x | pteg: %lx\n",
Hash, hash, htabmask, pteg);
dprintk_mmu("htab: %lx | hash: %x | htabmask: %x | pteg: %lx\n",
htab, hash, htabmask, pteg);

return (u32*)pteg;
}
Expand Down Expand Up @@ -453,6 +452,7 @@ int kvmppc_mmu_init(struct kvm_vcpu *vcpu)
{
struct kvmppc_vcpu_book3s *vcpu3s = to_book3s(vcpu);
int err;
ulong sdr1;

err = __init_new_context();
if (err < 0)
Expand All @@ -474,5 +474,10 @@ int kvmppc_mmu_init(struct kvm_vcpu *vcpu)

vcpu3s->vsid_next = vcpu3s->vsid_first;

/* Remember where the HTAB is */
asm ( "mfsdr1 %0" : "=r"(sdr1) );
htabmask = ((sdr1 & 0x1FF) << 16) | 0xFFC0;
htab = (ulong)__va(sdr1 & 0xffff0000);

return 0;
}

0 comments on commit e96182a

Please sign in to comment.