aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/char/ipmi/ipmi_ssif.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2019-05-08 10:34:17 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2019-05-08 10:34:17 -0700
commit85c1a25494837ff33fdfebe98b2e4cf5b0c78475 (patch)
tree5d3953f955b8b3dbc17724e097bf711da6e68781 /drivers/char/ipmi/ipmi_ssif.c
parentMerge tag 'pinctrl-v5.2-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl (diff)
parentipmi: Remove warning if no slave address is present (diff)
downloadlinux-dev-85c1a25494837ff33fdfebe98b2e4cf5b0c78475.tar.xz
linux-dev-85c1a25494837ff33fdfebe98b2e4cf5b0c78475.zip
Merge tag 'for-linus-5.2' of git://github.com/cminyard/linux-ipmi
Pull IPMI updates from Corey Minyard: "Some minor cleanups for the IPMI driver" * tag 'for-linus-5.2' of git://github.com/cminyard/linux-ipmi: ipmi: Remove warning if no slave address is present ipmi:ssif: Only unregister the platform driver if it was registered ipmi:ssif: compare block number correctly for multi-part return messages ipmi: Add the i2c-addr property for SSIF interfaces char/ipmi: fix spelling mistake "receieved_messages" -> "received_messages" ipmi: avoid atomic_inc in exit function ipmi: Remove file from ipmi_file_private ipmi_si: remove an unused variable in try_smi_init() ipmi: Make ipmi_interfaces_srcu variable static
Diffstat (limited to 'drivers/char/ipmi/ipmi_ssif.c')
-rw-r--r--drivers/char/ipmi/ipmi_ssif.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/char/ipmi/ipmi_ssif.c b/drivers/char/ipmi/ipmi_ssif.c
index 8b5aec5430f1..cf8156d6bc07 100644
--- a/drivers/char/ipmi/ipmi_ssif.c
+++ b/drivers/char/ipmi/ipmi_ssif.c
@@ -727,12 +727,16 @@ static void msg_done_handler(struct ssif_info *ssif_info, int result,
/* End of read */
len = ssif_info->multi_len;
data = ssif_info->data;
- } else if (blocknum != ssif_info->multi_pos) {
+ } else if (blocknum + 1 != ssif_info->multi_pos) {
/*
* Out of sequence block, just abort. Block
* numbers start at zero for the second block,
* but multi_pos starts at one, so the +1.
*/
+ if (ssif_info->ssif_debug & SSIF_DEBUG_MSG)
+ dev_dbg(&ssif_info->client->dev,
+ "Received message out of sequence, expected %u, got %u\n",
+ ssif_info->multi_pos - 1, blocknum);
result = -EIO;
} else {
ssif_inc_stat(ssif_info, received_message_parts);
@@ -1991,7 +1995,7 @@ static int dmi_ipmi_probe(struct platform_device *pdev)
rv = device_property_read_u8(&pdev->dev, "slave-addr", &slave_addr);
if (rv)
- dev_warn(&pdev->dev, "device has no slave-addr property");
+ slave_addr = 0x20;
return new_ssif_client(i2c_addr, NULL, 0,
slave_addr, SI_SMBIOS, &pdev->dev);
@@ -2107,7 +2111,8 @@ static void cleanup_ipmi_ssif(void)
kfree(ssif_i2c_driver.address_list);
- platform_driver_unregister(&ipmi_driver);
+ if (ssif_trydmi)
+ platform_driver_unregister(&ipmi_driver);
free_ssif_clients();
}