Commit dd2bc5cc authored by Quan Nguyen's avatar Quan Nguyen Committed by Corey Minyard
Browse files

ipmi: ssif_bmc: Add SSIF BMC driver

The SMBus system interface (SSIF) IPMI BMC driver can be used to perform
in-band IPMI communication with their host in management (BMC) side.

Thanks Dan for the copy_from_user() fix in the link below.

Link: https://lore.kernel.org/linux-arm-kernel/20220310114119.13736-4-quan@os.amperecomputing.com/


Signed-off-by: default avatarQuan Nguyen <quan@os.amperecomputing.com>
Message-Id: <20221004093106.1653317-2-quan@os.amperecomputing.com>
Signed-off-by: default avatarCorey Minyard <cminyard@mvista.com>
parent 9abf2313
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -169,6 +169,16 @@ config ASPEED_BT_IPMI_BMC
	  found on Aspeed SOCs (AST2400 and AST2500). The driver
	  implements the BMC side of the BT interface.

config SSIF_IPMI_BMC
	tristate "SSIF IPMI BMC driver"
	depends on I2C && I2C_SLAVE
	help
	  This enables the IPMI SMBus system interface (SSIF) at the
	  management (BMC) side.

	  The driver implements the BMC side of the SMBus system
	  interface (SSIF).

config IPMB_DEVICE_INTERFACE
	tristate 'IPMB Interface handler'
	depends on I2C
+1 −0
Original line number Diff line number Diff line
@@ -30,3 +30,4 @@ obj-$(CONFIG_ASPEED_BT_IPMI_BMC) += bt-bmc.o
obj-$(CONFIG_ASPEED_KCS_IPMI_BMC) += kcs_bmc_aspeed.o
obj-$(CONFIG_NPCM7XX_KCS_IPMI_BMC) += kcs_bmc_npcm7xx.o
obj-$(CONFIG_IPMB_DEVICE_INTERFACE) += ipmb_dev_int.o
obj-$(CONFIG_SSIF_IPMI_BMC) += ssif_bmc.o
+873 −0

File added.

Preview size limit exceeded, changes collapsed.

+18 −0
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note*/
/*
 * Copyright (c) 2022, Ampere Computing LLC.
 */

#ifndef _UAPI_LINUX_IPMI_SSIF_BMC_H
#define _UAPI_LINUX_IPMI_SSIF_BMC_H

#include <linux/types.h>

/* Max length of ipmi ssif message included netfn and cmd field */
#define IPMI_SSIF_PAYLOAD_MAX         254
struct ipmi_ssif_msg {
	unsigned int len;
	__u8    payload[IPMI_SSIF_PAYLOAD_MAX];
};

#endif /* _UAPI_LINUX_IPMI_SSIF_BMC_H */