|
@@ -0,0 +1,99 @@
|
|
|
+Notifier error injection
|
|
|
+========================
|
|
|
+
|
|
|
+Notifier error injection provides the ability to inject artifical 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
|
|
|
+
|
|
|
+CPU notifier error injection module
|
|
|
+-----------------------------------
|
|
|
+This feature can be used to test the error handling of the CPU notifiers by
|
|
|
+injecting artifical 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
|
|
|
+
|
|
|
+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.
|