All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Baolin Wang <baolin.wang@linux.alibaba.com>,
	akpm@linux-foundation.org, hughd@google.com
Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev,
	willy@infradead.org, david@redhat.com,
	wangkefeng.wang@huawei.com, ying.huang@intel.com,
	21cnbao@gmail.com, ryan.roberts@arm.com, shy828301@gmail.com,
	ziy@nvidia.com, ioworker0@gmail.com, da.gomez@samsung.com,
	p.raghav@samsung.com, baolin.wang@linux.alibaba.com,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3 4/6] mm: shmem: add mTHP support for anonymous shmem
Date: Thu, 30 May 2024 14:36:59 +0800	[thread overview]
Message-ID: <202405301430.0NRLTOWU-lkp@intel.com> (raw)
In-Reply-To: <ec35a23026dd016705d211e85163cabe07681516.1717033868.git.baolin.wang@linux.alibaba.com>

Hi Baolin,

kernel test robot noticed the following build warnings:

[auto build test WARNING on akpm-mm/mm-everything]
[also build test WARNING on next-20240529]
[cannot apply to linus/master v6.10-rc1]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Baolin-Wang/mm-memory-extend-finish_fault-to-support-large-folio/20240530-100805
base:   https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything
patch link:    https://lore.kernel.org/r/ec35a23026dd016705d211e85163cabe07681516.1717033868.git.baolin.wang%40linux.alibaba.com
patch subject: [PATCH v3 4/6] mm: shmem: add mTHP support for anonymous shmem
config: riscv-defconfig (https://download.01.org/0day-ci/archive/20240530/202405301430.0NRLTOWU-lkp@intel.com/config)
compiler: clang version 19.0.0git (https://github.com/llvm/llvm-project bafda89a0944d947fc4b3b5663185e07a397ac30)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240530/202405301430.0NRLTOWU-lkp@intel.com/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@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202405301430.0NRLTOWU-lkp@intel.com/

All warnings (new ones prefixed by >>):

   In file included from mm/shmem.c:28:
   In file included from include/linux/ramfs.h:5:
   In file included from include/linux/fs_parser.h:11:
   In file included from include/linux/fs_context.h:14:
   In file included from include/linux/security.h:33:
   In file included from include/linux/mm.h:2245:
   include/linux/vmstat.h:514:36: warning: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Wenum-enum-conversion]
     514 |         return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_"
         |                               ~~~~~~~~~~~ ^ ~~~
>> mm/shmem.c:1748:14: warning: variable 'suitable_orders' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
    1748 |                 } else if (orders & BIT(HPAGE_PMD_ORDER)) {
         |                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   mm/shmem.c:1766:25: note: uninitialized use occurs here
    1766 |                 order = highest_order(suitable_orders);
         |                                       ^~~~~~~~~~~~~~~
   mm/shmem.c:1748:10: note: remove the 'if' if its condition is always true
    1748 |                 } else if (orders & BIT(HPAGE_PMD_ORDER)) {
         |                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   mm/shmem.c:1736:31: note: initialize the variable 'suitable_orders' to silence this warning
    1736 |         unsigned long suitable_orders;
         |                                      ^
         |                                       = 0
   2 warnings generated.


vim +1748 mm/shmem.c

  1728	
  1729	static struct folio *shmem_alloc_and_add_folio(struct vm_fault *vmf,
  1730			gfp_t gfp, struct inode *inode, pgoff_t index,
  1731			struct mm_struct *fault_mm, unsigned long orders)
  1732	{
  1733		struct address_space *mapping = inode->i_mapping;
  1734		struct shmem_inode_info *info = SHMEM_I(inode);
  1735		struct vm_area_struct *vma = vmf ? vmf->vma : NULL;
  1736		unsigned long suitable_orders;
  1737		struct folio *folio = NULL;
  1738		long pages;
  1739		int error, order;
  1740	
  1741		if (!IS_ENABLED(CONFIG_TRANSPARENT_HUGEPAGE))
  1742			orders = 0;
  1743	
  1744		if (orders > 0) {
  1745			if (vma && vma_is_anon_shmem(vma)) {
  1746				suitable_orders = anon_shmem_suitable_orders(inode, vmf,
  1747								mapping, index, orders);
> 1748			} else if (orders & BIT(HPAGE_PMD_ORDER)) {
  1749				pages = HPAGE_PMD_NR;
  1750				suitable_orders = BIT(HPAGE_PMD_ORDER);
  1751				index = round_down(index, HPAGE_PMD_NR);
  1752	
  1753				/*
  1754				 * Check for conflict before waiting on a huge allocation.
  1755				 * Conflict might be that a huge page has just been allocated
  1756				 * and added to page cache by a racing thread, or that there
  1757				 * is already at least one small page in the huge extent.
  1758				 * Be careful to retry when appropriate, but not forever!
  1759				 * Elsewhere -EEXIST would be the right code, but not here.
  1760				 */
  1761				if (xa_find(&mapping->i_pages, &index,
  1762					    index + HPAGE_PMD_NR - 1, XA_PRESENT))
  1763					return ERR_PTR(-E2BIG);
  1764			}
  1765	
  1766			order = highest_order(suitable_orders);
  1767			while (suitable_orders) {
  1768				pages = 1UL << order;
  1769				index = round_down(index, pages);
  1770				folio = shmem_alloc_folio(gfp, order, info, index);
  1771				if (folio)
  1772					goto allocated;
  1773	
  1774				if (pages == HPAGE_PMD_NR)
  1775					count_vm_event(THP_FILE_FALLBACK);
  1776				order = next_order(&suitable_orders, order);
  1777			}
  1778		} else {
  1779			pages = 1;
  1780			folio = shmem_alloc_folio(gfp, 0, info, index);
  1781		}
  1782		if (!folio)
  1783			return ERR_PTR(-ENOMEM);
  1784	
  1785	allocated:
  1786		__folio_set_locked(folio);
  1787		__folio_set_swapbacked(folio);
  1788	
  1789		gfp &= GFP_RECLAIM_MASK;
  1790		error = mem_cgroup_charge(folio, fault_mm, gfp);
  1791		if (error) {
  1792			if (xa_find(&mapping->i_pages, &index,
  1793					index + pages - 1, XA_PRESENT)) {
  1794				error = -EEXIST;
  1795			} else if (pages == HPAGE_PMD_NR) {
  1796				count_vm_event(THP_FILE_FALLBACK);
  1797				count_vm_event(THP_FILE_FALLBACK_CHARGE);
  1798			}
  1799			goto unlock;
  1800		}
  1801	
  1802		error = shmem_add_to_page_cache(folio, mapping, index, NULL, gfp);
  1803		if (error)
  1804			goto unlock;
  1805	
  1806		error = shmem_inode_acct_blocks(inode, pages);
  1807		if (error) {
  1808			struct shmem_sb_info *sbinfo = SHMEM_SB(inode->i_sb);
  1809			long freed;
  1810			/*
  1811			 * Try to reclaim some space by splitting a few
  1812			 * large folios beyond i_size on the filesystem.
  1813			 */
  1814			shmem_unused_huge_shrink(sbinfo, NULL, 2);
  1815			/*
  1816			 * And do a shmem_recalc_inode() to account for freed pages:
  1817			 * except our folio is there in cache, so not quite balanced.
  1818			 */
  1819			spin_lock(&info->lock);
  1820			freed = pages + info->alloced - info->swapped -
  1821				READ_ONCE(mapping->nrpages);
  1822			if (freed > 0)
  1823				info->alloced -= freed;
  1824			spin_unlock(&info->lock);
  1825			if (freed > 0)
  1826				shmem_inode_unacct_blocks(inode, freed);
  1827			error = shmem_inode_acct_blocks(inode, pages);
  1828			if (error) {
  1829				filemap_remove_folio(folio);
  1830				goto unlock;
  1831			}
  1832		}
  1833	
  1834		shmem_recalc_inode(inode, pages, 0);
  1835		folio_add_lru(folio);
  1836		return folio;
  1837	
  1838	unlock:
  1839		folio_unlock(folio);
  1840		folio_put(folio);
  1841		return ERR_PTR(error);
  1842	}
  1843	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

  reply	other threads:[~2024-05-30  6:37 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-30  2:04 [PATCH v3 0/6] add mTHP support for anonymous shmem Baolin Wang
2024-05-30  2:04 ` [PATCH v3 1/6] mm: memory: extend finish_fault() to support large folio Baolin Wang
2024-06-03  4:44   ` Lance Yang
2024-06-03  8:04     ` Baolin Wang
2024-06-03  5:28   ` Barry Song
2024-06-03  8:29     ` Baolin Wang
2024-06-03  8:58       ` Barry Song
2024-06-03  9:01         ` Barry Song
2024-06-03  9:37           ` Baolin Wang
2024-05-30  2:04 ` [PATCH v3 2/6] mm: shmem: add THP validation for PMD-mapped THP related statistics Baolin Wang
2024-05-30  2:04 ` [PATCH v3 3/6] mm: shmem: add multi-size THP sysfs interface for anonymous shmem Baolin Wang
2024-06-01  3:29   ` wang wei
2024-06-02  4:36     ` [PATCH " Baolin Wang
2024-05-30  2:04 ` [PATCH v3 4/6] mm: shmem: add mTHP support " Baolin Wang
2024-05-30  6:36   ` kernel test robot [this message]
2024-06-02  4:16     ` Baolin Wang
2024-06-04  9:23   ` Dan Carpenter
2024-06-04  9:46     ` Baolin Wang
2024-05-30  2:04 ` [PATCH v3 5/6] mm: shmem: add mTHP size alignment in shmem_get_unmapped_area Baolin Wang
2024-05-30  2:04 ` [PATCH v3 6/6] mm: shmem: add mTHP counters for anonymous shmem Baolin Wang
2024-05-31  9:35 ` [PATCH v3 0/6] add mTHP support " David Hildenbrand
2024-05-31 10:13   ` Baolin Wang
2024-05-31 11:13     ` David Hildenbrand
2024-06-02  4:15       ` Baolin Wang
2024-06-04  8:18       ` Daniel Gomez
2024-06-04  9:45         ` Baolin Wang
2024-06-04 12:05           ` Daniel Gomez
2024-06-06  3:31             ` Baolin Wang
2024-06-06  8:38               ` David Hildenbrand
2024-06-06  9:31                 ` Baolin Wang
2024-06-07  9:05                 ` Daniel Gomez
2024-06-07 10:39                   ` David Hildenbrand
2024-06-01  3:54     ` wang wei
2024-05-31 13:19   ` Daniel Gomez
2024-05-31 14:43     ` David Hildenbrand
2024-06-04  9:29       ` Daniel Gomez
2024-06-04  9:59         ` David Hildenbrand
2024-06-04 12:30           ` Daniel Gomez
  -- strict thread matches above, loose matches on Subject: below --
2024-06-01 19:03 [PATCH v3 4/6] mm: shmem: " kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202405301430.0NRLTOWU-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=21cnbao@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=baolin.wang@linux.alibaba.com \
    --cc=da.gomez@samsung.com \
    --cc=david@redhat.com \
    --cc=hughd@google.com \
    --cc=ioworker0@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=llvm@lists.linux.dev \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=p.raghav@samsung.com \
    --cc=ryan.roberts@arm.com \
    --cc=shy828301@gmail.com \
    --cc=wangkefeng.wang@huawei.com \
    --cc=willy@infradead.org \
    --cc=ying.huang@intel.com \
    --cc=ziy@nvidia.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.