有关Unraid直通核显给虚拟机报错的问题

有关Unraid直通核显给虚拟机报错的问题

Aming
2021-02-27 / 7 评论 / 328 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2021年04月20日,已超过149天没有更新,若内容或图片失效,请留言反馈。

记录一则有关Unraid直通核显给虚拟机开机后报以下错误的解决办法:

Feb 26 21:40:30 Tower kernel: dmar_fault: 1799 callbacks suppressed
Feb 26 21:40:30 Tower kernel: DMAR: DRHD: handling fault status reg 3
Feb 26 21:40:30 Tower kernel: DMAR: [DMA Read] Request device [00:02.0] fault addr 80829000 [fault reason 06] PTE Read access is not set
Feb 26 21:40:30 Tower kernel: DMAR: DRHD: handling fault status reg 3
Feb 26 21:40:30 Tower kernel: DMAR: [DMA Read] Request device [00:02.0] fault addr 80840000 [fault reason 06] PTE Read access is not set
Feb 26 21:40:30 Tower kernel: DMAR: DRHD: handling fault status reg 3
Feb 26 21:40:30 Tower kernel: DMAR: [DMA Read] Request device [00:02.0] fault addr 80829000 [fault reason 06] PTE Read access is not set
Feb 26 21:40:30 Tower kernel: DMAR: DRHD: handling fault status reg 3
Feb 26 21:40:35 Tower kernel: dmar_fault: 1793 callbacks suppressed
Feb 26 21:40:35 Tower kernel: DMAR: DRHD: handling fault status reg 3
Feb 26 21:40:35 Tower kernel: DMAR: [DMA Read] Request device [00:02.0] fault addr 80840000 [fault reason 06] PTE Read access is not set
Feb 26 21:40:35 Tower kernel: DMAR: DRHD: handling fault status reg 3
Feb 26 21:40:35 Tower kernel: DMAR: [DMA Read] Request device [00:02.0] fault addr 80829000 [fault reason 06] PTE Read access is not set
Feb 26 21:40:35 Tower kernel: DMAR: DRHD: handling fault status reg 3
Feb 26 21:40:35 Tower kernel: DMAR: [DMA Read] Request device [00:02.0] fault addr 80840000 [fault reason 06] PTE Read access is not set
Feb 26 21:40:35 Tower kernel: DMAR: DRHD: handling fault status reg 3

前言

Unraid核显我是直通给群辉918+的,群辉里emby硬解一直正常使用。
今天unraid无缘无故重启,本想查询一下日志看是什么问题导致的重启。结果一看,一直在重复着跑这些错误码(下图),我不知道这状况是什么时候发生的,以前从来没看过Unraid本机的日志,目前看来虽然一直在跑这些玩意,但没有影响使用,各虚拟机docker一切正常,只是隔几天就会自动重启一次UNRAID。
klndgv1w.png

测试

经过测试,只要不启动直通核显的黑群辉虚拟机,不会报这些错误,问题还是出在核显上。
查找各种资料,试了很多什么加上intel_iommu = igfx_off,intel_iommu = off的方法均无果;没办法,只能用排除法,我又用其他U盘从做了unraid启动盘作为测试,按原来的配置启动群辉,问题依旧。

转折

静下心来仔细分析了一下日志
首先是kernel(内核)报错,其次DMAR是和内存有关,00:02.0设备是UHD630核显,后两条信息一结合,核显的显存是和内存共享的,顿时就想:会不会是核显的内存也就是显存的问题导致的? 表情

想到这,又想起来前几个月折腾直通核显给Mac OS时出现的问题:直通核显给黑苹果,开机后只显示7M的显存(当时没关注系统日志是否也报这个错误),当时折腾黑苹果只是为了玩玩尝尝鲜,核显直通没成功就一直用的VNC,也没太细究。现在结合这个问题,猜想是不是Unraid引导启动的时候给核显分配显存不够导致的问题?表情

而bios里的显存我选的是的自动分配,我觉得很有可能就是这个问题,于是我抱着试试看的心态把BIOS显存由自动修改为1024M(最高就这个选项)。

Unraid开机后内存比原来多占用将近1G。开启黑群辉虚拟机,那些错误一条都没有了。表情

结论

我的猜测是:
当BIOS开启自动分配显存后,Unraid启动的时候只会分配了少量的显存用于开机显示,然后虚拟机启动时需要的显存量>Unraid系统已分配的显存,又不能动态调整显存就会报上文提到内存的错误。
例:如群辉918+启动时需要256M显存而unraid启动核显的时候只分配了64M,然后又不能动态调整显存,就一直报这些错误。
当然这只是我个人的假设,不是太懂Linux底层,问题已经解决了我也不想详细测试了。只是记录下我遇到这个问题的解决方法,给后人遇到这种问题留一个解决问题的思路。表情

4

评论 (7)

取消
  1. 头像
    xxx
    Windows 10 · Google Chrome

    看看

    回复
  2. 头像
    captain
    iPhone · Safari

    看一下

    回复
  3. 头像
    王铁手
    MacOS · Google Chrome

    厉害

    回复
  4. 头像
    白雪
    Windows X64 · Google Chrome

    不错

    回复
  5. 头像
    轻轻松松
    Android · Google Chrome

    康康

    回复
  6. 头像
    小鱼儿
    Windows 10 · QQ Browser

    看看~表情

    回复
  7. 头像
    12
    Windows 10 · Google Chrome

    卡看你

    回复