AMD IOMMU용 젠투 커널을 컴파일하는 방법은 무엇입니까?

AMD IOMMU용 젠투 커널을 컴파일하는 방법은 무엇입니까?

IOMMU를 지원하는 마더보드가 있는 AMD A4-5300 CPU가 있고 KVM 가상 머신에서 그래픽 카드를 사용하기 위해 Gentoo Hardened 4.3.3-r4 커널에서 IOMMU를 활성화하려고 합니다. ~에 따르면이 가이드는 여기에 있습니다, 제공된 옵션 중 일부("DMA 재매핑 장치 지원", "DMA 재매핑 장치 활성화" 및 "PCI 스텁 드라이버")를 사용하여 커널을 다시 컴파일해야 합니다. 그러나 "DMA 재매핑 장치 지원" 및 "DMA 재매핑 장치 활성화"가 커널 구성에 없습니다.

그런 다음 구성에서 "재매핑"을 검색하고 CONFIG_IRQ_REMAP, CONFIG_DMAR_TABLE, CONFIG_IOMMU_SUPPORT, CONFIG_SWIOTLB 및 CONFIG_PCI_IOV를 포함한 여러 옵션을 활성화해 보았습니다. 그런 다음 이러한 옵션을 활성화하여 커널을 다시 컴파일하고 amd_iommu=fullflush iommu=force커널 명령줄에서 시스템을 부팅한 다음 위 가이드에 따라 커널 메시지 Run on the system에서 "AMD-Vi"를 찾아 커널에 IOMMU가 있는지 확인했습니다. :

dmesg | grep AMD-Vi

내 커널 로그에는 AMD-Vi에 대한 아무 것도 표시되지 않습니다.

또한 virt-manager에서 PCI 장치가 연결된 가상 머신을 시작하려고 하면 다음 메시지가 나타납니다."도메인 시작 오류: 지원되지 않는 구성: 호스트가 호스트 PCI 장치에 대한 통과를 지원하지 않습니다.".

내가 찾은 거의 모든 것은 IOMMU가 기본적으로 제공되는 Fedora, Ubuntu 및 Debian에서 작동합니다. 내 BIOS에 옵션이 있고 몇 년 전에 Debian에서 IOMMU를 사용하여 VirtualBox VM을 실행할 수 있었던 것을 기억하기 때문에 마더보드와 CPU가 이를 지원하지 않는 문제라고 생각하지 않습니다. 더 이상 가지고 있지 않습니다) (IOMMU를 통해 VM에서 GPU를 사용하려면 두 개의 그래픽 카드가 필요하다고 지금은 생각한 적이 없기 때문입니다).

내가 성공하지 못한 채 시도한 것은 다음과 같습니다.

  1. 강화 코어 대신 표준 코어를 사용하십시오.
  2. ~할 수 있게 하다장치 드라이버 >> IOMMU 하드웨어 지원,AMD IOMMU 지원,DMA를 사용하여 장치를 다시 매핑하면 Intel IOMMU가 지원됩니다.,인터럽트 재매핑 지원그리고버스 옵션(PCI 등) >> PCI 스텁.
  3. 최신 커널을 사용하여 현재 4.4.8-hardened-r1로 업그레이드되었습니다.

다음은 커널을 시작하는 데 사용하는 명령줄입니다. 편의를 위해 각 매개변수를 별도의 줄에 표시합니다.

root=/dev/ram0 
crypt_root=/dev/disk/by-uuid/c1ce6456-4c6a-4a64-8027-5ec4fdc0f344 
dolvm 
real_root=/dev/mapper/cryptgentoo-raiz 
rootfstype=jfs 
real_init=/sbin/init 
root_keydev=/dev/disk/by-partuuid/086194de-e476-4abb-82da-9744e6fb0257 
root_key=luks-key.gpg 
keymap=la 
amd_iommu=on 
iommu=on

제가 놓친 커널 구성 옵션이 있나요?


고쳐 쓰다:ps -ef | grep -i iommu정신이 팔려서, 방금 찾은 것을 보고 보내는 실수를 저질렀습니다 ...

rockshooter ~ # ps -ef | grep iommu
root        66     2  0 02:57 ?        00:00:00 [amd_iommu_v2]

