summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/debug_gk20a.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/debug_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/debug_gk20a.c103
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
389void gk20a_debug_init(struct device *dev) 389void 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}