Skip to content

Commit d93b92c

Browse files
Joshua Aberbackalexdeucher
authored andcommitted
drm/amd/display: Add more debug data to dmub_srv
[Why] When analyzing some crash dumps, not all of the expected DMUB info was available, so we want to add in-object storage for this data. [How] - dmub_srv_debug (renamed to dmub_timeout_info) is already a member of dmub_diagnostic_data, therefore keep a dmub_diagnostic_data directly in dmub_srv - use dmub_srv->debug when collecting diagnostic info instead of stack object to allow for easy inspection in crash dumps Reviewed-by: Alvin Lee <alvin.lee2@amd.com> Signed-off-by: Joshua Aberback <joshua.aberback@amd.com> Signed-off-by: Tom Chung <chiahsuan.chung@amd.com> Tested-by: Daniel Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
1 parent 7b1ba19 commit d93b92c

File tree

14 files changed

+298
-285
lines changed

14 files changed

+298
-285
lines changed

drivers/gpu/drm/amd/display/dc/dc_dmub_srv.c

Lines changed: 44 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -200,10 +200,10 @@ bool dc_dmub_srv_wait_for_idle(struct dc_dmub_srv *dc_dmub_srv,
200200

201201
if (status != DMUB_STATUS_OK) {
202202
DC_LOG_DEBUG("No reply for DMUB command: status=%d\n", status);
203-
if (!dmub->debug.timeout_occured) {
204-
dmub->debug.timeout_occured = true;
205-
dmub->debug.timeout_cmd = *cmd_list;
206-
dmub->debug.timestamp = dm_get_timestamp(dc_dmub_srv->ctx);
203+
if (!dmub->debug.timeout_info.timeout_occured) {
204+
dmub->debug.timeout_info.timeout_occured = true;
205+
dmub->debug.timeout_info.timeout_cmd = *cmd_list;
206+
dmub->debug.timeout_info.timestamp = dm_get_timestamp(dc_dmub_srv->ctx);
207207
}
208208
dc_dmub_srv_log_diagnostic_data(dc_dmub_srv);
209209
return false;
@@ -927,16 +927,15 @@ void dc_dmub_setup_subvp_dmub_command(struct dc *dc,
927927
dc_wake_and_execute_dmub_cmd(dc->ctx, &cmd, DM_DMUB_WAIT_TYPE_WAIT);
928928
}
929929

930-
bool dc_dmub_srv_get_diagnostic_data(struct dc_dmub_srv *dc_dmub_srv, struct dmub_diagnostic_data *diag_data)
930+
bool dc_dmub_srv_get_diagnostic_data(struct dc_dmub_srv *dc_dmub_srv)
931931
{
932-
if (!dc_dmub_srv || !dc_dmub_srv->dmub || !diag_data)
932+
if (!dc_dmub_srv || !dc_dmub_srv->dmub)
933933
return false;
934-
return dmub_srv_get_diagnostic_data(dc_dmub_srv->dmub, diag_data);
934+
return dmub_srv_get_diagnostic_data(dc_dmub_srv->dmub);
935935
}
936936

937937
void dc_dmub_srv_log_diagnostic_data(struct dc_dmub_srv *dc_dmub_srv)
938938
{
939-
struct dmub_diagnostic_data diag_data = {0};
940939
uint32_t i;
941940

942941
if (!dc_dmub_srv || !dc_dmub_srv->dmub) {
@@ -946,49 +945,49 @@ void dc_dmub_srv_log_diagnostic_data(struct dc_dmub_srv *dc_dmub_srv)
946945

947946
DC_LOG_ERROR("%s: DMCUB error - collecting diagnostic data\n", __func__);
948947

949-
if (!dc_dmub_srv_get_diagnostic_data(dc_dmub_srv, &diag_data)) {
948+
if (!dc_dmub_srv_get_diagnostic_data(dc_dmub_srv)) {
950949
DC_LOG_ERROR("%s: dc_dmub_srv_get_diagnostic_data failed.", __func__);
951950
return;
952951
}
953952

954953
DC_LOG_DEBUG("DMCUB STATE:");
955-
DC_LOG_DEBUG(" dmcub_version : %08x", diag_data.dmcub_version);
956-
DC_LOG_DEBUG(" scratch [0] : %08x", diag_data.scratch[0]);
957-
DC_LOG_DEBUG(" scratch [1] : %08x", diag_data.scratch[1]);
958-
DC_LOG_DEBUG(" scratch [2] : %08x", diag_data.scratch[2]);
959-
DC_LOG_DEBUG(" scratch [3] : %08x", diag_data.scratch[3]);
960-
DC_LOG_DEBUG(" scratch [4] : %08x", diag_data.scratch[4]);
961-
DC_LOG_DEBUG(" scratch [5] : %08x", diag_data.scratch[5]);
962-
DC_LOG_DEBUG(" scratch [6] : %08x", diag_data.scratch[6]);
963-
DC_LOG_DEBUG(" scratch [7] : %08x", diag_data.scratch[7]);
964-
DC_LOG_DEBUG(" scratch [8] : %08x", diag_data.scratch[8]);
965-
DC_LOG_DEBUG(" scratch [9] : %08x", diag_data.scratch[9]);
966-
DC_LOG_DEBUG(" scratch [10] : %08x", diag_data.scratch[10]);
967-
DC_LOG_DEBUG(" scratch [11] : %08x", diag_data.scratch[11]);
968-
DC_LOG_DEBUG(" scratch [12] : %08x", diag_data.scratch[12]);
969-
DC_LOG_DEBUG(" scratch [13] : %08x", diag_data.scratch[13]);
970-
DC_LOG_DEBUG(" scratch [14] : %08x", diag_data.scratch[14]);
971-
DC_LOG_DEBUG(" scratch [15] : %08x", diag_data.scratch[15]);
954+
DC_LOG_DEBUG(" dmcub_version : %08x", dc_dmub_srv->dmub->debug.dmcub_version);
955+
DC_LOG_DEBUG(" scratch [0] : %08x", dc_dmub_srv->dmub->debug.scratch[0]);
956+
DC_LOG_DEBUG(" scratch [1] : %08x", dc_dmub_srv->dmub->debug.scratch[1]);
957+
DC_LOG_DEBUG(" scratch [2] : %08x", dc_dmub_srv->dmub->debug.scratch[2]);
958+
DC_LOG_DEBUG(" scratch [3] : %08x", dc_dmub_srv->dmub->debug.scratch[3]);
959+
DC_LOG_DEBUG(" scratch [4] : %08x", dc_dmub_srv->dmub->debug.scratch[4]);
960+
DC_LOG_DEBUG(" scratch [5] : %08x", dc_dmub_srv->dmub->debug.scratch[5]);
961+
DC_LOG_DEBUG(" scratch [6] : %08x", dc_dmub_srv->dmub->debug.scratch[6]);
962+
DC_LOG_DEBUG(" scratch [7] : %08x", dc_dmub_srv->dmub->debug.scratch[7]);
963+
DC_LOG_DEBUG(" scratch [8] : %08x", dc_dmub_srv->dmub->debug.scratch[8]);
964+
DC_LOG_DEBUG(" scratch [9] : %08x", dc_dmub_srv->dmub->debug.scratch[9]);
965+
DC_LOG_DEBUG(" scratch [10] : %08x", dc_dmub_srv->dmub->debug.scratch[10]);
966+
DC_LOG_DEBUG(" scratch [11] : %08x", dc_dmub_srv->dmub->debug.scratch[11]);
967+
DC_LOG_DEBUG(" scratch [12] : %08x", dc_dmub_srv->dmub->debug.scratch[12]);
968+
DC_LOG_DEBUG(" scratch [13] : %08x", dc_dmub_srv->dmub->debug.scratch[13]);
969+
DC_LOG_DEBUG(" scratch [14] : %08x", dc_dmub_srv->dmub->debug.scratch[14]);
970+
DC_LOG_DEBUG(" scratch [15] : %08x", dc_dmub_srv->dmub->debug.scratch[15]);
972971
for (i = 0; i < DMUB_PC_SNAPSHOT_COUNT; i++)
973-
DC_LOG_DEBUG(" pc[%d] : %08x", i, diag_data.pc[i]);
974-
DC_LOG_DEBUG(" unk_fault_addr : %08x", diag_data.undefined_address_fault_addr);
975-
DC_LOG_DEBUG(" inst_fault_addr : %08x", diag_data.inst_fetch_fault_addr);
976-
DC_LOG_DEBUG(" data_fault_addr : %08x", diag_data.data_write_fault_addr);
977-
DC_LOG_DEBUG(" inbox1_rptr : %08x", diag_data.inbox1_rptr);
978-
DC_LOG_DEBUG(" inbox1_wptr : %08x", diag_data.inbox1_wptr);
979-
DC_LOG_DEBUG(" inbox1_size : %08x", diag_data.inbox1_size);
980-
DC_LOG_DEBUG(" inbox0_rptr : %08x", diag_data.inbox0_rptr);
981-
DC_LOG_DEBUG(" inbox0_wptr : %08x", diag_data.inbox0_wptr);
982-
DC_LOG_DEBUG(" inbox0_size : %08x", diag_data.inbox0_size);
983-
DC_LOG_DEBUG(" outbox1_rptr : %08x", diag_data.outbox1_rptr);
984-
DC_LOG_DEBUG(" outbox1_wptr : %08x", diag_data.outbox1_wptr);
985-
DC_LOG_DEBUG(" outbox1_size : %08x", diag_data.outbox1_size);
986-
DC_LOG_DEBUG(" is_enabled : %d", diag_data.is_dmcub_enabled);
987-
DC_LOG_DEBUG(" is_soft_reset : %d", diag_data.is_dmcub_soft_reset);
988-
DC_LOG_DEBUG(" is_secure_reset : %d", diag_data.is_dmcub_secure_reset);
989-
DC_LOG_DEBUG(" is_traceport_en : %d", diag_data.is_traceport_en);
990-
DC_LOG_DEBUG(" is_cw0_en : %d", diag_data.is_cw0_enabled);
991-
DC_LOG_DEBUG(" is_cw6_en : %d", diag_data.is_cw6_enabled);
972+
DC_LOG_DEBUG(" pc[%d] : %08x", i, dc_dmub_srv->dmub->debug.pc[i]);
973+
DC_LOG_DEBUG(" unk_fault_addr : %08x", dc_dmub_srv->dmub->debug.undefined_address_fault_addr);
974+
DC_LOG_DEBUG(" inst_fault_addr : %08x", dc_dmub_srv->dmub->debug.inst_fetch_fault_addr);
975+
DC_LOG_DEBUG(" data_fault_addr : %08x", dc_dmub_srv->dmub->debug.data_write_fault_addr);
976+
DC_LOG_DEBUG(" inbox1_rptr : %08x", dc_dmub_srv->dmub->debug.inbox1_rptr);
977+
DC_LOG_DEBUG(" inbox1_wptr : %08x", dc_dmub_srv->dmub->debug.inbox1_wptr);
978+
DC_LOG_DEBUG(" inbox1_size : %08x", dc_dmub_srv->dmub->debug.inbox1_size);
979+
DC_LOG_DEBUG(" inbox0_rptr : %08x", dc_dmub_srv->dmub->debug.inbox0_rptr);
980+
DC_LOG_DEBUG(" inbox0_wptr : %08x", dc_dmub_srv->dmub->debug.inbox0_wptr);
981+
DC_LOG_DEBUG(" inbox0_size : %08x", dc_dmub_srv->dmub->debug.inbox0_size);
982+
DC_LOG_DEBUG(" outbox1_rptr : %08x", dc_dmub_srv->dmub->debug.outbox1_rptr);
983+
DC_LOG_DEBUG(" outbox1_wptr : %08x", dc_dmub_srv->dmub->debug.outbox1_wptr);
984+
DC_LOG_DEBUG(" outbox1_size : %08x", dc_dmub_srv->dmub->debug.outbox1_size);
985+
DC_LOG_DEBUG(" is_enabled : %d", dc_dmub_srv->dmub->debug.is_dmcub_enabled);
986+
DC_LOG_DEBUG(" is_soft_reset : %d", dc_dmub_srv->dmub->debug.is_dmcub_soft_reset);
987+
DC_LOG_DEBUG(" is_secure_reset : %d", dc_dmub_srv->dmub->debug.is_dmcub_secure_reset);
988+
DC_LOG_DEBUG(" is_traceport_en : %d", dc_dmub_srv->dmub->debug.is_traceport_en);
989+
DC_LOG_DEBUG(" is_cw0_en : %d", dc_dmub_srv->dmub->debug.is_cw0_enabled);
990+
DC_LOG_DEBUG(" is_cw6_en : %d", dc_dmub_srv->dmub->debug.is_cw6_enabled);
992991
}
993992

994993
static bool dc_dmub_should_update_cursor_data(struct pipe_ctx *pipe_ctx)

drivers/gpu/drm/amd/display/dc/dc_dmub_srv.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ void dc_dmub_srv_clear_inbox0_ack(struct dc_dmub_srv *dmub_srv);
9494
void dc_dmub_srv_wait_for_inbox0_ack(struct dc_dmub_srv *dmub_srv);
9595
void dc_dmub_srv_send_inbox0_cmd(struct dc_dmub_srv *dmub_srv, union dmub_inbox0_data_register data);
9696

97-
bool dc_dmub_srv_get_diagnostic_data(struct dc_dmub_srv *dc_dmub_srv, struct dmub_diagnostic_data *dmub_oca);
97+
bool dc_dmub_srv_get_diagnostic_data(struct dc_dmub_srv *dc_dmub_srv);
9898

9999
void dc_dmub_setup_subvp_dmub_command(struct dc *dc, struct dc_state *context, bool enable);
100100
void dc_dmub_srv_log_diagnostic_data(struct dc_dmub_srv *dc_dmub_srv);

drivers/gpu/drm/amd/display/dmub/dmub_srv.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,7 @@ struct dmub_srv_hw_params {
313313
* @timeout_occured: Indicates a timeout occured on any message from driver to dmub
314314
* @timeout_cmd: first cmd sent from driver that timed out - subsequent timeouts are not stored
315315
*/
316-
struct dmub_srv_debug {
316+
struct dmub_timeout_info {
317317
bool timeout_occured;
318318
union dmub_rb_cmd timeout_cmd;
319319
unsigned long long timestamp;
@@ -340,7 +340,7 @@ struct dmub_diagnostic_data {
340340
uint32_t outbox1_wptr;
341341
uint32_t outbox1_size;
342342
uint32_t gpint_datain0;
343-
struct dmub_srv_debug timeout_info;
343+
struct dmub_timeout_info timeout_info;
344344
uint8_t is_dmcub_enabled : 1;
345345
uint8_t is_dmcub_soft_reset : 1;
346346
uint8_t is_dmcub_secure_reset : 1;
@@ -456,7 +456,7 @@ struct dmub_srv_hw_funcs {
456456
void (*send_inbox0_cmd)(struct dmub_srv *dmub, union dmub_inbox0_data_register data);
457457
uint32_t (*get_current_time)(struct dmub_srv *dmub);
458458

459-
void (*get_diagnostic_data)(struct dmub_srv *dmub, struct dmub_diagnostic_data *dmub_oca);
459+
void (*get_diagnostic_data)(struct dmub_srv *dmub);
460460

461461
bool (*should_detect)(struct dmub_srv *dmub);
462462
void (*init_reg_offsets)(struct dmub_srv *dmub, struct dc_context *ctx);
@@ -545,7 +545,7 @@ struct dmub_srv {
545545
struct dmub_visual_confirm_color visual_confirm_color;
546546

547547
enum dmub_srv_power_state_type power_state;
548-
struct dmub_srv_debug debug;
548+
struct dmub_diagnostic_data debug;
549549
};
550550

551551
/**
@@ -901,7 +901,7 @@ enum dmub_status dmub_srv_set_skip_panel_power_sequence(struct dmub_srv *dmub,
901901

902902
bool dmub_srv_get_outbox0_msg(struct dmub_srv *dmub, struct dmcub_trace_buf_entry *entry);
903903

904-
bool dmub_srv_get_diagnostic_data(struct dmub_srv *dmub, struct dmub_diagnostic_data *diag_data);
904+
bool dmub_srv_get_diagnostic_data(struct dmub_srv *dmub);
905905

906906
bool dmub_srv_should_detect(struct dmub_srv *dmub);
907907

drivers/gpu/drm/amd/display/dmub/src/dmub_dcn20.c

Lines changed: 44 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -414,63 +414,66 @@ uint32_t dmub_dcn20_get_current_time(struct dmub_srv *dmub)
414414
return REG_READ(DMCUB_TIMER_CURRENT);
415415
}
416416

417-
void dmub_dcn20_get_diagnostic_data(struct dmub_srv *dmub, struct dmub_diagnostic_data *diag_data)
417+
void dmub_dcn20_get_diagnostic_data(struct dmub_srv *dmub)
418418
{
419419
uint32_t is_dmub_enabled, is_soft_reset, is_sec_reset;
420420
uint32_t is_traceport_enabled, is_cw0_enabled, is_cw6_enabled;
421+
struct dmub_timeout_info timeout = {0};
421422

422-
if (!dmub || !diag_data)
423+
if (!dmub)
423424
return;
424425

425-
memset(diag_data, 0, sizeof(*diag_data));
426-
427-
diag_data->dmcub_version = dmub->fw_version;
428-
429-
diag_data->scratch[0] = REG_READ(DMCUB_SCRATCH0);
430-
diag_data->scratch[1] = REG_READ(DMCUB_SCRATCH1);
431-
diag_data->scratch[2] = REG_READ(DMCUB_SCRATCH2);
432-
diag_data->scratch[3] = REG_READ(DMCUB_SCRATCH3);
433-
diag_data->scratch[4] = REG_READ(DMCUB_SCRATCH4);
434-
diag_data->scratch[5] = REG_READ(DMCUB_SCRATCH5);
435-
diag_data->scratch[6] = REG_READ(DMCUB_SCRATCH6);
436-
diag_data->scratch[7] = REG_READ(DMCUB_SCRATCH7);
437-
diag_data->scratch[8] = REG_READ(DMCUB_SCRATCH8);
438-
diag_data->scratch[9] = REG_READ(DMCUB_SCRATCH9);
439-
diag_data->scratch[10] = REG_READ(DMCUB_SCRATCH10);
440-
diag_data->scratch[11] = REG_READ(DMCUB_SCRATCH11);
441-
diag_data->scratch[12] = REG_READ(DMCUB_SCRATCH12);
442-
diag_data->scratch[13] = REG_READ(DMCUB_SCRATCH13);
443-
diag_data->scratch[14] = REG_READ(DMCUB_SCRATCH14);
444-
diag_data->scratch[15] = REG_READ(DMCUB_SCRATCH15);
445-
446-
diag_data->undefined_address_fault_addr = REG_READ(DMCUB_UNDEFINED_ADDRESS_FAULT_ADDR);
447-
diag_data->inst_fetch_fault_addr = REG_READ(DMCUB_INST_FETCH_FAULT_ADDR);
448-
diag_data->data_write_fault_addr = REG_READ(DMCUB_DATA_WRITE_FAULT_ADDR);
449-
450-
diag_data->inbox1_rptr = REG_READ(DMCUB_INBOX1_RPTR);
451-
diag_data->inbox1_wptr = REG_READ(DMCUB_INBOX1_WPTR);
452-
diag_data->inbox1_size = REG_READ(DMCUB_INBOX1_SIZE);
453-
454-
diag_data->inbox0_rptr = REG_READ(DMCUB_INBOX0_RPTR);
455-
diag_data->inbox0_wptr = REG_READ(DMCUB_INBOX0_WPTR);
456-
diag_data->inbox0_size = REG_READ(DMCUB_INBOX0_SIZE);
426+
/* timeout data filled externally, cache before resetting memory */
427+
timeout = dmub->debug.timeout_info;
428+
memset(&dmub->debug, 0, sizeof(dmub->debug));
429+
dmub->debug.timeout_info = timeout;
430+
431+
dmub->debug.dmcub_version = dmub->fw_version;
432+
433+
dmub->debug.scratch[0] = REG_READ(DMCUB_SCRATCH0);
434+
dmub->debug.scratch[1] = REG_READ(DMCUB_SCRATCH1);
435+
dmub->debug.scratch[2] = REG_READ(DMCUB_SCRATCH2);
436+
dmub->debug.scratch[3] = REG_READ(DMCUB_SCRATCH3);
437+
dmub->debug.scratch[4] = REG_READ(DMCUB_SCRATCH4);
438+
dmub->debug.scratch[5] = REG_READ(DMCUB_SCRATCH5);
439+
dmub->debug.scratch[6] = REG_READ(DMCUB_SCRATCH6);
440+
dmub->debug.scratch[7] = REG_READ(DMCUB_SCRATCH7);
441+
dmub->debug.scratch[8] = REG_READ(DMCUB_SCRATCH8);
442+
dmub->debug.scratch[9] = REG_READ(DMCUB_SCRATCH9);
443+
dmub->debug.scratch[10] = REG_READ(DMCUB_SCRATCH10);
444+
dmub->debug.scratch[11] = REG_READ(DMCUB_SCRATCH11);
445+
dmub->debug.scratch[12] = REG_READ(DMCUB_SCRATCH12);
446+
dmub->debug.scratch[13] = REG_READ(DMCUB_SCRATCH13);
447+
dmub->debug.scratch[14] = REG_READ(DMCUB_SCRATCH14);
448+
dmub->debug.scratch[15] = REG_READ(DMCUB_SCRATCH15);
449+
450+
dmub->debug.undefined_address_fault_addr = REG_READ(DMCUB_UNDEFINED_ADDRESS_FAULT_ADDR);
451+
dmub->debug.inst_fetch_fault_addr = REG_READ(DMCUB_INST_FETCH_FAULT_ADDR);
452+
dmub->debug.data_write_fault_addr = REG_READ(DMCUB_DATA_WRITE_FAULT_ADDR);
453+
454+
dmub->debug.inbox1_rptr = REG_READ(DMCUB_INBOX1_RPTR);
455+
dmub->debug.inbox1_wptr = REG_READ(DMCUB_INBOX1_WPTR);
456+
dmub->debug.inbox1_size = REG_READ(DMCUB_INBOX1_SIZE);
457+
458+
dmub->debug.inbox0_rptr = REG_READ(DMCUB_INBOX0_RPTR);
459+
dmub->debug.inbox0_wptr = REG_READ(DMCUB_INBOX0_WPTR);
460+
dmub->debug.inbox0_size = REG_READ(DMCUB_INBOX0_SIZE);
457461

458462
REG_GET(DMCUB_CNTL, DMCUB_ENABLE, &is_dmub_enabled);
459-
diag_data->is_dmcub_enabled = is_dmub_enabled;
463+
dmub->debug.is_dmcub_enabled = is_dmub_enabled;
460464

461465
REG_GET(DMCUB_CNTL, DMCUB_SOFT_RESET, &is_soft_reset);
462-
diag_data->is_dmcub_soft_reset = is_soft_reset;
466+
dmub->debug.is_dmcub_soft_reset = is_soft_reset;
463467

464468
REG_GET(DMCUB_SEC_CNTL, DMCUB_SEC_RESET_STATUS, &is_sec_reset);
465-
diag_data->is_dmcub_secure_reset = is_sec_reset;
469+
dmub->debug.is_dmcub_secure_reset = is_sec_reset;
466470

467471
REG_GET(DMCUB_CNTL, DMCUB_TRACEPORT_EN, &is_traceport_enabled);
468-
diag_data->is_traceport_en = is_traceport_enabled;
472+
dmub->debug.is_traceport_en = is_traceport_enabled;
469473

470474
REG_GET(DMCUB_REGION3_CW0_TOP_ADDRESS, DMCUB_REGION3_CW0_ENABLE, &is_cw0_enabled);
471-
diag_data->is_cw0_enabled = is_cw0_enabled;
475+
dmub->debug.is_cw0_enabled = is_cw0_enabled;
472476

473477
REG_GET(DMCUB_REGION3_CW6_TOP_ADDRESS, DMCUB_REGION3_CW6_ENABLE, &is_cw6_enabled);
474-
diag_data->is_cw6_enabled = is_cw6_enabled;
475-
diag_data->timeout_info = dmub->debug;
478+
dmub->debug.is_cw6_enabled = is_cw6_enabled;
476479
}

drivers/gpu/drm/amd/display/dmub/src/dmub_dcn20.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,6 @@ bool dmub_dcn20_use_cached_trace_buffer(struct dmub_srv *dmub);
247247

248248
uint32_t dmub_dcn20_get_current_time(struct dmub_srv *dmub);
249249

250-
void dmub_dcn20_get_diagnostic_data(struct dmub_srv *dmub, struct dmub_diagnostic_data *dmub_oca);
250+
void dmub_dcn20_get_diagnostic_data(struct dmub_srv *dmub);
251251

252252
#endif /* _DMUB_DCN20_H_ */

0 commit comments

Comments
 (0)