Dear RT Folks,
I'm pleased to announce the 3.6.6-rt17 release. 3.6.6-rt16 is just a
not announced update release to 3.6.6.
Changes since 3.6.6-rt16:
* Finally make the NOHZ softirq pending detection work with the new
softirq scheme.
* Remove the WARN_ON from __raise_softirq_irqoff(). I got the
information I want for now.
The delta patch against 3.6.6-rt16 is appended below and can be found
here:
http://www.kernel.org/pub/linux/kernel/projects/rt/3.6/incr/patch-3.6.6-rt16-rt17.patch.xz
The RT patch against 3.6.6 can be found here:
http://www.kernel.org/pub/linux/kernel/projects/rt/3.6/patch-3.6.6-rt17.patch.xz
The split quilt queue is available at:
http://www.kernel.org/pub/linux/kernel/projects/rt/3.6/patches-3.6.6-rt17.tar.xz
Enjoy,
tglx
------------->
Index: linux-stable/kernel/softirq.c
===================================================================
--- linux-stable.orig/kernel/softirq.c
+++ linux-stable/kernel/softirq.c
@@ -100,20 +100,15 @@ void softirq_check_pending_idle(void)
{
static int rate_limit;
struct softirq_runner *sr = &__get_cpu_var(softirq_runners);
- u32 warnpending, pending = local_softirq_pending();
+ u32 warnpending = local_softirq_pending();
+ int i;
if (rate_limit >= 10)
return;
- warnpending = pending;
-
- while (pending) {
- struct task_struct *tsk;
- int i = __ffs(pending);
-
- pending &= ~(1 << i);
+ for (i = 0; i < NR_SOFTIRQS; i++) {
+ struct task_struct *tsk = sr->runner[i];
- tsk = sr->runner[i];
/*
* The wakeup code in rtmutex.c wakes up the task
* _before_ it sets pi_blocked_on to NULL under
@@ -638,7 +633,7 @@ static void do_raise_softirq_irqoff(unsi
void __raise_softirq_irqoff(unsigned int nr)
{
do_raise_softirq_irqoff(nr);
- if (WARN_ON_ONCE(!in_irq() && !current->softirq_nestcnt))
+ if (!in_irq() && !current->softirq_nestcnt)
wakeup_softirqd();
}
Index: linux-stable/localversion-rt
===================================================================
--- linux-stable.orig/localversion-rt
+++ linux-stable/localversion-rt
@@ -1 +1 @@
--rt16
+-rt17
On 11/12/2012 01:28 PM, Thomas Gleixner wrote:
> Dear RT Folks,
>
> I'm pleased to announce the 3.6.6-rt17 release. 3.6.6-rt16 is just a
> not announced update release to 3.6.6.
Got this:
----
net/nfc/llcp/llcp.c: In function 'nfc_llcp_register_device':
net/nfc/llcp/llcp.c:1185:24: error: expected expression before '{' token
net/nfc/llcp/llcp.c:1186:35: error: expected expression before '{' token
----
when building with CONFIG_NFC / CONFIG_NFS_LLCP (builds fine when those
are not set)
-- Fernando
> Changes since 3.6.6-rt16:
>
> * Finally make the NOHZ softirq pending detection work with the new
> softirq scheme.
>
> * Remove the WARN_ON from __raise_softirq_irqoff(). I got the
> information I want for now.
On 12-11-14 02:56 PM, Fernando Lopez-Lezcano wrote:
> On 11/12/2012 01:28 PM, Thomas Gleixner wrote:
>> Dear RT Folks,
>>
>> I'm pleased to announce the 3.6.6-rt17 release. 3.6.6-rt16 is just a
>> not announced update release to 3.6.6.
>
> Got this:
>
> ----
> net/nfc/llcp/llcp.c: In function 'nfc_llcp_register_device':
> net/nfc/llcp/llcp.c:1185:24: error: expected expression before '{' token
> net/nfc/llcp/llcp.c:1186:35: error: expected expression before '{' token
> ----
>
> when building with CONFIG_NFC / CONFIG_NFS_LLCP (builds fine when those
> are not set)
> -- Fernando
Locking init is broken in llcp. You'll need this commit from mainline.
commit fe235b58d517d623bf6d40c77afca1b0ee6fc85d
Author: Szymon Janc <[email protected]>
Date: Tue Sep 25 12:42:50 2012 +0200
NFC: Use dynamic initialization for rwlocks
If rwlock is dynamically allocated but statically initialized it is
missing proper lockdep annotation.
INFO: trying to register non-static key.
the code is fine but needs lockdep annotation.
turning off the locking correctness validator.
Pid: 3352, comm: neard Not tainted 3.5.0-999-nfc+ #2
Call Trace:
[<ffffffff810c8526>] __lock_acquire+0x8f6/0x1bf0
[<ffffffff81739045>] ? printk+0x4d/0x4f
[<ffffffff810c9eed>] lock_acquire+0x9d/0x220
[<ffffffff81702bfe>] ? nfc_llcp_sock_from_sn+0x4e/0x160
[<ffffffff81746724>] _raw_read_lock+0x44/0x60
[<ffffffff81702bfe>] ? nfc_llcp_sock_from_sn+0x4e/0x160
[<ffffffff81702bfe>] nfc_llcp_sock_from_sn+0x4e/0x160
[<ffffffff817034a7>] nfc_llcp_get_sdp_ssap+0xa7/0x1b0
[<ffffffff81706353>] llcp_sock_bind+0x173/0x210
[<ffffffff815d9c94>] sys_bind+0xe4/0x100
[<ffffffff8139209e>] ? trace_hardirqs_on_thunk+0x3a/0x3f
[<ffffffff8174ea69>] system_call_fastpath+0x16/0x1b
Signed-off-by: Szymon Janc <[email protected]>
Signed-off-by: Samuel Ortiz <[email protected]>
diff --git a/net/nfc/llcp/llcp.c b/net/nfc/llcp/llcp.c
index 90ef4a1..d649fbf 100644
--- a/net/nfc/llcp/llcp.c
+++ b/net/nfc/llcp/llcp.c
@@ -1156,8 +1156,8 @@ int nfc_llcp_register_device(struct nfc_dev *ndev)
INIT_WORK(&local->timeout_work, nfc_llcp_timeout_work);
- local->sockets.lock = __RW_LOCK_UNLOCKED(local->sockets.lock);
- local->connecting_sockets.lock = __RW_LOCK_UNLOCKED(local->connecting_sockets.lock);
+ rwlock_init(&local->sockets.lock);
+ rwlock_init(&local->connecting_sockets.lock);
nfc_llcp_build_gb(local);
On Wed, 14 Nov 2012, Fernando Lopez-Lezcano wrote:
> On 11/12/2012 01:28 PM, Thomas Gleixner wrote:
> > Dear RT Folks,
> >
> > I'm pleased to announce the 3.6.6-rt17 release. 3.6.6-rt16 is just a
> > not announced update release to 3.6.6.
>
> Got this:
>
> ----
> net/nfc/llcp/llcp.c: In function 'nfc_llcp_register_device':
> net/nfc/llcp/llcp.c:1185:24: error: expected expression before '{' token
> net/nfc/llcp/llcp.c:1186:35: error: expected expression before '{' token
> ----
>
> when building with CONFIG_NFC / CONFIG_NFS_LLCP (builds fine when those are
> not set)
Grrr. Damned ignorants.
Does that fix it for you ?
Thanks,
tglx
------------>
Subject: nfc: Use proper lock init functions
From: Thomas Gleixner <[email protected]>
Date: Thu, 15 Nov 2012 19:03:20 +0100
Grmbl. Why insist people on using static initializers if there are
proper init functions? Just because they can?
Signed-off-by: Thomas Gleixner <[email protected]>
---
net/nfc/llcp/llcp.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Index: linux-stable/net/nfc/llcp/llcp.c
===================================================================
--- linux-stable.orig/net/nfc/llcp/llcp.c
+++ linux-stable/net/nfc/llcp/llcp.c
@@ -1182,8 +1182,8 @@ int nfc_llcp_register_device(struct nfc_
goto err_rx_wq;
}
- local->sockets.lock = __RW_LOCK_UNLOCKED(local->sockets.lock);
- local->connecting_sockets.lock = __RW_LOCK_UNLOCKED(local->connecting_sockets.lock);
+ rwlock_init(&local->sockets.lock);
+ rwlock_init(&local->connecting_sockets.lock);
nfc_llcp_build_gb(local);
On 11/15/2012 10:11 AM, Thomas Gleixner wrote:
> On Wed, 14 Nov 2012, Fernando Lopez-Lezcano wrote:
>
>> On 11/12/2012 01:28 PM, Thomas Gleixner wrote:
>>> Dear RT Folks,
>>>
>>> I'm pleased to announce the 3.6.6-rt17 release. 3.6.6-rt16 is just a
>>> not announced update release to 3.6.6.
>>
>> Got this:
>>
>> ----
>> net/nfc/llcp/llcp.c: In function 'nfc_llcp_register_device':
>> net/nfc/llcp/llcp.c:1185:24: error: expected expression before '{' token
>> net/nfc/llcp/llcp.c:1186:35: error: expected expression before '{' token
>> ----
>>
>> when building with CONFIG_NFC / CONFIG_NFS_LLCP (builds fine when those are
>> not set)
>
> Grrr. Damned ignorants.
>
> Does that fix it for you ?
Yes, thanks! I had to tweak the patch but it does make the whole thing
compile.
-- Fernando
> ------------>
>
> Subject: nfc: Use proper lock init functions
> From: Thomas Gleixner<[email protected]>
> Date: Thu, 15 Nov 2012 19:03:20 +0100
>
> Grmbl. Why insist people on using static initializers if there are
> proper init functions? Just because they can?
>
> Signed-off-by: Thomas Gleixner<[email protected]>
> ---
> net/nfc/llcp/llcp.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> Index: linux-stable/net/nfc/llcp/llcp.c
> ===================================================================
> --- linux-stable.orig/net/nfc/llcp/llcp.c
> +++ linux-stable/net/nfc/llcp/llcp.c
> @@ -1182,8 +1182,8 @@ int nfc_llcp_register_device(struct nfc_
> goto err_rx_wq;
> }
>
> - local->sockets.lock = __RW_LOCK_UNLOCKED(local->sockets.lock);
> - local->connecting_sockets.lock = __RW_LOCK_UNLOCKED(local->connecting_sockets.lock);
> + rwlock_init(&local->sockets.lock);
> + rwlock_init(&local->connecting_sockets.lock);
>
> nfc_llcp_build_gb(local);
>