diff options
Diffstat (limited to 'src/include/sys')
| -rw-r--r-- | src/include/sys/internode.h | 2 | ||||
| -rw-r--r-- | src/include/sys/mmio.h | 8 | ||||
| -rw-r--r-- | src/include/sys/msg.h | 29 |
3 files changed, 36 insertions, 3 deletions
diff --git a/src/include/sys/internode.h b/src/include/sys/internode.h index 5581c1e6d..8db0252f6 100644 --- a/src/include/sys/internode.h +++ b/src/include/sys/internode.h @@ -26,7 +26,7 @@ #define __INTERNODE_H // Memory area preserved on MPIPL -#include <vmmconst.h> +#include <usr/vmmconst.h> enum internode_info_vals_t { diff --git a/src/include/sys/mmio.h b/src/include/sys/mmio.h index 71340973a..75d923e41 100644 --- a/src/include/sys/mmio.h +++ b/src/include/sys/mmio.h @@ -93,8 +93,12 @@ enum MMIO_Scratch_Register /** Identifies where hostboot currently resides and how large the * space is */ MMIO_SCRATCH_MEMORY_STATE = 0x08, - /** Spare scratch reg */ - MMIO_SCRATCH_SPARE = 0x10, + /** The address of the Local Node's ipc_data_area buffer in + * the Remote Node's radix. + * The Local Node and the Remote Node use different absolute + * 64 bit values to access the same ipc_data_area buffer. + * This register contains the value the Remote Node needs to use. */ + MMIO_SCRATCH_IPC_DATA_ADDR = 0x10, /** Identifies if Hostboot is active after host_start_payload. */ MMIO_SCRATCH_HOSTBOOT_ACTIVE = 0x18, }; diff --git a/src/include/sys/msg.h b/src/include/sys/msg.h index 2b7f2a8f4..94fda6891 100644 --- a/src/include/sys/msg.h +++ b/src/include/sys/msg.h @@ -284,6 +284,35 @@ int msg_respond(msg_q_t q, msg_t* msg); msg_t* msg_wait(msg_q_t q); +/** @fn updateRemoteIpcAddr + * @brief Update a Remote Node's IPC buffer address + * + * @param[in] i_node - node + * @param[in] i_remoteAddr - Remote Node's IPC buffer address + * + * @return Result of update. + * @retval 0 - Success + * @retval EINVAL - Invalid Node. + */ + // low nibble is remote node number +#define IPC_INVALID_REMOTE_ADDR_MASK 0xFFFFFFFFFFFFFFF0ull +#define IPC_INVALID_REMOTE_ADDR 0x00000000deadadd0ull + +int updateRemoteIpcAddr(uint64_t i_node, uint64_t i_remoteAddr); + + +/** @fn qryLocalIpcInfo + * @brief Query the local Node's node number and IPC bfr address + * + * @param[out] o_node - returned Node + * @param[out] o_addr - returned Local Node's IPC bfr address + * + * @return Result of query. + * @retval 0 - Success + */ +int qryLocalIpcInfo( uint64_t & o_node, uint64_t & o_addr); + + /** @fn msg_is_async * @brief Indicates if message is asynchronous. * |

