~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/tools/testing/selftests/dt/test_unprobed_devices.sh

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 #!/bin/bash
  2 # SPDX-License-Identifier: GPL-2.0
  3 #
  4 # Copyright (c) 2023 Collabora Ltd
  5 #
  6 # Based on Frank Rowand's dt_stat script.
  7 #
  8 # This script tests for devices that were declared on the Devicetree and are
  9 # expected to bind to a driver, but didn't.
 10 #
 11 # To achieve this, two lists are used:
 12 # * a list of the compatibles that can be matched by a Devicetree node
 13 # * a list of compatibles that should be ignored
 14 #
 15 
 16 DIR="$(dirname $(readlink -f "$0"))"
 17 
 18 source "${DIR}"/../kselftest/ktap_helpers.sh
 19 
 20 PDT=/proc/device-tree/
 21 COMPAT_LIST="${DIR}"/compatible_list
 22 IGNORE_LIST="${DIR}"/compatible_ignore_list
 23 
 24 ktap_print_header
 25 
 26 if [[ ! -d "${PDT}" ]]; then
 27         ktap_skip_all "${PDT} doesn't exist."
 28         exit "${KSFT_SKIP}"
 29 fi
 30 
 31 nodes_compatible=$(
 32         for node in $(find ${PDT} -type d); do
 33                 [ ! -f "${node}"/compatible ] && continue
 34                 # Check if node is available
 35                 if [[ -e "${node}"/status ]]; then
 36                         status=$(tr -d '\000' < "${node}"/status)
 37                         if [[ "${status}" != "okay" && "${status}" != "ok" ]]; then
 38                                 if [ -n "${disabled_nodes_regex}" ]; then
 39                                         disabled_nodes_regex="${disabled_nodes_regex}|${node}"
 40                                 else
 41                                         disabled_nodes_regex="${node}"
 42                                 fi
 43                                 continue
 44                         fi
 45                 fi
 46 
 47                 # Ignore this node if one of its ancestors was disabled
 48                 if [ -n "${disabled_nodes_regex}" ]; then
 49                         echo "${node}" | grep -q -E "${disabled_nodes_regex}" && continue
 50                 fi
 51 
 52                 echo "${node}" | sed -e 's|\/proc\/device-tree||'
 53         done | sort
 54         )
 55 
 56 nodes_dev_bound=$(
 57         IFS=$'\n'
 58         for dev_dir in $(find /sys/devices -type d); do
 59                 [ ! -f "${dev_dir}"/uevent ] && continue
 60                 [ ! -d "${dev_dir}"/driver ] && continue
 61 
 62                 grep '^OF_FULLNAME=' "${dev_dir}"/uevent | sed -e 's|OF_FULLNAME=||'
 63         done
 64         )
 65 
 66 num_tests=$(echo ${nodes_compatible} | wc -w)
 67 ktap_set_plan "${num_tests}"
 68 
 69 retval="${KSFT_PASS}"
 70 for node in ${nodes_compatible}; do
 71         if ! echo "${nodes_dev_bound}" | grep -E -q "(^| )${node}( |\$)"; then
 72                 compatibles=$(tr '\000' '\n' < "${PDT}"/"${node}"/compatible)
 73 
 74                 for compatible in ${compatibles}; do
 75                         if grep -x -q "${compatible}" "${IGNORE_LIST}"; then
 76                                 continue
 77                         fi
 78 
 79                         if grep -x -q "${compatible}" "${COMPAT_LIST}"; then
 80                                 ktap_test_fail "${node}"
 81                                 retval="${KSFT_FAIL}"
 82                                 continue 2
 83                         fi
 84                 done
 85                 ktap_test_skip "${node}"
 86         else
 87                 ktap_test_pass "${node}"
 88         fi
 89 
 90 done
 91 
 92 ktap_print_totals
 93 exit "${retval}"

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php