Linux

在引導核心選項中使用 iommu=force 意味著什麼?

  • July 15, 2021

我必須遵循 linux 作業系統的強化程序,在此程序中它告訴我們核心選項必須具有iommu=force.

它有什麼作用 ?如果不指定有關 iommu 的任何內容,可能有什麼區別?它與我設置的 pci 直通兼容intel_iommu=on嗎?

據我了解,這些選項是相輔相成的,具體來說,iommu管理該技術在系統中的使用,該force值確保它無論如何都會被使用;並且intel_iommu是技術本身,一種 IOMMU 規範 (Intel VT-d),就像 AMD (AMD-Vi) 一樣amd_iommu

只需分析以下配置選項:

一般iommu(輸入/輸出記憶體管理單元)選項:

off

不要初始化和使用任何類型的 IOMMU。

noforce

不要在不需要時強制使用硬體 IOMMU。(預設)。

force

強制使用硬體 IOMMU,即使它實際上並不需要(例如,因為 < 3 GB 記憶體)。

soft

使用軟體反彈緩衝 (SWIOTLB)(英特爾機器的預設設置)。這可用於防止使用可用的硬體 IOMMU。

現在,英特爾 IOMMU:

intel_iommu

$$ DMAR $$英特爾 IOMMU 驅動程序 (DMAR) 選項

DMAR:直接記憶體訪問重映射

on

啟用英特爾 IOMMU 驅動程序。

intel_iommu( off, igfx_off, , …)有更多選項forcedac,但它們與這個問題無關。

我不是這個主題的專家,也許我遺漏了一些東西,所以這裡有一些來源:

iommu和都是intel_iommuLxgrub參數,主要針對SR-IOV直通(pt)模式。

  • iommu=force
    強制使用硬體 IOMMU(“輸入輸出記憶體管理單元”),即使它實際上並不需要(例如,因為 < 3 GB 記憶體)。這如何強化您的執行時?

表現良好的驅動程序在向需要執行 DMA 的設備發送命令之前呼叫 pci_map_() 呼叫。一旦 DMA 完成並且不再需要映射,設備將執行 pci_unmap_() 呼叫以取消映射該區域。英特爾 IOMMU 驅動程序為每個域分配一個虛擬地址。每個 PCIE 設備都被迫擁有自己的域(因此受到保護)。

  • intel_iommu=on

只需在核心中啟用 SR-IOV。

請注意,要獲得最佳性能,請在使用 SR-IOV 時將iommu=pt(傳遞)添加到文件中。grub在直通模式下,適配器不需要對記憶體使用 DMA 轉換,從而提高了性能。iommu=pt主要在需要管理程序性能時需要。查看這個那個以獲取背景資訊。

在此範例中,您的grub文件可能如下所示:

kernel /vmlinuz-Ub15.10x86_64-5.5.15-42-generic root=/dev/sda1 console=tty0 console=ttyS0,115200n8 rhgb intel_iommu=on iommu=pt

高溫高壓

引用自:https://unix.stackexchange.com/questions/592538