Bug 7085

Summary: [FR] platform support (device-specific hacks)
Product: Sisyphus Reporter: Michael Shigorin <mike>
Component: hotplugAssignee: Anton Farygin <rider>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: enhancement    
Priority: P2 CC: ab, abulava, eostapets, sbolshakov, sr, vsu
Version: unstable   
Hardware: all   
OS: Linux   
Bug Depends on: 6830    
Bug Blocks: 4910, 5211, 6804, 7079, 7371    

Description Michael Shigorin 2005-06-14 16:50:46 MSD
необходимо обеспечить возможность выполнять действия, которые зависят от железки
и дополнительных факторов (первая загрузка после установки, наличие/отсутствие
конфига, etc).  

причина -- проблемы конкретных железок/драйверов, которые требуют специальной
инициализации для нормальной работы.

пример -- #4735.

осмысленно решать вместе с #6830 IMCO.
Comment 1 Michael Shigorin 2005-06-14 16:52:15 MSD
кстати о platform-detect. :)
Comment 2 Anton Farygin 2005-06-14 17:04:29 MSD
На какой именно стадии нужно запускать скрипты ?

возможны варианты:
1) нашли железку
2) грузим модуль
3) загрузили модуль
4) когда-то потом

и т.д.
Comment 3 Michael Shigorin 2005-06-14 17:10:33 MSD
в случае #4735 -- после загрузки модулей, в округе восстановления микшера
(собсно это в одной инфраструктуре имеет смысл)

вообще -- подозреваю, что осмысленно хуки по всем точкам расставить (вспоминая
%post и компанию ;)
Comment 4 Anton Farygin 2005-06-14 17:15:06 MSD
Каким образом эти хуки определять ? предлагайте идеи.
Comment 5 Michael Shigorin 2005-06-14 17:43:59 MSD
в смысле определять?  сейчас sound.dev -- то, что цепляется на такой вот хук
Comment 6 Anton Farygin 2005-06-14 18:28:30 MSD
так тебе же не только по классу устройств, но и по ID'шникам нужно
Comment 7 Michael Shigorin 2005-06-14 18:34:19 MSD
о чём и спич.  поскольку сдаётся, что это проблема более общая, чем snd-emu10k1.
Comment 8 Anton Farygin 2005-06-14 18:38:01 MSD
ну так надо подумать как сделать настройку в зависимость от id устройства.
Но проблема то глубже (vsu@ поправь если я не прав): для многих звуковых плат
сдетектить что же это за зверь можно уже только после загрузки драйвера.
Comment 9 Michael Shigorin 2005-06-14 18:38:50 MSD
ну так не противоречит.
Comment 10 Sergey Vlasov 2005-06-14 18:50:10 MSD
(In reply to comment #8)
> Но проблема то глубже (vsu@ поправь если я не прав): для многих звуковых плат
> сдетектить что же это за зверь можно уже только после загрузки драйвера.

Ну так в момент вызова sound.dev драйвер уже загружен; копание глубже, чем PCI
ID, можно засунуть уже в обработчик для этого PCI ID.

Comment 11 Anton Farygin 2005-06-14 18:58:33 MSD
хорошо, а давайте попробуем расширить обработчик, добавив обработку по модулю ?

Или как ?

или сделать что-то, что будет работать по pciid ?

Я могу добавить такое как и в hwdatabase, так и в файловую систему (например
/etc/devices.d/<скрипт с именем, равным pciid устройства>

Да, а что делать с не PCI устройствами (ISA PNP, USB и т.д.) ?

О.. и тут же еще всплывает одна интересная тема, место которой в отдельной баге:
тестирование серийных портов. 2vsu: там ничего не планируют предпринять в ядре,
что бы /dev/ttyS* стали работать аля /dev/psaux в 2.6 ?

Заморочка тут с тем, что при появлении /dev/ttyS* устройства нужно по хорошему
посмотреть что на нем висит (модем, мышь... и т.д.) и выполнить соответствующие
действия (сделать симлинк нужного вида, запустить serialattach для мышей с
опцией - нужный протокол, и т.д. и т.п.)

Comment 12 Sergey Vlasov 2005-06-14 19:07:59 MSD
(In reply to comment #11)
> Да, а что делать с не PCI устройствами (ISA PNP, USB и т.д.) ?

Если делать в общем виде, то это скорее переползает уже куда-то в сторону HAL...

> при появлении /dev/ttyS* устройства нужно по хорошему
> посмотреть что на нем висит (модем, мышь... и т.д.)

Т.е., предлагается затащить в ядро обработку Serial-PnP?
Comment 13 Anton Farygin 2005-06-14 19:14:08 MSD
(In reply to comment #12)
> (In reply to comment #11)
> > Да, а что делать с не PCI устройствами (ISA PNP, USB и т.д.) ?
> 
> Если делать в общем виде, то это скорее переползает уже куда-то в сторону HAL...

А в hal ли ?

Давайте составим список действий, которые нужно предпринять при появлении нового
устройства:
1) звук: выставить уровни микшера в зависимости от предыдущего состояния и
устройства
2) модем: сделать симлинк /dev/modem на устройство
3) серийная мышь: запустить serialattach

> 
> > при появлении /dev/ttyS* устройства нужно по хорошему
> > посмотреть что на нем висит (модем, мышь... и т.д.)
> 
> Т.е., предлагается затащить в ядро обработку Serial-PnP?

Нет, зачем ? я могу это прекрасно делать и в userspace. Останется только
сгенерить соответствующее событие для hotplug'а.
Comment 14 Sergey Vlasov 2005-06-14 19:28:01 MSD
(In reply to comment #13)
> Нет, зачем ? я могу это прекрасно делать и в userspace. Останется только
> сгенерить соответствующее событие для hotplug'а.

Так оно и сейчас неплохо генерируется:

Jun 14 19:21:43 center4 default.hotplug[8337]: arguments (tty) env
(PHYSDEVPATH=/devices/platform/serial8250 SUBSYSTEM=tty OLDPWD=/
DEVPATH=/class/tty/ttyS0 PATH=/bin:/sbin:/usr/sbin:/usr/bin ACTION=remove
PWD=/etc/hotplug HOME=/ SHLVL=2 PHYSDEVDRIVER=serial8250 DEBUG=yes
PHYSDEVBUS=platform SEQNUM=1424 _=/usr/bin/env)
Jun 14 19:21:44 center4 default.hotplug[8350]: arguments (tty) env
(PHYSDEVPATH=/devices/pnp0/00:07 SUBSYSTEM=tty OLDPWD=/ DEVPATH=/class/tty/ttyS0
PATH=/bin:/sbin:/usr/sbin:/usr/bin ACTION=add PWD=/etc/hotplug HOME=/ SHLVL=2
PHYSDEVDRIVER=serial DEBUG=yes PHYSDEVBUS=pnp SEQNUM=1425 _=/usr/bin/env)

Jun 14 19:21:44 center4 default.hotplug[8357]: arguments (tty) env
(PHYSDEVPATH=/devices/platform/serial8250 SUBSYSTEM=tty OLDPWD=/
DEVPATH=/class/tty/ttyS1 PATH=/bin:/sbin:/usr/sbin:/usr/bin ACTION=remove
PWD=/etc/hotplug HOME=/ SHLVL=2 PHYSDEVDRIVER=serial8250 DEBUG=yes
PHYSDEVBUS=platform SEQNUM=1426 _=/usr/bin/env)
Jun 14 19:21:43 center4 default.hotplug[8364]: arguments (tty) env
(PHYSDEVPATH=/devices/pnp0/00:08 SUBSYSTEM=tty OLDPWD=/ DEVPATH=/class/tty/ttyS1
PATH=/bin:/sbin:/usr/sbin:/usr/bin ACTION=add PWD=/etc/hotplug HOME=/ SHLVL=2
PHYSDEVDRIVER=serial DEBUG=yes PHYSDEVBUS=pnp SEQNUM=1427 _=/usr/bin/env)

Comment 15 Anton Farygin 2005-06-20 18:29:45 MSD
Это генерится событие о появлении ttyS*, а нужно еще сгенерить событие о
появлении на этих ttyS* других устройств.
Comment 16 Sergey Vlasov 2005-06-20 18:34:29 MSD
(In reply to comment #15)
> Это генерится событие о появлении ttyS*, а нужно еще сгенерить событие о
> появлении на этих ttyS* других устройств.

Ну так вот и запускай по этому событию Serial-PnP в userspace - лучше этого там
ничего не сделаешь.  Только глюков не оберёшься от этого PnP...
Comment 17 Anton Farygin 2005-06-20 18:56:58 MSD
О, точно... хорошая идея.
Хей, ппл, кому там нужно было по устройствам чего запускать ? давайте это через
udev делать ?
Comment 18 Michael Shigorin 2005-06-23 15:19:11 MSD
погодь, sr@ на той неделе вернётся, продолжим.

PS: Security group сними, чего людей пугать. :)
Comment 19 Anton Farygin 2005-06-24 10:46:45 MSD
так снята уже давно
Comment 20 Anton Farygin 2005-07-19 12:36:56 MSD
новый udev предлагает прекрасные возможности для таких хаков

смотрите /usr/share/doc/udev-*/RELEASE-NOTES
Comment 21 Michael Shigorin 2005-07-19 15:25:57 MSD
замечательно :-)

Женя, посмотришь?
Comment 22 Michael Shigorin 2005-08-30 02:22:33 MSD
closing
Comment 23 Michael Shigorin 2005-08-30 02:32:34 MSD
closing