[PATCH] ppc64: Store virtual address in TLB flush batches
[deliverable/linux.git] / arch / ppc64 / mm / hash_utils.c
index 09475c8edf7caea33dfb37f641c13879b8fac666..36cf474b3d365f4dba63c93834683ba17f5e5c2a 100644 (file)
@@ -355,18 +355,11 @@ int hash_page(unsigned long ea, unsigned long access, unsigned long trap)
        return ret;
 }
 
-void flush_hash_page(unsigned long context, unsigned long ea, pte_t pte,
-                    int local)
+void flush_hash_page(unsigned long va, pte_t pte, int local)
 {
-       unsigned long vsid, vpn, va, hash, secondary, slot;
+       unsigned long vpn, hash, secondary, slot;
        unsigned long huge = pte_huge(pte);
 
-       if (ea < KERNELBASE)
-               vsid = get_vsid(context, ea);
-       else
-               vsid = get_kernel_vsid(ea);
-
-       va = (vsid << 28) | (ea & 0x0fffffff);
        if (huge)
                vpn = va >> HPAGE_SHIFT;
        else
@@ -381,17 +374,17 @@ void flush_hash_page(unsigned long context, unsigned long ea, pte_t pte,
        ppc_md.hpte_invalidate(slot, va, huge, local);
 }
 
-void flush_hash_range(unsigned long context, unsigned long number, int local)
+void flush_hash_range(unsigned long number, int local)
 {
        if (ppc_md.flush_hash_range) {
-               ppc_md.flush_hash_range(context, number, local);
+               ppc_md.flush_hash_range(number, local);
        } else {
                int i;
-               struct ppc64_tlb_batch *batch = &__get_cpu_var(ppc64_tlb_batch);
+               struct ppc64_tlb_batch *batch =
+                       &__get_cpu_var(ppc64_tlb_batch);
 
                for (i = 0; i < number; i++)
-                       flush_hash_page(context, batch->addr[i], batch->pte[i],
-                                       local);
+                       flush_hash_page(batch->vaddr[i], batch->pte[i], local);
        }
 }
 
This page took 0.025385 seconds and 5 git commands to generate.