TT-System-Firmware APIs 19.13.99
Tenstorrent Firmware
Loading...
Searching...
No Matches
tt_pcie_log.c File Reference
Include dependency graph for tt_pcie_log.c:

Data Structures

struct  fw_log_entry_header
struct  fw_log_buffer_header

Macros

#define TT_PCIE_LOG_SUBCMD_SETUP   1
#define TT_PCIE_LOG_SUBCMD_RELEASE   2
#define FW_LOG_SOURCE_SMC   0
#define FW_LOG_SOURCE_DMC   1
#define FW_LOG_BUFFER_MAGIC   0x544C4F47 /* "TLOG" */
#define FW_LOG_BUFFER_OWNER_FW   0x0 /* Firmware owns buffer, host has consumed */
#define FW_LOG_BUFFER_OWNER_HOST   0x1 /* Host owns buffer, firmware has produced data */
#define FLUSH_THRESHOLD_BYTES   (sizeof(struct fw_log_entry_header) + 256)
#define TT_PCIE_LOG_TLB   11
#define PCIE_X   19
#define PCIE_Y   24

Functions

void SendPcieMsi (uint8_t x, uint8_t y, uint32_t vector_id)
 LOG_MODULE_REGISTER (fw_tt_pcie_log_backend, CONFIG_LOG_DEFAULT_LEVEL)
static void flush_buffer_to_host (void)
 Flush accumulated framed messages to host.
static void flush_work_handler (struct k_work *work)
 Work handler to flush framed buffer to host.
static void flush_timer_callback (struct k_timer *timer)
 Timer callback to submit flush work.
static uint8_t setup_tt_pcie_log_backend (uint32_t buffer_addr_lo, uint32_t buffer_addr_hi, uint32_t buffer_size, uint8_t host_version)
 Setup host tt_pcie_log by configuring NOC2AXI TLB and transferring local buffer.
static uint8_t release_tt_pcie_log_backend (void)
 Release host tt_pcie_log and revert to local buffer only.
static int putc_in_frame (uint8_t *data, size_t length, void *ctx)
 Character output function for Zephyr log formatting - writes directly to 4KB buffer.
 LOG_OUTPUT_DEFINE (log_output_tt_pcie, putc_in_frame, buf, 1)
static void backend_process (const struct log_backend *const backend, union log_msg_generic *msg)
 Zephyr log backend process function - called for each individual log message.
static void backend_panic (const struct log_backend *const backend)
 Zephyr log backend panic function - called when system panics.
static void backend_dropped (const struct log_backend *const backend, uint32_t cnt)
 Zephyr log backend dropped function - called when messages are dropped.
static void backend_init (const struct log_backend *const backend)
 Initialize the Zephyr log backend.
static uint8_t tt_pcie_log_handler (const union request *request, struct response *response)
 Handles the request to setup or release FW tt_pcie_log.
 REGISTER_MESSAGE (TT_SMC_MSG_TT_PCIE_LOG, tt_pcie_log_handler)
 LOG_BACKEND_DEFINE (backend_tt_pcie_log, backend_api, true)

Variables

struct fw_log_entry_header __packed
static bool host_available
static uint64_t log_buffer_iova
static uint32_t log_buffer_size
static uint32_t sequence_number
static uint8_t framed_log_buffer [CONFIG_TT_PCIE_LOG_BACKEND_BUFFER_SIZE]
static uint32_t framed_buffer_pos
static struct k_timer flush_timer
static struct k_work flush_work
static struct k_mutex buffer_mutex
static char buf [1]
static struct log_backend_api backend_api

Macro Definition Documentation

◆ FLUSH_THRESHOLD_BYTES

#define FLUSH_THRESHOLD_BYTES   (sizeof(struct fw_log_entry_header) + 256)

◆ FW_LOG_BUFFER_MAGIC

#define FW_LOG_BUFFER_MAGIC   0x544C4F47 /* "TLOG" */

◆ FW_LOG_BUFFER_OWNER_FW

#define FW_LOG_BUFFER_OWNER_FW   0x0 /* Firmware owns buffer, host has consumed */

◆ FW_LOG_BUFFER_OWNER_HOST

#define FW_LOG_BUFFER_OWNER_HOST   0x1 /* Host owns buffer, firmware has produced data */

◆ FW_LOG_SOURCE_DMC

#define FW_LOG_SOURCE_DMC   1

◆ FW_LOG_SOURCE_SMC

#define FW_LOG_SOURCE_SMC   0

◆ PCIE_X

#define PCIE_X   19

◆ PCIE_Y

#define PCIE_Y   24

◆ TT_PCIE_LOG_SUBCMD_RELEASE

#define TT_PCIE_LOG_SUBCMD_RELEASE   2

◆ TT_PCIE_LOG_SUBCMD_SETUP

#define TT_PCIE_LOG_SUBCMD_SETUP   1

◆ TT_PCIE_LOG_TLB

#define TT_PCIE_LOG_TLB   11

Function Documentation

◆ backend_dropped()

