pcmcia resume 60 second hang. Re: [patch 00/69] -stable review



Hi!

Yeah, but the interesting one is this pair:

events/0 R running 0 4 1 (L-TLB)

sleep.sh D 0000014F 0 5798 5789 (NOTLB)
Call Trace:
[<c01d3c01>] kobject_uevent_env+0x3a1/0x4a0
[<c02d8509>] wait_for_completion+0x79/0xb0
[<c0116640>] default_wake_function+0x0/0x10
[<c0238a08>] _request_firmware+0x1c8/0x310
[<c0238bef>] request_firmware+0xf/0x20
[<e0a35d5d>] pcmcia_bus_match+0x28d/0x3c0 [pcmcia]
[<c02864a7>] netlink_broadcast+0x1f7/0x310
[<c0233d74>] driver_probe_device+0x34/0xc0
[<c02d79ee>] klist_next+0x4e/0xa0
[<c0233014>] bus_for_each_drv+0x44/0x70
[<c0233eba>] device_attach+0x7a/0x80
[<c0233e00>] __device_attach+0x0/0x10
[<c0232f56>] bus_attach_device+0x26/0x60
[<c0231d06>] device_add+0x5e6/0x6e0
[<c01d350f>] kobject_init+0x2f/0x50
[<e0a360f5>] pcmcia_device_add+0x185/0x220 [pcmcia]
[<e0a36261>] pcmcia_card_add+0xa1/0xc0 [pcmcia]
[<e0913900>] ti12xx_power_hook+0x180/0x1d0 [yenta_socket]
[<e0a36300>] ds_event+0x80/0xb0 [pcmcia]
[<e0967359>] send_event+0x39/0x70 [pcmcia_core]
[<e09677b6>] socket_insert+0x86/0xe0 [pcmcia_core]
[<e0967c2b>] pcmcia_socket_dev_resume+0x7b/0x90 [pcmcia_core]
[<c01e135f>] pci_device_resume+0x1f/0x60
[<c023815f>] resume_device+0x5f/0xf0

ie we have a deadlock because resume wants to do that firmware request,
but the event daemon is apparently spinning like mad.

And yes, request_firmware() has a "loading_timeout" in seconds. And
it's 60. So that explains your pause right there!

If someone does request_firmware from resume function... that's
bad. Resume function should be fixed. Pcmcia? ti12xx driver?

It might be some unfortunate interaction with process freezing (my
favorite whipping boy), but it could also be something else. I
suspect

Well. we'd like to present hardware in working state as soon as we
resume (if eth0 was there before resume, it should be there after
resume. not 3 seconds after resume); so if someone needs to load the
firmware, they should just store it in the kernel memory, and load it
during boot or during (very early) suspend.

Pavel
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/