Merge tag 'powerpc-5.10-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc...
[linux-2.6-microblaze.git] / arch / powerpc / mm / pgtable.c
index 9c0547d..15555c9 100644 (file)
@@ -184,9 +184,6 @@ void set_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep,
         */
        VM_WARN_ON(pte_hw_valid(*ptep) && !pte_protnone(*ptep));
 
-       /* Add the pte bit when trying to set a pte */
-       pte = pte_mkpte(pte);
-
        /* Note: mm->context.id might not yet have been assigned as
         * this context might not have been activated yet when this
         * is called.
@@ -266,8 +263,7 @@ void set_huge_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_
        pmd_t *pmd = pmd_off(mm, addr);
        pte_basic_t val;
        pte_basic_t *entry = &ptep->pte;
-       int num = is_hugepd(*((hugepd_t *)pmd)) ? 1 : SZ_512K / SZ_4K;
-       int i;
+       int num, i;
 
        /*
         * Make sure hardware valid bit is not set. We don't do
@@ -275,11 +271,12 @@ void set_huge_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_
         */
        VM_WARN_ON(pte_hw_valid(*ptep) && !pte_protnone(*ptep));
 
-       pte = pte_mkpte(pte);
-
        pte = set_pte_filter(pte);
 
        val = pte_val(pte);
+
+       num = number_of_cells_per_pte(pmd, val, 1);
+
        for (i = 0; i < num; i++, entry++, val += SZ_4K)
                *entry = val;
 }