目标
在 Windows VM 中使用 GPU。
方法
Passthrough GPU。 其实 Linux 那边有很成熟的方法了,不过 FreeBSD 这边还有问题。
MMIO
NVidia 显卡有4个BAR:
- 16M 的BAR0,据说有各种控制寄存器,主要控制接口。
- 256M 的BAR1,据说是显存窗口。
- 32M 的BAR3,据说其实也是显存窗口。
- 128 字节的IO Ports,据说可以在实模式访问显存。
Interrupt
MSI
验证
Guest to Card: 已确认,Guest中访问mapped bar符合host访问结果 MSI: nouveau可正常设置中断,有中断产生。
问题
目前载入nouveau经常碰到的问题是初始化失败:在gp102_disp_dmac_init()里面,会有初始化超时。 这个超时貌似是在初始化DMA channel之后,等待DMA引擎空闲超时。看来DMA那边还是有问题。
参考资料
Envytools: https://media.readthedocs.org/pdf/envytools/latest/envytools.pdf