Hi Mauro, I love your patch! Perhaps something to improve: [auto build test WARNING on next-20201201] [cannot apply to lwn/docs-next tip/sched/core hsi/for-next linus/master v5.10-rc6 v5.10-rc5 v5.10-rc4 v5.10-rc6] [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] url: https://github.com/0day-ci/linux/commits/Mauro-Carvalho-Chehab/HSI-fix-a-kernel-doc-markup/20201201-210930 base: 0eedceafd3a63fd082743c914853ef4b9247dbe6 config: x86_64-randconfig-s021-20201201 (attached as .config) compiler: gcc-9 (Debian 9.3.0-15) 9.3.0 reproduce: # apt-get install sparse # sparse version: v0.6.3-170-g3bc348f6-dirty # https://github.com/0day-ci/linux/commit/7c52ba119279c74e6c7e968e3fa7290bd0f3b837 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Mauro-Carvalho-Chehab/HSI-fix-a-kernel-doc-markup/20201201-210930 git checkout 7c52ba119279c74e6c7e968e3fa7290bd0f3b837 # save the attached .config to linux build tree make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=x86_64 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@xxxxxxxxx> All warnings (new ones prefixed by >>): >> mm/vmscan.c:1614: warning: wrong kernel-doc identifier on line: * Isolating page from the lruvec to fill in @dst list by nr_to_scan times. -- >> drivers/hv/vmbus_drv.c:1536: warning: expecting prototype for __vmbus_child_driver_register(). Prototype was for __vmbus_driver_register() instead -- drivers/rtc/class.c:326: warning: Function parameter or member 'data' not described in 'devm_rtc_unregister_device' >> drivers/rtc/class.c:326: warning: expecting prototype for rtc_device_unregister(). Prototype was for devm_rtc_unregister_device() instead vim +1614 mm/vmscan.c b4536f0c829c85 Michal Hocko 2017-01-10 1612 f4b7e272b5c042 Andrey Ryabinin 2019-03-05 1613 /** f46cdc387708fb Hugh Dickins 2020-11-24 @1614 * Isolating page from the lruvec to fill in @dst list by nr_to_scan times. f46cdc387708fb Hugh Dickins 2020-11-24 1615 * f46cdc387708fb Hugh Dickins 2020-11-24 1616 * lruvec->lru_lock is heavily contended. Some of the functions that ^1da177e4c3f41 Linus Torvalds 2005-04-16 1617 * shrink the lists perform better by taking out a batch of pages ^1da177e4c3f41 Linus Torvalds 2005-04-16 1618 * and working on them outside the LRU lock. ^1da177e4c3f41 Linus Torvalds 2005-04-16 1619 * ^1da177e4c3f41 Linus Torvalds 2005-04-16 1620 * For pagecache intensive workloads, this function is the hottest ^1da177e4c3f41 Linus Torvalds 2005-04-16 1621 * spot in the kernel (apart from copy_*_user functions). ^1da177e4c3f41 Linus Torvalds 2005-04-16 1622 * f46cdc387708fb Hugh Dickins 2020-11-24 1623 * Lru_lock must be held before calling this function. ^1da177e4c3f41 Linus Torvalds 2005-04-16 1624 * 791b48b642324c Minchan Kim 2017-05-12 1625 * @nr_to_scan: The number of eligible pages to look through on the list. 5dc35979e444b5 Konstantin Khlebnikov 2012-05-29 1626 * @lruvec: The LRU vector to pull pages from. ^1da177e4c3f41 Linus Torvalds 2005-04-16 1627 * @dst: The temp list to put pages on to. f626012db08b9e Hugh Dickins 2012-01-12 1628 * @nr_scanned: The number of pages that were scanned. fe2c2a10666313 Rik van Riel 2012-03-21 1629 * @sc: The scan_control struct for this reclaim session 3cb9945179bd04 Konstantin Khlebnikov 2012-05-29 1630 * @lru: LRU list id for isolating ^1da177e4c3f41 Linus Torvalds 2005-04-16 1631 * ^1da177e4c3f41 Linus Torvalds 2005-04-16 1632 * returns how many pages were moved onto *@dst. ^1da177e4c3f41 Linus Torvalds 2005-04-16 1633 */ 69e05944af39fc Andrew Morton 2006-03-22 1634 static unsigned long isolate_lru_pages(unsigned long nr_to_scan, 5dc35979e444b5 Konstantin Khlebnikov 2012-05-29 1635 struct lruvec *lruvec, struct list_head *dst, fe2c2a10666313 Rik van Riel 2012-03-21 1636 unsigned long *nr_scanned, struct scan_control *sc, a9e7c39fa9fd90 Kirill Tkhai 2019-03-05 1637 enum lru_list lru) ^1da177e4c3f41 Linus Torvalds 2005-04-16 1638 { 75b00af77ed5b5 Hugh Dickins 2012-05-29 1639 struct list_head *src = &lruvec->lists[lru]; 69e05944af39fc Andrew Morton 2006-03-22 1640 unsigned long nr_taken = 0; 599d0c954f91d0 Mel Gorman 2016-07-28 1641 unsigned long nr_zone_taken[MAX_NR_ZONES] = { 0 }; 7cc30fcfd2a894 Mel Gorman 2016-07-28 1642 unsigned long nr_skipped[MAX_NR_ZONES] = { 0, }; 3db65812d68883 Johannes Weiner 2017-05-03 1643 unsigned long skipped = 0; 791b48b642324c Minchan Kim 2017-05-12 1644 unsigned long scan, total_scan, nr_pages; b2e18757f2c9d1 Mel Gorman 2016-07-28 1645 LIST_HEAD(pages_skipped); a9e7c39fa9fd90 Kirill Tkhai 2019-03-05 1646 isolate_mode_t mode = (sc->may_unmap ? 0 : ISOLATE_UNMAPPED); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1647 98879b3b9edc16 Yang Shi 2019-07-11 1648 total_scan = 0; 791b48b642324c Minchan Kim 2017-05-12 1649 scan = 0; 98879b3b9edc16 Yang Shi 2019-07-11 1650 while (scan < nr_to_scan && !list_empty(src)) { 5ad333eb66ff1e Andy Whitcroft 2007-07-17 1651 struct page *page; 5ad333eb66ff1e Andy Whitcroft 2007-07-17 1652 ^1da177e4c3f41 Linus Torvalds 2005-04-16 1653 page = lru_to_page(src); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1654 prefetchw_prev_lru_page(page, src, flags); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1655 d8c6546b1aea84 Matthew Wilcox (Oracle 2019-09-23 1656) nr_pages = compound_nr(page); 98879b3b9edc16 Yang Shi 2019-07-11 1657 total_scan += nr_pages; 98879b3b9edc16 Yang Shi 2019-07-11 1658 b2e18757f2c9d1 Mel Gorman 2016-07-28 1659 if (page_zonenum(page) > sc->reclaim_idx) { b2e18757f2c9d1 Mel Gorman 2016-07-28 1660 list_move(&page->lru, &pages_skipped); 98879b3b9edc16 Yang Shi 2019-07-11 1661 nr_skipped[page_zonenum(page)] += nr_pages; b2e18757f2c9d1 Mel Gorman 2016-07-28 1662 continue; b2e18757f2c9d1 Mel Gorman 2016-07-28 1663 } b2e18757f2c9d1 Mel Gorman 2016-07-28 1664 791b48b642324c Minchan Kim 2017-05-12 1665 /* 791b48b642324c Minchan Kim 2017-05-12 1666 * Do not count skipped pages because that makes the function 791b48b642324c Minchan Kim 2017-05-12 1667 * return with no isolated pages if the LRU mostly contains 791b48b642324c Minchan Kim 2017-05-12 1668 * ineligible pages. This causes the VM to not reclaim any 791b48b642324c Minchan Kim 2017-05-12 1669 * pages, triggering a premature OOM. 98879b3b9edc16 Yang Shi 2019-07-11 1670 * 98879b3b9edc16 Yang Shi 2019-07-11 1671 * Account all tail pages of THP. This would not cause 98879b3b9edc16 Yang Shi 2019-07-11 1672 * premature OOM since __isolate_lru_page() returns -EBUSY 98879b3b9edc16 Yang Shi 2019-07-11 1673 * only when the page is being freed somewhere else. 791b48b642324c Minchan Kim 2017-05-12 1674 */ 98879b3b9edc16 Yang Shi 2019-07-11 1675 scan += nr_pages; 0499e1a60797d4 Alex Shi 2020-11-24 1676 if (!__isolate_lru_page_prepare(page, mode)) { 0499e1a60797d4 Alex Shi 2020-11-24 1677 /* It is being freed elsewhere */ 0499e1a60797d4 Alex Shi 2020-11-24 1678 list_move(&page->lru, src); 0499e1a60797d4 Alex Shi 2020-11-24 1679 continue; 0499e1a60797d4 Alex Shi 2020-11-24 1680 } ce8d4ae1c160d4 Alex Shi 2020-11-24 1681 /* ce8d4ae1c160d4 Alex Shi 2020-11-24 1682 * Be careful not to clear PageLRU until after we're ce8d4ae1c160d4 Alex Shi 2020-11-24 1683 * sure the page is not being freed elsewhere -- the ce8d4ae1c160d4 Alex Shi 2020-11-24 1684 * page release code relies on it. ce8d4ae1c160d4 Alex Shi 2020-11-24 1685 */ 0499e1a60797d4 Alex Shi 2020-11-24 1686 if (unlikely(!get_page_unless_zero(page))) { 0499e1a60797d4 Alex Shi 2020-11-24 1687 list_move(&page->lru, src); 0499e1a60797d4 Alex Shi 2020-11-24 1688 continue; 0499e1a60797d4 Alex Shi 2020-11-24 1689 } ce8d4ae1c160d4 Alex Shi 2020-11-24 1690 ce8d4ae1c160d4 Alex Shi 2020-11-24 1691 if (!TestClearPageLRU(page)) { 0499e1a60797d4 Alex Shi 2020-11-24 1692 /* Another thread is already isolating this page */ ce8d4ae1c160d4 Alex Shi 2020-11-24 1693 put_page(page); 0499e1a60797d4 Alex Shi 2020-11-24 1694 list_move(&page->lru, src); 0499e1a60797d4 Alex Shi 2020-11-24 1695 continue; ce8d4ae1c160d4 Alex Shi 2020-11-24 1696 } ce8d4ae1c160d4 Alex Shi 2020-11-24 1697 599d0c954f91d0 Mel Gorman 2016-07-28 1698 nr_taken += nr_pages; 599d0c954f91d0 Mel Gorman 2016-07-28 1699 nr_zone_taken[page_zonenum(page)] += nr_pages; 5ad333eb66ff1e Andy Whitcroft 2007-07-17 1700 list_move(&page->lru, dst); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1701 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 1702 b2e18757f2c9d1 Mel Gorman 2016-07-28 1703 /* b2e18757f2c9d1 Mel Gorman 2016-07-28 1704 * Splice any skipped pages to the start of the LRU list. Note that b2e18757f2c9d1 Mel Gorman 2016-07-28 1705 * this disrupts the LRU order when reclaiming for lower zones but b2e18757f2c9d1 Mel Gorman 2016-07-28 1706 * we cannot splice to the tail. If we did then the SWAP_CLUSTER_MAX b2e18757f2c9d1 Mel Gorman 2016-07-28 1707 * scanning would soon rescan the same pages to skip and put the b2e18757f2c9d1 Mel Gorman 2016-07-28 1708 * system at risk of premature OOM. b2e18757f2c9d1 Mel Gorman 2016-07-28 1709 */ 7cc30fcfd2a894 Mel Gorman 2016-07-28 1710 if (!list_empty(&pages_skipped)) { 7cc30fcfd2a894 Mel Gorman 2016-07-28 1711 int zid; 7cc30fcfd2a894 Mel Gorman 2016-07-28 1712 3db65812d68883 Johannes Weiner 2017-05-03 1713 list_splice(&pages_skipped, src); 7cc30fcfd2a894 Mel Gorman 2016-07-28 1714 for (zid = 0; zid < MAX_NR_ZONES; zid++) { 7cc30fcfd2a894 Mel Gorman 2016-07-28 1715 if (!nr_skipped[zid]) 7cc30fcfd2a894 Mel Gorman 2016-07-28 1716 continue; 7cc30fcfd2a894 Mel Gorman 2016-07-28 1717 7cc30fcfd2a894 Mel Gorman 2016-07-28 1718 __count_zid_vm_events(PGSCAN_SKIP, zid, nr_skipped[zid]); 1265e3a69f1ea9 Michal Hocko 2017-02-22 1719 skipped += nr_skipped[zid]; 7cc30fcfd2a894 Mel Gorman 2016-07-28 1720 } 7cc30fcfd2a894 Mel Gorman 2016-07-28 1721 } 791b48b642324c Minchan Kim 2017-05-12 1722 *nr_scanned = total_scan; 1265e3a69f1ea9 Michal Hocko 2017-02-22 1723 trace_mm_vmscan_lru_isolate(sc->reclaim_idx, sc->order, nr_to_scan, 791b48b642324c Minchan Kim 2017-05-12 1724 total_scan, skipped, nr_taken, mode, lru); b4536f0c829c85 Michal Hocko 2017-01-10 1725 update_lru_sizes(lruvec, lru, nr_zone_taken); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1726 return nr_taken; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1727 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 1728 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx
Attachment:
.config.gz
Description: application/gzip