커널 스레드를 보면 IOMMU를 실행할 기회가 있을 것 같지만 단지 내 커널이 이에 대해 아무 말도 하지 않는다는 것뿐입니다. 이것은 단지 터무니없는 추측일 뿐이지만... 계속해서 이를 사용하려고 노력할 것입니다.

답변1

IOMMU 주요 옵션

노력하다 Device Drivers >> IOMMU Hardware Support:

IOMMU 옵션

AMD IOMMU

그런 다음 활성화합니다 AMD IOMMU support.

DMA 재매핑

~할 수 있게 하다Support for Intel IOMMU using DMA Remapping Devices

선택사항: IRQ 재매핑

~할 수 있게 하다Support for Interrupt Remapping

선택 사항: 버전 2 지원 활성화

AMD IOMMU Version 2 driver


PCI 옵션

버스 옵션

Bus options (PCI etc.) >> PCI Stub


grep구성 파일을 사용하지 마십시오 . 원하는 옵션을 검색하려면 항상 menuconfig및 키를 사용하십시오. /연결한 가이드에는 세 가지 문제가 있습니다.

  1. Fedora/Redhat 사용자를 위해 맞춤 제작되었습니다.
  2. #1로 인해 커널 버전이 다르므로 옵션의 위치가 다릅니다.
  3. 젠투 커널은 이 가이드에서 사용된 커널보다 최신 버전입니다.

고쳐 쓰다

내 마더보드는 PCI 패스스루를 지원하기에는 너무 오래되었지만 이제 이러한 옵션이 올바르게 활성화되었음을 보여주고 싶었습니다. 제가 지시한 정확한 옵션을 사용하세요:

IOMMU 주요 옵션

AGP: Checking aperture...
[    0.000000] AGP: No AGP bridge found
[    0.000000] AGP: Node 0: aperture [bus addr 0xc4000000-0xc5ffffff] (32MB)
[    0.000000] Aperture pointing to e820 RAM. Ignoring.
[    0.000000] AGP: Your BIOS doesn't leave an aperture memory hole
[    0.000000] AGP: Please enable the IOMMU option in the BIOS setup
[    0.000000] AGP: This costs you 64MB of RAM
[    0.000000] AGP: Mapping aperture over RAM [mem 0xc4000000-0xc7ffffff] (65536KB)
...
[    0.959270] PCI-DMA: Disabling AGP.
[    0.959337] PCI-DMA: aperture base @ c4000000 size 65536 KB
[    0.959338] PCI-DMA: using GART IOMMU.
[    0.959340] PCI-DMA: Reserving 64MB of IOMMU area in the AGP aperture
...
[    1.375277] AMD IOMMUv2 driver by Joerg Roedel <[email protected]>
[    1.375277] AMD IOMMUv2 functionality not available on this system

답변2

계속 징징거리고, 불평하고, 머리를 흔들고 난 후에 마침내 무슨 일이 일어나고 있는지 알아냈습니다.

그것은 밝혀졌다IOMMU는 항상 작동하지만 커널 로그에는 표시되지 않습니다.ps -ef하지만 IOMMU 드라이버가 있고 작동하고 있는데, 다음과 같이 대신 실수로 입력했을 때 우연히 dmesg다음을 발견했습니다.

rockshooter ~ # ps -ef | grep -i iommu
root        66     2  0 04:19 ?        00:00:00 [amd_iommu_v2]  

커널 스레드가 실행되는 것을 보았을 때 내 IOMMU가 실제로 작동하고 있지 않을까 하는 생각이 들었습니다. 그래서 저는 이전에 Debian에서 했던 것과 동일한 구성 단계를 수행했고, 한 시간 후에 그래픽 카드에 연결된 가상 머신에서 몇 가지 게임을 하고 있었습니다.

이 문제를 해결하는 데 3주가 ​​걸렸으므로 나중에 참고할 수 있도록 이 스레드를 저장해 두십시오. 나는 여전히 이 문제를 설정하고 테스트하는 데 어려움을 겪은 데 대해 다른 포스터에게 +50 크레딧을 제공할 것입니다.

관련 정보