[心得] AMD內顯Passthrough踩坑心得
看板PC_Shopping (個人電腦購買)作者NCTUFAIWEN (交大廢文王子)時間3月前 (2025/12/02 23:38)推噓24(28推 4噓 27→)留言59則, 32人參與討論串1/1
前言
小弟有組一台黑X暉的NAS
因為所需服務都已經找到替代的開源方案,好像也沒有理由再繼續用黑X暉了
再加上上次手賤點個升級結果系統掛點==,花幾個小時才修好
想了想還是轉往Proxmox + TrueNAS的方案比較安心
因此在拆掉前來記錄兼分享下在黑X暉平台上玩的VMM內顯直通方案
*先聲明本篇沒有要推廣黑X暉,相反的想在這上面搞些有的沒的真的麻煩超級多
還有整個過程在其他KVM環境也都通用,非限制於黑X暉才可用
以下正文開始
我的平台是AMD Ryzen3 5350GE + Asrock B450m Pro4 + 40G ECC RAM
(往回翻的話這張消費級主板已經24/7服役進入第七年惹 周邊都換一輪剩他還在 真的妖)
周邊有張4 port HBA卡跟10G光口洋垃圾網卡
硬碟共4顆HDD/2顆SATA SSD/1條NVME SSD當cache
這樣的組合常駐功耗大概落在90-100W之間
https://imgur.com/42WV9JU






帳面配置怎麼看這顆CPU只跑NAS實在是大材小用
因此也在黑X上額外跑了Ubuntu跟Windows虛擬機
玩到這邊其實跑得順風順水,也算榨乾了整個系統的資源...嗎?
並沒有XDD,想折騰的心是無窮的,看著白花花銀子買來的iGPU被晾在那就覺得不太爽
加上NAS是放在電視旁,想讓Windows虛擬機可以直接顯示輸出到電視上
做到用電視看各種直播/影片,甚至是遠端PC來大螢幕玩遊戲的騷操作
所以就有了以下直通內顯的曲折過程
‧黑X暉VMM如何做到PCI Passthrough
雖然底層是KVM ,但顯然VMM介面是不可能會串直通功能的,要做到大概就兩種做法:
a. 直接改虛擬機的xml設定
b. 用指令"virsh attach-device"直接把device分配給某台虛擬機
a作法就我所知是行不通,VMM似乎有自己維護的虛擬機設定檔,每次VM開機都會蓋掉xml
正解是b做法:
1. 先把device unbind
echo "0000:${DEVICE}" > /sys/bus/pci/devices/0000:${DEVICE}/driver/unbind
那個${DEVICE}是PCIe device的vendor:product值 可以從lspci看到
2. 將想要分配出去的PCI device按照kvm所需格式填寫xml檔
https://imgur.com/fP8KJaZ

3. 把PCI device分配給VM
virsh attach-device ${VM_NAME} *.xml
但這方法也不是很完美,因為每次VM重開機都要自行去執行一遍這個步驟
不過可用就是了
‧IOMMU Group的坑
PCI Passthrough是以IOMMU Group為單位,因此如果你想直通的device分到的Group很糟
(例如這個Group內存在超多device) 那就頭很痛了
可以用類似這種script來檢查看看:
https://gist.github.com/jabbas/a8785710a5e8655045fc0be67385e887
一般來說Group分配太爛可以嘗試去BIOS打開ACS Enable選項,會好很多
然而慘的是Asrock B450m Pro4這張板子在使用5系列Ryzen的時候,這選項被閹掉了...
原因也很簡單,這麼老的板子要支援更多AM4 CPU能做的也只有砍功能這一步
才能塞進去這麼小的BIOS內 (都支援5代了也不忍苛責XD)
只能說AM4產品週期長是好事,但也是有意想不到的副作用QQ
到這邊幾乎覺得是死局了...
但!!直到找到這篇討論:
https://www.reddit.com/r/ASRock/comments/pfza16/deskmini_x300_bios_with_acs_enable/
在Asrock B450F的某版本BIOS開啟PCIe ARI選項也可以跟ACS選項同樣有好的Group分配
用相應AGESA版本的BIOS刷到B450m後就成功啦!
正常的結果應該如下:
https://imgur.com/3zeUbbi

