diff mbox series

[v6,07/11] misc: amd-sbi: Add support for mailbox error codes

Message ID 20250324145815.1026314-8-akshay.gupta@amd.com (mailing list archive)
State Handled Elsewhere
Headers show
Series misc: Move AMD side band interface(SBI) functionality | expand

Commit Message

Gupta, Akshay March 24, 2025, 2:58 p.m. UTC
APML mailbox protocol returns additional error codes written by
SMU firmware in the out-bound register 0x37. These errors include,
invalid core, message not supported over platform and
others. This additional error codes can be used to provide more
details to user space.

Reviewed-by: Naveen Krishna Chatradhi <naveenkrishna.chatradhi@amd.com>
Signed-off-by: Akshay Gupta <akshay.gupta@amd.com>
---
Changes since v5:
- Patch rebased

Changes since v4:
- Previously patch 5
- Fix Documentation warning

Changes since v3:
- update ioctl comment description
 
Changes since v1:
- bifurcated from previous patch 5

 drivers/misc/amd-sbi/rmi-core.c | 12 +++++++++++-
 include/uapi/misc/amd-apml.h    |  5 +++++
 2 files changed, 16 insertions(+), 1 deletion(-)

Comments

Arnd Bergmann March 24, 2025, 3:26 p.m. UTC | #1
On Mon, Mar 24, 2025, at 15:58, Akshay Gupta wrote:
> APML mailbox protocol returns additional error codes written by
> SMU firmware in the out-bound register 0x37. These errors include,
> invalid core, message not supported over platform and
> others. This additional error codes can be used to provide more
> details to user space.
>
> Reviewed-by: Naveen Krishna Chatradhi <naveenkrishna.chatradhi@amd.com>
> Signed-off-by: Akshay Gupta <akshay.gupta@amd.com>

This is an incompatible change to the uapi definition, which you
should never do. Just merge it into the previous patch that
adds the api in the first place.

      Arnd
Gupta, Akshay March 25, 2025, 12:35 p.m. UTC | #2
On 3/24/2025 8:56 PM, Arnd Bergmann wrote:
> Caution: This message originated from an External Source. Use proper caution when opening attachments, clicking links, or responding.
>
>
> On Mon, Mar 24, 2025, at 15:58, Akshay Gupta wrote:
>> APML mailbox protocol returns additional error codes written by
>> SMU firmware in the out-bound register 0x37. These errors include,
>> invalid core, message not supported over platform and
>> others. This additional error codes can be used to provide more
>> details to user space.
>>
>> Reviewed-by: Naveen Krishna Chatradhi <naveenkrishna.chatradhi@amd.com>
>> Signed-off-by: Akshay Gupta <akshay.gupta@amd.com>
> This is an incompatible change to the uapi definition, which you
> should never do. Just merge it into the previous patch that
> adds the api in the first place.
>
>        Arnd
Thank you, will squash in previous patch.
diff mbox series

Patch

diff --git a/drivers/misc/amd-sbi/rmi-core.c b/drivers/misc/amd-sbi/rmi-core.c
index eafdd2799034..332cb03e8326 100644
--- a/drivers/misc/amd-sbi/rmi-core.c
+++ b/drivers/misc/amd-sbi/rmi-core.c
@@ -25,13 +25,15 @@ 
 int rmi_mailbox_xfer(struct sbrmi_data *data,
 		     struct apml_message *msg)
 {
-	unsigned int bytes;
+	unsigned int bytes, ec;
 	int i, ret;
 	int sw_status;
 	u8 byte;
 
 	mutex_lock(&data->lock);
 
+	msg->fw_ret_code = 0;
+
 	/* Indicate firmware a command is to be serviced */
 	ret = regmap_write(data->regmap, SBRMI_INBNDMSG7, START_CMD);
 	if (ret < 0)
@@ -72,6 +74,9 @@  int rmi_mailbox_xfer(struct sbrmi_data *data,
 	if (ret)
 		goto exit_unlock;
 
+	ret = regmap_read(data->regmap, SBRMI_OUTBNDMSG7, &ec);
+	if (ret || ec)
+		goto exit_clear_alert;
 	/*
 	 * For a read operation, the initiator (BMC) reads the firmware
 	 * response Command Data Out[31:0] from SBRMI::OutBndMsg_inst[4:1]
@@ -87,12 +92,17 @@  int rmi_mailbox_xfer(struct sbrmi_data *data,
 		}
 	}
 
+exit_clear_alert:
 	/*
 	 * BMC must write 1'b1 to SBRMI::Status[SwAlertSts] to clear the
 	 * ALERT to initiator
 	 */
 	ret = regmap_write(data->regmap, SBRMI_STATUS,
 			   sw_status | SW_ALERT_MASK);
+	if (ec) {
+		ret = -EPROTOTYPE;
+		msg->fw_ret_code = ec;
+	}
 exit_unlock:
 	mutex_unlock(&data->lock);
 	return ret;
diff --git a/include/uapi/misc/amd-apml.h b/include/uapi/misc/amd-apml.h
index 451cab135a08..d0c548e34150 100644
--- a/include/uapi/misc/amd-apml.h
+++ b/include/uapi/misc/amd-apml.h
@@ -36,6 +36,10 @@  struct apml_message {
 	 * Mailbox Messages:	0x0 ... 0x999
 	 */
 	__u32 cmd;
+	/*
+	 * Error code is returned in case of soft mailbox
+	 */
+	__u32 fw_ret_code;
 };
 
 /*
@@ -58,6 +62,7 @@  struct apml_message {
  * The APML RMI module checks whether the cmd is
  * - Mailbox message read/write(0x0~0x999)
  * - returning "-EFAULT" if none of the above
+ * "-EPROTOTYPE" error is returned to provide additional error details
  */
 #define SBRMI_IOCTL_CMD		_IOWR(SB_BASE_IOCTL_NR, 0, struct apml_message)