void backend_dropped ( const struct log_backend *const backend,
uint32_t cnt )
static

Zephyr log backend dropped function - called when messages are dropped.

Parameters
backendThe backend instance
cntNumber of dropped messages

◆ backend_init()

void backend_init ( const struct log_backend *const backend)
static

Initialize the Zephyr log backend.

Parameters
backendThe backend instance

◆ backend_panic()

void backend_panic ( const struct log_backend *const backend)
static

Zephyr log backend panic function - called when system panics.

Parameters
backendThe backend instance

◆ backend_process()

void backend_process ( const struct log_backend *const backend,
union log_msg_generic * msg )
static

Zephyr log backend process function - called for each individual log message.

Parameters
backendThe backend instance
msgThe log message to process

◆ flush_buffer_to_host()

void flush_buffer_to_host ( void )
static

Flush accumulated framed messages to host.

◆ flush_timer_callback()

void flush_timer_callback ( struct k_timer * timer)
static

Timer callback to submit flush work.

Parameters
timerTimer object (unused)

◆ flush_work_handler()

void flush_work_handler ( struct k_work * work)
static

Work handler to flush framed buffer to host.

Parameters
workWork item (unused)

◆ LOG_BACKEND_DEFINE()

LOG_BACKEND_DEFINE ( backend_tt_pcie_log ,
backend_api ,
true  )

◆ LOG_MODULE_REGISTER()

LOG_MODULE_REGISTER ( fw_tt_pcie_log_backend ,
CONFIG_LOG_DEFAULT_LEVEL  )

◆ LOG_OUTPUT_DEFINE()

LOG_OUTPUT_DEFINE ( log_output_tt_pcie ,
putc_in_frame ,
buf ,
1  )

◆ putc_in_frame()

int putc_in_frame ( uint8_t * data,
size_t length,
void * ctx )
static

Character output function for Zephyr log formatting - writes directly to 4KB buffer.

Parameters
dataData to append to framed log buffer
lengthLength of data
ctxContext (unused)
Returns
Length processed

◆ REGISTER_MESSAGE()

REGISTER_MESSAGE ( TT_SMC_MSG_TT_PCIE_LOG ,
tt_pcie_log_handler  )

◆ release_tt_pcie_log_backend()

uint8_t release_tt_pcie_log_backend ( void )
static

Release host tt_pcie_log and revert to local buffer only.

Returns
0 on success

◆ SendPcieMsi()

void SendPcieMsi ( uint8_t x,
uint8_t y,
uint32_t vector_id )

◆ setup_tt_pcie_log_backend()

uint8_t setup_tt_pcie_log_backend ( uint32_t buffer_addr_lo,
uint32_t buffer_addr_hi,
uint32_t buffer_size,
uint8_t host_version )
static

Setup host tt_pcie_log by configuring NOC2AXI TLB and transferring local buffer.

Parameters
buffer_addr_loLower 32 bits of host buffer IOVA
buffer_addr_hiUpper 32 bits of host buffer IOVA
buffer_sizeSize of buffer in bytes
host_versionHost version for tt_pcie_log protocol
Returns
0 on success, error code on failure

◆ tt_pcie_log_handler()

uint8_t tt_pcie_log_handler ( const union request * request,
struct response * response )
static

Handles the request to setup or release FW tt_pcie_log.

Parameters
[in]requestThe request, of type tt_pcie_log_rqst, with command code TT_SMC_MSG_TT_PCIE_LOG
[out]responseThe response to the host
Returns
0 for success, error code for failure

Variable Documentation

◆ __packed

struct occp_execute_image_response __packed

◆ backend_api

struct log_backend_api backend_api
static
Initial value:
= {
.process = backend_process,
.panic = backend_panic,
.init = backend_init,
.dropped = backend_dropped,
}
static void backend_init(const struct log_backend *const backend)
Initialize the Zephyr log backend.
Definition tt_pcie_log.c:415
static void backend_panic(const struct log_backend *const backend)
Zephyr log backend panic function - called when system panics.
Definition tt_pcie_log.c:388
static void backend_process(const struct log_backend *const backend, union log_msg_generic *msg)
Zephyr log backend process function - called for each individual log message.
Definition tt_pcie_log.c:323
static void backend_dropped(const struct log_backend *const backend, uint32_t cnt)
Zephyr log backend dropped function - called when messages are dropped.
Definition tt_pcie_log.c:405

◆ buf

char buf[1]
static

◆ buffer_mutex

struct k_mutex buffer_mutex
static

◆ flush_timer

struct k_timer flush_timer
static

◆ flush_work

struct k_work flush_work
static

◆ framed_buffer_pos

uint32_t framed_buffer_pos
static

◆ framed_log_buffer

uint8_t framed_log_buffer[CONFIG_TT_PCIE_LOG_BACKEND_BUFFER_SIZE]
static

◆ host_available

bool host_available
static

◆ log_buffer_iova

uint64_t log_buffer_iova
static

◆ log_buffer_size

uint32_t log_buffer_size
static

◆ sequence_number

uint32_t sequence_number
static