All of lore.kernel.org
 help / color / mirror / Atom feed
* [ANNOUNCE] 3.4-rc2-rt1
@ 2012-04-10 14:46 Thomas Gleixner
  2012-04-10 14:58 ` Arnd Bergmann
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Thomas Gleixner @ 2012-04-10 14:46 UTC (permalink / raw)
  To: LKML; +Cc: linux-rt-users

Dear RT Folks,

I'm pleased to announce the 3.4-rc2-rt1 release.

This is a straight forward update of the 3.2 series to 3.4-rc2. It's
slightly smaller than the 3.2 series. I hope to stabilize it fast so I
can concentrate on shuffling more parts of RT into 3.5.

The RT patch against 3.4-rc2-rt1 can be found here:

  http://www.kernel.org/pub/linux/kernel/projects/rt/3.4/patch-3.4-rc2-rt1.patch.xz


The split quilt queue is available at:

  http://www.kernel.org/pub/linux/kernel/projects/rt/3.4/patches-3.4-rc2-rt1.tar.xz

Enjoy,

	tglx
---
Index: linux-3.2/fs/autofs4/autofs_i.h
===================================================================
--- linux-3.2.orig/fs/autofs4/autofs_i.h
+++ linux-3.2/fs/autofs4/autofs_i.h
@@ -34,6 +34,7 @@
 #include <linux/sched.h>
 #include <linux/mount.h>
 #include <linux/namei.h>
+#include <linux/delay.h>
 #include <asm/current.h>
 #include <asm/uaccess.h>
 
Index: linux-3.2/fs/autofs4/expire.c
===================================================================
--- linux-3.2.orig/fs/autofs4/expire.c
+++ linux-3.2/fs/autofs4/expire.c
@@ -170,7 +170,7 @@ again:
 			parent = p->d_parent;
 			if (!seq_spin_trylock(&parent->d_lock)) {
 				seq_spin_unlock(&p->d_lock);
-				cpu_relax();
+				cpu_chill();
 				goto relock;
 			}
 			seq_spin_unlock(&p->d_lock);
Index: linux-3.2/fs/dcache.c
===================================================================
--- linux-3.2.orig/fs/dcache.c
+++ linux-3.2/fs/dcache.c
@@ -37,6 +37,7 @@
 #include <linux/rculist_bl.h>
 #include <linux/prefetch.h>
 #include <linux/ratelimit.h>
+#include <linux/delay.h>
 #include "internal.h"
 
 /*
@@ -410,7 +411,7 @@ static inline struct dentry *dentry_kill
 	if (inode && !spin_trylock(&inode->i_lock)) {
 relock:
 		seq_spin_unlock(&dentry->d_lock);
-		cpu_relax();
+		cpu_chill();
 		return dentry; /* try again with same dentry */
 	}
 	if (IS_ROOT(dentry))
@@ -796,7 +797,7 @@ relock:
 
 		if (!seq_spin_trylock(&dentry->d_lock)) {
 			spin_unlock(&dcache_lru_lock);
-			cpu_relax();
+			cpu_chill();
 			goto relock;
 		}
 
@@ -1974,7 +1975,7 @@ again:
 	if (dentry->d_count == 1) {
 		if (inode && !spin_trylock(&inode->i_lock)) {
 			seq_spin_unlock(&dentry->d_lock);
-			cpu_relax();
+			cpu_chill();
 			goto again;
 		}
 		dentry->d_flags &= ~DCACHE_CANT_MOUNT;
Index: linux-3.2/fs/namespace.c
===================================================================
--- linux-3.2.orig/fs/namespace.c
+++ linux-3.2/fs/namespace.c
@@ -31,6 +31,7 @@
 #include <linux/idr.h>
 #include <linux/fs_struct.h>
 #include <linux/fsnotify.h>
+#include <linux/delay.h>
 #include <asm/uaccess.h>
 #include <asm/unistd.h>
 #include "pnode.h"
@@ -346,7 +347,7 @@ int mnt_want_write(struct vfsmount *mnt)
 	 */
 	while (mnt->mnt_flags & MNT_WRITE_HOLD) {
 		preempt_enable();
-		cpu_relax();
+		cpu_chill();
 		preempt_disable();
 	}
 	/*
Index: linux-3.2/include/linux/preempt.h
===================================================================
--- linux-3.2.orig/include/linux/preempt.h
+++ linux-3.2/include/linux/preempt.h
@@ -56,8 +56,10 @@ do { \
 
 #ifndef CONFIG_PREEMPT_RT_BASE
 # define preempt_enable_no_resched()	__preempt_enable_no_resched()
+# define preempt_check_resched_rt()	do { } while (0)
 #else
 # define preempt_enable_no_resched()	preempt_enable()
+# define preempt_check_resched_rt()	preempt_check_resched()
 #endif
 
 #define preempt_enable() \
Index: linux-3.2/kernel/irq/manage.c
===================================================================
--- linux-3.2.orig/kernel/irq/manage.c
+++ linux-3.2/kernel/irq/manage.c
@@ -995,6 +995,11 @@ __setup_irq(unsigned int irq, struct irq
 
 		/* add new interrupt at end of irq queue */
 		do {
+			/*
+			 * Or all existing action->thread_mask bits,
+			 * so we can find the next zero bit for this
+			 * new action.
+			 */
 			thread_mask |= old->thread_mask;
 			old_ptr = &old->next;
 			old = *old_ptr;
@@ -1003,14 +1008,41 @@ __setup_irq(unsigned int irq, struct irq
 	}
 
 	/*
-	 * Setup the thread mask for this irqaction. Unlikely to have
-	 * 32 resp 64 irqs sharing one line, but who knows.
+	 * Setup the thread mask for this irqaction for ONESHOT. For
+	 * !ONESHOT irqs the thread mask is 0 so we can avoid a
+	 * conditional in irq_wake_thread().
 	 */
-	if (new->flags & IRQF_ONESHOT && thread_mask == ~0UL) {
-		ret = -EBUSY;
-		goto out_mask;
+	if (new->flags & IRQF_ONESHOT) {
+		/*
+		 * Unlikely to have 32 resp 64 irqs sharing one line,
+		 * but who knows.
+		 */
+		if (thread_mask == ~0UL) {
+			ret = -EBUSY;
+			goto out_mask;
+		}
+		/*
+		 * The thread_mask for the action is or'ed to
+		 * desc->thread_active to indicate that the
+		 * IRQF_ONESHOT thread handler has been woken, but not
+		 * yet finished. The bit is cleared when a thread
+		 * completes. When all threads of a shared interrupt
+		 * line have completed desc->threads_active becomes
+		 * zero and the interrupt line is unmasked. See
+		 * handle.c:irq_wake_thread() for further information.
+		 *
+		 * If no thread is woken by primary (hard irq context)
+		 * interrupt handlers, then desc->threads_active is
+		 * also checked for zero to unmask the irq line in the
+		 * affected hard irq flow handlers
+		 * (handle_[fasteoi|level]_irq).
+		 *
+		 * The new action gets the first zero bit of
+		 * thread_mask assigned. See the loop above which or's
+		 * all existing action->thread_mask bits.
+		 */
+		new->thread_mask = 1 << ffz(thread_mask);
 	}
-	new->thread_mask = 1 << ffz(thread_mask);
 
 	if (!shared) {
 		init_waitqueue_head(&desc->wait_for_threads);
Index: linux-3.2/localversion-rt
===================================================================
--- linux-3.2.orig/localversion-rt
+++ linux-3.2/localversion-rt
@@ -1 +1 @@
--rt16
+-rt17
Index: linux-3.2/net/core/dev.c
===================================================================
--- linux-3.2.orig/net/core/dev.c
+++ linux-3.2/net/core/dev.c
@@ -1779,6 +1779,7 @@ static inline void __netif_reschedule(st
 	sd->output_queue_tailp = &q->next_sched;
 	raise_softirq_irqoff(NET_TX_SOFTIRQ);
 	local_irq_restore(flags);
+	preempt_check_resched_rt();
 }
 
 void __netif_schedule(struct Qdisc *q)
@@ -1800,6 +1801,7 @@ void dev_kfree_skb_irq(struct sk_buff *s
 		sd->completion_queue = skb;
 		raise_softirq_irqoff(NET_TX_SOFTIRQ);
 		local_irq_restore(flags);
+		preempt_check_resched_rt();
 	}
 }
 EXPORT_SYMBOL(dev_kfree_skb_irq);
@@ -2969,6 +2971,7 @@ enqueue:
 	rps_unlock(sd);
 
 	local_irq_restore(flags);
+	preempt_check_resched_rt();
 
 	atomic_long_inc(&skb->dev->rx_dropped);
 	kfree_skb(skb);
@@ -3789,6 +3792,7 @@ static void net_rps_action_and_irq_enabl
 	} else
 #endif
 		local_irq_enable();
+	preempt_check_resched_rt();
 }
 
 static int process_backlog(struct napi_struct *napi, int quota)
@@ -3861,6 +3865,7 @@ void __napi_schedule(struct napi_struct 
 	local_irq_save(flags);
 	____napi_schedule(&__get_cpu_var(softnet_data), n);
 	local_irq_restore(flags);
+	preempt_check_resched_rt();
 }
 EXPORT_SYMBOL(__napi_schedule);
 
@@ -6401,6 +6406,7 @@ static int dev_cpu_callback(struct notif
 
 	raise_softirq_irqoff(NET_TX_SOFTIRQ);
 	local_irq_enable();
+	preempt_check_resched_rt();
 
 	/* Process offline CPU's input_pkt_queue */
 	while ((skb = __skb_dequeue(&oldsd->process_queue))) {
Index: linux-3.2/block/blk-iopoll.c
===================================================================
--- linux-3.2.orig/block/blk-iopoll.c
+++ linux-3.2/block/blk-iopoll.c
@@ -38,6 +38,7 @@ void blk_iopoll_sched(struct blk_iopoll 
 	list_add_tail(&iop->list, &__get_cpu_var(blk_cpu_iopoll));
 	__raise_softirq_irqoff(BLOCK_IOPOLL_SOFTIRQ);
 	local_irq_restore(flags);
+	preempt_check_resched_rt();
 }
 EXPORT_SYMBOL(blk_iopoll_sched);
 
@@ -135,6 +136,7 @@ static void blk_iopoll_softirq(struct so
 		__raise_softirq_irqoff(BLOCK_IOPOLL_SOFTIRQ);
 
 	local_irq_enable();
+	preempt_check_resched_rt();
 }
 
 /**
@@ -204,6 +206,7 @@ static int __cpuinit blk_iopoll_cpu_noti
 				 &__get_cpu_var(blk_cpu_iopoll));
 		__raise_softirq_irqoff(BLOCK_IOPOLL_SOFTIRQ);
 		local_irq_enable();
+		preempt_check_resched_rt();
 	}
 
 	return NOTIFY_OK;
Index: linux-3.2/block/blk-softirq.c
===================================================================
--- linux-3.2.orig/block/blk-softirq.c
+++ linux-3.2/block/blk-softirq.c
@@ -50,6 +50,7 @@ static void trigger_softirq(void *data)
 		raise_softirq_irqoff(BLOCK_SOFTIRQ);
 
 	local_irq_restore(flags);
+	preempt_check_resched_rt();
 }
 
 /*
@@ -92,6 +93,7 @@ static int __cpuinit blk_cpu_notify(stru
 				 &__get_cpu_var(blk_cpu_done));
 		raise_softirq_irqoff(BLOCK_SOFTIRQ);
 		local_irq_enable();
+		preempt_check_resched_rt();
 	}
 
 	return NOTIFY_OK;
@@ -150,6 +152,7 @@ do_local:
 		goto do_local;
 
 	local_irq_restore(flags);
+	preempt_check_resched_rt();
 }
 
 /**
Index: linux-3.2/include/linux/delay.h
===================================================================
--- linux-3.2.orig/include/linux/delay.h
+++ linux-3.2/include/linux/delay.h
@@ -52,4 +52,10 @@ static inline void ssleep(unsigned int s
 	msleep(seconds * 1000);
 }
 
+#ifdef CONFIG_PREEMPT_RT_FULL
+# define cpu_chill()	msleep(1)
+#else
+# define cpu_chill()	cpu_relax()
+#endif
+
 #endif /* defined(_LINUX_DELAY_H) */
Index: linux-3.2/net/packet/af_packet.c
===================================================================
--- linux-3.2.orig/net/packet/af_packet.c
+++ linux-3.2/net/packet/af_packet.c
@@ -89,6 +89,7 @@
 #include <linux/virtio_net.h>
 #include <linux/errqueue.h>
 #include <linux/net_tstamp.h>
+#include <linux/delay.h>
 
 #ifdef CONFIG_INET
 #include <net/inet_common.h>
@@ -673,7 +674,7 @@ static void prb_retire_rx_blk_timer_expi
 	if (BLOCK_NUM_PKTS(pbd)) {
 		while (atomic_read(&pkc->blk_fill_in_prog)) {
 			/* Waiting for skb_copy_bits to finish... */
-			cpu_relax();
+			cpu_chill();
 		}
 	}
 
@@ -928,7 +929,7 @@ static void prb_retire_current_block(str
 		if (!(status & TP_STATUS_BLK_TMO)) {
 			while (atomic_read(&pkc->blk_fill_in_prog)) {
 				/* Waiting for skb_copy_bits to finish... */
-				cpu_relax();
+				cpu_chill();
 			}
 		}
 		prb_close_block(pkc, pbd, po, status);
Index: linux-3.2/net/rds/ib_rdma.c
===================================================================
--- linux-3.2.orig/net/rds/ib_rdma.c
+++ linux-3.2/net/rds/ib_rdma.c
@@ -34,6 +34,7 @@
 #include <linux/slab.h>
 #include <linux/rculist.h>
 #include <linux/llist.h>
+#include <linux/delay.h>
 
 #include "rds.h"
 #include "ib.h"
@@ -286,7 +287,7 @@ static inline void wait_clean_list_grace
 	for_each_online_cpu(cpu) {
 		flag = &per_cpu(clean_list_grace, cpu);
 		while (test_bit(CLEAN_LIST_BUSY_BIT, flag))
-			cpu_relax();
+			cpu_chill();
 	}
 }
 

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [ANNOUNCE] 3.4-rc2-rt1
  2012-04-10 14:46 [ANNOUNCE] 3.4-rc2-rt1 Thomas Gleixner
@ 2012-04-10 14:58 ` Arnd Bergmann
  2012-04-10 15:02   ` Thomas Gleixner
  2012-04-10 23:47 ` Frank Rowand
  2012-04-11  2:23 ` Frank Rowand
  2 siblings, 1 reply; 7+ messages in thread
From: Arnd Bergmann @ 2012-04-10 14:58 UTC (permalink / raw)
  To: Thomas Gleixner; +Cc: LKML, linux-rt-users

On Tuesday 10 April 2012, Thomas Gleixner wrote:
> Dear RT Folks,
> 
> I'm pleased to announce the 3.4-rc2-rt1 release.
> 
> This is a straight forward update of the 3.2 series to 3.4-rc2. It's
> slightly smaller than the 3.2 series. I hope to stabilize it fast so I
> can concentrate on shuffling more parts of RT into 3.5.
> 
> The RT patch against 3.4-rc2-rt1 can be found here:
> 
>   http://www.kernel.org/pub/linux/kernel/projects/rt/3.4/patch-3.4-rc2-rt1.patch.xz
> 
> 
> The split quilt queue is available at:
> 
>   http://www.kernel.org/pub/linux/kernel/projects/rt/3.4/patches-3.4-rc2-rt1.tar.xz
> 
> Enjoy,
> 
> 	tglx
> ---
> Index: linux-3.2/fs/autofs4/autofs_i.h
> ===================================================================
> --- linux-3.2.orig/fs/autofs4/autofs_i.h
> +++ linux-3.2/fs/autofs4/autofs_i.h

I guess the patch you attached here with this diffstat

 block/blk-iopoll.c      |    3 +++
 block/blk-softirq.c     |    3 +++
 fs/autofs4/autofs_i.h   |    1 +
 fs/autofs4/expire.c     |    2 +-
 fs/dcache.c             |    7 ++++---
 fs/namespace.c          |    3 ++-
 include/linux/delay.h   |    6 ++++++
 include/linux/preempt.h |    2 ++
 kernel/irq/manage.c     |   44 ++++++++++++++++++++++++++++++++++++++------
 localversion-rt         |    2 +-
 net/core/dev.c          |    6 ++++++
 net/packet/af_packet.c  |    5 +++--
 net/rds/ib_rdma.c       |    3 ++-
 13 files changed, 72 insertions(+), 15 deletions(-)

is not the one you describe above but the one for the 3.2.14-rt24 release,
right? Otherwise it would be considerably smaller compared to 3.2-rt, not
just a bit ;-)

	Arnd

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [ANNOUNCE] 3.4-rc2-rt1
  2012-04-10 14:58 ` Arnd Bergmann
