Re: [ANNOUNCE] Linux 2.6 Real Time Kernel

From: Måns Rullgård
Date: Sat Oct 09 2004 - 08:17:00 EST



I got this thing to build by adding a few EXPORT_SYMBOL, patch below.
Now it seems to be running quite well. I am, however, getting
occasional "bad: scheduling while atomic!" messages, all alike:

bad: scheduling while atomic!
[<c02ef301>] schedule+0x4e5/0x4ea
[<c0114cbe>] try_to_wake_up+0x99/0xa8
[<c01332e2>] __p_mutex_down+0xfe/0x190
[<c029e238>] alloc_skb+0x32/0xc3
[<c01335e0>] kmutex_is_locked+0x1f/0x33
[<c029fa63>] skb_queue_tail+0x1c/0x45
[<c02eb43e>] unix_stream_sendmsg+0x22c/0x38c
[<c029ab03>] sock_sendmsg+0xc9/0xe3
[<c029f95a>] skb_dequeue+0x4a/0x5b
[<c02eb9e6>] unix_stream_recvmsg+0x119/0x430
[<c0137f06>] __alloc_pages+0x1cc/0x33f
[<c01168ca>] autoremove_wake_function+0x0/0x43
[<c029af4b>] sock_readv_writev+0x6e/0x97
[<c029afec>] sock_writev+0x37/0x3e
[<c029afb5>] sock_writev+0x0/0x3e
[<c014ebb8>] do_readv_writev+0x1db/0x21f
[<c01168ca>] autoremove_wake_function+0x0/0x43
[<c014e5ca>] vfs_read+0xd0/0xf5
[<c014ec94>] vfs_writev+0x49/0x52
[<c014ed5a>] sys_writev+0x47/0x76
[<c0103f09>] sysenter_past_esp+0x52/0x71

USB, sound and wireless are all working nicely.

Now the patch:

--- kernel/kmutex.c~ 2004-10-09 12:51:37 +02:00
+++ kernel/kmutex.c 2004-10-09 13:50:43 +02:00
@@ -20,6 +20,7 @@
#include <linux/config.h>
#include <linux/kmutex.h>
#include <linux/sched.h>
+#include <linux/module.h>

# if defined CONFIG_PMUTEX
# include <linux/pmutex.h>
@@ -40,11 +41,14 @@
return p_mutex_trylock(&(lock->kmtx));
}

+EXPORT_SYMBOL(kmutex_trylock);

inline int kmutex_is_locked(struct kmutex *lock)
{
return p_mutex_is_locked(&(lock->kmtx));
}
+
+EXPORT_SYMBOL(kmutex_is_locked);
# endif


@@ -60,6 +64,7 @@
#endif
}

+EXPORT_SYMBOL(kmutex_init);

/*
* print warning is case kmutex_lock is called while preempt count is
@@ -88,6 +93,8 @@
#endif
}

+EXPORT_SYMBOL(kmutex_lock);
+
void kmutex_unlock(struct kmutex *lock)
{
#if defined CONFIG_KMUTEX_DEBUG
@@ -102,6 +109,7 @@
#endif
}

+EXPORT_SYMBOL(kmutex_unlock);

void kmutex_unlock_wait(struct kmutex * lock)
{
@@ -111,4 +119,4 @@
}
}

-
+EXPORT_SYMBOL(kmutex_unlock_wait);


--
Måns Rullgård
mru@xxxxxxxxxx

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/