|
@@ -431,16 +431,17 @@ static void __pSeries_lpar_hugepage_invalidate(unsigned long *slot,
|
|
spin_unlock_irqrestore(&pSeries_lpar_tlbie_lock, flags);
|
|
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 long s_addr = addr;
|
|
unsigned int max_hpte_count, valid;
|
|
unsigned int max_hpte_count, valid;
|
|
unsigned long vpn_array[PPC64_HUGE_HPTE_BATCH];
|
|
unsigned long vpn_array[PPC64_HUGE_HPTE_BATCH];
|
|
unsigned long slot_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;
|
|
shift = mmu_psize_defs[psize].shift;
|
|
max_hpte_count = 1U << (PMD_SHIFT - 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 */
|
|
/* get the vpn */
|
|
addr = s_addr + (i * (1ul << shift));
|
|
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);
|
|
vpn = hpt_vpn(addr, vsid, ssize);
|
|
hash = hpt_hash(vpn, shift, ssize);
|
|
hash = hpt_hash(vpn, shift, ssize);
|
|
if (hidx & _PTEIDX_SECONDARY)
|
|
if (hidx & _PTEIDX_SECONDARY)
|