Dear RT Folks,
I'm pleased to announce the 3.6.11.1-rt32 stable release.
This release is just an update to the new stable 3.6.11.1 version
and no RT specific changes have been made.
You can get this release via the git tree at:
git://git.kernel.org/pub/scm/linux/kernel/git/rt/linux-stable-rt.git
Head SHA1: 54cf98b026bf3bdcb5a3584061cdf2000ab423f3
Or to build 3.6.11.1-rt32 directly, the following patches should be applied:
http://www.kernel.org/pub/linux/kernel/v3.x/linux-3.6.tar.xz
http://www.kernel.org/pub/linux/kernel/v3.x/patch-3.6.11.xz
http://www.kernel.org/pub/linux/kernel/projects/rt/3.6/stable/patch-3.6.11.1.xz
http://www.kernel.org/pub/linux/kernel/projects/rt/3.6/patch-3.6.11.1-rt32.patch.xz
Enjoy,
-- Steve
Steven,
> I'm pleased to announce the 3.6.11.1-rt32 stable release.
Thank you.
Your patch-3.6.11.1 additionally needs
23d3b8bfb8eb20e7d96afa09991e6a5ed1c83164 (net: qdisc busylock needs
lockdep annotations) to avoid the compile error
drivers/net/ppp/ppp_generic.c: In function ‘ppp_dev_init’:
drivers/net/ppp/ppp_generic.c:1027:5: error: ‘struct net_device’ has no
member named ‘qdisc_tx_busylock’
And since you apparently decided to backport
303c07db487be59ae9fda10600ea65ca11c21497 (ppp: set qdisc_tx_busylock to
avoid LOCKDEP splat), you probably should also backport the related
changes in bonding and team:
- 49ee49202b4ac4be95d05e4bf24a9ac8b54c5528 (bonding: set
qdisc_tx_busylock to avoid LOCKDEP splat)
- b3c581d5d7130fc7f2eab9ab14c8de8882b42380 (team: set qdisc_tx_busylock
to avoid LOCKDEP splat)
-Carsten.
Steven,
> I'm pleased to announce the 3.6.11.1-rt32 stable release.
Unfortunately, there is another compile error:
drivers/gpu/drm/i915/i915_gem.c: In function ‘i915_gem_wait_for_error’:
drivers/gpu/drm/i915/i915_gem.c:118:3: warning: passing argument 1 of
‘rt_spin_lock’ from incompatible pointer type [enabled by default]
In file included from include/linux/spinlock.h:273:0,
from include/linux/wait.h:24,
from include/linux/fs.h:396,
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 *’
drivers/gpu/drm/i915/i915_gem.c:120:3: warning: passing argument 1 of
‘rt_spin_unlock’ from incompatible pointer type [enabled by default]
In file included from include/linux/spinlock.h:273:0,
from include/linux/wait.h:24,
from include/linux/fs.h:396,
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 *’
drivers/gpu/drm/i915/i915_gem.c: In function ‘i915_gem_check_wedge’:
drivers/gpu/drm/i915/i915_gem.c:1890:3: warning: passing argument 1 of
‘rt_spin_lock’ from incompatible pointer type [enabled by default]
In file included from include/linux/spinlock.h:273:0,
from include/linux/wait.h:24,
from include/linux/fs.h:396,
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 *’
drivers/gpu/drm/i915/i915_gem.c:1892:3: warning: passing argument 1 of
‘rt_spin_unlock’ from incompatible pointer type [enabled by default]
In file included from include/linux/spinlock.h:273:0,
from include/linux/wait.h:24,
from include/linux/fs.h:396,
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 *’
I would propose to adopt the mechanism that Sebastian introduced in
3.8.4-rt2 (https://lkml.org/lkml/2013/3/26/600). The kernel compiles
and runs without any problem with the below patch on a system that
requires the i915 driver module.
-Carsten.
From: Sebastian Andrzej Siewior <[email protected]>
Subject: gpu/i915: don't open code these things
Signed-off-by: Sebastian Andrzej Siewior <[email protected]>
---
drivers/gpu/drm/i915/i915_gem.c | 10 ++--------
1 file changed, 2 insertions(+), 8 deletions(-)
Index: linux-3.6.11.1-rt32/drivers/gpu/drm/i915/i915_gem.c
===================================================================
--- linux-3.6.11.1-rt32.orig/drivers/gpu/drm/i915/i915_gem.c
+++ linux-3.6.11.1-rt32/drivers/gpu/drm/i915/i915_gem.c
@@ -90,7 +90,6 @@ i915_gem_wait_for_error(struct drm_devic
{
struct drm_i915_private *dev_priv = dev->dev_private;
struct completion *x = &dev_priv->error_completion;
- unsigned long flags;
int ret;
if (!atomic_read(&dev_priv->mm.wedged))
@@ -115,9 +114,7 @@ i915_gem_wait_for_error(struct drm_devic
* end up waiting upon a subsequent completion event that
* will never happen.
*/
- spin_lock_irqsave(&x->wait.lock, flags);
- x->done++;
- spin_unlock_irqrestore(&x->wait.lock, flags);
+ complete(x);
}
return 0;
}
@@ -1884,12 +1881,9 @@ i915_gem_check_wedge(struct drm_i915_pri
if (atomic_read(&dev_priv->mm.wedged)) {
struct completion *x = &dev_priv->error_completion;
bool recovery_complete;
- unsigned long flags;
/* Give the error handler a chance to run. */
- spin_lock_irqsave(&x->wait.lock, flags);
- recovery_complete = x->done > 0;
- spin_unlock_irqrestore(&x->wait.lock, flags);
+ recovery_complete = completion_done(x);
/* Non-interruptible callers can't handle -EAGAIN, hence return
* -EIO unconditionally for these. */
On Tue, 2013-04-02 at 05:13 +0200, Carsten Emde wrote:
> Steven,
> > I'm pleased to announce the 3.6.11.1-rt32 stable release.
> Unfortunately, there is another compile error:
> drivers/gpu/drm/i915/i915_gem.c: In function ‘i915_gem_wait_for_error’:
> drivers/gpu/drm/i915/i915_gem.c:118:3: warning: passing argument 1 of
> ‘rt_spin_lock’ from incompatible pointer type [enabled by default]
> In file included from include/linux/spinlock.h:273:0,
> from include/linux/wait.h:24,
> from include/linux/fs.h:396,
> 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 *’
> drivers/gpu/drm/i915/i915_gem.c:120:3: warning: passing argument 1 of
> ‘rt_spin_unlock’ from incompatible pointer type [enabled by default]
> In file included from include/linux/spinlock.h:273:0,
> from include/linux/wait.h:24,
> from include/linux/fs.h:396,
> 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 *’
> drivers/gpu/drm/i915/i915_gem.c: In function ‘i915_gem_check_wedge’:
> drivers/gpu/drm/i915/i915_gem.c:1890:3: warning: passing argument 1 of
> ‘rt_spin_lock’ from incompatible pointer type [enabled by default]
> In file included from include/linux/spinlock.h:273:0,
> from include/linux/wait.h:24,
> from include/linux/fs.h:396,
> 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 *’
> drivers/gpu/drm/i915/i915_gem.c:1892:3: warning: passing argument 1 of
> ‘rt_spin_unlock’ from incompatible pointer type [enabled by default]
> In file included from include/linux/spinlock.h:273:0,
> from include/linux/wait.h:24,
> from include/linux/fs.h:396,
> 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 *’
>
> I would propose to adopt the mechanism that Sebastian introduced in
> 3.8.4-rt2 (https://lkml.org/lkml/2013/3/26/600). The kernel compiles
> and runs without any problem with the below patch on a system that
> requires the i915 driver module.
>
Thanks Carsten, I'll be updating this later today. BTW, did you get any
core dumps from the work queue race that we've been seeing?
Thanks,
-- Steve
On Tue, 2013-04-02 at 03:37 +0200, Carsten Emde wrote:
> Steven,
>
> > I'm pleased to announce the 3.6.11.1-rt32 stable release.
> Thank you.
>
> Your patch-3.6.11.1 additionally needs
> 23d3b8bfb8eb20e7d96afa09991e6a5ed1c83164 (net: qdisc busylock needs
> lockdep annotations) to avoid the compile error
> drivers/net/ppp/ppp_generic.c: In function ‘ppp_dev_init’:
> drivers/net/ppp/ppp_generic.c:1027:5: error: ‘struct net_device’ has no
> member named ‘qdisc_tx_busylock’
Hmm, I was able to do a full 3.6.11.1 allmodconfig without this (see
below). But I'll add it anyway.
>
> And since you apparently decided to backport
> 303c07db487be59ae9fda10600ea65ca11c21497 (ppp: set qdisc_tx_busylock to
> avoid LOCKDEP splat), you probably should also backport the related
Oh, I added this by mistake, and I believe this is what caused the above
compile problem. I reverted this as the first patch for .2, and I
compiled 3.6.11.1 with this revert on an allmodconfig.
-- Steve
> changes in bonding and team:
> - 49ee49202b4ac4be95d05e4bf24a9ac8b54c5528 (bonding: set
> qdisc_tx_busylock to avoid LOCKDEP splat)
> - b3c581d5d7130fc7f2eab9ab14c8de8882b42380 (team: set qdisc_tx_busylock
> to avoid LOCKDEP splat)
>
> -Carsten.
On Tue, 2 Apr 2013, Carsten Emde wrote:
> Steven,
>
> > I'm pleased to announce the 3.6.11.1-rt32 stable release.
> Unfortunately, there is another compile error:
> drivers/gpu/drm/i915/i915_gem.c: In function ‘i915_gem_wait_for_error’:
> drivers/gpu/drm/i915/i915_gem.c:118:3: warning: passing argument 1 of
> ‘rt_spin_lock’ from incompatible pointer type [enabled by default]
> In file included from include/linux/spinlock.h:273:0,
> from include/linux/wait.h:24,
> from include/linux/fs.h:396,
> 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 *’
> drivers/gpu/drm/i915/i915_gem.c:120:3: warning: passing argument 1 of
> ‘rt_spin_unlock’ from incompatible pointer type [enabled by default]
> In file included from include/linux/spinlock.h:273:0,
> from include/linux/wait.h:24,
> from include/linux/fs.h:396,
> 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 *’
> drivers/gpu/drm/i915/i915_gem.c: In function ‘i915_gem_check_wedge’:
> drivers/gpu/drm/i915/i915_gem.c:1890:3: warning: passing argument 1 of
> ‘rt_spin_lock’ from incompatible pointer type [enabled by default]
> In file included from include/linux/spinlock.h:273:0,
> from include/linux/wait.h:24,
> from include/linux/fs.h:396,
> 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 *’
> drivers/gpu/drm/i915/i915_gem.c:1892:3: warning: passing argument 1 of
> ‘rt_spin_unlock’ from incompatible pointer type [enabled by default]
> In file included from include/linux/spinlock.h:273:0,
> from include/linux/wait.h:24,
> from include/linux/fs.h:396,
> 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 *’
>
> I would propose to adopt the mechanism that Sebastian introduced in
> 3.8.4-rt2 (https://lkml.org/lkml/2013/3/26/600). The kernel compiles
> and runs without any problem with the below patch on a system that
> requires the i915 driver module.
>
> -Carsten.
>
>
>
> From: Sebastian Andrzej Siewior <[email protected]>
> Subject: gpu/i915: don't open code these things
>
> Signed-off-by: Sebastian Andrzej Siewior <[email protected]>
> ---
> drivers/gpu/drm/i915/i915_gem.c | 10 ++--------
> 1 file changed, 2 insertions(+), 8 deletions(-)
>
> Index: linux-3.6.11.1-rt32/drivers/gpu/drm/i915/i915_gem.c
> ===================================================================
> --- linux-3.6.11.1-rt32.orig/drivers/gpu/drm/i915/i915_gem.c
> +++ linux-3.6.11.1-rt32/drivers/gpu/drm/i915/i915_gem.c
> @@ -90,7 +90,6 @@ i915_gem_wait_for_error(struct drm_devic
> {
> struct drm_i915_private *dev_priv = dev->dev_private;
> struct completion *x = &dev_priv->error_completion;
> - unsigned long flags;
> int ret;
>
> if (!atomic_read(&dev_priv->mm.wedged))
> @@ -115,9 +114,7 @@ i915_gem_wait_for_error(struct drm_devic
> * end up waiting upon a subsequent completion event that
> * will never happen.
> */
> - spin_lock_irqsave(&x->wait.lock, flags);
> - x->done++;
> - spin_unlock_irqrestore(&x->wait.lock, flags);
> + complete(x);
> }
> return 0;
> }
> @@ -1884,12 +1881,9 @@ i915_gem_check_wedge(struct drm_i915_pri
> if (atomic_read(&dev_priv->mm.wedged)) {
> struct completion *x = &dev_priv->error_completion;
> bool recovery_complete;
> - unsigned long flags;
>
> /* Give the error handler a chance to run. */
> - spin_lock_irqsave(&x->wait.lock, flags);
> - recovery_complete = x->done > 0;
> - spin_unlock_irqrestore(&x->wait.lock, flags);
> + recovery_complete = completion_done(x);
>
> /* Non-interruptible callers can't handle -EAGAIN, hence
> return
> * -EIO unconditionally for these. */
>
>
Is there a reason you left off the last hunk?
@@ -4366,7 +4360,7 @@ static bool mutex_is_locked_by(struct mu
if (!mutex_is_locked(mutex))
return false;
-#if defined(CONFIG_SMP) || defined(CONFIG_DEBUG_MUTEXES)
+#if (defined(CONFIG_SMP) || defined(CONFIG_DEBUG_MUTEXES)) &&
!defined(CONFIG_PREEMPT_RT_BASE)
return mutex->owner == task;
#else
/* Since UP may be pre-empted, we cannot assume that we own the
lock */
Hi Steven,
>>> I'm pleased to announce the 3.6.11.1-rt32 stable release.
>> Unfortunately, there is another compile error:
>> drivers/gpu/drm/i915/i915_gem.c: In function ‘i915_gem_wait_for_error’:
>> drivers/gpu/drm/i915/i915_gem.c:118:3: warning: passing argument 1 of
>> ‘rt_spin_lock’ from incompatible pointer type [enabled by default]
>> In file included from include/linux/spinlock.h:273:0,
>> from include/linux/wait.h:24,
>> from include/linux/fs.h:396,
>> from include/drm/drmP.h:47,
>> from drivers/gpu/drm/i915/i915_gem.c:28:
>> [..]
>> I would propose to adopt the mechanism that Sebastian introduced in
>> 3.8.4-rt2 (https://lkml.org/lkml/2013/3/26/600). The kernel compiles
>> and runs without any problem with the below patch on a system that
>> requires the i915 driver module.
> Thanks Carsten, I'll be updating this later today.
Thank you.
> BTW, did you get any core dumps from the work queue race that we've
> been seeing?
No, not yet. Originally, the farm systems did not use crashkernels by
default. I understood that it does no harm but could help in cases like
this one. Therefore, I've started to reconfigure all farm system with
crashkernels - starting with the two systems that had the work queue
race crashes. The kernel messages here (one is a 12-core, the other one
a 32-core box) look exactly like the one
(https://lkml.org/lkml/2013/3/18/325)
you saw in your 40-core machine (https://lkml.org/lkml/2013/3/18/430).
We'll need to wait for the next crash that will give us a core dump we
may then dissect.
-Carsten.