起動時にPCIeデバイスを無効にする方法は?

起動時にPCIeデバイスを無効にする方法は?

NVIDIAグラフィックカードが一時停止状態で再起動される問題をデバッグしようとしています。このスレッドHDMIカードを出力するオーディオ機器に問題があると考えられます。デバイスを無効にしたいが、udevルールとカーネルパラメータは何もしません。これらの方法が機能しない問題を解決するには、または他の方法を使用してデバイスが問題を引き起こす可能性を完全に排除できるように無効にするにはどうすればよいですか。

sudo lspci -vv私の関連デバイスへの出力(無関係なフィールドが削除されました):

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

lspci -nns 58:00.1:

58:00.1 Audio device [0403]: NVIDIA Corporation Device [10de:10fa] (rev a1)

私が試したこと:

  • udevルール:
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’"

RUNコマンドを手動で実行すると、デバイスの接続が切断されますが、停止の問題が持続し、デバイスの再開時に再接続されるかどうかはわかりません(再開に関する内容は記録されず、停止journalctl操作のみが記録されます。)コンピュータを再利用する前に強制的に電源を切るには)。 udevルールを適用するには、さらに行う必要がありますか?

  • カーネルパラメータを試してください。この方法:
pcistub=pci-stub.ids=10de:10fa

私が検討した回答に記載されている他の方法は、snd_hda_intel実際のオーディオ出力にも使用されるため使用できません。

どんな提案にも感謝します。ありがとうございます!

ベストアンサー1

起動時にデバイスを削除するシステムサービスを作成し、これを行いました。

サービスの本文は次のとおりです。

# systemctl cat remove-nvidia
# /etc/systemd/system/remove-nvidia.service
[Unit]
Description=removes pci nvidia upon boot

[Service]
Type=oneshot
User=root
RemainAfterExit=true
ExecStart=/usr/bin/bash -c "echo 1 > /sys/bus/pci/devices/0000:01:00.0/remove"
 
[Install]
WantedBy=multi-user.target

デーモンを再ロードする必要があります。

 # systemctl daemon-reload

サービスを有効にして

# systemctl enabled remove-nvidia

その結果、PCI VGAの別のサービスが削除されます(私の場合)。

pciデバイスのIDは次のようになります。lspci -vv

幸運を祈る

おすすめ記事