Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a40a7201 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'ipmi' (patches from Corey Minyard)

Merge ipmi patches from Corey Minyard:
 "These have been in linux-next for a while, ready for 3.18"

* emailed patches from Corey Minyard <minyard@acm.org>:
  ipmi: Clear drvdata when interface is removed
  ipmi: work around gcc-4.9 build warning
  ipmi/of: Don't use unavailable interfaces
  ipmi: Clean up the error handling for channel config errors
parents 74da3863 567eded9
Loading
Loading
Loading
Loading
+9 −6
Original line number Diff line number Diff line
@@ -2796,7 +2796,6 @@ channel_handler(ipmi_smi_t intf, struct ipmi_recv_msg *msg)
					= IPMI_CHANNEL_MEDIUM_IPMB;
				intf->channels[0].protocol
					= IPMI_CHANNEL_PROTOCOL_IPMB;
				rv = -ENOSYS;

				intf->curr_channel = IPMI_MAX_CHANNELS;
				wake_up(&intf->waitq);
@@ -2821,12 +2820,12 @@ channel_handler(ipmi_smi_t intf, struct ipmi_recv_msg *msg)

		if (rv) {
			/* Got an error somehow, just give up. */
			printk(KERN_WARNING PFX
			       "Error sending channel information for channel"
			       " %d: %d\n", intf->curr_channel, rv);

			intf->curr_channel = IPMI_MAX_CHANNELS;
			wake_up(&intf->waitq);

			printk(KERN_WARNING PFX
			       "Error sending channel information: %d\n",
			       rv);
		}
	}
 out:
@@ -2964,8 +2963,12 @@ int ipmi_register_smi(struct ipmi_smi_handlers *handlers,
		intf->null_user_handler = channel_handler;
		intf->curr_channel = 0;
		rv = send_channel_info_cmd(intf, 0);
		if (rv)
		if (rv) {
			printk(KERN_WARNING PFX
			       "Error sending channel information for channel"
			       " 0, %d\n", rv);
			goto out;
		}

		/* Wait for the channel info to be read. */
		wait_event(intf->waitq,
+9 −3
Original line number Diff line number Diff line
@@ -965,7 +965,7 @@ static inline int ipmi_si_is_busy(struct timespec *ts)
	return ts->tv_nsec != -1;
}

static int ipmi_thread_busy_wait(enum si_sm_result smi_result,
static inline int ipmi_thread_busy_wait(enum si_sm_result smi_result,
					const struct smi_info *smi_info,
					struct timespec *busy_until)
{
@@ -2658,6 +2658,9 @@ static int ipmi_probe(struct platform_device *dev)
	if (!match)
		return -EINVAL;

	if (!of_device_is_available(np))
		return -EINVAL;

	ret = of_address_to_resource(np, 0, &resource);
	if (ret) {
		dev_warn(&dev->dev, PFX "invalid address from OF\n");
@@ -3655,6 +3658,9 @@ static void cleanup_one_si(struct smi_info *to_clean)
	if (!to_clean)
		return;

	if (to_clean->dev)
		dev_set_drvdata(to_clean->dev, NULL);

	list_del(&to_clean->link);

	/* Tell the driver that we are shutting down. */