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

Attachment: .config.gz
Description: application/gzip

_______________________________________________
kbuild mailing list -- kbuild@lists.01.org
To unsubscribe send an email to kbuild-le...@lists.01.org

Reply via email to