From mboxrd@z Thu Jan 1 00:00:00 1970 From: shawn.guo@freescale.com (Shawn Guo) Date: Mon, 27 Dec 2010 19:57:19 +0800 Subject: bug in PL011 console In-Reply-To: <20101223150234.GW14221@pengutronix.de> References: <20101223150234.GW14221@pengutronix.de> Message-ID: <20101227115719.GA27995@freescale.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Thu, Dec 23, 2010 at 04:02:34PM +0100, Uwe Kleine-K?nig wrote: > Hello, > > since mxs switched to amba-pl011 I often hit warnings like this: > > [ 9.280000] udevd (74): /proc/74/oom_adj is deprecated, please use /proc/74/oom_score_adj instead. > [ 9.280000] BUG: sleeping function called from invalid context at /ptx/work/octopus/WORK_2_A/ukl/backup/gsrc/linux-2.6/kernel/mutex.c:278 > [ 9.280000] in_atomic(): 0, irqs_disabled(): 128, pid: 74, name: udevd > [ 9.280000] 2 locks held by udevd/74: > [ 9.280000] #0: (&(&p->alloc_lock)->rlock){+.+...}, at: [] oom_adjust_write+0xf8/0x290 > [ 9.280000] #1: (&(&sighand->siglock)->rlock){......}, at: [] __lock_task_sighand+0x64/0xac > [ 9.280000] irq event stamp: 673 > [ 9.280000] hardirqs last enabled at (672): [] vector_swi+0x3c/0x90 > [ 9.280000] hardirqs last disabled at (673): [] _raw_spin_lock_irqsave+0x30/0x64 > [ 9.280000] softirqs last enabled at (0): [] copy_process+0x3a8/0xf90 > [ 9.280000] softirqs last disabled at (0): [< (null)>] (null) > [ 9.280000] Backtrace: > [ 9.280000] [] (dump_backtrace+0x0/0x110) from [] (dump_stack+0x1c/0x20) > [ 9.280000] r7:c79f0000 r6:c003dd00 r5:c030ce72 r4:c79f0000 > [ 9.280000] [] (dump_stack+0x0/0x20) from [] (__might_sleep+0x100/0x120) > [ 9.280000] [] (__might_sleep+0x0/0x120) from [] (mutex_lock_nested+0x3c/0x2b4) > [ 9.280000] r5:00000000 r4:00000000 > [ 9.280000] [] (mutex_lock_nested+0x0/0x2b4) from [] (clk_enable+0x30/0x58) > [ 9.280000] [] (clk_enable+0x0/0x58) from [] (pl011_console_write+0x30/0x8c) > [ 9.280000] r4:00000066 > [ 9.280000] [] (pl011_console_write+0x0/0x8c) from [] (__call_console_drivers+0x68/0x84) > [ 9.280000] r6:00000066 r5:00007401 r4:c0372950 > [ 9.280000] [] (__call_console_drivers+0x0/0x84) from [] (_call_console_drivers+0x88/0x9c) > [ 9.280000] r8:ffff8b99 r7:60000093 r6:c0352c24 r5:c0352ba0 r4:00007467 > [ 9.280000] [] (_call_console_drivers+0x0/0x9c) from [] (release_console_sem+0x158/0x244) > [ 9.280000] r5:00007467 r4:00007467 > [ 9.280000] [] (release_console_sem+0x0/0x244) from [] (vprintk+0x388/0x404) > [ 9.280000] [] (vprintk+0x0/0x404) from [] (printk+0x20/0x28) > [ 9.280000] [] (printk+0x0/0x28) from [] (oom_adjust_write+0x1f0/0x290) > [ 9.280000] r3:0000004a r2:0000004a r1:c795595c r0:c031998c > [ 9.280000] [] (oom_adjust_write+0x0/0x290) from [] (vfs_write+0xb8/0x18c) > [ 9.280000] r8:0001a4ac r7:c79f1f70 r6:0001a4ac r5:00000003 r4:c79dbc00 > [ 9.280000] [] (vfs_write+0x0/0x18c) from [] (sys_write+0x48/0x74) > [ 9.280000] r8:0001a4ac r7:00000003 r6:c79dbc00 r5:00000000 r4:00000000 > [ 9.280000] [] (sys_write+0x0/0x74) from [] (ret_fast_syscall+0x0/0x38) > [ 9.280000] r8:c0034088 r7:00000004 r6:00000000 r5:00000003 r4:00000003 > It looks like a real problem. But the strange thing to me is that it's never been hit on my side. > Steven told me on irc that sleeping was not allowed in the console write > callback. Maybe this didn't show up earlier because not all clk > implementations sleep as mxs' does. > > I think the only possible fix is to do the clk_enable in the setup > callback instead of per-write. > > Will send a patch as follow up. > > Best regards > Uwe > > -- > Pengutronix e.K. | Uwe Kleine-K?nig | > Industrial Linux Solutions | http://www.pengutronix.de/ | > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel at lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel > -- Regards, Shawn