123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- Notifier error injection
- ========================
- Notifier error injection provides the ability to inject artificial errors to
- specified notifier chain callbacks. It is useful to test the error handling of
- notifier call chain failures which is rarely executed. There are kernel
- modules that can be used to test the following notifiers.
- * CPU notifier
- * PM notifier
- * Memory hotplug notifier
- * powerpc pSeries reconfig notifier
- * Netdevice notifier
- CPU notifier error injection module
- -----------------------------------
- This feature can be used to test the error handling of the CPU notifiers by
- injecting artificial errors to CPU notifier chain callbacks.
- If the notifier call chain should be failed with some events notified, write
- the error code to debugfs interface
- /sys/kernel/debug/notifier-error-inject/cpu/actions/<notifier event>/error
- Possible CPU notifier events to be failed are:
- * CPU_UP_PREPARE
- * CPU_UP_PREPARE_FROZEN
- * CPU_DOWN_PREPARE
- * CPU_DOWN_PREPARE_FROZEN
- Example1: Inject CPU offline error (-1 == -EPERM)
- # cd /sys/kernel/debug/notifier-error-inject/cpu
- # echo -1 > actions/CPU_DOWN_PREPARE/error
- # echo 0 > /sys/devices/system/cpu/cpu1/online
- bash: echo: write error: Operation not permitted
- Example2: inject CPU online error (-2 == -ENOENT)
- # echo -2 > actions/CPU_UP_PREPARE/error
- # echo 1 > /sys/devices/system/cpu/cpu1/online
- bash: echo: write error: No such file or directory
- PM notifier error injection module
- ----------------------------------
- This feature is controlled through debugfs interface
- /sys/kernel/debug/notifier-error-inject/pm/actions/<notifier event>/error
- Possible PM notifier events to be failed are:
- * PM_HIBERNATION_PREPARE
- * PM_SUSPEND_PREPARE
- * PM_RESTORE_PREPARE
- Example: Inject PM suspend error (-12 = -ENOMEM)
- # cd /sys/kernel/debug/notifier-error-inject/pm/
- # echo -12 > actions/PM_SUSPEND_PREPARE/error
- # echo mem > /sys/power/state
- bash: echo: write error: Cannot allocate memory
- Memory hotplug notifier error injection module
- ----------------------------------------------
- This feature is controlled through debugfs interface
- /sys/kernel/debug/notifier-error-inject/memory/actions/<notifier event>/error
- Possible memory notifier events to be failed are:
- * MEM_GOING_ONLINE
- * MEM_GOING_OFFLINE
- Example: Inject memory hotplug offline error (-12 == -ENOMEM)
- # cd /sys/kernel/debug/notifier-error-inject/memory
- # echo -12 > actions/MEM_GOING_OFFLINE/error
- # echo offline > /sys/devices/system/memory/memoryXXX/state
- bash: echo: write error: Cannot allocate memory
- powerpc pSeries reconfig notifier error injection module
- --------------------------------------------------------
- This feature is controlled through debugfs interface
- /sys/kernel/debug/notifier-error-inject/pSeries-reconfig/actions/<notifier event>/error
- Possible pSeries reconfig notifier events to be failed are:
- * PSERIES_RECONFIG_ADD
- * PSERIES_RECONFIG_REMOVE
- * PSERIES_DRCONF_MEM_ADD
- * PSERIES_DRCONF_MEM_REMOVE
- Netdevice notifier error injection module
- ----------------------------------------------
- This feature is controlled through debugfs interface
- /sys/kernel/debug/notifier-error-inject/netdev/actions/<notifier event>/error
- Netdevice notifier events which can be failed are:
- * NETDEV_REGISTER
- * NETDEV_CHANGEMTU
- * NETDEV_CHANGENAME
- * NETDEV_PRE_UP
- * NETDEV_PRE_TYPE_CHANGE
- * NETDEV_POST_INIT
- * NETDEV_PRECHANGEMTU
- * NETDEV_PRECHANGEUPPER
- * NETDEV_CHANGEUPPER
- Example: Inject netdevice mtu change error (-22 == -EINVAL)
- # cd /sys/kernel/debug/notifier-error-inject/netdev
- # echo -22 > actions/NETDEV_CHANGEMTU/error
- # ip link set eth0 mtu 1024
- RTNETLINK answers: Invalid argument
- For more usage examples
- -----------------------
- There are tools/testing/selftests using the notifier error injection features
- for CPU and memory notifiers.
- * tools/testing/selftests/cpu-hotplug/on-off-test.sh
- * tools/testing/selftests/memory-hotplug/on-off-test.sh
- These scripts first do simple online and offline tests and then do fault
- injection tests if notifier error injection module is available.
|