可以看到目標的VGA compatible controller單獨在Group 13
只能說妖板不愧是妖板
BTW這資訊看起來還是寄信去Asrock原廠問到的 連這種小眾的需求都願意回真的太棒惹
╰(⊙Д⊙)╮佛心公司╭(⊙Д⊙)╯佛心公司
‧AMD GPU Passthrough的坑
用上面的作法依樣畫葫蘆把AMD iGPU passthrough之後進到Windows始終顯示Error 43
首先有個懷疑的點: virsh attach-device時間點太慢了
由於這指令必須要在VM開機後才可以下 從按下開機到attach都跑過BIOS了可能真的太晚
有找到可以在KVM START階段hook並且執行attach的方案:
https://github.com/sramshaw/pci_coral_on_synology
魔改一下後就成功在BIOS前把iGPU attach上去了!
但還是Error 43,可撥QQ
再來網路上對於AMD iGPU的直通其實也滿多資訊惹,很多作業可以抄
(雖然幾乎都是Proxmox 但反正底都是KVM沒差)
總結大概有幾個問題待解:
1. GPU直通時要順便帶vbios
2. 直通給Windows要順便把CPU的Audio直通過去 並且代AMDGopDriver
3. AMD Reset Bug
1/2要用一些tool把你當前iGPU的vbios跟AMDGopDriver導出來
或是可以去這邊翻看看有沒有相應型號的可以直接下載來用:
https://github.com/isc30/ryzen-gpu-passthrough-proxmox
並且在做virsh attach-device時的xml裡面要順便帶rom這個參數進去
此時Windows VM進去就不會Error 43了,到此算是完成惹~
https://imgur.com/YlNepUN

剩下一個AMD Reset Bug比較討厭,可以安裝這個Service:
https://github.com/inga-lovinde/RadeonResetBugFix
它的作用是在Windows VM關機時會正常的把GPU關閉,等到下次VM開機時才可以正常init
但如果VM被強制關機或reboot那就沒救了(e.g. 藍屏)
只要上次GPU沒有正常關閉那顆GPU就再也沒辦法被使用了,只能reboot host
另外我的經驗是如果確定上次VM有正常關機但還是Error 43
可以直接重裝GPU Driver並reboot VM,通常都能好
最後來看結果 Windows虛擬機可以直接HDMI連到電視 看實況YT都很順
https://imgur.com/AlGlwVH

甚至透過10G內網遠端到PC打個POE刷圖都沒問題
https://imgur.com/l1GINLY

