![Intel 시스템에서 사용되는 IOMMU 구성은 무엇입니까?](https://linux55.com/image/220980/Intel%20%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%97%90%EC%84%9C%20%EC%82%AC%EC%9A%A9%EB%90%98%EB%8A%94%20IOMMU%20%EA%B5%AC%EC%84%B1%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
커널 부팅 옵션(https://www.kernel.org/doc/Documentation/x86/x86_64/boot-options.txt) 다음 옵션을 발견했습니다.
iommu=[<size>][,noagp][,off][,force][,noforce]
[,memaper[=<order>]][,merge][,fullflush][,nomerge]
[,noaperture][,calgary]
General iommu options:
off Don't initialize and use any kind of IOMMU.
noforce Don't force hardware IOMMU usage when it is not needed.
(default).
force Force the use of the hardware IOMMU even when it is
not actually needed (e.g. because < 3 GB memory).
soft Use software bounce buffering (SWIOTLB) (default for
Intel machines). This can be used to prevent the usage
of an available hardware IOMMU.
iommu=soft는 Intel 시스템의 기본 옵션이며 하드웨어 IOMMU 사용을 방지하는 데 사용할 수 있다고 언급합니다.
그렇다면 이 옵션이 Intel 시스템의 기본값인 경우 Intel 시스템은 하드웨어 IOMMU를 사용하지 않습니까, 아니면 기본적으로 하드웨어 IOMMU + 소프트웨어 바운스 버퍼를 사용합니까?
또한 부팅 후 커널에서 어떤 IOMMU 구성이 사용되고 있는지 확인할 수 있는 방법이 있습니까?
답변1
이 iommu=soft
옵션은 IOMMU가 없거나 IOMMU가 비활성화된 시스템에 대한 소프트웨어 해결 방법입니다. 이 해결 방법을 소프트웨어 IO TLB(SWIOTLB)라고 합니다. SWIOTLB는 IOMMU가 없는 시스템이 장치에서 DMA 작업을 안전하게 수행할 수 있도록 하는 메커니즘입니다.
설정되면 iommu=soft
(Intel 시스템의 기본값) Linux 커널은 기본적으로 SWIOTLB를 사용합니다. 이것은 실제로아니요하드웨어 IOMMU가 사용되지 않음을 나타냅니다.의 경우Linux 커널은 하드웨어 IOMMU가 iommu=soft
설정되어 있더라도 사용 가능하고 작동하는 경우 하드웨어 IOMMU를 사용하도록 설계되었기 때문에 사용할 수 있습니다. SWIOTLB 메커니즘은 하드웨어 IOMMU를 사용할 수 없는 경우 대체 솔루션에 가깝습니다.
시작 후 IOMMU 구성을 확인하려면 명령을 사용할 수 있습니다 dmesg | grep -i iommu
.