Port-arm archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CURRENT broken on Raspberry Pi 2?



herbert%gojira.at@localhost ("Herbert J. Skuhra") writes:

>today I am getting a new panic:

>[   1.7517449] usb0 at dwctwo0: USB revision 2.0
>[   1.8817175] panic: uhub0 at usb0: NetBSD (0000) DWC2 root hub (0000), class 9/0, rev 2.00/1.00, addr 1
>[   1.8917219] specificdata_setspecific
>[   1.8917219] cpu0: Begin traceback...
>[   1.9024390] 0x811e7ee4: netbsd:db_panic+0x14
>[   1.9024390] 0x811e7efc: netbsd:vpanic+0x194
>[   1.9120679] 0x811e7f14: netbsd:snprintf
>[   1.9120679] 0x811e7f5c: netbsd:tvtohz
>[   1.9120679] 0x811e7fac: netbsd:linux_workqueue_thread+0x54
>[   1.9233013] cpu0: End traceback...
>Undefined instruction 0xe7ffffff in kernel at 0x8001dc90 (LR 0x80375c50 SP 0x811


That's a crude bug in the USB host driver.

In dwc2_hcd.c a linux-style workqueue is used. The code for these
workqueue comes from drm2 support code in

sys/external/bsd/common/linux/linux_work.c

That code gets initialized when loading DRM in linux_workqueue_init(),
in particular the linux_workqueue_key is allocated and some DRM specific
workqueues are created. But without DRM in place, nothing is initialized.

The USB driver uses the same support code and creates such a workqueue
without the key ever been allocated. The linux_workqueue_thread then tries
to use that key which causes it to panic with "specificdata_setspecific".

The question is, why does it happen now.

The panic is raised when a key is used larger than all allocated keys.
So if any key has been allocated before dwc2_hcd.c, you don't see a panic,
but possibly two unrelated subsystems trash each others specificdata.

-- 
-- 
                                Michael van Elst
Internet: mlelstv%serpens.de@localhost
                                "A potential Snark may lurk in every tree."


Home | Main Index | Thread Index | Old Index