Situation:
Porting one of brcm board to kernel 3.13-rc3
Problem:
kernel was hanging at one do_one_initcall
To figure out which init call, put prints in do_one_initcal function
diff --git a/init/main.c b/init/main.c
index febc511..dd9f5c1 100644
--- a/init/main.c
+++ b/init/main.c
@@ -88,6 +88,8 @@
#include
#endif
+extern void printascii(const char *);
+extern void printhex8(unsigned int);
static int kernel_init(void *);
char msgbuf[64];
+ printascii("func:");
+ printhex8(fn);
+ printascii("\n");
if (initcall_debug)
Output:
func:c0415524
System.map shows
c0415524 t customize_machine
arch/arm/kernel/setup.c:782:arch_initcall(customize_machine);
Function was calling machine_init.
Fixed in machine_init. It was an smc call to init L2 cache controller.
Porting one of brcm board to kernel 3.13-rc3
Problem:
kernel was hanging at one do_one_initcall
To figure out which init call, put prints in do_one_initcal function
diff --git a/init/main.c b/init/main.c
index febc511..dd9f5c1 100644
--- a/init/main.c
+++ b/init/main.c
@@ -88,6 +88,8 @@
#include
#endif
+extern void printascii(const char *);
+extern void printhex8(unsigned int);
static int kernel_init(void *);
@@ -693,6 +701,9 @@ int __init_or_module do_one_initcall(initcall_t fn)
int ret;char msgbuf[64];
+ printascii("func:");
+ printhex8(fn);
+ printascii("\n");
if (initcall_debug)
Output:
func:c0415524
System.map shows
c0415524 t customize_machine
arch/arm/kernel/setup.c:782:arch_initcall(customize_machine);
Function was calling machine_init.
Fixed in machine_init. It was an smc call to init L2 cache controller.
No comments:
Post a Comment