Lines Matching refs:start
98 static void vmemmap_mark_sub_pmd_used(unsigned long start, unsigned long end)
106 memset((void *)start, 0, sizeof(struct page));
109 static void vmemmap_use_sub_pmd(unsigned long start, unsigned long end)
115 if (unused_sub_pmd_start == start) {
122 vmemmap_mark_sub_pmd_used(start, end);
125 static void vmemmap_use_new_sub_pmd(unsigned long start, unsigned long end)
127 unsigned long page = ALIGN_DOWN(start, PMD_SIZE);
132 vmemmap_mark_sub_pmd_used(start, end);
135 if (!IS_ALIGNED(start, PMD_SIZE))
136 memset((void *)page, PAGE_UNUSED, start - page);
147 static bool vmemmap_unuse_sub_pmd(unsigned long start, unsigned long end)
149 unsigned long page = ALIGN_DOWN(start, PMD_SIZE);
152 memset((void *)start, PAGE_UNUSED, end - start);
198 static void try_free_pte_table(pmd_t *pmd, unsigned long start)
204 pte = pte_offset_kernel(pmd, start);
295 static void try_free_pmd_table(pud_t *pud, unsigned long start)
300 pmd = pmd_offset(pud, start);
362 static void try_free_pud_table(p4d_t *p4d, unsigned long start)
367 pud = pud_offset(p4d, start);
407 static void try_free_p4d_table(pgd_t *pgd, unsigned long start)
412 p4d = p4d_offset(pgd, start);
421 static int modify_pagetable(unsigned long start, unsigned long end, bool add,
429 if (WARN_ON_ONCE(!PAGE_ALIGNED(start | end)))
434 for (addr = start; addr < end; addr = next) {
456 flush_tlb_kernel_range(start, end);
460 static int add_pagetable(unsigned long start, unsigned long end, bool direct)
462 return modify_pagetable(start, end, true, direct);
465 static int remove_pagetable(unsigned long start, unsigned long end, bool direct)
467 return modify_pagetable(start, end, false, direct);
473 static int vmem_add_range(unsigned long start, unsigned long size)
475 start = (unsigned long)__va(start);
476 return add_pagetable(start, start + size, true);
482 static void vmem_remove_range(unsigned long start, unsigned long size)
484 start = (unsigned long)__va(start);
485 remove_pagetable(start, start + size, true);
491 int __meminit vmemmap_populate(unsigned long start, unsigned long end, int node,
498 ret = add_pagetable(start, end, false);
500 remove_pagetable(start, end, false);
505 void vmemmap_free(unsigned long start, unsigned long end,
509 remove_pagetable(start, end, false);
513 void vmem_remove_mapping(unsigned long start, unsigned long size)
516 vmem_remove_range(start, size);
524 mhp_range.start = 0;
529 int vmem_add_mapping(unsigned long start, unsigned long size)
534 if (start < range.start ||
535 start + size > range.end + 1 ||
536 start + size < start)
540 ret = vmem_add_range(start, size);
542 vmem_remove_range(start, size);