hc
2023-12-09 b22da3d8526a935aa31e086e63f60ff3246cb61c
kernel/drivers/char/ipmi/ipmi_bt_sm.c
....@@ -8,6 +8,8 @@
88 * Author: Rocky Craig <first.last@hp.com>
99 */
1010
11
+#define DEBUG /* So dev_dbg() is always available. */
12
+
1113 #include <linux/kernel.h> /* For printk. */
1214 #include <linux/string.h>
1315 #include <linux/module.h>
....@@ -211,15 +213,17 @@
211213 if (bt->state == BT_STATE_LONG_BUSY)
212214 return IPMI_NODE_BUSY_ERR;
213215
214
- if (bt->state != BT_STATE_IDLE)
216
+ if (bt->state != BT_STATE_IDLE) {
217
+ dev_warn(bt->io->dev, "BT in invalid state %d\n", bt->state);
215218 return IPMI_NOT_IN_MY_STATE_ERR;
219
+ }
216220
217221 if (bt_debug & BT_DEBUG_MSG) {
218
- printk(KERN_WARNING "BT: +++++++++++++++++ New command\n");
219
- printk(KERN_WARNING "BT: NetFn/LUN CMD [%d data]:", size - 2);
222
+ dev_dbg(bt->io->dev, "+++++++++++++++++ New command\n");
223
+ dev_dbg(bt->io->dev, "NetFn/LUN CMD [%d data]:", size - 2);
220224 for (i = 0; i < size; i ++)
221
- printk(" %02x", data[i]);
222
- printk("\n");
225
+ pr_cont(" %02x", data[i]);
226
+ pr_cont("\n");
223227 }
224228 bt->write_data[0] = size + 1; /* all data plus seq byte */
225229 bt->write_data[1] = *data; /* NetFn/LUN */
....@@ -260,10 +264,10 @@
260264 memcpy(data + 2, bt->read_data + 4, msg_len - 2);
261265
262266 if (bt_debug & BT_DEBUG_MSG) {
263
- printk(KERN_WARNING "BT: result %d bytes:", msg_len);
267
+ dev_dbg(bt->io->dev, "result %d bytes:", msg_len);
264268 for (i = 0; i < msg_len; i++)
265
- printk(" %02x", data[i]);
266
- printk("\n");
269
+ pr_cont(" %02x", data[i]);
270
+ pr_cont("\n");
267271 }
268272 return msg_len;
269273 }
....@@ -274,8 +278,7 @@
274278 static void reset_flags(struct si_sm_data *bt)
275279 {
276280 if (bt_debug)
277
- printk(KERN_WARNING "IPMI BT: flag reset %s\n",
278
- status2txt(BT_STATUS));
281
+ dev_dbg(bt->io->dev, "flag reset %s\n", status2txt(BT_STATUS));
279282 if (BT_STATUS & BT_H_BUSY)
280283 BT_CONTROL(BT_H_BUSY); /* force clear */
281284 BT_CONTROL(BT_CLR_WR_PTR); /* always reset */
....@@ -301,14 +304,14 @@
301304 BT_CONTROL(BT_B2H_ATN); /* some BMCs are stubborn */
302305 BT_CONTROL(BT_CLR_RD_PTR); /* always reset */
303306 if (bt_debug)
304
- printk(KERN_WARNING "IPMI BT: stale response %s; ",
307
+ dev_dbg(bt->io->dev, "stale response %s; ",
305308 status2txt(BT_STATUS));
306309 size = BMC2HOST;
307310 for (i = 0; i < size ; i++)
308311 BMC2HOST;
309312 BT_CONTROL(BT_H_BUSY); /* now clear */
310313 if (bt_debug)
311
- printk("drained %d bytes\n", size + 1);
314
+ pr_cont("drained %d bytes\n", size + 1);
312315 }
313316
314317 static inline void write_all_bytes(struct si_sm_data *bt)
....@@ -316,11 +319,11 @@
316319 int i;
317320
318321 if (bt_debug & BT_DEBUG_MSG) {
319
- printk(KERN_WARNING "BT: write %d bytes seq=0x%02X",
322
+ dev_dbg(bt->io->dev, "write %d bytes seq=0x%02X",
320323 bt->write_count, bt->seq);
321324 for (i = 0; i < bt->write_count; i++)
322
- printk(" %02x", bt->write_data[i]);
323
- printk("\n");
325
+ pr_cont(" %02x", bt->write_data[i]);
326
+ pr_cont("\n");
324327 }
325328 for (i = 0; i < bt->write_count; i++)
326329 HOST2BMC(bt->write_data[i]);
....@@ -340,8 +343,8 @@
340343
341344 if (bt->read_count < 4 || bt->read_count >= IPMI_MAX_MSG_LENGTH) {
342345 if (bt_debug & BT_DEBUG_MSG)
343
- printk(KERN_WARNING "BT: bad raw rsp len=%d\n",
344
- bt->read_count);
346
+ dev_dbg(bt->io->dev,
347
+ "bad raw rsp len=%d\n", bt->read_count);
345348 bt->truncated = 1;
346349 return 1; /* let next XACTION START clean it up */
347350 }
....@@ -352,13 +355,13 @@
352355 if (bt_debug & BT_DEBUG_MSG) {
353356 int max = bt->read_count;
354357
355
- printk(KERN_WARNING "BT: got %d bytes seq=0x%02X",
356
- max, bt->read_data[2]);
358
+ dev_dbg(bt->io->dev,
359
+ "got %d bytes seq=0x%02X", max, bt->read_data[2]);
357360 if (max > 16)
358361 max = 16;
359362 for (i = 0; i < max; i++)
360
- printk(KERN_CONT " %02x", bt->read_data[i]);
361
- printk(KERN_CONT "%s\n", bt->read_count == max ? "" : " ...");
363
+ pr_cont(" %02x", bt->read_data[i]);
364
+ pr_cont("%s\n", bt->read_count == max ? "" : " ...");
362365 }
363366
364367 /* per the spec, the (NetFn[1], Seq[2], Cmd[3]) tuples must match */
....@@ -368,10 +371,11 @@
368371 return 1;
369372
370373 if (bt_debug & BT_DEBUG_MSG)
371
- printk(KERN_WARNING "IPMI BT: bad packet: "
372
- "want 0x(%02X, %02X, %02X) got (%02X, %02X, %02X)\n",
373
- bt->write_data[1] | 0x04, bt->write_data[2], bt->write_data[3],
374
- bt->read_data[1], bt->read_data[2], bt->read_data[3]);
374
+ dev_dbg(bt->io->dev,
375
+ "IPMI BT: bad packet: want 0x(%02X, %02X, %02X) got (%02X, %02X, %02X)\n",
376
+ bt->write_data[1] | 0x04, bt->write_data[2],
377
+ bt->write_data[3],
378
+ bt->read_data[1], bt->read_data[2], bt->read_data[3]);
375379 return 0;
376380 }
377381
....@@ -394,8 +398,8 @@
394398 break;
395399 }
396400
397
- printk(KERN_WARNING "IPMI BT: %s in %s %s ", /* open-ended line */
398
- reason, STATE2TXT, STATUS2TXT);
401
+ dev_warn(bt->io->dev, "IPMI BT: %s in %s %s ", /* open-ended line */
402
+ reason, STATE2TXT, STATUS2TXT);
399403
400404 /*
401405 * Per the IPMI spec, retries are based on the sequence number
....@@ -403,20 +407,20 @@
403407 */
404408 (bt->error_retries)++;
405409 if (bt->error_retries < bt->BT_CAP_retries) {
406
- printk("%d retries left\n",
410
+ pr_cont("%d retries left\n",
407411 bt->BT_CAP_retries - bt->error_retries);
408412 bt->state = BT_STATE_RESTART;
409413 return SI_SM_CALL_WITHOUT_DELAY;
410414 }
411415
412
- printk(KERN_WARNING "failed %d retries, sending error response\n",
413
- bt->BT_CAP_retries);
416
+ dev_warn(bt->io->dev, "failed %d retries, sending error response\n",
417
+ bt->BT_CAP_retries);
414418 if (!bt->nonzero_status)
415
- printk(KERN_ERR "IPMI BT: stuck, try power cycle\n");
419
+ dev_err(bt->io->dev, "stuck, try power cycle\n");
416420
417421 /* this is most likely during insmod */
418422 else if (bt->seq <= (unsigned char)(bt->BT_CAP_retries & 0xFF)) {
419
- printk(KERN_WARNING "IPMI: BT reset (takes 5 secs)\n");
423
+ dev_warn(bt->io->dev, "BT reset (takes 5 secs)\n");
420424 bt->state = BT_STATE_RESET1;
421425 return SI_SM_CALL_WITHOUT_DELAY;
422426 }
....@@ -452,7 +456,7 @@
452456 status = BT_STATUS;
453457 bt->nonzero_status |= status;
454458 if ((bt_debug & BT_DEBUG_STATES) && (bt->state != last_printed)) {
455
- printk(KERN_WARNING "BT: %s %s TO=%ld - %ld \n",
459
+ dev_dbg(bt->io->dev, "BT: %s %s TO=%ld - %ld\n",
456460 STATE2TXT,
457461 STATUS2TXT,
458462 bt->timeout,