mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-15 12:07:46 +00:00
Merge branch 'for-next' of git://github.com/cminyard/linux-ipmi.git
This commit is contained in:
commit
b088762ac0
@ -321,6 +321,9 @@ static int ipmb_probe(struct i2c_client *client)
|
|||||||
ipmb_dev->miscdev.name = devm_kasprintf(&client->dev, GFP_KERNEL,
|
ipmb_dev->miscdev.name = devm_kasprintf(&client->dev, GFP_KERNEL,
|
||||||
"%s%d", "ipmb-",
|
"%s%d", "ipmb-",
|
||||||
client->adapter->nr);
|
client->adapter->nr);
|
||||||
|
if (!ipmb_dev->miscdev.name)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
ipmb_dev->miscdev.fops = &ipmb_fops;
|
ipmb_dev->miscdev.fops = &ipmb_fops;
|
||||||
ipmb_dev->miscdev.parent = &client->dev;
|
ipmb_dev->miscdev.parent = &client->dev;
|
||||||
ret = misc_register(&ipmb_dev->miscdev);
|
ret = misc_register(&ipmb_dev->miscdev);
|
||||||
@ -355,11 +358,13 @@ static const struct i2c_device_id ipmb_id[] = {
|
|||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(i2c, ipmb_id);
|
MODULE_DEVICE_TABLE(i2c, ipmb_id);
|
||||||
|
|
||||||
|
#ifdef CONFIG_ACPI
|
||||||
static const struct acpi_device_id acpi_ipmb_id[] = {
|
static const struct acpi_device_id acpi_ipmb_id[] = {
|
||||||
{ "IPMB0001", 0 },
|
{ "IPMB0001", 0 },
|
||||||
{},
|
{},
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(acpi, acpi_ipmb_id);
|
MODULE_DEVICE_TABLE(acpi, acpi_ipmb_id);
|
||||||
|
#endif
|
||||||
|
|
||||||
static struct i2c_driver ipmb_driver = {
|
static struct i2c_driver ipmb_driver = {
|
||||||
.driver = {
|
.driver = {
|
||||||
|
@ -122,12 +122,9 @@ out:
|
|||||||
static int ipmi_release(struct inode *inode, struct file *file)
|
static int ipmi_release(struct inode *inode, struct file *file)
|
||||||
{
|
{
|
||||||
struct ipmi_file_private *priv = file->private_data;
|
struct ipmi_file_private *priv = file->private_data;
|
||||||
int rv;
|
|
||||||
struct ipmi_recv_msg *msg, *next;
|
struct ipmi_recv_msg *msg, *next;
|
||||||
|
|
||||||
rv = ipmi_destroy_user(priv->user);
|
ipmi_destroy_user(priv->user);
|
||||||
if (rv)
|
|
||||||
return rv;
|
|
||||||
|
|
||||||
list_for_each_entry_safe(msg, next, &priv->recv_msgs, link)
|
list_for_each_entry_safe(msg, next, &priv->recv_msgs, link)
|
||||||
ipmi_free_recv_msg(msg);
|
ipmi_free_recv_msg(msg);
|
||||||
|
@ -1398,13 +1398,11 @@ static void _ipmi_destroy_user(struct ipmi_user *user)
|
|||||||
module_put(owner);
|
module_put(owner);
|
||||||
}
|
}
|
||||||
|
|
||||||
int ipmi_destroy_user(struct ipmi_user *user)
|
void ipmi_destroy_user(struct ipmi_user *user)
|
||||||
{
|
{
|
||||||
_ipmi_destroy_user(user);
|
_ipmi_destroy_user(user);
|
||||||
|
|
||||||
kref_put(&user->refcount, free_user);
|
kref_put(&user->refcount, free_user);
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(ipmi_destroy_user);
|
EXPORT_SYMBOL(ipmi_destroy_user);
|
||||||
|
|
||||||
|
@ -699,8 +699,6 @@ static int __init ipmi_poweroff_init(void)
|
|||||||
#ifdef MODULE
|
#ifdef MODULE
|
||||||
static void __exit ipmi_poweroff_cleanup(void)
|
static void __exit ipmi_poweroff_cleanup(void)
|
||||||
{
|
{
|
||||||
int rv;
|
|
||||||
|
|
||||||
#ifdef CONFIG_PROC_FS
|
#ifdef CONFIG_PROC_FS
|
||||||
unregister_sysctl_table(ipmi_table_header);
|
unregister_sysctl_table(ipmi_table_header);
|
||||||
#endif
|
#endif
|
||||||
@ -708,9 +706,7 @@ static void __exit ipmi_poweroff_cleanup(void)
|
|||||||
ipmi_smi_watcher_unregister(&smi_watcher);
|
ipmi_smi_watcher_unregister(&smi_watcher);
|
||||||
|
|
||||||
if (ready) {
|
if (ready) {
|
||||||
rv = ipmi_destroy_user(ipmi_user);
|
ipmi_destroy_user(ipmi_user);
|
||||||
if (rv)
|
|
||||||
pr_err("could not cleanup the IPMI user: 0x%x\n", rv);
|
|
||||||
pm_power_off = old_poweroff_func;
|
pm_power_off = old_poweroff_func;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -118,7 +118,7 @@ static int ipmi_pci_probe(struct pci_dev *pdev,
|
|||||||
if (io.irq)
|
if (io.irq)
|
||||||
io.irq_setup = ipmi_std_irq_setup;
|
io.irq_setup = ipmi_std_irq_setup;
|
||||||
|
|
||||||
dev_info(&pdev->dev, "%pR regsize %d spacing %d irq %d\n",
|
dev_info(&pdev->dev, "%pR regsize %u spacing %u irq %d\n",
|
||||||
&pdev->resource[0], io.regsize, io.regspacing, io.irq);
|
&pdev->resource[0], io.regsize, io.regspacing, io.irq);
|
||||||
|
|
||||||
return ipmi_si_add_smi(&io);
|
return ipmi_si_add_smi(&io);
|
||||||
|
@ -1064,7 +1064,6 @@ static void ipmi_register_watchdog(int ipmi_intf)
|
|||||||
|
|
||||||
static void ipmi_unregister_watchdog(int ipmi_intf)
|
static void ipmi_unregister_watchdog(int ipmi_intf)
|
||||||
{
|
{
|
||||||
int rv;
|
|
||||||
struct ipmi_user *loc_user = watchdog_user;
|
struct ipmi_user *loc_user = watchdog_user;
|
||||||
|
|
||||||
if (!loc_user)
|
if (!loc_user)
|
||||||
@ -1089,9 +1088,7 @@ static void ipmi_unregister_watchdog(int ipmi_intf)
|
|||||||
mutex_lock(&ipmi_watchdog_mutex);
|
mutex_lock(&ipmi_watchdog_mutex);
|
||||||
|
|
||||||
/* Disconnect from IPMI. */
|
/* Disconnect from IPMI. */
|
||||||
rv = ipmi_destroy_user(loc_user);
|
ipmi_destroy_user(loc_user);
|
||||||
if (rv)
|
|
||||||
pr_warn("error unlinking from IPMI: %d\n", rv);
|
|
||||||
|
|
||||||
/* If it comes back, restart it properly. */
|
/* If it comes back, restart it properly. */
|
||||||
ipmi_start_timer_on_heartbeat = 1;
|
ipmi_start_timer_on_heartbeat = 1;
|
||||||
|
@ -292,7 +292,6 @@ static void complete_response(struct ssif_bmc_ctx *ssif_bmc)
|
|||||||
ssif_bmc->nbytes_processed = 0;
|
ssif_bmc->nbytes_processed = 0;
|
||||||
ssif_bmc->remain_len = 0;
|
ssif_bmc->remain_len = 0;
|
||||||
ssif_bmc->busy = false;
|
ssif_bmc->busy = false;
|
||||||
memset(&ssif_bmc->part_buf, 0, sizeof(struct ssif_part_buffer));
|
|
||||||
wake_up_all(&ssif_bmc->wait_queue);
|
wake_up_all(&ssif_bmc->wait_queue);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -744,9 +743,11 @@ static void on_stop_event(struct ssif_bmc_ctx *ssif_bmc, u8 *val)
|
|||||||
ssif_bmc->aborting = true;
|
ssif_bmc->aborting = true;
|
||||||
}
|
}
|
||||||
} else if (ssif_bmc->state == SSIF_RES_SENDING) {
|
} else if (ssif_bmc->state == SSIF_RES_SENDING) {
|
||||||
if (ssif_bmc->is_singlepart_read || ssif_bmc->block_num == 0xFF)
|
if (ssif_bmc->is_singlepart_read || ssif_bmc->block_num == 0xFF) {
|
||||||
|
memset(&ssif_bmc->part_buf, 0, sizeof(struct ssif_part_buffer));
|
||||||
/* Invalidate response buffer to denote it is sent */
|
/* Invalidate response buffer to denote it is sent */
|
||||||
complete_response(ssif_bmc);
|
complete_response(ssif_bmc);
|
||||||
|
}
|
||||||
ssif_bmc->state = SSIF_READY;
|
ssif_bmc->state = SSIF_READY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -126,7 +126,7 @@ int ipmi_create_user(unsigned int if_num,
|
|||||||
* the users before you destroy the callback structures, it should be
|
* the users before you destroy the callback structures, it should be
|
||||||
* safe, too.
|
* safe, too.
|
||||||
*/
|
*/
|
||||||
int ipmi_destroy_user(struct ipmi_user *user);
|
void ipmi_destroy_user(struct ipmi_user *user);
|
||||||
|
|
||||||
/* Get the IPMI version of the BMC we are talking to. */
|
/* Get the IPMI version of the BMC we are talking to. */
|
||||||
int ipmi_get_version(struct ipmi_user *user,
|
int ipmi_get_version(struct ipmi_user *user,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user