From: Wink Saville <wink@saville.com>
To: linux-kernel@vger.kernel.org
Subject: Debugging startup/frame buffer problem in 2.6.18
Date: Sat, 07 Oct 2006 10:27:32 -0700 [thread overview]
Message-ID: <4527E384.3010607@saville.com> (raw)
Hello,
I'm proceeding to debug the frame buffer problem I mentioned here, http://lkml.org/lkml/2006/10/5/22, I've added printk's and modified *_console_sem (see <Console output> & <Modifications> below) but I end up blind as debug output eventually stops. I then changed my kernel command line so it outputs to two consoles:
/boot/vmlinuz root=/dev/sda2 ro splash initcall_debug console=tty0 console=ttyS0,115200n8 loglevel=7
Still no output after trying to acquire the console sem. Anyway at this point it looks like I need to debug at a lower level. I was thinking of writing directly to the serial port or maybe there is a better choice?
Thanks,
Wink Saville
<Console output>
[ 40.267852] Calling initcall 0xffffffff8074eedc: fb_console_init+0x0/0x12c()
[ 40.275097] acquire_console_sem: drivers/video/console/fbcon.c:fb_console_init:3266
[ 40.282956] acquire_console_sem: GOT IT FOR drivers/video/console/fbcon.c:fb_console_init:3266
[ 40.282958] fb_register_client E
[ 40.282960] notifier_chain_register: E nl=ffffffff8069c9f8 n=ffffffff8069d070
[ 40.282962] notifier_chain_register: X nl=ffffffff8069c9f8 n=ffffffff8069d070
[ 40.282963] fb_register_client X
[ 40.282985] release_console_sem: drivers/video/console/fbcon.c:fb_console_init:3282
[ 40.320818] Calling initcall 0xffffffff8043ed31: nvidiafb_init+0x0/0x258()
[ 40.327889] nvidiafb_setup START
[ 40.331251] nvidiafb_probe START
[ 40.334604] ACPI: PCI Interrupt 0000:05:00.0[A] -> GSI 16 (level, low) -> IRQ 169
[ 40.342354] nvidiafb: Device ID: 10de0391
[ 40.359248] nvidiafb: CRTC0 analog found
[ 40.379285] nvidiafb: CRTC1 analog not found
[ 40.383684] nvidiafb: CRTC 0 appears to have a CRT attached
[ 40.389362] nvidiafb: Using CRT on CRTC 0
[ 40.393550] nvidia_set_fbinfo START
[ 40.397153] nvidia_set_fbinfo END
[ 40.400585] nvidiafb_check_var START
[ 40.404278] nvidiafb_check_var END
[ 40.407796] nvidia_save_vga START
[ 40.411308] nvidia_save_vga END
[ 40.414568] register_framebuffer: ENTER
[ 40.418520] register_framebuffer: num_registered_fb=1
[ 40.423710] register_framebuffer: call fb_var_to_videomode
[ 40.429306] register_framebuffer: call fb_add_videomode
[ 40.434640] register_framebuffer: call fb_notifier_call_chain
[ 40.440495] fb_notifier_call_chain E
[ 40.444187] notifier_call_chain: E nl=ffffffff8069c9f8 val=0x5 v=ffff81007ff1fcd0
[ 40.451872] notifier_call_chain: notifier_call nb=ffffffff8069d070 val=0x5 v=ffff81007ff1fcd0
[ 40.460598] fbcon_event_notify: E notifier_block=ffffffff8069d070 action=0x5 data=ffff81007ff1fcd0
[ 40.469756] fbcon_fb_registerd: -1 E idx=0
[ 40.473968] fbcon_fb_registerd: toploop i=0
[ 40.478307] fbcon_fb_registerd: info_idx = idx = 0 break
[ 40.482291] notifier_call_chain: E nl=ffffffff80671d48 val=0xc v=ffff81007ff58ef8
[ 40.482293] notifier_call_chain: notifier_call nb=ffffffff8067b590 val=0xc v=ffff81007ff58ef8
[ 40.482296] notifier_call_chain: notifier_call ret=0x0 nb=ffffffff8067b590 val=0xc v=ffff81007ff58ef8
[ 40.482298] notifier_call_chain: X ret=0x0 nl=ffffffff80671d48 val=0xc v=ffff81007ff58ef8
[ 40.482300] notifier_call_chain: E nl=ffffffff80671d48 val=0x5 v=ffff81007ff58eb8
[ 40.482302] notifier_call_chain: notifier_call nb=ffffffff8067b590 val=0x5 v=ffff81007ff58eb8
[ 40.482305] notifier_call_chain: notifier_call ret=0x0 nb=ffffffff8067b590 val=0x5 v=ffff81007ff58eb8
[ 40.482307] notifier_call_chain: X ret=0x0 nl=ffffffff80671d48 val=0x5 v=ffff81007ff58eb8
[ 40.552088] fbcon_fb_registerd: info_idx=0 call fbcon_takeover(1)
[ 40.558286] fbcon_takeover: E show_logo=1
[ 40.562407] fbcon_takeover: call take_over_console show_logo=1
[ 40.568350] take_over_console: E csw=ffffffff805d8600 first=0, last=62, deflt=1
[ 40.575859] register_con_driver: acquire_console_sem
[ 40.580933] acquire_console_sem: drivers/char/vt.c:register_con_driver:3156
[ 40.588000] acquire_console_sem: GOT IT FOR drivers/char/vt.c:register_con_driver:3156
[ 40.588001] register_con_driver: acquire_console_sem GOT IT
[ 40.588484] notifier_call_chain: E nl=ffffffff80671d38 val=0x1 v=0000000000000000
[ 40.588486] notifier_call_chain: X ret=0x0 nl=ffffffff80671d38 val=0x1 v=0000000000000000
[ 40.588491] notifier_call_chain: E nl=ffffffff80677118 val=0x0 v=ffff81007f65a810
[ 40.588493] notifier_call_chain: X ret=0x0 nl=ffffffff80677118 val=0x0 v=ffff81007f65a810
[ 40.588499] notifier_call_chain: E nl=ffffffff80671d38 val=0x2 v=0000000000000000
[ 40.588501] notifier_call_chain: X ret=0x0 nl=ffffffff80671d38 val=0x2 v=0000000000000000
[ 40.588503] notifier_call_chain: E nl=ffffffff80671d38 val=0x1 v=0000000000000000
[ 40.588506] notifier_call_chain: X ret=0x0 nl=ffffffff80671d38 val=0x1 v=0000000000000000
[ 40.588507] register_con_driver: release_console_sem
[ 40.588509] release_console_sem: drivers/char/vt.c:register_con_driver:3211
[ 40.590594] notifier_call_chain: E nl=ffffffff80671d38 val=0x2 v=0000000000000000
[ 40.590596] notifier_call_chain: X ret=0x0 nl=ffffffff80671d38 val=0x2 v=0000000000000000
[ 40.678628] notifier_call_chain: E nl=ffffffff80677128 val=0x0 v=ffff81007f65b0c0
[ 40.678631] notifier_call_chain: X ret=0x0 nl=ffffffff80677128 val=0x0 v=ffff81007f65b0c0
[ 40.710263] take_over_console: call bind_con_driver csw=ffffffff805d8600 first=0, last=62, deflt=1
[ 40.719419] bind_con_driver: E
[ 40.722586] bind_con_driver: acquire_console_sem
[ 40.727319] acquire_console_sem: drivers/char/vt.c:bind_con_driver:2742
</Console output>
<Modifications>
drivers/char/vt.c:
2727 static int bind_con_driver(const struct consw *csw, int first, int last,
2728 int deflt)
2729 {
2730 struct module *owner = csw->owner;
2731 const char *desc = NULL;
2732 struct con_driver *con_driver;
2733 int i, j = -1, k = -1, retval = -ENODEV;
2734
2735 printk("bind_con_driver: E\n");
2736 if (!try_module_get(owner)) {
2737 printk("bin_con_driver: err try_module_get\n");
2738 return -ENODEV;
2739 }
2740
2741 printk("bind_con_driver: acquire_console_sem\n");
2742 acquire_console_sem();
2743 printk("bind_con_driver: acquire_console_sem GOT IT\n");
kernel/printk.c:
752 void acquire_console_sem_real(void)
753 {
754 BUG_ON(in_interrupt());
755 if (console_suspended) {
756 down(&secondary_console_sem);
757 return;
758 }
759 down(&console_sem);
760 console_locked = 1;
761 console_may_schedule = 1;
762 }
763 EXPORT_SYMBOL(acquire_console_sem_real);
764
765 void acquire_console_sem_dbg(const char *file, const char *function, int line)
766 {
767 printk("acquire_console_sem: %s:%s:%d\n", file, function, line);
768 acquire_console_sem_real();
769 printk("acquire_console_sem: GOT IT FOR %s:%s:%d\n", file, function, line);
770 }
771 EXPORT_SYMBOL(acquire_console_sem_dbg);
772
include/linux/console.h:
125 #define acquire_console_sem() acquire_console_sem_dbg(__FILE__, __FUNCTION__, __LINE__)
126 #define try_acquire_console_sem() try_acquire_console_sem_dbg(__FILE__, __FUNCTION__, __LINE__)
127 #define release_console_sem() release_console_sem_dbg(__FILE__, __FUNCTION__, __LINE__)
</Modifications>
reply other threads:[~2006-10-07 17:27 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4527E384.3010607@saville.com \
--to=wink@saville.com \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.