From 03e2374c93d0d6d3ca431ddce2bcd1476636595a Mon Sep 17 00:00:00 2001 From: Michal Berger Date: Tue, 14 Feb 2023 15:41:21 +0100 Subject: [PATCH] test/nvme/cmb: Use get-pmr as fallback Under latest kernels the cmb* attributes are not present under the sysfs anymore. See: https://bugzilla.kernel.org/show_bug.cgi?id=217037 this is a regression that was fixed in 6.2 kernel. Until we jump to that release, we need to have a workaround in place. Signed-off-by: Michal Berger Change-Id: Ia659518224899cbb3e9cef19681a457c945a9c96 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/16776 Reviewed-by: Konrad Sztyber Reviewed-by: Tomasz Zawadzki Tested-by: SPDK CI Jenkins --- test/nvme/cmb/cmb.sh | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/test/nvme/cmb/cmb.sh b/test/nvme/cmb/cmb.sh index bef9a6683..b587fef85 100755 --- a/test/nvme/cmb/cmb.sh +++ b/test/nvme/cmb/cmb.sh @@ -79,13 +79,25 @@ xtrace_disable # read 0 from the CMBSZ register (meaning CMB is either not supported # or the CMBMSC.CRE bit was cleared). +# FIXME: This is akward but under latest kernels, >=6.1.9, the cmb* attrs +# are gone. Do a quick fallback check via get-pmr and skip registry dump. +mapfile -t get_pmr < <("$rootdir/scripts/get-pmr") + cmb_nvmes=() for nvme in /sys/class/nvme/nvme+([0-9]); do - [[ -e $nvme/cmb ]] || continue - cmb_nvmes+=("$(< "$nvme/address")") + pci=$(< "$nvme/address") + if [[ ! -e $nvme/cmb ]]; then + if printf '%s\n' "${get_pmr[@]}" | grep -qE "$pci.+:cmb"; then + cmb_nvmes+=("$pci") + fi + # Skip the detailed printout as there's no relevant info to display + # in this case. + continue + fi + cmb_nvmes+=("$pci") printf '* %s (%s:%s:%s:%s) CMB:\n' \ "${nvme##*/}" \ - "$(< "$nvme/address")" \ + "$pci" \ "$(< "$nvme/model")" \ "$(< "$nvme/serial")" \ "$(< "$nvme/transport")"