Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
getting ZFSonLinux to work with rt-kernel
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Unsupported Software
View previous topic :: View next topic  
Author Message
kernelOfTruth
Watchman
Watchman


Joined: 20 Dec 2005
Posts: 6111
Location: Vienna, Austria; Germany; hello world :)

PostPosted: Mon Mar 25, 2013 9:54 pm    Post subject: getting ZFSonLinux to work with rt-kernel Reply with quote

Hi,


let's continue the discussion here on how to get ZFSonLinux to work on rt-kernels

from the "AMD64 system slow/unresponsive during disk access (Part 2)" thread


will post a working kernel config (compiled fine) shortly

still have to boot-test it though ...


edit:


seems like the intel-driver is broken & currently not compatible with realtime kernels:

Quote:
CC [M] drivers/gpu/drm/ttm/ttm_page_alloc.o
drivers/gpu/drm/i915/i915_gem.c: In function ‘i915_gem_wait_for_error’:
drivers/gpu/drm/i915/i915_gem.c:119:3: warning: passing argument 1 of ‘rt_spin_lock’ from incompatible pointer type [enabled by default]
spin_lock_irqsave(&x->wait.lock, flags);
^
In file included from include/linux/spinlock.h:273:0,
from include/linux/wait.h:7,
from include/linux/fs.h:6,
from include/drm/drmP.h:47,
from drivers/gpu/drm/i915/i915_gem.c:28:
include/linux/spinlock_rt.h:21:24: note: expected ‘struct spinlock_t *’ but argument is of type ‘struct raw_spinlock_t *’
extern void __lockfunc rt_spin_lock(spinlock_t *lock);
^
drivers/gpu/drm/i915/i915_gem.c:121:3: warning: passing argument 1 of ‘rt_spin_unlock’ from incompatible pointer type [enabled by default]
spin_unlock_irqrestore(&x->wait.lock, flags);
^
In file included from include/linux/spinlock.h:273:0,
from include/linux/wait.h:7,
from include/linux/fs.h:6,
from include/drm/drmP.h:47,
from drivers/gpu/drm/i915/i915_gem.c:28:
include/linux/spinlock_rt.h:24:24: note: expected ‘struct spinlock_t *’ but argument is of type ‘struct raw_spinlock_t *’
extern void __lockfunc rt_spin_unlock(spinlock_t *lock);
^
drivers/gpu/drm/i915/i915_gem.c: In function ‘i915_gem_check_wedge’:
drivers/gpu/drm/i915/i915_gem.c:952:3: warning: passing argument 1 of ‘rt_spin_lock’ from incompatible pointer type [enabled by default]
spin_lock_irqsave(&x->wait.lock, flags);
^
In file included from include/linux/spinlock.h:273:0,
from include/linux/wait.h:7,
from include/linux/fs.h:6,
from include/drm/drmP.h:47,
from drivers/gpu/drm/i915/i915_gem.c:28:
include/linux/spinlock_rt.h:21:24: note: expected ‘struct spinlock_t *’ but argument is of type ‘struct raw_spinlock_t *’
extern void __lockfunc rt_spin_lock(spinlock_t *lock);
^
drivers/gpu/drm/i915/i915_gem.c:954:3: warning: passing argument 1 of ‘rt_spin_unlock’ from incompatible pointer type [enabled by default]
spin_unlock_irqrestore(&x->wait.lock, flags);
^
In file included from include/linux/spinlock.h:273:0,
from include/linux/wait.h:7,
from include/linux/fs.h:6,
from include/drm/drmP.h:47,
from drivers/gpu/drm/i915/i915_gem.c:28:
include/linux/spinlock_rt.h:24:24: note: expected ‘struct spinlock_t *’ but argument is of type ‘struct raw_spinlock_t *’
extern void __lockfunc rt_spin_unlock(spinlock_t *lock);
^
drivers/gpu/drm/i915/i915_gem.c: In function ‘mutex_is_locked_by’:
drivers/gpu/drm/i915/i915_gem.c:4370:14: error: ‘struct mutex’ has no member named ‘owner’
return mutex->owner == task;
^
drivers/gpu/drm/i915/i915_gem.c:4375:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
make[4]: *** [drivers/gpu/drm/i915/i915_gem.o] Error 1
make[3]: *** [drivers/gpu/drm/i915] Error 2
make[3]: *** Waiting for unfinished jobs....




ok - here's the kernel-config:

http://pastebin.com/rL66Sian


hope you can base a - for you working - configuration on it
_________________
https://github.com/kernelOfTruth/ZFS-for-SystemRescueCD/tree/ZFS-for-SysRescCD-4.9.0
https://github.com/kernelOfTruth/pulseaudio-equalizer-ladspa

Hardcore Gentoo Linux user since 2004 :D
Back to top
View user's profile Send private message
kernelOfTruth
Watchman
Watchman


Joined: 20 Dec 2005
Posts: 6111
Location: Vienna, Austria; Germany; hello world :)

PostPosted: Tue Mar 26, 2013 3:59 pm    Post subject: Reply with quote

the kernel boots fine & works with that configuration

but it tends to hang with some apps - strange behavior I also saw with rt-kernels in the past

so it's low priority for me atm since I need a fully working setup asap (BFS fulfills that criteria)


