Lines Matching full:ipmi

3  *  acpi_ipmi.c - ACPI IPMI opregion
12 #include <linux/ipmi.h>
16 MODULE_DESCRIPTION("ACPI IPMI Opregion driver");
22 /* the IPMI timeout is 5s */
32 /* the IPMI request message list */
39 int ipmi_ifnum; /* IPMI interface number */
52 * NOTE: IPMI System Interface Selection
53 * There is no system interface specified by the IPMI operation
55 * handle set. IPMI messages passed from the ACPI codes are sent
56 * to this selected global IPMI system interface.
75 /* it is used to track whether the IPMI message is finished */
89 /* IPMI request/response buffer per ACPI 4.0, sec 5.5.2.4.3.2 */
153 struct acpi_ipmi_device *ipmi = in ipmi_dev_release_kref() local
156 ipmi_dev_release(ipmi); in ipmi_dev_release_kref()
193 struct acpi_ipmi_device *ipmi; in ipmi_msg_alloc() local
196 ipmi = acpi_ipmi_dev_get(); in ipmi_msg_alloc()
197 if (!ipmi) in ipmi_msg_alloc()
202 acpi_ipmi_dev_put(ipmi); in ipmi_msg_alloc()
209 ipmi_msg->device = ipmi; in ipmi_msg_alloc()
255 * IPMI network function and command are encoded in the address in acpi_format_ipmi_request()
256 * within the IPMI OpRegion; see ACPI 4.0, sec 5.5.2.4.3. in acpi_format_ipmi_request()
263 * value is the parameter passed by the IPMI opregion space handler. in acpi_format_ipmi_request()
264 * It points to the IPMI request message buffer in acpi_format_ipmi_request()
282 * the IPMI request message buffer to get the IPMB address. in acpi_format_ipmi_request()
307 * IPMI message returned by IPMI command. in acpi_format_ipmi_response()
312 * If the flag of msg_done is not set, it means that the IPMI command is in acpi_format_ipmi_response()
320 * If the IPMI response message is obtained correctly, the status code in acpi_format_ipmi_response()
327 static void ipmi_flush_tx_msg(struct acpi_ipmi_device *ipmi) in ipmi_flush_tx_msg() argument
340 spin_lock_irqsave(&ipmi->tx_msg_lock, flags); in ipmi_flush_tx_msg()
341 while (!list_empty(&ipmi->tx_msg_list)) { in ipmi_flush_tx_msg()
342 tx_msg = list_first_entry(&ipmi->tx_msg_list, in ipmi_flush_tx_msg()
346 spin_unlock_irqrestore(&ipmi->tx_msg_lock, flags); in ipmi_flush_tx_msg()
351 spin_lock_irqsave(&ipmi->tx_msg_lock, flags); in ipmi_flush_tx_msg()
353 spin_unlock_irqrestore(&ipmi->tx_msg_lock, flags); in ipmi_flush_tx_msg()
356 static void ipmi_cancel_tx_msg(struct acpi_ipmi_device *ipmi, in ipmi_cancel_tx_msg() argument
362 spin_lock_irqsave(&ipmi->tx_msg_lock, flags); in ipmi_cancel_tx_msg()
363 list_for_each_entry_safe(iter, temp, &ipmi->tx_msg_list, head) { in ipmi_cancel_tx_msg()
370 spin_unlock_irqrestore(&ipmi->tx_msg_lock, flags); in ipmi_cancel_tx_msg()
456 dev_warn(smi_data.dev, "Can't create IPMI user interface\n"); in ipmi_register_bmc()
512 * This is the IPMI opregion space handler.
513 * @function: indicates the read/write. In fact as the IPMI message is driven
515 * @address: This contains the netfn/command of IPMI request message.
517 * @value : it is an in/out parameter. It points to the IPMI message buffer.
518 * Before the IPMI message is sent, it represents the actual request
519 * IPMI message. After the IPMI message is finished, it represents
520 * the response IPMI message returned by IPMI command.
521 * @handler_context: IPMI device context.
535 * IPMI opregion message. in acpi_ipmi_space_handler()
536 * IPMI message is firstly written to the BMC and system software in acpi_ipmi_space_handler()
538 * of IPMI opregion. in acpi_ipmi_space_handler()
615 pr_warn("Can't register IPMI opregion space handle\n"); in acpi_ipmi_init()
624 pr_err("Can't register IPMI system interface watcher\n"); in acpi_ipmi_init()
642 * is not called. So explicitly uninstall the ACPI IPMI oregion in acpi_ipmi_exit()