@ 2012-04-10 15:02   ` Thomas Gleixner
  0 siblings, 0 replies; 7+ messages in thread
From: Thomas Gleixner @ 2012-04-10 15:02 UTC (permalink / raw)
  To: Arnd Bergmann; +Cc: LKML, linux-rt-users

On Tue, 10 Apr 2012, Arnd Bergmann wrote:
> On Tuesday 10 April 2012, Thomas Gleixner wrote:
>  net/rds/ib_rdma.c       |    3 ++-
>  13 files changed, 72 insertions(+), 15 deletions(-)
> 
> is not the one you describe above but the one for the 3.2.14-rt24 release,
> right? Otherwise it would be considerably smaller compared to 3.2-rt, not
> just a bit ;-)

Someone should forbit copy and paste, really. :)


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [ANNOUNCE] 3.4-rc2-rt1
  2012-04-10 14:46 [ANNOUNCE] 3.4-rc2-rt1 Thomas Gleixner
  2012-04-10 14:58 ` Arnd Bergmann
@ 2012-04-10 23:47 ` Frank Rowand
  2012-04-10 23:51   ` Frank Rowand
  2012-04-11  2:23 ` Frank Rowand
  2 siblings, 1 reply; 7+ messages in thread
From: Frank Rowand @ 2012-04-10 23:47 UTC (permalink / raw)
  To: Thomas Gleixner; +Cc: LKML, linux-rt-users

On 04/10/12 07:46, Thomas Gleixner wrote:
> Dear RT Folks,
> 
> I'm pleased to announce the 3.4-rc2-rt1 release.
> 
> This is a straight forward update of the 3.2 series to 3.4-rc2. It's
> slightly smaller than the 3.2 series. I hope to stabilize it fast so I
> can concentrate on shuffling more parts of RT into 3.5.


Compile on the ARM panda fails because commit 615399c8 removed the defines of:

  cpu_online_map
  cpu_possible_map

These defines are used by posix-timers-thread-posix-cpu-timers-on-rt.patch


kernel/posix-cpu-timers.c: In function 'posix_cpu_thread_call':
kernel/posix-cpu-timers.c:1487: error: 'cpu_online_map' undeclared (first use in this function)
kernel/posix-cpu-timers.c:1487: error: (Each undeclared identifier is reported only once
kernel/posix-cpu-timers.c:1487: error: for each function it appears in.)
kernel/posix-cpu-timers.c: In function 'posix_cpu_thread_init':
kernel/posix-cpu-timers.c:1515: error: 'cpu_possible_map' undeclared (first use in this function)


This patch is a temporary workaround, putting back two of the defines removed
by commit 615399c8.


Signed-off-by: Frank Rowand <frank.rowand@am.sony.com>
---
 include/linux/cpumask.h |    4 	4 +	0 -	0 !
 1 file changed, 4 insertions(+)

Index: b/include/linux/cpumask.h
===================================================================
--- a/include/linux/cpumask.h
+++ b/include/linux/cpumask.h
@@ -764,6 +764,10 @@ static inline const struct cpumask *get_
  *
  */
 #ifndef CONFIG_DISABLE_OBSOLETE_CPUMASK_FUNCTIONS
+/* These strip const, as traditionally they weren't const. */
+#define cpu_possible_map	(*(cpumask_t *)cpu_possible_mask)
+#define cpu_online_map		(*(cpumask_t *)cpu_online_mask)
+
 #define cpumask_of_cpu(cpu) (*get_cpu_mask(cpu))
 
 #define CPU_MASK_LAST_WORD BITMAP_LAST_WORD_MASK(NR_CPUS)


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [ANNOUNCE] 3.4-rc2-rt1
  2012-04-10 23:47 ` Frank Rowand
