memory.c (555a098af6086256bc64d3806519f37ccae936e0) memory.c (e1f56c89b040134add93f686931cc266541d239a)
1/*
2 * linux/mm/memory.c
3 *
4 * Copyright (C) 1991, 1992, 1993, 1994 Linus Torvalds
5 */
6
7/*
8 * demand-loading started 01.12.91 - seems it is high on the list of

--- 368 unchanged lines hidden (view full) ---

377 * has been handled earlier when unmapping all the memory regions.
378 */
379static void free_pte_range(struct mmu_gather *tlb, pmd_t *pmd,
380 unsigned long addr)
381{
382 pgtable_t token = pmd_pgtable(*pmd);
383 pmd_clear(pmd);
384 pte_free_tlb(tlb, token, addr);
1/*
2 * linux/mm/memory.c
3 *
4 * Copyright (C) 1991, 1992, 1993, 1994 Linus Torvalds
5 */
6
7/*
8 * demand-loading started 01.12.91 - seems it is high on the list of

--- 368 unchanged lines hidden (view full) ---

377 * has been handled earlier when unmapping all the memory regions.
378 */
379static void free_pte_range(struct mmu_gather *tlb, pmd_t *pmd,
380 unsigned long addr)
381{
382 pgtable_t token = pmd_pgtable(*pmd);
383 pmd_clear(pmd);
384 pte_free_tlb(tlb, token, addr);
385 tlb->mm->nr_ptes--;
385 atomic_long_dec(&tlb->mm->nr_ptes);
386}
387
388static inline void free_pmd_range(struct mmu_gather *tlb, pud_t *pud,
389 unsigned long addr, unsigned long end,
390 unsigned long floor, unsigned long ceiling)
391{
392 pmd_t *pmd;
393 unsigned long next;

--- 174 unchanged lines hidden (view full) ---

568 * seen in-order. See the alpha page table accessors for the
569 * smp_read_barrier_depends() barriers in page table walking code.
570 */
571 smp_wmb(); /* Could be smp_wmb__xxx(before|after)_spin_lock */
572
573 spin_lock(&mm->page_table_lock);
574 wait_split_huge_page = 0;
575 if (likely(pmd_none(*pmd))) { /* Has another populated it ? */
386}
387
388static inline void free_pmd_range(struct mmu_gather *tlb, pud_t *pud,
389 unsigned long addr, unsigned long end,
390 unsigned long floor, unsigned long ceiling)
391{
392 pmd_t *pmd;
393 unsigned long next;

--- 174 unchanged lines hidden (view full) ---

568 * seen in-order. See the alpha page table accessors for the
569 * smp_read_barrier_depends() barriers in page table walking code.
570 */
571 smp_wmb(); /* Could be smp_wmb__xxx(before|after)_spin_lock */
572
573 spin_lock(&mm->page_table_lock);
574 wait_split_huge_page = 0;
575 if (likely(pmd_none(*pmd))) { /* Has another populated it ? */
576 mm->nr_ptes++;
576 atomic_long_inc(&mm->nr_ptes);
577 pmd_populate(mm, pmd, new);
578 new = NULL;
579 } else if (unlikely(pmd_trans_splitting(*pmd)))
580 wait_split_huge_page = 1;
581 spin_unlock(&mm->page_table_lock);
582 if (new)
583 pte_free(mm, new);
584 if (wait_split_huge_page)

--- 3687 unchanged lines hidden ---
577 pmd_populate(mm, pmd, new);
578 new = NULL;
579 } else if (unlikely(pmd_trans_splitting(*pmd)))
580 wait_split_huge_page = 1;
581 spin_unlock(&mm->page_table_lock);
582 if (new)
583 pte_free(mm, new);
584 if (wait_split_huge_page)

--- 3687 unchanged lines hidden ---