看板 PC_Shopping
作者 NCTUFAIWEN (交大廢文王子)
標題 [心得] AMD內顯Passthrough踩坑心得
時間 Tue Dec  2 23:38:32 2025


前言

小弟有組一台黑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
[圖]
https://imgur.com/5nrxrrL
[圖]
https://imgur.com/I1nvXee
[圖]
https://imgur.com/hgRg5F5
[圖]
https://imgur.com/yK0ELMQ
[圖]
https://imgur.com/lyCszeC
[圖]

帳面配置怎麼看這顆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
GitHub - sramshaw/pci_coral_on_synology: mechanism to have PCI Coral TPU available to a VM running on Synology DSM mechanism to have PCI Coral TPU available to a VM running on Synology DSM - GitHub - sramshaw/pci_coral_on_synology: mechanism to have PCI Coral TPU a ...

 
魔改一下後就成功在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
GitHub - isc30/ryzen-gpu-passthrough-proxmox: Get the Ryzen processors with AMD Radeon 680M/780M integrated graphics or RDNA2/RDNA3 GPUs running with Proxmox, GPU passthrough and UEFI included. Get the Ryzen processors with AMD Radeon 680M/780M integrated graphics or RDNA2/RDNA3 GPUs running with Proxmox, GPU passthrough and UEFI included. -  ...

 
並且在做virsh attach-device時的xml裡面要順便帶rom這個參數進去
此時Windows VM進去就不會Error 43了,到此算是完成惹~
https://imgur.com/YlNepUN
[圖]

剩下一個AMD Reset Bug比較討厭,可以安裝這個Service:
https://github.com/inga-lovinde/RadeonResetBugFix
GitHub - inga-lovinde/RadeonResetBugFix: Radeon Reset Bug fix service Radeon Reset Bug fix service. Contribute to inga-lovinde/RadeonResetBugFix development by creating an account on GitHub. ...

 
它的作用是在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
GitHub - jcchen7566/SynoPassthru: Enables PCI device passthrough on Synology DSM, allowing direct attachment of PCI devices to virtual machines in VMM Enables PCI device passthrough on Synology DSM, allowing direct attachment of PCI devices to virtual machines in VMM - jcchen7566/SynoPassthru ...

 
不算是很無腦的script需要花一點時間了解在幹麻,但只要配置好deploy完就一勞永逸了
目前用這方案半年多,除了Reset Bug常踩到要重開機很討厭之外真的滿穩定的

謝謝大家收看

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.34.178.145 (臺灣)
※ 作者: NCTUFAIWEN 2025-12-02 23:38:32
※ 文章代碼(AID): #1fBmV-lD (PC_Shopping)
※ 文章網址: https://www.ptt.cc/bbs/PC_Shopping/M.1764689918.A.BCD.html
Saren: 讚哦 我的prime x370還在服役中1F 61.224.57.202 台灣 12/02 23:49
AM4真的讚 但現在板子不好買了 希望別掛掉
sdbb: 謝謝2F 112.104.153.164 台灣 12/02 23:59
bodhi: 入境隨俗3F 114.36.96.9 台灣 12/03 00:03
E7lijah: 雖然門外漢不太懂但還是推分享4F 27.242.99.64 台灣 12/03 00:10
Destiny6: 感謝分享5F 1.171.147.190 台灣 12/03 00:10
bodhi: 風氣6F 114.36.96.9 台灣 12/03 00:18
AbeNana: 怎麼有JB...7F 114.136.145.58 台灣 12/03 00:38
roger788 roger788
ATND: 推8F 118.168.234.43 台灣 12/03 00:40
※ 編輯: NCTUFAIWEN (1.34.178.145 臺灣), 12/03/2025 00:45:33
Koogeal: 小丑被A桶了.嘻嘻*(專業文推一個)9F 59.115.38.228 台灣 12/03 00:52
smallreader: 推10F 111.254.155.154 台灣 12/03 00:53
BABU1990: 感謝大大無私分享,本來打算搞完一般服務就放置,看到這篇之後一定要搞一搞了11F 220.130.152.29 台灣 12/03 01:04
s25g5d4: 清一下灰塵好嗎...
reset bug fix 在 6000 系顯卡 (Navi20)之後就沒用了,之後只能賭看看卡本身有沒有 reset bug13F 1.34.245.37 台灣 12/03 01:05
pphyy5844548: 推17F 39.15.25.255 台灣 12/03 01:24
chenteddy: JB
補推18F 223.137.210.75 台灣 12/03 02:45
litwild: 看個yt 、打個電動這麼累20F 223.137.60.20 台灣 12/03 06:05
a22663564: 常駐等於一天要2.5度電,還不含作動功21F 180.214.182.79 台灣 12/03 07:02
kanding255: 直通內顯有什麼好處 效能好很多嗎23F 49.217.61.139 台灣 12/03 07:05
spfy: 自己動手樂趣多 合理24F 223.137.27.91 台灣 12/03 07:20
kaj1983: 這操作太騷了25F 218.166.17.13 台灣 12/03 07:59
autoupdate: 推26F 42.70.118.14 台灣 12/03 08:11
s78513221: 太麻煩了 玩直通或虛擬化還是偏好
Intel,只要開SRIOV就解決了不折騰27F 42.79.134.11 台灣 12/03 08:22
harry886901: 之前玩12700k 直通也是搞得要死要活29F 101.12.146.195 台灣 12/03 08:27
nisioisin: 用不到但給技術分享給推30F 101.14.6.76 台灣 12/03 09:18
w1222067: 不能被發現看不懂 先推31F 111.82.178.110 台灣 12/03 09:23
ARui: 感謝分享32F 203.204.58.36 台灣 12/03 09:57
neoark: 推實作心得,以後買小主機可以參考33F 101.8.139.25 台灣 12/03 11:39
saito2190: YT上面一堆中國人搞這類All in ONE
有很多解決方案可以參考
我手上幾臺7840HS底層都是PVE
然後通iGPU進去給Win用掛機遊戲
老實說黑群非常難用 不如買TrueNAS或UnRAID 社群多又豐富 XD
我是裝VirtualDisplayDriver 不接螢幕通通用moonlight遠端操作
Intel的SRIOV也不是萬能解 我好幾次Linux Kernel一更新整個跑掉 要重新編譯順帶一提 不同機型的GopDriver不一定能通用,我用GMK K6導出給銘凡UM780不能用,最好還是自己導出自己的34F 1.161.186.114 台灣 12/03 12:37
kuroshizu21: 寫得如此詳細, 即便自己應該不會這樣折騰自己, 還是覺得不推不行 XDDD47F 61.227.59.43 台灣 12/03 13:58
jhjhs33504: 掉驅動問題 NV也曾容器化過渡期調很久49F 1.162.100.219 台灣 12/03 14:18

--