@ 2012-04-10 23:51   ` Frank Rowand
  2012-04-11  9:25     ` Thomas Gleixner
  0 siblings, 1 reply; 7+ messages in thread
From: Frank Rowand @ 2012-04-10 23:51 UTC (permalink / raw)
  To: Thomas Gleixner; +Cc: LKML, linux-rt-users

On 04/10/12 16:47, Frank Rowand wrote:
> On 04/10/12 07:46, Thomas Gleixner wrote:
>> Dear RT Folks,
>>
>> I'm pleased to announce the 3.4-rc2-rt1 release.
>>
>> This is a straight forward update of the 3.2 series to 3.4-rc2. It's
>> slightly smaller than the 3.2 series. I hope to stabilize it fast so I
>> can concentrate on shuffling more parts of RT into 3.5.
> 
> 
> Compile on the ARM panda fails because commit 615399c8 removed the defines of:
> 
>   cpu_online_map
>   cpu_possible_map
> 
> These defines are used by posix-timers-thread-posix-cpu-timers-on-rt.patch
> 
> 
> kernel/posix-cpu-timers.c: In function 'posix_cpu_thread_call':
> kernel/posix-cpu-timers.c:1487: error: 'cpu_online_map' undeclared (first use in this function)
> kernel/posix-cpu-timers.c:1487: error: (Each undeclared identifier is reported only once
> kernel/posix-cpu-timers.c:1487: error: for each function it appears in.)
> kernel/posix-cpu-timers.c: In function 'posix_cpu_thread_init':
> kernel/posix-cpu-timers.c:1515: error: 'cpu_possible_map' undeclared (first use in this function)
> 
> 
> This patch is a temporary workaround, putting back two of the defines removed
> by commit 615399c8.

