**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 was worked on as part of the [[ https://github.com/freebsd/drm-kmod/pull/332 | update of DRM drivers to Linux 6.7 ]] but is not required for that update.
Sponsored by: The FreeBSD Foundation