#include "kfd_priv.h"
#include "kfd_events.h"
#include "kfd_debug.h"
#include "soc15_int.h"
#include "kfd_device_queue_manager.h"
#include "kfd_smi_events.h"
#include "amdgpu_ras.h"
enum SQ_INTERRUPT_WORD_ENCODING { … };
enum SQ_INTERRUPT_ERROR_TYPE { … };
#define SQ_INTERRUPT_WORD_AUTO_CTXID__THREAD_TRACE__SHIFT …
#define SQ_INTERRUPT_WORD_AUTO_CTXID__WLT__SHIFT …
#define SQ_INTERRUPT_WORD_AUTO_CTXID__THREAD_TRACE_BUF_FULL__SHIFT …
#define SQ_INTERRUPT_WORD_AUTO_CTXID__REG_TIMESTAMP__SHIFT …
#define SQ_INTERRUPT_WORD_AUTO_CTXID__CMD_TIMESTAMP__SHIFT …
#define SQ_INTERRUPT_WORD_AUTO_CTXID__HOST_CMD_OVERFLOW__SHIFT …
#define SQ_INTERRUPT_WORD_AUTO_CTXID__HOST_REG_OVERFLOW__SHIFT …
#define SQ_INTERRUPT_WORD_AUTO_CTXID__IMMED_OVERFLOW__SHIFT …
#define SQ_INTERRUPT_WORD_AUTO_CTXID__THREAD_TRACE_UTC_ERROR__SHIFT …
#define SQ_INTERRUPT_WORD_AUTO_CTXID__SE_ID__SHIFT …
#define SQ_INTERRUPT_WORD_AUTO_CTXID__ENCODING__SHIFT …
#define SQ_INTERRUPT_WORD_AUTO_CTXID__THREAD_TRACE_MASK …
#define SQ_INTERRUPT_WORD_AUTO_CTXID__WLT_MASK …
#define SQ_INTERRUPT_WORD_AUTO_CTXID__THREAD_TRACE_BUF_FULL_MASK …
#define SQ_INTERRUPT_WORD_AUTO_CTXID__REG_TIMESTAMP_MASK …
#define SQ_INTERRUPT_WORD_AUTO_CTXID__CMD_TIMESTAMP_MASK …
#define SQ_INTERRUPT_WORD_AUTO_CTXID__HOST_CMD_OVERFLOW_MASK …
#define SQ_INTERRUPT_WORD_AUTO_CTXID__HOST_REG_OVERFLOW_MASK …
#define SQ_INTERRUPT_WORD_AUTO_CTXID__IMMED_OVERFLOW_MASK …
#define SQ_INTERRUPT_WORD_AUTO_CTXID__THREAD_TRACE_UTC_ERROR_MASK …
#define SQ_INTERRUPT_WORD_AUTO_CTXID__SE_ID_MASK …
#define SQ_INTERRUPT_WORD_AUTO_CTXID__ENCODING_MASK …
#define SQ_INTERRUPT_WORD_WAVE_CTXID__DATA__SHIFT …
#define SQ_INTERRUPT_WORD_WAVE_CTXID__SH_ID__SHIFT …
#define SQ_INTERRUPT_WORD_WAVE_CTXID__PRIV__SHIFT …
#define SQ_INTERRUPT_WORD_WAVE_CTXID__WAVE_ID__SHIFT …
#define SQ_INTERRUPT_WORD_WAVE_CTXID__SIMD_ID__SHIFT …
#define SQ_INTERRUPT_WORD_WAVE_CTXID__CU_ID__SHIFT …
#define SQ_INTERRUPT_WORD_WAVE_CTXID__SE_ID__SHIFT …
#define SQ_INTERRUPT_WORD_WAVE_CTXID__ENCODING__SHIFT …
#define SQ_INTERRUPT_WORD_WAVE_CTXID__DATA_MASK …
#define SQ_INTERRUPT_WORD_WAVE_CTXID__SH_ID_MASK …
#define SQ_INTERRUPT_WORD_WAVE_CTXID__PRIV_MASK …
#define SQ_INTERRUPT_WORD_WAVE_CTXID__WAVE_ID_MASK …
#define SQ_INTERRUPT_WORD_WAVE_CTXID__SIMD_ID_MASK …
#define SQ_INTERRUPT_WORD_WAVE_CTXID__CU_ID_MASK …
#define SQ_INTERRUPT_WORD_WAVE_CTXID__SE_ID_MASK …
#define SQ_INTERRUPT_WORD_WAVE_CTXID__ENCODING_MASK …
#define KFD_CONTEXT_ID_GET_SQ_INT_DATA(ctx0, ctx1) …
#define KFD_SQ_INT_DATA__ERR_TYPE_MASK …
#define KFD_SQ_INT_DATA__ERR_TYPE__SHIFT …
#define KFD_INT_DATA_DEBUG_DOORBELL_MASK …
#define KFD_INT_DATA_DEBUG_TRAP_CODE_SHIFT …
#define KFD_INT_DATA_DEBUG_TRAP_CODE_MASK …
#define KFD_DEBUG_DOORBELL_ID(sq_int_data) …
#define KFD_DEBUG_TRAP_CODE(sq_int_data) …
#define KFD_DEBUG_CP_BAD_OP_ECODE_MASK …
#define KFD_DEBUG_CP_BAD_OP_ECODE_SHIFT …
#define KFD_DEBUG_CP_BAD_OP_ECODE(ctxid0) …
static void event_interrupt_poison_consumption_v9(struct kfd_node *dev,
uint16_t pasid, uint16_t client_id)
{ … }
static bool context_id_expected(struct kfd_dev *dev)
{ … }
static bool event_interrupt_isr_v9(struct kfd_node *dev,
const uint32_t *ih_ring_entry,
uint32_t *patched_ihre,
bool *patched_flag)
{ … }
static void event_interrupt_wq_v9(struct kfd_node *dev,
const uint32_t *ih_ring_entry)
{ … }
static bool event_interrupt_isr_v9_4_3(struct kfd_node *node,
const uint32_t *ih_ring_entry,
uint32_t *patched_ihre,
bool *patched_flag)
{ … }
const struct kfd_event_interrupt_class event_interrupt_class_v9 = …;
const struct kfd_event_interrupt_class event_interrupt_class_v9_4_3 = …;