On Sun, 2007-06-10 at 10:34 +0000, Oleksandr Natalenko wrote: > > http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.21.4.tar.bz2 > > http://people.redhat.com/mingo/realtime-preempt/patch-2.6.21.4-rt11 > kernel/built-in.o: In function `__schedule': > (.sched.text+0xe0): undefined reference to `pick_next_task' > make[1]: *** [.tmp_vmlinux1] Ошибка 1 > make[1]: Leaving directory `/usr/src/linux-2.6.21.4-rt11-cfs17-arsenic' > make: *** [debian/stamp-build-kernel] Ошибка 2 > > It seems that patch is broken. Yup, for CONFIG_SMP=n and for CONFIG_PREEMPT_RT=n. Fix below tglx Index: linux-2.6.21/kernel/sched.c =================================================================== --- linux-2.6.21.orig/kernel/sched.c 2007-06-10 16:00:58.000000000 +0200 +++ linux-2.6.21/kernel/sched.c 2007-06-10 16:46:23.000000000 +0200 @@ -827,6 +827,25 @@ unsigned long weighted_cpuload(const int return cpu_rq(cpu)->raw_weighted_load; } +static inline struct task_struct * +pick_next_task(struct rq *rq, struct task_struct *prev) +{ + struct sched_class *class = sched_class_highest; + u64 now = __rq_clock(rq); + struct task_struct *p; + + prev->sched_class->put_prev_task(rq, prev, now); + + do { + p = class->pick_next_task(rq, now); + if (p) + return p; + class = class->next; + } while (class); + + return NULL; +} + #ifdef CONFIG_SMP static inline void __set_task_cpu(struct task_struct *p, unsigned int cpu) @@ -1093,25 +1112,6 @@ next_in_queue: static int double_lock_balance(struct rq *this_rq, struct rq *busiest); -static inline struct task_struct * -pick_next_task(struct rq *rq, struct task_struct *prev) -{ - struct sched_class *class = sched_class_highest; - u64 now = __rq_clock(rq); - struct task_struct *p; - - prev->sched_class->put_prev_task(rq, prev, now); - - do { - p = class->pick_next_task(rq, now); - if (p) - return p; - class = class->next; - } while (class); - - return NULL; -} - /* * Pull RT tasks from other CPUs in the RT-overload * case. Interrupts are disabled, local rq is locked. Index: linux-2.6.21/kernel/time/clockevents.c =================================================================== --- linux-2.6.21.orig/kernel/time/clockevents.c 2007-06-10 16:00:57.000000000 +0200 +++ linux-2.6.21/kernel/time/clockevents.c 2007-06-10 16:45:40.000000000 +0200 @@ -18,6 +18,7 @@ #include <linux/notifier.h> #include <linux/smp.h> #include <linux/sysdev.h> +#include <linux/sched.h> /* The registered clock event devices */ static LIST_HEAD(clockevent_devices); - To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html