On Wednesday Dec 21 2005 John Rigg wrote:
> 2.6.14-rc5-rt4
> failed to compile
> on x86_64 SMP
>
> kernel/hrtimer.c: In function 'hrtimer_cancel':
> kernel/hrtimer.c:673: error: 'HRTIMER_SOFTIRQ' undeclared (first use in this function)
> kernel/hrtimer.c:673: error: (Each undeclared identifier is reported only once
> kernel/hrtimer.c:673: error: for each function it appears in.)
> make[1]: *** [kernel/hrtimer.o] Error 1
> make: *** [kernel] Error 2
The obvious way to get it to compile would be to use CONFIG_HIGH_RES_TIMERS=y .
Stupid question: how do I enable this on x86_64 SMP?
I can't find it in menuconfig and if I edit .config manually my edits just
get deleted (obviously I'm doing something wrong). I've tried grepping the
source and googling, but haven't been able to find the answer.
John
On Thu, 2005-12-22 at 23:11 +0000, John Rigg wrote:
> On Wednesday Dec 21 2005 John Rigg wrote:
> > 2.6.14-rc5-rt4
> > failed to compile
> > on x86_64 SMP
> >
> > kernel/hrtimer.c: In function 'hrtimer_cancel':
> > kernel/hrtimer.c:673: error: 'HRTIMER_SOFTIRQ' undeclared (first use in this function)
> > kernel/hrtimer.c:673: error: (Each undeclared identifier is reported only once
> > kernel/hrtimer.c:673: error: for each function it appears in.)
> > make[1]: *** [kernel/hrtimer.o] Error 1
> > make: *** [kernel] Error 2
>
> The obvious way to get it to compile would be to use CONFIG_HIGH_RES_TIMERS=y .
> Stupid question: how do I enable this on x86_64 SMP?
> I can't find it in menuconfig and if I edit .config manually my edits just
> get deleted (obviously I'm doing something wrong). I've tried grepping the
> source and googling, but haven't been able to find the answer.
Oops, sorry that was my fault. Here's the fix.
I've successfully compiled this on a x86_64. Since that's the box I'm
writing this email on, I'll try booting it later.
-- Steve
Index: linux-2.6.15-rc5-rt4/kernel/hrtimer.c
===================================================================
--- linux-2.6.15-rc5-rt4.orig/kernel/hrtimer.c 2005-12-22 20:55:30.000000000 -0500
+++ linux-2.6.15-rc5-rt4/kernel/hrtimer.c 2005-12-22 20:56:47.000000000 -0500
@@ -670,7 +670,9 @@
if (ret >= 0)
return ret;
+#ifdef CONFIG_HIGH_RES_TIMERS
wait_for_softirq(HRTIMER_SOFTIRQ);
+#endif
}
}
Hi Ingo,
CONFIG_RWSEM_GENERIC_SPINLOCK is always y when PREEMPT_RT=y, but (see
linux/rwsem.h) in this case, <linux/rwsem-semaphore.h> is included, which
lacks macros like RWSEM_ACTIVE_BIAS used in lib/rwsem.c.
Jan Engelhardt
--
>CONFIG_RWSEM_GENERIC_SPINLOCK is always y when PREEMPT_RT=y, but (see
>linux/rwsem.h) in this case, <linux/rwsem-semaphore.h> is included, which
>lacks macros like RWSEM_ACTIVE_BIAS used in lib/rwsem.c.
Hm this is the same as the other "2.6.15-rc5-rt4 fails to compile". rwsem.c
should not even be in there.
Is this a Kconfig bug then?
config RWSEM_GENERIC_SPINLOCK
bool
depends on M386 || PREEMPT_RT
default y
config RWSEM_XCHGADD_ALGORITHM
bool
default y if !RWSEM_GENERIC_SPINLOCK
PREEMPT_RT=y, but the .config file has RWSEM_XCHGADD_ALGORITHM=y!
Maybe the "default y if !RWSEM..." is not evaluated and we need something
like this?
default y if !RWSEM_GENERIC_SPINLOCK
default n if RWSEM_GENERIC_SPINLOCK
Jan Engelhardt
--