blob: a7afc686ca8e0ad2c6e0303f3caebe57b1e4a076 [file] [log] [blame]
.. _OPAL_GET_MSG:
OPAL_GET_MSG
============
.. code-block:: c
#define OPAL_GET_MSG 85
int64_t opal_get_msg(uint64_t *buffer, uint64_t size);
:ref:`OPAL_GET_MSG` will get the next pending OPAL Message (see :ref:`opal-messages`).
The maximum size of an opal message is specified in the device tree passed
to the host OS: ::
ibm,opal {
opal-msg-size = <0x48>;
}
It is ALWAYS at least 72 bytes. In the future, OPAL may have messages larger
than 72 bytes. Naturally, a HOST OS will only be able to interpret these
if it correctly uses opal-msg-size. Any OPAL message > 72 bytes, a host OS
may safely ignore.
A host OS *SHOULD* always supply a buffer to OPAL_GET_MSG of either 72
bytes or opal-msg-size. It MUST NOT supply a buffer of < 72 bytes.
Return values
-------------
:ref:`OPAL_RESOURCE`
no available message.
:ref:`OPAL_PARAMETER`
buffer is NULL or size is < 72 bytes.
If buffer size < 72 bytes, the message will NOT be discarded by OPAL.
:ref:`OPAL_PARTIAL`
If pending opal message is greater than supplied buffer.
In this case the message is *DISCARDED* by OPAL.
This is to keep compatibility with host Operating Systems
with a hard coded opal-msg-size of 72 bytes.
**NOT CURRENTLY IMPLEMENTED**. Specified so that host OS can
prepare for the possible future with either a sensible
error message or by gracefully ignoring such OPAL messages.
:ref:`OPAL_SUCCESS`
message successfully copied to buffer.