drm/amd/display: add performance trace macro to dc
Signed-off-by: Dmytro Laktyushkin <Dmytro.Laktyushkin@amd.com> Reviewed-by: Tony Cheng <Tony.Cheng@amd.com> Acked-by: Harry Wentland <Harry.Wentland@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:

committed by
Alex Deucher

parent
9bbc30310f
commit
215a6f05bc
@@ -44,6 +44,8 @@ struct dal_logger *dal_logger_create(struct dc_context *ctx, uint32_t log_mask);
|
||||
|
||||
uint32_t dal_logger_destroy(struct dal_logger **logger);
|
||||
|
||||
void dm_logger_flush_buffer(struct dal_logger *logger, bool should_warn);
|
||||
|
||||
void dm_logger_write(
|
||||
struct dal_logger *logger,
|
||||
enum dc_log_type log_type,
|
||||
@@ -157,4 +159,30 @@ void context_clock_trace(
|
||||
#define DTN_INFO_END() \
|
||||
dm_dtn_log_end(dc_ctx)
|
||||
|
||||
#define PERFORMANCE_TRACE_START() \
|
||||
unsigned long long perf_trc_start_stmp = dm_get_timestamp(dc->ctx); \
|
||||
unsigned long long perf_trc_start_log_msk = dc->ctx->logger->mask; \
|
||||
unsigned int perf_trc_start_log_flags = dc->ctx->logger->flags.value; \
|
||||
if (dc->debug.performance_trace) {\
|
||||
dm_logger_flush_buffer(dc->ctx->logger, false);\
|
||||
dc->ctx->logger->mask = 1<<LOG_PERF_TRACE;\
|
||||
dc->ctx->logger->flags.bits.ENABLE_CONSOLE = 0;\
|
||||
dc->ctx->logger->flags.bits.ENABLE_BUFFER = 1;\
|
||||
}
|
||||
|
||||
#define PERFORMANCE_TRACE_END() do {\
|
||||
unsigned long long perf_trc_end_stmp = dm_get_timestamp(dc->ctx);\
|
||||
if (dc->debug.performance_trace) {\
|
||||
dm_logger_write(dc->ctx->logger, \
|
||||
LOG_PERF_TRACE, \
|
||||
"%s duration: %d ticks\n", __func__,\
|
||||
perf_trc_end_stmp - perf_trc_start_stmp); \
|
||||
if (perf_trc_start_log_msk != 1<<LOG_PERF_TRACE) {\
|
||||
dc->ctx->logger->mask = perf_trc_start_log_msk;\
|
||||
dc->ctx->logger->flags.value = perf_trc_start_log_flags;\
|
||||
dm_logger_flush_buffer(dc->ctx->logger, false);\
|
||||
} \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#endif /* __DAL_LOGGER_INTERFACE_H__ */
|
||||
|
@@ -64,8 +64,7 @@ enum dc_log_type {
|
||||
LOG_EVENT_LINK_LOSS,
|
||||
LOG_EVENT_UNDERFLOW,
|
||||
LOG_IF_TRACE,
|
||||
LOG_HW_MARKS,
|
||||
LOG_PPLIB,
|
||||
LOG_PERF_TRACE,
|
||||
|
||||
LOG_SECTION_TOTAL_COUNT
|
||||
};
|
||||
@@ -131,4 +130,37 @@ struct dc_log_type_info {
|
||||
char name[MAX_NAME_LEN];
|
||||
};
|
||||
|
||||
/* Structure for keeping track of offsets, buffer, etc */
|
||||
|
||||
#define DAL_LOGGER_BUFFER_MAX_SIZE 2048
|
||||
|
||||
/*Connectivity log needs to output EDID, which needs at lease 256x3 bytes,
|
||||
* change log line size to 896 to meet the request.
|
||||
*/
|
||||
#define LOG_MAX_LINE_SIZE 896
|
||||
|
||||
struct dal_logger {
|
||||
|
||||
/* How far into the circular buffer has been read by dsat
|
||||
* Read offset should never cross write offset. Write \0's to
|
||||
* read data just to be sure?
|
||||
*/
|
||||
uint32_t buffer_read_offset;
|
||||
|
||||
/* How far into the circular buffer we have written
|
||||
* Write offset should never cross read offset
|
||||
*/
|
||||
uint32_t buffer_write_offset;
|
||||
|
||||
uint32_t open_count;
|
||||
|
||||
char *log_buffer; /* Pointer to malloc'ed buffer */
|
||||
uint32_t log_buffer_size; /* Size of circular buffer */
|
||||
|
||||
uint32_t mask; /*array of masks for major elements*/
|
||||
|
||||
union logger_flags flags;
|
||||
struct dc_context *ctx;
|
||||
};
|
||||
|
||||
#endif /* __DAL_LOGGER_TYPES_H__ */
|
||||
|
Reference in New Issue
Block a user