a kernel fully tweaked + patched up with BFS / ck-patchset is better in this regard and (still) works with ZFS ...
_________________
https://github.com/kernelOfTruth/ZFS-for-SystemRescueCD/tree/ZFS-for-SysRescCD-4.9.0
https://github.com/kernelOfTruth/pulseaudio-equalizer-ladspa

Hardcore Gentoo Linux user since 2004 :D
Back to top
View user's profile Send private message
ryao
Retired Dev
Retired Dev


Joined: 27 Feb 2012
Posts: 132

PostPosted: Tue Apr 02, 2013 5:33 am    Post subject: Reply with quote

I have not forgotten about this, but there are a few other bugs that are ahead of this in my bug queue. I will get to this soon.
Back to top
View user's profile Send private message
aCOSwt
Bodhisattva
Bodhisattva


Joined: 19 Oct 2007
Posts: 2537
Location: Hilbert space

PostPosted: Tue Apr 02, 2013 9:07 am    Post subject: Re: getting ZFSonLinux to work with rt-kernel Reply with quote

kernelOfTruth wrote:
seems like the intel-driver is broken & currently not compatible with realtime kernels:
Quote:
...
make[4]: *** [drivers/gpu/drm/i915/i915_gem.o] Error 1
...


I think the following patch is needed in order to build the i915 on the last 3.8.4_rt1
Code:
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index de45b60..817e60b 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -116,9 +116,9 @@ i915_gem_wait_for_error(struct drm_device *dev)
        * end up waiting upon a subsequent completion event that
        * will never happen.
        */
-      spin_lock_irqsave(&x->wait.lock, flags);
+      raw_spin_lock_irqsave(&x->wait.lock, flags);
       x->done++;
-      spin_unlock_irqrestore(&x->wait.lock, flags);
+      raw_spin_unlock_irqrestore(&x->wait.lock, flags);
    }
    return 0;
 }
@@ -949,9 +949,9 @@ i915_gem_check_wedge(struct drm_i915_private *dev_priv,
       unsigned long flags;

       /* Give the error handler a chance to run. */
-      spin_lock_irqsave(&x->wait.lock, flags);
+      raw_spin_lock_irqsave(&x->wait.lock, flags);
       recovery_complete = x->done > 0;
-      spin_unlock_irqrestore(&x->wait.lock, flags);
+      raw_spin_unlock_irqrestore(&x->wait.lock, flags);

       /* Non-interruptible callers can't handle -EAGAIN, hence return
        * -EIO unconditionally for these. */

_________________
Back to top
View user's profile Send private message
kernelOfTruth
Watchman
Watchman


Joined: 20 Dec 2005
Posts: 6111
Location: Vienna, Austria; Germany; hello world :)

PostPosted: Sat Apr 20, 2013 1:42 pm    Post subject: Re: getting ZFSonLinux to work with rt-kernel Reply with quote

aCOSwt wrote:
kernelOfTruth wrote:
seems like the intel-driver is broken & currently not compatible with realtime kernels:
Quote:
...
make[4]: *** [drivers/gpu/drm/i915/i915_gem.o] Error 1
...


I think the following patch is needed in order to build the i915 on the last 3.8.4_rt1
Code:
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index de45b60..817e60b 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -116,9 +116,9 @@ i915_gem_wait_for_error(struct drm_device *dev)
        * end up waiting upon a subsequent completion event that
        * will never happen.
        */
-      spin_lock_irqsave(&x->wait.lock, flags);
+      raw_spin_lock_irqsave(&x->wait.lock, flags);
       x->done++;
-      spin_unlock_irqrestore(&x->wait.lock, flags);
+      raw_spin_unlock_irqrestore(&x->wait.lock, flags);
    }
    return 0;
 }
@@ -949,9 +949,9 @@ i915_gem_check_wedge(struct drm_i915_private *dev_priv,
       unsigned long flags;

       /* Give the error handler a chance to run. */
-      spin_lock_irqsave(&x->wait.lock, flags);
+      raw_spin_lock_irqsave(&x->wait.lock, flags);
       recovery_complete = x->done > 0;
-      spin_unlock_irqrestore(&x->wait.lock, flags);
+      raw_spin_unlock_irqrestore(&x->wait.lock, flags);

       /* Non-interruptible callers can't handle -EAGAIN, hence return
        * -EIO unconditionally for these. */



thanks ! :)
_________________
https://github.com/kernelOfTruth/ZFS-for-SystemRescueCD/tree/ZFS-for-SysRescCD-4.9.0
https://github.com/kernelOfTruth/pulseaudio-equalizer-ladspa

Hardcore Gentoo Linux user since 2004 :D
Back to top
View user's profile Send private message
kernelOfTruth
Watchman
Watchman


Joined: 20 Dec 2005
Posts: 6111
Location: Vienna, Austria; Germany; hello world :)

PostPosted: Mon May 13, 2013 6:21 pm    Post subject: Reply with quote

ryao wrote:
I have not forgotten about this, but there are a few other bugs that are ahead of this in my bug queue. I will get to this soon.


ok, thanks !

waiting patiently :)
_________________
https://github.com/kernelOfTruth/ZFS-for-SystemRescueCD/tree/ZFS-for-SysRescCD-4.9.0
https://github.com/kernelOfTruth/pulseaudio-equalizer-ladspa

Hardcore Gentoo Linux user since 2004 :D
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Unsupported Software All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum