hc
2023-12-11 d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d
kernel/include/trace/events/devlink.h
....@@ -46,6 +46,168 @@
4646 (int) __entry->len, __get_dynamic_array(buf), __entry->len)
4747 );
4848
49
+/*
50
+ * Tracepoint for devlink hardware error:
51
+ */
52
+TRACE_EVENT(devlink_hwerr,
53
+ TP_PROTO(const struct devlink *devlink, int err, const char *msg),
54
+
55
+ TP_ARGS(devlink, err, msg),
56
+
57
+ TP_STRUCT__entry(
58
+ __string(bus_name, devlink->dev->bus->name)
59
+ __string(dev_name, dev_name(devlink->dev))
60
+ __string(driver_name, devlink->dev->driver->name)
61
+ __field(int, err)
62
+ __string(msg, msg)
63
+ ),
64
+
65
+ TP_fast_assign(
66
+ __assign_str(bus_name, devlink->dev->bus->name);
67
+ __assign_str(dev_name, dev_name(devlink->dev));
68
+ __assign_str(driver_name, devlink->dev->driver->name);
69
+ __entry->err = err;
70
+ __assign_str(msg, msg);
71
+ ),
72
+
73
+ TP_printk("bus_name=%s dev_name=%s driver_name=%s err=%d %s",
74
+ __get_str(bus_name), __get_str(dev_name),
75
+ __get_str(driver_name), __entry->err, __get_str(msg))
76
+);
77
+
78
+/*
79
+ * Tracepoint for devlink health message:
80
+ */
81
+TRACE_EVENT(devlink_health_report,
82
+ TP_PROTO(const struct devlink *devlink, const char *reporter_name,
83
+ const char *msg),
84
+
85
+ TP_ARGS(devlink, reporter_name, msg),
86
+
87
+ TP_STRUCT__entry(
88
+ __string(bus_name, devlink->dev->bus->name)
89
+ __string(dev_name, dev_name(devlink->dev))
90
+ __string(driver_name, devlink->dev->driver->name)
91
+ __string(reporter_name, msg)
92
+ __string(msg, msg)
93
+ ),
94
+
95
+ TP_fast_assign(
96
+ __assign_str(bus_name, devlink->dev->bus->name);
97
+ __assign_str(dev_name, dev_name(devlink->dev));
98
+ __assign_str(driver_name, devlink->dev->driver->name);
99
+ __assign_str(reporter_name, reporter_name);
100
+ __assign_str(msg, msg);
101
+ ),
102
+
103
+ TP_printk("bus_name=%s dev_name=%s driver_name=%s reporter_name=%s: %s",
104
+ __get_str(bus_name), __get_str(dev_name),
105
+ __get_str(driver_name), __get_str(reporter_name),
106
+ __get_str(msg))
107
+);
108
+
109
+/*
110
+ * Tracepoint for devlink health recover aborted message:
111
+ */
112
+TRACE_EVENT(devlink_health_recover_aborted,
113
+ TP_PROTO(const struct devlink *devlink, const char *reporter_name,
114
+ bool health_state, u64 time_since_last_recover),
115
+
116
+ TP_ARGS(devlink, reporter_name, health_state, time_since_last_recover),
117
+
118
+ TP_STRUCT__entry(
119
+ __string(bus_name, devlink->dev->bus->name)
120
+ __string(dev_name, dev_name(devlink->dev))
121
+ __string(driver_name, devlink->dev->driver->name)
122
+ __string(reporter_name, reporter_name)
123
+ __field(bool, health_state)
124
+ __field(u64, time_since_last_recover)
125
+ ),
126
+
127
+ TP_fast_assign(
128
+ __assign_str(bus_name, devlink->dev->bus->name);
129
+ __assign_str(dev_name, dev_name(devlink->dev));
130
+ __assign_str(driver_name, devlink->dev->driver->name);
131
+ __assign_str(reporter_name, reporter_name);
132
+ __entry->health_state = health_state;
133
+ __entry->time_since_last_recover = time_since_last_recover;
134
+ ),
135
+
136
+ TP_printk("bus_name=%s dev_name=%s driver_name=%s reporter_name=%s: health_state=%d time_since_last_recover=%llu recover aborted",
137
+ __get_str(bus_name), __get_str(dev_name),
138
+ __get_str(driver_name), __get_str(reporter_name),
139
+ __entry->health_state,
140
+ __entry->time_since_last_recover)
141
+);
142
+
143
+/*
144
+ * Tracepoint for devlink health reporter state update:
145
+ */
146
+TRACE_EVENT(devlink_health_reporter_state_update,
147
+ TP_PROTO(const struct devlink *devlink, const char *reporter_name,
148
+ bool new_state),
149
+
150
+ TP_ARGS(devlink, reporter_name, new_state),
151
+
152
+ TP_STRUCT__entry(
153
+ __string(bus_name, devlink->dev->bus->name)
154
+ __string(dev_name, dev_name(devlink->dev))
155
+ __string(driver_name, devlink->dev->driver->name)
156
+ __string(reporter_name, reporter_name)
157
+ __field(u8, new_state)
158
+ ),
159
+
160
+ TP_fast_assign(
161
+ __assign_str(bus_name, devlink->dev->bus->name);
162
+ __assign_str(dev_name, dev_name(devlink->dev));
163
+ __assign_str(driver_name, devlink->dev->driver->name);
164
+ __assign_str(reporter_name, reporter_name);
165
+ __entry->new_state = new_state;
166
+ ),
167
+
168
+ TP_printk("bus_name=%s dev_name=%s driver_name=%s reporter_name=%s: new_state=%d",
169
+ __get_str(bus_name), __get_str(dev_name),
170
+ __get_str(driver_name), __get_str(reporter_name),
171
+ __entry->new_state)
172
+);
173
+
174
+/*
175
+ * Tracepoint for devlink packet trap:
176
+ */
177
+TRACE_EVENT(devlink_trap_report,
178
+ TP_PROTO(const struct devlink *devlink, struct sk_buff *skb,
179
+ const struct devlink_trap_metadata *metadata),
180
+
181
+ TP_ARGS(devlink, skb, metadata),
182
+
183
+ TP_STRUCT__entry(
184
+ __string(bus_name, devlink->dev->bus->name)
185
+ __string(dev_name, dev_name(devlink->dev))
186
+ __string(driver_name, devlink->dev->driver->name)
187
+ __string(trap_name, metadata->trap_name)
188
+ __string(trap_group_name, metadata->trap_group_name)
189
+ __dynamic_array(char, input_dev_name, IFNAMSIZ)
190
+ ),
191
+
192
+ TP_fast_assign(
193
+ struct net_device *input_dev = metadata->input_dev;
194
+
195
+ __assign_str(bus_name, devlink->dev->bus->name);
196
+ __assign_str(dev_name, dev_name(devlink->dev));
197
+ __assign_str(driver_name, devlink->dev->driver->name);
198
+ __assign_str(trap_name, metadata->trap_name);
199
+ __assign_str(trap_group_name, metadata->trap_group_name);
200
+ __assign_str(input_dev_name,
201
+ (input_dev ? input_dev->name : "NULL"));
202
+ ),
203
+
204
+ TP_printk("bus_name=%s dev_name=%s driver_name=%s trap_name=%s "
205
+ "trap_group_name=%s input_dev_name=%s", __get_str(bus_name),
206
+ __get_str(dev_name), __get_str(driver_name),
207
+ __get_str(trap_name), __get_str(trap_group_name),
208
+ __get_str(input_dev_name))
209
+);
210
+
49211 #endif /* _TRACE_DEVLINK_H */
50212
51213 /* This part must be outside protection */
....@@ -64,6 +226,10 @@
64226 {
65227 }
66228
229
+static inline void trace_devlink_hwerr(const struct devlink *devlink,
230
+ int err, const char *msg)
231
+{
232
+}
67233 #endif /* _TRACE_DEVLINK_H */
68234
69235 #endif