Eu tenho um processador AMD A4-5300 com uma placa-mãe que suporta o IOMMU e estou tentando habilitar o IOMMU no kernel do Gentoo Hardened 4.3.3-r4 com a intenção de usar uma placa gráfica em uma VM KVM. De acordo com este guia aqui , devo recompilar meu kernel com algumas opções fornecidas ("Suporte para Remapeamento de Dispositivos DMA "," Ativar Dispositivos Remapeamento de DMA "e" Driver PCI Stub "). No entanto, "Suporte para Remapeamento de Dispositivos DMA" e "Ativar Remapeamento de Dispositivos DMA" estão ausentes da configuração do meu kernel.
Em seguida, procurei na configuração "remapear" e tentei ativar várias opções, que eram CONFIG_IRQ_REMAP, CONFIG_DMAR_TABLE, CONFIG_IOMMU_SUPPORT, CONFIG_SWIOTLB e CONFIG_PCI_IOV. Então eu recompilei meu kernel com estas opções ativadas, iniciei meu sistema com amd_iommu=fullflush iommu=force
na linha de comando do kernel, e de acordo com o guia mencionado verifiquei se o IOMMU estava rodando em meu sistema procurando por "AMD-Vi" em minhas mensagens do kernel :
dmesg | grep AMD-Vi
Nada aparece no meu log do kernel sobre o AMD-Vi.
Além disso, quando tento iniciar uma VM no virt-manager com um dispositivo PCI conectado, recebo uma mensagem que diz "Erro ao iniciar o domínio: configuração não suportada: o host não suporta passagem de dispositivos PCI host ".
Praticamente tudo o que eu encontro é para o Fedora, Ubuntu e Debian, onde o IOMMU aparentemente simplesmente funciona fora da caixa. Eu não acredito que seja uma questão de minha placa-mãe e CPU não suportarem, porque meu BIOS tem uma opção para isso, e porque eu me lembro de poder há alguns anos rodar uma VM VirtualBox com o IOMMU no Debian (embora eu não tenha t follow up on it porque eu nunca pensei no momento que eu precisei de duas placas gráficas para usar uma GPU em uma VM através do IOMMU).
Veja o que eu já tentei, mas não funcionou:
- Usando o kernel padrão em vez de endurecido.
- Ativando Drivers de dispositivos > > Suporte de Hardware IOMMU , suporte AMD IOMMU , Suporte para Intel IOMMU usando DMA Remapping Devices , Suporte para Remapeamento de Interrupções e Opções de barramento (PCI etc.) > > PCI Stub .
- Usando o kernel mais recente, atualmente apenas atualizado para o 4.4.8-endurecido-r1.
Esta é a linha de comando que estou usando para iniciar meu kernel, com cada parâmetro em uma linha separada por conveniência:
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
Ainda sinto falta de uma opção de configuração do kernel?
Atualização: Fora de distração eu erroneamente emiti ps -ef | grep -i iommu
, e veja o que acabei de encontrar ...
rockshooter ~ # ps -ef | grep iommu
root 66 2 0 02:57 ? 00:00:00 [amd_iommu_v2]
Se eu vir um encadeamento de kernel, acho que pode haver uma chance de que eu possa executar o IOMMU, só que meu kernel não está dizendo nada sobre isso. É apenas um palpite ... mas vou seguir em frente e tentar usá-lo.