Re: [akpm-mm:mm-unstable 201/281] mm/rmap.c:1635:14: warning: variable 'pmd_mapped' set but not used

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi all,

This issue appeared in the v7[1], but it has been fixed in the v8[2],
so there's no need for concern.

[1] https://lore.kernel.org/linux-mm/20240610120809.66601-1-ioworker0@xxxxxxxxx
[2] https://lore.kernel.org/linux-mm/20240614015138.31461-4-ioworker0@xxxxxxxxx

Thanks,
Lance

On Fri, Jun 14, 2024 at 4:37 PM kernel test robot <lkp@xxxxxxxxx> wrote:
>
> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-unstable
> head:   8d0a686ea94347949eb0b689bb2a7c6028c0fa28
> commit: fa687ca2801a5b5ec92912abc362507242fd5cbc [201/281] mm-vmscan-avoid-split-lazyfree-thp-during-shrink_folio_list-fix
> config: openrisc-allnoconfig (https://download.01.org/0day-ci/archive/20240614/202406141650.B5cBNrbw-lkp@xxxxxxxxx/config)
> compiler: or1k-linux-gcc (GCC) 13.2.0
> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240614/202406141650.B5cBNrbw-lkp@xxxxxxxxx/reproduce)
>
> If you fix the issue in a separate patch/commit (i.e. not just a new version of
> the same patch/commit), kindly add following tags
> | Reported-by: kernel test robot <lkp@xxxxxxxxx>
> | Closes: https://lore.kernel.org/oe-kbuild-all/202406141650.B5cBNrbw-lkp@xxxxxxxxx/
>
> All warnings (new ones prefixed by >>):
>
>    mm/rmap.c: In function 'try_to_unmap_one':
> >> mm/rmap.c:1635:14: warning: variable 'pmd_mapped' set but not used [-Wunused-but-set-variable]
>     1635 |         bool pmd_mapped = false;
>          |              ^~~~~~~~~~
>
>
> vim +/pmd_mapped +1635 mm/rmap.c
>
> b06dc281aa99010 David Hildenbrand          2023-12-20  1619
> ^1da177e4c3f415 Linus Torvalds             2005-04-16  1620  /*
> 52629506420ce32 Joonsoo Kim                2014-01-21  1621   * @arg: enum ttu_flags will be passed to this argument
> ^1da177e4c3f415 Linus Torvalds             2005-04-16  1622   */
> 2f031c6f042cb8a Matthew Wilcox (Oracle     2022-01-29  1623) static bool try_to_unmap_one(struct folio *folio, struct vm_area_struct *vma,
> 52629506420ce32 Joonsoo Kim                2014-01-21  1624                  unsigned long address, void *arg)
> ^1da177e4c3f415 Linus Torvalds             2005-04-16  1625  {
> ^1da177e4c3f415 Linus Torvalds             2005-04-16  1626     struct mm_struct *mm = vma->vm_mm;
> 869f7ee6f647734 Matthew Wilcox (Oracle     2022-02-15  1627)    DEFINE_FOLIO_VMA_WALK(pvmw, folio, vma, address, 0);
> ^1da177e4c3f415 Linus Torvalds             2005-04-16  1628     pte_t pteval;
> c7ab0d2fdc84026 Kirill A. Shutemov         2017-02-24  1629     struct page *subpage;
> 6c287605fd56466 David Hildenbrand          2022-05-09  1630     bool anon_exclusive, ret = true;
> ac46d4f3c43241f Jérôme Glisse              2018-12-28  1631     struct mmu_notifier_range range;
> 4708f31885a0d3e Palmer Dabbelt             2020-04-06  1632     enum ttu_flags flags = (enum ttu_flags)(long)arg;
> c33c794828f2121 Ryan Roberts               2023-06-12  1633     unsigned long pfn;
> 935d4f0c6dc8b35 Ryan Roberts               2023-09-22  1634     unsigned long hsz = 0;
> 87b8388b6693bea Lance Yang                 2024-06-10 @1635     bool pmd_mapped = false;
> ^1da177e4c3f415 Linus Torvalds             2005-04-16  1636
> 732ed55823fc3ad Hugh Dickins               2021-06-15  1637     /*
> 732ed55823fc3ad Hugh Dickins               2021-06-15  1638      * When racing against e.g. zap_pte_range() on another cpu,
> ca1a0746182c3c0 David Hildenbrand          2023-12-20  1639      * in between its ptep_get_and_clear_full() and folio_remove_rmap_*(),
> 1fb08ac63beedf5 Yang Shi                   2021-06-30  1640      * try_to_unmap() may return before page_mapped() has become false,
> 732ed55823fc3ad Hugh Dickins               2021-06-15  1641      * if page table locking is skipped: use TTU_SYNC to wait for that.
> 732ed55823fc3ad Hugh Dickins               2021-06-15  1642      */
> 732ed55823fc3ad Hugh Dickins               2021-06-15  1643     if (flags & TTU_SYNC)
> 732ed55823fc3ad Hugh Dickins               2021-06-15  1644             pvmw.flags = PVMW_SYNC;
> 732ed55823fc3ad Hugh Dickins               2021-06-15  1645
> 369ea8242c0fb52 Jérôme Glisse              2017-08-31  1646     /*
> 017b1660df89f5f Mike Kravetz               2018-10-05  1647      * For THP, we have to assume the worse case ie pmd for invalidation.
> 017b1660df89f5f Mike Kravetz               2018-10-05  1648      * For hugetlb, it could be much worse if we need to do pud
> 017b1660df89f5f Mike Kravetz               2018-10-05  1649      * invalidation in the case of pmd sharing.
> 017b1660df89f5f Mike Kravetz               2018-10-05  1650      *
> 869f7ee6f647734 Matthew Wilcox (Oracle     2022-02-15  1651)     * Note that the folio can not be freed in this function as call of
> 869f7ee6f647734 Matthew Wilcox (Oracle     2022-02-15  1652)     * try_to_unmap() must hold a reference on the folio.
> 369ea8242c0fb52 Jérôme Glisse              2017-08-31  1653      */
> 2aff7a4755bed28 Matthew Wilcox (Oracle     2022-02-03  1654)    range.end = vma_address_end(&pvmw);
> 7d4a8be0c4b2b7f Alistair Popple            2023-01-10  1655     mmu_notifier_range_init(&range, MMU_NOTIFY_CLEAR, 0, vma->vm_mm,
> 494334e43c16d63 Hugh Dickins               2021-06-15  1656                             address, range.end);
> 869f7ee6f647734 Matthew Wilcox (Oracle     2022-02-15  1657)    if (folio_test_hugetlb(folio)) {
> 017b1660df89f5f Mike Kravetz               2018-10-05  1658             /*
> 017b1660df89f5f Mike Kravetz               2018-10-05  1659              * If sharing is possible, start and end will be adjusted
> 017b1660df89f5f Mike Kravetz               2018-10-05  1660              * accordingly.
> 017b1660df89f5f Mike Kravetz               2018-10-05  1661              */
> ac46d4f3c43241f Jérôme Glisse              2018-12-28  1662             adjust_range_if_pmd_sharing_possible(vma, &range.start,
> ac46d4f3c43241f Jérôme Glisse              2018-12-28  1663                                                  &range.end);
> 935d4f0c6dc8b35 Ryan Roberts               2023-09-22  1664
> 935d4f0c6dc8b35 Ryan Roberts               2023-09-22  1665             /* We need the huge page size for set_huge_pte_at() */
> 935d4f0c6dc8b35 Ryan Roberts               2023-09-22  1666             hsz = huge_page_size(hstate_vma(vma));
> 017b1660df89f5f Mike Kravetz               2018-10-05  1667     }
> ac46d4f3c43241f Jérôme Glisse              2018-12-28  1668     mmu_notifier_invalidate_range_start(&range);
> 369ea8242c0fb52 Jérôme Glisse              2017-08-31  1669
> c7ab0d2fdc84026 Kirill A. Shutemov         2017-02-24  1670     while (page_vma_mapped_walk(&pvmw)) {
> ^1da177e4c3f415 Linus Torvalds             2005-04-16  1671             /*
> 869f7ee6f647734 Matthew Wilcox (Oracle     2022-02-15  1672)             * If the folio is in an mlock()d vma, we must not swap it out.
> ^1da177e4c3f415 Linus Torvalds             2005-04-16  1673              */
> efdb6720b44b2f0 Hugh Dickins               2021-07-11  1674             if (!(flags & TTU_IGNORE_MLOCK) &&
> efdb6720b44b2f0 Hugh Dickins               2021-07-11  1675                 (vma->vm_flags & VM_LOCKED)) {
> cea86fe246b694a Hugh Dickins               2022-02-14  1676                     /* Restore the mlock which got missed */
> 1acbc3f936146d1 Yin Fengwei                2023-09-18  1677                     if (!folio_test_large(folio))
> 1acbc3f936146d1 Yin Fengwei                2023-09-18  1678                             mlock_vma_folio(folio, vma);
> 3ee78e6ad3bc52e Lance Yang                 2024-06-10  1679                     goto walk_done_err;
> b87537d9e2feb30 Hugh Dickins               2015-11-05  1680             }
> c7ab0d2fdc84026 Kirill A. Shutemov         2017-02-24  1681
> 87b8388b6693bea Lance Yang                 2024-06-10  1682             if (!pvmw.pte) {
> 87b8388b6693bea Lance Yang                 2024-06-10  1683                     pmd_mapped = true;
> 87b8388b6693bea Lance Yang                 2024-06-10  1684                     if (unmap_huge_pmd_locked(vma, pvmw.address, pvmw.pmd,
> 87b8388b6693bea Lance Yang                 2024-06-10  1685                                               folio))
> 87b8388b6693bea Lance Yang                 2024-06-10  1686                             goto walk_done;
> 87b8388b6693bea Lance Yang                 2024-06-10  1687
> 87b8388b6693bea Lance Yang                 2024-06-10  1688                     if (flags & TTU_SPLIT_HUGE_PMD) {
> df0f2ce432be374 Lance Yang                 2024-06-10  1689                             /*
> 87b8388b6693bea Lance Yang                 2024-06-10  1690                              * We temporarily have to drop the PTL and start
> 87b8388b6693bea Lance Yang                 2024-06-10  1691                              * once again from that now-PTE-mapped page
> 87b8388b6693bea Lance Yang                 2024-06-10  1692                              * table.
> df0f2ce432be374 Lance Yang                 2024-06-10  1693                              */
> 87b8388b6693bea Lance Yang                 2024-06-10  1694                             split_huge_pmd_locked(vma, pvmw.address,
> 87b8388b6693bea Lance Yang                 2024-06-10  1695                                                   pvmw.pmd, false, folio);
> df0f2ce432be374 Lance Yang                 2024-06-10  1696                             flags &= ~TTU_SPLIT_HUGE_PMD;
> df0f2ce432be374 Lance Yang                 2024-06-10  1697                             page_vma_mapped_walk_restart(&pvmw);
> df0f2ce432be374 Lance Yang                 2024-06-10  1698                             continue;
> df0f2ce432be374 Lance Yang                 2024-06-10  1699                     }
> 87b8388b6693bea Lance Yang                 2024-06-10  1700             }
> df0f2ce432be374 Lance Yang                 2024-06-10  1701
> df0f2ce432be374 Lance Yang                 2024-06-10  1702             /* Unexpected PMD-mapped THP? */
> df0f2ce432be374 Lance Yang                 2024-06-10  1703             VM_BUG_ON_FOLIO(!pvmw.pte, folio);
> df0f2ce432be374 Lance Yang                 2024-06-10  1704
> c33c794828f2121 Ryan Roberts               2023-06-12  1705             pfn = pte_pfn(ptep_get(pvmw.pte));
> c33c794828f2121 Ryan Roberts               2023-06-12  1706             subpage = folio_page(folio, pfn - folio_pfn(folio));
> 785373b4c38719f Linus Torvalds             2017-08-29  1707             address = pvmw.address;
> 6c287605fd56466 David Hildenbrand          2022-05-09  1708             anon_exclusive = folio_test_anon(folio) &&
> 6c287605fd56466 David Hildenbrand          2022-05-09  1709                              PageAnonExclusive(subpage);
> 785373b4c38719f Linus Torvalds             2017-08-29  1710
> dfc7ab57560da38 Baolin Wang                2022-05-09  1711             if (folio_test_hugetlb(folio)) {
> 0506c31d0a8443a Baolin Wang                2022-06-20  1712                     bool anon = folio_test_anon(folio);
> 0506c31d0a8443a Baolin Wang                2022-06-20  1713
> a00a875925a418b Baolin Wang                2022-05-13  1714                     /*
> a00a875925a418b Baolin Wang                2022-05-13  1715                      * The try_to_unmap() is only passed a hugetlb page
> a00a875925a418b Baolin Wang                2022-05-13  1716                      * in the case where the hugetlb page is poisoned.
> a00a875925a418b Baolin Wang                2022-05-13  1717                      */
> a00a875925a418b Baolin Wang                2022-05-13  1718                     VM_BUG_ON_PAGE(!PageHWPoison(subpage), subpage);
> 017b1660df89f5f Mike Kravetz               2018-10-05  1719                     /*
> 54205e9c5425049 Baolin Wang                2022-05-09  1720                      * huge_pmd_unshare may unmap an entire PMD page.
> 54205e9c5425049 Baolin Wang                2022-05-09  1721                      * There is no way of knowing exactly which PMDs may
> 54205e9c5425049 Baolin Wang                2022-05-09  1722                      * be cached for this mm, so we must flush them all.
> 54205e9c5425049 Baolin Wang                2022-05-09  1723                      * start/end were already adjusted above to cover this
> 54205e9c5425049 Baolin Wang                2022-05-09  1724                      * range.
> 017b1660df89f5f Mike Kravetz               2018-10-05  1725                      */
> ac46d4f3c43241f Jérôme Glisse              2018-12-28  1726                     flush_cache_range(vma, range.start, range.end);
> 54205e9c5425049 Baolin Wang                2022-05-09  1727
> dfc7ab57560da38 Baolin Wang                2022-05-09  1728                     /*
> dfc7ab57560da38 Baolin Wang                2022-05-09  1729                      * To call huge_pmd_unshare, i_mmap_rwsem must be
> dfc7ab57560da38 Baolin Wang                2022-05-09  1730                      * held in write mode.  Caller needs to explicitly
> dfc7ab57560da38 Baolin Wang                2022-05-09  1731                      * do this outside rmap routines.
> 40549ba8f8e0ed1 Mike Kravetz               2022-09-14  1732                      *
> 40549ba8f8e0ed1 Mike Kravetz               2022-09-14  1733                      * We also must hold hugetlb vma_lock in write mode.
> 40549ba8f8e0ed1 Mike Kravetz               2022-09-14  1734                      * Lock order dictates acquiring vma_lock BEFORE
> 40549ba8f8e0ed1 Mike Kravetz               2022-09-14  1735                      * i_mmap_rwsem.  We can only try lock here and fail
> 40549ba8f8e0ed1 Mike Kravetz               2022-09-14  1736                      * if unsuccessful.
> 40549ba8f8e0ed1 Mike Kravetz               2022-09-14  1737                      */
> 40549ba8f8e0ed1 Mike Kravetz               2022-09-14  1738                     if (!anon) {
> 40549ba8f8e0ed1 Mike Kravetz               2022-09-14  1739                             VM_BUG_ON(!(flags & TTU_RMAP_LOCKED));
> 3ee78e6ad3bc52e Lance Yang                 2024-06-10  1740                             if (!hugetlb_vma_trylock_write(vma))
> 3ee78e6ad3bc52e Lance Yang                 2024-06-10  1741                                     goto walk_done_err;
> 40549ba8f8e0ed1 Mike Kravetz               2022-09-14  1742                             if (huge_pmd_unshare(mm, vma, address, pvmw.pte)) {
> 40549ba8f8e0ed1 Mike Kravetz               2022-09-14  1743                                     hugetlb_vma_unlock_write(vma);
> 40549ba8f8e0ed1 Mike Kravetz               2022-09-14  1744                                     flush_tlb_range(vma,
> 40549ba8f8e0ed1 Mike Kravetz               2022-09-14  1745                                             range.start, range.end);
> 40549ba8f8e0ed1 Mike Kravetz               2022-09-14  1746                                     /*
> 40549ba8f8e0ed1 Mike Kravetz               2022-09-14  1747                                      * The ref count of the PMD page was
> 40549ba8f8e0ed1 Mike Kravetz               2022-09-14  1748                                      * dropped which is part of the way map
> 40549ba8f8e0ed1 Mike Kravetz               2022-09-14  1749                                      * counting is done for shared PMDs.
> 40549ba8f8e0ed1 Mike Kravetz               2022-09-14  1750                                      * Return 'true' here.  When there is
> 40549ba8f8e0ed1 Mike Kravetz               2022-09-14  1751                                      * no other sharing, huge_pmd_unshare
> 40549ba8f8e0ed1 Mike Kravetz               2022-09-14  1752                                      * returns false and we will unmap the
> 40549ba8f8e0ed1 Mike Kravetz               2022-09-14  1753                                      * actual page and drop map count
> 017b1660df89f5f Mike Kravetz               2018-10-05  1754                                      * to zero.
> 017b1660df89f5f Mike Kravetz               2018-10-05  1755                                      */
> 3ee78e6ad3bc52e Lance Yang                 2024-06-10  1756                                     goto walk_done;
> 017b1660df89f5f Mike Kravetz               2018-10-05  1757                             }
> 40549ba8f8e0ed1 Mike Kravetz               2022-09-14  1758                             hugetlb_vma_unlock_write(vma);
> 40549ba8f8e0ed1 Mike Kravetz               2022-09-14  1759                     }
> a00a875925a418b Baolin Wang                2022-05-13  1760                     pteval = huge_ptep_clear_flush(vma, address, pvmw.pte);
> 54205e9c5425049 Baolin Wang                2022-05-09  1761             } else {
> c33c794828f2121 Ryan Roberts               2023-06-12  1762                     flush_cache_page(vma, address, pfn);
> 088b8aa537c2c76 David Hildenbrand          2022-09-01  1763                     /* Nuke the page table entry. */
> 088b8aa537c2c76 David Hildenbrand          2022-09-01  1764                     if (should_defer_flush(mm, flags)) {
> 72b252aed506b8f Mel Gorman                 2015-09-04  1765                             /*
> c7ab0d2fdc84026 Kirill A. Shutemov         2017-02-24  1766                              * We clear the PTE but do not flush so potentially
> 869f7ee6f647734 Matthew Wilcox (Oracle     2022-02-15  1767)                             * a remote CPU could still be writing to the folio.
> c7ab0d2fdc84026 Kirill A. Shutemov         2017-02-24  1768                              * If the entry was previously clean then the
> c7ab0d2fdc84026 Kirill A. Shutemov         2017-02-24  1769                              * architecture must guarantee that a clear->dirty
> c7ab0d2fdc84026 Kirill A. Shutemov         2017-02-24  1770                              * transition on a cached TLB entry is written through
> c7ab0d2fdc84026 Kirill A. Shutemov         2017-02-24  1771                              * and traps if the PTE is unmapped.
> 72b252aed506b8f Mel Gorman                 2015-09-04  1772                              */
> 785373b4c38719f Linus Torvalds             2017-08-29  1773                             pteval = ptep_get_and_clear(mm, address, pvmw.pte);
> 72b252aed506b8f Mel Gorman                 2015-09-04  1774
> f73419bb89d606d Barry Song                 2023-07-17  1775                             set_tlb_ubc_flush_pending(mm, pteval, address);
> 72b252aed506b8f Mel Gorman                 2015-09-04  1776                     } else {
> 785373b4c38719f Linus Torvalds             2017-08-29  1777                             pteval = ptep_clear_flush(vma, address, pvmw.pte);
> 72b252aed506b8f Mel Gorman                 2015-09-04  1778                     }
> a00a875925a418b Baolin Wang                2022-05-13  1779             }
> ^1da177e4c3f415 Linus Torvalds             2005-04-16  1780
> 999dad824c39ed1 Peter Xu                   2022-05-12  1781             /*
> 999dad824c39ed1 Peter Xu                   2022-05-12  1782              * Now the pte is cleared. If this pte was uffd-wp armed,
> 999dad824c39ed1 Peter Xu                   2022-05-12  1783              * we may want to replace a none pte with a marker pte if
> 999dad824c39ed1 Peter Xu                   2022-05-12  1784              * it's file-backed, so we don't lose the tracking info.
> 999dad824c39ed1 Peter Xu                   2022-05-12  1785              */
> 999dad824c39ed1 Peter Xu                   2022-05-12  1786             pte_install_uffd_wp_if_needed(vma, address, pvmw.pte, pteval);
> 999dad824c39ed1 Peter Xu                   2022-05-12  1787
> 869f7ee6f647734 Matthew Wilcox (Oracle     2022-02-15  1788)            /* Set the dirty flag on the folio now the pte is gone. */
> ^1da177e4c3f415 Linus Torvalds             2005-04-16  1789             if (pte_dirty(pteval))
> 869f7ee6f647734 Matthew Wilcox (Oracle     2022-02-15  1790)                    folio_mark_dirty(folio);
> ^1da177e4c3f415 Linus Torvalds             2005-04-16  1791
> 365e9c87a982c03 Hugh Dickins               2005-10-29  1792             /* Update high watermark before we lower rss */
> 365e9c87a982c03 Hugh Dickins               2005-10-29  1793             update_hiwater_rss(mm);
> 365e9c87a982c03 Hugh Dickins               2005-10-29  1794
> 6da6b1d4a7df8c3 Naoya Horiguchi            2023-02-21  1795             if (PageHWPoison(subpage) && (flags & TTU_HWPOISON)) {
> 5fd27b8e7dbcab0 Punit Agrawal              2017-07-06  1796                     pteval = swp_entry_to_pte(make_hwpoison_entry(subpage));
> 869f7ee6f647734 Matthew Wilcox (Oracle     2022-02-15  1797)                    if (folio_test_hugetlb(folio)) {
> 869f7ee6f647734 Matthew Wilcox (Oracle     2022-02-15  1798)                            hugetlb_count_sub(folio_nr_pages(folio), mm);
> 935d4f0c6dc8b35 Ryan Roberts               2023-09-22  1799                             set_huge_pte_at(mm, address, pvmw.pte, pteval,
> 935d4f0c6dc8b35 Ryan Roberts               2023-09-22  1800                                             hsz);
> 5d317b2b6536592 Naoya Horiguchi            2015-11-05  1801                     } else {
> a23f517b0e15544 Kefeng Wang                2024-01-11  1802                             dec_mm_counter(mm, mm_counter(folio));
> 785373b4c38719f Linus Torvalds             2017-08-29  1803                             set_pte_at(mm, address, pvmw.pte, pteval);
> 5f24ae585be9856 Naoya Horiguchi            2012-12-12  1804                     }
> c7ab0d2fdc84026 Kirill A. Shutemov         2017-02-24  1805
> bce73e4842390f7 Christian Borntraeger      2018-07-13  1806             } else if (pte_unused(pteval) && !userfaultfd_armed(vma)) {
> 45961722f8e30ce Konstantin Weitz           2013-04-17  1807                     /*
> 45961722f8e30ce Konstantin Weitz           2013-04-17  1808                      * The guest indicated that the page content is of no
> 45961722f8e30ce Konstantin Weitz           2013-04-17  1809                      * interest anymore. Simply discard the pte, vmscan
> 45961722f8e30ce Konstantin Weitz           2013-04-17  1810                      * will take care of the rest.
> bce73e4842390f7 Christian Borntraeger      2018-07-13  1811                      * A future reference will then fault in a new zero
> bce73e4842390f7 Christian Borntraeger      2018-07-13  1812                      * page. When userfaultfd is active, we must not drop
> bce73e4842390f7 Christian Borntraeger      2018-07-13  1813                      * this page though, as its main user (postcopy
> bce73e4842390f7 Christian Borntraeger      2018-07-13  1814                      * migration) will not expect userfaults on already
> bce73e4842390f7 Christian Borntraeger      2018-07-13  1815                      * copied pages.
> 45961722f8e30ce Konstantin Weitz           2013-04-17  1816                      */
> a23f517b0e15544 Kefeng Wang                2024-01-11  1817                     dec_mm_counter(mm, mm_counter(folio));
> 869f7ee6f647734 Matthew Wilcox (Oracle     2022-02-15  1818)            } else if (folio_test_anon(folio)) {
> cfeed8ffe55b37f David Hildenbrand          2023-08-21  1819                     swp_entry_t entry = page_swap_entry(subpage);
> 179ef71cbc08525 Cyrill Gorcunov            2013-08-13  1820                     pte_t swp_pte;
> ^1da177e4c3f415 Linus Torvalds             2005-04-16  1821                     /*
> ^1da177e4c3f415 Linus Torvalds             2005-04-16  1822                      * Store the swap location in the pte.
> ^1da177e4c3f415 Linus Torvalds             2005-04-16  1823                      * See handle_pte_fault() ...
> ^1da177e4c3f415 Linus Torvalds             2005-04-16  1824                      */
> 869f7ee6f647734 Matthew Wilcox (Oracle     2022-02-15  1825)                    if (unlikely(folio_test_swapbacked(folio) !=
> 869f7ee6f647734 Matthew Wilcox (Oracle     2022-02-15  1826)                                    folio_test_swapcache(folio))) {
> fa687ca2801a5b5 Lance Yang                 2024-06-13  1827                             WARN_ON_ONCE(1);
> 3ee78e6ad3bc52e Lance Yang                 2024-06-10  1828                             goto walk_done_err;
> eb94a8784427b28 Minchan Kim                2017-05-03  1829                     }
> 854e9ed09dedf0c Minchan Kim                2016-01-15  1830
> 802a3a92ad7ac0b Shaohua Li                 2017-05-03  1831                     /* MADV_FREE page check */
> 869f7ee6f647734 Matthew Wilcox (Oracle     2022-02-15  1832)                    if (!folio_test_swapbacked(folio)) {
> 6c8e2a256915a22 Mauricio Faria de Oliveira 2022-03-24  1833                             int ref_count, map_count;
> 6c8e2a256915a22 Mauricio Faria de Oliveira 2022-03-24  1834
> 6c8e2a256915a22 Mauricio Faria de Oliveira 2022-03-24  1835                             /*
> 6c8e2a256915a22 Mauricio Faria de Oliveira 2022-03-24  1836                              * Synchronize with gup_pte_range():
> 6c8e2a256915a22 Mauricio Faria de Oliveira 2022-03-24  1837                              * - clear PTE; barrier; read refcount
> 6c8e2a256915a22 Mauricio Faria de Oliveira 2022-03-24  1838                              * - inc refcount; barrier; read PTE
> 6c8e2a256915a22 Mauricio Faria de Oliveira 2022-03-24  1839                              */
> 6c8e2a256915a22 Mauricio Faria de Oliveira 2022-03-24  1840                             smp_mb();
> 6c8e2a256915a22 Mauricio Faria de Oliveira 2022-03-24  1841
> 6c8e2a256915a22 Mauricio Faria de Oliveira 2022-03-24  1842                             ref_count = folio_ref_count(folio);
> 6c8e2a256915a22 Mauricio Faria de Oliveira 2022-03-24  1843                             map_count = folio_mapcount(folio);
> 6c8e2a256915a22 Mauricio Faria de Oliveira 2022-03-24  1844
> 6c8e2a256915a22 Mauricio Faria de Oliveira 2022-03-24  1845                             /*
> 6c8e2a256915a22 Mauricio Faria de Oliveira 2022-03-24  1846                              * Order reads for page refcount and dirty flag
> 6c8e2a256915a22 Mauricio Faria de Oliveira 2022-03-24  1847                              * (see comments in __remove_mapping()).
> 6c8e2a256915a22 Mauricio Faria de Oliveira 2022-03-24  1848                              */
> 6c8e2a256915a22 Mauricio Faria de Oliveira 2022-03-24  1849                             smp_rmb();
> 6c8e2a256915a22 Mauricio Faria de Oliveira 2022-03-24  1850
> 6c8e2a256915a22 Mauricio Faria de Oliveira 2022-03-24  1851                             /*
> 6c8e2a256915a22 Mauricio Faria de Oliveira 2022-03-24  1852                              * The only page refs must be one from isolation
> 6c8e2a256915a22 Mauricio Faria de Oliveira 2022-03-24  1853                              * plus the rmap(s) (dropped by discard:).
> 6c8e2a256915a22 Mauricio Faria de Oliveira 2022-03-24  1854                              */
> 6c8e2a256915a22 Mauricio Faria de Oliveira 2022-03-24  1855                             if (ref_count == 1 + map_count &&
> 6c8e2a256915a22 Mauricio Faria de Oliveira 2022-03-24  1856                                 !folio_test_dirty(folio)) {
> 854e9ed09dedf0c Minchan Kim                2016-01-15  1857                                     dec_mm_counter(mm, MM_ANONPAGES);
> 854e9ed09dedf0c Minchan Kim                2016-01-15  1858                                     goto discard;
> 854e9ed09dedf0c Minchan Kim                2016-01-15  1859                             }
> 854e9ed09dedf0c Minchan Kim                2016-01-15  1860
> 802a3a92ad7ac0b Shaohua Li                 2017-05-03  1861                             /*
> 869f7ee6f647734 Matthew Wilcox (Oracle     2022-02-15  1862)                             * If the folio was redirtied, it cannot be
> 802a3a92ad7ac0b Shaohua Li                 2017-05-03  1863                              * discarded. Remap the page to page table.
> 802a3a92ad7ac0b Shaohua Li                 2017-05-03  1864                              */
> 785373b4c38719f Linus Torvalds             2017-08-29  1865                             set_pte_at(mm, address, pvmw.pte, pteval);
> 869f7ee6f647734 Matthew Wilcox (Oracle     2022-02-15  1866)                            folio_set_swapbacked(folio);
> 3ee78e6ad3bc52e Lance Yang                 2024-06-10  1867                             goto walk_done_err;
> 802a3a92ad7ac0b Shaohua Li                 2017-05-03  1868                     }
> 802a3a92ad7ac0b Shaohua Li                 2017-05-03  1869
> 570a335b8e22579 Hugh Dickins               2009-12-14  1870                     if (swap_duplicate(entry) < 0) {
> 785373b4c38719f Linus Torvalds             2017-08-29  1871                             set_pte_at(mm, address, pvmw.pte, pteval);
> 3ee78e6ad3bc52e Lance Yang                 2024-06-10  1872                             goto walk_done_err;
> 570a335b8e22579 Hugh Dickins               2009-12-14  1873                     }
> ca827d55ebaa24d Khalid Aziz                2018-02-21  1874                     if (arch_unmap_one(mm, vma, address, pteval) < 0) {
> 322842ea3c72649 David Hildenbrand          2022-05-09  1875                             swap_free(entry);
> ca827d55ebaa24d Khalid Aziz                2018-02-21  1876                             set_pte_at(mm, address, pvmw.pte, pteval);
> 3ee78e6ad3bc52e Lance Yang                 2024-06-10  1877                             goto walk_done_err;
> ca827d55ebaa24d Khalid Aziz                2018-02-21  1878                     }
> 088b8aa537c2c76 David Hildenbrand          2022-09-01  1879
> e3b4b1374f87c71 David Hildenbrand          2023-12-20  1880                     /* See folio_try_share_anon_rmap(): clear PTE first. */
> 6c287605fd56466 David Hildenbrand          2022-05-09  1881                     if (anon_exclusive &&
> e3b4b1374f87c71 David Hildenbrand          2023-12-20  1882                         folio_try_share_anon_rmap_pte(folio, subpage)) {
> 6c287605fd56466 David Hildenbrand          2022-05-09  1883                             swap_free(entry);
> 6c287605fd56466 David Hildenbrand          2022-05-09  1884                             set_pte_at(mm, address, pvmw.pte, pteval);
> 3ee78e6ad3bc52e Lance Yang                 2024-06-10  1885                             goto walk_done_err;
> 6c287605fd56466 David Hildenbrand          2022-05-09  1886                     }
> ^1da177e4c3f415 Linus Torvalds             2005-04-16  1887                     if (list_empty(&mm->mmlist)) {
> ^1da177e4c3f415 Linus Torvalds             2005-04-16  1888                             spin_lock(&mmlist_lock);
> f412ac08c9861b4 Hugh Dickins               2005-10-29  1889                             if (list_empty(&mm->mmlist))
> ^1da177e4c3f415 Linus Torvalds             2005-04-16  1890                                     list_add(&mm->mmlist, &init_mm.mmlist);
> ^1da177e4c3f415 Linus Torvalds             2005-04-16  1891                             spin_unlock(&mmlist_lock);
> ^1da177e4c3f415 Linus Torvalds             2005-04-16  1892                     }
> d559db086ff5be9 KAMEZAWA Hiroyuki          2010-03-05  1893                     dec_mm_counter(mm, MM_ANONPAGES);
> b084d4353ff99d8 KAMEZAWA Hiroyuki          2010-03-05  1894                     inc_mm_counter(mm, MM_SWAPENTS);
> 179ef71cbc08525 Cyrill Gorcunov            2013-08-13  1895                     swp_pte = swp_entry_to_pte(entry);
> 1493a1913e34b0a David Hildenbrand          2022-05-09  1896                     if (anon_exclusive)
> 1493a1913e34b0a David Hildenbrand          2022-05-09  1897                             swp_pte = pte_swp_mkexclusive(swp_pte);
> 179ef71cbc08525 Cyrill Gorcunov            2013-08-13  1898                     if (pte_soft_dirty(pteval))
> 179ef71cbc08525 Cyrill Gorcunov            2013-08-13  1899                             swp_pte = pte_swp_mksoft_dirty(swp_pte);
> f45ec5ff16a75f9 Peter Xu                   2020-04-06  1900                     if (pte_uffd_wp(pteval))
> f45ec5ff16a75f9 Peter Xu                   2020-04-06  1901                             swp_pte = pte_swp_mkuffd_wp(swp_pte);
> 785373b4c38719f Linus Torvalds             2017-08-29  1902                     set_pte_at(mm, address, pvmw.pte, swp_pte);
> 0f10851ea475e08 Jérôme Glisse              2017-11-15  1903             } else {
> 0f10851ea475e08 Jérôme Glisse              2017-11-15  1904                     /*
> 869f7ee6f647734 Matthew Wilcox (Oracle     2022-02-15  1905)                     * This is a locked file-backed folio,
> 869f7ee6f647734 Matthew Wilcox (Oracle     2022-02-15  1906)                     * so it cannot be removed from the page
> 869f7ee6f647734 Matthew Wilcox (Oracle     2022-02-15  1907)                     * cache and replaced by a new folio before
> 869f7ee6f647734 Matthew Wilcox (Oracle     2022-02-15  1908)                     * mmu_notifier_invalidate_range_end, so no
> 869f7ee6f647734 Matthew Wilcox (Oracle     2022-02-15  1909)                     * concurrent thread might update its page table
> 869f7ee6f647734 Matthew Wilcox (Oracle     2022-02-15  1910)                     * to point at a new folio while a device is
> 869f7ee6f647734 Matthew Wilcox (Oracle     2022-02-15  1911)                     * still using this folio.
> 0f10851ea475e08 Jérôme Glisse              2017-11-15  1912                      *
> ee65728e103bb7d Mike Rapoport              2022-06-27  1913                      * See Documentation/mm/mmu_notifier.rst
> 0f10851ea475e08 Jérôme Glisse              2017-11-15  1914                      */
> 6b27cc6c66abf0f Kefeng Wang                2024-01-11  1915                     dec_mm_counter(mm, mm_counter_file(folio));
> 0f10851ea475e08 Jérôme Glisse              2017-11-15  1916             }
> 854e9ed09dedf0c Minchan Kim                2016-01-15  1917  discard:
> e135826b2da0cf2 David Hildenbrand          2023-12-20  1918             if (unlikely(folio_test_hugetlb(folio)))
> e135826b2da0cf2 David Hildenbrand          2023-12-20  1919                     hugetlb_remove_rmap(folio);
> e135826b2da0cf2 David Hildenbrand          2023-12-20  1920             else
> ca1a0746182c3c0 David Hildenbrand          2023-12-20  1921                     folio_remove_rmap_pte(folio, subpage, vma);
> b74355078b65542 Hugh Dickins               2022-02-14  1922             if (vma->vm_flags & VM_LOCKED)
> 96f97c438f61ddb Lorenzo Stoakes            2023-01-12  1923                     mlock_drain_local();
> 869f7ee6f647734 Matthew Wilcox (Oracle     2022-02-15  1924)            folio_put(folio);
> 3ee78e6ad3bc52e Lance Yang                 2024-06-10  1925             continue;
> 3ee78e6ad3bc52e Lance Yang                 2024-06-10  1926  walk_done_err:
> 3ee78e6ad3bc52e Lance Yang                 2024-06-10  1927             ret = false;
> 3ee78e6ad3bc52e Lance Yang                 2024-06-10  1928  walk_done:
> 3ee78e6ad3bc52e Lance Yang                 2024-06-10  1929             page_vma_mapped_walk_done(&pvmw);
> 3ee78e6ad3bc52e Lance Yang                 2024-06-10  1930             break;
> c7ab0d2fdc84026 Kirill A. Shutemov         2017-02-24  1931     }
> 369ea8242c0fb52 Jérôme Glisse              2017-08-31  1932
> ac46d4f3c43241f Jérôme Glisse              2018-12-28  1933     mmu_notifier_invalidate_range_end(&range);
> 369ea8242c0fb52 Jérôme Glisse              2017-08-31  1934
> caed0f486e582ee KOSAKI Motohiro            2009-12-14  1935     return ret;
> ^1da177e4c3f415 Linus Torvalds             2005-04-16  1936  }
> ^1da177e4c3f415 Linus Torvalds             2005-04-16  1937
>
> :::::: The code at line 1635 was first introduced by commit
> :::::: 87b8388b6693beaad43d5d3f41534d5e042f9388 mm/vmscan: avoid split lazyfree THP during shrink_folio_list()
>
> :::::: TO: Lance Yang <ioworker0@xxxxxxxxx>
> :::::: CC: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
>
> --
> 0-DAY CI Kernel Test Service
> https://github.com/intel/lkp-tests/wiki





[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux