Lines Matching refs:addr

37 static void pgtable_populate(unsigned long addr, unsigned long end, enum populate_mode mode);
92 * | 1/8 addr space | | zero pg mapping| (untracked)
107 * | 1/8 addr space | | zero pg mapping| (untracked)
129 static bool kasan_pgd_populate_zero_shadow(pgd_t *pgd, unsigned long addr,
133 IS_ALIGNED(addr, PGDIR_SIZE) && end - addr >= PGDIR_SIZE) {
140 static bool kasan_p4d_populate_zero_shadow(p4d_t *p4d, unsigned long addr,
144 IS_ALIGNED(addr, P4D_SIZE) && end - addr >= P4D_SIZE) {
151 static bool kasan_pud_populate_zero_shadow(pud_t *pud, unsigned long addr,
155 IS_ALIGNED(addr, PUD_SIZE) && end - addr >= PUD_SIZE) {
162 static bool kasan_pmd_populate_zero_shadow(pmd_t *pmd, unsigned long addr,
166 IS_ALIGNED(addr, PMD_SIZE) && end - addr >= PMD_SIZE) {
185 static inline bool kasan_pgd_populate_zero_shadow(pgd_t *pgd, unsigned long addr,
191 static inline bool kasan_p4d_populate_zero_shadow(p4d_t *p4d, unsigned long addr,
197 static inline bool kasan_pud_populate_zero_shadow(pud_t *pud, unsigned long addr,
203 static inline bool kasan_pmd_populate_zero_shadow(pmd_t *pmd, unsigned long addr,
257 static unsigned long _pa(unsigned long addr, unsigned long size, enum populate_mode mode)
263 return addr;
265 return __abs_lowcore_pa(addr);
268 addr = physmem_alloc_top_down(RR_VMEM, size, size);
269 memset((void *)addr, 0, size);
270 return addr;
277 static bool can_large_pud(pud_t *pu_dir, unsigned long addr, unsigned long end)
280 IS_ALIGNED(addr, PUD_SIZE) && (end - addr) >= PUD_SIZE;
283 static bool can_large_pmd(pmd_t *pm_dir, unsigned long addr, unsigned long end)
286 IS_ALIGNED(addr, PMD_SIZE) && (end - addr) >= PMD_SIZE;
289 static void pgtable_pte_populate(pmd_t *pmd, unsigned long addr, unsigned long end,
295 pte = pte_offset_kernel(pmd, addr);
296 for (; addr < end; addr += PAGE_SIZE, pte++) {
300 entry = __pte(_pa(addr, PAGE_SIZE, mode));
312 static void pgtable_pmd_populate(pud_t *pud, unsigned long addr, unsigned long end,
319 pmd = pmd_offset(pud, addr);
320 for (; addr < end; addr = next, pmd++) {
321 next = pmd_addr_end(addr, end);
323 if (kasan_pmd_populate_zero_shadow(pmd, addr, next, mode))
325 if (can_large_pmd(pmd, addr, next)) {
326 entry = __pmd(_pa(addr, _SEGMENT_SIZE, mode));
339 pgtable_pte_populate(pmd, addr, next, mode);
345 static void pgtable_pud_populate(p4d_t *p4d, unsigned long addr, unsigned long end,
352 pud = pud_offset(p4d, addr);
353 for (; addr < end; addr = next, pud++) {
354 next = pud_addr_end(addr, end);
356 if (kasan_pud_populate_zero_shadow(pud, addr, next, mode))
358 if (can_large_pud(pud, addr, next)) {
359 entry = __pud(_pa(addr, _REGION3_SIZE, mode));
372 pgtable_pmd_populate(pud, addr, next, mode);
378 static void pgtable_p4d_populate(pgd_t *pgd, unsigned long addr, unsigned long end,
385 p4d = p4d_offset(pgd, addr);
386 for (; addr < end; addr = next, p4d++) {
387 next = p4d_addr_end(addr, end);
389 if (kasan_p4d_populate_zero_shadow(p4d, addr, next, mode))
394 pgtable_pud_populate(p4d, addr, next, mode);
398 static void pgtable_populate(unsigned long addr, unsigned long end, enum populate_mode mode)
404 pgd = pgd_offset(&init_mm, addr);
405 for (; addr < end; addr = next, pgd++) {
406 next = pgd_addr_end(addr, end);
408 if (kasan_pgd_populate_zero_shadow(pgd, addr, next, mode))
417 pgtable_p4d_populate(pgd, addr, next, mode);