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
-
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
-
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_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 {
enum xcl_group_kind kind;
uint64_t size;
};
Members
kind
- data group
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;
char 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_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_clock_freqscaling
¶ MAILBOX_REQ_RECLOCK payload type
Definition
struct xcl_mailbox_clock_freqscaling {
unsigned int region;
unsigned short 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;
enum xcl_mailbox_request req;
char data;
};
Members
flags
- flags of this message
req
- opcode
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;
char 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