CC: kbuild-...@lists.01.org TO: cros-kernel-buildrepo...@googlegroups.com TO: Guenter Roeck <gro...@google.com>
tree: https://chromium.googlesource.com/chromiumos/third_party/kernel chromeos-5.4 head: 59cae41f4fcd3f1d266be2b63a13973486562f2e commit: 4c3ad28b9c913ffe3146c439648f2ba50138a0ae [64/158] CHROMIUM: mm: per-process reclaim :::::: branch date: 3 weeks ago :::::: commit date: 3 weeks ago config: i386-randconfig-s001-20200912 (attached as .config) compiler: gcc-9 (Debian 9.3.0-15) 9.3.0 reproduce: # apt-get install sparse # sparse version: v0.6.2-191-g10164920-dirty git checkout 4c3ad28b9c913ffe3146c439648f2ba50138a0ae # save the attached .config to linux build tree make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=i386 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <l...@intel.com> sparse warnings: (new ones prefixed by >>) fs/proc/task_mmu.c:671:28: sparse: sparse: context imbalance in 'smaps_pte_range' - unexpected unlock fs/proc/task_mmu.c:1258:28: sparse: sparse: context imbalance in 'clear_refs_pte_range' - unexpected unlock fs/proc/task_mmu.c:1611:28: sparse: sparse: context imbalance in 'pagemap_pmd_range' - unexpected unlock >> fs/proc/task_mmu.c:1879:28: sparse: sparse: context imbalance in >> 'deactivate_pte_range' - unexpected unlock >> fs/proc/task_mmu.c:1982:28: sparse: sparse: context imbalance in >> 'reclaim_pte_range' - unexpected unlock git remote add chrome-os https://chromium.googlesource.com/chromiumos/third_party/kernel git fetch --no-tags chrome-os chromeos-5.4 git checkout 4c3ad28b9c913ffe3146c439648f2ba50138a0ae vim +/deactivate_pte_range +1879 fs/proc/task_mmu.c 4c3ad28b9c913f Minchan Kim 2015-01-09 1839 4c3ad28b9c913f Minchan Kim 2015-01-09 1840 static int deactivate_pte_range(pmd_t *pmd, unsigned long addr, 4c3ad28b9c913f Minchan Kim 2015-01-09 1841 unsigned long end, struct mm_walk *walk) 4c3ad28b9c913f Minchan Kim 2015-01-09 1842 { 4c3ad28b9c913f Minchan Kim 2015-01-09 1843 pte_t *orig_pte, *pte, ptent; 4c3ad28b9c913f Minchan Kim 2015-01-09 1844 spinlock_t *ptl; 4c3ad28b9c913f Minchan Kim 2015-01-09 1845 struct page *page; 4c3ad28b9c913f Minchan Kim 2015-01-09 1846 struct vm_area_struct *vma = walk->vma; 4c3ad28b9c913f Minchan Kim 2015-01-09 1847 struct mm_struct *mm = vma->vm_mm; 4c3ad28b9c913f Minchan Kim 2015-01-09 1848 unsigned long next = pmd_addr_end(addr, end); 4c3ad28b9c913f Minchan Kim 2015-01-09 1849 4c3ad28b9c913f Minchan Kim 2015-01-09 1850 ptl = pmd_trans_huge_lock(pmd, vma); 4c3ad28b9c913f Minchan Kim 2015-01-09 1851 if (ptl) { 4c3ad28b9c913f Minchan Kim 2015-01-09 1852 if (!pmd_present(*pmd)) 4c3ad28b9c913f Minchan Kim 2015-01-09 1853 goto huge_unlock; 4c3ad28b9c913f Minchan Kim 2015-01-09 1854 4c3ad28b9c913f Minchan Kim 2015-01-09 1855 if (is_huge_zero_pmd(*pmd)) 4c3ad28b9c913f Minchan Kim 2015-01-09 1856 goto huge_unlock; 4c3ad28b9c913f Minchan Kim 2015-01-09 1857 4c3ad28b9c913f Minchan Kim 2015-01-09 1858 page = pmd_page(*pmd); 4c3ad28b9c913f Minchan Kim 2015-01-09 1859 if (page_mapcount(page) > 1) 4c3ad28b9c913f Minchan Kim 2015-01-09 1860 goto huge_unlock; 4c3ad28b9c913f Minchan Kim 2015-01-09 1861 4c3ad28b9c913f Minchan Kim 2015-01-09 1862 if (next - addr != HPAGE_PMD_SIZE) { 4c3ad28b9c913f Minchan Kim 2015-01-09 1863 int err; 4c3ad28b9c913f Minchan Kim 2015-01-09 1864 4c3ad28b9c913f Minchan Kim 2015-01-09 1865 get_page(page); 4c3ad28b9c913f Minchan Kim 2015-01-09 1866 spin_unlock(ptl); 4c3ad28b9c913f Minchan Kim 2015-01-09 1867 lock_page(page); 4c3ad28b9c913f Minchan Kim 2015-01-09 1868 err = split_huge_page(page); 4c3ad28b9c913f Minchan Kim 2015-01-09 1869 unlock_page(page); 4c3ad28b9c913f Minchan Kim 2015-01-09 1870 put_page(page); 4c3ad28b9c913f Minchan Kim 2015-01-09 1871 if (!err) 4c3ad28b9c913f Minchan Kim 2015-01-09 1872 goto regular_page; 4c3ad28b9c913f Minchan Kim 2015-01-09 1873 return 0; 4c3ad28b9c913f Minchan Kim 2015-01-09 1874 } 4c3ad28b9c913f Minchan Kim 2015-01-09 1875 4c3ad28b9c913f Minchan Kim 2015-01-09 1876 pmdp_test_and_clear_young(vma, addr, pmd); 4c3ad28b9c913f Minchan Kim 2015-01-09 1877 deactivate_page(page); 4c3ad28b9c913f Minchan Kim 2015-01-09 1878 huge_unlock: 4c3ad28b9c913f Minchan Kim 2015-01-09 @1879 spin_unlock(ptl); 4c3ad28b9c913f Minchan Kim 2015-01-09 1880 return 0; 4c3ad28b9c913f Minchan Kim 2015-01-09 1881 } 4c3ad28b9c913f Minchan Kim 2015-01-09 1882 4c3ad28b9c913f Minchan Kim 2015-01-09 1883 if (pmd_trans_unstable(pmd)) 4c3ad28b9c913f Minchan Kim 2015-01-09 1884 return 0; 4c3ad28b9c913f Minchan Kim 2015-01-09 1885 4c3ad28b9c913f Minchan Kim 2015-01-09 1886 regular_page: 4c3ad28b9c913f Minchan Kim 2015-01-09 1887 orig_pte = pte_offset_map_lock(vma->vm_mm, pmd, addr, &ptl); 4c3ad28b9c913f Minchan Kim 2015-01-09 1888 for (pte = orig_pte; addr < end; pte++, addr += PAGE_SIZE) { 4c3ad28b9c913f Minchan Kim 2015-01-09 1889 ptent = *pte; 4c3ad28b9c913f Minchan Kim 2015-01-09 1890 4c3ad28b9c913f Minchan Kim 2015-01-09 1891 if (!pte_present(ptent)) 4c3ad28b9c913f Minchan Kim 2015-01-09 1892 continue; 4c3ad28b9c913f Minchan Kim 2015-01-09 1893 4c3ad28b9c913f Minchan Kim 2015-01-09 1894 page = vm_normal_page(vma, addr, ptent); 4c3ad28b9c913f Minchan Kim 2015-01-09 1895 if (!page) 4c3ad28b9c913f Minchan Kim 2015-01-09 1896 continue; 4c3ad28b9c913f Minchan Kim 2015-01-09 1897 4c3ad28b9c913f Minchan Kim 2015-01-09 1898 if (PageTransCompound(page)) { 4c3ad28b9c913f Minchan Kim 2015-01-09 1899 if (page_mapcount(page) != 1) 4c3ad28b9c913f Minchan Kim 2015-01-09 1900 break; 4c3ad28b9c913f Minchan Kim 2015-01-09 1901 get_page(page); 4c3ad28b9c913f Minchan Kim 2015-01-09 1902 if (!trylock_page(page)) { 4c3ad28b9c913f Minchan Kim 2015-01-09 1903 put_page(page); 4c3ad28b9c913f Minchan Kim 2015-01-09 1904 break; 4c3ad28b9c913f Minchan Kim 2015-01-09 1905 } 4c3ad28b9c913f Minchan Kim 2015-01-09 1906 pte_unmap_unlock(orig_pte, ptl); 4c3ad28b9c913f Minchan Kim 2015-01-09 1907 if (split_huge_page(page)) { 4c3ad28b9c913f Minchan Kim 2015-01-09 1908 unlock_page(page); 4c3ad28b9c913f Minchan Kim 2015-01-09 1909 put_page(page); 4c3ad28b9c913f Minchan Kim 2015-01-09 1910 pte_offset_map_lock(mm, pmd, addr, &ptl); 4c3ad28b9c913f Minchan Kim 2015-01-09 1911 break; 4c3ad28b9c913f Minchan Kim 2015-01-09 1912 } 4c3ad28b9c913f Minchan Kim 2015-01-09 1913 unlock_page(page); 4c3ad28b9c913f Minchan Kim 2015-01-09 1914 put_page(page); 4c3ad28b9c913f Minchan Kim 2015-01-09 1915 pte = pte_offset_map_lock(mm, pmd, addr, &ptl); 4c3ad28b9c913f Minchan Kim 2015-01-09 1916 pte--; 4c3ad28b9c913f Minchan Kim 2015-01-09 1917 addr -= PAGE_SIZE; 4c3ad28b9c913f Minchan Kim 2015-01-09 1918 continue; 4c3ad28b9c913f Minchan Kim 2015-01-09 1919 } 4c3ad28b9c913f Minchan Kim 2015-01-09 1920 4c3ad28b9c913f Minchan Kim 2015-01-09 1921 VM_BUG_ON_PAGE(PageTransCompound(page), page); 4c3ad28b9c913f Minchan Kim 2015-01-09 1922 4c3ad28b9c913f Minchan Kim 2015-01-09 1923 if (page_mapcount(page) > 1) 4c3ad28b9c913f Minchan Kim 2015-01-09 1924 continue; 4c3ad28b9c913f Minchan Kim 2015-01-09 1925 4c3ad28b9c913f Minchan Kim 2015-01-09 1926 ptep_test_and_clear_young(vma, addr, pte); 4c3ad28b9c913f Minchan Kim 2015-01-09 1927 deactivate_page(page); 4c3ad28b9c913f Minchan Kim 2015-01-09 1928 } 4c3ad28b9c913f Minchan Kim 2015-01-09 1929 pte_unmap_unlock(orig_pte, ptl); 4c3ad28b9c913f Minchan Kim 2015-01-09 1930 cond_resched(); 4c3ad28b9c913f Minchan Kim 2015-01-09 1931 return 0; 4c3ad28b9c913f Minchan Kim 2015-01-09 1932 } 4c3ad28b9c913f Minchan Kim 2015-01-09 1933 4c3ad28b9c913f Minchan Kim 2015-01-09 1934 4c3ad28b9c913f Minchan Kim 2015-01-09 1935 static int reclaim_pte_range(pmd_t *pmd, unsigned long addr, 4c3ad28b9c913f Minchan Kim 2015-01-09 1936 unsigned long end, struct mm_walk *walk) 4c3ad28b9c913f Minchan Kim 2015-01-09 1937 { 4c3ad28b9c913f Minchan Kim 2015-01-09 1938 pte_t *orig_pte, *pte, ptent; 4c3ad28b9c913f Minchan Kim 2015-01-09 1939 spinlock_t *ptl; 4c3ad28b9c913f Minchan Kim 2015-01-09 1940 LIST_HEAD(page_list); 4c3ad28b9c913f Minchan Kim 2015-01-09 1941 struct page *page; 4c3ad28b9c913f Minchan Kim 2015-01-09 1942 int isolated = 0; 4c3ad28b9c913f Minchan Kim 2015-01-09 1943 struct vm_area_struct *vma = walk->vma; 4c3ad28b9c913f Minchan Kim 2015-01-09 1944 struct mm_struct *mm = vma->vm_mm; 4c3ad28b9c913f Minchan Kim 2015-01-09 1945 unsigned long next = pmd_addr_end(addr, end); 4c3ad28b9c913f Minchan Kim 2015-01-09 1946 4c3ad28b9c913f Minchan Kim 2015-01-09 1947 ptl = pmd_trans_huge_lock(pmd, vma); 4c3ad28b9c913f Minchan Kim 2015-01-09 1948 if (ptl) { 4c3ad28b9c913f Minchan Kim 2015-01-09 1949 if (!pmd_present(*pmd)) 4c3ad28b9c913f Minchan Kim 2015-01-09 1950 goto huge_unlock; 4c3ad28b9c913f Minchan Kim 2015-01-09 1951 4c3ad28b9c913f Minchan Kim 2015-01-09 1952 if (is_huge_zero_pmd(*pmd)) 4c3ad28b9c913f Minchan Kim 2015-01-09 1953 goto huge_unlock; 4c3ad28b9c913f Minchan Kim 2015-01-09 1954 4c3ad28b9c913f Minchan Kim 2015-01-09 1955 page = pmd_page(*pmd); 4c3ad28b9c913f Minchan Kim 2015-01-09 1956 if (page_mapcount(page) > 1) 4c3ad28b9c913f Minchan Kim 2015-01-09 1957 goto huge_unlock; 4c3ad28b9c913f Minchan Kim 2015-01-09 1958 4c3ad28b9c913f Minchan Kim 2015-01-09 1959 if (next - addr != HPAGE_PMD_SIZE) { 4c3ad28b9c913f Minchan Kim 2015-01-09 1960 int err; 4c3ad28b9c913f Minchan Kim 2015-01-09 1961 4c3ad28b9c913f Minchan Kim 2015-01-09 1962 get_page(page); 4c3ad28b9c913f Minchan Kim 2015-01-09 1963 spin_unlock(ptl); 4c3ad28b9c913f Minchan Kim 2015-01-09 1964 lock_page(page); 4c3ad28b9c913f Minchan Kim 2015-01-09 1965 err = split_huge_page(page); 4c3ad28b9c913f Minchan Kim 2015-01-09 1966 unlock_page(page); 4c3ad28b9c913f Minchan Kim 2015-01-09 1967 put_page(page); 4c3ad28b9c913f Minchan Kim 2015-01-09 1968 if (!err) 4c3ad28b9c913f Minchan Kim 2015-01-09 1969 goto regular_page; 4c3ad28b9c913f Minchan Kim 2015-01-09 1970 return 0; 4c3ad28b9c913f Minchan Kim 2015-01-09 1971 } 4c3ad28b9c913f Minchan Kim 2015-01-09 1972 4c3ad28b9c913f Minchan Kim 2015-01-09 1973 if (isolate_lru_page(page)) 4c3ad28b9c913f Minchan Kim 2015-01-09 1974 goto huge_unlock; 4c3ad28b9c913f Minchan Kim 2015-01-09 1975 4c3ad28b9c913f Minchan Kim 2015-01-09 1976 /* Clear all the references to make sure it gets reclaimed */ 4c3ad28b9c913f Minchan Kim 2015-01-09 1977 pmdp_test_and_clear_young(vma, addr, pmd); 4c3ad28b9c913f Minchan Kim 2015-01-09 1978 ClearPageReferenced(page); 4c3ad28b9c913f Minchan Kim 2015-01-09 1979 test_and_clear_page_young(page); 4c3ad28b9c913f Minchan Kim 2015-01-09 1980 list_add(&page->lru, &page_list); 4c3ad28b9c913f Minchan Kim 2015-01-09 1981 huge_unlock: 4c3ad28b9c913f Minchan Kim 2015-01-09 @1982 spin_unlock(ptl); 4c3ad28b9c913f Minchan Kim 2015-01-09 1983 reclaim_pages(&page_list); 4c3ad28b9c913f Minchan Kim 2015-01-09 1984 return 0; 4c3ad28b9c913f Minchan Kim 2015-01-09 1985 } 4c3ad28b9c913f Minchan Kim 2015-01-09 1986 4c3ad28b9c913f Minchan Kim 2015-01-09 1987 if (pmd_trans_unstable(pmd)) 4c3ad28b9c913f Minchan Kim 2015-01-09 1988 return 0; 4c3ad28b9c913f Minchan Kim 2015-01-09 1989 4c3ad28b9c913f Minchan Kim 2015-01-09 1990 regular_page: 4c3ad28b9c913f Minchan Kim 2015-01-09 1991 orig_pte = pte_offset_map_lock(vma->vm_mm, pmd, addr, &ptl); 4c3ad28b9c913f Minchan Kim 2015-01-09 1992 for (pte = orig_pte; addr < end; pte++, addr += PAGE_SIZE) { 4c3ad28b9c913f Minchan Kim 2015-01-09 1993 ptent = *pte; 4c3ad28b9c913f Minchan Kim 2015-01-09 1994 if (!pte_present(ptent)) 4c3ad28b9c913f Minchan Kim 2015-01-09 1995 continue; 4c3ad28b9c913f Minchan Kim 2015-01-09 1996 4c3ad28b9c913f Minchan Kim 2015-01-09 1997 page = vm_normal_page(vma, addr, ptent); 4c3ad28b9c913f Minchan Kim 2015-01-09 1998 if (!page) 4c3ad28b9c913f Minchan Kim 2015-01-09 1999 continue; 4c3ad28b9c913f Minchan Kim 2015-01-09 2000 4c3ad28b9c913f Minchan Kim 2015-01-09 2001 if (PageTransCompound(page)) { 4c3ad28b9c913f Minchan Kim 2015-01-09 2002 if (page_mapcount(page) != 1) 4c3ad28b9c913f Minchan Kim 2015-01-09 2003 break; 4c3ad28b9c913f Minchan Kim 2015-01-09 2004 get_page(page); 4c3ad28b9c913f Minchan Kim 2015-01-09 2005 if (!trylock_page(page)) { 4c3ad28b9c913f Minchan Kim 2015-01-09 2006 put_page(page); 4c3ad28b9c913f Minchan Kim 2015-01-09 2007 break; 4c3ad28b9c913f Minchan Kim 2015-01-09 2008 } 4c3ad28b9c913f Minchan Kim 2015-01-09 2009 pte_unmap_unlock(orig_pte, ptl); 4c3ad28b9c913f Minchan Kim 2015-01-09 2010 4c3ad28b9c913f Minchan Kim 2015-01-09 2011 if (split_huge_page(page)) { 4c3ad28b9c913f Minchan Kim 2015-01-09 2012 unlock_page(page); 4c3ad28b9c913f Minchan Kim 2015-01-09 2013 put_page(page); 4c3ad28b9c913f Minchan Kim 2015-01-09 2014 pte_offset_map_lock(mm, pmd, addr, &ptl); 4c3ad28b9c913f Minchan Kim 2015-01-09 2015 break; 4c3ad28b9c913f Minchan Kim 2015-01-09 2016 } 4c3ad28b9c913f Minchan Kim 2015-01-09 2017 unlock_page(page); 4c3ad28b9c913f Minchan Kim 2015-01-09 2018 put_page(page); 4c3ad28b9c913f Minchan Kim 2015-01-09 2019 pte = pte_offset_map_lock(mm, pmd, addr, &ptl); 4c3ad28b9c913f Minchan Kim 2015-01-09 2020 pte--; 4c3ad28b9c913f Minchan Kim 2015-01-09 2021 addr -= PAGE_SIZE; 4c3ad28b9c913f Minchan Kim 2015-01-09 2022 continue; 4c3ad28b9c913f Minchan Kim 2015-01-09 2023 } 4c3ad28b9c913f Minchan Kim 2015-01-09 2024 4c3ad28b9c913f Minchan Kim 2015-01-09 2025 VM_BUG_ON_PAGE(PageTransCompound(page), page); 4c3ad28b9c913f Minchan Kim 2015-01-09 2026 4c3ad28b9c913f Minchan Kim 2015-01-09 2027 if (!PageLRU(page)) 4c3ad28b9c913f Minchan Kim 2015-01-09 2028 continue; 4c3ad28b9c913f Minchan Kim 2015-01-09 2029 4c3ad28b9c913f Minchan Kim 2015-01-09 2030 if (page_mapcount(page) > 1) 4c3ad28b9c913f Minchan Kim 2015-01-09 2031 continue; 4c3ad28b9c913f Minchan Kim 2015-01-09 2032 4c3ad28b9c913f Minchan Kim 2015-01-09 2033 if (isolate_lru_page(page)) 4c3ad28b9c913f Minchan Kim 2015-01-09 2034 continue; 4c3ad28b9c913f Minchan Kim 2015-01-09 2035 4c3ad28b9c913f Minchan Kim 2015-01-09 2036 isolated++; 4c3ad28b9c913f Minchan Kim 2015-01-09 2037 list_add(&page->lru, &page_list); 4c3ad28b9c913f Minchan Kim 2015-01-09 2038 /* Clear all the references to make sure it gets reclaimed */ 4c3ad28b9c913f Minchan Kim 2015-01-09 2039 ptep_test_and_clear_young(vma, addr, pte); 4c3ad28b9c913f Minchan Kim 2015-01-09 2040 ClearPageReferenced(page); 4c3ad28b9c913f Minchan Kim 2015-01-09 2041 test_and_clear_page_young(page); 4c3ad28b9c913f Minchan Kim 2015-01-09 2042 if (isolated >= SWAP_CLUSTER_MAX) { 4c3ad28b9c913f Minchan Kim 2015-01-09 2043 pte_unmap_unlock(orig_pte, ptl); 4c3ad28b9c913f Minchan Kim 2015-01-09 2044 reclaim_pages(&page_list); 4c3ad28b9c913f Minchan Kim 2015-01-09 2045 isolated = 0; 4c3ad28b9c913f Minchan Kim 2015-01-09 2046 pte = pte_offset_map_lock(vma->vm_mm, pmd, addr, &ptl); 4c3ad28b9c913f Minchan Kim 2015-01-09 2047 orig_pte = pte; 4c3ad28b9c913f Minchan Kim 2015-01-09 2048 } 4c3ad28b9c913f Minchan Kim 2015-01-09 2049 } 4c3ad28b9c913f Minchan Kim 2015-01-09 2050 4c3ad28b9c913f Minchan Kim 2015-01-09 2051 pte_unmap_unlock(orig_pte, ptl); 4c3ad28b9c913f Minchan Kim 2015-01-09 2052 reclaim_pages(&page_list); 4c3ad28b9c913f Minchan Kim 2015-01-09 2053 4c3ad28b9c913f Minchan Kim 2015-01-09 2054 cond_resched(); 4c3ad28b9c913f Minchan Kim 2015-01-09 2055 return 0; 4c3ad28b9c913f Minchan Kim 2015-01-09 2056 } 4c3ad28b9c913f Minchan Kim 2015-01-09 2057 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org
.config.gz
Description: application/gzip
_______________________________________________ kbuild mailing list -- kbuild@lists.01.org To unsubscribe send an email to kbuild-le...@lists.01.org