Commit c5c065e9 authored by Michal Berger's avatar Michal Berger Committed by Tomasz Zawadzki
Browse files

scripts/common: Add iommu_groups info to pci cache



Change-Id: Ide868b1d0aec30dfeb281531102c0d465e53a87a
Signed-off-by: default avatarMichal Berger <michal.berger@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/20959


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarJim Harris <jim.harris@samsung.com>
Reviewed-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
parent 67c53372
Loading
Loading
Loading
Loading
+35 −0
Original line number Diff line number Diff line
@@ -50,6 +50,8 @@ cache_pci_init() {
	local -gA pci_bus_driver
	local -gA pci_mod_driver
	local -gA pci_mod_resolved
	local -gA pci_iommu_groups
	local -ga iommu_groups

	[[ -z ${pci_bus_cache[*]} || $CMD == reset ]] || return 1

@@ -59,6 +61,8 @@ cache_pci_init() {
	pci_bus_driver=()
	pci_mod_driver=()
	pci_mod_resolved=()
	pci_iommu_groups=()
	iommu_groups=()
}

cache_pci() {
@@ -82,6 +86,37 @@ cache_pci() {
		pci_mod_driver["$pci"]=$mod
		pci_mod_resolved["$pci"]=$(resolve_mod "$mod")
	fi

	cache_pci_iommu_group "$pci"
}

cache_iommu_group() {
	local iommu_group=$1 pcis=() pci

	[[ -e /sys/kernel/iommu_groups/$iommu_group/type ]] || return 0

	local -n _iommu_group_ref=_iommu_group_$iommu_group

	iommu_groups[iommu_group]="_iommu_group_${iommu_group}[@]"

	for pci in "/sys/kernel/iommu_groups/$iommu_group/devices/"*; do
		pci=${pci##*/}
		[[ -n ${pci_iommu_groups["$pci"]} ]] && continue
		pci_iommu_groups["$pci"]=$iommu_group
		_iommu_group_ref+=("$pci")
	done

}

cache_pci_iommu_group() {
	local pci=$1 iommu_group

	[[ -e /sys/bus/pci/devices/$pci/iommu_group ]] || return 0

	iommu_group=$(readlink -f "/sys/bus/pci/devices/$pci/iommu_group")
	iommu_group=${iommu_group##*/}

	cache_iommu_group "$iommu_group"
}

cache_pci_bus_sysfs() {