AMD IOMMU용 젠투 커널을 어떻게 컴파일합니까?

AMD IOMMU용 젠투 커널을 어떻게 컴파일합니까?

IOMMU를 지원하는 마더보드가 있는 AMD A4-5300 CPU가 있고 KVM VM에서 그래픽 카드를 사용하려는 의도로 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커널 명령줄에서 시스템을 시작한 다음 앞서 언급한 가이드에 따라 커널 메시지에서 "AMD-Vi"를 찾아 시스템에서 IOMMU가 실행되고 있는지 확인했습니다.

dmesg | grep AMD-Vi

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

또한 PCI 장치가 연결된 virt-manager에서 VM을 시작하려고 하면 다음과 같은 메시지가 나타납니다."도메인 시작 오류: 지원되지 않는 구성: 호스트가 호스트 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는 계속 작동하고 있었지만 커널 로그에 표시되지 않았습니다.하지만 IOMMU 드라이버가 있었고 작동 중이었는데 다음과 같이 실수로 입력했을 때 우연히 알게 ps -ef되었습니다 dmesg.

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

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

이 스레드를 나중에 참고할 수 있도록 저장해 두세요. 이 문제를 파악하는 데 3주 정도 걸렸기 때문입니다. 나는 여전히 이 문제를 설정하고 테스트하는 데 신경을 쓴 것에 대해 다른 포스터에게 +50 평판을 주었습니다.

관련 정보