Skip to content

Commit c4dab08

Browse files
jwrdegoedegregkh
authored andcommitted
mei: vsc: Improve error logging in vsc_identify_silicon()
vsc_identify_silicon() returns -EINVAL in various places without logging what is going on. And there are several bug reports about mei_vsc_hw_reset() failing with -EINVAL before the "silicon stepping version is %u:%u" message get logged, indicating this is coming from vsc_identify_silicon(): [ 10.949657] intel_vsc intel_vsc: hw_reset failed ret = -22 [ 10.988899] intel_vsc intel_vsc: hw_reset failed ret = -22 [ 11.027140] intel_vsc intel_vsc: hw_reset failed ret = -22 [ 11.027151] intel_vsc intel_vsc: reset: reached maximal consecutive resets: disabling the device [ 11.027155] intel_vsc intel_vsc: reset failed ret = -19 [ 11.027157] intel_vsc intel_vsc: link layer initialization failed. [ 11.027159] intel_vsc intel_vsc: error -ENODEV: init hw failed Add proper error logging to mei_vsc_hw_reset() so that it will be clear why it is failing when it fails. Link: intel/ivsc-driver#51 Signed-off-by: Hans de Goede <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
1 parent 49988a7 commit c4dab08

File tree

1 file changed

+16
-10
lines changed

1 file changed

+16
-10
lines changed

drivers/misc/mei/vsc-fw-loader.c

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -317,28 +317,34 @@ static int vsc_identify_silicon(struct vsc_fw_loader *fw_loader)
317317
cmd->data.dump_mem.addr = cpu_to_le32(VSC_EFUSE_ADDR);
318318
cmd->data.dump_mem.len = cpu_to_le16(sizeof(__le32));
319319
ret = vsc_tp_rom_xfer(fw_loader->tp, cmd, ack, VSC_ROM_PKG_SIZE);
320-
if (ret)
321-
return ret;
322-
if (ack->token == VSC_TOKEN_ERROR)
323-
return -EINVAL;
320+
if (ret || ack->token == VSC_TOKEN_ERROR) {
321+
dev_err(fw_loader->dev, "CMD_DUMP_MEM error %d token %d\n", ret, ack->token);
322+
return ret ?: -EINVAL;
323+
}
324324

325325
cmd->magic = cpu_to_le32(VSC_MAGIC_NUM);
326326
cmd->cmd_id = VSC_CMD_GET_CONT;
327327
ret = vsc_tp_rom_xfer(fw_loader->tp, cmd, ack, VSC_ROM_PKG_SIZE);
328-
if (ret)
329-
return ret;
330-
if (ack->token != VSC_TOKEN_DUMP_RESP)
331-
return -EINVAL;
328+
if (ret || ack->token != VSC_TOKEN_DUMP_RESP) {
329+
dev_err(fw_loader->dev, "CMD_GETCONT error %d token %d\n", ret, ack->token);
330+
return ret ?: -EINVAL;
331+
}
332332

333333
version = FIELD_GET(VSC_MAINSTEPPING_VERSION_MASK, ack->payload[0]);
334334
sub_version = FIELD_GET(VSC_SUBSTEPPING_VERSION_MASK, ack->payload[0]);
335335

336-
if (version != VSC_MAINSTEPPING_VERSION_A)
336+
if (version != VSC_MAINSTEPPING_VERSION_A) {
337+
dev_err(fw_loader->dev, "maintstepping mismatch expected %d got %d\n",
338+
VSC_MAINSTEPPING_VERSION_A, version);
337339
return -EINVAL;
340+
}
338341

339342
if (sub_version != VSC_SUBSTEPPING_VERSION_0 &&
340-
sub_version != VSC_SUBSTEPPING_VERSION_1)
343+
sub_version != VSC_SUBSTEPPING_VERSION_1) {
344+
dev_err(fw_loader->dev, "substepping %d is out of supported range %d - %d\n",
345+
sub_version, VSC_SUBSTEPPING_VERSION_0, VSC_SUBSTEPPING_VERSION_1);
341346
return -EINVAL;
347+
}
342348

343349
dev_info(fw_loader->dev, "silicon stepping version is %u:%u\n",
344350
version, sub_version);

0 commit comments

Comments
 (0)