Re: [PATCH v5 1/2] riscv: Get rid of riscv_pfn_base variable
From: kernel test robot
Date: Sat Jan 28 2023 - 09:08:11 EST
Hi Alexandre,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on robh/for-next]
[also build test WARNING on linus/master v6.2-rc5 next-20230127]
[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/Alexandre-Ghiti/riscv-Get-rid-of-riscv_pfn_base-variable/20230125-161537
base: https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next
patch link: https://lore.kernel.org/r/20230125081214.1576313-2-alexghiti%40rivosinc.com
patch subject: [PATCH v5 1/2] riscv: Get rid of riscv_pfn_base variable
config: riscv-randconfig-r014-20230123 (https://download.01.org/0day-ci/archive/20230128/202301282132.46rygx9x-lkp@xxxxxxxxx/config)
compiler: clang version 16.0.0 (https://github.com/llvm/llvm-project 4196ca3278f78c6e19246e54ab0ecb364e37d66a)
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://github.com/intel-lab-lkp/linux/commit/90b21402dc8a7e6e36a62ad19c4969ff13fad168
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Alexandre-Ghiti/riscv-Get-rid-of-riscv_pfn_base-variable/20230125-161537
git checkout 90b21402dc8a7e6e36a62ad19c4969ff13fad168
# 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 drivers/mmc/host/ mm/
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
All warnings (new ones prefixed by >>):
>> mm/debug.c:95:25: warning: format specifies type 'unsigned long' but the argument has type 'phys_addr_t' (aka 'unsigned long long') [-Wformat]
page_to_pgoff(page), page_to_pfn(page));
^~~~~~~~~~~~~~~~~
include/linux/printk.h:510:37: note: expanded from macro 'pr_warn'
printk(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__)
~~~ ^~~~~~~~~~~
include/linux/printk.h:457:60: note: expanded from macro 'printk'
#define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__)
~~~ ^~~~~~~~~~~
include/linux/printk.h:429:19: note: expanded from macro 'printk_index_wrap'
_p_func(_fmt, ##__VA_ARGS__); \
~~~~ ^~~~~~~~~~~
include/asm-generic/memory_model.h:52:21: note: expanded from macro 'page_to_pfn'
#define page_to_pfn __page_to_pfn
^
include/asm-generic/memory_model.h:19:29: note: expanded from macro '__page_to_pfn'
#define __page_to_pfn(page) ((unsigned long)((page) - mem_map) + \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.
--
>> mm/page_alloc.c:695:18: warning: format specifies type 'unsigned long' but the argument has type 'phys_addr_t' (aka 'unsigned long long') [-Wformat]
current->comm, page_to_pfn(page));
^~~~~~~~~~~~~~~~~
include/linux/printk.h:480:35: note: expanded from macro 'pr_alert'
printk(KERN_ALERT pr_fmt(fmt), ##__VA_ARGS__)
~~~ ^~~~~~~~~~~
include/linux/printk.h:457:60: note: expanded from macro 'printk'
#define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__)
~~~ ^~~~~~~~~~~
include/linux/printk.h:429:19: note: expanded from macro 'printk_index_wrap'
_p_func(_fmt, ##__VA_ARGS__); \
~~~~ ^~~~~~~~~~~
include/asm-generic/memory_model.h:52:21: note: expanded from macro 'page_to_pfn'
#define page_to_pfn __page_to_pfn
^
include/asm-generic/memory_model.h:19:29: note: expanded from macro '__page_to_pfn'
#define __page_to_pfn(page) ((unsigned long)((page) - mem_map) + \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.
--
>> mm/page_isolation.c:174:26: warning: comparison of distinct pointer types ('typeof (((unsigned long)((page) - mem_map) + (((phys_ram_base) >> (12))))) *' (aka 'unsigned long long *') and 'typeof (start_pfn) *' (aka 'unsigned long *')) [-Wcompare-distinct-pointer-types]
check_unmovable_start = max(page_to_pfn(page), start_pfn);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/minmax.h:74:19: note: expanded from macro 'max'
#define max(x, y) __careful_cmp(x, y, >)
^~~~~~~~~~~~~~~~~~~~~~
include/linux/minmax.h:36:24: note: expanded from macro '__careful_cmp'
__builtin_choose_expr(__safe_cmp(x, y), \
^~~~~~~~~~~~~~~~
include/linux/minmax.h:26:4: note: expanded from macro '__safe_cmp'
(__typecheck(x, y) && __no_side_effects(x, y))
^~~~~~~~~~~~~~~~~
include/linux/minmax.h:20:28: note: expanded from macro '__typecheck'
(!!(sizeof((typeof(x) *)1 == (typeof(y) *)1)))
~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~
>> mm/page_isolation.c:175:24: warning: comparison of distinct pointer types ('typeof ((((((((unsigned long)((page) - mem_map) + (((phys_ram_base) >> (12))))) + 1)) + ((typeof (((((unsigned long)((page) - mem_map) + (((phys_ram_base) >> (12))))) + 1)))(((1UL << __builtin_choose_expr(((!!(sizeof ((typeof ((unsigned int)((21 - (12)))) *)1 == (typeof ((unsigned int)(11 - 1)) *)1))) && ((sizeof(int) == sizeof (*(8 ? ((void *)((long)((unsigned int)((21 - (12)))) * 0L)) : (int *)8))) && (sizeof(int) == sizeof (*(8 ? ((void *)((long)((unsigned int)(11 - 1)) * 0L)) : (int *)8))))), (((unsigned int)((21 - (12)))) < ((unsigned int)(11 - 1)) ? ((unsigned int)((21 - (12)))) : ((unsigned int)(11 - 1))), ({
typeof ((unsigned int)((21 - (12)))) __UNIQUE_ID___x304 = ((unsigned int)((21 - (12))));
typeof ((unsigned int)(11 - 1)) __UNIQUE_ID___y305 = ((unsigned int)(11 - 1));
((__UNIQUE_ID___x304) < (__UNIQUE_ID___y305) ? (__UNIQUE_ID___x304) : (__UNIQUE_ID___y305));
}))))) - 1)) & ~((typeof (((((unsigned long)((page) - mem_map) + (((phys_ram_base) >> (12))))) + 1)))(((1UL << __builtin_choose_expr(((!!(sizeof ((typeof ((unsigned int)((21 - (12)))) *)1 == (typeof ((unsigned int)(11 - 1)) *)1))) && ((sizeof(int) == sizeof (*(8 ? ((void *)((long)((unsigned int)((21 - (12)))) * 0L)) : (int *)8))) && (sizeof(int) == sizeof (*(8 ? ((void *)((long)((unsigned int)(11 - 1)) * 0L)) : (int *)8))))), (((unsigned int)((21 - (12)))) < ((unsigned int)(11 - 1)) ? ((unsigned int)((21 - (12)))) : ((unsigned int)(11 - 1))), ({
typeof ((unsigned int)((21 - (12)))) __UNIQUE_ID___x304 = ((unsigned int)((21 - (12))));
typeof ((unsigned int)(11 - 1)) __UNIQUE_ID___y305 = ((unsigned int)(11 - 1));
((__UNIQUE_ID___x304) < (__UNIQUE_ID___y305) ? (__UNIQUE_ID___x304) : (__UNIQUE_ID___y305));
}))))) - 1))) *' (aka 'unsigned long long *') and 'typeof (end_pfn) *' (aka 'unsigned long *')) [-Wcompare-distinct-pointer-types]
check_unmovable_end = min(pageblock_end_pfn(page_to_pfn(page)),
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/minmax.h:67:19: note: expanded from macro 'min'
#define min(x, y) __careful_cmp(x, y, <)
^~~~~~~~~~~~~~~~~~~~~~
include/linux/minmax.h:36:24: note: expanded from macro '__careful_cmp'
__builtin_choose_expr(__safe_cmp(x, y), \
^~~~~~~~~~~~~~~~
include/linux/minmax.h:26:4: note: expanded from macro '__safe_cmp'
(__typecheck(x, y) && __no_side_effects(x, y))
^~~~~~~~~~~~~~~~~
include/linux/minmax.h:20:28: note: expanded from macro '__typecheck'
(!!(sizeof((typeof(x) *)1 == (typeof(y) *)1)))
~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~
2 warnings generated.
--
>> drivers/mmc/host/usdhi6rol0.c:388:18: warning: format specifies type 'unsigned long' but the argument has type 'phys_addr_t' (aka 'unsigned long long') [-Wformat]
host->pg.page, page_to_pfn(host->pg.page), host->pg.mapped,
^~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/dev_printk.h:155:39: note: expanded from macro 'dev_dbg'
dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
~~~ ^~~~~~~~~~~
include/linux/dynamic_debug.h:273:19: note: expanded from macro 'dynamic_dev_dbg'
dev, fmt, ##__VA_ARGS__)
~~~ ^~~~~~~~~~~
include/linux/dynamic_debug.h:249:59: note: expanded from macro '_dynamic_func_call'
_dynamic_func_call_cls(_DPRINTK_CLASS_DFLT, fmt, func, ##__VA_ARGS__)
^~~~~~~~~~~
note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
include/linux/dynamic_debug.h:223:15: note: expanded from macro '__dynamic_func_call_cls'
func(&id, ##__VA_ARGS__); \
^~~~~~~~~~~
include/asm-generic/memory_model.h:52:21: note: expanded from macro 'page_to_pfn'
#define page_to_pfn __page_to_pfn
^
include/asm-generic/memory_model.h:19:29: note: expanded from macro '__page_to_pfn'
#define __page_to_pfn(page) ((unsigned long)((page) - mem_map) + \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/mmc/host/usdhi6rol0.c:511:18: warning: format specifies type 'unsigned long' but the argument has type 'phys_addr_t' (aka 'unsigned long long') [-Wformat]
host->pg.page, page_to_pfn(host->pg.page), host->pg.mapped,
^~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/dev_printk.h:155:39: note: expanded from macro 'dev_dbg'
dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
~~~ ^~~~~~~~~~~
include/linux/dynamic_debug.h:273:19: note: expanded from macro 'dynamic_dev_dbg'
dev, fmt, ##__VA_ARGS__)
~~~ ^~~~~~~~~~~
include/linux/dynamic_debug.h:249:59: note: expanded from macro '_dynamic_func_call'
_dynamic_func_call_cls(_DPRINTK_CLASS_DFLT, fmt, func, ##__VA_ARGS__)
^~~~~~~~~~~
note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
include/linux/dynamic_debug.h:223:15: note: expanded from macro '__dynamic_func_call_cls'
func(&id, ##__VA_ARGS__); \
^~~~~~~~~~~
include/asm-generic/memory_model.h:52:21: note: expanded from macro 'page_to_pfn'
#define page_to_pfn __page_to_pfn
^
include/asm-generic/memory_model.h:19:29: note: expanded from macro '__page_to_pfn'
#define __page_to_pfn(page) ((unsigned long)((page) - mem_map) + \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2 warnings generated.
vim +174 mm/page_isolation.c
b48d8a8e5ce53e Zi Yan 2022-05-12 141
844fbae63e468e Zi Yan 2022-05-12 142 /*
844fbae63e468e Zi Yan 2022-05-12 143 * This function set pageblock migratetype to isolate if no unmovable page is
844fbae63e468e Zi Yan 2022-05-12 144 * present in [start_pfn, end_pfn). The pageblock must intersect with
844fbae63e468e Zi Yan 2022-05-12 145 * [start_pfn, end_pfn).
844fbae63e468e Zi Yan 2022-05-12 146 */
844fbae63e468e Zi Yan 2022-05-12 147 static int set_migratetype_isolate(struct page *page, int migratetype, int isol_flags,
844fbae63e468e Zi Yan 2022-05-12 148 unsigned long start_pfn, unsigned long end_pfn)
ee6f509c327401 Minchan Kim 2012-07-31 149 {
1c31cb493c3144 David Hildenbrand 2020-10-13 150 struct zone *zone = page_zone(page);
1c31cb493c3144 David Hildenbrand 2020-10-13 151 struct page *unmovable;
3f9903b9ca5e98 David Hildenbrand 2020-01-30 152 unsigned long flags;
844fbae63e468e Zi Yan 2022-05-12 153 unsigned long check_unmovable_start, check_unmovable_end;
ee6f509c327401 Minchan Kim 2012-07-31 154
ee6f509c327401 Minchan Kim 2012-07-31 155 spin_lock_irqsave(&zone->lock, flags);
ee6f509c327401 Minchan Kim 2012-07-31 156
2c7452a075d4db Mike Kravetz 2018-04-05 157 /*
2c7452a075d4db Mike Kravetz 2018-04-05 158 * We assume the caller intended to SET migrate type to isolate.
2c7452a075d4db Mike Kravetz 2018-04-05 159 * If it is already set, then someone else must have raced and
51030a53d81e30 David Hildenbrand 2020-10-13 160 * set it before us.
2c7452a075d4db Mike Kravetz 2018-04-05 161 */
51030a53d81e30 David Hildenbrand 2020-10-13 162 if (is_migrate_isolate_page(page)) {
51030a53d81e30 David Hildenbrand 2020-10-13 163 spin_unlock_irqrestore(&zone->lock, flags);
51030a53d81e30 David Hildenbrand 2020-10-13 164 return -EBUSY;
51030a53d81e30 David Hildenbrand 2020-10-13 165 }
2c7452a075d4db Mike Kravetz 2018-04-05 166
ee6f509c327401 Minchan Kim 2012-07-31 167 /*
ee6f509c327401 Minchan Kim 2012-07-31 168 * FIXME: Now, memory hotplug doesn't call shrink_slab() by itself.
ee6f509c327401 Minchan Kim 2012-07-31 169 * We just check MOVABLE pages.
844fbae63e468e Zi Yan 2022-05-12 170 *
844fbae63e468e Zi Yan 2022-05-12 171 * Pass the intersection of [start_pfn, end_pfn) and the page's pageblock
844fbae63e468e Zi Yan 2022-05-12 172 * to avoid redundant checks.
ee6f509c327401 Minchan Kim 2012-07-31 173 */
844fbae63e468e Zi Yan 2022-05-12 @174 check_unmovable_start = max(page_to_pfn(page), start_pfn);
4f9bc69ac5ce34 Kefeng Wang 2022-09-07 @175 check_unmovable_end = min(pageblock_end_pfn(page_to_pfn(page)),
844fbae63e468e Zi Yan 2022-05-12 176 end_pfn);
844fbae63e468e Zi Yan 2022-05-12 177
844fbae63e468e Zi Yan 2022-05-12 178 unmovable = has_unmovable_pages(check_unmovable_start, check_unmovable_end,
844fbae63e468e Zi Yan 2022-05-12 179 migratetype, isol_flags);
4a55c0474a92d5 Qian Cai 2020-01-30 180 if (!unmovable) {
2139cbe627b891 Bartlomiej Zolnierkiewicz 2012-10-08 181 unsigned long nr_pages;
4da2ce250f9860 Michal Hocko 2017-11-15 182 int mt = get_pageblock_migratetype(page);
2139cbe627b891 Bartlomiej Zolnierkiewicz 2012-10-08 183
a458431e176ddb Bartlomiej Zolnierkiewicz 2013-01-04 184 set_pageblock_migratetype(page, MIGRATE_ISOLATE);
ad53f92eb416d8 Joonsoo Kim 2014-11-13 185 zone->nr_isolate_pageblock++;
02aa0cdd72483c Vlastimil Babka 2017-05-08 186 nr_pages = move_freepages_block(zone, page, MIGRATE_ISOLATE,
02aa0cdd72483c Vlastimil Babka 2017-05-08 187 NULL);
2139cbe627b891 Bartlomiej Zolnierkiewicz 2012-10-08 188
4da2ce250f9860 Michal Hocko 2017-11-15 189 __mod_zone_freepage_state(zone, -nr_pages, mt);
1c31cb493c3144 David Hildenbrand 2020-10-13 190 spin_unlock_irqrestore(&zone->lock, flags);
1c31cb493c3144 David Hildenbrand 2020-10-13 191 return 0;
ee6f509c327401 Minchan Kim 2012-07-31 192 }
ee6f509c327401 Minchan Kim 2012-07-31 193
ee6f509c327401 Minchan Kim 2012-07-31 194 spin_unlock_irqrestore(&zone->lock, flags);
1c31cb493c3144 David Hildenbrand 2020-10-13 195 if (isol_flags & REPORT_FAILURE) {
4a55c0474a92d5 Qian Cai 2020-01-30 196 /*
3d680bdf60a5ba Qian Cai 2020-01-30 197 * printk() with zone->lock held will likely trigger a
4a55c0474a92d5 Qian Cai 2020-01-30 198 * lockdep splat, so defer it here.
4a55c0474a92d5 Qian Cai 2020-01-30 199 */
4a55c0474a92d5 Qian Cai 2020-01-30 200 dump_page(unmovable, "unmovable page");
3d680bdf60a5ba Qian Cai 2020-01-30 201 }
4a55c0474a92d5 Qian Cai 2020-01-30 202
1c31cb493c3144 David Hildenbrand 2020-10-13 203 return -EBUSY;
ee6f509c327401 Minchan Kim 2012-07-31 204 }
ee6f509c327401 Minchan Kim 2012-07-31 205
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests