From: Boris Brezillon <boris.brezillon@collabora.com>
To: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Steven Price <steven.price@arm.com>,
Liviu Dudau <liviu.dudau@arm.com>,
dri-devel@lists.freedesktop.org,
Christopher Healy <healych@amazon.com>
Subject: Re: [PATCH v2] drm/panthor: Display FW version information
Date: Mon, 9 Sep 2024 16:47:34 +0200 [thread overview]
Message-ID: <20240909164734.2a1fce4d@collabora.com> (raw)
In-Reply-To: <3b5f4413-fe7d-413d-8c24-870f0456b2d6@suse.de>
Hi Thomas,
On Mon, 9 Sep 2024 16:14:32 +0200
Thomas Zimmermann <tzimmermann@suse.de> wrote:
> Hi
>
> Am 06.09.24 um 11:40 schrieb Steven Price:
> > The version number output when loading the firmware is actually the
> > interface version not the version of the firmware itself. Update the
> > message to make this clearer.
> >
> > However, the firmware binary has a git SHA embedded into it which can be
> > used to identify which firmware binary is being loaded. So output this
> > as a drm_info() so that it's obvious from a dmesg log which firmware
> > binary is being used.
> >
> > Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
> > Reviewed-by: Liviu Dudau <liviu.dudau@arm.com>
> > Signed-off-by: Steven Price <steven.price@arm.com>
> > ---
> > v2:
> > * Fix indentation
> > * Also update the FW interface message to include "using interface" to
> > make it clear it's not the FW version
> > * Add Reviewed-bys
> >
> > drivers/gpu/drm/panthor/panthor_fw.c | 57 +++++++++++++++++++++++++++-
> > 1 file changed, 56 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/gpu/drm/panthor/panthor_fw.c b/drivers/gpu/drm/panthor/panthor_fw.c
> > index 857f3f11258a..aea5dd9a4969 100644
> > --- a/drivers/gpu/drm/panthor/panthor_fw.c
> > +++ b/drivers/gpu/drm/panthor/panthor_fw.c
> > @@ -78,6 +78,12 @@ enum panthor_fw_binary_entry_type {
> >
> > /** @CSF_FW_BINARY_ENTRY_TYPE_TIMELINE_METADATA: Timeline metadata interface. */
> > CSF_FW_BINARY_ENTRY_TYPE_TIMELINE_METADATA = 4,
> > +
> > + /**
> > + * @CSF_FW_BINARY_ENTRY_TYPE_BUILD_INFO_METADATA: Metadata about how
> > + * the FW binary was built.
> > + */
> > + CSF_FW_BINARY_ENTRY_TYPE_BUILD_INFO_METADATA = 6
> > };
> >
> > #define CSF_FW_BINARY_ENTRY_TYPE(ehdr) ((ehdr) & 0xff)
> > @@ -132,6 +138,13 @@ struct panthor_fw_binary_section_entry_hdr {
> > } data;
> > };
> >
> > +struct panthor_fw_build_info_hdr {
> > + /** @meta_start: Offset of the build info data in the FW binary */
> > + u32 meta_start;
> > + /** @meta_size: Size of the build info data in the FW binary */
> > + u32 meta_size;
> > +};
> > +
> > /**
> > * struct panthor_fw_binary_iter - Firmware binary iterator
> > *
> > @@ -628,6 +641,46 @@ static int panthor_fw_load_section_entry(struct panthor_device *ptdev,
> > return 0;
> > }
> >
> > +static int panthor_fw_read_build_info(struct panthor_device *ptdev,
> > + const struct firmware *fw,
> > + struct panthor_fw_binary_iter *iter,
> > + u32 ehdr)
> > +{
> > + struct panthor_fw_build_info_hdr hdr;
> > + char header[9];
> > + const char git_sha_header[sizeof(header)] = "git_sha: ";
> > + int ret;
> > +
> > + ret = panthor_fw_binary_iter_read(ptdev, iter, &hdr, sizeof(hdr));
> > + if (ret)
> > + return ret;
> > +
> > + if (hdr.meta_start > fw->size ||
> > + hdr.meta_start + hdr.meta_size > fw->size) {
> > + drm_err(&ptdev->base, "Firmware build info corrupt\n");
> > + /* We don't need the build info, so continue */
> > + return 0;
> > + }
> > +
> > + if (memcmp(git_sha_header, fw->data + hdr.meta_start,
> > + sizeof(git_sha_header))) {
> > + /* Not the expected header, this isn't metadata we understand */
> > + return 0;
> > + }
> > +
> > + /* Check that the git SHA is NULL terminated as expected */
> > + if (fw->data[hdr.meta_start + hdr.meta_size - 1] != '\0') {
> > + drm_warn(&ptdev->base, "Firmware's git sha is not NULL terminated\n");
> > + /* Don't treat as fatal */
> > + return 0;
> > + }
> > +
> > + drm_info(&ptdev->base, "Firmware git sha: %s\n",
> > + fw->data + hdr.meta_start + sizeof(git_sha_header));
>
> Please consider making this debugging-only information. Printing takes
> time and the information is not essential unless for debugging.
Sounds like someone working on boot time optimization :-). More
seriously, I don't mind downgrading those to debug messages, as long as
we have the same information exposed through sysfs or DEV_QUERY, but
I'd prefer doing that in a follow-up patch that takes care of all
drm_info()s we have in panthor rather than addressing the two messages
we're modifying in this patch.
Regards,
Boris
next prev parent reply other threads:[~2024-09-09 14:47 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-06 9:40 [PATCH v2] drm/panthor: Display FW version information Steven Price
2024-09-06 17:16 ` Healy, Christopher
2024-09-09 14:01 ` Carsten Haitzler
2024-09-09 14:14 ` Thomas Zimmermann
2024-09-09 14:47 ` Boris Brezillon [this message]
2024-09-12 7:34 ` Boris Brezillon
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=20240909164734.2a1fce4d@collabora.com \
--to=boris.brezillon@collabora.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=healych@amazon.com \
--cc=liviu.dudau@arm.com \
--cc=steven.price@arm.com \
--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.