#define OPAL_GET_MSG                         85

int64_t opal_get_msg(uint64_t *buffer, uint64_t size);

OPAL_GET_MSG will get the next pending OPAL Message (see OPAL_MESSAGE).

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


no available message.


buffer is NULL or size is < 72 bytes. If buffer size < 72 bytes, the message will NOT be discarded by OPAL.


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.


message successfully copied to buffer.