Linux отключить pci устройство

How to disable PCIe device at boot?

I’m trying to debug an issue with resuming from suspend with an NVIDIA graphics card. This thread leads me to believe it’s an issue with the audio device from the card’s HDMI out. I want to disable the device, but udev rules and kernel parameters have no effect. How can I either troubleshoot these methods not working or use another way to disable the device so that I can absolutely rule out the possibility that it’s causing my issue? sudo lspci -vv output for my device in question (irrelevant fields removed):

58:00.1 Audio device: NVIDIA Corporation Device 10fa (rev a1) Subsystem: Micro-Star International Co., Ltd. [MSI] Device 3800 Control: (. ) Status: (. ) Latency: 0 Interrupt: pin B routed to IRQ 18 IOMMU group: 19 Region 0: Memory at 61080000 (32-bit, non-prefetchable) [size=16K] Capabilities: (. ) Kernel driver in use: snd_hda_intel Kernel modules: snd_hda_intel 
58:00.1 Audio device [0403]: NVIDIA Corporation Device [10de:10fa] (rev a1) 
cat /etc/udev/rules.d/10-remove-nvidia-audio.rules ACTION==“add”, KERNEL=="0000:58:00.1", SUBSYSTEM=="pci", RUN="/bin/sh -c ‘echo 1 > /sys/bus/pci/devices/0000:58:00.1/remove’" 

Running the RUN command manually does disconnect the device but the suspend issue still exists, and I have no way of determining whether the device is reconnected on resume ( journalctl only logs up to the suspend operation, does not log anything about resume, assuming that’s because I have to force power off to use my computer again). Is there something else I need to do to have a udev rule take effect?

pcistub=pci-stub.ids=10de:10fa 

I can’t use the other method outlined in the answer I looked at, because snd_hda_intel is used for my actual audio output as well.

Any suggestions are appreciated. Thanks!

Источник

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

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

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

Но вот беда, у меня отсутствует данный 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

Файл есть, но писать в него он не даёт. Может поэтому: «Removal of PCI root buses is disallowed»?

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

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

Читайте также:  Macbook pro linux drivers

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

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

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

А что за устройство? Может, оно не умеет на горячую отключаться.

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

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

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

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

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

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

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

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

Источник

отключить определенное устройство PCI при загрузке

Я только что переустановил Debian на своем ноутбуке Sony VAIO, и мои dmesg и виртуальные консоли снова и снова получают спам с одними и теми же сообщениями.

[ 59.662381] hub 1-1:1.0: unable to enumerate USB device on port 2 [ 59.901732] usb 1-1.2: new high-speed USB device number 91 using ehci_hcd [ 59.917940] hub 1-1:1.0: unable to enumerate USB device on port 2 [ 60.157256] usb 1-1.2: new high-speed USB device number 92 using ehci_hcd 

Я полагаю, что эти сообщения поступают с подключенного внутри устройства USB, скорее всего, с веб-камеры (поскольку это единственное, что не работает). Единственный способ, которым я могу закрыть его (не убивая мои действительно полезные порты USB), — отключить один из хост-контроллеров USB:

# echo "0000:00:1a.0" > /sys/bus/pci/drivers/ehci_hcd/unbind 

Это также снимает мой интерфейс Bluetooth, но я в порядке с этим. Я бы хотел, чтобы эта настройка сохранялась, чтобы я мог безболезненно снова использовать свою виртуальную консоль в случае необходимости. Я хочу, чтобы моя операционная система (Debian amd64) никогда не просыпалась, но я не знаю, как это сделать. Я пытался занести в черный список псевдоним модуля для устройства PCI, но, похоже, он игнорируется:

$ cat /sys/bus/pci/devices/0000\:00\:1a.0/modalias pci:v00008086d00003B3Csv0000104Dsd00009071bc0Csc03i20 $ cat /etc/modprobe.d/blacklist blacklist pci:v00008086d00003B3Csv0000104Dsd00009071bc0Csc03i20 

Как я могу гарантировать, что это конкретное устройство PCI никогда не активируется автоматически, не отключая его драйвер вообще? -edit- Модуль был недавно переименован, теперь следующие работы из пользовательского пространства:

