From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wu Zhangjin Subject: [BUG] 2.6.29.1-rt8, undefined reference to hrtimer_wait_for_timer Date: Tue, 21 Apr 2009 09:47:40 +0800 Message-ID: <1240278460.27360.8.camel@falcon> References: Reply-To: wuzhangjin@gmail.com Mime-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 7bit Cc: LKML , rt-users , Ingo Molnar , Steven Rostedt , Peter Zijlstra , Carsten Emde , Clark Williams , Frank Rowand , Robin Gareus , Gregory Haskins , Philippe Reynes , Fernando Lopez-Lezcano , Will Schmidt , Darren Hart , Jan Blunck , Sven-Thorsten Dietrich To: Thomas Gleixner Return-path: In-Reply-To: Sender: linux-kernel-owner@vger.kernel.org List-Id: linux-rt-users.vger.kernel.org when using patch-2.6.29.1-rt8 with CONFIG_PREEMPT_SOFTIRQS=y, but not enable PREEMPT_RT, there will be an error when linking kernel: undefined reference to hrtimer_wait_for_timer I found that, hrtimer_wait_for_timer is only defined when PREEMPT_RT is enabled, but in include/linux/hrtimer.h, the source code is like this: #ifdef CONFIG_PREEMPT_SOFTIRQS extern void hrtimer_wait_for_timer(const struct hrtimer *timer); #else # define hrtimer_wait_for_timer(timer) do { cpu_relax(); } while (0) a possible fix should be: diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h index 8bafa35..1c1cdf3 100644 --- a/include/linux/hrtimer.h +++ b/include/linux/hrtimer.h @@ -366,7 +366,7 @@ static inline int hrtimer_restart(struct hrtimer *timer) } /* Softirq preemption could deadlock timer removal */ -#ifdef CONFIG_PREEMPT_SOFTIRQS +#if defined(CONFIG_PREEMPT_SOFTIRQS) && defined(CONFIG_PREEMPT_RT) extern void hrtimer_wait_for_timer(const struct hrtimer *timer); #else # define hrtimer_wait_for_timer(timer) do { cpu_relax(); } while (0) -- Wu Zhangjin DSLab, Lanzhou University, China www.lemote.com, Jiangsu Province, China