Blame view

Documentation/fault-injection/notifier-error-inject.txt 3.3 KB
8d4382881   Akinobu Mita   fault-injection: ...
1
2
  Notifier error injection
  ========================
4e79162a5   Masanari Iida   doc: fix quite a ...
3
  Notifier error injection provides the ability to inject artificial errors to
8d4382881   Akinobu Mita   fault-injection: ...
4
5
6
7
8
9
10
11
12
13
14
15
  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
4e79162a5   Masanari Iida   doc: fix quite a ...
16
  injecting artificial errors to CPU notifier chain callbacks.
8d4382881   Akinobu Mita   fault-injection: ...
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
  
  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.