mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-01-12 01:20:14 +00:00
powerpc/pseries: Define HVPIPE specific macros
Define HVPIPE specific macros which are needed to support ibm,send-hvpipe-msg and ibm,receive-hvpipe-msg RTAS calls and used to handle HVPIPE message events. Signed-off-by: Haren Myneni <haren@linux.ibm.com> Tested-by: Shashank MS <shashank.gowda@in.ibm.com> Reviewed-by: Mahesh Salgaonkar <mahesh@linux.ibm.com> Reviewed-by: Tyrel Datwyler <tyreld@linux.ibm.com> Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com> Link: https://patch.msgid.link/20250909084402.1488456-3-haren@linux.ibm.com
This commit is contained in:
parent
043439ad1a
commit
26b4fcecea
@ -68,9 +68,11 @@ enum rtas_function_index {
|
||||
RTAS_FNIDX__IBM_READ_PCI_CONFIG,
|
||||
RTAS_FNIDX__IBM_READ_SLOT_RESET_STATE,
|
||||
RTAS_FNIDX__IBM_READ_SLOT_RESET_STATE2,
|
||||
RTAS_FNIDX__IBM_RECEIVE_HVPIPE_MSG,
|
||||
RTAS_FNIDX__IBM_REMOVE_PE_DMA_WINDOW,
|
||||
RTAS_FNIDX__IBM_RESET_PE_DMA_WINDOW,
|
||||
RTAS_FNIDX__IBM_SCAN_LOG_DUMP,
|
||||
RTAS_FNIDX__IBM_SEND_HVPIPE_MSG,
|
||||
RTAS_FNIDX__IBM_SET_DYNAMIC_INDICATOR,
|
||||
RTAS_FNIDX__IBM_SET_EEH_OPTION,
|
||||
RTAS_FNIDX__IBM_SET_SLOT_RESET,
|
||||
@ -163,9 +165,11 @@ typedef struct {
|
||||
#define RTAS_FN_IBM_READ_PCI_CONFIG rtas_fn_handle(RTAS_FNIDX__IBM_READ_PCI_CONFIG)
|
||||
#define RTAS_FN_IBM_READ_SLOT_RESET_STATE rtas_fn_handle(RTAS_FNIDX__IBM_READ_SLOT_RESET_STATE)
|
||||
#define RTAS_FN_IBM_READ_SLOT_RESET_STATE2 rtas_fn_handle(RTAS_FNIDX__IBM_READ_SLOT_RESET_STATE2)
|
||||
#define RTAS_FN_IBM_RECEIVE_HVPIPE_MSG rtas_fn_handle(RTAS_FNIDX__IBM_RECEIVE_HVPIPE_MSG)
|
||||
#define RTAS_FN_IBM_REMOVE_PE_DMA_WINDOW rtas_fn_handle(RTAS_FNIDX__IBM_REMOVE_PE_DMA_WINDOW)
|
||||
#define RTAS_FN_IBM_RESET_PE_DMA_WINDOW rtas_fn_handle(RTAS_FNIDX__IBM_RESET_PE_DMA_WINDOW)
|
||||
#define RTAS_FN_IBM_SCAN_LOG_DUMP rtas_fn_handle(RTAS_FNIDX__IBM_SCAN_LOG_DUMP)
|
||||
#define RTAS_FN_IBM_SEND_HVPIPE_MSG rtas_fn_handle(RTAS_FNIDX__IBM_SEND_HVPIPE_MSG)
|
||||
#define RTAS_FN_IBM_SET_DYNAMIC_INDICATOR rtas_fn_handle(RTAS_FNIDX__IBM_SET_DYNAMIC_INDICATOR)
|
||||
#define RTAS_FN_IBM_SET_EEH_OPTION rtas_fn_handle(RTAS_FNIDX__IBM_SET_EEH_OPTION)
|
||||
#define RTAS_FN_IBM_SET_SLOT_RESET rtas_fn_handle(RTAS_FNIDX__IBM_SET_SLOT_RESET)
|
||||
@ -217,6 +221,7 @@ typedef struct {
|
||||
#define RTAS_HARDWARE_ERROR -1 /* Hardware or other unspecified error. */
|
||||
#define RTAS_BUSY -2 /* Retry immediately. */
|
||||
#define RTAS_INVALID_PARAMETER -3 /* Invalid indicator/domain/sensor etc. */
|
||||
#define RTAS_FUNC_NOT_SUPPORTED -5 /* Function not supported */
|
||||
#define RTAS_UNEXPECTED_STATE_CHANGE -7 /* Seems limited to EEH and slot reset. */
|
||||
#define RTAS_EXTENDED_DELAY_MIN 9900 /* Retry after delaying for ~1ms. */
|
||||
#define RTAS_EXTENDED_DELAY_MAX 9905 /* Retry after delaying for ~100s. */
|
||||
@ -233,6 +238,7 @@ typedef struct {
|
||||
#define RTAS_EPOW_WARNING 0x40000000 /* set bit 1 */
|
||||
#define RTAS_HOTPLUG_EVENTS 0x10000000 /* set bit 3 */
|
||||
#define RTAS_IO_EVENTS 0x08000000 /* set bit 4 */
|
||||
#define RTAS_HVPIPE_MSG_EVENTS 0x04000000 /* set bit 5 */
|
||||
#define RTAS_EVENT_SCAN_ALL_EVENTS 0xffffffff
|
||||
|
||||
/* RTAS event severity */
|
||||
@ -282,6 +288,7 @@ typedef struct {
|
||||
#define RTAS_TYPE_DEALLOC 0xE3
|
||||
#define RTAS_TYPE_DUMP 0xE4
|
||||
#define RTAS_TYPE_HOTPLUG 0xE5
|
||||
#define RTAS_TYPE_HVPIPE 0xE6
|
||||
/* I don't add PowerMGM events right now, this is a different topic */
|
||||
#define RTAS_TYPE_PMGM_POWER_SW_ON 0x60
|
||||
#define RTAS_TYPE_PMGM_POWER_SW_OFF 0x61
|
||||
@ -374,6 +381,7 @@ inline uint32_t rtas_ext_event_company_id(struct rtas_ext_event_log_v6 *ext_log)
|
||||
#define PSERIES_ELOG_SECT_ID_HMC_ID (('H' << 8) | 'M')
|
||||
#define PSERIES_ELOG_SECT_ID_EPOW (('E' << 8) | 'P')
|
||||
#define PSERIES_ELOG_SECT_ID_IO_EVENT (('I' << 8) | 'E')
|
||||
#define PSERIES_ELOG_SECT_ID_HVPIPE_EVENT (('P' << 8) | 'E')
|
||||
#define PSERIES_ELOG_SECT_ID_MANUFACT_INFO (('M' << 8) | 'I')
|
||||
#define PSERIES_ELOG_SECT_ID_CALL_HOME (('C' << 8) | 'H')
|
||||
#define PSERIES_ELOG_SECT_ID_USER_DEF (('U' << 8) | 'D')
|
||||
@ -519,6 +527,7 @@ extern struct mutex rtas_ibm_get_indices_lock;
|
||||
extern struct mutex rtas_ibm_set_dynamic_indicator_lock;
|
||||
extern struct mutex rtas_ibm_get_dynamic_sensor_state_lock;
|
||||
extern struct mutex rtas_ibm_physical_attestation_lock;
|
||||
extern struct mutex rtas_ibm_send_hvpipe_msg_lock;
|
||||
|
||||
#define GLOBAL_INTERRUPT_QUEUE 9005
|
||||
|
||||
|
||||
@ -98,6 +98,8 @@ DEFINE_MUTEX(rtas_ibm_get_vpd_lock);
|
||||
DEFINE_MUTEX(rtas_ibm_get_indices_lock);
|
||||
DEFINE_MUTEX(rtas_ibm_set_dynamic_indicator_lock);
|
||||
DEFINE_MUTEX(rtas_ibm_get_dynamic_sensor_state_lock);
|
||||
DEFINE_MUTEX(rtas_ibm_receive_hvpipe_msg_lock);
|
||||
DEFINE_MUTEX(rtas_ibm_send_hvpipe_msg_lock);
|
||||
|
||||
static struct rtas_function rtas_function_table[] __ro_after_init = {
|
||||
[RTAS_FNIDX__CHECK_EXCEPTION] = {
|
||||
@ -373,6 +375,17 @@ static struct rtas_function rtas_function_table[] __ro_after_init = {
|
||||
[RTAS_FNIDX__IBM_READ_SLOT_RESET_STATE2] = {
|
||||
.name = "ibm,read-slot-reset-state2",
|
||||
},
|
||||
[RTAS_FNIDX__IBM_RECEIVE_HVPIPE_MSG] {
|
||||
.name = "ibm,receive-hvpipe-msg",
|
||||
.filter = &(const struct rtas_filter) {
|
||||
.buf_idx1 = 0, .size_idx1 = 1,
|
||||
.buf_idx2 = -1, .size_idx2 = -1,
|
||||
},
|
||||
/*
|
||||
* PAPR+ v2.13 R1–7.3.32.1
|
||||
*/
|
||||
.lock = &rtas_ibm_receive_hvpipe_msg_lock,
|
||||
},
|
||||
[RTAS_FNIDX__IBM_REMOVE_PE_DMA_WINDOW] = {
|
||||
.name = "ibm,remove-pe-dma-window",
|
||||
},
|
||||
@ -391,6 +404,17 @@ static struct rtas_function rtas_function_table[] __ro_after_init = {
|
||||
.buf_idx2 = -1, .size_idx2 = -1,
|
||||
},
|
||||
},
|
||||
[RTAS_FNIDX__IBM_SEND_HVPIPE_MSG] {
|
||||
.name = "ibm,send-hvpipe-msg",
|
||||
.filter = &(const struct rtas_filter) {
|
||||
.buf_idx1 = 1, .size_idx1 = -1,
|
||||
.buf_idx2 = -1, .size_idx2 = -1,
|
||||
},
|
||||
/*
|
||||
* PAPR+ v2.13 R1–7.3.32.2
|
||||
*/
|
||||
.lock = &rtas_ibm_send_hvpipe_msg_lock,
|
||||
},
|
||||
[RTAS_FNIDX__IBM_SET_DYNAMIC_INDICATOR] = {
|
||||
.name = "ibm,set-dynamic-indicator",
|
||||
.filter = &(const struct rtas_filter) {
|
||||
|
||||
@ -89,6 +89,8 @@ static char *rtas_event_type(int type)
|
||||
return "Platform Resource Reassignment Event";
|
||||
case RTAS_TYPE_HOTPLUG:
|
||||
return "Hotplug Event";
|
||||
case RTAS_TYPE_HVPIPE:
|
||||
return "Hypervisor Pipe Notification event";
|
||||
}
|
||||
|
||||
return rtas_type[0];
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user