echo "0000:00:1a.0" > /sys/bus/pci/drivers/ehci-pci/unbind 

Источник

Читайте также:  Linux restart network systemctl

How do I turn off PCI devices?

..without turning them off in my BIOS like they are now, if possible, because then I have to restart my computer to use any of them. As it stands, I still haven’t managed to power down:

Firewire USB connection to webcam sound card

How do I tell Linux to disable and power down these devices? Is it true that any PCI slot can be physically powered down?

My current idle power consumption is 7.9 watts plus the screen. (10.0W at min. brightness)

Also, how do I set the screen timeout to ten seconds? gconf editor isn’t honoring it when I set it to that. Will switching from nVidia to Nouveau save any significant amount of power?

2 Answers 2

Try echo 0 > /sys/bus/pci/slot/$N/power for appropriate slot.

lspci -vv may help to identify the device. This is not very well documented.

There’s /sys/bus/pci/slots available on Linux 4.0.x, so it might be a type or has changed. However, there doesn’t seem to be a power file by default.

@hanshenrik this REMOVES the device from view in the OS, but does not change the P state on the actual device. Your device might still be on and consuming power, sometimes even more than when loading its driver.

Linux kernel documentation states explicitly that the sysfs pci ‘remove’ file «does not involve any kind of hot-plug functionality, e.g. powering off the device» kernel.org/doc/Documentation/filesystems/sysfs-pci.txt

I could be wrong (if you think I am, just leave a comment) but I always thought that things that were plugged in (or soldered on, as is the case in most laptops) are always «on» and available unless disabled in the BIOS.

However most of these devices will only be using significant power when they’re actively being used. The only real exception to this is wireless but you have a hardware switch for this. USB ports also power their plugees so you need to unplug USB things but that doesn’t sound like an unreasonable request.

Читайте также:  Изменить размер терминала linux

You can, of course, unload certain kernel modules which stops software having access to hardware but I doubt this would turn them off.

You use the word ‘significant’ and ‘reasonable’ but in my case, 1.3 watts mean one whole hour of battery life. And I need that hour, so I need those 1.3 watts.

If I can confirm that it is not physically possible I will stop pursuing it. but I’d prefer not to give up prematurely. Does the bios have access to hardware features that the operating system does not?

If hardware can be turned of (not just disabled) by BIOS it means that any software can do the same — however this might mean low-level memory manipulation if it is not supported via the standard ACPI interface for doing those things — there is multiple kernel modules available for such things for HP and Asus machines — however they are not always bug free to say the least.

Источник

Как отключить устройство в ubuntu?

В windows была возможность отключить необходимое устройство через device manager:

4036c58aa6464bc19fdd9a46b2c4811a.png

Оценить 1 комментарий

zmoe

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

1) Выполнить lspci, найти в выводе нужное устройство, посмотреть его PCI-адрес в первой колонке.
Например (я экспериментирую с контроллером FireWire):

$ lspci . 0d:00.3 FireWire (IEEE 1394): Ricoh Co Ltd R5C832 PCIe IEEE 1394 Controller (rev 04) . 

2) Отключить устройство на уровне шины PCI:

$ echo 1 | sudo tee /sys/bus/pci/devices/0000\:0d\:00.3/remove 1

Разумеется, это действует только до перезагрузки.

А как сохранить эффект?
То есть как сказать ядру не инициализируй вот это pci оборудование.
blocklist modprobe не подходит
имеется оборудование которое использует те же драйвера.
оборудование которое необходимо отключить распаяно на плате.

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

попробуйте так:
1) sudo lsmod — список устройств
2) sudo modprobe -r device — отключить необходимое уст-во.

Странно, но именно устройство nvidia он не хочет отключать.
sudo modprobe -r nvidia — никакой реакции.

amatory10:
rmmod: ERROR: ../libkmod/libkmod-module.c:793 kmod_module_remove_module() could not remove ‘nvidia’: Resource temporarily unavailable
rmmod: ERROR: could not remove module nvidia: Resource temporarily unavailable

Войдите, чтобы написать ответ

Как выполнить команду на хосте после загрузки ОС в virtualbox?

Источник

Оцените статью
Adblock
detector