Skip to content

Commit 0ad5a0e

Browse files
committed
Merge: RHEL-9.7 IPMI update to v6.15-rc1
MR: https://gitlab.com/redhat/centos-stream/src/kernel/centos-stream-9/-/merge_requests/6710 JIRA: https://issues.redhat.com/browse/RHEL-82121 Upstream status: v6.15-rc1 Brew: https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=67262243 Omitted-fix: bd7c8ff 2024-09-08 treewide: Fix wrong singular form of jiffies in comments Omitted-fix: 1751f87 2025-01-28 treewide: const qualify ctl_tables where applicable Signed-off-by: Tony Camuso <tcamuso@redhat.com> Approved-by: Steve Best <sbest@redhat.com> Approved-by: David Arcari <darcari@redhat.com> Approved-by: CKI KWF Bot <cki-ci-bot+kwf-gitlab-com@redhat.com> Merged-by: Augusto Caringi <acaringi@redhat.com>
2 parents 8238379 + 30f2bf3 commit 0ad5a0e

File tree

13 files changed

+48
-33
lines changed

13 files changed

+48
-33
lines changed

Documentation/watchdog/convert_drivers_to_kernel_api.rst

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,6 @@ Example conversion::
7575

7676
-static const struct file_operations s3c2410wdt_fops = {
7777
- .owner = THIS_MODULE,
78-
- .llseek = no_llseek,
7978
- .write = s3c2410wdt_write,
8079
- .unlocked_ioctl = s3c2410wdt_ioctl,
8180
- .open = s3c2410wdt_open,

drivers/char/ipmi/bt-bmc.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -465,7 +465,7 @@ static void bt_bmc_remove(struct platform_device *pdev)
465465

466466
misc_deregister(&bt_bmc->miscdev);
467467
if (bt_bmc->irq < 0)
468-
del_timer_sync(&bt_bmc->poll_timer);
468+
timer_delete_sync(&bt_bmc->poll_timer);
469469
}
470470

