powerpc/mm: Convert virtual address to vpn
This patch convert different functions to take virtual page number instead of virtual address. Virtual page number is virtual address shifted right by VPN_SHIFT (12) bits. This enable us to have an address range of upto 76 bits. Reviewed-by: Paul Mackerras <paulus@samba.org> Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:

committed by
Benjamin Herrenschmidt

parent
dcda287a9b
commit
5524a27d39
@@ -43,7 +43,7 @@ enum ps3_lpar_vas_id {
|
||||
|
||||
static DEFINE_SPINLOCK(ps3_htab_lock);
|
||||
|
||||
static long ps3_hpte_insert(unsigned long hpte_group, unsigned long va,
|
||||
static long ps3_hpte_insert(unsigned long hpte_group, unsigned long vpn,
|
||||
unsigned long pa, unsigned long rflags, unsigned long vflags,
|
||||
int psize, int ssize)
|
||||
{
|
||||
@@ -61,7 +61,7 @@ static long ps3_hpte_insert(unsigned long hpte_group, unsigned long va,
|
||||
*/
|
||||
vflags &= ~HPTE_V_SECONDARY;
|
||||
|
||||
hpte_v = hpte_encode_v(va, psize, ssize) | vflags | HPTE_V_VALID;
|
||||
hpte_v = hpte_encode_v(vpn, psize, ssize) | vflags | HPTE_V_VALID;
|
||||
hpte_r = hpte_encode_r(ps3_mm_phys_to_lpar(pa), psize) | rflags;
|
||||
|
||||
spin_lock_irqsave(&ps3_htab_lock, flags);
|
||||
@@ -75,8 +75,8 @@ static long ps3_hpte_insert(unsigned long hpte_group, unsigned long va,
|
||||
|
||||
if (result) {
|
||||
/* all entries bolted !*/
|
||||
pr_info("%s:result=%d va=%lx pa=%lx ix=%lx v=%llx r=%llx\n",
|
||||
__func__, result, va, pa, hpte_group, hpte_v, hpte_r);
|
||||
pr_info("%s:result=%d vpn=%lx pa=%lx ix=%lx v=%llx r=%llx\n",
|
||||
__func__, result, vpn, pa, hpte_group, hpte_v, hpte_r);
|
||||
BUG();
|
||||
}
|
||||
|
||||
@@ -107,7 +107,7 @@ static long ps3_hpte_remove(unsigned long hpte_group)
|
||||
}
|
||||
|
||||
static long ps3_hpte_updatepp(unsigned long slot, unsigned long newpp,
|
||||
unsigned long va, int psize, int ssize, int local)
|
||||
unsigned long vpn, int psize, int ssize, int local)
|
||||
{
|
||||
int result;
|
||||
u64 hpte_v, want_v, hpte_rs;
|
||||
@@ -115,7 +115,7 @@ static long ps3_hpte_updatepp(unsigned long slot, unsigned long newpp,
|
||||
unsigned long flags;
|
||||
long ret;
|
||||
|
||||
want_v = hpte_encode_v(va, psize, ssize);
|
||||
want_v = hpte_encode_v(vpn, psize, ssize);
|
||||
|
||||
spin_lock_irqsave(&ps3_htab_lock, flags);
|
||||
|
||||
@@ -125,8 +125,8 @@ static long ps3_hpte_updatepp(unsigned long slot, unsigned long newpp,
|
||||
&hpte_rs);
|
||||
|
||||
if (result) {
|
||||
pr_info("%s: res=%d read va=%lx slot=%lx psize=%d\n",
|
||||
__func__, result, va, slot, psize);
|
||||
pr_info("%s: res=%d read vpn=%lx slot=%lx psize=%d\n",
|
||||
__func__, result, vpn, slot, psize);
|
||||
BUG();
|
||||
}
|
||||
|
||||
@@ -159,7 +159,7 @@ static void ps3_hpte_updateboltedpp(unsigned long newpp, unsigned long ea,
|
||||
panic("ps3_hpte_updateboltedpp() not implemented");
|
||||
}
|
||||
|
||||
static void ps3_hpte_invalidate(unsigned long slot, unsigned long va,
|
||||
static void ps3_hpte_invalidate(unsigned long slot, unsigned long vpn,
|
||||
int psize, int ssize, int local)
|
||||
{
|
||||
unsigned long flags;
|
||||
@@ -170,8 +170,8 @@ static void ps3_hpte_invalidate(unsigned long slot, unsigned long va,
|
||||
result = lv1_write_htab_entry(PS3_LPAR_VAS_ID_CURRENT, slot, 0, 0);
|
||||
|
||||
if (result) {
|
||||
pr_info("%s: res=%d va=%lx slot=%lx psize=%d\n",
|
||||
__func__, result, va, slot, psize);
|
||||
pr_info("%s: res=%d vpn=%lx slot=%lx psize=%d\n",
|
||||
__func__, result, vpn, slot, psize);
|
||||
BUG();
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user