Blame view

Documentation/fault-injection/notifier-error-inject.rst 3.05 KB
d7d243b52   Eric Lee   SMARC-iMX8MQ Linu...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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
  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.
  
   * PM notifier
   * Memory hotplug notifier
   * powerpc pSeries reconfig notifier
   * Netdevice notifier
  
  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
  
  Netdevice notifier error injection module
  ----------------------------------------------
  This feature is controlled through debugfs interface
  
    /sys/kernel/debug/notifier-error-inject/netdev/actions/<notifier event>/error
  
  Netdevice notifier events which can be failed are:
  
   * NETDEV_REGISTER
   * NETDEV_CHANGEMTU
   * NETDEV_CHANGENAME
   * NETDEV_PRE_UP
   * NETDEV_PRE_TYPE_CHANGE
   * NETDEV_POST_INIT
   * NETDEV_PRECHANGEMTU
   * NETDEV_PRECHANGEUPPER
   * NETDEV_CHANGEUPPER
  
  Example: Inject netdevice mtu change error (-22 == -EINVAL)::
  
  	# cd /sys/kernel/debug/notifier-error-inject/netdev
  	# echo -22 > actions/NETDEV_CHANGEMTU/error
  	# ip link set eth0 mtu 1024
  	RTNETLINK answers: Invalid argument
  
  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.