summaryrefslogtreecommitdiffstats
path: root/src/occ_gpe1/ipc_func_tables.c
blob: 8ee7cd0a4f332ce98e909d6ef1c4986fd249cc94 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
/* IBM_PROLOG_BEGIN_TAG                                                   */
/* This is an automatically generated prolog.                             */
/*                                                                        */
/* $Source: src/occ_gpe1/ipc_func_tables.c $                              */
/*                                                                        */
/* OpenPOWER OnChipController Project                                     */
/*                                                                        */
/* Contributors Listed Below - COPYRIGHT 2015,2018                        */
/* [+] International Business Machines Corp.                              */
/*                                                                        */
/*                                                                        */
/* Licensed under the Apache License, Version 2.0 (the "License");        */
/* you may not use this file except in compliance with the License.       */
/* You may obtain a copy of the License at                                */
/*                                                                        */
/*     http://www.apache.org/licenses/LICENSE-2.0                         */
/*                                                                        */
/* Unless required by applicable law or agreed to in writing, software    */
/* distributed under the License is distributed on an "AS IS" BASIS,      */
/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or        */
/* implied. See the License for the specific language governing           */
/* permissions and limitations under the License.                         */
/*                                                                        */
/* IBM_PROLOG_END_TAG                                                     */
#include "ipc_api.h"
#include "ipc_async_cmd.h"
#include "gpe1_dimm.h"
#include "gpu_structs.h"
#include "gpe_membuf.h"

void gpe_dimm_control(ipc_msg_t* cmd, void* arg);
void gpe1_nop(ipc_msg_t* cmd, void* arg);
void gpe_reset_mem_deadman(ipc_msg_t* cmd, void* arg);
void gpe_24x7(ipc_msg_t* cmd, void* arg);
void gpe_mem_power_control(ipc_msg_t* cmd, void* arg);
void gpe_gpu_init(ipc_msg_t* cmd, void* arg);
void gpe_scom_nvdimms_nimbus(ipc_msg_t* cmd, void* arg);

#ifdef OCC_GPU_SUPPORT
void gpe_gpu_sm(ipc_msg_t* cmd, void* arg);
#else
void gpe_gpu_sm(ipc_msg_t* cmd, void* arg)
{
  // No GPU support.  The 405 should only be calling this on OCC GPU supported
  // systems.  Those systems require a different OCC GPE1 image with GPU support.
  // This is indication of an OCC image build issue.
  // Return error so the 405 can log an error and disable GPU monitoring.
  int      rc;
  ipc_async_cmd_t *async_cmd = (ipc_async_cmd_t*)cmd;
  gpu_sm_args_t *args = (gpu_sm_args_t*)async_cmd->cmd_data;

  // set error return code for no GPU support
  args->error.rc = GPE_RC_NO_GPU_SUPPORT;
  PK_TRACE("E>gpu_sm: No GPU support!");

  // Send back IPC response of success (IPC operation itself succeeded)
  // 405 will handle no support set in error
  rc = ipc_send_rsp(cmd, IPC_RC_SUCCESS);
  if(rc)
  {
      PK_TRACE("E>gpu_sm: Failed to send response back. Halting GPE1", rc);
      pk_halt();
  }
}
#endif

// Function table for multi target (common) functions
IPC_MT_FUNC_TABLE_START
IPC_HANDLER_DEFAULT                          // 0
IPC_HANDLER_DEFAULT                          // 1
IPC_HANDLER_DEFAULT                          // 2
IPC_HANDLER_DEFAULT                          // 3
IPC_HANDLER_DEFAULT                          // 4
IPC_HANDLER_DEFAULT                          // 5
IPC_HANDLER_DEFAULT                          // 6
IPC_HANDLER_DEFAULT                          // 7
IPC_MT_FUNC_TABLE_END

// Function table for single target (processor-specific) functions
IPC_ST_FUNC_TABLE_START
IPC_HANDLER(gpe_dimm_sm, 0)                // 0 - IPC_ST_DIMM_SM_FUNCID
IPC_HANDLER(gpe_dimm_control, 0)           // 1 - IPC_ST_DIMM_CONTROL_FUNCID
IPC_HANDLER(gpe1_nop, 0)                   // 2 - IPC_ST_GPE1_NOP
IPC_HANDLER(gpe_reset_mem_deadman, 0)      // 3 - IPC_ST_RESET_MEM_DEADMAN
IPC_HANDLER(gpe_24x7, 0)                   // 4 - IPC_ST_24_X_7_FUNCID
IPC_HANDLER(gpe_mem_power_control, 0)      // 5 - IPC_ST_MEM_POWER_CONTROL_FUNCID
IPC_HANDLER(gpe_gpu_sm, 0)                 // 6 - IPC_ST_GPU_SM_FUNCID
IPC_HANDLER(gpe_gpu_init, 0)               // 7 - IPC_ST_GPE_GPU_INIT_FUNCID
IPC_HANDLER(gpe_membuf_scom, 0)            // 8 - IPC_ST_MEMBUF_SCOM_FUNCID
IPC_HANDLER(gpe_membuf_data, 0)            // 9 - IPC_ST_MEMBUF_DATA_FUNCID
IPC_HANDLER(gpe_membuf_init, 0)            // 10 -IPC_ST_MEMBUF_INIT_FUNCID
IPC_HANDLER(gpe_scom_nvdimms_nimbus, 0)    // 11 -IPC_ST_EPOW_GPIO_ASSERT_FUNCID
IPC_HANDLER_DEFAULT                        // 12
IPC_HANDLER_DEFAULT                        // 13
IPC_HANDLER_DEFAULT                        // 14
IPC_HANDLER_DEFAULT                        // 15
IPC_ST_FUNC_TABLE_END
OpenPOWER on IntegriCloud