2020/02/20 2020/05/26
Ryzen7 2700X→Ryzen9 3900Xに換装後、KVMで
IOMMU Group 8 0a:00.3 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Matisse USB 3.0 Host Controller [1022:149c]
IOMMU Group 8 0a:00.4 Audio device [0403]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse HD Audio Controller [1022:1487]
に対してパススルーを行い、ゲストで利用しようとすると起動時にログ上
[ 171.472895] vfio-pci 0000:0a:00.3: not ready 1023ms after FLR; waiting
[ 173.526131] vfio-pci 0000:0a:00.3: not ready 2047ms after FLR; waiting
[ 176.646080] vfio-pci 0000:0a:00.3: not ready 4095ms after FLR; waiting
という形でデバイスがnot readyとなり、このログが64000msまで到達するとホストOSを巻き込んで応答不可となり、マシン自体をリセットせざるを得なくなる事象がこれまで起きていて、かれこれ半年ほど放置してました。
この為、ゲストのCatalina上ではオーディオ再生が出来ない状態が続いていましたが、同じ事象で悩まれていた別の方が投稿されていた掲示板に目をつけて様子を見ていたところ、ついに解決策が提示されました!!
ホストOSのカーネルに以下内容のパッチを当てることで固まることが無くなります。
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 35d0d638d..3555ccf1c 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -5095,6 +5095,10 @@ static void quirk_intel_no_flr(struct pci_dev *dev)
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x1502, quirk_intel_no_flr);
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x1503, quirk_intel_no_flr);
+/* FLR causes Ryzen 3000s built-in HD Audio & USB Controllers to hang on VFIO passthrough */
+DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_AMD, 0x149c, quirk_intel_no_flr);
+DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_AMD, 0x1487, quirk_intel_no_flr);
+
static void quirk_no_ext_tags(struct pci_dev *pdev)
{
struct pci_host_bridge *bridge = pci_find_host_bridge(pdev->bus);
最近カーネル更新もしてなかったので、更新ついでにパッチを当ててOS再起動後、ゲストOSを起動してみると…
固まらずに立ち上がりました!!
VoodooHDA.kextを入れて再起動したところ、すんなり認識。
MacOS上で普通にオーディオ再生できるようになりました。
また、同様に使えなかったUSBもパススルーできるようになったのでBluetooth(BCM943602CS)も認識するようになり、AirDropも使えるようになりました。
長かった…
コメントとトラックバック
コメントはありません