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

setup.sh: Add basic function for handling status option on FreeBSD



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


Community-CI: Mellanox Build Bot
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
parent 18c02887
Loading
Loading
Loading
Loading
+60 −1
Original line number Diff line number Diff line
@@ -703,6 +703,65 @@ function status_linux() {
	done
}

function status_freebsd() {
	local id pci
	local ioat idxd vmd

	status_print() (
		local dev driver

		echo -e "BDF\t\tVendor\tDevice\tDriver"

		for id; do
			for pci in ${pci_bus_cache["$id"]}; do
				driver=$(pciconf -l "pci$pci")
				driver=${driver%@*}
				printf '%s\t%s\t%s\t%s\n' \
					"$pci" \
					"${pci_ids_vendor["$pci"]}" \
					"${pci_ids_device["$pci"]}" \
					"$driver"
			done
		done
	)

	devs=PCI_DEVICE_ID_INTEL_IOAT
	devs+="|PCI_DEVICE_ID_INTEL_IDXD"
	devs+="|PCI_DEVICE_ID_INTEL_VMD"

	local dev_type dev_id
	while read -r _ dev_type dev_id; do
		case "$dev_type" in
			*IOAT*) ioat+=("0x8086:$dev_id") ;;
			*IDXD*) idxd+=("0x8086:$dev_id") ;;
			*VMD*) vmd+=("0x8086:$dev_id") ;;
		esac
	done < <(grep -E "$devs" "$rootdir/include/spdk/pci_ids.h")

	local contigmem=present
	if ! kldstat -q -m contigmem; then
		contigmem="not present"
	fi

	cat <<- BSD_INFO
		Contigmem ($contigmem)
		Buffer Size: $(kenv hw.contigmem.buffer_size)
		Num Buffers: $(kenv hw.contigmem.num_buffers)

		NVMe devices
		$(status_print 0x010802)

		I/IOAT DMA
		$(status_print "${ioat[@]}")

		IDXD DMA
		$(status_print "${idxd[@]}")

		VMD
		$(status_print "${vmd[@]}")
	BSD_INFO
}

function configure_freebsd_pci() {
	local devs ids id
	local BDFS
@@ -805,7 +864,7 @@ else
	elif [ "$mode" == "cleanup" ]; then
		echo "setup.sh cleanup function not yet supported on $os"
	elif [ "$mode" == "status" ]; then
		echo "setup.sh status function not yet supported on $os"
		status_freebsd
	elif [ "$mode" == "help" ]; then
		usage $0
	else