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 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 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.