[Skiboot] [PATCH V10 13/21] core/pldm: Send a system chassis Off-Soft Graceful request
Christophe Lombard
clombard at linux.ibm.com
Tue Aug 29 19:23:30 AEST 2023
Set the state information of the PLDM effecter identified by:
the entity type (PLDM_ENTITY_SYSTEM_CHASSIS) and the state set
PLDM_STATE_SET_SYSTEM_POWER_STATE with the effecter state:
PLDM_STATE_SET_SYS_POWER_STATE_OFF_SOFT_GRACEFUL to request a platform off.
Reviewed-by: Abhishek Singh Tomar <abhishek at linux.ibm.com>
Signed-off-by: Christophe Lombard <clombard at linux.ibm.com>
---
core/pldm/pldm-platform-requests.c | 32 ++++++++++++++++++++++++++++++
include/pldm.h | 5 +++++
2 files changed, 37 insertions(+)
diff --git a/core/pldm/pldm-platform-requests.c b/core/pldm/pldm-platform-requests.c
index f45620913..c506bd4fc 100644
--- a/core/pldm/pldm-platform-requests.c
+++ b/core/pldm/pldm-platform-requests.c
@@ -171,6 +171,38 @@ static int set_state_effecter_states_req(uint16_t effecter_id,
return OPAL_SUCCESS;
}
+/*
+ * entity_type: System chassis (main enclosure)
+ * state_set: System Power State (260)
+ * states: Off-Soft Graceful(9)
+ */
+int pldm_platform_power_off(void)
+{
+ set_effecter_state_field field;
+ uint16_t effecter_id;
+ int rc;
+
+ if (!pdr_ready)
+ return OPAL_HARDWARE;
+
+ rc = find_effecter_id_by_state_set_Id(
+ PLDM_ENTITY_SYSTEM_CHASSIS,
+ PLDM_STATE_SET_SYSTEM_POWER_STATE,
+ &effecter_id, BMC_TID);
+ if (rc) {
+ prlog(PR_ERR, "%s - effecter id not found\n", __func__);
+ return rc;
+ }
+
+ field.set_request = PLDM_REQUEST_SET;
+ field.effecter_state = PLDM_STATE_SET_SYS_POWER_STATE_OFF_SOFT_GRACEFUL;
+
+ prlog(PR_INFO, "sending system chassis Off-Soft Graceful request (effecter_id: %d)\n",
+ effecter_id);
+
+ return set_state_effecter_states_req(effecter_id, &field, true);
+}
+
/*
* entity_type: System Firmware
* state_set: Software Termination Status(129)
diff --git a/include/pldm.h b/include/pldm.h
index 6d86cd104..55a4e149d 100644
--- a/include/pldm.h
+++ b/include/pldm.h
@@ -21,6 +21,11 @@ int pldm_mctp_init(void);
*/
void pldm_mctp_exit(void);
+/**
+ * Send a system chassis Off-Soft Graceful request
+ */
+int pldm_platform_power_off(void);
+
/**
* Send a system firmware Graceful Restart request
*/
--
2.41.0
More information about the Skiboot
mailing list