1Notifier error injection 2======================== 3 4Notifier error injection provides the ability to inject artificial errors to 5specified notifier chain callbacks. It is useful to test the error handling of 6notifier call chain failures which is rarely executed. There are kernel 7modules that can be used to test the following notifiers. 8 9 * PM notifier 10 * Memory hotplug notifier 11 * powerpc pSeries reconfig notifier 12 * Netdevice notifier 13 14PM notifier error injection module 15---------------------------------- 16This feature is controlled through debugfs interface 17 18 /sys/kernel/debug/notifier-error-inject/pm/actions/<notifier event>/error 19 20Possible PM notifier events to be failed are: 21 22 * PM_HIBERNATION_PREPARE 23 * PM_SUSPEND_PREPARE 24 * PM_RESTORE_PREPARE 25 26Example: Inject PM suspend error (-12 = -ENOMEM):: 27 28 # cd /sys/kernel/debug/notifier-error-inject/pm/ 29 # echo -12 > actions/PM_SUSPEND_PREPARE/error 30 # echo mem > /sys/power/state 31 bash: echo: write error: Cannot allocate memory 32 33Memory hotplug notifier error injection module 34---------------------------------------------- 35This feature is controlled through debugfs interface 36 37 /sys/kernel/debug/notifier-error-inject/memory/actions/<notifier event>/error 38 39Possible memory notifier events to be failed are: 40 41 * MEM_GOING_ONLINE 42 * MEM_GOING_OFFLINE 43 44Example: Inject memory hotplug offline error (-12 == -ENOMEM):: 45 46 # cd /sys/kernel/debug/notifier-error-inject/memory 47 # echo -12 > actions/MEM_GOING_OFFLINE/error 48 # echo offline > /sys/devices/system/memory/memoryXXX/state 49 bash: echo: write error: Cannot allocate memory 50 51powerpc pSeries reconfig notifier error injection module 52-------------------------------------------------------- 53This feature is controlled through debugfs interface 54 55 /sys/kernel/debug/notifier-error-inject/pSeries-reconfig/actions/<notifier event>/error 56 57Possible pSeries reconfig notifier events to be failed are: 58 59 * PSERIES_RECONFIG_ADD 60 * PSERIES_RECONFIG_REMOVE 61 * PSERIES_DRCONF_MEM_ADD 62 * PSERIES_DRCONF_MEM_REMOVE 63 64Netdevice notifier error injection module 65---------------------------------------------- 66This feature is controlled through debugfs interface 67 68 /sys/kernel/debug/notifier-error-inject/netdev/actions/<notifier event>/error 69 70Netdevice notifier events which can be failed are: 71 72 * NETDEV_REGISTER 73 * NETDEV_CHANGEMTU 74 * NETDEV_CHANGENAME 75 * NETDEV_PRE_UP 76 * NETDEV_PRE_TYPE_CHANGE 77 * NETDEV_POST_INIT 78 * NETDEV_PRECHANGEMTU 79 * NETDEV_PRECHANGEUPPER 80 * NETDEV_CHANGEUPPER 81 82Example: Inject netdevice mtu change error (-22 == -EINVAL):: 83 84 # cd /sys/kernel/debug/notifier-error-inject/netdev 85 # echo -22 > actions/NETDEV_CHANGEMTU/error 86 # ip link set eth0 mtu 1024 87 RTNETLINK answers: Invalid argument 88 89For more usage examples 90----------------------- 91There are tools/testing/selftests using the notifier error injection features 92for CPU and memory notifiers. 93 94 * tools/testing/selftests/cpu-hotplug/cpu-on-off-test.sh 95 * tools/testing/selftests/memory-hotplug/mem-on-off-test.sh 96 97These scripts first do simple online and offline tests and then do fault 98injection tests if notifier error injection module is available. 99