用户操作
[即时聊天] [发私信] [加为好友]
fudan_abcID:fudan_abc
213686次访问,排名326(-1)好友0人,关注者38
fudan_abc的文章
原创 226 篇
翻译 0 篇
转载 0 篇
评论 326 篇
最近评论
yzdai:知道了,是SCSI设备号,CH,...等
yzdai:粗过了一遍.很棒很棒是不用多说.有些调用例就更好了.不是fs而是系统的调用例,比如禁止/允许USB/SCSI端口或设备,或取参数.还有漏掉的图.
zlzdsp或楼主有WORD/PDF请发一下或放在CSDN上.
"...,比如/dev/sda,然后读写这个文件就可以了"是对的.
"没有命令界面"是说没有console,要在自启动文件里自动运行应用程序.那也一样.<……
yzdai:粗过了一遍.很棒很棒是不用多说.有些调用例就更好了.不是fs而是系统的调用例,比如禁止/允许USB/SCSI端口或设备,或取参数.还有漏掉的图.
zlzdsp或楼主有WORD/PDF请发一下或放在CSDN上.
"...,比如/dev/sda,然后读写这个文件就可以了"是对的.
"没有命令界面"是说没有console,要在自启动文件里自动运行应用程序.那也一样.<……
yzdai:在过度疲劳的工作中看到楼主的文章,失笑了多回了.
虽然没太懂,也没来得及看完.我借助它解决了SCSI 设备号固定于硬端口的问题.
赞一个: 是金子总是要发光的.
yzdai:sd 2:0:0:0: Attached scsi removable disk sda
请问上面的 2:0:0:0 的含义?
文章分类
收藏
    相册
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky

    原创 内核中的死锁问题--当UHCI遇上OHCI收藏

    新一篇: 闲谈NP | 旧一篇: Linux那些事儿之我是EHCI(4) data structure of ehci driver and device

    上次我上网查资料,突然弹出来一个网页,很黄很暴力,和张殊凡小朋友一样,我赶紧给关了.不过,从此……我天天上网查资料.今天我就给大家介绍一下我的成果.

    比如有一个网站叫做bugzilla.kernel.org,这是一个Linux hacker云集的网站.
    这个网站用于汇报Linux内核的那些bug,每当看到这些bug,Linux黑客们就采用各种手段去解决它,包括暴力手段.
    2007年的那个枫叶飘零的晚秋,一个瑞典人描述了他所遇到的一个bug.这个bug编号为9335,关于它的更多细节可以在下面这个link中看到.
    http://bugzilla.kernel.org/show_bug.cgi?id=9335
    当时他是这样描述的:
    Most recent kernel where this bug did not occur: 2.6.23
    Distribution: Debian
    Hardware Environment: Thinkpad R60, Intel Core 2 Duo
    Software Environment: x86_64 kernel, XFS, X.org, KDE.
    Problem Description:
     
    When using the system for some time, usually at most a few hours, it suddenly hangs completely, the screen goes black, and it can only be reset with the power switch. The fan is still spinning however and the system seems to generate heat as if it were doing something CPU-intensive.
     
    This happens consistently but at seemingly random times. It's a desktop system, used for some browsing and e-mail mostly.
    他说他的系统用着用着就会挂起.后来经高人指点,他开启了NMI watchdog.于是这次能够在发生异常的时候打印出oops信息来.下面我们就来从这个oops信息找出问题的根源.
    netconsole: network logging started
    NMI Watchdog detected LOCKUP on CPU 0
    CPU 0
    Modules linked in: netconsole configfs i915 drm rfcomm l2cap xfrm_user xfrm4_tunnel af_key xfrm4_mode_tunnel nfsd exportfs autofs4 cpufreq_conservative cpufreq_userspace cpufreq_stats cpufreq_powersave rpcsec_gss_krb5 auth_rpcgss tunnel4 ipcomp nfs esp4 lockd ah4 nfs_acl sunrpc deflate zlib_deflate twofish_x86_64 twofish_common camellia serpent blowfish des_generic xcbc sha1_generic crypto_null hmac crypto_hash ppp_async crc_ccitt fuse ipv6 ppp_generic nls_utf8 slhc ntfs xfs pl2303 option usbserial kqemu coretemp cpufreq_ondemand acpi_cpufreq freq_table snd_seq_dummy snd_seq_oss snd_seq_midi snd_rawmidi snd_seq_midi_event snd_seq snd_seq_device arc4 ecb ohci_hcd snd_hda_intel snd_pcm_oss snd_mixer_oss iwl3945 snd_pcm pcmcia snd_timer firmware_class snd thinkpad_acpi mousedev mac80211 hci_usb soundcore hwmon serio_raw snd_page_alloc bluetooth video backlight output yenta_socket rsrc_nonstatic pcmcia_core button i2c_i801 cfg80211 pcspkr iTCO_wdt nvram rtc psmouse evdev ext3 jbd mbcache sha256_generic aes_x86_64 aes_generic cbc blkcipher dm_crypt dm_mirror dm_snapshot dm_mod firewire_ohci firewire_core crc_itu_t uhci_hcd ehci_hcd usbcore tg3 sr_mod cdrom sd_mod thermal processor fan
    Pid: 0, comm: swapper Not tainted 2.6.24-rc2-melech #3
    RIP: 0010:[<ffffffff804876c9>] [<ffffffff804876c9>] _spin_lock+0x59/0x70
    RSP: 0018:ffffffff805ecc18 EFLAGS: 00000002
    RAX: 0000000000000001 RBX: ffffffff8807afd0 RCX: ffff81000113c8b8
    RDX: 0000000000020004 RSI: ffff810004af0028 RDI: 0000000000000001
    RBP: ffff81000427cd48 R08: ffff810005a713e0 R09: 00000000ffffff8d
    R10: 0000000000000000 R11: ffff810003add80c R12: ffff8100042e2780
    R13: ffff810004af0028 R14: ffff81000427cc00 R15: ffff8100042e27b0
    FS: 0000000000000000(0000) GS:ffffffff80591000(0000) knlGS:0000000000000000
    CS: 0010 DS: 0018 ES: 0018 CR0: 000000008005003b
    CR2: 00002ae0240a2a08 CR3: 000000000b81a000 CR4: 00000000000006e0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
    Process swapper (pid: 0, threadinfo ffffffff805a2000, task ffffffff8055b340)
    Stack: ffff810004af0028 ffffffff88058d60 ffff81000427cdd0 ffffffff8808cbea
     00000000042a9940 00000000030007ff ffff8100042e2780 ffff8100042a9ac0
     ffff810004af0028 ffff810005a713e8 ffff81000427cd48 ffffffff8808d15a
    Call Trace:
     <IRQ> [<ffffffff88058d60>] :usbcore:usb_hcd_unlink_urb_from_ep+0x10/0x40
     [<ffffffff8808cbea>] :uhci_hcd:uhci_giveback_urb+0x9a/0x220
     [<ffffffff8808d15a>] :uhci_hcd:uhci_scan_schedule+0x29a/0x990
     [<ffffffff8808f77e>] :uhci_hcd:uhci_irq+0xbe/0x1a0
     [<ffffffff880591ed>] :usbcore:usb_hcd_irq+0x2d/0x60
     [<ffffffff802752b4>] handle_IRQ_event+0x34/0x70
     [<ffffffff80276add>] handle_fasteoi_irq+0x8d/0x110
     [<ffffffff8020f9db>] do_IRQ+0x7b/0x100
     [<ffffffff8020c921>] ret_from_intr+0x0/0xa
     [<ffffffff8048768e>] _spin_lock+0x1e/0x70
     [<ffffffff88058d60>] :usbcore:usb_hcd_unlink_urb_from_ep+0x10/0x40
     [<ffffffff882d363b>] :ohci_hcd:finish_urb+0x5b/0xe0
     [<ffffffff882d37ae>] :ohci_hcd:takeback_td+0xee/0x110
     [<ffffffff882d38ac>] :ohci_hcd:dl_done_list+0xdc/0x170
     [<ffffffff882d6452>] :ohci_hcd:ohci_irq+0x1e2/0x370
     [<ffffffff880591ed>] :usbcore:usb_hcd_irq+0x2d/0x60
     [<ffffffff802752b4>] handle_IRQ_event+0x34/0x70
     [<ffffffff80276add>] handle_fasteoi_irq+0x8d/0x110
     [<ffffffff8020f9db>] do_IRQ+0x7b/0x100
     [<ffffffff8020c921>] ret_from_intr+0x0/0xa
     <EOI> [<ffffffff880052c0>] :processor:acpi_processor_idle+0x2e0/0x4c0
     [<ffffffff880052bc>] :processor:acpi_processor_idle+0x2dc/0x4c0
     [<ffffffff88004fe0>] :processor:acpi_processor_idle+0x0/0x4c0
     [<ffffffff8020af50>] default_idle+0x0/0x40
     [<ffffffff8020aff7>] cpu_idle+0x67/0xd0
     [<ffffffff805aabba>] start_kernel+0x2aa/0x330
     [<ffffffff805aa117>] _sinittext+0x117/0x120
     
     
    Code: 8b 03 85 c0 7e f1 eb a3 e8 ba e4 ff ff eb d4 0f 1f 84 00 00
    Kernel panic - not syncing: Aiee, killing interrupt handler!
    看到RIP的位置在_spin_lock,一个敏感的男人的第一反应就是死锁.没错,这就是个死锁问题.
    我们看到这其中牵涉到的模块有usbcore,ohci_hcd,以及uhci_hcd.我们注意到函数调用栈里面有两个usb_hcd_unlink_urb_from_ep,这个函数来自drivers/usb/core/hcd.c:
       1096 /**
       1097 * usb_hcd_unlink_urb_from_ep - remove an URB from its endpoint queue
       1098 * @hcd: host controller to which @urb was submitted
       1099 * @urb: URB being unlinked
       1100 *
       1101 * Host controller drivers should call this routine before calling
       1102 * usb_hcd_giveback_urb(). The HCD's private spinlock must be held and
       1103 * interrupts must be disabled. The actions carried out here are required
       1104 * for URB completion.
       1105 */
       1106 void usb_hcd_unlink_urb_from_ep(struct usb_hcd *hcd, struct urb *urb)
       1107 {
       1108         /* clear all state linking urb to this dev (and hcd) */
       1109         spin_lock(&hcd_urb_list_lock);
       1110         list_del_init(&urb->urb_list);
       1111         spin_unlock(&hcd_urb_list_lock);
       1112 }
    这里的确用到了spin_lock,而这把锁就是hcd_urb_list_lock.那么是否说明这个问题就已经归结为关于hcd_urb_list_lockdeadlock?还有待进一步考证.
    此时我们还注意到,函数堆栈里还有两个很特别的函数,uhci_irqohci_irq. 即使是十三岁的张殊凡小朋友都能从这两个函数的名字判断得出,这两个函数分别是uhci主机控制器的中断服务函数和ohci主机控制器的中断服务函数.而仔细看这个堆栈,我们不难得出这样的结论,首先ohci产生了中断,ohci_irq被调用,但当它正在执行的时候,uhci的中断发生了,于是uhcicpu抢了过去,于是uhci_irq也被调用.
    然而问题在于甭管ohci_irq还是uhci_irq,最后都会调用usb_hcd_unlink_urb_from_ep,而这个函数又会调用spin_lock去获取hcd_urb_list_lock.巧的是当uhcicpu的时候,ohci已经获得了这把锁,并且还没来得及释放.以前我说信号量像北京户口,你占了一个名额我就少了一个机会,而这里不是信号量,是自旋锁,如果要把自旋锁打个比方,那么我把它比作刘涛,很多人YY刘涛,可是她嫁给了200亿身价的王柯,做一个最极端的假设,假设你有100亿,而且你也幻想得到刘涛,那么从法律上来讲,除非刘涛就是下一个李湘,即除非王柯把她甩了.
    而法律应用到这个案例上来,就是说,除非ohci_irq这边甩了hcd_urb_list_lock,否则uhci_irq那边就甭想得到.而自旋锁更绝的地方在于,如果获得不了锁,cpu就不停的自旋,它也不睡眠也不干别的,就好比高衙内得不到林冲的老婆,亦酷似西门大官人得不到潘金莲,这时他们仿佛丢了魂魄,完全陷入其中,似乎就不能活了一样,除非违反法律,除非做掉林冲,除非做掉武大郎.所以,这就是一个彻底的死锁问题,要破除这个很的死锁,只能用很暴力的方法.
    这个充满暴力的方法就是把中断彻底关掉,spin_lock()换成spin_lock_irqsave(),同时把spin_unlock()换成spin_unlock_irqrestore()就可以.spin_lock_irqsave()spin_lock()的加强版,它就是在获得spinlock之前,先关掉本处理器的中断.LDD3中的话说就是:
    spin_lock_irqsave disables interrupts (on the local processor only) before taking the spinlock.
    这样就使得当我ohci_irq()调用到了usb_hcd_unlink_urb_from_ep()并且进一步,获取了hcd_urb_list_lock之后,在我没有释放它之前,根本就不会允许本cpu再接受别的中断,任你uhci如何呐喊,如何愤怒,cpu就是不理你,摆出一幅九阳真经中描述的姿态来:他狂由他狂,清风拂山岗.他横任他横,明月照大江.
    等到cpu愿意响应uhciirq,已然是在spin_unlock_irqrestore()之后.ohci这边已经把锁释放了,它挥一挥衣袖,不带走一片云彩.在这种情况下,uhci要获得就让他去获得,天要下雨,娘要嫁人,随它去吧.
    以上就是对这个bug的分析以及解决方案.以上bug存在于2.6.24-rc2和之前的内核中.一个月之后,Alan Stern大侠提交了一个patch以解决这个问题,不过他的解决方法和以上说的略有不同,他不仅仅是让usb_hcd_unlink_urb_from_ep()内部关中断,他在注册中断服务函数的时候使用了IRQF_DISABLED这个flag,使得ohci_irq/uhci_irq/ehci_irq这些中断服务函数函数执行的整个过程中都是关中断的.这样做当然会引发一些争议,有人说它很好很强大,有人说它很黄很暴力,不过它是否对系统性能有比较大的影响目前还很难说,让我们骑驴看唱本走着瞧.

    发表于 @ 2008年01月17日 15:47:00|评论(loading...)|编辑

    新一篇: 闲谈NP | 旧一篇: Linux那些事儿之我是EHCI(4) data structure of ehci driver and device

    评论

    #Druider 发表于2008-01-21 10:25:57  IP: 211.157.41.*
    文章写的不错,不过,那很x很xx开玩笑也就罢了,把十三岁小女孩的名字都写出来,而且不止一次,不觉得有点过分么?即使你想嘲弄的是CCTV,但也不需要小女孩为你的嘲弄做出牺牲吧?
    现在越来越多的群体攻击弱者,叹。

    #zlzdsp 发表于2008-01-21 10:31:05  IP: 208.22.104.*
    这些年来中国人的生活中充满了很黄、很暴力的东西,要不那13岁的小朋友怎么可能产生这样发自肺腑地呐喊呢。

    我恍然大悟:就连远离人间烟火的操做系统,它都不能算是清白的,楼主对于Dead Lock的诠释,揭开了这一黑幕。佩服!哈哈
    #zlzdsp 发表于2008-01-21 10:48:04  IP: 208.22.104.*
    楼上Druider大人一定是个很敏感的或者说很会较真的网友。

    估计你也知道,现在随便一个搜索引擎去找十三岁小女孩的名字,得到的都会是海量的文章。 针对小女孩本人进行攻击的文章确实存在,也是应该鄙视的。
    但是对于本文对于人名的引用,很显然并不属于你所说的“嘲弄”、“攻击”这样的范畴。最多能算作是一种社会现象的调侃,但我相信绝非恶意的。
    事到如今,张姝凡这三个字已经不仅仅承载这个13岁小女孩的姓名。。。还承载着更多的内容。。。 Druider你要叹也只能叹CCTV太CCTV了。

    如果你能有心多看看博主的文章,了解博主的行文风格,应该会理解博主绝对不能算是攻击弱者的博客。
    #Druider 发表于2008-01-22 15:29:56  IP: 211.157.41.*
    楼上的说得没错,我相信博主同志绝对不是有意,我也相信博主的人品。一个能坐下来静心学习的年轻人,从某个侧面能证明自己是个好同志。
    我也相信,博主和广大的无厘头青年们,都是因为这个词的搞笑构成而被吸引,从而去参与到传播热潮中去的。
    然而,我要说的是,本质的不邪恶并不代表其做事的绝对不邪恶!一个好人,做了不好的事情,是需要警醒的,而不是一句“调侃”就能给自己开脱。
    当然,邪恶这两个字可能说得严重了些,充其量,可能也就是不负责任的“调侃”罢了。但请注意:不负责任!
    如果你要说,这是网络ei,别太当真。那么,我也只能说你对网络没有爱,笑。
    当你在各bbs上各博客上开心调侃的时候,有没有想过那个比你更弱势的弱势个体(小姑娘)的处境?有没有想过自己也已经身处被煽动起来的不负责任的群体当中?
    要知:伤害是客观存在的,即使你是无意识的。而且这种伤害是无意义的!

    好吧,是我的错,这里是学习的地方,被我给拉跑题了。只是,看着别扭,有点失望,多嘴一句罢了。
    #albcamus 发表于2008-01-22 18:31:49  IP: 61.148.56.*
    >> 这里是学习的地方,被我给拉跑题了。

    是这样的。 还是赶紧学习吧, 不然浪费楼主的好文档啊
    #hcd007 发表于2008-02-18 16:53:24  IP: 218.17.1.*
    好同志,好文章.
    当linux遇上娱乐,那真不是吹的.
    很好很精彩.
    #hcd007 发表于2008-02-18 17:50:02  IP: 218.17.1.*
    最近我在调试linux驱动程序时也遇到过类似的问题,到现在还找不到解决方法,
    请博主帮忙看看,十分感谢!

    出错的地方在i2c转串口(SC16IS740)的驱动程序里,该模块申请了一个IRQ中断,
    中断处理函数是serial_sc16is7_interrupt(),在这个函数里
    要调用i2c-core模块里的i2c_smbus_read_byte_data()函数读I2C总线,
    但这时系统就panic掉了。

    内核版本是2.6.21,下面是出错信息。
    ---------------------------------------------------------
    <3>BUG: scheduling while atomic: swapper/0x00010000/0
    BUG: scheduling while atomic: swapper/0x00010000/0
    <3>bad: scheduling from the idle thread!
    bad: scheduling from the idle thread!
    <1>Unable to handle kernel NULL pointer dereference at virtual address 00000000
    Unable to handle kernel NULL pointer dereference at virtual address 00000000
    <1>pgd = c0004000
    pgd = c0004000
    <1>[00000000] *pgd=00000000[00000000] *pgd=00000000

    Internal error: Oops: 17 [#1]
    Internal error: Oops: 17 [#1]
    Modules linked in:Modules linked in: nmeapipe nmeapipe gtspmdev gtspmdev

    CPU: 0
    CPU: 0
    PC is at dequeue_task+0xc/0x84
    PC is at dequeue_task+0xc/0x84
    LR is at deactivate_task+0x34/0x40
    LR is at deactivate_task+0x34/0x40
    pc : [<bf06633c>] lr : [<bf0666c0>] Not tainted
    sp : c0009cec ip : c0009d00 fp : c0009cfc
    pc : [<bf06633c>] lr : [<bf0666c0>] Not tainted
    sp : c0009cec ip : c0009d00 fp : c0009cfc
    r10: 00000005 r9 : b9a0f85d r8 : c00129b8
    r10: 00000005 r9 : b9a0f85d r8 : c00
    #hcd007 发表于2008-02-18 17:53:55  IP: 218.17.1.*
    r7 : 00000002 r6 : c00129b8 r5 : c0008000 r4 : c00129b8
    r7 : 00000002 r6 : c00129b8 r5 : c0008000 r4 : c00129b8
    r3 : 00000080 r2 : 00000080 r1 : 00000000 r0 : c00129b8
    r3 : 00000080 r2 : 00000080 r1 : 00000000 r0 : c00129b8
    Flags: nZCvFlags: nZCv IRQs off FIQs on Mode SVC_32 Segment kernel
    IRQs off FIQs on Mode SVC_32 Segment kernel
    Control: 317F
    Control: 317F
    Table: 103C8000 DAC: 00000017
    Table: 103C8000 DAC: 00000017
    Process swapper (pid: 0, stack limit = 0xc0008250)
    Process swapper (pid: 0, stack limit = 0xc0008250)
    Stack: (0xc0009cec to 0xc000a000)
    Stack: (0xc0009cec to 0xc000a000)
    9ce0: 9ce0: c00129b8 c00129b8 c0009d10 c0009d10 c0009d00 c0009d00 bf0666c0 bf0666c0 bf066340 bf066340

    9d00: 9d00: 00000005 00000005 c0009d48 c0009d48 c0009d14 c0009d14 bf1f2410 bf1f2410 bf06669c bf06669c c00129f4 c00129f4 c0012ac4 c0012ac4 01171ecd 01171ecd

    9d20: 9d20: c0074058 c0074058 c0074054 c0074054 c00129b8 c00129b8 00000002 00000002 c0074034 c0074034 00000000 00000000 c0009e50 c0009e50 c0009d74 c0009d74

    9d40: 9d40: c0009d4c c0009d4c bf1f375c bf1f375c bf1f2270 bf1f2270 c0074058 c0074058 c0074058 c0074058 c00129b8 c00129b8 c0074034 c0074034 00000002 00000002

    9d60: 9d60: c0009db8 c0009db8 c0074054 c0074054 c0009d84 c0009d84 c0009d78 c0009d78 bf1f36d4 bf1f36d4 bf1f3710 bf1f3710 c0009da4 c0009da4 c0009d88
    #hcd007 发表于2008-02-18 17:55:07  IP: 218.17.1.*
    9d80: 9d80: bf165098 bf165098 bf1f36c4 bf1f36c4 00000000 00000000 c0009db8 c0009db8 00000000 00000000 00000002 00000002 c0009e40 c0009e40 c0009da8 c0009da8

    9da0: 9da0: bf165674 bf165674 bf165070 bf165070 c0074018 c0074018 c0074018 c0074018 00000000 00000000 00000001 00000001 0000004d 0000004d c0000001 c0000001

    9dc0: 9dc0: c0009df4 c0009df4 0001004d 0001004d bf060001 bf060001 c0009dd0 c0009dd0 c0009ddc c0009ddc bf067284 bf067284 bf06722c bf06722c 80000013 80000013

    9de0: 9de0: 00000000 00000000 00000000 00000000 00000024 00000024 0000000e 0000000e 00000001 00000001 c000c310 c000c310 c0009e1c c0009e1c c0009e08 c0009e08

    9e00: 9e00: bf067390 bf067390 bf067244 bf067244 00000000 00000000 c0074000 c0074000 c0009e30 c0009e30 c0009e20 c0009e20 00000010 00000010 c00455e0 c00455e0

    9e20: 9e20: c0045678 c0045678 00000000 00000000 c0045ab8 c0045ab8 00000001 00000001 000000ae 000000ae c0009e80 c0009e80 c0009e44 c0009e44 bf165a1c bf165a1c

    9e40: 9e40: bf165334 bf165334 00000010 00000010 00000002 00000002 c0009e50 c0009e50 bf0612c8 bf0612c8 c000c900 c000c900 00000024 00000024 c0009e88 c0009e88

    9e60: 9e60: c0009e6c c0009e6c bf058140 bf058140 bf06fa4c bf06fa4c ffffffff ffffffff fefe0000 fefe0000 c0009e94 c0009e94 c0009e84 c0009e84 bf167fb0 bf167fb0

    9e80: 9e80: bf1659e8 bf1659e8 00000000 00000000 c0009ea4 c0009ea4 c0009e98 c0009e98 bf150480 bf150480 bf167f88 bf167f88 c0009ed0 c0009ed0 c0009ea8 c0009ea8
    #hcd007 发表于2008-02-18 17:56:00  IP: 218.17.1.*
    9ea0: 9ea0: bf1506a4 bf1506a4 bf150470 bf150470 000000ae 000000ae c0198ec0 c0198ec0 00000000 00000000 00000000 00000000 000000ae 000000ae 0000000e 0000000e

    9ec0: 9ec0: c000c380 c000c380 c0009ef0 c0009ef0 c0009ed4 c0009ed4 bf08ae30 bf08ae30 bf150680 bf150680 c000eb80 c000eb80 000000ae 000000ae 000000ae 000000ae

    9ee0: 9ee0: c001d96c c001d96c c0009f08 c0009f08 c0009ef4 c0009ef4 bf08bffc bf08bffc bf08adfc bf08adfc c000eb80 c000eb80 00000001 00000001 c0009f3c c0009f3c

    9f00: 9f00: c0009f0c c0009f0c bf064a70 bf064a70 bf08bf8c bf08bf8c 00000000 00000000 fefce014 fefce014 c000c380 c000c380 0000000e 0000000e c0041310 c0041310

    9f20: 9f20: 00000000 00000000 00056424 00056424 54029252 54029252 000563bc 000563bc c0009f5c c0009f5c c0009f40 c0009f40 bf05813c bf05813c bf0648d4 bf0648d4

    9f40: 9f40: ffffffff ffffffff fefecb00 fefecb00 ffffffff ffffffff c0048e04 c0048e04 c0009fc0 c0009fc0 c0009f60 c0009f60 bf057424 bf057424 bf058108 bf058108

    9f60: 9f60: 00000000 00000000 c0030148 c0030148 c0008000 c0008000 60000013 60000013 c0008000 c0008000 bf061530 bf061530 c0013ae8 c0013ae8 c0048e04 c0048e04

    9f80: 9f80: 00056424 00056424 54029252 54029252 000563bc 000563bc c0009fc0 c0009fc0 c0009fa8 c0009fa8 c0009fa8 c0009fa8 bf058398 bf058398 bf058384 bf058384

    9fa0: 9fa0: 60000013 60000013 ffffffff ffffffff c0037c00 c0037c00 c002eea8 c002eea8 c000af28 c000af28 c0009fd0 c0009fd0 c0009fc4 c0009fc4 bf056c24 bf056c24
    #hcd007 发表于2008-02-18 17:57:05  IP: 218.17.1.*
    9fc0: 9fc0: bf058350 bf058350 c0009ff4 c0009ff4 c0009fd4 c0009fd4 bf040b18 bf040b18 bf056c10 bf056c10 bf040504 bf040504 c000af28 c000af28 0000317d 0000317d

    9fe0: 9fe0: c002f364 c002f364 c00137a4 c00137a4 00000000 00000000 c0009ff8 c0009ff8 00040070 00040070 bf0408ac bf0408ac 00000000 00000000 00000000 00000000

    Backtrace: Backtrace:

    [<bf066330>] [<bf066330>] (dequeue_task+0x0/0x84) (dequeue_task+0x0/0x84) from [<bf0666c0>] from [<bf0666c0>] (deactivate_task+0x34/0x40)
    (deactivate_task+0x34/0x40)
    r4 = C00129B8 r4 = C00129B8

    [<bf06668c>] [<bf06668c>] (deactivate_task+0x0/0x40) (deactivate_task+0x0/0x40) from [<bf1f2410>] from [<bf1f2410>] (schedule+0x1b0/0x744)
    (schedule+0x1b0/0x744)
    r4 = 00000005 r4 = 00000005

    [<bf1f2260>] [<bf1f2260>] (schedule+0x0/0x744) (schedule+0x0/0x744) from [<bf1f375c>] from [<bf1f375c>] (__mutex_lock_slowpath+0x5c/0x88)
    (__mutex_lock_slowpath+0x5c/0x88)
    [<bf1f3700>] [<bf1f3700>] (__mutex_lock_slowpath+0x0/0x88) (__mutex_lock_slowpath+0x0/0x88) from [<bf1f36d4>] from [<bf1f36d4>] (mutex_lock+0x20/0x28)
    (mutex_lock+0x20/0x28)
    r7 = C0074054 r7 = C0074054 r6 = C0009DB8 r6 = C0009DB8 r5 = 00000002 r5 = 00000002 r4 = C0074034
    r4 = C0074034
    [<bf1f36b4>] [<bf1f36b4>] (mutex_lock+0x0/0x28) (mutex_lock+0x0/0x28) from [<bf165098>] from
    #hcd007 发表于2008-02-18 17:59:04  IP: 218.17.1.*
    [<bf165098>] (i2c_transfer+0x38/0x64)
    (i2c_transfer+0x38/0x64)
    [<bf165060>] [<bf165060>] (i2c_transfer+0x0/0x64) (i2c_transfer+0x0/0x64) from [<bf165674>] from [<bf165674>] (i2c_smbus_xfer+0x350/0x464)
    (i2c_smbus_xfer+0x350/0x464)
    r7 = 00000002 r7 = 00000002 r6 = 00000000 r6 = 00000000 r5 = C0009DB8 r5 = C0009DB8 r4 = 00000000
    r4 = 00000000
    [<bf165324>] [<bf165324>] (i2c_smbus_xfer+0x0/0x464) (i2c_smbus_xfer+0x0/0x464) from [<bf165a1c>] from [<bf165a1c>] (i2c_smbus_read_byte_data+0x44/0x58)
    (i2c_smbus_read_byte_data+0x44/0x58)
    [<bf1659d8>] [<bf1659d8>] (i2c_smbus_read_byte_data+0x0/0x58) (i2c_smbus_read_byte_data+0x0/0x58) from [<bf167fb0>] from [<bf167fb0>] (Sc16is7xx_Read_Register+0x38/0x44)
    (Sc16is7xx_Read_Register+0x38/0x44)
    [<bf167f78>] [<bf167f78>] (Sc16is7xx_Read_Register+0x0/0x44) (Sc16is7xx_Read_Register+0x0/0x44) from [<bf150480>] from [<bf150480>] (serial_in+0x20/0x28)
    (serial_in+0x20/0x28)
    r4 = 00000000 r4 = 00000000

    [<bf150460>] [<bf150460>] (serial_in+0x0/0x28) (serial_in+0x0/0x28) from [<bf1506a4>] from [<bf1506a4>] (serial_sc16is7_interrupt+0x34/0xcc)
    (serial_sc16is7_interrupt+0x34/0xcc)
    [<bf150670>] [<bf150670>] (serial_sc16is7_interrupt+0x0/0xcc) (serial_sc16is7_interrupt+0x0/0xcc) from [<bf08ae30>] from [<bf08ae30>] (han
    #hcd007 发表于2008-02-18 18:00:24  IP: 218.17.1.*
    (handle_IRQ_event+0x44/0x80)
    (handle_IRQ_event+0x44/0x80)
    [<bf08adec>] [<bf08adec>] (handle_IRQ_event+0x0/0x80) (handle_IRQ_event+0x0/0x80) from [<bf08bffc>] from [<bf08bffc>] (handle_simple_irq+0x80/0xb4)
    (handle_simple_irq+0x80/0xb4)
    r7 = C001D96C r7 = C001D96C r6 = 000000AE r6 = 000000AE r5 = 000000AE r5 = 000000AE r4 = C000EB80
    r4 = C000EB80
    [<bf08bf7c>] [<bf08bf7c>] (handle_simple_irq+0x0/0xb4) (handle_simple_irq+0x0/0xb4) from [<bf064a70>] from [<bf064a70>] (gpio_irq_handler+0x1ac/0x234)
    (gpio_irq_handler+0x1ac/0x234)
    r5 = 00000001 r5 = 00000001 r4 = C000EB80 r4 = C000EB80

    [<bf0648c4>] [<bf0648c4>] (gpio_irq_handler+0x0/0x234) (gpio_irq_handler+0x0/0x234) from [<bf05813c>] from [<bf05813c>] (asm_do_IRQ+0x44/0x5c)
    (asm_do_IRQ+0x44/0x5c)
    [<bf0580f8>] [<bf0580f8>] (asm_do_IRQ+0x0/0x5c) (asm_do_IRQ+0x0/0x5c) from [<bf057424>] from [<bf057424>] (__irq_svc+0x24/0x80)
    (__irq_svc+0x24/0x80)
    r7 = C0048E04 r7 = C0048E04 r6 = FFFFFFFF r6 = FFFFFFFF r5 = FEFECB00 r5 = FEFECB00 r4 = FFFFFFFF
    r4 = FFFFFFFF
    [<bf058340>] [<bf058340>] (cpu_idle+0x0/0x7c) (cpu_idle+0x0/0x7c) from [<bf056c24>] from [<bf056c24>] (rest_init+0x24/0x2c)
    (rest_init+0x24/0x2c)
    r6 = C000AF28 r6 = C000AF28 r5 = C002EEA8 r5 = C002EEA8 r4 = C0037C00 r4 = C0037C00

    [<bf0
    #hcd007 发表于2008-02-18 18:01:35  IP: 218.17.1.*
    [<bf056c00>] [<bf056c00>] (rest_init+0x0/0x2c) (rest_init+0x0/0x2c) from [<bf040b18>] from [<bf040b18>] (start_kernel+0x27c/0x2e4)
    (start_kernel+0x27c/0x2e4)
    [<bf04089c>] [<bf04089c>] (start_kernel+0x0/0x2e4) (start_kernel+0x0/0x2e4) from [<00040070>] from [<00040070>] (0x40070)
    (0x40070)
    r6 = C00137A4 r6 = C00137A4 r5 = C002F364 r5 = C002F364 r4 = 0000317D r4 = 0000317D

    Code: Code: c0030148 c0030148 e1a0c00d e1a0c00d e92dd810 e92dd810 e24cb004 e24cb004 (e5913000) (e5913000)

    <0>Kernel panic - not syncing: Aiee, killing interrupt handler!
    Kernel panic - not syncing: Aiee, killing interrupt handler!
    ---------------------------------------------------------
    #hcd007 发表于2008-02-18 18:03:12  IP: 218.17.1.*
    不知道怎么贴代码,不能自动换行,只能分页了,难看了点.
    #hcd007 发表于2008-02-21 22:45:16  IP: 121.34.167.*
    弱问一句,Linux 2.6内核支持中断嵌套不?
    因为在中断服务程序里读写I2C总线时还会有中断发生,我怀疑是不是中断嵌套的问题。
    #albcamus 发表于2008-02-22 10:06:42  IP: 61.148.56.*
    AFAICT, 不支持。
    #阿霍 发表于2008-02-25 16:38:54  IP: 202.120.224.*
    很好,很强大....
    #harrylau 发表于2008-07-14 19:05:48  IP: 210.193.56.*
    已经很清楚的, 中断中 schedule 了

    <3>BUG: scheduling while atomic: swapper/0x00010000/0
    BUG: scheduling while atomic: swapper/0x00010000/0
    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © fudan_abc