forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-05-13 9d77db3c730780c8ef5ccd4b66403ff5675cfe4e
kernel/arch/microblaze/mm/pgtable.c
....@@ -32,8 +32,8 @@
3232 #include <linux/vmalloc.h>
3333 #include <linux/init.h>
3434 #include <linux/mm_types.h>
35
+#include <linux/pgtable.h>
3536
36
-#include <asm/pgtable.h>
3737 #include <asm/pgalloc.h>
3838 #include <linux/io.h>
3939 #include <asm/mmu.h>
....@@ -43,10 +43,6 @@
4343 unsigned long ioremap_base;
4444 unsigned long ioremap_bot;
4545 EXPORT_SYMBOL(ioremap_bot);
46
-
47
-#ifndef CONFIG_SMP
48
-struct pgtable_cache_struct quicklists;
49
-#endif
5046
5147 static void __iomem *__ioremap(phys_addr_t addr, unsigned long size,
5248 unsigned long flags)
....@@ -75,7 +71,7 @@
7571 p >= memory_start && p < virt_to_phys(high_memory) &&
7672 !(p >= __virt_to_phys((phys_addr_t)__bss_stop) &&
7773 p < __virt_to_phys((phys_addr_t)__bss_stop))) {
78
- pr_warn("__ioremap(): phys addr "PTE_FMT" is RAM lr %pf\n",
74
+ pr_warn("__ioremap(): phys addr "PTE_FMT" is RAM lr %ps\n",
7975 (unsigned long)p, __builtin_return_address(0));
8076 return NULL;
8177 }
....@@ -138,11 +134,16 @@
138134
139135 int map_page(unsigned long va, phys_addr_t pa, int flags)
140136 {
137
+ p4d_t *p4d;
138
+ pud_t *pud;
141139 pmd_t *pd;
142140 pte_t *pg;
143141 int err = -ENOMEM;
142
+
144143 /* Use upper 10 bits of VA to index the first level map */
145
- pd = pmd_offset(pgd_offset_k(va), va);
144
+ p4d = p4d_offset(pgd_offset_k(va), va);
145
+ pud = pud_offset(p4d, va);
146
+ pd = pmd_offset(pud, va);
146147 /* Use middle 10 bits of VA to index the second-level map */
147148 pg = pte_alloc_kernel(pd, va); /* from powerpc - pgtable.c */
148149 /* pg = pte_alloc_kernel(&init_mm, pd, va); */
....@@ -192,13 +193,17 @@
192193 static int get_pteptr(struct mm_struct *mm, unsigned long addr, pte_t **ptep)
193194 {
194195 pgd_t *pgd;
196
+ p4d_t *p4d;
197
+ pud_t *pud;
195198 pmd_t *pmd;
196199 pte_t *pte;
197200 int retval = 0;
198201
199202 pgd = pgd_offset(mm, addr & PAGE_MASK);
200203 if (pgd) {
201
- pmd = pmd_offset(pgd, addr & PAGE_MASK);
204
+ p4d = p4d_offset(pgd, addr & PAGE_MASK);
205
+ pud = pud_offset(p4d, addr & PAGE_MASK);
206
+ pmd = pmd_offset(pud, addr & PAGE_MASK);
202207 if (pmd_present(*pmd)) {
203208 pte = pte_offset_kernel(pmd, addr & PAGE_MASK);
204209 if (pte) {
....@@ -235,8 +240,7 @@
235240 return pa;
236241 }
237242
238
-__ref pte_t *pte_alloc_one_kernel(struct mm_struct *mm,
239
- unsigned long address)
243
+__ref pte_t *pte_alloc_one_kernel(struct mm_struct *mm)
240244 {
241245 pte_t *pte;
242246 if (mem_init_done) {