mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-28 04:55:18 +07:00
7786fd1087
Expose performance counters through 2 driver specific ioctls: one to enable/disable the perfcnt block, and one to dump the counter values. There are discussions to expose global performance monitors (those counters that can't be retrieved on a per-job basis) in a consistent way, but this is likely to take time to settle on something that works for various HW/users. The ioctls are marked unstable so we can get rid of them when the time comes. We initally went for a debugfs-based interface, but this was making the transition to per-FD address space more complicated (we need to specify the namespace the GPU has to use when dumping the perf counters), hence the decision to switch back to driver specific ioctls which are passed the FD they operate on and thus will have a dedicated address space attached to them. Other than that, the implementation is pretty simple: it basically dumps all counters and copy the values to a userspace buffer. The parsing is left to userspace which has to know the specific layout that's used by the GPU (layout differs on a per-revision basis). Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com> Acked-by: Alyssa Rosenzweig <alyssa@rosenzweig.io> Signed-off-by: Rob Herring <robh@kernel.org> Link: https://patchwork.freedesktop.org/patch/msgid/20190618081648.17297-5-boris.brezillon@collabora.com
19 lines
698 B
C
19 lines
698 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/* Copyright 2019 Collabora Ltd */
|
|
#ifndef __PANFROST_PERFCNT_H__
|
|
#define __PANFROST_PERFCNT_H__
|
|
|
|
#include "panfrost_device.h"
|
|
|
|
void panfrost_perfcnt_sample_done(struct panfrost_device *pfdev);
|
|
void panfrost_perfcnt_clean_cache_done(struct panfrost_device *pfdev);
|
|
int panfrost_perfcnt_init(struct panfrost_device *pfdev);
|
|
void panfrost_perfcnt_fini(struct panfrost_device *pfdev);
|
|
void panfrost_perfcnt_close(struct panfrost_file_priv *pfile);
|
|
int panfrost_ioctl_perfcnt_enable(struct drm_device *dev, void *data,
|
|
struct drm_file *file_priv);
|
|
int panfrost_ioctl_perfcnt_dump(struct drm_device *dev, void *data,
|
|
struct drm_file *file_priv);
|
|
|
|
#endif
|