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 */
30 /* the IPMI request message list */
37 int ipmi_ifnum; /* IPMI interface number */
50 * NOTE: IPMI System Interface Selection
51 * There is no system interface specified by the IPMI operation
53 * handle set. IPMI messages passed from the ACPI codes are sent
54 * to this selected global IPMI system interface.
72 /* it is used to track whether the IPMI message is finished */
86 /* IPMI request/response buffer per ACPI 4.0, sec 5.5.2.4.3.2 */
150 struct acpi_ipmi_device *ipmi = in ipmi_dev_release_kref() local
153 ipmi_dev_release(ipmi); in ipmi_dev_release_kref()
190 struct acpi_ipmi_device *ipmi; in ipmi_msg_alloc() local
193 ipmi = acpi_ipmi_dev_get(); in ipmi_msg_alloc()
194 if (!ipmi) in ipmi_msg_alloc()
199 acpi_ipmi_dev_put(ipmi); in ipmi_msg_alloc()
206 ipmi_msg->device = ipmi; in ipmi_msg_alloc()
252 * IPMI network function and command are encoded in the address in acpi_format_ipmi_request()
253 * within the IPMI OpRegion; see ACPI 4.0, sec 5.5.2.4.3. in acpi_format_ipmi_request()
260 * value is the parameter passed by the IPMI opregion space handler. in acpi_format_ipmi_request()
261 * It points to the IPMI request message buffer in acpi_format_ipmi_request()
279 * the IPMI request message buffer to get the IPMB address. in acpi_format_ipmi_request()
304 * IPMI message returned by IPMI command. in acpi_format_ipmi_response()
309 * If the flag of msg_done is not set, it means that the IPMI command is in acpi_format_ipmi_response()
317 * If the IPMI response message is obtained correctly, the status code in acpi_format_ipmi_response()
324 static void ipmi_flush_tx_msg(struct acpi_ipmi_device *ipmi) in ipmi_flush_tx_msg() argument
337 spin_lock_irqsave(&ipmi->tx_msg_lock, flags); in ipmi_flush_tx_msg()
338 while (!list_empty(&ipmi->tx_msg_list)) { in ipmi_flush_tx_msg()
339 tx_msg = list_first_entry(&ipmi->tx_msg_list, in ipmi_flush_tx_msg()
343 spin_unlock_irqrestore(&ipmi->tx_msg_lock, flags); in ipmi_flush_tx_msg()
348 spin_lock_irqsave(&ipmi->tx_msg_lock, flags); in ipmi_flush_tx_msg()
350 spin_unlock_irqrestore(&ipmi->tx_msg_lock, flags); in ipmi_flush_tx_msg()
353 static void ipmi_cancel_tx_msg(struct acpi_ipmi_device *ipmi, in ipmi_cancel_tx_msg() argument
359 spin_lock_irqsave(&ipmi->tx_msg_lock, flags); in ipmi_cancel_tx_msg()
360 list_for_each_entry_safe(iter, temp, &ipmi->tx_msg_list, head) { in ipmi_cancel_tx_msg()
367 spin_unlock_irqrestore(&ipmi->tx_msg_lock, flags); in ipmi_cancel_tx_msg()
453 dev_warn(smi_data.dev, "Can't create IPMI user interface\n"); in ipmi_register_bmc()
507 * This is the IPMI opregion space handler.
508 * @function: indicates the read/write. In fact as the IPMI message is driven
510 * @address: This contains the netfn/command of IPMI request message.
512 * @value : it is an in/out parameter. It points to the IPMI message buffer.
513 * Before the IPMI message is sent, it represents the actual request
514 * IPMI message. After the IPMI message is finished, it represents
515 * the response IPMI message returned by IPMI command.
516 * @handler_context: IPMI device context.
530 * IPMI opregion message. in acpi_ipmi_space_handler()
531 * IPMI message is firstly written to the BMC and system software in acpi_ipmi_space_handler()
533 * of IPMI opregion. in acpi_ipmi_space_handler()
594 pr_warn("Can't register IPMI opregion space handle\n"); in acpi_ipmi_init()
603 pr_err("Can't register IPMI system interface watcher\n"); in acpi_ipmi_init()
621 * is not called. So explicitly uninstall the ACPI IPMI oregion in acpi_ipmi_exit()