Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'for-linus-6.4-1' of https://github.com/cminyard/linux-ipmi

Pull IPMI updates from Corey Minyard:
"Minor bug fixes for the IPMI driver

There was a bug in the SSIF driver where in certain conditions it
could stop working.

Outside of that: spelling fixes, removing some dead code, re-adding a
missing statistic increment, and removal of register_sysctl_table()"

* tag 'for-linus-6.4-1' of https://github.com/cminyard/linux-ipmi:
ipmi:ssif: Drop if blocks with always false condition
ipmi: fix SSIF not responding under certain cond.
ipmi:ssif: Add send_retries increment
char:ipmi:Fix spelling mistake "asychronously" -> "asynchronously"
ipmi: simplify sysctl registration
ipmi: ASPEED_BT_IPMI_BMC: select REGMAP_MMIO instead of depending on it

+9 -26
+2 -1
drivers/char/ipmi/Kconfig
··· 162 162 163 163 config ASPEED_BT_IPMI_BMC 164 164 depends on ARCH_ASPEED || COMPILE_TEST 165 - depends on REGMAP && REGMAP_MMIO && MFD_SYSCON 165 + depends on MFD_SYSCON 166 + select REGMAP_MMIO 166 167 tristate "BT IPMI bmc driver" 167 168 help 168 169 Provides a driver for the BT (Block Transfer) IPMI interface
+1 -15
drivers/char/ipmi/ipmi_poweroff.c
··· 659 659 { } 660 660 }; 661 661 662 - static struct ctl_table ipmi_dir_table[] = { 663 - { .procname = "ipmi", 664 - .mode = 0555, 665 - .child = ipmi_table }, 666 - { } 667 - }; 668 - 669 - static struct ctl_table ipmi_root_table[] = { 670 - { .procname = "dev", 671 - .mode = 0555, 672 - .child = ipmi_dir_table }, 673 - { } 674 - }; 675 - 676 662 static struct ctl_table_header *ipmi_table_header; 677 663 #endif /* CONFIG_PROC_FS */ 678 664 ··· 675 689 pr_info("Power cycle is enabled\n"); 676 690 677 691 #ifdef CONFIG_PROC_FS 678 - ipmi_table_header = register_sysctl_table(ipmi_root_table); 692 + ipmi_table_header = register_sysctl("dev/ipmi", ipmi_table); 679 693 if (!ipmi_table_header) { 680 694 pr_err("Unable to register powercycle sysctl\n"); 681 695 rv = -ENOMEM;
+6 -10
drivers/char/ipmi/ipmi_ssif.c
··· 557 557 558 558 if (waiting) 559 559 start_get(ssif_info); 560 - if (resend) 560 + if (resend) { 561 561 start_resend(ssif_info); 562 + ssif_inc_stat(ssif_info, send_retries); 563 + } 562 564 } 563 565 564 566 static void watch_timeout(struct timer_list *t) ··· 786 784 } else if (data[0] != (IPMI_NETFN_APP_REQUEST | 1) << 2 787 785 || data[1] != IPMI_GET_MSG_FLAGS_CMD) { 788 786 /* 789 - * Don't abort here, maybe it was a queued 790 - * response to a previous command. 787 + * Recv error response, give up. 791 788 */ 789 + ssif_info->ssif_state = SSIF_IDLE; 792 790 ipmi_ssif_unlock_cond(ssif_info, flags); 793 791 dev_warn(&ssif_info->client->dev, 794 792 "Invalid response getting flags: %x %x\n", ··· 1281 1279 struct ssif_info *ssif_info = i2c_get_clientdata(client); 1282 1280 struct ssif_addr_info *addr_info; 1283 1281 1284 - if (!ssif_info) 1285 - return; 1286 - 1287 1282 /* 1288 - * After this point, we won't deliver anything asychronously 1283 + * After this point, we won't deliver anything asynchronously 1289 1284 * to the message handler. We can unregister ourself. 1290 1285 */ 1291 1286 ipmi_unregister_smi(ssif_info->intf); ··· 2069 2070 static int ssif_platform_remove(struct platform_device *dev) 2070 2071 { 2071 2072 struct ssif_addr_info *addr_info = dev_get_drvdata(&dev->dev); 2072 - 2073 - if (!addr_info) 2074 - return 0; 2075 2073 2076 2074 mutex_lock(&ssif_infos_mutex); 2077 2075 list_del(&addr_info->link);