2005-12-22 23:02:43

by John Rigg

[permalink] [raw]
Subject: Re: 2.6.15-rc5-rt4 fails to compile - question

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


2005-12-23 02:06:31

by Steven Rostedt

[permalink] [raw]
Subject: Re: 2.6.15-rc5-rt4 fails to compile - question

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
}
}



2005-12-25 09:43:23

by Jan Engelhardt

[permalink] [raw]
Subject: 2.6.15-rc5-rt4 fails to compile

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
--

2005-12-25 10:47:53

by Jan Engelhardt

[permalink] [raw]
Subject: Re: [solved] 2.6.15-rc5-rt4 fails to compile


>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
--