On Thursday 21 March 2013 04:34 PM, Rajendra Nayak wrote: > clk inits on OMAP happen quite early, even before slab is available. > The dependency comes from the fact that the timer init code starts to > use clocks and hwmod and we need clocks to be initialized by then. > > There are various problems doing clk inits this early, one is, > not being able to do dynamic clk registrations and hence the > dependency on clk-private.h. The other is, inability to debug > early kernel crashes without enabling DEBUG_LL and earlyprintk. > > Doing early clk init also exposed another instance of a kernel > panic due to a BUG() when CONFIG_DEBUG_SLAB is enabled. > > [ 0.000000] Kernel BUG at c01174f8 [verbose debug info unavailable] > [ 0.000000] Internal error: Oops - BUG: 0 [#1] SMP ARM > [ 0.000000] Modules linked in: > [ 0.000000] CPU: 0 Not tainted (3.9.0-rc1-12179-g72d48f9 #6) > [ 0.000000] PC is at __kmalloc+0x1d4/0x248 > [ 0.000000] LR is at __clk_init+0x2e0/0x364 > [ 0.000000] pc : [<c01174f8>] lr : [<c0441f54>] psr: 600001d3 > [ 0.000000] sp : c076ff28 ip : c065cefc fp : c0441f54 > [ 0.000000] r10: 0000001c r9 : 000080d0 r8 : c076ffd4 > [ 0.000000] r7 : c074b578 r6 : c0794d88 r5 : 00000040 r4 : 00000000 > [ 0.000000] r3 : 00000000 r2 : c07cac70 r1 : 000080d0 r0 : 0000001c > [ 0.000000] Flags: nZCv IRQs off FIQs off Mode SVC_32 ISA ARM Segment kernel > [ 0.000000] Control: 10c53c7d Table: 8000404a DAC: 00000017 > [ 0.000000] Process swapper (pid: 0, stack limit = 0xc076e240) > [ 0.000000] Stack: (0xc076ff28 to 0xc0770000) > [ 0.000000] ff20: 22222222 c0794ec8 c06546e8 00000000 00000040 c0794d88 > [ 0.000000] ff40: c074b578 c076ffd4 c07951c8 c076e000 00000000 c0441f54 c074b578 c076ffd4 > [ 0.000000] ff60: c0793828 00000040 c0794d88 c074b578 c076ffd4 c0776900 c076e000 c07272ac > [ 0.000000] ff80: 2f800000 c074c968 c07f93d0 c0719780 c076ffa0 c076ff98 00000000 00000000 > [ 0.000000] ffa0: 00000000 00000000 00000000 00000001 c074cd6c c077b1ec 8000406a c0715724 > [ 0.000000] ffc0: 00000000 00000000 00000000 00000000 00000000 c074c968 10c53c7d c0776974 > [ 0.000000] ffe0: c074cd6c c077b1ec 8000406a 411fc092 00000000 80008074 00000000 00000000 > [ 0.000000] [<c01174f8>] (__kmalloc+0x1d4/0x248) from [<c0441f54>] (__clk_init+0x2e0/0x364) > [ 0.000000] [<c0441f54>] (__clk_init+0x2e0/0x364) from [<c07272ac>] (omap4xxx_clk_init+0xbc/0x140) > [ 0.000000] [<c07272ac>] (omap4xxx_clk_init+0xbc/0x140) from [<c0719780>] (setup_arch+0x15c/0x284) > [ 0.000000] [<c0719780>] (setup_arch+0x15c/0x284) from [<c0715724>] (start_kernel+0x7c/0x334) > [ 0.000000] [<c0715724>] (start_kernel+0x7c/0x334) from [<80008074>] (0x80008074) > [ 0.000000] Code: e5883004 e1a00006 e28dd00c e8bd8ff0 (e7f001f2) > [ 0.000000] ---[ end trace 1b75b31a2719ed1c ]--- > [ 0.000000] Kernel panic - not syncing: Attempted to kill the idle task! > > It was a know issue, that slab allocations would fail when common > clock core tries to cache parent pointers for mux clocks on OMAP, > and hence a patch 'clk: Allow late cache allocation for clk->parents, > commit 7975059d' was added to work this problem around. > A BUG() within kmalloc() with CONFIG_DEBUG_SLAB enabled was completely > overlooked causing this regression. > > More details on the issue reported can be found here, > http://www.mail-archive.com/linux-omap@xxxxxxxxxxxxxxx/msg85932.html > > With all these issues around clk inits happening way too early, it > makes sense to atleast move them to a point where dynamic memory > allocations are possible. So move them to a point just before the > timer code starts using clocks and hwmod. > > This should atleast pave way for clk inits on OMAP moving to dynamic > clock registrations instead of using the static macros defined in > clk-private.h. > > The issue with kernel panic while CONFIG_DEBUG_SLAB is enabled > was reported by Piotr Haber and Tony Lindgren and this patch > fixes the reported issue as well. > > Reported-by: Piotr Haber <phaber@xxxxxxxxxxxx> > Reported-by: Tony Lindgren <tony@xxxxxxxxxxx> > Signed-off-by: Rajendra Nayak <rnayak@xxxxxx> > --- > applies on 3.9-rc3 and tested on omap4 pandaES, omap3 beagle XM, > and am335x bone. > Acked-by: Santosh Shilimkar <santosh.shilimkar@xxxxxx> -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html