![dmesg 输出中的“未知像素格式 0x00000000”是什么意思](https://linux22.com/image/1012585/dmesg%20%E8%BE%93%E5%87%BA%E4%B8%AD%E7%9A%84%E2%80%9C%E6%9C%AA%E7%9F%A5%E5%83%8F%E7%B4%A0%E6%A0%BC%E5%BC%8F%200x00000000%E2%80%9D%E6%98%AF%E4%BB%80%E4%B9%88%E6%84%8F%E6%80%9D.png)
重启后我运行了sudo dmesg --follow
一下,在输出的末尾发现了这些消息。它似乎出现了好几次。那几行左右是
[ 139.356270] ------------[ cut here ]------------
[ 139.356272] Unknown pixelformat 0x00000000
[ 139.356309] WARNING: CPU: 1 PID: 3056 at /build/linux-7kdHqT/linux-4.15.0/drivers/media/v4l2-core/v4l2-ioctl.c:1291 v4l_fill_fmtdesc+0xf41/0x1250 [videodev]
更多的dmesg
输出可见https://pastebin.com/4YxinP3Z
系统是带有英特尔视频适配器的 Dell XPS-13 9370。
hbarta@karakum:~$ cat /etc/issue
Ubuntu 18.04.2 LTS \n \l
hbarta@karakum:~$ uname -a
Linux karakum 4.15.0-46-generic #49-Ubuntu SMP Wed Feb 6 09:33:07 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
hbarta@karakum:~$ lspci|grep VGA
00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 620 (rev 07)
hbarta@karakum:~$
报告了什么问题?我应该关注吗?我该如何修复?我应该提交错误报告吗?
我这么说并不是想找什么问题,所以表面上看,这似乎无害。
谢谢!
答案1
当对某个视频设备(例如网络摄像头)执行 VIDIOC_ENUM_FMT ioctl() 命令时,Video4Linux 驱动程序会发出此警告消息。应用程序使用 ioctl 命令枚举图像格式并传递 v4l2_fmtdesc 结构,其中 pixelformat 字段设置为零,这是不正确的。驱动程序检测到此情况并发出警告消息。
如果你感兴趣的话,这个警告来自函数 v4l_fill_fmtdeschttps://github.com/torvalds/linux/blob/master/drivers/media/v4l2-core/v4l2-ioctl.c
所以,这不是内核问题,而是某些应用程序误用了 ioctl 命令 VIDIOC_ENUM_FMT