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 |
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
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 --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)