< snip >

After applying this patch, the ARM panda boots, but with a lock warning.

This is for SMP, CONFIG_PREEMPT_RT_FULL.

I have not even read through the warning message yet, but am sharing it
here:


[    0.183959] CPU1: Booted secondary processor
[    0.253540] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[    0.253601] CPU1: Unknown IPI message 0x1
[    0.253723] 
[    0.253723] =========================================================
[    0.253723] [ INFO: possible irq lock inversion dependency detected ]
[    0.253753] 3.4.0-rc2-rt1 #2 Not tainted
[    0.253753] ---------------------------------------------------------
[    0.253753] swapper/0/1 just changed the state of lock:
[    0.253753]  (wakeupgen_lock.lock.wait_lock){+.....}, at: [<c0460670>] rt_spin_lock_slowlock+0x2c/0x284
[    0.253784] but this lock was taken by another, HARDIRQ-safe lock in the past:
[    0.253814]  (&irq_desc_lock_class){-.....}
[    0.253814] 
[    0.253814] and interrupts could create inverse lock ordering between them.
[    0.253814] 
[    0.253814] 
[    0.253814] other info that might help us debug this:
[    0.253814] Chain exists of:
[    0.253845]   &irq_desc_lock_class --> irq_controller_lock --> wakeupgen_lock.lock.wait_lock
[    0.253845] 
[    0.253845]  Possible interrupt unsafe locking scenario:
[    0.253845] 
[    0.253845]        CPU0                    CPU1
[    0.253845]        ----                    ----
[    0.253845]   lock(wakeupgen_lock.lock.wait_lock);
[    0.253875]                                local_irq_disable();
[    0.253875]                                lock(&irq_desc_lock_class);
[    0.253875]                                lock(irq_controller_lock);
[    0.253875]   <Interrupt>
[    0.253875]     lock(&irq_desc_lock_class);
[    0.253906] 
[    0.253906]  *** DEADLOCK ***
[    0.253906] 
[    0.253906] 2 locks held by swapper/0/1:
[    0.253906]  #0:  (cpu_add_remove_lock){+.+.+.}, at: [<c045be90>] cpu_up+0x3c/0x94
[    0.253936]  #1:  (cpu_hotplug.lock){+.+.+.}, at: [<c0041314>] cpu_hotplug_begin+0x24/0x50
[    0.253936] 
[    0.253967] the shortest dependencies between 2nd lock and 1st lock:
[    0.253967]   -> (&irq_desc_lock_class){-.....} ops: 758 {
[    0.253967]      IN-HARDIRQ-W at:
[    0.253997]                                            [<c008e390>] __lock_acquire+0x8a4/0x1cf0
[    0.254028]                                            [<c008f8dc>] lock_acquire+0x100/0x120
[    0.254028]                                            [<c0461280>] _raw_spin_lock+0x3c/0x4c
[    0.254028]                                            [<c00a2414>] handle_fasteoi_irq+0x14/0x144
[    0.254058]                                            [<c009ef88>] generic_handle_irq+0x30/0x4c
[    0.254089]                                            [<c0015080>] handle_IRQ+0x48/0xa8
[    0.254119]                                            [<c0008494>] gic_handle_irq+0x30/0x70
[    0.254119]                                            [<c04617a4>] __irq_svc+0x44/0x7c
[    0.254119]                                            [<c045b070>] calibrate_delay+0x168/0x290
[    0.254150]                                            [<c06198d4>] start_kernel+0x258/0x340
[    0.254180]                                            [<80008044>] 0x80008044
[    0.254180]      INITIAL USE at:
[    0.254180]                                           [<c008df28>] __lock_acquire+0x43c/0x1cf0
[    0.254211]                                           [<c008f8dc>] lock_acquire+0x100/0x120
[    0.254211]                                           [<c046138c>] _raw_spin_lock_irqsave+0x48/0x5c
[    0.254211]                                           [<c009f200>] __irq_get_desc_lock+0x78/0xa4
[    0.254241]                                           [<c00a1f0c>] irq_modify_status+0x20/0xb4
[    0.254241]                                           [<c009f33c>] irq_set_percpu_devid+0x6c/0x88
[    0.254241]                                           [<c0022578>] gic_irq_domain_map+0x58/0x88
[    0.254272]                                           [<c00a455c>] irq_domain_add_legacy+0x104/0x144
[    0.254302]                                           [<c0620f2c>] gic_init_bases+0xb8/0x2bc
[    0.254302]                                           [<c0625c3c>] gic_init_irq+0x5c/0x7c
[    0.254333]                                           [<c061c8b8>] init_IRQ+0x18/0x24
[    0.254333]                                           [<c0619804>] start_kernel+0x188/0x340
[    0.254333]                                           [<80008044>] 0x80008044
[    0.254364]    }
[    0.254364]    ... key      at: [<c0c2bb88>] irq_desc_lock_class+0x0/0x8
[    0.254364]    ... acquired at:
[    0.254364]    [<c008f8dc>] lock_acquire+0x100/0x120
[    0.254394]    [<c0461280>] _raw_spin_lock+0x3c/0x4c
[    0.254394]    [<c00223ac>] gic_unmask_irq+0x18/0x6c
[    0.254394]    [<c00a1ce8>] irq_enable+0x40/0x50
[    0.254425]    [<c00a2908>] irq_startup+0x64/0x68
[    0.254425]    [<c00a0a98>] __setup_irq+0x3e0/0x434
[    0.254425]    [<c00a0e24>] setup_irq+0x44/0x84
[    0.254425]    [<c0623cbc>] omap2_gp_clockevent_init+0x1d0/0x360
[    0.254455]    [<c0623e60>] omap4_timer_init+0x14/0x64
[    0.254455]    [<c061db5c>] time_init+0x24/0x38
[    0.254455]    [<c061981c>] start_kernel+0x1a0/0x340
[    0.254486]    [<80008044>] 0x80008044
[    0.254486] 
[    0.254486]  -> (irq_controller_lock){......} ops: 4 {
[    0.254486]     INITIAL USE at:
[    0.254486]                                         [<c008df28>] __lock_acquire+0x43c/0x1cf0
[    0.254516]                                         [<c008f8dc>] lock_acquire+0x100/0x120
[    0.254516]                                         [<c0461280>] _raw_spin_lock+0x3c/0x4c
[    0.254516]                                         [<c00223ac>] gic_unmask_irq+0x18/0x6c
[    0.254547]                                         [<c00a1ce8>] irq_enable+0x40/0x50
[    0.254547]                                         [<c00a2908>] irq_startup+0x64/0x68
[    0.254547]                                         [<c00a0a98>] __setup_irq+0x3e0/0x434
[    0.254577]                                         [<c00a0e24>] setup_irq+0x44/0x84
[    0.254577]                                         [<c0623cbc>] omap2_gp_clockevent_init+0x1d0/0x360
[    0.254577]                                         [<c0623e60>] omap4_timer_init+0x14/0x64
[    0.254608]                                         [<c061db5c>] time_init+0x24/0x38
[    0.254608]                                         [<c061981c>] start_kernel+0x1a0/0x340
[    0.254608]                                         [<80008044>] 0x80008044
[    0.254638]   }
[    0.254638]   ... key      at: [<c069ed64>] irq_controller_lock+0x14/0x24
[    0.254669]   ... acquired at:
[    0.254669]    [<c008f8dc>] lock_acquire+0x100/0x120
[    0.254669]    [<c0461280>] _raw_spin_lock+0x3c/0x4c
[    0.254669]    [<c0460670>] rt_spin_lock_slowlock+0x2c/0x284
[    0.254699]    [<c04609d8>] rt_spin_lock+0x18/0x40
[    0.254699]    [<c0028948>] wakeupgen_unmask+0x14/0x8c
[    0.254699]    [<c00223c4>] gic_unmask_irq+0x30/0x6c
[    0.254730]    [<c00a1ce8>] irq_enable+0x40/0x50
[    0.254730]    [<c00a2908>] irq_startup+0x64/0x68
[    0.254730]    [<c00a0a98>] __setup_irq+0x3e0/0x434
[    0.254730]    [<c00a0e24>] setup_irq+0x44/0x84
[    0.254760]    [<c0623cbc>] omap2_gp_clockevent_init+0x1d0/0x360
[    0.254760]    [<c0623e60>] omap4_timer_init+0x14/0x64
[    0.254760]    [<c061db5c>] time_init+0x24/0x38
[    0.254791]    [<c061981c>] start_kernel+0x1a0/0x340
[    0.254791]    [<80008044>] 0x80008044
[    0.254791] 
[    0.254791] -> (wakeupgen_lock.lock.wait_lock){+.....} ops: 7 {
[    0.254821]    HARDIRQ-ON-W at:
[    0.254821]                                        [<c008e1fc>] __lock_acquire+0x710/0x1cf0
[    0.254821]                                        [<c008f8dc>] lock_acquire+0x100/0x120
[    0.254821]                                        [<c0461280>] _raw_spin_lock+0x3c/0x4c
[    0.254852]                                        [<c0460670>] rt_spin_lock_slowlock+0x2c/0x284
[    0.254852]                                        [<c04609d8>] rt_spin_lock+0x18/0x40
[    0.254852]                                        [<c00286c4>] wakeupgen_irqmask_all+0x18/0x10c
[    0.254882]                                        [<c045bb20>] irq_cpu_hotplug_notify+0x38/0x3c
[    0.254882]                                        [<c04634a4>] notifier_call_chain+0x4c/0x8c
[    0.254913]                                        [<c045be30>] _cpu_up+0x128/0x14c
[    0.254913]                                        [<c045bed0>] cpu_up+0x7c/0x94
[    0.254913]                                        [<c0632eec>] smp_init+0x88/0xc4
[    0.254943]                                        [<c061927c>] kernel_init+0x68/0x1d0
[    0.254943]                                        [<c0015170>] kernel_thread_exit+0x0/0x8
[    0.254974]    INITIAL USE at:
[    0.254974]                                       [<c008df28>] __lock_acquire+0x43c/0x1cf0
[    0.254974]                                       [<c008f8dc>] lock_acquire+0x100/0x120
[    0.255004]                                       [<c0461280>] _raw_spin_lock+0x3c/0x4c
[    0.255004]                                       [<c0460670>] rt_spin_lock_slowlock+0x2c/0x284
[    0.255004]                                       [<c04609d8>] rt_spin_lock+0x18/0x40
[    0.255035]                                       [<c0028948>] wakeupgen_unmask+0x14/0x8c
[    0.255035]                                       [<c00223c4>] gic_unmask_irq+0x30/0x6c
[    0.255065]                                       [<c00a1ce8>] irq_enable+0x40/0x50
[    0.255065]                                       [<c00a2908>] irq_startup+0x64/0x68
[    0.255065]                                       [<c00a0a98>] __setup_irq+0x3e0/0x434
[    0.255065]                                       [<c00a0e24>] setup_irq+0x44/0x84
[    0.255096]                                       [<c0623cbc>] omap2_gp_clockevent_init+0x1d0/0x360
[    0.255096]                                       [<c0623e60>] omap4_timer_init+0x14/0x64
[    0.255126]                                       [<c061db5c>] time_init+0x24/0x38
[    0.255126]                                       [<c061981c>] start_kernel+0x1a0/0x340
[    0.255126]                                       [<80008044>] 0x80008044
[    0.255126]  }
[    0.255157]  ... key      at: [<c0670114>] wakeupgen_lock+0x14/0x80
[    0.255157]  ... acquired at:
[    0.255187]    [<c008d174>] check_usage_backwards+0xa4/0x104
[    0.255187]    [<c008c144>] mark_lock+0x26c/0x680
[    0.255187]    [<c008e1fc>] __lock_acquire+0x710/0x1cf0
[    0.255187]    [<c008f8dc>] lock_acquire+0x100/0x120
[    0.255218]    [<c0461280>] _raw_spin_lock+0x3c/0x4c
[    0.255218]    [<c0460670>] rt_spin_lock_slowlock+0x2c/0x284
[    0.255218]    [<c04609d8>] rt_spin_lock+0x18/0x40
[    0.255249]    [<c00286c4>] wakeupgen_irqmask_all+0x18/0x10c
[    0.255249]    [<c045bb20>] irq_cpu_hotplug_notify+0x38/0x3c
[    0.255249]    [<c04634a4>] notifier_call_chain+0x4c/0x8c
[    0.255249]    [<c045be30>] _cpu_up+0x128/0x14c
[    0.255279]    [<c045bed0>] cpu_up+0x7c/0x94
[    0.255279]    [<c0632eec>] smp_init+0x88/0xc4
[    0.255279]    [<c061927c>] kernel_init+0x68/0x1d0
[    0.255310]    [<c0015170>] kernel_thread_exit+0x0/0x8
[    0.255310] 
[    0.255310] 
[    0.255310] stack backtrace:
[    0.255340] [<c001b674>] (unwind_backtrace+0x0/0xf0) from [<c008cf4c>] (print_irq_inversion_bug+0x190/0x210)
[    0.255371] [<c008cf4c>] (print_irq_inversion_bug+0x190/0x210) from [<c008d174>] (check_usage_backwards+0xa4/
0x104)
[    0.255371] [<c008d174>] (check_usage_backwards+0xa4/0x104) from [<c008c144>] (mark_lock+0x26c/0x680)
[    0.255401] [<c008c144>] (mark_lock+0x26c/0x680) from [<c008e1fc>] (__lock_acquire+0x710/0x1cf0)
[    0.255401] [<c008e1fc>] (__lock_acquire+0x710/0x1cf0) from [<c008f8dc>] (lock_acquire+0x100/0x120)
[    0.255401] [<c008f8dc>] (lock_acquire+0x100/0x120) from [<c0461280>] (_raw_spin_lock+0x3c/0x4c)
[    0.255432] [<c0461280>] (_raw_spin_lock+0x3c/0x4c) from [<c0460670>] (rt_spin_lock_slowlock+0x2c/0x284)
[    0.255432] [<c0460670>] (rt_spin_lock_slowlock+0x2c/0x284) from [<c04609d8>] (rt_spin_lock+0x18/0x40)
[    0.255462] [<c04609d8>] (rt_spin_lock+0x18/0x40) from [<c00286c4>] (wakeupgen_irqmask_all+0x18/0x10c)
[    0.255462] [<c00286c4>] (wakeupgen_irqmask_all+0x18/0x10c) from [<c045bb20>] (irq_cpu_hotplug_notify+0x38/0x
3c)
[    0.255493] [<c045bb20>] (irq_cpu_hotplug_notify+0x38/0x3c) from [<c04634a4>] (notifier_call_chain+0x4c/0x8c)
[    0.255493] [<c04634a4>] (notifier_call_chain+0x4c/0x8c) from [<c045be30>] (_cpu_up+0x128/0x14c)
[    0.255523] [<c045be30>] (_cpu_up+0x128/0x14c) from [<c045bed0>] (cpu_up+0x7c/0x94)
[    0.255523] [<c045bed0>] (cpu_up+0x7c/0x94) from [<c0632eec>] (smp_init+0x88/0xc4)
[    0.255554] [<c0632eec>] (smp_init+0x88/0xc4) from [<c061927c>] (kernel_init+0x68/0x1d0)
[    0.255554] [<c061927c>] (kernel_init+0x68/0x1d0) from [<c0015170>] (kernel_thread_exit+0x0/0x8)
[    0.255584] Brought up 2 CPUs
[    0.255584] SMP: Total of 2 processors activated (4022.78 BogoMIPS).


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [ANNOUNCE] 3.4-rc2-rt1
  2012-04-10 14:46 [ANNOUNCE] 3.4-rc2-rt1 Thomas Gleixner
  2012-04-10 14:58 ` Arnd Bergmann
  2012-04-10 23:47 ` Frank Rowand
