On Thu, 2011-08-11 at 14:02 +0200, Peter Zijlstra wrote:
On Thu, 2011-08-11 at 13:30 +0200, Tim Sander wrote:
quoted
The error does not occur when configured with
CONFIG_PREEMPT_RT_FULL=y
but with
CONFIG_PREEMPT_RTB=y.
The same error also happens with
CONFIG_PREEMPT_LL=y. (A log is appended after the other log just
search for CONFIG_PREEMPT_LL
for starting point).
Does the below (on top of -rt8) cure things for you? Shouldn't make a
difference for PREEMPT_LL though, so maybe there's something else busted
as well. But from what I can tell PREEMPT_BASE should be fine with such
things disabling preemption..
Gah, nevermind, I'm sleeping or so..
---
Index: linux-2.6/mm/filemap.c
===================================================================
--- linux-2.6.orig/mm/filemap.c
+++ linux-2.6/mm/filemap.c
@@ -2040,7 +2040,7 @@ size_t iov_iter_copy_from_user_atomic(st
char *kaddr;
size_t copied;
- BUG_ON(!current->pagefault_disabled);
+ BUG_ON(!(in_atomic() || current->pagefault_disabled));
kaddr = kmap_atomic(page, KM_USER0);
if (likely(i->nr_segs == 1)) {
int left;