471471
static const struct of_device_id bt_bmc_match[] = {

drivers/char/ipmi/ipmb_dev_int.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,9 @@ static int ipmb_probe(struct i2c_client *client)
321321
ipmb_dev->miscdev.name = devm_kasprintf(&client->dev, GFP_KERNEL,
322322
"%s%d", "ipmb-",
323323
client->adapter->nr);
324+
if (!ipmb_dev->miscdev.name)
325+
return -ENOMEM;
326+
324327
ipmb_dev->miscdev.fops = &ipmb_fops;
325328
ipmb_dev->miscdev.parent = &client->dev;
326329
ret = misc_register(&ipmb_dev->miscdev);
@@ -357,11 +360,13 @@ static const struct i2c_device_id ipmb_id[] = {
357360
};
358361
MODULE_DEVICE_TABLE(i2c, ipmb_id);
359362

363+
#ifdef CONFIG_ACPI
360364
static const struct acpi_device_id acpi_ipmb_id[] = {
361365
{ "IPMB0001", 0 },
362366
{},
363367
};
364368
MODULE_DEVICE_TABLE(acpi, acpi_ipmb_id);
369+
#endif
365370

366371
static struct i2c_driver ipmb_driver = {
367372
.driver = {

drivers/char/ipmi/ipmi_devintf.c

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -122,12 +122,9 @@ static int ipmi_open(struct inode *inode, struct file *file)
122122
static int ipmi_release(struct inode *inode, struct file *file)
123123
{
124124
struct ipmi_file_private *priv = file->private_data;
125-
int rv;
126125
struct ipmi_recv_msg *msg, *next;
127126

128-
rv = ipmi_destroy_user(priv->user);
129-
if (rv)
130-
return rv;
127+
ipmi_destroy_user(priv->user);
131128

132129
list_for_each_entry_safe(msg, next, &priv->recv_msgs, link)
133130
ipmi_free_recv_msg(msg);

drivers/char/ipmi/ipmi_msghandler.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1399,13 +1399,11 @@ static void _ipmi_destroy_user(struct ipmi_user *user)
13991399
module_put(owner);
14001400
}
14011401

1402-
int ipmi_destroy_user(struct ipmi_user *user)
1402+
void ipmi_destroy_user(struct ipmi_user *user)
14031403
{
14041404
_ipmi_destroy_user(user);
14051405

14061406
kref_put(&user->refcount, free_user);
1407-
1408-
return 0;
14091407
}
14101408
EXPORT_SYMBOL(ipmi_destroy_user);
14111409

@@ -5555,7 +5553,7 @@ static void __exit cleanup_ipmi(void)
55555553
* here.
55565554
*/
55575555
atomic_set(&stop_operation, 1);
5558-
del_timer_sync(&ipmi_timer);
5556+
timer_delete_sync(&ipmi_timer);
55595557

55605558
initialized = false;
55615559

drivers/char/ipmi/ipmi_poweroff.c

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -700,18 +700,14 @@ static int __init ipmi_poweroff_init(void)
700700
#ifdef MODULE
701701
static void __exit ipmi_poweroff_cleanup(void)
702702
{
703-
int rv;
704-
705703
#ifdef CONFIG_PROC_FS
706704
unregister_sysctl_table(ipmi_table_header);
707705
#endif
708706

709707
ipmi_smi_watcher_unregister(&smi_watcher);
710708

711709
if (ready) {
712-
rv = ipmi_destroy_user(ipmi_user);
713-
if (rv)
714-
pr_err("could not cleanup the IPMI user: 0x%x\n", rv);
710+
ipmi_destroy_user(ipmi_user);
715711
pm_power_off = old_poweroff_func;
716712
}
717713
}

drivers/char/ipmi/ipmi_si_intf.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -859,7 +859,7 @@ static enum si_sm_result smi_event_handler(struct smi_info *smi_info,
859859

860860
if (si_sm_result == SI_SM_IDLE && smi_info->timer_running) {
861861
/* Ok it if fails, the timer will just go off. */
862-
if (del_timer(&smi_info->si_timer))
862+
if (timer_delete(&smi_info->si_timer))
863863
smi_info->timer_running = false;
864864
}
865865

@@ -1839,7 +1839,7 @@ static inline void stop_timer_and_thread(struct smi_info *smi_info)
18391839
}
18401840

18411841
smi_info->timer_can_start = false;
1842-
del_timer_sync(&smi_info->si_timer);
1842+
timer_delete_sync(&smi_info->si_timer);
18431843
}
18441844

18451845
static struct smi_info *find_dup_si(struct smi_info *info)

drivers/char/ipmi/ipmi_si_pci.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ static int ipmi_pci_probe(struct pci_dev *pdev,
118118
if (io.irq)
119119
io.irq_setup = ipmi_std_irq_setup;
120120

121-
dev_info(&pdev->dev, "%pR regsize %d spacing %d irq %d\n",
121+
dev_info(&pdev->dev, "%pR regsize %u spacing %u irq %d\n",
122122
&pdev->resource[0], io.regsize, io.regspacing, io.irq);
123123

124124
return ipmi_si_add_smi(&io);

drivers/char/ipmi/ipmi_ssif.c

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -599,7 +599,7 @@ static void ssif_alert(struct i2c_client *client, enum i2c_alert_protocol type,
599599
flags = ipmi_ssif_lock_cond(ssif_info, &oflags);
600600
if (ssif_info->waiting_alert) {
601601
ssif_info->waiting_alert = false;
602-
del_timer(&ssif_info->retry_timer);
602+
timer_delete(&ssif_info->retry_timer);
603603
do_get = true;
604604
} else if (ssif_info->curr_msg) {
605605
ssif_info->got_alert = true;
@@ -1268,8 +1268,8 @@ static void shutdown_ssif(void *send_info)
12681268
schedule_timeout(1);
12691269

12701270
ssif_info->stopping = true;
1271-
del_timer_sync(&ssif_info->watch_timer);
1272-
del_timer_sync(&ssif_info->retry_timer);
1271+
timer_delete_sync(&ssif_info->watch_timer);
1272+
timer_delete_sync(&ssif_info->retry_timer);
12731273
if (ssif_info->thread) {
12741274
complete(&ssif_info->wake_thread);
12751275
kthread_stop(ssif_info->thread);
@@ -1370,8 +1370,20 @@ static int ssif_detect(struct i2c_client *client, struct i2c_board_info *info)
13701370
rv = do_cmd(client, 2, msg, &len, resp);
13711371
if (rv)
13721372
rv = -ENODEV;
1373-
else
1373+
else {
1374+
if (len < 3) {
1375+
rv = -ENODEV;
1376+
} else {
1377+
struct ipmi_device_id id;
1378+
1379+
rv = ipmi_demangle_device_id(resp[0] >> 2, resp[1],
1380+
resp + 2, len - 2, &id);
1381+
if (rv)
1382+
rv = -ENODEV; /* Error means a BMC probably isn't there. */
1383+
}
1384+
if (!rv && info)
13741385
strscpy(info->type, DEVICE_NAME, I2C_NAME_SIZE);
1386+
}
13751387
kfree(resp);
13761388
return rv;
13771389
}
@@ -1706,6 +1718,16 @@ static int ssif_probe(struct i2c_client *client)
17061718
ipmi_addr_src_to_str(ssif_info->addr_source),
17071719
client->addr, client->adapter->name, slave_addr);
17081720

1721+
/*
1722+
* Send a get device id command and validate its response to
1723+
* make sure a valid BMC is there.
1724+
*/
1725+
rv = ssif_detect(client, NULL);
1726+
if (rv) {
1727+
dev_err(&client->dev, "Not present\n");
1728+
goto out;
1729+
}
1730+
17091731
/* Now check for system interface capabilities */
17101732
msg[0] = IPMI_NETFN_APP_REQUEST << 2;
17111733
msg[1] = IPMI_GET_SYSTEM_INTERFACE_CAPABILITIES_CMD;
@@ -2087,6 +2109,7 @@ static const struct platform_device_id ssif_plat_ids[] = {
20872109
{ "dmi-ipmi-ssif", 0 },
20882110
{ }
20892111
};
2112+
MODULE_DEVICE_TABLE(platform, ssif_plat_ids);
20902113

20912114
static struct platform_driver ipmi_driver = {
20922115
.driver = {

drivers/char/ipmi/ipmi_watchdog.c

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -903,7 +903,6 @@ static const struct file_operations ipmi_wdog_fops = {
903903
.open = ipmi_open,
904904
.release = ipmi_close,
905905
.fasync = ipmi_fasync,
906-
.llseek = no_llseek,
907906
};
908907

909908
static struct miscdevice ipmi_wdog_miscdev = {
@@ -1065,7 +1064,6 @@ static void ipmi_register_watchdog(int ipmi_intf)
10651064

10661065
static void ipmi_unregister_watchdog(int ipmi_intf)
10671066
{
1068-
int rv;
10691067
struct ipmi_user *loc_user = watchdog_user;
10701068

10711069
if (!loc_user)
@@ -1090,9 +1088,7 @@ static void ipmi_unregister_watchdog(int ipmi_intf)
10901088
mutex_lock(&ipmi_watchdog_mutex);
10911089

10921090
/* Disconnect from IPMI. */
1093-
rv = ipmi_destroy_user(loc_user);
1094-
if (rv)
1095-
pr_warn("error unlinking from IPMI: %d\n", rv);
1091+
ipmi_destroy_user(loc_user);
10961092

10971093
/* If it comes back, restart it properly. */
10981094
ipmi_start_timer_on_heartbeat = 1;

0 commit comments

Comments
 (0)