PVE硬件直通之强制IOMMU分组

这篇具有很好参考价值的文章主要介绍了PVE硬件直通之强制IOMMU分组。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

检查是否直接支持IOMMU分组

下面 以SATA控制器为例,看pci设备是否可以直接支持IOMMU分组

/* 打印pci设备详细信息*/
lspci -vv
/* 找到SATA controller 段落*/
16:00.1 SATA controller: Advanced Micro Devices, Inc. [AMD] Device 43eb (prog-if 01 [AHCI 1.0])
        Subsystem: ASMedia Technology Inc. Device 1062
        Flags: bus master, fast devsel, latency 0, IRQ 34, IOMMU group 8
        Memory at fcf80000 (32-bit, non-prefetchable) [size=128K]
        Expansion ROM at fcf00000 [disabled] [size=512K]
        Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+
        Capabilities: [78] Power Management version 3
        Capabilities: [80] Express Legacy Endpoint, MSI 00
        Capabilities: [100] Advanced Error Reporting
        /* 检查是否存在Capabilities: Access Control Services*/
        Capabilities: [2a0] Access Control Services
        Kernel driver in use: vfio-pci
        Kernel modules: ahci

如果设备信息中支持ACS(Access Control Services),便可直接通过设置开启IOMMU分组。若不支持ACS,需要更新内核,关闭ACS检查,开启IOMMU分组。

由于PCIe设备是支持P2P传输的,这也就意味着同一个PCIe交换开关连接下不同终端可以在不流经RootComplex的情况下互相通信。若使用过程中不希望P2P直接通信又不采取相关措施,则该漏洞很有可能被无意或有意触发,使得某些EP收到无效、非法甚至恶意的访问请求,从而引发一系列潜在问题。ACS协议提供了一种机制,能够决定一个TLP被正常路由、阻塞或重定向。在SR-IOV系统中,还能防止属于VI或者不同SI的设备Function之间直接通信。通过在交换节点上开启ACS服务,可以禁止P2P发送,强迫交换节点将所有地址的访问请求送到RootComplex,从而避开P2P访问中的风险。ACS可以应用于PCIe桥、交换节点以及带有VF的PF等所有具有调度功能的节点,充当一个看门人的角色。

配置IOMMU分组

编辑/etc/modules文件,将如下模块加入文件中

vi /etc/modules

# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

编辑/etc/default/grub文件,修改内容详见注释

vi /etc/default/grub

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
# 在原始GRUB_CMDLINE_LINUX_DEFAULT后加入amd_iommu=on pcie_acs_override=downstream,multifunction
# 若是intel的cpu则将amd_iommu改为intel_iommu即可
# GRUB_CMDLINE_LINUX_DEFAULT="quiet"
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on pcie_acs_override=downstream,multifunction"
GRUB_CMDLINE_LINUX=""
GRUB_DISABLE_OS_PROBER=false
# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"

更新grub引导和ramfs

# 更新grub引导
update-grub
# 更新ramfs
update-initramfs -u -k all

如若正常,所有设备均有独立IOMMU Group 编号
pve开启iommu,pve,开源软件

不直接支持的需要更新内核

提供自己编译好的pve-kernel 6.1.6 百度云链接
将上述文件复制到pve中,执行如下命令更新内核,重启即可。

# 更新内核
dpkg -i *.deb

参考

[1] https://developer.aliyun.com/article/1071405文章来源地址https://www.toymoban.com/news/detail-790730.html

