Eu tenho uma placa-mãe MSI-GD65 Gaming e uma Intel i7 4790. O VT-D está ativado na seção Recursos da CPU da BIOS.
Estou executando o Ubuntu 14.04.1 LTS e quando tento desanexar um dispositivo, recebo a seguinte mensagem:
# virsh nodedev-desanexar pci_0000_00_1f_2
erro: falha ao desconectar o dispositivo pci_0000_00_1f_2 erro: operação não suportada: nem a atribuição de dispositivo VFIO nem KVM é suportada atualmente neste sistema
O Dmesg inclui algumas informações sobre o IOMMU, mas não sei dizer se isso significa que o VT-D está ativado
$ dmesg | grep -i iommu
[0.027450] dmar: IOMMU 0: reg_base_addr fed90000 ver 1: 0 limite c0000020660462 ecap f0101a
[0.027455] dmar: IOMMU 1: reg_base_addr fed91000 ver 1: 0 limite d2008020660462 ecap f010da
[0.027521]
Alguém pode aconselhar o que preciso fazer para ativar o VT-D neste sistema e passar dispositivos PCI aos convidados da KVM, por favor?
fonte
Respostas:
A solução para esse problema é habilitar o IOMMU nos parâmetros de inicialização do GRUB.
Você pode fazer isso configurando o seguinte em / etc / default / grub
Se você estiver usando um processador AMD, deverá anexar
amd_iommu=on
os parâmetros de inicialização.Em seguida, execute
update-grub
e reinicieEste link me ajudou bastante: https://www.centos.org/forums/viewtopic.php?f=47&t=48115
Veja também: https://pve.proxmox.com/wiki/Pci_passthrough
Isso me escapou um pouco, pois eu acreditava que o iommu era uma alternativa da AMD ao VT-D.
fonte
Adicionando à resposta do Anonymouslemming: Parece haver um bug no Ubuntu (18.04 para mim), que faz com que a configuração do GRUB_CMDLINE_LINUX_DEFAULT no / etc / default / grub seja ignorada.
Pode ser corrigido comentando o GRUB_CMDLINE_LINUX_DEFAULT em /etc/default/grub.d/50-curtin-settings.cfg
https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1569567
fonte
Você parece ter os requisitos de hardware porque outro módulo está usando (IOAPIC). Nesse caso, você precisa simplesmente configurar a extremidade do software.
Parece que você precisa ter todos os pré-requisitos instalados para dar suporte ao desanexação do dispositivo apropriado. Parece que você não os tem instalado ou eles não estão configurados.
Você precisa ter as bibliotecas e módulos de kernel apropriados instalados e inicializados antes de tentar usá-los em um caso como este. Esses serão vários utilitários de sistema "host" e módulos de kernel para sua configuração do KVM.
Você precisa ler a seção do manual sobre como configurar adequadamente sua solução KVM apropriada e seguir essas etapas antes de tentar executar apenas os utilitários. Eles não configuram simplesmente no primeiro lançamento apenas porque os pacotes necessários estão instalados.
Observe que, se o dispositivo em questão estiver incorporado na placa-mãe, ele pode não ser tecnicamente um dispositivo PCI, mas um dispositivo mapeado por PCI. Esses dispositivos são realmente conectados por outros meios, mas são mapeados para o espaço do BIOS PCI usando o BIOS. Eles podem ou não ser compatíveis com o desapego do dispositivo, dependendo de vários aspectos de como estão conectados ao sistema.
Além disso, talvez você não consiga desconectar sub-dispositivos sem desconectar dispositivos-pai, se seus drivers forem interdependentes. Você pode desconectar apenas dispositivos com absoluta certeza de quem é o dispositivo pai, o controlador PCI, o PCI Bridge ou algum outro controlador ou ponte de barramento suportado
fonte
Estou no centos7
Eu tive esse erro que me levou até aqui, mas meu problema não era atualizar o (no meu caso)
vim /etc/sysconfig/grub
e adicionarintel_iommu=on
ao final da linha paraGRUB_CMDLINE_LINUX
Eu tive que executar esse comando
então reinicie
Nota: No entanto, também executei o grub2-mkconfig com uma reinicialização antes do comando acima e isso não fez nada para mim pelo que vi.
referência: https://bugzilla.redhat.com/show_bug.cgi?id=1269446
Comentários 11 e 12
fonte