-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
drm/imagination: Add firmware trace to debugfs
Firmware trace is exposed at /sys/debug/dri/<dev_nr>/pvr_fw/trace_0. Trace is enabled via the group mask at /sys/debug/dri/<dev_nr>/pvr_params/fw_trace_mask. Changes since v8: - Corrected license identifiers Changes since v3: - Use drm_dev_{enter,exit} Co-developed-by: Matt Coster <matt.coster@imgtec.com> Signed-off-by: Matt Coster <matt.coster@imgtec.com> Signed-off-by: Sarah Walker <sarah.walker@imgtec.com> Signed-off-by: Donald Robson <donald.robson@imgtec.com> Link: https://lore.kernel.org/r/009cf9fee347fa96c8a665dc368fc54a5ffceff0.1700668843.git.donald.robson@imgtec.com Signed-off-by: Maxime Ripard <mripard@kernel.org>
- Loading branch information
Sarah Walker
authored and
Maxime Ripard
committed
Nov 23, 2023
1 parent
6b17baa
commit cb56cd6
Showing
9 changed files
with
723 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
// SPDX-License-Identifier: GPL-2.0-only OR MIT | ||
/* Copyright (c) 2023 Imagination Technologies Ltd. */ | ||
|
||
#include "pvr_debugfs.h" | ||
|
||
#include "pvr_device.h" | ||
#include "pvr_fw_trace.h" | ||
#include "pvr_params.h" | ||
|
||
#include <linux/dcache.h> | ||
#include <linux/debugfs.h> | ||
#include <linux/err.h> | ||
#include <linux/kernel.h> | ||
#include <linux/types.h> | ||
|
||
#include <drm/drm_device.h> | ||
#include <drm/drm_file.h> | ||
#include <drm/drm_print.h> | ||
|
||
static const struct pvr_debugfs_entry pvr_debugfs_entries[] = { | ||
{"pvr_params", pvr_params_debugfs_init}, | ||
{"pvr_fw", pvr_fw_trace_debugfs_init}, | ||
}; | ||
|
||
void | ||
pvr_debugfs_init(struct drm_minor *minor) | ||
{ | ||
struct drm_device *drm_dev = minor->dev; | ||
struct pvr_device *pvr_dev = to_pvr_device(drm_dev); | ||
struct dentry *root = minor->debugfs_root; | ||
size_t i; | ||
|
||
for (i = 0; i < ARRAY_SIZE(pvr_debugfs_entries); ++i) { | ||
const struct pvr_debugfs_entry *entry = &pvr_debugfs_entries[i]; | ||
struct dentry *dir; | ||
|
||
dir = debugfs_create_dir(entry->name, root); | ||
if (IS_ERR(dir)) { | ||
drm_warn(drm_dev, | ||
"failed to create debugfs dir '%s' (err=%d)", | ||
entry->name, (int)PTR_ERR(dir)); | ||
continue; | ||
} | ||
|
||
entry->init(pvr_dev, dir); | ||
} | ||
} | ||
|
||
/* | ||
* Since all entries are created under &drm_minor->debugfs_root, there's no | ||
* need for a pvr_debugfs_fini() as DRM will clean up everything under its root | ||
* automatically. | ||
*/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
/* SPDX-License-Identifier: GPL-2.0-only OR MIT */ | ||
/* Copyright (c) 2023 Imagination Technologies Ltd. */ | ||
|
||
#ifndef PVR_DEBUGFS_H | ||
#define PVR_DEBUGFS_H | ||
|
||
/* Forward declaration from <drm/drm_drv.h>. */ | ||
struct drm_minor; | ||
|
||
#if defined(CONFIG_DEBUG_FS) | ||
/* Forward declaration from "pvr_device.h". */ | ||
struct pvr_device; | ||
|
||
/* Forward declaration from <linux/dcache.h>. */ | ||
struct dentry; | ||
|
||
struct pvr_debugfs_entry { | ||
const char *name; | ||
void (*init)(struct pvr_device *pvr_dev, struct dentry *dir); | ||
}; | ||
|
||
void pvr_debugfs_init(struct drm_minor *minor); | ||
#else /* defined(CONFIG_DEBUG_FS) */ | ||
#include <linux/compiler_attributes.h> | ||
|
||
static __always_inline void pvr_debugfs_init(struct drm_minor *minor) {} | ||
#endif /* defined(CONFIG_DEBUG_FS) */ | ||
|
||
#endif /* PVR_DEBUGFS_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.