From: Boris Brezillon <boris.brezillon@collabora.com>
To: "Adrián Larumbe" <adrian.larumbe@collabora.com>
Cc: "Steven Price" <steven.price@arm.com>,
"Liviu Dudau" <liviu.dudau@arm.com>,
"Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>,
"Maxime Ripard" <mripard@kernel.org>,
"Thomas Zimmermann" <tzimmermann@suse.de>,
"David Airlie" <airlied@gmail.com>,
"Daniel Vetter" <daniel@ffwll.ch>,
"Sumit Semwal" <sumit.semwal@linaro.org>,
"Christian König" <christian.koenig@amd.com>,
kernel@collabora.com, dri-devel@lists.freedesktop.org,
linux-kernel@vger.kernel.org, linux-media@vger.kernel.org,
linaro-mm-sig@lists.linaro.org
Subject: Re: [PATCH v5 4/4] drm/panthor: add sysfs knob for enabling job profiling
Date: Wed, 4 Sep 2024 10:07:43 +0200 [thread overview]
Message-ID: <20240904100743.225f1837@collabora.com> (raw)
In-Reply-To: <20240903202541.430225-5-adrian.larumbe@collabora.com>
On Tue, 3 Sep 2024 21:25:38 +0100
Adrián Larumbe <adrian.larumbe@collabora.com> wrote:
> This commit introduces a DRM device sysfs attribute that lets UM control
> the job accounting status in the device. The knob variable had been brought
> in as part of a previous commit, but now we're able to fix it manually.
>
> As sysfs files are part of a driver's uAPI, describe its legitimate input
> values and output format in a documentation file.
>
> Signed-off-by: Adrián Larumbe <adrian.larumbe@collabora.com>
> ---
> Documentation/gpu/panthor.rst | 46 +++++++++++++++++++++++++++
> drivers/gpu/drm/panthor/panthor_drv.c | 39 +++++++++++++++++++++++
> 2 files changed, 85 insertions(+)
> create mode 100644 Documentation/gpu/panthor.rst
>
> diff --git a/Documentation/gpu/panthor.rst b/Documentation/gpu/panthor.rst
> new file mode 100644
> index 000000000000..cbf5c4429a2d
> --- /dev/null
> +++ b/Documentation/gpu/panthor.rst
> @@ -0,0 +1,46 @@
> +.. SPDX-License-Identifier: GPL-2.0+
> +
> +=========================
> + drm/Panthor CSF driver
> +=========================
> +
> +.. _panfrost-usage-stats:
> +
> +Panthor DRM client usage stats implementation
> +==============================================
> +
> +The drm/Panthor driver implements the DRM client usage stats specification as
> +documented in :ref:`drm-client-usage-stats`.
> +
> +Example of the output showing the implemented key value pairs and entirety of
> +the currently possible format options:
> +
> +::
> + pos: 0
> + flags: 02400002
> + mnt_id: 29
> + ino: 491
> + drm-driver: panthor
> + drm-client-id: 10
> + drm-engine-panthor: 111110952750 ns
> + drm-cycles-panthor: 94439687187
> + drm-maxfreq-panthor: 1000000000 Hz
> + drm-curfreq-panthor: 1000000000 Hz
> + drm-total-memory: 16480 KiB
> + drm-shared-memory: 0
> + drm-active-memory: 16200 KiB
> + drm-resident-memory: 16480 KiB
> + drm-purgeable-memory: 0
> +
> +Possible `drm-engine-` key names are: `panthor`.
> +`drm-curfreq-` values convey the current operating frequency for that engine.
> +
> +Users must bear in mind that engine and cycle sampling are disabled by default,
> +because of power saving concerns. `fdinfo` users and benchmark applications which
> +query the fdinfo file must make sure to toggle the job profiling status of the
> +driver by writing into the appropriate sysfs node::
> +
> + echo <N> > /sys/bus/platform/drivers/panthor/[a-f0-9]*.gpu/profiling
> +
> +Where `N` is a bit mask where cycle and timestamp sampling are respectively
> +enabled by the first and second bits.
This should probably be documented in
Documentation/ABI/testing/sysfs-driver-panthor too.
> diff --git a/drivers/gpu/drm/panthor/panthor_drv.c b/drivers/gpu/drm/panthor/panthor_drv.c
> index e18838754963..26475db96c41 100644
> --- a/drivers/gpu/drm/panthor/panthor_drv.c
> +++ b/drivers/gpu/drm/panthor/panthor_drv.c
> @@ -1450,6 +1450,44 @@ static void panthor_remove(struct platform_device *pdev)
> panthor_device_unplug(ptdev);
> }
>
> +static ssize_t profiling_show(struct device *dev,
> + struct device_attribute *attr,
> + char *buf)
> +{
> + struct panthor_device *ptdev = dev_get_drvdata(dev);
> +
> + return sysfs_emit(buf, "%d\n", ptdev->profile_mask);
> +}
> +
> +static ssize_t profiling_store(struct device *dev,
> + struct device_attribute *attr,
> + const char *buf, size_t len)
> +{
> + struct panthor_device *ptdev = dev_get_drvdata(dev);
> + u32 value;
> + int err;
> +
> + err = kstrtou32(buf, 0, &value);
> + if (err)
> + return err;
> +
> + if ((value & ~PANTHOR_DEVICE_PROFILING_ALL) != 0)
> + return -EINVAL;
> +
> + ptdev->profile_mask = value;
> +
> + return len;
> +}
> +
> +static DEVICE_ATTR_RW(profiling);
> +
> +static struct attribute *panthor_attrs[] = {
> + &dev_attr_profiling.attr,
> + NULL,
> +};
> +
> +ATTRIBUTE_GROUPS(panthor);
> +
> static const struct of_device_id dt_match[] = {
> { .compatible = "rockchip,rk3588-mali" },
> { .compatible = "arm,mali-valhall-csf" },
> @@ -1469,6 +1507,7 @@ static struct platform_driver panthor_driver = {
> .name = "panthor",
> .pm = pm_ptr(&panthor_pm_ops),
> .of_match_table = dt_match,
> + .dev_groups = panthor_groups,
> },
> };
>
prev parent reply other threads:[~2024-09-04 8:07 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-03 20:25 [PATCH v5 0/4] Support fdinfo runtime and memory stats on Panthor Adrián Larumbe
2024-09-03 20:25 ` [PATCH v5 1/4] drm/panthor: introduce job cycle and timestamp accounting Adrián Larumbe
2024-09-04 7:49 ` Boris Brezillon
2024-09-12 15:03 ` Adrián Larumbe
2024-09-12 15:10 ` Boris Brezillon
2024-09-04 16:10 ` kernel test robot
2024-09-04 17:02 ` kernel test robot
2024-09-04 18:55 ` Liviu Dudau
2024-09-03 20:25 ` [PATCH v5 2/4] drm/panthor: add DRM fdinfo support Adrián Larumbe
2024-09-04 8:01 ` Boris Brezillon
2024-09-04 17:45 ` kernel test robot
2024-09-03 20:25 ` [PATCH v5 3/4] drm/panthor: enable fdinfo for memory stats Adrián Larumbe
2024-09-04 8:03 ` Boris Brezillon
2024-09-03 20:25 ` [PATCH v5 4/4] drm/panthor: add sysfs knob for enabling job profiling Adrián Larumbe
2024-09-04 8:07 ` Boris Brezillon [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240904100743.225f1837@collabora.com \
--to=boris.brezillon@collabora.com \
--cc=adrian.larumbe@collabora.com \
--cc=airlied@gmail.com \
--cc=christian.koenig@amd.com \
--cc=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=kernel@collabora.com \
--cc=linaro-mm-sig@lists.linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=liviu.dudau@arm.com \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mripard@kernel.org \
--cc=steven.price@arm.com \
--cc=sumit.semwal@linaro.org \
--cc=tzimmermann@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.