summaryrefslogtreecommitdiffstats
path: root/src/include/sys
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/sys')
-rw-r--r--src/include/sys/internode.h2
-rw-r--r--src/include/sys/mmio.h8
-rw-r--r--src/include/sys/msg.h29
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.
*
OpenPOWER on IntegriCloud