LinuxでPCIeデバイスをリセットするには
Linuxの入っているPCにSound BlasterX AE-5というサウンドカードを接続しているのですが、一度s2idleでスリープするとスリープ解除しても音が出なくなります。その状態でもサウンドカードをリセットしてやると音が出る状態に復帰したので、その方法のメモです。
PCIeデバイスのリセット
下記を実行して、あらかじめPCIのアドレスを調べます。
% lspci -tv -[0000:00]-+-00.0 Intel Corporation Device a700 (略 +-1c.0-[04]----00.0 Creative Labs CA0132 Sound Core3D [Sound Blaster Recon3D / Z-Series / Sound BlasterX AE-5 Plus] (略
上記の場合、サウンドカードのアドレスは0000:00:1c.0なので、下記を実行します。
% (echo "1" | sudo tee /sys/bus/pci/devices/0000:00:1c.0/remove) && (echo "1" | sudo tee /sys/bus/pci/rescan)