In order to test whether the load tracker is working as expected, we need the ability to compare the commit result with the underrun indication. With the load tracker always enabled, commits that are expected to trigger an underrun are always rejected, so userspace cannot get the actual underrun indication from the hardware. Add a debugfs entry to disable/enable the load tracker, so that a DRM commit expected to trigger an underrun can go through with the load tracker disabled. The underrun indication is then available to userspace and can be checked against the commit result with the load tracker enabled. Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com> Reviewed-by: Eric Anholt <eric@anholt.net> Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com> Link: https://patchwork.freedesktop.org/patch/msgid/20190220155124.25022-4-paul.kocialkowski@bootlin.com
50 lines
1.5 KiB
C
50 lines
1.5 KiB
C
/*
|
|
* Copyright © 2014 Broadcom
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*/
|
|
|
|
#include <linux/seq_file.h>
|
|
#include <linux/circ_buf.h>
|
|
#include <linux/ctype.h>
|
|
#include <linux/debugfs.h>
|
|
#include <drm/drmP.h>
|
|
|
|
#include "vc4_drv.h"
|
|
#include "vc4_regs.h"
|
|
|
|
static const struct drm_info_list vc4_debugfs_list[] = {
|
|
{"bo_stats", vc4_bo_stats_debugfs, 0},
|
|
{"dpi_regs", vc4_dpi_debugfs_regs, 0},
|
|
{"dsi1_regs", vc4_dsi_debugfs_regs, 0, (void *)(uintptr_t)1},
|
|
{"hdmi_regs", vc4_hdmi_debugfs_regs, 0},
|
|
{"vec_regs", vc4_vec_debugfs_regs, 0},
|
|
{"txp_regs", vc4_txp_debugfs_regs, 0},
|
|
{"hvs_regs", vc4_hvs_debugfs_regs, 0},
|
|
{"hvs_underrun", vc4_hvs_debugfs_underrun, 0},
|
|
{"crtc0_regs", vc4_crtc_debugfs_regs, 0, (void *)(uintptr_t)0},
|
|
{"crtc1_regs", vc4_crtc_debugfs_regs, 0, (void *)(uintptr_t)1},
|
|
{"crtc2_regs", vc4_crtc_debugfs_regs, 0, (void *)(uintptr_t)2},
|
|
{"v3d_ident", vc4_v3d_debugfs_ident, 0},
|
|
{"v3d_regs", vc4_v3d_debugfs_regs, 0},
|
|
};
|
|
|
|
#define VC4_DEBUGFS_ENTRIES ARRAY_SIZE(vc4_debugfs_list)
|
|
|
|
int
|
|
vc4_debugfs_init(struct drm_minor *minor)
|
|
{
|
|
struct vc4_dev *vc4 = to_vc4_dev(minor->dev);
|
|
struct dentry *dentry;
|
|
|
|
dentry = debugfs_create_bool("hvs_load_tracker", S_IRUGO | S_IWUSR,
|
|
minor->debugfs_root,
|
|
&vc4->load_tracker_enabled);
|
|
if (!dentry)
|
|
return -ENOMEM;
|
|
|
|
return drm_debugfs_create_files(vc4_debugfs_list, VC4_DEBUGFS_ENTRIES,
|
|
minor->debugfs_root, minor);
|
|
}
|