Glamo hang during initialization

Werner Almesberger werner at openmoko.org
Fri Mar 28 17:49:19 CET 2008


I'm observing relatively frequent hangs (about 5-20% of all boots) in
the Glamo driver's initialization. They occur after printing
in drivers/mfd/glamo/glamo-fb.c:glamofb_update_lcd_controller:411<7>leave:

In a successful boot, this would have been followed by
Console: switching to colour frame buffer device 80x58

The kernel hangs in drivers/mfd/glamo/glamo-fb.c:glamofb_cmd_mode:

                while (!glamofb_cmdq_empty(gfb))
                        yield();

Below is a stack trace. (jtag_use++;  /* ;-) */ )

Andy, does this ring any bells ?

- Werner

--------------------------------- Stack trace ---------------------------------

#5  0xc02b35e0 in yield () at kernel/sched.c:4750
No locals.
#6  0xc01a27d8 in glamofb_cmd_mode (gfb=0xc7c5f274, on=<value optimized out>) at drivers/mfd/glamo/glamo-fb.c:561
No locals.
#7  0xc01a28c0 in glamofb_set_par (info=0xc7c5f000) at drivers/mfd/glamo/glamo-fb.c:307
        glamo = (struct glamofb_handle *) 0xc7c17c18
        var = (struct fb_var_screeninfo *) 0xc7c5f008
#8  0xc0170f94 in fbcon_init (vc=0xc04b7a60, init=0) at drivers/video/console/fbcon.c:1200
        info = (struct fb_info *) 0xc7c5f000
        ops = (struct fbcon_ops *) 0xc7c95200
        svc = (struct vc_data *) 0xc04b7a60
        t = <value optimized out>
        p = (struct display *) 0xc03a853c
        logo = 1
        new_rows = 58
        new_cols = 80
        charcnt = <value optimized out>
        cap = 0
#9  0xc018e590 in visual_init (vc=0xc04b7a60, num=0, init=0) at drivers/char/vt.c:735
No locals.
#10 0xc01925e4 in bind_con_driver (csw=0xc02c2528, first=<value optimized out>, last=<value optimized out>, deflt=1) at drivers/char/vt.c:2985
        vc = (struct vc_data *) 0xc04b7a60
        owner = (struct module *) 0x0
        desc = 0xc032cd2c "frame buffer device"
        i = 0
        j = <value optimized out>
        k = 0
        retval = <value optimized out>
#11 0xc0192768 in take_over_console (csw=0xc7c17c18, first=-1070038904, last=-943621096, deflt=1) at drivers/char/vt.c:3477
        err = 0
#12 0xc0171118 in fbcon_takeover (show_logo=<value optimized out>) at drivers/video/console/fbcon.c:586
        err = <value optimized out>
        i = <value optimized out>
#13 0xc01718c0 in fbcon_event_notify (self=<value optimized out>, action=<value optimized out>, data=<value optimized out>) at drivers/video/console/fbcon.c:3138
        event = <value optimized out>
        info = (struct fb_info *) 0xc7c5f000
        mode = <value optimized out>
        con2fb = <value optimized out>
        caps = <value optimized out>
        ret = <value optimized out>
#14 0xc005f9d0 in notifier_call_chain (nl=<value optimized out>, val=3224928392, v=0xc7c17c18, nr_to_call=-2, nr_calls=0x0) at kernel/notifier.c:69
        ret = -1073350192
        nb = (struct notifier_block *) 0xc7c17c18
#15 0xc005fc8c in __blocking_notifier_call_chain (nh=0xc03746c0, val=5, v=0xc7c19e40, nr_to_call=-1, nr_calls=0x0) at kernel/notifier.c:267
        ret = -1070118784
#16 0xc005fcc4 in blocking_notifier_call_chain (nh=0xc7c17c18, val=3224928392, v=0xc7c17c18) at kernel/notifier.c:278
No locals.
#17 0xc0169a28 in fb_notifier_call_chain (val=3224928392, v=0xc7c17c18) at drivers/video/fb_notify.c:44
No locals.
#18 0xc016a8e0 in register_framebuffer (fb_info=0xc7c5f000) at drivers/video/fbmem.c:1415
        i = 0
        event = {info = 0xc7c5f000, data = 0xc0366cf0}
        mode = {name = 0x0, refresh = 72, xres = 480, yres = 640, pixclock = 40816, left_margin = 8, right_margin = 16, upper_margin = 2, lower_margin = 16, hsync_len = 8, vsync_len = 2, sync = 0, vmode = 0, flag = 32}
#19 0xc001d5b4 in glamofb_probe (pdev=0xc0379558) at drivers/mfd/glamo/glamo-fb.c:738
        rc = <value optimized out>
        fbinfo = (struct fb_info *) 0xc7c5f000
        glamofb = (struct glamofb_handle *) 0xc7c5f274
#20 0xc019da1c in platform_drv_probe (_dev=<value optimized out>) at drivers/base/platform.c:396
No locals.
#21 0xc019c26c in driver_probe_device (drv=0xc037a05c, dev=0xc0379560) at drivers/base/dd.c:121
        ret = <value optimized out>
#22 0xc019c47c in __driver_attach (dev=0xc0388088, data=0xc7c17c18) at drivers/base/dd.c:262
No locals.
#23 0xc019b5b0 in bus_for_each_dev (bus=<value optimized out>, start=<value optimized out>, data=0xc0388088, fn=0xc019c3fc <__driver_attach>) at drivers/base/bus.c:306
        i = {i_klist = 0xc03791b0, i_head = 0xc03791b0, i_cur = 0xc03795a8}
        error = 0
#24 0xc019c088 in driver_attach (drv=0xc7c17c18) at drivers/base/dd.c:281
No locals.
#25 0xc019b928 in bus_add_driver (drv=0xc037a05c) at drivers/base/bus.c:647
        bus = (struct bus_type *) 0xc0379118
        error = 0
        __func__ = "bus_add_driver"
#26 0xc019c750 in driver_register (drv=0xc037a05c) at drivers/base/driver.c:161
No locals.
#27 0xc019dcc8 in platform_driver_register (drv=<value optimized out>) at drivers/base/platform.c:455
No locals.
#28 0xc01a25ec in glamofb_init () at drivers/mfd/glamo/glamo-fb.c:809
No locals.
#29 0xc0008958 in kernel_init (unused=<value optimized out>) at init/main.c:681





More information about the openmoko-kernel mailing list