powerpc/thp: Don't recompute vsid and ssize in loop on invalidate
The segment identifier and segment size will remain the same in the loop, So we can compute it outside. We also change the hugepage_invalidate interface so that we can use it the later patch CC: <stable@vger.kernel.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
b0aa44a3df
commit
fa1f8ae80f
@@ -431,16 +431,17 @@ static void __pSeries_lpar_hugepage_invalidate(unsigned long *slot,
|
||||
spin_unlock_irqrestore(&pSeries_lpar_tlbie_lock, flags);
|
||||
}
|
||||
|
||||
static void pSeries_lpar_hugepage_invalidate(struct mm_struct *mm,
|
||||
unsigned char *hpte_slot_array,
|
||||
unsigned long addr, int psize)
|
||||
static void pSeries_lpar_hugepage_invalidate(unsigned long vsid,
|
||||
unsigned long addr,
|
||||
unsigned char *hpte_slot_array,
|
||||
int psize, int ssize)
|
||||
{
|
||||
int ssize = 0, i, index = 0;
|
||||
int i, index = 0;
|
||||
unsigned long s_addr = addr;
|
||||
unsigned int max_hpte_count, valid;
|
||||
unsigned long vpn_array[PPC64_HUGE_HPTE_BATCH];
|
||||
unsigned long slot_array[PPC64_HUGE_HPTE_BATCH];
|
||||
unsigned long shift, hidx, vpn = 0, vsid, hash, slot;
|
||||
unsigned long shift, hidx, vpn = 0, hash, slot;
|
||||
|
||||
shift = mmu_psize_defs[psize].shift;
|
||||
max_hpte_count = 1U << (PMD_SHIFT - shift);
|
||||
@@ -453,15 +454,6 @@ static void pSeries_lpar_hugepage_invalidate(struct mm_struct *mm,
|
||||
|
||||
/* get the vpn */
|
||||
addr = s_addr + (i * (1ul << shift));
|
||||
if (!is_kernel_addr(addr)) {
|
||||
ssize = user_segment_size(addr);
|
||||
vsid = get_vsid(mm->context.id, addr, ssize);
|
||||
WARN_ON(vsid == 0);
|
||||
} else {
|
||||
vsid = get_kernel_vsid(addr, mmu_kernel_ssize);
|
||||
ssize = mmu_kernel_ssize;
|
||||
}
|
||||
|
||||
vpn = hpt_vpn(addr, vsid, ssize);
|
||||
hash = hpt_hash(vpn, shift, ssize);
|
||||
if (hidx & _PTEIDX_SECONDARY)
|
||||
|
Reference in New Issue
Block a user