vfio-list.hs
1 {-# LANGUAGE OverloadedStrings #-} 2 3 {- | 4 List all NVIDIA GPUs with IOMMU group and driver info. 5 6 Usage: vfio-list 7 8 Shows PCI address, description, IOMMU group, and current driver 9 for each NVIDIA GPU in the system. 10 -} 11 module Main where 12 13 import Aleph.Script hiding (FilePath) 14 import qualified Aleph.Script.Vfio as Vfio 15 import Control.Monad (forM_) 16 import qualified Data.List as L 17 18 main :: IO () 19 main = script $ do 20 echo "═══════════════════════════════════════════════════════════" 21 echo " Available NVIDIA GPUs" 22 echo "═══════════════════════════════════════════════════════════" 23 24 gpus <- Vfio.listNvidiaGpus 25 26 if L.null gpus 27 then echo "\n No NVIDIA GPUs found.\n" 28 else forM_ gpus $ \gpu -> do 29 echo "" 30 echo $ " " <> Vfio.pciAddr gpu 31 case Vfio.pciDesc gpu of 32 Just desc -> echo $ " " <> desc 33 Nothing -> pure () 34 echo $ " IOMMU Group: " <> fromMaybe "N/A" (Vfio.pciIommu gpu) 35 echo $ " Driver: " <> fromMaybe "none" (Vfio.pciDriver gpu) 36 37 echo ""