OPAL_XSCOM_READ

#define OPAL_XSCOM_READ                              65

int xscom_read(uint32_t partid, uint64_t pcb_addr, uint64_t *val);

This low level call will read XSCOM values directly.

They should only be used by low level manufacturing/debug tools. “Normal” host OS kernel code should not know about XSCOM.

This is also needed by HBRT/opal-prd.

Returns

OPAL_SUCCESS
Success!
OPAL_HARDWARE
if operation failed
OPAL_WRONG_STATE
if CPU is asleep
OPAL_XSCOM_BUSY
Alias for OPAL_BUSY.
OPAL_XSCOM_CHIPLET_OFF
Alias for OPAL_WRONG_STATE
OPAL_XSCOM_PARTIAL_GOOD
XSCOM Partial Good
OPAL_XSCOM_ADDR_ERROR
XSCOM Address Error
OPAL_XSCOM_CLOCK_ERROR
XSCOM Clock Error
OPAL_XSCOM_PARITY_ERROR
XSCOM Parity Error
OPAL_XSCOM_TIMEOUT
XSCOM Timeout
OPAL_XSCOM_CTR_OFFLINED
XSCOM Controller Offlined due to too many errors.

OPAL_XSCOM_WRITE

#define OPAL_XSCOM_WRITE                     66

int xscom_write(uint32_t partid, uint64_t pcb_addr, uint64_t val);

This low level call will write an XSCOM value directly.

They should only be used by low level manufacturing/debug tools. “Normal” host OS kernel code should not know about XSCOM.

This is also needed by HBRT/opal-prd.

Returns

OPAL_SUCCESS
Success!
OPAL_HARDWARE
if operation failed
OPAL_WRONG_STATE
if CPU is asleep
OPAL_XSCOM_BUSY
Alias for OPAL_BUSY.
OPAL_XSCOM_CHIPLET_OFF
Alias for OPAL_WRONG_STATE
OPAL_XSCOM_PARTIAL_GOOD
XSCOM Partial Good
OPAL_XSCOM_ADDR_ERROR
XSCOM Address Error
OPAL_XSCOM_CLOCK_ERROR
XSCOM Clock Error
OPAL_XSCOM_PARITY_ERROR
XSCOM Parity Error
OPAL_XSCOM_TIMEOUT
XSCOM Timeout
OPAL_XSCOM_CTR_OFFLINED
XSCOM Controller Offlined due to too many errors.