Why
The %pV conversion specification is used by linuxkpi and DRM drivers. This conversion expects a struct va_format argument. This struct has two field members:
- fmt that points to another format string
- va that points to a va_list.
It allows a "recursive" format string.
How
The format string parser checks if there is a V following a %p and recurse into kvprintf() with the struct va_format arguments if that's the case. It adds the return value to retval so that the length is correctly computed.
Otherwise it proceeds with the regular handling of %p.
This is part of the update of DRM drivers to Linux 6.7.
Sponsored by: The FreeBSD Foundation