到了这里,关于PVE硬件直通之强制IOMMU分组的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PVE7.2-3直通独显 nvidia 1080ti

    1.编辑/etc/default/grub vim /etc/default/grub 修改对应参数 GRUB_CMDLINE_LINUX_DEFAULT=“quiet intel_iommu=on iommu=pt” 2.编辑/etc/modules (7.2实测不需要不需要!) vim /etc/modules 添加以下几个模块,直接复制即可。 vfio vfio_iommu_type1 vfio_pci vfio_virqfd 3. 阻止驱动加载**(7.2实测不需要!系统默认就有nv

    2023年04月15日
    浏览(35)
  • N5105 12代核显直通 PVE UEFI Windows虚拟机HDMI输出

    本文是我的视频《N5105 PVE UEFI核显直通Windows虚拟机(不完善)》的文字说明版,因为是很久之前做的内容,并且一直没有研究相关问题,所以本方案不一定是目前最合适的。如果有不明白的地方,可参照视频中的操作,如视频与文字版不同,请以文字版为准。 B站:https://www.bi

    2024年02月07日
    浏览(82)
  • PVE7.1 安装完后基础设置:更换国内源、SATA直通、以及基础的网络虚拟机设置 二

    教程参考B站“张三侃弱电”PVE教程。 一、更换源 订阅源文件: 进入nano,“#” 注释掉旧的源,复制中科大源,Ctrl+O 保存、Y、Crlt+X退出、回车: deb https://mirrors.ustc.edu.cn/debian bullseye main contrib non-free deb https://mirrors.ustc.edu.cn/debian bullseye-updates main contrib non-free deb https://mirrors

    2024年02月11日
    浏览(69)
  • PVE安装win10并开启远程桌面

    接上一篇 下载地址:https://next.itellyou.cn/ 现在的win10最新版时22h2,文件名为zh-cn_windows_10_business_editions_version_22h2_updated_dec_2022_x64_dvd_cde06342.iso 如果对更新有要求,建议每月跟踪下载一次 数据中心--pve--local(pve)--右侧 ISO镜像--点击上传 点击选择文件,选择我们下载好的iso文件,然

    2024年02月03日
    浏览(48)
  • IOMMU地址映射

    本文结合vt-directed-io-spec和内核的实现,对IOMMU的地址映射机制有了基础的认识,在此记录。最开始的原因是之前看ATS时对于first-stage和second-stage的困惑,因为近几年引入了pasid模式,IOMMU的映射机制也看起来复杂了很多,所以对整个映射机制进行了梳理。 非pasid机制下,传统的

    2024年02月10日
    浏览(37)
  • 存储系统性能优化中IOMMU的作用是什么?

    IOMMU(Input/Output Memory Management Unit)是一种用于管理计算机内存的技术,它允许将物理内存映射到虚拟地址空间。IOMMU通过使用专用的硬件来管理和优化内存访问,从而提高系统性能和稳定性。本文将详细介绍IOMMU的原理,并介绍一些应用案例和典型的问题解决方案。 一、IOM

    2024年02月11日
    浏览(26)
  • 深入浅出 Linux 中的 ARM IOMMU SMMU I

    在计算机系统架构中,与传统的用于 CPU 访问内存的管理的 MMU 类似,IOMMU (Input Output Memory Management Unit) 将来自系统 I/O 设备的 DMA 请求传递到系统互连之前,它会先转换请求的地址,并对系统 I/O 设备的内存访问事务进行管理和限制。IOMMU 将设备可见的虚拟地址 (IOVA) 映射到物

    2024年02月05日
    浏览(62)
  • 深入浅出 Linux 中的 ARM IOMMU SMMU III

    系统 I/O 设备驱动程序通常调用其特定子系统的接口为 DMA 分配内存,但最终会调到 DMA 子系统的 dma_alloc_coherent() / dma_alloc_attrs() 等接口。 dma_alloc_coherent() / dma_alloc_attrs() 等接口通过 DMA IOMMU 的回调分配内存,并为经过 IOMMU 的 DMA 内存访问准备转换表。之后经过 IOMMU 的 DMA 内存

    2024年01月21日
    浏览(42)
  • PVE虚拟化平台之安装openKylin开源操作系统

    openKylin 1.0版本操作系统目前适配支持X86、ARM、RISC-V三个架构的个人电脑、平板电脑及教育开发板,可以满足绝大多数个人用户及开发者的使用需求!其中ARM架构完成了树莓派Raspberry Pi、易研科技Cool Pi、武汉双椒派Chillie Pi等开发板适配,RISC-V架构完成了赛昉VisonFive2、SiFive H

    2024年02月14日
    浏览(38)
  • PVE安装openwrt后,pve无法联网

    在pve中安装openwrt后,有可能会出现pve系统无法连接外网的问题。 有可能出现以下两种错误: 1 Temporary failure in name resolution 直接报dns的错误 2 failed: Network is unreachable 或Destination Host Unreachable 在第一种情况下,有可能是由于在openwrt中启用了smartDNS等插件,使得PVE不能正确的访问

    2024年02月09日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包