The main difference with the dynamically allocated version is that the structure is initialized with DECLARE_KFIFO() which takes the number of items as an additional argument compared to DECLARE_KFIFO_PTR().
The declared structure is then initialized with INIT_KFIFO() which sets all fields to 0, except total which is computed from the size of the array passed to DECLARE_KFIFO().
The amdgpu DRM driver started to used this in Linux 6.10.
This is part of the update of DRM drivers to Linux 6.10.
Sponsored by: The FreeBSD Foundation