Bug 9996

Summary: Неправильный порядок загрузки cdc-acm и cdc-ether вешает систему
Product: Sisyphus Reporter: serpiph <serpiph>
Component: kernel-image-wks-smpAssignee: Konstantin A Lepikhov (L.A. Kostis) <lakostis>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: blocker    
Priority: P5 CC: mike, vsu
Version: unstable   
Hardware: all   
OS: Linux   
Attachments:
Description Flags
Error log when loading cdc-ether
none
Вывод lsusb -v
none
Вывод lsmod none

Description serpiph 2006-09-13 14:56:11 MSD
Есть телефон Nokia 6233. При подключении его к компьютеру через кабель USB пожет
повиснуть система. Поиск причины привёл к следующему:
1) Для работы телефона нужен модуль как минимум cdc-acm, возможно и cdc-ether.
2) система вешается из-за того, что при подключении телефона hotplug грузит
модули cdc-ether и cdc-acm в случайном порядке. Если сначала загрузится cdc-acm,
а потом cdc-ether, то проблем нет. Если сначала cdc-ether, а потом cdc-acm,
сразу после загрузки вылетает сообщение об обрушении модуля cdc-ether, далее
система становится нестабильной и в любой последующий момент вешается так
(обычно при загрузке программ, особенно X), что для выключения приходится жать
reset или снимать питаение компьютера.
3) Получается, что модуль cdc-ether для своей работы требует что-то от cdc-acm.
Возможное решение: в модуль cdc-ether жёстко прописать зависимость от cdc-acm. У
меня именно это ядро, возможно, такое есть и на других ядрах.

Немного касается этого ошибка #5841.
Steps to Reproduce:
1. Загрузить модуль cdc-ether
2. ПОдключить телефон
2. Загрузить X

Actual Results:  
Система вешается намертво.

Expected Results:  
Нормальная работа
Comment 1 Sergey Vlasov 2006-09-13 15:26:54 MSD
(In reply to comment #0)
> сразу после загрузки вылетает сообщение об обрушении модуля cdc-ether

Можно увидеть это сообщение?  Лучше, конечно, сохранить полный вывод dmesg, но
пойдёт и то, что записалось в логи.

Кроме того, представляет интерес вывод lsusb -v после подключения телефона.

> 3) Получается, что модуль cdc-ether для своей работы требует что-то от cdc-acm.

На самом деле это совершенно независимые драйверы, предназначенные для разных
устройств. Возможно, этот телефон выглядит на шине USB как-то странно (впервые
слышу, чтобы для телефона загружался модуль cdc-ether).

> Немного касается этого ошибка #5841.

Это несколько другая ситуация - там падал именно модуль cdc-acm, без всякого
cdc-ether, причём это проявлялось только на устройствах, обладающих некоторыми
особенностями. В любом случае та ошибка вроде бы уже давно исправлена.

В качестве временного обхода проблемы можно вписать cdc-ether в
/etc/hotplug/blacklist, чтобы этот модуль не загружался автоматически.
Comment 2 serpiph 2006-09-13 23:04:58 MSD
Created attachment 1627 [details]
Error log when loading cdc-ether

Так, попытка номер 2. Сейчас, похоже, выяснилось, что падает модуль cdc-ether
без какого-либо влияния со стороны cdc-acm. Сейчас утащил cdc-ether.ko прочь,
подключил телефон и нормально вышел в инет. В аттаче прикладываю два куска лога
падений, которые удалось найти. Как бы его заблокировать со стороны hotplug?
Что-то не могу. Занёс в blacklist, но не помогает. Возможно, падение из-за
другого модуля, rndis_host, который дополнительно тащит cdc-ether.
Comment 3 serpiph 2006-09-13 23:13:03 MSD
Created attachment 1628 [details]
Вывод lsusb -v

Похоже, я погорячился насчёт cdc-acm. Он, скорее всего, невиновен.

Главное начинается отсюда:
Bus 002 Device 005: ID 0421:0491 Nokia Mobile Phones
Comment 4 serpiph 2006-09-13 23:17:17 MSD
Created attachment 1629 [details]
Вывод lsmod

В данном аттачменте приведён вывод lsmod БЕЗ загрузки модуля cdc-ether и
rndis-host со всеми другими:
Sep 13 22:57:41 mobile-epiphanov insmod: insmod:
/lib/modules/2.6.16-wks26-smp-alt8/kernel/drivers/usb/net/cdc_ether.ko: No such
file or directory
Sep 13 22:57:41 mobile-epiphanov insmod: insmod: insmod rndis_host failed
Sep 13 22:57:41 mobile-epiphanov usb.agent[10936]: ... can't load module
rndis_host
Sep 13 22:57:41 mobile-epiphanov usb.agent[10936]: missing kernel or user mode
driver rndis_host
Comment 5 Sergey Vlasov 2006-09-14 12:30:38 MSD
(In reply to comment #2)
> Возможно, падение из-за другого модуля, rndis_host, который дополнительно
тащит cdc-ether.

Да, похоже на это - у этого телефона есть интерфейс 02/02/ff, который как раз
соответствует модулю rndis_host.  Получается, что в blacklist надо заносить не
cdc-ether, а rndis_host.
Comment 6 Sergey Vlasov 2006-09-25 22:30:51 MSD
Похоже, rndis_host остался сломан даже в 2.6.18:

http://bugzilla.kernel.org/show_bug.cgi?id=7201
Comment 7 Evgenii Terechkov 2007-03-09 00:27:04 MSK
(In reply to comment #6)
> Похоже, rndis_host остался сломан даже в 2.6.18:
> http://bugzilla.kernel.org/show_bug.cgi?id=7201

Да, я тоже столкнулся на 2.6.18-std-smp-alt4.

Может, вот это как-то поможет тому, кто в этом больше меня понимает:
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=228231
Comment 8 Sergey Vlasov 2007-03-10 18:14:48 MSK
В kernel-image-std-{smp,pae}-2.6.18-alt5 эта проблема должна быть исправлена;
когда исправление доберётся до ядра wks - не знаю.
Comment 9 Konstantin A Lepikhov (L.A. Kostis) 2008-08-21 11:12:05 MSD
Automagically fixed due wks RIP in Sisyphus.
Comment 10 Michael Shigorin 2008-08-22 11:06:51 MSD
"due to" :) (и IMHO тогда WORKSFORME)