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