tree: yhuang/random-r0.1i
head: 96efac420c3a75d62cf4ff43184d4dbd0ce94b55
commit: ddebbe29896aa7b2aa3f84ebeada1e3c466a37fa [41/42] 2 stage filter for promotion
config: x86_64-randconfig-e004-201939 (attached as .config)
compiler: gcc-7 (Debian 7.4.0-13) 7.4.0
reproduce:
git checkout ddebbe29896aa7b2aa3f84ebeada1e3c466a37fa
# save the attached .config to linux build tree
make ARCH=x86_64
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
ld: mm/page_alloc.o: in function `pgdat_init_random_migrate':
mm/page_alloc.c:6632: undefined reference to `node_random_promote_work'
ld: mm/page_alloc.c:6634: undefined reference to `node_random_demote_work'
ld: drivers/base/node.o: in function `random_migrate_threshold_max_ms_store':
drivers/base/node.c:786: undefined reference to `node_random_migrate_stop'
ld: drivers/base/node.c:790: undefined reference to `node_random_migrate_start'
ld: drivers/base/node.o: in function `random_migrate_period_ms_store':
> drivers/base/node.c:768: undefined reference to
`node_random_migrate_start'
> ld: drivers/base/node.c:759: undefined reference to `node_random_migrate_stop'
> ld: drivers/base/node.c:759: undefined reference to `node_random_migrate_stop'
ld: drivers/base/node.o: in function `random_migrate_mb_store':
drivers/base/node.c:725: undefined reference to `node_random_migrate_stop'
ld: drivers/base/node.c:729: undefined reference to `node_random_migrate_pages'
ld: drivers/base/node.c:731: undefined reference to `node_random_migrate_start'
vim +768 drivers/base/node.c
450f0596b41147 Huang Ying 2019-09-11 736
321be1f29c4be3 Huang Ying 2019-09-13 737 static ssize_t random_migrate_period_ms_store(
321be1f29c4be3 Huang Ying 2019-09-13 738 struct pglist_data *pgdat, struct
random_migrate_state *rm_state,
321be1f29c4be3 Huang Ying 2019-09-13 739 const char *buf, size_t count, bool promote)
16178d86a313a3 Huang Ying 2019-09-11 740 {
321be1f29c4be3 Huang Ying 2019-09-13 741 int err, tnid;
16178d86a313a3 Huang Ying 2019-09-11 742 long period, orig_period;
16178d86a313a3 Huang Ying 2019-09-11 743
16178d86a313a3 Huang Ying 2019-09-11 744 err = kstrtol(buf, 0, &period);
16178d86a313a3 Huang Ying 2019-09-11 745 if (err)
16178d86a313a3 Huang Ying 2019-09-11 746 return -EINVAL;
16178d86a313a3 Huang Ying 2019-09-11 747
16178d86a313a3 Huang Ying 2019-09-11 748 if (period < 0)
16178d86a313a3 Huang Ying 2019-09-11 749 return -EINVAL;
16178d86a313a3 Huang Ying 2019-09-11 750
321be1f29c4be3 Huang Ying 2019-09-13 751 if (promote)
321be1f29c4be3 Huang Ying 2019-09-13 752 tnid =
next_promotion_node(pgdat->node_id);
321be1f29c4be3 Huang Ying 2019-09-13 753 else
321be1f29c4be3 Huang Ying 2019-09-13 754 tnid =
next_migration_node(pgdat->node_id);
321be1f29c4be3 Huang Ying 2019-09-13 755 if (tnid == TERMINAL_NODE)
16178d86a313a3 Huang Ying 2019-09-11 756 return -EINVAL;
16178d86a313a3 Huang Ying 2019-09-11 757
16178d86a313a3 Huang Ying 2019-09-11 758 mutex_lock(&random_migrate_mutex);
907384318ec6a1 Huang Ying 2019-09-24 @759 node_random_migrate_stop(rm_state);
321be1f29c4be3 Huang Ying 2019-09-13 760 orig_period = rm_state->period;
77c411004cf0f7 Huang Ying 2019-09-12 761 period = msecs_to_jiffies(period);
321be1f29c4be3 Huang Ying 2019-09-13 762 rm_state->period = period;
ddebbe29896aa7 Huang Ying 2019-09-29 763 if (promote)
ddebbe29896aa7 Huang Ying 2019-09-29 764 rm_state->threshold = max(period / 2,
1L);
ddebbe29896aa7 Huang Ying 2019-09-29 765 else
321be1f29c4be3 Huang Ying 2019-09-13 766 rm_state->threshold = period;
907384318ec6a1 Huang Ying 2019-09-24 767 if (period && rm_state->nr_page)
321be1f29c4be3 Huang Ying 2019-09-13 @768 node_random_migrate_start(pgdat, rm_state);
16178d86a313a3 Huang Ying 2019-09-11 769 mutex_unlock(&random_migrate_mutex);
16178d86a313a3 Huang Ying 2019-09-11 770
16178d86a313a3 Huang Ying 2019-09-11 771 return count;
16178d86a313a3 Huang Ying 2019-09-11 772 }
16178d86a313a3 Huang Ying 2019-09-11 773
039975d2ffdf8c Huang Ying 2019-09-25 774 static ssize_t
random_migrate_threshold_max_ms_store(
039975d2ffdf8c Huang Ying 2019-09-25 775 struct pglist_data *pgdat, struct
random_migrate_state *rm_state,
039975d2ffdf8c Huang Ying 2019-09-25 776 const char *buf, size_t count)
039975d2ffdf8c Huang Ying 2019-09-25 777 {
039975d2ffdf8c Huang Ying 2019-09-25 778 int err;
039975d2ffdf8c Huang Ying 2019-09-25 779 long threshold_max;
039975d2ffdf8c Huang Ying 2019-09-25 780
039975d2ffdf8c Huang Ying 2019-09-25 781 err = kstrtol(buf, 0, &threshold_max);
039975d2ffdf8c Huang Ying 2019-09-25 782 if (err)
039975d2ffdf8c Huang Ying 2019-09-25 783 return -EINVAL;
039975d2ffdf8c Huang Ying 2019-09-25 784
039975d2ffdf8c Huang Ying 2019-09-25 785 mutex_lock(&random_migrate_mutex);
039975d2ffdf8c Huang Ying 2019-09-25 @786 node_random_migrate_stop(rm_state);
039975d2ffdf8c Huang Ying 2019-09-25 787 if (threshold_max < 0)
039975d2ffdf8c Huang Ying 2019-09-25 788 return -EINVAL;
039975d2ffdf8c Huang Ying 2019-09-25 789 if (rm_state->period &&
rm_state->nr_page)
039975d2ffdf8c Huang Ying 2019-09-25 790 node_random_migrate_start(pgdat, rm_state);
039975d2ffdf8c Huang Ying 2019-09-25 791 mutex_unlock(&random_migrate_mutex);
039975d2ffdf8c Huang Ying 2019-09-25 792
039975d2ffdf8c Huang Ying 2019-09-25 793 rm_state->threshold_max =
msecs_to_jiffies(threshold_max);
039975d2ffdf8c Huang Ying 2019-09-25 794
039975d2ffdf8c Huang Ying 2019-09-25 795 return count;
039975d2ffdf8c Huang Ying 2019-09-25 796 }
039975d2ffdf8c Huang Ying 2019-09-25 797
:::::: The code at line 768 was first introduced by commit
:::::: 321be1f29c4be3e5407b5463bcb053990c65cfda mm: Identify cold pages via randomly
sampling + idle page tracking
:::::: TO: Huang Ying <ying.huang(a)intel.com>
:::::: CC: Huang Ying <ying.huang(a)intel.com>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation