LINUX.ORG.RU
ФорумAdmin

CentOS 5.4 как отключить pci устройство

 , ,


1

3

Добрый день,

CentOS 5.4, задача отключить нерабочее устройство, чтобы можно было подгрузить драйвера на остальные.

Гугл подсказал, как можно удалить устройство из списка ядра, для этого нужно сделать echo в sys-fs remove file

Вот документация https://www.kernel.org/doc/Documentation/filesystems/sysfs-pci.txt

Но вот беда, у меня отсутствует данный remove файл.

# echo 1 > /sys/devices/pci0000\:00/0000\:00\:03.0/0000\:02\:00.0/remove

-bash: /sys/devices/pci0000:00/0000:00:03.0/0000:02:00.0/remove: Permission denied

★★

Последнее исправление: MiklerGM (всего исправлений: 1)

Ответ на: комментарий от selivan

В том то и дело, что файла нет. remove дописано руками. Могу сделать листинг, если это необходимо, чтобы поверить мне.

Как определить PCI root BUS это или нет. Я не уверен, что проблема именно в этом. Потому что я листал другие устройства, там тоже нет файла remove. Подозреваю, что проблема в ядре, или ещё где-нибудь.

Плюс, я применяю точно не к корневому устройству. У меня есть два райзера, на каждом из райзеров по два слота pci-e 8x, если мне не изменяет память, так вот. Я понял бы, если бы корневым устройством был бы райзер, т.е. 0000:00:03.0, но я пытаюсь удалить 0000:00:03.0/0000:02:00.0

MiklerGM ★★
() автор топика
Ответ на: комментарий от anonymous

Да, конечно, тут стандартный PS1, все команды выполнялись от рута.

MiklerGM ★★
() автор топика
Ответ на: комментарий от MiklerGM

Ну если файла нет, то либо ядро как-то не стандартно собрано, либо в этой версии ядра такого псевдофайла не создаётся, а надо делать как-то по-другому. На kernel.org документация к самой свежей версии.

selivan ★★★
()
Ответ на: комментарий от dexpl

Это «отключение» происходит путем удаления из списка ядра. Т.е. само устройство про это никак не узнает. Насколько я понимаю, поддержка со стороны устройства не нужна.

MiklerGM ★★
() автор топика
Ответ на: комментарий от selivan

В этом-то и вопрос, где посмотреть какие есть условия создания данного файла. Либо какие есть адекватные альтернативные решения. Я не смог найти ни одно работающее решение.

Я подобное решение видел и в ответах от 2009 года.

Ядро старое, но весьма стандартное 2.6.18-164.11.1.el5 + несколько заплаток, которые никаким образом не касаются sysfs. Я допускаю, что в этой версии ядра может не быть этого файла. Собственно тогда вопрос, до какой версии обновиться.

MiklerGM ★★
() автор топика
Ответ на: комментарий от MiklerGM

Это «отключение» происходит путем удаления из списка ядра.

Отключение через echo 1 > /bla-bla-bla/remove — это именно отключение, после которого можно физически отсоединить устройство от работающей системы. А «удаление из списка ядра» делается командой rmmod имя_модуля (см. lspci -s 02:00.0 -k).

dexpl ★★★★★
()
Ответ на: комментарий от dexpl

а вот и нет. Я готов спорить.

rmmod это удаление модуля устройства, из lspci оно никуда не пропадет.

Предлагаю для начала ознакомиться с документацией, которую я указал в первом сообщении.

'Документация с сайта kernel.org'

The 'remove' file is used to remove the PCI device, by writing a non-zero integer to the file. This does not involve any kind of hot-plug functionality, e.g. powering off the device. The device is removed from the kernel's list of PCI devices, the sysfs directory for it is removed, and the device will be removed from any drivers attached to it. Removal of PCI root buses is disallowed.

Отдельно выделю

This does not involve any kind of hot-plug functionality,

И ещё

The device is removed from the kernel's list

MiklerGM ★★
() автор топика
Ответ на: комментарий от MiklerGM

ОК, убедили. Тогда остается предположить, что удаляемое устройство и есть PCI root bus. Что про него lspci говорит?

dexpl ★★★★★
()
Ответ на: комментарий от dexpl

lscpi -vv по отношению к данному устройству не произносит слова Root, слово Bus встречается только в словосочетании BusMaster+, но при этом при BusMaster+ на другой машине, с другой системой устройство можно отключить.

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

В случае успеха, обновить на стандартном сервере, где отключения нет - ядро. Если, вдруг, появится возможность делать remove - адаптировать драйвера. :-(

Спасибо

MiklerGM ★★
() автор топика
Ответ на: комментарий от MiklerGM

до какой версии обновиться

Проще всего проверить экспериментальным путём - LiveCD в помощь.

И да, стоит загрузиться с таким ядром в virtualbox и посмотреть, появится ли файл там. Может, особенности железа.

selivan ★★★
()
Последнее исправление: selivan (всего исправлений: 1)

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

Спасибо

MiklerGM ★★
() автор топика

pci_stub попробуй в kerenl line передать

lspci -n чтобы узнать вендор и девайс id

dimon555 ★★★★★
()
30 ноября 2014 г.
Ответ на: комментарий от MiklerGM

Проблема однозначно в ядре. С другим ядром появились необходимые возможности.

С каким ядром у Вас получилось отключить устройство?

Собственно, вопрос тогда перетекает в возможность как-либо иначе отключать PCI устройства

Я пробую написать что-нибудь простое для этого на C. Если получится - отпишу здесь. Если пишу велосипед — скажите что из существующего позволит это сделать.

Grandma
()
Ответ на: комментарий от Grandma

Получилось с 2.6.33. Но те машины на которых необходимо отключать устройства используют 2.6.18

MiklerGM ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.