커널에 iommu
활성화
grubby --args="amd_iommu=on intel_iommu=on iommu=pt" --update-kernel DEFAULT
적용 후 리부팅
passthrough 적용할 장치의 정보 조회
$ lspci -Dnn | grep VGA 0000:02:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK106GL [Quadro K4000] [10de:11fa] (rev a1) # 호스트의 그래픽 드라이버가 GPU를 사용하지 못하도록 합니다. 이렇게 하려면 pci-stub 드라이버와 함께 GPU의 PCI ID를 사용합니다. # 예를 들어, 다음 명령은 드라이버가 10de:11fa 버스에 연결된 GPU에 바인딩하지 못하도록 합니다: $ grubby --args="pci-stub.ids=10de:11fa" --update-kernel DEFAULT $ sync; reboot
추가적으로 대부분의 그래픽카드에는 오디오 관련 장치가 같이 탑재되어있으며 해당 장치또한 호스트에 활성장치로 작동하게 된다. 해당 엔드포인트가 호스트 드라이버에 연결되지 않도록 합니다.
이 예제에서는 GPU를 VM에 할당하려면 오디오 기능에 해당하는 엔드포인트인 <address domain='0x0000' bus='0x02' slot='0x00' function='0x1'/>
가 호스트 오디오 드라이버에 연결되지 않도록 하고 대신 엔드포인트를 VFIO-PCI
에 연결합니다.
$ driverctl set-override 0000:02:00.1 vfio-pci $ sync; reboot
이후 해당 장치를 VM에 할당해주면 완료된다.