就是畫面有時候FPS會變低 這個需求CPU真的極限了XDD 解碼速度上不去
另外,上面那些步驟實在太繁瑣,小弟把此方案弄成一個簡單的script:
https://github.com/jcchen7566/SynoPassthru
不算是很無腦的script需要花一點時間了解在幹麻,但只要配置好deploy完就一勞永逸了
目前用這方案半年多,除了Reset Bug常踩到要重開機很討厭之外真的滿穩定的
謝謝大家收看
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.34.178.145 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/PC_Shopping/M.1764689918.A.BCD.html
推
12/02 23:49,
3月前
, 1F
12/02 23:49, 1F
AM4真的讚 但現在板子不好買了 希望別掛掉
推
12/02 23:59,
3月前
, 2F
12/02 23:59, 2F
噓
12/03 00:03,
3月前
, 3F
12/03 00:03, 3F
推
12/03 00:10,
3月前
, 4F
12/03 00:10, 4F
推
12/03 00:10,
3月前
, 5F
12/03 00:10, 5F
噓
12/03 00:18,
3月前
, 6F
12/03 00:18, 6F
推
12/03 00:38,
3月前
, 7F
12/03 00:38, 7F
roger788 roger788
推
12/03 00:40,
3月前
, 8F
12/03 00:40, 8F
※ 編輯: NCTUFAIWEN (1.34.178.145 臺灣), 12/03/2025 00:45:33
推
12/03 00:52,
3月前
, 9F
12/03 00:52, 9F
推
12/03 00:53,
3月前
, 10F
12/03 00:53, 10F
推
12/03 01:04,
3月前
, 11F
12/03 01:04, 11F
→
12/03 01:04,
3月前
, 12F
12/03 01:04, 12F
推
12/03 01:05,
3月前
, 13F
12/03 01:05, 13F
推
12/03 01:11,
3月前
, 14F
12/03 01:11, 14F
→
12/03 01:11,
3月前
, 15F
12/03 01:11, 15F
→
12/03 01:11,
3月前
, 16F
12/03 01:11, 16F
推
12/03 01:24,
3月前
, 17F
12/03 01:24, 17F
噓
12/03 02:45,
3月前
, 18F
12/03 02:45, 18F
推
12/03 02:45,
3月前
, 19F
12/03 02:45, 19F
噓
12/03 06:05,
3月前
, 20F
12/03 06:05, 20F
→
12/03 07:02,
3月前
, 21F
12/03 07:02, 21F
→
12/03 07:02,
3月前
, 22F
12/03 07:02, 22F
推
12/03 07:05,
3月前
, 23F
12/03 07:05, 23F
→
12/03 07:20,
3月前
, 24F
12/03 07:20, 24F
推
12/03 07:59,
3月前
, 25F
12/03 07:59, 25F
推
12/03 08:11,
3月前
, 26F
12/03 08:11, 26F
推
12/03 08:22,
3月前
, 27F
12/03 08:22, 27F
→
12/03 08:22,
3月前
, 28F
12/03 08:22, 28F
推
12/03 08:27,
3月前
, 29F
12/03 08:27, 29F
推
12/03 09:18,
3月前
, 30F
12/03 09:18, 30F
推
12/03 09:23,
3月前
, 31F
12/03 09:23, 31F
推
12/03 09:57,
3月前
, 32F
12/03 09:57, 32F
推
12/03 11:39,
3月前
, 33F
12/03 11:39, 33F
推
12/03 12:37,
3月前
, 34F
12/03 12:37, 34F
→
12/03 12:37,
3月前
, 35F
12/03 12:37, 35F
→
12/03 12:37,
3月前
, 36F
12/03 12:37, 36F
→
12/03 12:37,
3月前
, 37F
12/03 12:37, 37F
→
12/03 12:37,
3月前
, 38F
12/03 12:37, 38F
→
12/03 12:37,
3月前
, 39F
12/03 12:37, 39F
→
12/03 12:38,
3月前
, 40F
12/03 12:38, 40F
→
12/03 12:38,
3月前
, 41F
12/03 12:38, 41F
→
12/03 12:39,
3月前
, 42F
12/03 12:39, 42F
→
12/03 12:39,
3月前
, 43F
12/03 12:39, 43F
→
12/03 12:42,
3月前
, 44F
12/03 12:42, 44F
→
12/03 12:42,
3月前
, 45F
12/03 12:42, 45F
→
12/03 12:42,
3月前
, 46F
12/03 12:42, 46F
推
12/03 13:58,
3月前
, 47F
12/03 13:58, 47F
→
12/03 13:58,
3月前
, 48F
12/03 13:58, 48F
推
12/03 14:18,
3月前
, 49F
12/03 14:18, 49F
推
12/03 17:23,
3月前
, 50F
12/03 17:23, 50F
→
12/03 17:23,
3月前
, 51F
12/03 17:23, 51F
推
12/03 19:23,
3月前
, 52F
12/03 19:23, 52F
→
12/03 19:23,
3月前
, 53F
12/03 19:23, 53F
推
12/03 19:28,
3月前
, 54F
12/03 19:28, 54F
→
12/03 19:28,
3月前
, 55F
12/03 19:28, 55F
→
12/03 19:28,
3月前
, 56F
12/03 19:28, 56F
→
12/03 19:29,
3月前
, 57F
12/03 19:29, 57F
→
12/03 19:29,
3月前
, 58F
12/03 19:29, 58F
→
12/03 19:54,
3月前
, 59F
12/03 19:54, 59F
PC_Shopping 近期熱門文章
37
109
PTT數位生活區 即時熱門文章