|
@@ -53,11 +53,6 @@ void hpte_need_flush(struct mm_struct *mm, unsigned long addr,
|
|
|
|
|
|
i = batch->index;
|
|
i = batch->index;
|
|
|
|
|
|
- /* We mask the address for the base page size. Huge pages will
|
|
|
|
- * have applied their own masking already
|
|
|
|
- */
|
|
|
|
- addr &= PAGE_MASK;
|
|
|
|
-
|
|
|
|
/* Get page size (maybe move back to caller).
|
|
/* Get page size (maybe move back to caller).
|
|
*
|
|
*
|
|
* NOTE: when using special 64K mappings in 4K environment like
|
|
* NOTE: when using special 64K mappings in 4K environment like
|
|
@@ -75,6 +70,9 @@ void hpte_need_flush(struct mm_struct *mm, unsigned long addr,
|
|
} else
|
|
} else
|
|
psize = pte_pagesize_index(mm, addr, pte);
|
|
psize = pte_pagesize_index(mm, addr, pte);
|
|
|
|
|
|
|
|
+ /* Mask the address for the correct page size */
|
|
|
|
+ addr &= ~((1UL << mmu_psize_defs[psize].shift) - 1);
|
|
|
|
+
|
|
/* Build full vaddr */
|
|
/* Build full vaddr */
|
|
if (!is_kernel_addr(addr)) {
|
|
if (!is_kernel_addr(addr)) {
|
|
ssize = user_segment_size(addr);
|
|
ssize = user_segment_size(addr);
|