From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 85F77C64EC4 for ; Mon, 6 Mar 2023 21:21:04 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E851C6B0071; Mon, 6 Mar 2023 16:21:03 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id E355C6B0072; Mon, 6 Mar 2023 16:21:03 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CFD1B280001; Mon, 6 Mar 2023 16:21:03 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id BDF426B0071 for ; Mon, 6 Mar 2023 16:21:03 -0500 (EST) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 89F2F160CD3 for ; Mon, 6 Mar 2023 21:21:03 +0000 (UTC) X-FDA: 80539743606.30.316178B Received: from mail-yw1-f180.google.com (mail-yw1-f180.google.com [209.85.128.180]) by imf19.hostedemail.com (Postfix) with ESMTP id D016B1A000B for ; Mon, 6 Mar 2023 21:21:01 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=ZAYGVpf4; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf19.hostedemail.com: domain of surenb@google.com designates 209.85.128.180 as permitted sender) smtp.mailfrom=surenb@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1678137661; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=MlFoCw6xpA0Yeby89LIgDkf8kuvi2LcT1q/KHBhZkHE=; b=Ozy+wY4auzQZq9g8ZWWkTY4HioTWXcRRJ5ljcMgSEBYzw227eVQ7wBLP7O7eU1BXyDQJij R7F45kM5ZwU+lwwd3PG8XF3huH9uo8ZdGbemlS9+hgdiAfYUISbkZzFBwhRVNXzH3C7UtU IbvnKF0vwvyF8t6vGZ6wDxYlLiPX/8s= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=ZAYGVpf4; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf19.hostedemail.com: domain of surenb@google.com designates 209.85.128.180 as permitted sender) smtp.mailfrom=surenb@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1678137661; a=rsa-sha256; cv=none; b=OjA9NV/gbE3OYS4Je7Plr2NNcRjVUhNLkqzne/fANhm0Gr+4Pud2o/K4Wnul60rD5HJzll SJ3ijYbkyN0jYJ704Oa0iP9SvckFSq508eZ38SqX+kaaJbk7m5WCkfcxqGTKtPAX5xaBAH 0zNkWF3z6DDOzVAPt8AWMjYf5DkXdTg= Received: by mail-yw1-f180.google.com with SMTP id 00721157ae682-53916ab0c6bso208379947b3.7 for ; Mon, 06 Mar 2023 13:21:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; t=1678137661; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=MlFoCw6xpA0Yeby89LIgDkf8kuvi2LcT1q/KHBhZkHE=; b=ZAYGVpf4D1O7GRwovywxggvXk4OTQux+ihm0c4TZnUFOxyFzEaDZxCK+tmXjONOHLY 46srJT4m3azvZq2LwjFT8bzyF3T+6tEdMtxi6mK7N9MCygeyu3GQrg+BOFIeCDj0m4wn 7WCzRUQTy9pXr4OXpgZvblnFRTVpBO3Q4UvkWHR3VXw8LUinHFjPMhPok+UGQfgvq160 uNbg8AWqz/PHG1s4uVuWdjEQSwuAPEdqs//j7V74bnNB01xikMWN3QIoJfPoNs0d41E1 FZ9FkL8o6obDwETESNPhFN/hcomIMomaCGMGhTo2uyChsM7+yWuBcGBGg7MsaRRTmKIb 2O8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678137661; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=MlFoCw6xpA0Yeby89LIgDkf8kuvi2LcT1q/KHBhZkHE=; b=Ef45kT4Z2e2hy9LrXj02NL2eBry8GxyZ91nufrzCsjlvCJAiaHgYMTEt8Dpj+WGlMh TLxLIA7pNC//8HLevnb1yG11nQP696w1aetJq37VOE3bg4S4+sLi3z0/Lv2rolbtSjvR DiPzXF0cQcyVHZnrz0cMrwjYzoFepvtZPgd+mnrp6Qeq8Ydfpe1Zf6DslnSQvARE4PE/ uGjWtZml2Sn0RxRcncDF8bLu1IuNkkWfIs+pHdvLOEU0qqDmzZZfx62h6JrkPxIzV54v 1zhNWgDhlkraAtq7QSpM0u6DjJY/vSIP5C8I3vqqj0ApgVIrMtqVte1P7u6Pp9XRmsgK tq1Q== X-Gm-Message-State: AO0yUKXkU7IJ52kcTYurxIk7Oq5XNt0J71Ubb9gbrtao7Z5xFwL2sHHD KmFNPeROrIuVlvD4kWwOW9y4gCsm8cQZP9mgNQ8K5A== X-Google-Smtp-Source: AK7set8ofd+6ONuaIc6zMLtRnSoWn9F/B9bm33wE0NnwAyC+uRV+RW7oVrp1DA0xc1b+PQnc5E+r6lwTyxSHemojGws= X-Received: by 2002:a81:a9c8:0:b0:533:9c5b:7278 with SMTP id g191-20020a81a9c8000000b005339c5b7278mr7452335ywh.0.1678137660650; Mon, 06 Mar 2023 13:21:00 -0800 (PST) MIME-Version: 1.0 References: <202303041807.a3nYQrom-lkp@intel.com> In-Reply-To: <202303041807.a3nYQrom-lkp@intel.com> From: Suren Baghdasaryan Date: Mon, 6 Mar 2023 13:20:49 -0800 Message-ID: Subject: Re: [akpm-mm:mm-unstable 83/143] mm/khugepaged.c:1704:9: error: call to undeclared function 'vma_try_start_write'; ISO C99 and later do not support implicit function declarations To: kernel test robot Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev, Andrew Morton , Linux Memory Management List Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: D016B1A000B X-Rspamd-Server: rspam09 X-Rspam-User: X-Stat-Signature: imd9j9uyiw4u37yioty3ws96kfrnp8jf X-HE-Tag: 1678137661-845063 X-HE-Meta: U2FsdGVkX1+0BRn2k3cpVeLi+JxqaY6zj1s/K/l7Jk6UFlNuM9lR50kMI6hZi1MpsoxfxlvN2EX9ou1xi6VAaJviAK1vZuou0T1PjD+saLgETkfePU1bMHawIfTTppLJY6oZAGqqSsK4REgQEPwapCklvlxghEb+EDwmyMKiW4i4xn6n9rQM+mYYJPo9gv54Q5Qu/1eMHtatLO00paSTPX2sLTXscA/fjNaWe4uWoPat68u/kHDN7b+3P3rLNrNpQKO+7JlPUraLzmmk++6nc66nc4jwG4Ir7SN6Z7wgla3Eeo5UD+b1gLkBxmYbo6oswA+wE/MrLDDCts4Uv1FeFlIY+VNc6d9kas9Zao9Nu0dmz1SsFvaA61PDVibdgj5br/AlRvgoD5ZTp08xlJ12N3fAA5R7BXMkx30E+uB8Wpl3JFB7jfnnSG87N2ijJO17/OuS+hGruhMNIfdBDCUWRyY3GAoSrG3ICP5PBKIylTS4uVlQDLRO42kyMa8Bfo2D+1OB2oS0uIzkhnujCbaavgY+orsfvSqsxhRsmtTY7gczwB6VhYfkKxbtePZrQygdf30d62H0GVn8//9IJMIvEK2xlfpfoRisx2eRZmh/Atz3P1rwS0KWsihj5nipBSbJkeG8vHLW+HmCBqiSJ3ZDwbh0Be7+XHIHHFNBXTowiUuCVNSWUYCBkoYFGqEy8xfVRW2qKJjmdXtlV2cJyIiFMnTDJKbTTHdvFBIMta4CrpaOuHeAydjb2HjJYJ5YDlvCXl6xtQojxtsHGg3/Gg0kcr6PcD5TdiRpUlIHBfyriAYJN5DE9Aq+tADAZHc4iGeTkOGIBiLoJswH58dsjGRRtdMNfhU7Pik2A/gFw6B+HiLMOViRAmI5WlDJfdt8spK2MQBiV3YsUJiSXp7/qVqM5UatR7sm5Zb6UetMYcMt+XShF/Fnn20F8dNTeyubvXeZsmXIJJn4AJYQNdZkiqH xbAP66kr dcnldEG5hW65EoZdrKs4B9PAdh5DT9BjDiZUVdtVakgQuB33kEsTQgAi7GAmnPALvkuZ9hUdV0oEa0chbJ5714TIm5EypGMj9HDug/vogA9S0IvxO6yD8TSI+z5VeQFv0jNcUGDlUXXYJ9C2r0V9TV/4uuB4JPNrUtgPrWV5uYcTQ9oTMhYNhnGynNHkO6ee7hPLIQVFe7aHbpSqrDJ6WIqzI+pgta/nvN6nkPR/pkO3BQy0eSMpg0TbbtgN0xQC++pFm9Fj/MoWPK2fOabjrIBxARjI7MucVgxpvTgqzyamyO0V4+O7/CiQDfjKTMJcWEQCbnEvDkhb+Kr3/bfqbR2WNg9dFQhaxsxMQXn1Xv1pSRmRf5+0v5d/RVLRjVteePtk92woSglaOMBb96k9PDV6TCGqah8inc17gTWZdKi0TDY2yBnqpFsKgLM1p0bpHfDlliELRnYxrE4cFUgkYe0U5NnqoF0LyeQwc3BlfU8+geS7Gc+Vfjwaaissi8kBigPP+HJBOCUFPHkXX4PDTOAMu3Fb6mnav0/JCUmKsXTV1wQ2Bonzi53B37UggRJm4QVnHhtUBdVX3/uU= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Sat, Mar 4, 2023 at 2:27 AM kernel test robot wrote: > > tree: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-unstable > head: df3ae4347aff9be1e9763ffa3b1015fca348bfbd > commit: 92e3612279f925881e96dcc89acfb6bf96a2bb2a [83/143] mm/khugepaged: fix vm_lock/i_mmap_rwsem inversion in retract_page_tables > config: riscv-randconfig-r004-20230303 (https://download.01.org/0day-ci/archive/20230304/202303041807.a3nYQrom-lkp@intel.com/config) > compiler: clang version 17.0.0 (https://github.com/llvm/llvm-project 67409911353323ca5edf2049ef0df54132fa1ca7) > reproduce (this is a W=1 build): > wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross > chmod +x ~/bin/make.cross > # install riscv cross compiling tool for clang build > # apt-get install binutils-riscv64-linux-gnu > # https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git/commit/?id=92e3612279f925881e96dcc89acfb6bf96a2bb2a > git remote add akpm-mm https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git > git fetch --no-tags akpm-mm mm-unstable > git checkout 92e3612279f925881e96dcc89acfb6bf96a2bb2a > # save the config file > mkdir build_dir && cp config build_dir/.config > COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=riscv olddefconfig > COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=riscv SHELL=/bin/bash > > If you fix the issue, kindly add following tag where applicable > | Reported-by: kernel test robot > | Link: https://lore.kernel.org/oe-kbuild-all/202303041807.a3nYQrom-lkp@intel.com/ > > All errors (new ones prefixed by >>): > > >> mm/khugepaged.c:1704:9: error: call to undeclared function 'vma_try_start_write'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] > if (!vma_try_start_write(vma)) > ^ > mm/khugepaged.c:1704:9: note: did you mean 'vma_start_write'? > include/linux/mm.h:719:20: note: 'vma_start_write' declared here > static inline void vma_start_write(struct vm_area_struct *vma) {} > ^ > 1 error generated. Should be fixed once https://lore.kernel.org/all/20230304232856.DD36BC433D2@smtp.kernel.org/ change is merged. > > > vim +/vma_try_start_write +1704 mm/khugepaged.c > > 1641 > 1642 static int retract_page_tables(struct address_space *mapping, pgoff_t pgoff, > 1643 struct mm_struct *target_mm, > 1644 unsigned long target_addr, struct page *hpage, > 1645 struct collapse_control *cc) > 1646 { > 1647 struct vm_area_struct *vma; > 1648 int target_result = SCAN_FAIL; > 1649 > 1650 i_mmap_lock_write(mapping); > 1651 vma_interval_tree_foreach(vma, &mapping->i_mmap, pgoff, pgoff) { > 1652 int result = SCAN_FAIL; > 1653 struct mm_struct *mm = NULL; > 1654 unsigned long addr = 0; > 1655 pmd_t *pmd; > 1656 bool is_target = false; > 1657 > 1658 /* > 1659 * Check vma->anon_vma to exclude MAP_PRIVATE mappings that > 1660 * got written to. These VMAs are likely not worth investing > 1661 * mmap_write_lock(mm) as PMD-mapping is likely to be split > 1662 * later. > 1663 * > 1664 * Note that vma->anon_vma check is racy: it can be set up after > 1665 * the check but before we took mmap_lock by the fault path. > 1666 * But page lock would prevent establishing any new ptes of the > 1667 * page, so we are safe. > 1668 * > 1669 * An alternative would be drop the check, but check that page > 1670 * table is clear before calling pmdp_collapse_flush() under > 1671 * ptl. It has higher chance to recover THP for the VMA, but > 1672 * has higher cost too. It would also probably require locking > 1673 * the anon_vma. > 1674 */ > 1675 if (READ_ONCE(vma->anon_vma)) { > 1676 result = SCAN_PAGE_ANON; > 1677 goto next; > 1678 } > 1679 addr = vma->vm_start + ((pgoff - vma->vm_pgoff) << PAGE_SHIFT); > 1680 if (addr & ~HPAGE_PMD_MASK || > 1681 vma->vm_end < addr + HPAGE_PMD_SIZE) { > 1682 result = SCAN_VMA_CHECK; > 1683 goto next; > 1684 } > 1685 mm = vma->vm_mm; > 1686 is_target = mm == target_mm && addr == target_addr; > 1687 result = find_pmd_or_thp_or_none(mm, addr, &pmd); > 1688 if (result != SCAN_SUCCEED) > 1689 goto next; > 1690 /* > 1691 * We need exclusive mmap_lock to retract page table. > 1692 * > 1693 * We use trylock due to lock inversion: we need to acquire > 1694 * mmap_lock while holding page lock. Fault path does it in > 1695 * reverse order. Trylock is a way to avoid deadlock. > 1696 * > 1697 * Also, it's not MADV_COLLAPSE's job to collapse other > 1698 * mappings - let khugepaged take care of them later. > 1699 */ > 1700 result = SCAN_PTE_MAPPED_HUGEPAGE; > 1701 if ((cc->is_khugepaged || is_target) && > 1702 mmap_write_trylock(mm)) { > 1703 /* trylock for the same lock inversion as above */ > > 1704 if (!vma_try_start_write(vma)) > 1705 goto unlock_next; > 1706 > 1707 /* > 1708 * Re-check whether we have an ->anon_vma, because > 1709 * collapse_and_free_pmd() requires that either no > 1710 * ->anon_vma exists or the anon_vma is locked. > 1711 * We already checked ->anon_vma above, but that check > 1712 * is racy because ->anon_vma can be populated under the > 1713 * mmap lock in read mode. > 1714 */ > 1715 if (vma->anon_vma) { > 1716 result = SCAN_PAGE_ANON; > 1717 goto unlock_next; > 1718 } > 1719 /* > 1720 * When a vma is registered with uffd-wp, we can't > 1721 * recycle the pmd pgtable because there can be pte > 1722 * markers installed. Skip it only, so the rest mm/vma > 1723 * can still have the same file mapped hugely, however > 1724 * it'll always mapped in small page size for uffd-wp > 1725 * registered ranges. > 1726 */ > 1727 if (hpage_collapse_test_exit(mm)) { > 1728 result = SCAN_ANY_PROCESS; > 1729 goto unlock_next; > 1730 } > 1731 if (userfaultfd_wp(vma)) { > 1732 result = SCAN_PTE_UFFD_WP; > 1733 goto unlock_next; > 1734 } > 1735 collapse_and_free_pmd(mm, vma, addr, pmd); > 1736 if (!cc->is_khugepaged && is_target) > 1737 result = set_huge_pmd(vma, addr, pmd, hpage); > 1738 else > 1739 result = SCAN_SUCCEED; > 1740 > 1741 unlock_next: > 1742 mmap_write_unlock(mm); > 1743 goto next; > 1744 } > 1745 /* > 1746 * Calling context will handle target mm/addr. Otherwise, let > 1747 * khugepaged try again later. > 1748 */ > 1749 if (!is_target) { > 1750 khugepaged_add_pte_mapped_thp(mm, addr); > 1751 continue; > 1752 } > 1753 next: > 1754 if (is_target) > 1755 target_result = result; > 1756 } > 1757 i_mmap_unlock_write(mapping); > 1758 return target_result; > 1759 } > 1760 > > -- > 0-DAY CI Kernel Test Service > https://github.com/intel/lkp-tests