Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 09/06/2022, à 14:52

thewisepenguin

Vieille carte nvidia et libvirt GPU passthrough

Bonjour,


J'ai une très vieille carte nvidia (NVIDIA Corporation GF108 [GeForce GT 430]) que je voudrais utiliser en GPU passthrough à une VM pour faire du transcoding avec Jellyfin (docker). (oui, je sais, le niveau d'inception n'est pas négligeable :-p)

Je me permets de poster sur ce forum car j'ai vu dans un autre thread de ce forum quelqu'un (diesel) qui a la même carte et qui l'a fait fonctionner sur Ubuntu 20.04.

Voici des infos sur ma config.

Ubuntu Server 20.04 (HOST):

$ lspci -vvn
...
82:00.0 0300: 10de:0de1 (rev a1) (prog-if 00 [VGA controller])
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin A routed to IRQ 113
	NUMA node: 1
	Region 0: Memory at c8000000 (32-bit, non-prefetchable) [size=16M]
	Region 1: Memory at 3fff0000000 (64-bit, prefetchable) [size=128M]
	Region 3: Memory at 3fff8000000 (64-bit, prefetchable) [size=32M]
	Region 5: I/O ports at 8000 [size=128]
	Expansion ROM at c9080000 [disabled] [size=512K]
	Capabilities: <access denied>
	Kernel driver in use: vfio-pci
	Kernel modules: nvidiafb, nouveau
...

Ubuntu 20.04 Server (GUEST):

$ lspci -vvn
...
09:00.0 0300: 10de:0de1 (rev a1) (prog-if 00 [VGA controller])
	Physical Slot: 0-8
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin A routed to IRQ 23
	Region 0: Memory at f8000000 (32-bit, non-prefetchable) [size=16M]
	Region 1: Memory at d8000000 (64-bit, prefetchable) [size=128M]
	Region 3: Memory at e0000000 (64-bit, prefetchable) [size=32M]
	Region 5: I/O ports at c000 [size=128]
	Expansion ROM at f9000000 [disabled] [size=512K]
	Capabilities: <access denied>
	Kernel driver in use: nvidia
	Kernel modules: nvidiafb, nouveau, nvidia_drm, nvidia

Sur base des conseils de ce post, j'ai installé le nvidia-headless-390 qui me permet de voir que le module est bien chargé:

Ubuntu Server 20.04 (GUEST):

$ lsmod | grep nvidia
nvidia_uvm            798720  0
nvidia_drm             45056  0
nvidia_modeset       1056768  1 nvidia_drm
nvidia              15847424  2 nvidia_uvm,nvidia_modeset
drm_kms_helper        184320  4 qxl,nvidia_drm
ipmi_msghandler       106496  2 ipmi_devintf,nvidia
drm                   491520  5 drm_kms_helper,qxl,nvidia_drm,ttm

Le problème: nvidia-smi ne fonctionne pas, que ce soit sur le GUEST ou via docker (en ayant suivi la doc officielle de nvidia pour le fait de passer les GPUs nvidia dans les containers docker):

Ubuntu Server 20.04 (GUEST):

$ nvidia-smi 
Unable to determine the device handle for GPU 0000:09:00.0: Unknown Error

$ docker run --rm --gpus all nvidia/cuda:11.0.3-base-ubuntu20.04 nvidia-smi
docker: Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error running hook #0: error running hook: exit status 1, stdout: , stderr: nvidia-container-cli: detection error: nvml error: unknown error: unknown.

La parite de l'XML que j'ai modifié pour le passthrough:

...
  <cpu mode='host-passthrough' check='partial'>
    <feature policy='disable' name='vmx'/>
  </cpu>
...
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x82' slot='0x00' function='0x0'/>
      </source>
      <alias name='hostdev0'/>
      <address type='pci' domain='0x0000' bus='0x09' slot='0x00' function='0x0'/>
    </hostdev>
...

Est-ce que c'est un soucis de hardware?
Est-ce que c'est un problème de "c'est beaucoup trop vieux"?
Est-ce que c'est trop d'essayer de le passer en "passthrough"?
Autre?

Merci d'avance pour votre aide!

Hors ligne