The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Отсоединение USB-устройств после спящего режима оказалось вызвано ошибкой в USB-стеке Linux

23.08.2013 22:50

Ситуация с отсоединением от шины устройств с интерфейсом USB 2.0 после возврата из спящего режима до сих пор списывалось на проблемы в аппаратной реализации средств управления питанием дешёвых USB-устройств. Проблему пытались решить через занесение устройств в чёрные списки и много критиковали низкое качество дешёвого оборудования. Сара Шарп (Sarah Sharp), разработавшая стек USB 3.0 для ядра Linux, пришла к выводу, что на самом деле указанные проблемы вызваны неверной интерпретацией спецификаций в реализации USB 2.0-стека в ядре Linux (USB-стек не предоставлял устройству должной задержки для восстановления своего состояния).

В настоящее время для решения проблемы уже подготовлен предварительный патч, после применения которого эффект отсоединения USB-устройства при использовании автоматического перевода в спящий режим пропадает. Ошибка проявляется только для контроллеров xHCI и не затрагивает EHCI.

  1. Главная ссылка к новости (https://plus.google.com/116960...)
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/37729-usb
Ключевые слова: usb, bug, sleep
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (60) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 22:56, 23/08/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Нелепая ошибка
     
     
  • 2.2, Аноним (-), 23:13, 23/08/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Потому про нее никто даже и не думал.
     
     
  • 3.10, Аноним (-), 00:01, 24/08/2013 [^] [^^] [^^^] [ответить]  
  • +26 +/
    > Потому про нее никто даже и не думал.

    Не думать - это _очень_ вредная привычка.

     
     
  • 4.55, mine (ok), 12:19, 24/08/2013 [^] [^^] [^^^] [ответить]  
  • –5 +/
    А думать - просто вредно.
     
     
  • 5.88, Аноним (-), 01:04, 25/08/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > А думать - просто вредно.

    Да уж, дарвинисты которые думать не желают - приносят пользу обществу. Путем самоустранения. За это мы им благодарны.

     
  • 4.75, AnonuS (?), 20:43, 24/08/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Не думать - это _очень_ вредная привычка.

    Надо у кодописателя спросить о чём он в тот момент думал, и почему именно так, а не иначе понял спецификацию и соотсветственно напорол чуши.


     
  • 3.35, Аноним (-), 03:47, 24/08/2013 [^] [^^] [^^^] [ответить]  
  • +8 +/
    > Потому про нее никто даже и не думал.

    А вы посмотрите как китаезные девайсы сделаны - там на спеки забито все что можно забить в принципе, если девайс после этого хоть немного трепыхается еще. Глюки? Да гуляй ты, дорогой пользователь, как заплачено - так и зафигачено! :)

     
     
  • 4.40, Аноним (-), 07:41, 24/08/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Теперь это нить жалоб на китайские поделки. В свое время пытался купить raid контролер и usb контролер. Все это счастье скорее не работало чем работало. А что-то другое сложно найти или цены совсем неадекватные.
     
  • 2.43, Аноним (-), 07:48, 24/08/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Простите вашего кода в ядре много? Почему вы этот нелепый баг раньше не нашли и не исправили?
     
  • 2.44, Флинт (?), 07:55, 24/08/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    да уж.. а сколько вопросов на форумах на эту тему было...
     

  • 1.3, Аноним (-), 23:14, 23/08/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    любят они, всё на железо списывать
     
     
  • 2.28, Сергей (??), 02:32, 24/08/2013 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Зато индусы всегда себя во всём обвиняют.
     
  • 2.30, Аноним (-), 03:40, 24/08/2013 [^] [^^] [^^^] [ответить]  
  • +4 +/
    >  любят они, всё на железо списывать

    И не то чтобы без причин.

     
     
     
    Часть нити удалена модератором

  • 4.82, Аноним (-), 23:38, 24/08/2013 [^] [^^] [^^^] [ответить]  
  • +3 +/
    А ваша система с usb вообще работает никаковски Скажем перепрошить девайс с usb... большой текст свёрнут, показать
     

  • 1.6, Аноним (-), 23:49, 23/08/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +7 +/
    Теперь, надеюсь, Саре понятны возмущения Линуса.
     
     
  • 2.8, Аноним (-), 00:01, 24/08/2013 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Вы про показывание факов производителям "кривого железа"?
     
     
  • 3.12, anonymous (??), 00:12, 24/08/2013 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Вообще фак адресовался любителям закрытых драйверов. Железо никто не ругал.
     
     
  • 4.13, Аноним (-), 00:14, 24/08/2013 [^] [^^] [^^^] [ответить]  
  • –7 +/
    > Железо никто не ругал.

    Дааааа?

    > Ситуация с отсоединением от шины устройств с интерфейсом USB 2.0 после возврата из спящего режима до сих пор списывалось на проблемы в аппаратной реализации средств управления питанием дешёвых USB-устройств. Проблему пытались решить через занесение устройств в чёрные списки и много критиковали низкое качество дешёвого оборудования.

     

     
     
  • 5.24, Аноним (-), 01:53, 24/08/2013 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Да.
     
  • 5.51, Andrey Mitrofanov (?), 09:33, 24/08/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >> Железо никто не ругал.
    > Дааааа?

    В отличие от тебя Т. не идiот и факать _видеокарту_ в видео-письме не будет.

     

  • 1.15, Алексей (??), 00:16, 24/08/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Кто бы ACPI в asus N*6 ноутах починил. (Высказывания из разряда: "сам сходи и почини" - оставьте при себе, я не настолько крут, что бы пилить kernel)
     
     
  • 2.16, Алексей (??), 00:18, 24/08/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    чтобы * конечно же
     
  • 2.17, Аноним (-), 00:25, 24/08/2013 [^] [^^] [^^^] [ответить]  
  • +6 +/
    > Высказывания из разряда: "сам сходи и почини" - оставьте при себе, я не настолько крут, что бы пилить kernel

    Даже разработчики ядра не всегда настолько круты, чтобы играть в угадайку "какие именно костыли в таблицах ACPI нужно наставить, чтобы все взлетело?"
    Правильный ответ знает только Asus, но не говорит никому, кроме мелкософта.

     
     
  • 3.18, Аноним (-), 00:37, 24/08/2013 [^] [^^] [^^^] [ответить]  
  • +/
    А что правда существует заговор производителей железа против открытых систем?
     
     
  • 4.20, Аноним (-), 01:08, 24/08/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Нудык
     
  • 4.48, Аноним (-), 08:38, 24/08/2013 [^] [^^] [^^^] [ответить]  
  • +3 +/
    http://getthefacts.ru/archives/17
     
  • 2.23, arisu (ok), 01:42, 24/08/2013 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > я не настолько крут, что бы пилить kernel

    заплати тому, кто умеет.

     
     
  • 3.45, Аноним (-), 08:06, 24/08/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Там не лучше. Недавно в хр начали pnp массово отваливаться и системы печати слетать. Кроме того, если каспера вовремя не снести, систему вообще обвалить может.
     
  • 2.37, Аноним (-), 03:55, 24/08/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Кто бы ACPI в asus N*6 ноутах починил.

    А вы баг то хоть написали? Или разработчики должны догадаться путем телепатии что он есть?

     
  • 2.105, Аноним (-), 13:50, 26/08/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Кто бы ACPI в asus N*6 ноутах починил. (Высказывания из разряда: "сам
    > сходи и почини" - оставьте при себе, я не настолько крут,
    > что бы пилить kernel)

    Это нельзя исправить, кривое железо. Инфа 100%.

     

  • 1.27, шип (?), 02:27, 24/08/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    ээээ.. это случайно не та проблема, которая в чипсетах z87 ревизии с1 проявлялась?
     
     
  • 2.33, Аноним (-), 03:45, 24/08/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > ээээ.. это случайно не та проблема, которая в чипсетах z87 ревизии с1
    > проявлялась?

    Не, это просто грубая лажа в реализации спеков. Увы, увы, мир неидеален.

     

  • 1.39, jOKer (ok), 07:27, 24/08/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    >неверной интерпретацией спецификаций

    Ну и что это за спецификация, которая допускает двойное (если не тройное!) толкование? ИМХО, спецификация (как и стандарты) по определению должна представлять _формальное_ описание параметров оборудования.

     
     
  • 2.42, Аноним (-), 07:47, 24/08/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Но ведь все люди пишут. В ПО баги. В железе баги. Спецификации плохие.
    У меня после выхода из спящего режима ничего не отваливалось на 2х компьютерах. Полагаю у разработчиков тоже.
     
     
  • 3.46, Аноним (-), 08:07, 24/08/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Но ведь все люди пишут. В ПО баги. В железе баги. Спецификации
    > плохие.
    > У меня после выхода из спящего режима ничего не отваливалось на 2х
    > компьютерах. Полагаю у разработчиков тоже.

    А у меня на 27 серверах вообще спящего режима вроде нет.

     
     
  • 4.49, Аноним (-), 09:14, 24/08/2013 [^] [^^] [^^^] [ответить]  
  • –2 +/
    http://www.freebsd.org/cgi/man.cgi?query=powerd

    # CPU frequency
    # https://wiki.freebsd.org/SystemTuning
    powerd_enable="YES"
    powerd_flags="-a hiadaptive"
    performance_cpu_freq="HIGH"

     
     
  • 5.50, Аноним (-), 09:27, 24/08/2013 [^] [^^] [^^^] [ответить]  
  • –2 +/

    https://wiki.freebsd.org/TuningPowerConsumption

     
     
  • 6.111, Аноним (-), 20:49, 26/08/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > https://wiki.freebsd.org/TuningPowerConsumption

    Охренеть, в 2013 году BSDшники осознали что у процессоров меняется частота. А в линухе она уже много лет меняется.

     
  • 4.61, Kodir (ok), 15:22, 24/08/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > А у меня на 27 серверах вообще спящего режима вроде нет.

    Они засыпают, как только ты уходишь из комнаты :)

     
     
  • 5.106, Аноним (-), 13:52, 26/08/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >> А у меня на 27 серверах вообще спящего режима вроде нет.
    > Они засыпают, как только ты уходишь из комнаты :)

    Тсс. А то он задумается, что происходит с миром, когда он отворачивается..

     
     
  • 6.112, Аноним (-), 20:50, 26/08/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Тсс. А то он задумается, что происходит с миром, когда он отворачивается..

    По легенде, в этот момент обсчет сцен прекращается. И горе тому кто сможет заметить это на...лово :).

     
  • 3.58, Kodir (ok), 15:17, 24/08/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Программу ты пишешь сам, сам же отлаживаешь, потом ВОЗМОЖНО даёшь на ревизию другому лицу. А спеки - слишком фундаментальная вещь, чтобы выпускаться наобум "прочёл - вроде ничё!". Их должны проверять настоящие профи с дотошностью юриста и паранойей фирмварщика марсохода. После чего они должны даваться обычному новичку и тот НЕ ДУМАЯ должен правильно составить код по спекам.
     
     
  • 4.70, Аноним (-), 20:07, 24/08/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А ещё мир во всём мире _должен_ быть! И?
     
  • 2.52, Andrey Mitrofanov (?), 09:36, 24/08/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >>неверной интерпретацией спецификаций
    >двойное (если не тройное!) толкование?

    Двойное: верное и неверное.

     
  • 2.54, anonymous (??), 12:18, 24/08/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >>неверной интерпретацией спецификаций
    > Ну и что это за спецификация, которая допускает двойное (если не тройное!)
    > толкование? ИМХО, спецификация (как и стандарты) по определению должна представлять _формальное_
    > описание параметров оборудования.

    Вот такое вот, дяденька, хреновое лето... эээ, спецификация. И с RFC такое тоже _часто_ бывает, не зря потом тонны maillist приходится перечитать, где сидят такие же несчастные, пишущие реализацию конкретного протокола/стандарта по этому RFC.

     

  • 1.53, Аноним (-), 11:31, 24/08/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Текст новости полностью не соотвествует содержанию патча.
    Вся суть сводится к:
    - msleep(10);
    + msleep(20);
    А спеки требуют ждать не меньше 10 микросекунд.
     
     
  • 2.59, Kodir (ok), 15:20, 24/08/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Вся суть сводится к:
    > -  msleep(10);
    > +  msleep(20);
    > А спеки требуют ждать не меньше 10 микросекунд.

    "Не меньше 10" вполне соответствует оригинальному "msleep(10)", непонятно зачем патч. А если "вдруг заработало" на 20, значит девайс действительно левый.

     
     
  • 3.67, Аноним (-), 18:22, 24/08/2013 [^] [^^] [^^^] [ответить]  
  • –5 +/
    не меньше 10 это = 11+

     
     
  • 4.113, Вахтанг (?), 20:35, 27/08/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > не меньше 10 это = 11+

    Нет, дружище. Не меньше 10 - это 10+ (>= 10)

     
  • 2.93, Аноним (-), 14:53, 25/08/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    не зачет
    - msleep(10);
    + msleep(TRSMRCY);
     
  • 2.77, arisu (ok), 21:07, 24/08/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    ну вперёд, можешь стать таковым.
    — кто тут, к примеру, в цари крайний? никого?! так я первый буду!
     
     
  • 3.109, Аноним (-), 13:57, 26/08/2013 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > ну вперёд, можешь стать таковым.
    > — кто тут, к примеру, в цари крайний? никого?! так я первый
    > буду!

    Настоящих буйных мало, вот и нету вожаков..

     
     
  • 4.110, Michael Shigorin (ok), 15:47, 26/08/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Настоящих буйных мало,

    да и тех модерируют.

    В том числе за пустой флуд.

     

  • 1.78, Anonymouse (?), 21:08, 24/08/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Похоже этот патч еще не конец истории

    /linux-3.9.11$ grep -r "TRSMRCY"
    drivers/usb/core/hub.c: /* TRSMRCY = 20 msec */
    drivers/usb/core/hub.c: /* TRSMRCY = 10 msec */
    drivers/usb/core/hcd.c: * unsuspended.  If they are then a TRSMRCY delay is needed
    drivers/usb/core/hcd.c: usleep_range(10000, 11000); /* TRSMRCY */
    drivers/usb/host/isp1362-hcd.c: /* TRSMRCY */
    drivers/usb/host/ohci-hub.c: /* TRSMRCY */

    В hcd.c, isp1362-hcd.c, ohci-hub.c все по 10мс.
    А разработчик Сара Шарп путает микро и миллисекунды!

     
     
  • 2.115, Andrey Mitrofanov (?), 14:52, 28/08/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > drivers/usb/core/hub.c:  /* TRSMRCY = 20 msec */
    > drivers/usb/core/hub.c:  /* TRSMRCY = 10 msec */
    > А разработчик Сара Шарп путает микро и миллисекунды!

    Да нет же! Это делаешь ты и "Аноним, 11:31 , 24-Авг-13, (53)"

    > drivers/usb/core/hcd.c:                usleep_range(10000, 11000);    /* TRSMRCY */

    Сходи по ссылке, почитай описание и патч. В описании везде явно указаны единицы. В патче - msleep(), а не "твой" usleep_там_чего_то().

    ---На здоровье. http://lxr.free-electrons.com/source/kernel/timer.c#L1657

     

  • 1.79, Anonymouse (?), 21:25, 24/08/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >А разработчик Сара Шарп путает микро и миллисекунды!

    Не, не путает.

     
  • 1.90, robux (ok), 09:03, 25/08/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > проблемы вызваны неверной интерпретацией спецификаций в реализации USB

    Какой-нибудь бюрократ писал, вот мужики и не заметили подлянку.
    О, я определил виноватых: пафосные бюрократы, пишушие стандарты бюрократическим языком, чтобы запутать трудящихся, которым предстоит реализовывать этот стандарт!

    Прослеживается аналогия со стандартом MS OOXML.
    Видать USB 2.0 тоже проприетарные пижоны писали.

    Ну а то что Саrушка, писательница очередного стандарта, прикрывает коллег, как бы намекает.

     
     
  • 2.116, Andrey Mitrofanov (?), 14:55, 28/08/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну а то что Саrушка, писательница очередного стандарта, прикрывает коллег, как бы намекает.

    Да! Понимаешь, у всех работает, а у sara@linux.intel.com не работает. Ждём жестов Линуса в сторону железа @ intel.com. </тэдрама>

     

  • 1.114, northbear (ok), 13:40, 28/08/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Когда фикс включат в ядро, есть информация?
     
     
  • 2.117, Andrey Mitrofanov (?), 21:49, 28/08/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Когда фикс включат в ядро, есть информация?

    Мадам Сара говорит, что в ХромОС-е оно уже. Задержка заменена :) на 100мс.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру