#!/bin/sh

DIRS=$(find /sys/kernel/iommu_groups -type d | grep devices)
DEVLIST="/tmp/lspci.$(basename $0)"

if [ -z "${DIRS}" ]; then
	echo "IOMMU inactive"
	exit 1
fi

lspci -nn > $DEVLIST

for _d in $DIRS; do
	_no=$(echo ${_d} | sed -e 's/.*groups\///' -e 's/\/.*//')
	echo "IOMMU group ${_no}"
	for _dev in $(ls "${_d}"); do
		_dev=$(echo ${_dev} | sed 's/[0-9]*://')
		_driver=$(readlink "/sys/bus/pci/devices/0000:${_dev}/driver")
		[ -n "${_driver}" ] && _driver=$(basename ${_driver})
		echo -e "\t$(cat $DEVLIST | grep ^${_dev}); driver=${_driver}"
	done
done

rm $DEVLIST