@ 2012-04-11  2:23 ` Frank Rowand
  2 siblings, 0 replies; 7+ messages in thread
From: Frank Rowand @ 2012-04-11  2:23 UTC (permalink / raw)
  To: Thomas Gleixner; +Cc: LKML, linux-rt-users

On 04/10/12 07:46, Thomas Gleixner wrote:
> Dear RT Folks,
> 
> I'm pleased to announce the 3.4-rc2-rt1 release.
> 
> This is a straight forward update of the 3.2 series to 3.4-rc2. It's
> slightly smaller than the 3.2 series. I hope to stabilize it fast so I
> can concentrate on shuffling more parts of RT into 3.5.


3.4-rc2-rt1 builds and boots on some ARM boards (PandaBoard, Realview) for:

  - SMP, PREEMPT_RT_FULL
  - SMP, PREEMPT_NONE
  - UP, PREEMPT_RT_FULL
  - UP, PREEMPT_NONE

Patch was required to compile (see earlier in this email thread).

Second patch required to resolve NULL pointer dereference on boot
of Realview.  Patch sent to lkml (https://lkml.org/lkml/2012/4/10/518).

PandaBoard SMP, PREEMPT_RT_FULL has a lock warning on boot (reported
earlier in this thread).

-Frank


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [ANNOUNCE] 3.4-rc2-rt1
  2012-04-10 23:51   ` Frank Rowand
@ 2012-04-11  9:25     ` Thomas Gleixner
  0 siblings, 0 replies; 7+ messages in thread
From: Thomas Gleixner @ 2012-04-11  9:25 UTC (permalink / raw)
  To: Frank Rowand; +Cc: LKML, linux-rt-users

On Tue, 10 Apr 2012, Frank Rowand wrote:
> [    0.253845]        CPU0                    CPU1
> [    0.253845]        ----                    ----
> [    0.253845]   lock(wakeupgen_lock.lock.wait_lock);

wakeupgen_lock wants to be raw. I'll fix it for -rt2

Thanks,

	tglx

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2012-04-11  9:25 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-04-10 14:46 [ANNOUNCE] 3.4-rc2-rt1 Thomas Gleixner
2012-04-10 14:58 ` Arnd Bergmann
2012-04-10 15:02   ` Thomas Gleixner
2012-04-10 23:47 ` Frank Rowand
2012-04-10 23:51   ` Frank Rowand
2012-04-11  9:25     ` Thomas Gleixner
2012-04-11  2:23 ` Frank Rowand

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.