If you want more of my pastes visit: https://randompaste.000webhostapp.com/index.html -------------------------------------------------------------------------------------- view my last post at: https://bitbin.it/47LTjqoD/ -------------------------------------------------------------------------------------- #!/usr/bin/env python3 import os, subprocess, sys from contextlib import suppress if "-h" in sys.argv: with suppress(subprocess.CalledProcessError): print(subprocess.check_output(["lspci", "-h"], universal_newlines=True)) exit(0) if "-s" in sys.argv or "-d" in sys.argv: print("Do not use -s or -d selectors, the script does that for you.", file=sys.stderr) exit(1) groups = sorted(os.scandir("/sys/kernel/iommu_groups"), key=lambda de: int(de.name)) for i, group in enumerate(groups): assert group.is_dir(follow_symlinks=False) if i > 0: print() print(f"Group {int(group.name):2d}:") devicespath = os.path.join(group, "devices") devices = sorted(os.scandir(devicespath), key=lambda de: int(de.name.translate(str.maketrans("", "", ":.")), 16)) for device in devices: assert device.is_symlink() assert device.is_dir(follow_symlinks=True) lspci = subprocess.check_output(["lspci", "-s", device.name] + sys.argv[1:], stderr=subprocess.STDOUT, universal_newlines=True) print(lspci.strip()) print()