Mailbox Inter-domain Communication Protocol¶
-
enum
xcl_mailbox_request¶ List of all mailbox request OPCODE. Some OP code requires arguments, which is defined as corresponding data structures below. Response to the request usually is a int32_t containing the error code. Some responses are more complicated and require a data structure, which is also defined below in this file.
Constants
XCL_MAILBOX_REQ_UNKNOWN- invalid OP code
XCL_MAILBOX_REQ_TEST_READY- test msg is ready (post only, internal test only)
XCL_MAILBOX_REQ_TEST_READ- fetch test msg from peer (internal test only)
XCL_MAILBOX_REQ_LOCK_BITSTREAM- lock down xclbin on mgmt pf (not implemented)
XCL_MAILBOX_REQ_UNLOCK_BITSTREAM- unlock xclbin on mgmt pf (not implemented)
XCL_MAILBOX_REQ_HOT_RESET- request mgmt pf driver to reset the board
XCL_MAILBOX_REQ_FIREWALL- firewall trip detected on mgmt pf (post only)
XCL_MAILBOX_REQ_LOAD_XCLBIN_KADDR- download xclbin (pointed to by a pointer)
XCL_MAILBOX_REQ_LOAD_XCLBIN- download xclbin (bitstream is in payload)
XCL_MAILBOX_REQ_RECLOCK- set clock frequency
XCL_MAILBOX_REQ_PEER_DATA- read specified data from peer
XCL_MAILBOX_REQ_USER_PROBE- for user pf to probe the peer mgmt pf
XCL_MAILBOX_REQ_MGMT_STATE- for mgmt pf to notify user pf of its state change (post only)
XCL_MAILBOX_REQ_CHG_SHELL- shell change is required on mgmt pf (post only)
XCL_MAILBOX_REQ_PROGRAM_SHELL- request mgmt pf driver to reprogram shell
XCL_MAILBOX_REQ_READ_P2P_BAR_ADDR- undescribed
XCL_MAILBOX_REQ_SDR_DATA- undescribed
XCL_MAILBOX_REQ_LOAD_XCLBIN_SLOT_KADDR- download xclbin (pointed to by a pointer) to a specific slot (PS/PL)
XCL_MAILBOX_REQ_LOAD_SLOT_XCLBIN- download xclbin (bitstream is in payload) to a specific slot (PS/PL)
XCL_MAILBOX_REQ_MAX- undescribed
-
struct
xcl_mailbox_req_bitstream_lock¶ MAILBOX_REQ_LOCK_BITSTREAM and MAILBOX_REQ_UNLOCK_BITSTREAM payload type
Definition
struct xcl_mailbox_req_bitstream_lock {
uint64_t reserved;
uint8_t uuid;
};
Members
reserved- reserved for future use
uuid- uuid of the xclbin
-
enum
xcl_group_kind¶ Groups of data that can be fetched from mgmt side
Constants
XCL_SENSOR- all kinds of sensor readings
XCL_ICAP- ICAP IP related information
XCL_BDINFO- Board Info, serial_num, mac_address
XCL_MIG_ECC- ECC statistics
XCL_FIREWALL- AF detected time, status
XCL_DNA- Device DNA information
XCL_SUBDEV- PLP subdevices information
XCL_SDR_BDINFO- undescribed
XCL_SDR_TEMP- undescribed
XCL_SDR_VOLTAGE- undescribed
XCL_SDR_CURRENT- undescribed
XCL_SDR_POWER- undescribed
XCL_MULTISLOT_VERSION- undescribed
-
struct
xcl_board_info¶ Data structure used to fetch BDINFO group
Definition
struct xcl_board_info {
};
Members
-
struct
xcl_sensor¶ Data structure used to fetch SENSOR group
Definition
struct xcl_sensor {
};
Members
-
struct
xcl_multislot_info¶ Data structure used to fetch multislot version
Definition
struct xcl_multislot_info {
};
Members
-
struct
xcl_pr_region¶ Data structure used to fetch ICAP group
Definition
struct xcl_pr_region {
};
Members
-
struct
xcl_mig_ecc¶ Data structure used to fetch MIG_ECC group
Definition
struct xcl_mig_ecc {
};
Members
-
struct
xcl_firewall¶ Data structure used to fetch FIREWALL group
Definition
struct xcl_firewall {
};
Members
-
struct
xcl_dna¶ Data structure used to fetch DNA group
Definition
struct xcl_dna {
};
Members
-
struct
xcl_mailbox_subdev_peer¶ MAILBOX_REQ_PEER_DATA payload type
Definition
struct xcl_mailbox_subdev_peer {
int32_t kind;
uint64_t size;
};
Members
kind- data group (enum xcl_group_kind)
size- buffer size for receiving response
-
struct
xcl_mailbox_conn¶ MAILBOX_REQ_USER_PROBE payload type
Definition
struct xcl_mailbox_conn {
uint64_t kaddr;
uint64_t paddr;
uint32_t crc32;
uint32_t version;
};
Members
kaddr- KVA of the verification data buffer
paddr- physical addresss of the verification data buffer
crc32- CRC value of the verification data buffer
version- protocol version supported by peer
-
struct
xcl_mailbox_conn_resp¶ MAILBOX_REQ_USER_PROBE response payload type
Definition
struct xcl_mailbox_conn_resp {
uint32_t version;
uint64_t conn_flags;
uint64_t chan_switch;
int8_t comm_id;
};
Members
version- protocol version should be used
conn_flags- connection status
chan_switch- bitmap to indicate SW / HW channel for each OP code msg
comm_id- user defined cookie
-
struct
xcl_mailbox_peer_state¶ MAILBOX_REQ_MGMT_STATE payload type
Definition
struct xcl_mailbox_peer_state {
uint64_t state_flags;
};
Members
state_flags- peer state flags
-
struct
xcl_mailbox_bitstream_slot_kaddr¶ MAILBOX_REQ_LOAD_XCLBIN_SLOT_KADDR payload type to pass slot information
Definition
struct xcl_mailbox_bitstream_slot_kaddr {
uint64_t addr;
uint32_t slot_idx;
};
Members
addr- pointer to xclbin body
slot_idx- Target slot index
-
struct
xcl_mailbox_bitstream_kaddr¶ MAILBOX_REQ_LOAD_XCLBIN_KADDR payload type
Definition
struct xcl_mailbox_bitstream_kaddr {
uint64_t addr;
};
Members
addr- pointer to xclbin body
-
struct
xcl_mailbox_bitstream_slot_xclbin¶ MAILBOX_REQ_LOAD_SLOT_XCLBIN payload type
Definition
struct xcl_mailbox_bitstream_slot_xclbin {
uint32_t slot_idx;
};
Members
slot_idx- Target slot index
-
struct
xcl_mailbox_clock_freqscaling¶ MAILBOX_REQ_RECLOCK payload type
Definition
struct xcl_mailbox_clock_freqscaling {
uint32_t region;
uint16_t target_freqs;
};
Members
region- region of clock
target_freqs- array of target clock frequencies (max clocks: 16)
-
struct
xcl_mailbox_req¶ mailbox request message header
Definition
struct xcl_mailbox_req {
uint64_t flags;
int32_t req;
int32_t data;
};
Members
flags- flags of this message
req- opcode (enum xcl_mailbox_request)
data- payload of variable length
-
struct
xcl_sw_chan¶ mailbox software channel message metadata. This defines the interface between daemons (MPD and MSD) and mailbox’s read or write callbacks. A mailbox message (either a request or response) is wrapped by this data structure as payload. A sw_chan is passed between mailbox driver and daemon via read / write driver callbacks. And it is also passed between MPD and MSD via vendor defined interface (TCP socket, etc).
Definition
struct xcl_sw_chan {
uint64_t sz;
uint64_t flags;
uint64_t id;
uint64_t data;
};
Members
sz- payload size
flags- flags of this message as in struct mailbox_req
id- message ID
data- payload (struct mailbox_req or response data matching the request)
-
struct
xcl_mailbox_p2p_bar_addr¶
Definition
struct xcl_mailbox_p2p_bar_addr {
};
Members