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 85D92EB64DA for ; Sat, 22 Jul 2023 13:57:10 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8DC668D0001; Sat, 22 Jul 2023 09:57:09 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 88C666B0072; Sat, 22 Jul 2023 09:57:09 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 72C7C8D0001; Sat, 22 Jul 2023 09:57:09 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 5FDCD6B0071 for ; Sat, 22 Jul 2023 09:57:09 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 25E5E1604EC for ; Sat, 22 Jul 2023 13:57:09 +0000 (UTC) X-FDA: 81039399378.01.3822DB0 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by imf01.hostedemail.com (Postfix) with ESMTP id 112FF40009 for ; Sat, 22 Jul 2023 13:57:05 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=ZPbzAsV8; dmarc=pass (policy=none) header.from=intel.com; spf=pass (imf01.hostedemail.com: domain of lkp@intel.com designates 192.55.52.115 as permitted sender) smtp.mailfrom=lkp@intel.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1690034227; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=LCXL9TTP3G2wI83tpTQya1l9D+eVSxIr3ArrVl6Ef84=; b=ur7b1U1AOMpZ4mYqV657dIFDhCaLg61Pe7Azyv6k5yp9aFbwrb7yr13en2YlVM8SOXIkP4 k+baamoPkni0FpfR6yhKeD4sadeDJiyy4mK79SU7l6nE0WqFJVyFl6B3gq4gPWv3rS//DA nc2vfxSRauUnQqv00s7JVXjZ04gefP4= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=ZPbzAsV8; dmarc=pass (policy=none) header.from=intel.com; spf=pass (imf01.hostedemail.com: domain of lkp@intel.com designates 192.55.52.115 as permitted sender) smtp.mailfrom=lkp@intel.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1690034227; a=rsa-sha256; cv=none; b=lhZ6x6w9/zqmKyDFdYifxZ1IzusMBybZyLhBZRCaoD1JOWZp4AmiHoAVhdnB8es4dO6ajH XLFpnsdQlXxfStCs37+qiaUupfGKjqxJkGVoTpEpmw/uBf3mElVaPEfKLO14XFb/5JopSr ppUg+fzwrZ5q6wIzz1aLirBd8GAKNZQ= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1690034226; x=1721570226; h=date:from:to:cc:subject:message-id:references: mime-version:content-transfer-encoding:in-reply-to; bh=5MIlRC2+zWqTR3u8Tn1LD4aunQEqMpb9fo+8qASwafs=; b=ZPbzAsV8NPGJX3EswRgEUTPwPOIJCnbbEokk0zHTCCNNB2CvKT5xdXwP ygqoro0FqkORprYgwSFk2nEDpspVlnVW355Tj0sg8m3qR47qT5dxJMC2v I6FoyXfSvFIyADV571pLwgF5fBRrGaRGmph8WWy14V65wr0phk0Afkreu BS2p/Di341+n1AchqdJNil5WPLCzdbJlbkmxBctxaDkPIUNjjBOGMk7Ul K9EviN8/ut4f5Q2rcvy4oXZHJaHA5JUqZ3APjaWQZo4zM0uy8blE6Yj+V bXBOsPUhfBI4CTw0msUyC+zS37GR6hSASNkG9J2YGUU+hNckB1uCDE2yR Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10779"; a="367223289" X-IronPort-AV: E=Sophos;i="6.01,224,1684825200"; d="scan'208";a="367223289" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Jul 2023 06:57:03 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10779"; a="702357374" X-IronPort-AV: E=Sophos;i="6.01,224,1684825200"; d="scan'208";a="702357374" Received: from lkp-server02.sh.intel.com (HELO 36946fcf73d7) ([10.239.97.151]) by orsmga006.jf.intel.com with ESMTP; 22 Jul 2023 06:56:56 -0700 Received: from kbuild by 36946fcf73d7 with local (Exim 4.96) (envelope-from ) id 1qND62-0008Lr-0Z; Sat, 22 Jul 2023 13:56:34 +0000 Date: Sat, 22 Jul 2023 21:55:04 +0800 From: kernel test robot To: =?utf-8?B?TWljaGHFgiBNaXJvc8WCYXc=?= , Muhammad Usama Anjum Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev, Andrei Vagin , Danylo Mocherniuk , Alex Sierra , Alexander Viro , Andrew Morton , Linux Memory Management List , Axel Rasmussen , Christian Brauner , Cyrill Gorcunov , Dan Williams , David Hildenbrand , Greg KH , "Gustavo A . R . Silva" , "Liam R . Howlett" , Matthew Wilcox , =?utf-8?B?TWljaGHFgiBNaXJvc8WCYXc=?= , Mike Rapoport , Nadav Amit , Pasha Tatashin , Paul Gofman , Peter Xu , Shuah Khan , Suren Baghdasaryan , Vlastimil Babka , Yang Shi , Yun Zhou , linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-kselftest@vger.kernel.org Subject: Re: [v2] fs/proc/task_mmu: Implement IOCTL for efficient page table scanning Message-ID: <202307222107.GdtIG4nq-lkp@intel.com> References: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 112FF40009 X-Stat-Signature: j3gt68i9qd5ggq7gi7wdcfx5niy15a3f X-Rspam-User: X-HE-Tag: 1690034225-222013 X-HE-Meta: U2FsdGVkX1/VnyWHDM31XLNbD+nMUDYmdO7b3IK5ZGUFNdRJzL5t6q5lzJXhlpUBmnBUOdEQCNpfxrgANg2COr97w/wcHZ/FB69PPcus/tLknDY+gr4tkFPK8sSQxihuoSfRlUnP8DUM1MiiAgZH/yAWU8LY4e61Rwke65p1lx+pZtFrefCjGrJsHEoDQTfGbLzspgekYqm7MebsGdkMipq520T6DaYmuWGbFSiGvjv7tWiuUH7EwYeYr//XYQVnmolFbYXk+V2GZo297lYiKDUb+H0cjc+W/AXbdyJ3RWP6G83UB89onyJqODauZgvOqokprg0UZpWdVIK64WDSuITxf1PKdzHo54AbknoDzgxYhLwkUuns3Bt3ZygP9dD5I7Q5IXcnApzI3DOr58L3K+hkbixjss1441WpgCwLtLyA+dJJqKfMTWac2ofor/EDHGSS3qLxdZWmUU2wGo8qu7C2PAc0qyZ/nkGq5zD3+dBGRmzkVBpIT43KYwNwtIEhMrNQJ9BnasOnJkdOiHiWPHtHyWY8QcgCNIEwuumbh/wJymG8RwuvKsYWIVlkI7bVFTHw+V4MgIu5rgjyvhd4v/TRXmBHwDiBMeoHqY9zlFo7Chu2oFIYZ3eZgb2Tk8bVCEPOBgOIs5OI7SbFBZL14VbpDQgOn4HVEquN5uoKtxd/j3qs1M2XTc5BZwT6LXbd2dNMK5EmL62aBoBGjf1spOv16RwcjEjB3W0+Omp2yXPvo366UQqS+FNga2b9C9cbR8ioV6zFixqqhRcuZYD8vrLMQxJDsAKcTVjMUFt7aJVwKkyAwdSaZBD7NOuHbo3wCMzhyQEH5T0srpw0u4zQVPpKGqtMdrWY3fvUpSSjWDNdS+SGgrn6kUtnYyze4CZd/WGcLReUcDb5JWCL9ynZeIHf2r9JF6dvdYSf6lK2woFAMioH7dGuO0dKCAJTYhK5frzSjXAHdoWCTTZ1jyJ 80yoPejj I8dxm8Ixhq2Ge4s9qL7nAMghP09slPa96wKpZf14vyfOOM05KHItTUeFqkLsec10UF+eS+Azo9bmA+PXzRNGhFC03OJcVw7MR+OgY7+H4H+I722sjtCAzws2Z614T/ltln+/Mda9uOopzfl1Rfs0u5OOZcPwc18XJITDkOf8sUwggG4VR9gisnR1wdhMSGUT+uhHN+jtdnxN/CrrblNlWog8kJ+75svNNyIXm6QyDQU9QfjpsqAL9JoeiTzTl2UAowmVrStS6FSWhofHgfLZsVyykfSunk47O2p7kyuUazrczzr9JkbZU8Wtk23FZ6UzBoD22tEPDHG/YpyxRqaSv82zuDCSKA9MBjr1ZJAqQaUBi7ygHTfNPxvYbce2KulyppujDlYuO8dRp3np8Oo6O1WWasO83ejgmWQ9f 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: Hi MichaƂ, kernel test robot noticed the following build errors: [auto build test ERROR on akpm-mm/mm-everything] [also build test ERROR on linus/master v6.5-rc2 next-20230721] [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/Micha-Miros-aw/fs-proc-task_mmu-Implement-IOCTL-for-efficient-page-table-scanning/20230722-082500 base: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything patch link: https://lore.kernel.org/r/ZLshsAj5PbsEAHhP%40qmqm.qmqm.pl patch subject: [v2] fs/proc/task_mmu: Implement IOCTL for efficient page table scanning config: x86_64-rhel-8.3-rust (https://download.01.org/0day-ci/archive/20230722/202307222107.GdtIG4nq-lkp@intel.com/config) compiler: clang version 15.0.7 (https://github.com/llvm/llvm-project.git 8dfdcc7b7bf66834a761bd8de445840ef68e4d1a) reproduce: (https://download.01.org/0day-ci/archive/20230722/202307222107.GdtIG4nq-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 | Closes: https://lore.kernel.org/oe-kbuild-all/202307222107.GdtIG4nq-lkp@intel.com/ All errors (new ones prefixed by >>): fs/proc/task_mmu.c:1921:6: error: call to undeclared function 'userfaultfd_wp_async'; ISO C99 and later do not support implicit function declarations [-Werror,-Wimplicit-function-declaration] if (userfaultfd_wp_async(vma) && userfaultfd_wp_use_markers(vma)) ^ >> fs/proc/task_mmu.c:2047:13: error: use of undeclared identifier 'addr' if (end != addr + HPAGE_SIZE) { ^ 2 errors generated. vim +/addr +2047 fs/proc/task_mmu.c 1913 1914 static int pagemap_scan_test_walk(unsigned long start, unsigned long end, 1915 struct mm_walk *walk) 1916 { 1917 struct pagemap_scan_private *p = walk->private; 1918 struct vm_area_struct *vma = walk->vma; 1919 unsigned long vma_category = 0; 1920 > 1921 if (userfaultfd_wp_async(vma) && userfaultfd_wp_use_markers(vma)) 1922 vma_category |= PAGE_IS_WPASYNC; 1923 else if (p->arg.flags & PM_SCAN_CHECK_WPASYNC) 1924 return -EPERM; 1925 1926 if (vma->vm_flags & VM_PFNMAP) 1927 return 1; 1928 1929 if (!pagemap_scan_is_interesting_vma(vma_category, p)) 1930 return 1; 1931 1932 p->cur_vma_category = vma_category; 1933 return 0; 1934 } 1935 1936 static bool pagemap_scan_push_range(unsigned long categories, 1937 struct pagemap_scan_private *p, 1938 unsigned long addr, unsigned long end) 1939 { 1940 struct page_region *cur_buf = &p->cur_buf; 1941 1942 /* 1943 * When there is no output buffer provided at all, the sentinel values 1944 * won't match here. There is no other way for `cur_buf->end` to be 1945 * non-zero other than it being non-empty. 1946 */ 1947 if (addr == cur_buf->end && categories == cur_buf->categories) { 1948 cur_buf->end = end; 1949 return true; 1950 } 1951 1952 if (cur_buf->end) { 1953 if (p->vec_buf_index >= p->vec_buf_len) 1954 return false; 1955 1956 memcpy(&p->vec_buf[p->vec_buf_index], cur_buf, 1957 sizeof(*p->vec_buf)); 1958 ++p->vec_buf_index; 1959 } 1960 1961 cur_buf->start = addr; 1962 cur_buf->end = end; 1963 cur_buf->categories = categories; 1964 return true; 1965 } 1966 1967 static void pagemap_scan_backout_range(struct pagemap_scan_private *p, 1968 unsigned long addr, unsigned long end) 1969 { 1970 struct page_region *cur_buf = &p->cur_buf; 1971 1972 if (cur_buf->start != addr) 1973 cur_buf->end = addr; 1974 else 1975 cur_buf->start = cur_buf->end = 0; 1976 1977 p->end_addr = 0; 1978 p->found_pages -= (end - addr) / PAGE_SIZE; 1979 } 1980 1981 static int pagemap_scan_output(unsigned long categories, 1982 struct pagemap_scan_private *p, 1983 unsigned long addr, unsigned long *end) 1984 { 1985 unsigned long n_pages, total_pages; 1986 int ret = 0; 1987 1988 if (!pagemap_scan_is_interesting_page(categories, p)) { 1989 *end = addr; 1990 return 0; 1991 } 1992 1993 if (!p->vec_buf) 1994 return 0; 1995 1996 categories &= p->arg.return_mask; 1997 1998 n_pages = (*end - addr) / PAGE_SIZE; 1999 if (check_add_overflow(p->found_pages, n_pages, &total_pages) || total_pages > p->arg.max_pages) { 2000 size_t n_too_much = total_pages - p->arg.max_pages; 2001 *end -= n_too_much * PAGE_SIZE; 2002 n_pages -= n_too_much; 2003 ret = -ENOSPC; 2004 } 2005 2006 if (!pagemap_scan_push_range(categories, p, addr, *end)) { 2007 *end = addr; 2008 n_pages = 0; 2009 ret = -ENOSPC; 2010 } 2011 2012 p->found_pages += n_pages; 2013 if (ret) 2014 p->end_addr = *end; 2015 return ret; 2016 } 2017 2018 static int pagemap_scan_thp_entry(pmd_t *pmd, unsigned long start, 2019 unsigned long end, struct mm_walk *walk) 2020 { 2021 #ifdef CONFIG_TRANSPARENT_HUGEPAGE 2022 struct pagemap_scan_private *p = walk->private; 2023 struct vm_area_struct *vma = walk->vma; 2024 unsigned long categories; 2025 spinlock_t *ptl; 2026 int ret = 0; 2027 2028 ptl = pmd_trans_huge_lock(pmd, vma); 2029 if (!ptl) 2030 return -ENOENT; 2031 2032 categories = p->cur_vma_category | pagemap_thp_category(*pmd); 2033 2034 ret = pagemap_scan_output(categories, p, start, &end); 2035 if (start == end) 2036 goto out_unlock; 2037 2038 if (~p->arg.flags & PM_SCAN_WP_MATCHING) 2039 goto out_unlock; 2040 if (~categories & PAGE_IS_WRITTEN) 2041 goto out_unlock; 2042 2043 /* 2044 * Break huge page into small pages if the WP operation 2045 * need to be performed is on a portion of the huge page. 2046 */ > 2047 if (end != addr + HPAGE_SIZE) { 2048 spin_unlock(ptl); 2049 split_huge_pmd(vma, pmd, start); 2050 pagemap_scan_backout_range(p, start, end); 2051 return -ENOENT; 2052 } 2053 2054 make_uffd_wp_pmd(vma, start, pmd); 2055 flush_tlb_range(vma, start, end); 2056 out_unlock: 2057 spin_unlock(ptl); 2058 return ret; 2059 #else /* !CONFIG_TRANSPARENT_HUGEPAGE */ 2060 return -ENOENT; 2061 #endif 2062 } 2063 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki