Re: [patch] Real-Time Preemption, -RT-2.6.11-rc3-V0.7.38-01

Ingo Molnar
2005-02-08T08:27:27Z

* Tom Rini <trini@kernel.crashing.org> wrote:

> > please send me your .config - mine builds/boots/works fine.
>
> I don't have it handy anymore, but I just cp'd arch/x86_64/defconfig
> to .config, ran oldconfig and turned RT off (PREEMPT_NONE=y) [...]

thanks - managed to reproduce it this way. The patch below fixes the x64
build error on !PREEMPT_RT and the resulting kernel boots fine as well,
plus it fixes an x64 SMP build error as well. I have uploaded the -38-04
release with this fix.

Ingo

--- linux/arch/x86_64/kernel/x8664_ksyms.c
+++ linux/arch/x86_64/kernel/x8664_ksyms.c
@@ -194,7 +194,7 @@ EXPORT_SYMBOL(rwsem_down_write_failed_th
EXPORT_SYMBOL(empty_zero_page);

#ifdef CONFIG_HAVE_DEC_LOCK
-EXPORT_SYMBOL(_atomic_dec_and_lock);
+EXPORT_SYMBOL(_atomic_dec_and_raw_spin_lock);
#endif

EXPORT_SYMBOL(die_chain);
--- linux/arch/x86_64/lib/dec_and_lock.c
+++ linux/arch/x86_64/lib/dec_and_lock.c
@@ -10,7 +10,7 @@
#include <linux/spinlock.h>
#include <asm/atomic.h>

-int _atomic_dec_and_lock(atomic_t *atomic, raw_spinlock_t *lock)
+int _atomic_dec_and_raw_spin_lock(atomic_t *atomic, raw_spinlock_t *lock)
{
int counter;
int newcount;

--- linux/arch/x86_64/kernel/smp.c
+++ linux/arch/x86_64/kernel/smp.c
@@ -266,6 +266,16 @@ void smp_send_reschedule(int cpu)
}

/*
+ * this function sends a 'reschedule' IPI to all other CPUs.
+ * This is used when RT tasks are starving and other CPUs
+ * might be able to run them:
+ */
+void smp_send_reschedule_allbutself(void)
+{
+ send_IPI_allbutself(RESCHEDULE_VECTOR);
+}
+
+/*
* Structure and data for smp_call_function(). This is designed to minimise
* static memory requirements. It also looks cleaner.
*/