About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Documentation / fault-injection / notifier-error-inject.txt




Custom Search

Based on kernel version 4.7.2. Page generated on 2016-08-22 22:45 EST.

1	Notifier error injection
2	========================
3	
4	Notifier error injection provides the ability to inject artificial errors to
5	specified notifier chain callbacks. It is useful to test the error handling of
6	notifier call chain failures which is rarely executed.  There are kernel
7	modules 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	 * Netdevice notifier
14	
15	CPU notifier error injection module
16	-----------------------------------
17	This feature can be used to test the error handling of the CPU notifiers by
18	injecting artificial errors to CPU notifier chain callbacks.
19	
20	If the notifier call chain should be failed with some events notified, write
21	the error code to debugfs interface
22	/sys/kernel/debug/notifier-error-inject/cpu/actions/<notifier event>/error
23	
24	Possible CPU notifier events to be failed are:
25	
26	 * CPU_UP_PREPARE
27	 * CPU_UP_PREPARE_FROZEN
28	 * CPU_DOWN_PREPARE
29	 * CPU_DOWN_PREPARE_FROZEN
30	
31	Example1: Inject CPU offline error (-1 == -EPERM)
32	
33		# cd /sys/kernel/debug/notifier-error-inject/cpu
34		# echo -1 > actions/CPU_DOWN_PREPARE/error
35		# echo 0 > /sys/devices/system/cpu/cpu1/online
36		bash: echo: write error: Operation not permitted
37	
38	Example2: inject CPU online error (-2 == -ENOENT)
39	
40		# echo -2 > actions/CPU_UP_PREPARE/error
41		# echo 1 > /sys/devices/system/cpu/cpu1/online
42		bash: echo: write error: No such file or directory
43	
44	PM notifier error injection module
45	----------------------------------
46	This feature is controlled through debugfs interface
47	/sys/kernel/debug/notifier-error-inject/pm/actions/<notifier event>/error
48	
49	Possible PM notifier events to be failed are:
50	
51	 * PM_HIBERNATION_PREPARE
52	 * PM_SUSPEND_PREPARE
53	 * PM_RESTORE_PREPARE
54	
55	Example: Inject PM suspend error (-12 = -ENOMEM)
56	
57		# cd /sys/kernel/debug/notifier-error-inject/pm/
58		# echo -12 > actions/PM_SUSPEND_PREPARE/error
59		# echo mem > /sys/power/state
60		bash: echo: write error: Cannot allocate memory
61	
62	Memory hotplug notifier error injection module
63	----------------------------------------------
64	This feature is controlled through debugfs interface
65	/sys/kernel/debug/notifier-error-inject/memory/actions/<notifier event>/error
66	
67	Possible memory notifier events to be failed are:
68	
69	 * MEM_GOING_ONLINE
70	 * MEM_GOING_OFFLINE
71	
72	Example: Inject memory hotplug offline error (-12 == -ENOMEM)
73	
74		# cd /sys/kernel/debug/notifier-error-inject/memory
75		# echo -12 > actions/MEM_GOING_OFFLINE/error
76		# echo offline > /sys/devices/system/memory/memoryXXX/state
77		bash: echo: write error: Cannot allocate memory
78	
79	powerpc pSeries reconfig notifier error injection module
80	--------------------------------------------------------
81	This feature is controlled through debugfs interface
82	/sys/kernel/debug/notifier-error-inject/pSeries-reconfig/actions/<notifier event>/error
83	
84	Possible pSeries reconfig notifier events to be failed are:
85	
86	 * PSERIES_RECONFIG_ADD
87	 * PSERIES_RECONFIG_REMOVE
88	 * PSERIES_DRCONF_MEM_ADD
89	 * PSERIES_DRCONF_MEM_REMOVE
90	
91	Netdevice notifier error injection module
92	----------------------------------------------
93	This feature is controlled through debugfs interface
94	/sys/kernel/debug/notifier-error-inject/netdev/actions/<notifier event>/error
95	
96	Netdevice notifier events which can be failed are:
97	
98	 * NETDEV_REGISTER
99	 * NETDEV_CHANGEMTU
100	 * NETDEV_CHANGENAME
101	 * NETDEV_PRE_UP
102	 * NETDEV_PRE_TYPE_CHANGE
103	 * NETDEV_POST_INIT
104	 * NETDEV_PRECHANGEMTU
105	 * NETDEV_PRECHANGEUPPER
106	 * NETDEV_CHANGEUPPER
107	
108	Example: Inject netdevice mtu change error (-22 == -EINVAL)
109	
110		# cd /sys/kernel/debug/notifier-error-inject/netdev
111		# echo -22 > actions/NETDEV_CHANGEMTU/error
112		# ip link set eth0 mtu 1024
113		RTNETLINK answers: Invalid argument
114	
115	For more usage examples
116	-----------------------
117	There are tools/testing/selftests using the notifier error injection features
118	for CPU and memory notifiers.
119	
120	 * tools/testing/selftests/cpu-hotplug/on-off-test.sh
121	 * tools/testing/selftests/memory-hotplug/on-off-test.sh
122	
123	These scripts first do simple online and offline tests and then do fault
124	injection tests if notifier error injection module is available.
Hide Line Numbers
About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Information is copyright its respective author. All material is available from the Linux Kernel Source distributed under a GPL License. This page is provided as a free service by mjmwired.net.