Re: [PATCH v4 16/20] TP-futex: Group readers together in wait queue

From: kbuild test robot
Date: Thu Dec 29 2016 - 14:54:39 EST


Hi Waiman,

[auto build test ERROR on linus/master]
[also build test ERROR on v4.10-rc1 next-20161224]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url: https://github.com/0day-ci/linux/commits/Waiman-Long/futex-Introducing-throughput-optimized-TP-futexes/20161230-020021
config: m32r-usrv_defconfig (attached as .config)
compiler: m32r-linux-gcc (GCC) 6.2.0
reproduce:
wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
make.cross ARCH=m32r

All errors (new ones prefixed by >>):

kernel/built-in.o: In function `futex_spin_on_reader':
>> kernel/futex.c:3961: undefined reference to `osq_lock'
kernel/futex.c:3961:(.text+0x60cd8): relocation truncated to fit: R_M32R_26_PCREL_RELA against undefined symbol `osq_lock'
>> kernel/futex.c:3988: undefined reference to `osq_unlock'
kernel/futex.c:3988:(.text+0x61028): relocation truncated to fit: R_M32R_26_PCREL_RELA against undefined symbol `osq_unlock'
kernel/futex.c:3994: undefined reference to `osq_unlock'
kernel/futex.c:3994:(.text+0x61080): relocation truncated to fit: R_M32R_26_PCREL_RELA against undefined symbol `osq_unlock'

vim +3961 kernel/futex.c

3955 first_reader = READ_ONCE(state->first_reader);
3956 if (!first_reader)
3957 first_reader = cmpxchg(&state->first_reader, NULL, current);
3958 if (!first_reader)
3959 goto out; /* Became the first reader */
3960
> 3961 if (!osq_lock(&state->reader_osq))
3962 goto reschedule;
3963
3964 for (;;) {
3965 u32 uval;
3966
3967 if (!state->locksteal_disabled) {
3968 ret = futex_trylock_preempt_disabled(uaddr,
3969 FUTEX_SHARED, &uval);
3970 /*
3971 * Return if lock acquired or an error happened
3972 */
3973 if (ret)
3974 break;
3975 }
3976
3977 /*
3978 * Reread the first reader value again.
3979 */
3980 first_reader = READ_ONCE(state->first_reader);
3981 if (!first_reader)
3982 first_reader = cmpxchg(&state->first_reader, NULL,
3983 current);
3984 if (!first_reader || !first_reader->on_cpu)
3985 break;
3986
3987 if (need_resched()) {
> 3988 osq_unlock(&state->reader_osq);
3989 goto reschedule;
3990 }
3991

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation

Attachment: .config.gz
Description: application/gzip