Re: [PATCH-tip v6 18/22] TP-futex: Group readers together in wait queue

From: kbuild test robot
Date: Fri Mar 24 2017 - 04:20:16 EST


Hi Waiman,

[auto build test ERROR on next-20170323]
[also build test ERROR on v4.11-rc3]
[cannot apply to linus/master linux/master tip/perf/core v4.9-rc8 v4.9-rc7 v4.9-rc6]
[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/perf-bench-New-microbenchmark-for-userspace-mutex-performance/20170324-135043
config: m32r-usrv_defconfig (attached as .config)
compiler: m32r-linux-gcc (GCC) 6.2.0
reproduce:
wget https://raw.githubusercontent.com/01org/lkp-tests/master/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:4003: undefined reference to `osq_lock'
kernel/futex.c:4003:(.text+0x5cc98): relocation truncated to fit: R_M32R_26_PCREL_RELA against undefined symbol `osq_lock'
>> kernel/futex.c:4040: undefined reference to `osq_unlock'
kernel/futex.c:4040:(.text+0x5cd2c): relocation truncated to fit: R_M32R_26_PCREL_RELA against undefined symbol `osq_unlock'
kernel/futex.c:4033: undefined reference to `osq_unlock'
kernel/futex.c:4033:(.text+0x5d0d4): relocation truncated to fit: R_M32R_26_PCREL_RELA against undefined symbol `osq_unlock'

vim +4003 kernel/futex.c

3997 first_reader = READ_ONCE(state->first_reader);
3998 if (!first_reader)
3999 first_reader = cmpxchg(&state->first_reader, NULL, current);
4000 if (!first_reader)
4001 goto out; /* Became the first reader */
4002
> 4003 if (!osq_lock(&state->reader_osq))
4004 goto reschedule;
4005
4006 rcu_read_lock();
4007 for (;;) {
4008 u32 uval;
4009
4010 if (!state->handoff_pid && (prefer_reader ||
4011 (first_reader == READ_ONCE(state->mutex_owner)))) {
4012 ret = futex_trylock_preempt_disabled(uaddr,
4013 FUTEX_SHARED, &uval, false);
4014 /*
4015 * Return if lock acquired or an error happened
4016 */
4017 if (ret)
4018 break;
4019 }
4020
4021 /*
4022 * Reread the first reader value again.
4023 */
4024 first_reader = READ_ONCE(state->first_reader);
4025 if (!first_reader)
4026 first_reader = cmpxchg(&state->first_reader, NULL,
4027 current);
4028 if (!first_reader || !first_reader->on_cpu)
4029 break;
4030
4031 if (need_resched()) {
4032 rcu_read_unlock();
4033 osq_unlock(&state->reader_osq);
4034 goto reschedule;
4035 }
4036
4037 cpu_relax();
4038 }
4039 rcu_read_unlock();
> 4040 osq_unlock(&state->reader_osq);
4041 out:
4042 *pfirst = first_reader;
4043 preempt_enable();

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

Attachment: .config.gz
Description: application/gzip