linux/Documentation/fault-injection/notifier-error-inject.txt
<<
>>
Prefs
   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 * CPU notifier
  10 * PM notifier
  11 * Memory hotplug notifier
  12 * powerpc pSeries reconfig notifier
  13
  14CPU notifier error injection module
  15-----------------------------------
  16This feature can be used to test the error handling of the CPU notifiers by
  17injecting artificial errors to CPU notifier chain callbacks.
  18
  19If the notifier call chain should be failed with some events notified, write
  20the error code to debugfs interface
  21/sys/kernel/debug/notifier-error-inject/cpu/actions/<notifier event>/error
  22
  23Possible CPU notifier events to be failed are:
  24
  25 * CPU_UP_PREPARE
  26 * CPU_UP_PREPARE_FROZEN
  27 * CPU_DOWN_PREPARE
  28 * CPU_DOWN_PREPARE_FROZEN
  29
  30Example1: Inject CPU offline error (-1 == -EPERM)
  31
  32        # cd /sys/kernel/debug/notifier-error-inject/cpu
  33        # echo -1 > actions/CPU_DOWN_PREPARE/error
  34        # echo 0 > /sys/devices/system/cpu/cpu1/online
  35        bash: echo: write error: Operation not permitted
  36
  37Example2: inject CPU online error (-2 == -ENOENT)
  38
  39        # echo -2 > actions/CPU_UP_PREPARE/error
  40        # echo 1 > /sys/devices/system/cpu/cpu1/online
  41        bash: echo: write error: No such file or directory
  42
  43PM notifier error injection module
  44----------------------------------
  45This feature is controlled through debugfs interface
  46/sys/kernel/debug/notifier-error-inject/pm/actions/<notifier event>/error
  47
  48Possible PM notifier events to be failed are:
  49
  50 * PM_HIBERNATION_PREPARE
  51 * PM_SUSPEND_PREPARE
  52 * PM_RESTORE_PREPARE
  53
  54Example: Inject PM suspend error (-12 = -ENOMEM)
  55
  56        # cd /sys/kernel/debug/notifier-error-inject/pm/
  57        # echo -12 > actions/PM_SUSPEND_PREPARE/error
  58        # echo mem > /sys/power/state
  59        bash: echo: write error: Cannot allocate memory
  60
  61Memory hotplug notifier error injection module
  62----------------------------------------------
  63This feature is controlled through debugfs interface
  64/sys/kernel/debug/notifier-error-inject/memory/actions/<notifier event>/error
  65
  66Possible memory notifier events to be failed are:
  67
  68 * MEM_GOING_ONLINE
  69 * MEM_GOING_OFFLINE
  70
  71Example: Inject memory hotplug offline error (-12 == -ENOMEM)
  72
  73        # cd /sys/kernel/debug/notifier-error-inject/memory
  74        # echo -12 > actions/MEM_GOING_OFFLINE/error
  75        # echo offline > /sys/devices/system/memory/memoryXXX/state
  76        bash: echo: write error: Cannot allocate memory
  77
  78powerpc pSeries reconfig notifier error injection module
  79--------------------------------------------------------
  80This feature is controlled through debugfs interface
  81/sys/kernel/debug/notifier-error-inject/pSeries-reconfig/actions/<notifier event>/error
  82
  83Possible pSeries reconfig notifier events to be failed are:
  84
  85 * PSERIES_RECONFIG_ADD
  86 * PSERIES_RECONFIG_REMOVE
  87 * PSERIES_DRCONF_MEM_ADD
  88 * PSERIES_DRCONF_MEM_REMOVE
  89
  90For more usage examples
  91-----------------------
  92There are tools/testing/selftests using the notifier error injection features
  93for CPU and memory notifiers.
  94
  95 * tools/testing/selftests/cpu-hotplug/on-off-test.sh
  96 * tools/testing/selftests/memory-hotplug/on-off-test.sh
  97
  98These scripts first do simple online and offline tests and then do fault
  99injection tests if notifier error injection module is available.
 100
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.