[PATCH 5/10] ppc64: Remove redundant uses of physRpn_to_absRpn

Michael Ellerman michael at ellerman.id.au
Wed Aug 3 20:21:24 EST 2005


physRpn_to_absRpn is a no-op on non-iSeries platforms, remove the two
redundant calls.

There's only one caller on iSeries so fold the logic in there so we can get
rid of it completely.

Signed-off-by: Michael Ellerman <michael at ellerman.id.au>

 arch/ppc64/kernel/iSeries_htab.c |    5 ++++-
 arch/ppc64/kernel/pSeries_lpar.c |    3 +--
 arch/ppc64/mm/hash_native.c      |    3 +--
 include/asm-ppc64/abs_addr.h     |    8 --------
 4 files changed, 6 insertions(+), 13 deletions(-)

Index: work/arch/ppc64/kernel/pSeries_lpar.c
===================================================================
--- work.orig/arch/ppc64/kernel/pSeries_lpar.c
+++ work/arch/ppc64/kernel/pSeries_lpar.c
@@ -279,7 +279,6 @@ long pSeries_lpar_hpte_insert(unsigned l
 			      unsigned long va, unsigned long prpn,
 			      unsigned long vflags, unsigned long rflags)
 {
-	unsigned long arpn = physRpn_to_absRpn(prpn);
 	unsigned long lpar_rc;
 	unsigned long flags;
 	unsigned long slot;
@@ -290,7 +289,7 @@ long pSeries_lpar_hpte_insert(unsigned l
 	if (vflags & HPTE_V_LARGE)
 		hpte_v &= ~(1UL << HPTE_V_AVPN_SHIFT);
 
-	hpte_r = (arpn << HPTE_R_RPN_SHIFT) | rflags;
+	hpte_r = (prpn << HPTE_R_RPN_SHIFT) | rflags;
 
 	/* Now fill in the actual HPTE */
 	/* Set CEC cookie to 0         */
Index: work/arch/ppc64/mm/hash_native.c
===================================================================
--- work.orig/arch/ppc64/mm/hash_native.c
+++ work/arch/ppc64/mm/hash_native.c
@@ -51,7 +51,6 @@ long native_hpte_insert(unsigned long hp
 			unsigned long prpn, unsigned long vflags,
 			unsigned long rflags)
 {
-	unsigned long arpn = physRpn_to_absRpn(prpn);
 	hpte_t *hptep = htab_address + hpte_group;
 	unsigned long hpte_v, hpte_r;
 	int i;
@@ -74,7 +73,7 @@ long native_hpte_insert(unsigned long hp
 	hpte_v = (va >> 23) << HPTE_V_AVPN_SHIFT | vflags | HPTE_V_VALID;
 	if (vflags & HPTE_V_LARGE)
 		va &= ~(1UL << HPTE_V_AVPN_SHIFT);
-	hpte_r = (arpn << HPTE_R_RPN_SHIFT) | rflags;
+	hpte_r = (prpn << HPTE_R_RPN_SHIFT) | rflags;
 
 	hptep->r = hpte_r;
 	/* Guarantee the second dword is visible before the valid bit */
Index: work/arch/ppc64/kernel/iSeries_htab.c
===================================================================
--- work.orig/arch/ppc64/kernel/iSeries_htab.c
+++ work/arch/ppc64/kernel/iSeries_htab.c
@@ -41,6 +41,7 @@ static long iSeries_hpte_insert(unsigned
 				unsigned long prpn, unsigned long vflags,
 				unsigned long rflags)
 {
+	unsigned long arpn;
 	long slot;
 	hpte_t lhpte;
 	int secondary = 0;
@@ -70,8 +71,10 @@ static long iSeries_hpte_insert(unsigned
 		slot &= 0x7fffffffffffffff;
 	}
 
+	arpn = phys_to_abs(prpn << PAGE_SHIFT) >> PAGE_SHIFT;
+
 	lhpte.v = (va >> 23) << HPTE_V_AVPN_SHIFT | vflags | HPTE_V_VALID;
-	lhpte.r = (physRpn_to_absRpn(prpn) << HPTE_R_RPN_SHIFT) | rflags;
+	lhpte.r = (arpn << HPTE_R_RPN_SHIFT) | rflags;
 
 	/* Now fill in the actual HPTE */
 	HvCallHpt_addValidate(slot, secondary, &lhpte);
Index: work/include/asm-ppc64/abs_addr.h
===================================================================
--- work.orig/include/asm-ppc64/abs_addr.h
+++ work/include/asm-ppc64/abs_addr.h
@@ -56,14 +56,6 @@ static inline unsigned long phys_to_abs(
 	return chunk_to_addr(chunk) + (pa & MSCHUNKS_OFFSET_MASK);
 }
 
-static inline unsigned long
-physRpn_to_absRpn(unsigned long rpn)
-{
-	unsigned long pa = rpn << PAGE_SHIFT;
-	unsigned long aa = phys_to_abs(pa);
-	return (aa >> PAGE_SHIFT);
-}
-
 /* A macro so it can take pointers or unsigned long. */
 #define abs_to_phys(aa) lmb_abs_to_phys((unsigned long)(aa))
 



More information about the Linuxppc64-dev mailing list