* [PATCH v2 0/2] Use proper printk format in appletbdrm
@ 2025-03-13 11:18 Aditya Garg
2025-03-13 11:19 ` [PATCH v2 1/2] lib/vsprintf: Add support for generic FourCCs by extending %p4cc Aditya Garg
` (3 more replies)
0 siblings, 4 replies; 6+ messages in thread
From: Aditya Garg @ 2025-03-13 11:18 UTC (permalink / raw)
To: Petr Mladek, keescook@chromium.org, Andy Shevchenko, Sven Peter,
Thomas Zimmermann, Aun-Ali Zaidi, Maxime Ripard,
airlied@redhat.com, Simona Vetter, Steven Rostedt,
Rasmus Villemoes, Sergey Senozhatsky, Jonathan Corbet,
Andrew Morton, apw@canonical.com, joe@perches.com,
dwaipayanray1@gmail.com, lukas.bulwahn@gmail.com
Cc: Linux Kernel Mailing List, dri-devel@lists.freedesktop.org,
linux-doc@vger.kernel.org, Hector Martin,
Asahi Linux Mailing List
The vsprint patch was originally being sent as a seperate patch [1], and
I was waiting it to be taken up. But since 6.15 merge window is near, a
potential delay between the drm and vsprintf patch might make the vsprint
patch as an unused addition in 6.15. So, I am sending it together. From
what I have observed in LKML, vsprintf patches are being preferred to be
taken upon by trees which are actually using them.
v2:
Remove printf tests, will merge later through Kees' tree
[1]: https://lore.kernel.org/lkml/1A03A5B4-93AC-4307-AE6A-4A4C4B7E9472@live.com/
Aditya Garg (1):
drm/appletbdrm: use %p4cl instead of %p4cc
Hector Martin (1):
lib/vsprintf: Add support for generic FourCCs by extending %p4cc
Documentation/core-api/printk-formats.rst | 32 +++++++++++++++++++++
drivers/gpu/drm/tiny/appletbdrm.c | 4 +--
lib/vsprintf.c | 35 +++++++++++++++++++----
scripts/checkpatch.pl | 2 +-
4 files changed, 64 insertions(+), 9 deletions(-)
--
2.47.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2 1/2] lib/vsprintf: Add support for generic FourCCs by extending %p4cc
2025-03-13 11:18 [PATCH v2 0/2] Use proper printk format in appletbdrm Aditya Garg
@ 2025-03-13 11:19 ` Aditya Garg
2025-03-14 3:49 ` Aditya Garg
2025-03-13 11:20 ` [PATCH v2 2/2] drm/appletbdrm: use %p4cl instead of %p4cc Aditya Garg
` (2 subsequent siblings)
3 siblings, 1 reply; 6+ messages in thread
From: Aditya Garg @ 2025-03-13 11:19 UTC (permalink / raw)
To: Petr Mladek, keescook@chromium.org, Andy Shevchenko, Sven Peter,
Thomas Zimmermann, Aun-Ali Zaidi, Maxime Ripard,
airlied@redhat.com, Simona Vetter, Steven Rostedt,
Rasmus Villemoes, Sergey Senozhatsky, Jonathan Corbet,
Andrew Morton, apw@canonical.com, joe@perches.com,
dwaipayanray1@gmail.com, lukas.bulwahn@gmail.com
Cc: Linux Kernel Mailing List, dri-devel@lists.freedesktop.org,
linux-doc@vger.kernel.org, Hector Martin,
Asahi Linux Mailing List
From: Hector Martin <marcan@marcan.st>
%p4cc is designed for DRM/V4L2 FourCCs with their specific quirks, but
it's useful to be able to print generic 4-character codes formatted as
an integer. Extend it to add format specifiers for printing generic
32-bit FourCCs with various endian semantics:
%p4ch Host byte order
%p4cn Network byte order
%p4cl Little-endian
%p4cb Big-endian
The endianness determines how bytes are interpreted as a u32, and the
FourCC is then always printed MSByte-first (this is the opposite of
V4L/DRM FourCCs). This covers most practical cases, e.g. %p4cn would
allow printing LSByte-first FourCCs stored in host endian order
(other than the hex form being in character order, not the integer
value).
Acked-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Petr Mladek <pmladek@suse.com>
Tested-by: Petr Mladek <pmladek@suse.com>
Signed-off-by: Hector Martin <marcan@marcan.st>
Signed-off-by: Aditya Garg <gargaditya08@live.com>
---
Documentation/core-api/printk-formats.rst | 32 +++++++++++++++++++++
lib/vsprintf.c | 35 +++++++++++++++++++----
scripts/checkpatch.pl | 2 +-
3 files changed, 62 insertions(+), 7 deletions(-)
diff --git a/Documentation/core-api/printk-formats.rst b/Documentation/core-api/printk-formats.rst
index ecccc0473..bd420e8aa 100644
--- a/Documentation/core-api/printk-formats.rst
+++ b/Documentation/core-api/printk-formats.rst
@@ -648,6 +648,38 @@ Examples::
%p4cc Y10 little-endian (0x20303159)
%p4cc NV12 big-endian (0xb231564e)
+Generic FourCC code
+-------------------
+
+::
+ %p4c[hnlb] gP00 (0x67503030)
+
+Print a generic FourCC code, as both ASCII characters and its numerical
+value as hexadecimal.
+
+The generic FourCC code is always printed in the big-endian format,
+the most significant byte first. This is the opposite of V4L/DRM FourCCs.
+
+The additional ``h``, ``n``, ``l``, and ``b`` specifiers define what
+endianness is used to load the stored bytes. The data might be interpreted
+using the host byte order, network byte order, little-endian, or big-endian.
+
+Passed by reference.
+
+Examples for a little-endian machine, given &(u32)0x67503030::
+
+ %p4ch gP00 (0x67503030)
+ %p4cn 00Pg (0x30305067)
+ %p4cl gP00 (0x67503030)
+ %p4cb 00Pg (0x30305067)
+
+Examples for a big-endian machine, given &(u32)0x67503030::
+
+ %p4ch gP00 (0x67503030)
+ %p4cn 00Pg (0x30305067)
+ %p4cl 00Pg (0x30305067)
+ %p4cb gP00 (0x67503030)
+
Rust
----
diff --git a/lib/vsprintf.c b/lib/vsprintf.c
index 56fe96319..56511a994 100644
--- a/lib/vsprintf.c
+++ b/lib/vsprintf.c
@@ -1781,27 +1781,50 @@ char *fourcc_string(char *buf, char *end, const u32 *fourcc,
char output[sizeof("0123 little-endian (0x01234567)")];
char *p = output;
unsigned int i;
+ bool pixel_fmt = false;
u32 orig, val;
- if (fmt[1] != 'c' || fmt[2] != 'c')
+ if (fmt[1] != 'c')
return error_string(buf, end, "(%p4?)", spec);
if (check_pointer(&buf, end, fourcc, spec))
return buf;
orig = get_unaligned(fourcc);
- val = orig & ~BIT(31);
+ switch (fmt[2]) {
+ case 'h':
+ break;
+ case 'n':
+ orig = swab32(orig);
+ break;
+ case 'l':
+ orig = (__force u32)cpu_to_le32(orig);
+ break;
+ case 'b':
+ orig = (__force u32)cpu_to_be32(orig);
+ break;
+ case 'c':
+ /* Pixel formats are printed LSB-first */
+ pixel_fmt = true;
+ break;
+ default:
+ return error_string(buf, end, "(%p4?)", spec);
+ }
+
+ val = pixel_fmt ? swab32(orig & ~BIT(31)) : orig;
for (i = 0; i < sizeof(u32); i++) {
- unsigned char c = val >> (i * 8);
+ unsigned char c = val >> ((3 - i) * 8);
/* Print non-control ASCII characters as-is, dot otherwise */
*p++ = isascii(c) && isprint(c) ? c : '.';
}
- *p++ = ' ';
- strcpy(p, orig & BIT(31) ? "big-endian" : "little-endian");
- p += strlen(p);
+ if (pixel_fmt) {
+ *p++ = ' ';
+ strcpy(p, orig & BIT(31) ? "big-endian" : "little-endian");
+ p += strlen(p);
+ }
*p++ = ' ';
*p++ = '(';
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 7b28ad331..5595a0898 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -6904,7 +6904,7 @@ sub process {
($extension eq "f" &&
defined $qualifier && $qualifier !~ /^w/) ||
($extension eq "4" &&
- defined $qualifier && $qualifier !~ /^cc/)) {
+ defined $qualifier && $qualifier !~ /^c[hnlbc]/)) {
$bad_specifier = $specifier;
last;
}
--
2.47.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v2 2/2] drm/appletbdrm: use %p4cl instead of %p4cc
2025-03-13 11:18 [PATCH v2 0/2] Use proper printk format in appletbdrm Aditya Garg
2025-03-13 11:19 ` [PATCH v2 1/2] lib/vsprintf: Add support for generic FourCCs by extending %p4cc Aditya Garg
@ 2025-03-13 11:20 ` Aditya Garg
2025-03-13 14:29 ` [PATCH v2 0/2] Use proper printk format in appletbdrm Alyssa Rosenzweig
2025-03-21 13:29 ` Aditya Garg
3 siblings, 0 replies; 6+ messages in thread
From: Aditya Garg @ 2025-03-13 11:20 UTC (permalink / raw)
To: Petr Mladek, keescook@chromium.org, Andy Shevchenko, Sven Peter,
Thomas Zimmermann, Aun-Ali Zaidi, Maxime Ripard,
airlied@redhat.com, Simona Vetter, Steven Rostedt,
Rasmus Villemoes, Sergey Senozhatsky, Jonathan Corbet,
Andrew Morton, apw@canonical.com, joe@perches.com,
dwaipayanray1@gmail.com, lukas.bulwahn@gmail.com
Cc: Linux Kernel Mailing List, dri-devel@lists.freedesktop.org,
linux-doc@vger.kernel.org, Hector Martin,
Asahi Linux Mailing List
From: Aditya Garg <gargaditya08@live.com>
Due to lack of a proper printk format, %p4cc was being used instead of
%p4cl for the purpose of printing FourCCs. But the disadvange was that
they were being printed in a reverse order. %p4cl should correct this
issue.
Signed-off-by: Aditya Garg <gargaditya08@live.com>
---
drivers/gpu/drm/tiny/appletbdrm.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/tiny/appletbdrm.c b/drivers/gpu/drm/tiny/appletbdrm.c
index 703b9a41a..751b05753 100644
--- a/drivers/gpu/drm/tiny/appletbdrm.c
+++ b/drivers/gpu/drm/tiny/appletbdrm.c
@@ -212,7 +212,7 @@ static int appletbdrm_read_response(struct appletbdrm_device *adev,
}
if (response->msg != expected_response) {
- drm_err(drm, "Unexpected response from device (expected %p4cc found %p4cc)\n",
+ drm_err(drm, "Unexpected response from device (expected %p4cl found %p4cl)\n",
&expected_response, &response->msg);
return -EIO;
}
@@ -286,7 +286,7 @@ static int appletbdrm_get_information(struct appletbdrm_device *adev)
}
if (pixel_format != APPLETBDRM_PIXEL_FORMAT) {
- drm_err(drm, "Encountered unknown pixel format (%p4cc)\n", &pixel_format);
+ drm_err(drm, "Encountered unknown pixel format (%p4cl)\n", &pixel_format);
ret = -EINVAL;
goto free_info;
}
--
2.47.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v2 0/2] Use proper printk format in appletbdrm
2025-03-13 11:18 [PATCH v2 0/2] Use proper printk format in appletbdrm Aditya Garg
2025-03-13 11:19 ` [PATCH v2 1/2] lib/vsprintf: Add support for generic FourCCs by extending %p4cc Aditya Garg
2025-03-13 11:20 ` [PATCH v2 2/2] drm/appletbdrm: use %p4cl instead of %p4cc Aditya Garg
@ 2025-03-13 14:29 ` Alyssa Rosenzweig
2025-03-21 13:29 ` Aditya Garg
3 siblings, 0 replies; 6+ messages in thread
From: Alyssa Rosenzweig @ 2025-03-13 14:29 UTC (permalink / raw)
To: Aditya Garg
Cc: Petr Mladek, keescook@chromium.org, Andy Shevchenko, Sven Peter,
Thomas Zimmermann, Aun-Ali Zaidi, Maxime Ripard,
airlied@redhat.com, Simona Vetter, Steven Rostedt,
Rasmus Villemoes, Sergey Senozhatsky, Jonathan Corbet,
Andrew Morton, apw@canonical.com, joe@perches.com,
dwaipayanray1@gmail.com, lukas.bulwahn@gmail.com,
Linux Kernel Mailing List, dri-devel@lists.freedesktop.org,
linux-doc@vger.kernel.org, Hector Martin,
Asahi Linux Mailing List
series looks ok to me. Who is pushing this to drm-misc-next? (I can if
nobody else does)
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 1/2] lib/vsprintf: Add support for generic FourCCs by extending %p4cc
2025-03-13 11:19 ` [PATCH v2 1/2] lib/vsprintf: Add support for generic FourCCs by extending %p4cc Aditya Garg
@ 2025-03-14 3:49 ` Aditya Garg
0 siblings, 0 replies; 6+ messages in thread
From: Aditya Garg @ 2025-03-14 3:49 UTC (permalink / raw)
To: Petr Mladek, keescook@chromium.org, Andy Shevchenko, Sven Peter,
Thomas Zimmermann, Aun-Ali Zaidi, Maxime Ripard,
airlied@redhat.com, Simona Vetter, Steven Rostedt,
Rasmus Villemoes, Sergey Senozhatsky, Jonathan Corbet,
Andrew Morton, apw@canonical.com, joe@perches.com,
dwaipayanray1@gmail.com, lukas.bulwahn@gmail.com,
Alyssa Rosenzweig
Cc: Linux Kernel Mailing List, dri-devel@lists.freedesktop.org,
linux-doc@vger.kernel.org, Hector Martin,
Asahi Linux Mailing List
> On 13 Mar 2025, at 4:49 PM, Aditya Garg <gargaditya08@live.com> wrote:
>
> From: Hector Martin <marcan@marcan.st>
>
> %p4cc is designed for DRM/V4L2 FourCCs with their specific quirks, but
> it's useful to be able to print generic 4-character codes formatted as
> an integer. Extend it to add format specifiers for printing generic
> 32-bit FourCCs with various endian semantics:
>
> %p4ch Host byte order
> %p4cn Network byte order
> %p4cl Little-endian
> %p4cb Big-endian
>
> The endianness determines how bytes are interpreted as a u32, and the
> FourCC is then always printed MSByte-first (this is the opposite of
> V4L/DRM FourCCs). This covers most practical cases, e.g. %p4cn would
> allow printing LSByte-first FourCCs stored in host endian order
> (other than the hex form being in character order, not the integer
> value).
>
> Acked-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> Reviewed-by: Petr Mladek <pmladek@suse.com>
> Tested-by: Petr Mladek <pmladek@suse.com>
> Signed-off-by: Hector Martin <marcan@marcan.st>
> Signed-off-by: Aditya Garg <gargaditya08@live.com>
> ---
> Documentation/core-api/printk-formats.rst | 32 +++++++++++++++++++++
> lib/vsprintf.c | 35 +++++++++++++++++++----
> scripts/checkpatch.pl | 2 +-
> 3 files changed, 62 insertions(+), 7 deletions(-)
FWIW, the test_printf.c part, as suggested by Petr, which was removed in v2, has been sent to Kees here:
https://lore.kernel.org/lkml/4378DDFE-3263-497A-8364-433DC1984FEE@live.com/T/#u
The series should be good to merge now.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 0/2] Use proper printk format in appletbdrm
2025-03-13 11:18 [PATCH v2 0/2] Use proper printk format in appletbdrm Aditya Garg
` (2 preceding siblings ...)
2025-03-13 14:29 ` [PATCH v2 0/2] Use proper printk format in appletbdrm Alyssa Rosenzweig
@ 2025-03-21 13:29 ` Aditya Garg
3 siblings, 0 replies; 6+ messages in thread
From: Aditya Garg @ 2025-03-21 13:29 UTC (permalink / raw)
To: Petr Mladek, keescook@chromium.org, Andy Shevchenko, Sven Peter,
Thomas Zimmermann, Aun-Ali Zaidi, Maxime Ripard,
airlied@redhat.com, Simona Vetter, Steven Rostedt,
Rasmus Villemoes, Sergey Senozhatsky, Jonathan Corbet,
Andrew Morton, apw@canonical.com, joe@perches.com,
dwaipayanray1@gmail.com, lukas.bulwahn@gmail.com
Cc: Linux Kernel Mailing List, dri-devel@lists.freedesktop.org,
linux-doc@vger.kernel.org, Hector Martin, asahi@lists.linux.dev
Hi
> On 13 Mar 2025, at 4:48 PM, Aditya Garg <gargaditya08@live.com> wrote:
>
> The vsprint patch was originally being sent as a seperate patch [1], and
> I was waiting it to be taken up. But since 6.15 merge window is near, a
> potential delay between the drm and vsprintf patch might make the vsprint
> patch as an unused addition in 6.15. So, I am sending it together. From
> what I have observed in LKML, vsprintf patches are being preferred to be
> taken upon by trees which are actually using them.
>
> v2:
> Remove printf tests, will merge later through Kees' tree
>
> [1]: https://lore.kernel.org/lkml/1A03A5B4-93AC-4307-AE6A-4A4C4B7E9472@live.com/
>
> Aditya Garg (1):
> drm/appletbdrm: use %p4cl instead of %p4cc
>
> Hector Martin (1):
> lib/vsprintf: Add support for generic FourCCs by extending %p4cc
>
> Documentation/core-api/printk-formats.rst | 32 +++++++++++++++++++++
> drivers/gpu/drm/tiny/appletbdrm.c | 4 +--
> lib/vsprintf.c | 35 +++++++++++++++++++----
> scripts/checkpatch.pl | 2 +-
> 4 files changed, 64 insertions(+), 9 deletions(-)
Could I have an update on this? Looks like freedesktop.org is back btw.
>
> --
> 2.47.1
>
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2025-03-21 13:29 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-03-13 11:18 [PATCH v2 0/2] Use proper printk format in appletbdrm Aditya Garg
2025-03-13 11:19 ` [PATCH v2 1/2] lib/vsprintf: Add support for generic FourCCs by extending %p4cc Aditya Garg
2025-03-14 3:49 ` Aditya Garg
2025-03-13 11:20 ` [PATCH v2 2/2] drm/appletbdrm: use %p4cl instead of %p4cc Aditya Garg
2025-03-13 14:29 ` [PATCH v2 0/2] Use proper printk format in appletbdrm Alyssa Rosenzweig
2025-03-21 13:29 ` Aditya Garg
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).