diff options
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/debug_gk20a.c')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/debug_gk20a.c | 103 |
1 files changed, 87 insertions, 16 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/debug_gk20a.c b/drivers/gpu/nvgpu/gk20a/debug_gk20a.c index 93580a7f..9a84e2e3 100644 --- a/drivers/gpu/nvgpu/gk20a/debug_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/debug_gk20a.c | |||
@@ -386,30 +386,101 @@ void gk20a_init_debug_ops(struct gpu_ops *gops) | |||
386 | gops->debug.show_dump = gk20a_debug_show_dump; | 386 | gops->debug.show_dump = gk20a_debug_show_dump; |
387 | } | 387 | } |
388 | 388 | ||
389 | void gk20a_debug_init(struct device *dev) | 389 | void gk20a_debug_init(struct device *dev, const char *debugfs_symlink) |
390 | { | 390 | { |
391 | struct gk20a_platform *platform = dev_get_drvdata(dev); | 391 | struct gk20a_platform *platform = dev_get_drvdata(dev); |
392 | #ifdef CONFIG_DEBUG_FS | ||
393 | struct gk20a *g = platform->g; | ||
394 | #endif | ||
392 | 395 | ||
393 | platform->debugfs = debugfs_create_dir(dev_name(dev), NULL); | 396 | platform->debugfs = debugfs_create_dir(dev_name(dev), NULL); |
394 | if (platform->debugfs) { | 397 | if (!platform->debugfs) |
398 | return; | ||
399 | |||
400 | if (debugfs_symlink) | ||
395 | platform->debugfs_alias = | 401 | platform->debugfs_alias = |
396 | debugfs_create_symlink("gpu.0", NULL, dev_name(dev)); | 402 | debugfs_create_symlink(debugfs_symlink, |
403 | NULL, dev_name(dev)); | ||
397 | 404 | ||
398 | debugfs_create_file("status", S_IRUGO, platform->debugfs, | 405 | debugfs_create_file("status", S_IRUGO, platform->debugfs, |
399 | dev, &gk20a_debug_fops); | 406 | dev, &gk20a_debug_fops); |
400 | debugfs_create_file("gr_status", S_IRUGO, platform->debugfs, | 407 | debugfs_create_file("gr_status", S_IRUGO, platform->debugfs, |
401 | dev, &gk20a_gr_debug_fops); | 408 | dev, &gk20a_gr_debug_fops); |
402 | debugfs_create_u32("trace_cmdbuf", S_IRUGO|S_IWUSR, | 409 | debugfs_create_u32("trace_cmdbuf", S_IRUGO|S_IWUSR, |
403 | platform->debugfs, &gk20a_debug_trace_cmdbuf); | 410 | platform->debugfs, &gk20a_debug_trace_cmdbuf); |
404 | 411 | ||
405 | debugfs_create_u32("ch_wdt_timeout_ms", S_IRUGO|S_IWUSR, | 412 | debugfs_create_u32("ch_wdt_timeout_ms", S_IRUGO|S_IWUSR, |
406 | platform->debugfs, &platform->ch_wdt_timeout_ms); | 413 | platform->debugfs, &platform->ch_wdt_timeout_ms); |
407 | 414 | ||
408 | #if defined(GK20A_DEBUG) | 415 | #if defined(GK20A_DEBUG) |
409 | debugfs_create_u32("dbg_mask", S_IRUGO|S_IWUSR, | 416 | debugfs_create_u32("dbg_mask", S_IRUGO|S_IWUSR, |
410 | platform->debugfs, &gk20a_dbg_mask); | 417 | platform->debugfs, &gk20a_dbg_mask); |
411 | debugfs_create_u32("dbg_ftrace", S_IRUGO|S_IWUSR, | 418 | debugfs_create_u32("dbg_ftrace", S_IRUGO|S_IWUSR, |
412 | platform->debugfs, &gk20a_dbg_ftrace); | 419 | platform->debugfs, &gk20a_dbg_ftrace); |
413 | #endif | 420 | #endif |
414 | } | 421 | |
422 | #ifdef CONFIG_DEBUG_FS | ||
423 | spin_lock_init(&g->debugfs_lock); | ||
424 | |||
425 | g->mm.ltc_enabled = true; | ||
426 | g->mm.ltc_enabled_debug = true; | ||
427 | |||
428 | g->debugfs_ltc_enabled = | ||
429 | debugfs_create_bool("ltc_enabled", S_IRUGO|S_IWUSR, | ||
430 | platform->debugfs, | ||
431 | &g->mm.ltc_enabled_debug); | ||
432 | |||
433 | g->debugfs_gr_idle_timeout_default = | ||
434 | debugfs_create_u32("gr_idle_timeout_default_us", | ||
435 | S_IRUGO|S_IWUSR, platform->debugfs, | ||
436 | &g->gr_idle_timeout_default); | ||
437 | g->debugfs_timeouts_enabled = | ||
438 | debugfs_create_bool("timeouts_enabled", | ||
439 | S_IRUGO|S_IWUSR, | ||
440 | platform->debugfs, | ||
441 | &g->timeouts_enabled); | ||
442 | |||
443 | g->debugfs_bypass_smmu = | ||
444 | debugfs_create_bool("bypass_smmu", | ||
445 | S_IRUGO|S_IWUSR, | ||
446 | platform->debugfs, | ||
447 | &g->mm.bypass_smmu); | ||
448 | g->debugfs_disable_bigpage = | ||
449 | debugfs_create_bool("disable_bigpage", | ||
450 | S_IRUGO|S_IWUSR, | ||
451 | platform->debugfs, | ||
452 | &g->mm.disable_bigpage); | ||
453 | |||
454 | g->debugfs_timeslice_low_priority_us = | ||
455 | debugfs_create_u32("timeslice_low_priority_us", | ||
456 | S_IRUGO|S_IWUSR, | ||
457 | platform->debugfs, | ||
458 | &g->timeslice_low_priority_us); | ||
459 | g->debugfs_timeslice_medium_priority_us = | ||
460 | debugfs_create_u32("timeslice_medium_priority_us", | ||
461 | S_IRUGO|S_IWUSR, | ||
462 | platform->debugfs, | ||
463 | &g->timeslice_medium_priority_us); | ||
464 | g->debugfs_timeslice_high_priority_us = | ||
465 | debugfs_create_u32("timeslice_high_priority_us", | ||
466 | S_IRUGO|S_IWUSR, | ||
467 | platform->debugfs, | ||
468 | &g->timeslice_high_priority_us); | ||
469 | g->debugfs_runlist_interleave = | ||
470 | debugfs_create_bool("runlist_interleave", | ||
471 | S_IRUGO|S_IWUSR, | ||
472 | platform->debugfs, | ||
473 | &g->runlist_interleave); | ||
474 | |||
475 | gr_gk20a_debugfs_init(g); | ||
476 | gk20a_pmu_debugfs_init(g->dev); | ||
477 | gk20a_railgating_debugfs_init(g->dev); | ||
478 | gk20a_cde_debugfs_init(g->dev); | ||
479 | gk20a_ce_debugfs_init(g->dev); | ||
480 | gk20a_alloc_debugfs_init(g->dev); | ||
481 | gk20a_mm_debugfs_init(g->dev); | ||
482 | gk20a_fifo_debugfs_init(g->dev); | ||
483 | gk20a_sched_debugfs_init(g->dev); | ||
484 | #endif | ||
485 | |||
415 | } | 486 | } |