€•ñyŒsphinx.addnodes”Œdocument”“”)”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)”}”(hhh]”(hŒ pending_xref”“”)”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…””}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”ŒD/translations/zh_CN/process/debugging/media_specific_debugging_guide”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”ŒD/translations/zh_TW/process/debugging/media_specific_debugging_guide”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”ŒD/translations/it_IT/process/debugging/media_specific_debugging_guide”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”ŒD/translations/ja_JP/process/debugging/media_specific_debugging_guide”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”ŒD/translations/ko_KR/process/debugging/media_specific_debugging_guide”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒSpanish”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”ŒD/translations/sp_SP/process/debugging/media_specific_debugging_guide”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)”}”(hŒ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…””}”hh£sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1h¡hhhžhhŸŒ^/var/lib/git/docbuild/linux/Documentation/process/debugging/media_specific_debugging_guide.rst”h KubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒ,Debugging and tracing in the media subsystem”h]”hŒ,Debugging and tracing in the media subsystem”…””}”(hh»hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefid”Œid1”uh1h¹hh¶hžhhŸh³h KubhŒ paragraph”“”)”}”(hŒ’This document serves as a starting point and lookup for debugging device drivers in the media subsystem and to debug these drivers from userspace.”h]”hŒ’This document serves as a starting point and lookup for debugging device drivers in the media subsystem and to debug these drivers from userspace.”…””}”(hhÍhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËhŸh³h Khh¶hžhubhŒtopic”“”)”}”(hŒ Contents ”h]”(hº)”}”(hŒContents”h]”hŒContents”…””}”(hháhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hhÝhŸh³h K ubhŒ bullet_list”“”)”}”(hhh]”hŒ list_item”“”)”}”(hhh]”(hÌ)”}”(hhh]”hŒ reference”“”)”}”(hhh]”hŒ,Debugging and tracing in the media subsystem”…””}”(hhþhžhhŸNh Nubah}”(h]”hÊah ]”h"]”h$]”h&]”Œrefid”Œ,debugging-and-tracing-in-the-media-subsystem”uh1hühhùubah}”(h]”h ]”h"]”h$]”h&]”uh1hËhhöubhð)”}”(hhh]”(hõ)”}”(hhh]”hÌ)”}”(hhh]”hý)”}”(hhh]”hŒGeneral debugging advice”…””}”(hjhžhhŸNh Nubah}”(h]”Œid2”ah ]”h"]”h$]”h&]”Œrefid”Œgeneral-debugging-advice”uh1hühjubah}”(h]”h ]”h"]”h$]”h&]”uh1hËhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hôhjubhõ)”}”(hhh]”hÌ)”}”(hhh]”hý)”}”(hhh]”hŒdev_debug module parameter”…””}”(hj>hžhhŸNh Nubah}”(h]”Œid3”ah ]”h"]”h$]”h&]”Œrefid”Œdev-debug-module-parameter”uh1hühj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1hôhjubhõ)”}”(hhh]”hÌ)”}”(hhh]”hý)”}”(hhh]”hŒdev_dbg() / v4l2_dbg()”…””}”(hj`hžhhŸNh Nubah}”(h]”Œid4”ah ]”h"]”h$]”h&]”Œrefid”Œdev-dbg-v4l2-dbg”uh1hühj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËhjZubah}”(h]”h ]”h"]”h$]”h&]”uh1hôhjubhõ)”}”(hhh]”hÌ)”}”(hhh]”hý)”}”(hhh]”hŒ Dynamic debug”…””}”(hj‚hžhhŸNh Nubah}”(h]”Œid5”ah ]”h"]”h$]”h&]”Œrefid”Œ dynamic-debug”uh1hühjubah}”(h]”h ]”h"]”h$]”h&]”uh1hËhj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1hôhjubhõ)”}”(hhh]”hÌ)”}”(hhh]”hý)”}”(hhh]”hŒFtrace”…””}”(hj¤hžhhŸNh Nubah}”(h]”Œid6”ah ]”h"]”h$]”h&]”Œrefid”Œftrace”uh1hühj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËhjžubah}”(h]”h ]”h"]”h$]”h&]”uh1hôhjubhõ)”}”(hhh]”hÌ)”}”(hhh]”hý)”}”(hhh]”hŒDebugFS”…””}”(hjÆhžhhŸNh Nubah}”(h]”Œid7”ah ]”h"]”h$]”h&]”Œrefid”Œdebugfs”uh1hühjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1hËhjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1hôhjubhõ)”}”(hhh]”hÌ)”}”(hhh]”hý)”}”(hhh]”hŒPerf & alternatives”…””}”(hjèhžhhŸNh Nubah}”(h]”Œid8”ah ]”h"]”h$]”h&]”Œrefid”Œperf-alternatives”uh1hühjåubah}”(h]”h ]”h"]”h$]”h&]”uh1hËhjâubah}”(h]”h ]”h"]”h$]”h&]”uh1hôhjubhõ)”}”(hhh]”hÌ)”}”(hhh]”hý)”}”(hhh]”hŒError checking & panic analysis”…””}”(hj hžhhŸNh Nubah}”(h]”Œid9”ah ]”h"]”h$]”h&]”Œrefid”Œerror-checking-panic-analysis”uh1hühjubah}”(h]”h ]”h"]”h$]”h&]”uh1hËhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hôhjubhõ)”}”(hhh]”hÌ)”}”(hhh]”hý)”}”(hhh]”hŒ(Driver verification with v4l2-compliance”…””}”(hj,hžhhŸNh Nubah}”(h]”Œid10”ah ]”h"]”h$]”h&]”Œrefid”Œ(driver-verification-with-v4l2-compliance”uh1hühj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËhj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1hôhjubhõ)”}”(hhh]”hÌ)”}”(hhh]”hý)”}”(hhh]”hŒ'Debugging problems with receiving video”…””}”(hjNhžhhŸNh Nubah}”(h]”Œid11”ah ]”h"]”h$]”h&]”Œrefid”Œ'debugging-problems-with-receiving-video”uh1hühjKubah}”(h]”h ]”h"]”h$]”h&]”uh1hËhjHubah}”(h]”h ]”h"]”h$]”h&]”uh1hôhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1hïhhöubeh}”(h]”h ]”h"]”h$]”h&]”uh1hôhhñubah}”(h]”h ]”h"]”h$]”h&]”uh1hïhhÝhžhhŸNh Nubeh}”(h]”Œcontents”ah ]”Œcontents”ah"]”Œcontents”ah$]”h&]”uh1hÛhŸh³h K hh¶hžhubhµ)”}”(hhh]”(hº)”}”(hŒGeneral debugging advice”h]”hŒGeneral debugging advice”…””}”(hjˆhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”hÉj%uh1h¹hj…hžhhŸh³h KubhÌ)”}”(hŒUFor general advice see the :doc:`general advice document `.”h]”(hŒFor general advice see the ”…””}”(hj–hžhhŸNh Nubh)”}”(hŒ9:doc:`general advice document `”h]”hŒinline”“”)”}”(hj h]”hŒgeneral advice document”…””}”(hj¤hžhhŸNh Nubah}”(h]”h ]”(Œxref”Œstd”Œstd-doc”eh"]”h$]”h&]”uh1j¢hjžubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œ0process/debugging/media_specific_debugging_guide”Œ refdomain”j¯Œreftype”Œdoc”Œ refexplicit”ˆŒrefwarn”ˆŒ reftarget”Œ/process/debugging/index”uh1hhŸh³h Khj–ubhŒ.”…””}”(hj–hžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËhŸh³h Khj…hžhubhÌ)”}”(hŒ /sys/class/video4linux/video3/dev_debug # dmesg -wH [...] videodev: v4l2_open: video3: open (0) [ +0.000036] video3: VIDIOC_QUERYCAP: driver=rkvdec, card=rkvdec, bus=platform:rkvdec, version=0x00060900, capabilities=0x84204000, device_caps=0x04204000”h]”hX9# cat /sys/class/video4linux/video3/name rkvdec # echo 0xff > /sys/class/video4linux/video3/dev_debug # dmesg -wH [...] videodev: v4l2_open: video3: open (0) [ +0.000036] video3: VIDIOC_QUERYCAP: driver=rkvdec, card=rkvdec, bus=platform:rkvdec, version=0x00060900, capabilities=0x84204000, device_caps=0x04204000”…””}”hjsbah}”(h]”h ]”h"]”h$]”h&]”h±h²uh1jhŸh³h KhjâhžhubhÌ)”}”(hŒVFor the full documentation see :ref:`driver-api/media/v4l2-dev:video device debugging`”h]”(hŒFor the full documentation see ”…””}”(hj%hžhhŸNh Nubh)”}”(hŒ7:ref:`driver-api/media/v4l2-dev:video device debugging`”h]”j£)”}”(hj/h]”hŒ0driver-api/media/v4l2-dev:video device debugging”…””}”(hj1hžhhŸNh Nubah}”(h]”h ]”(j®Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j¢hj-ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j»Œ refdomain”j;Œreftype”Œref”Œ refexplicit”‰Œrefwarn”ˆjÁŒ0driver-api/media/v4l2-dev:video device debugging”uh1hhŸh³h K$hj%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËhŸh³h K$hjâhžhubeh}”(h]”jMah ]”h"]”Œdev_debug module parameter”ah$]”h&]”uh1h´hh¶hžhhŸh³h Kubhµ)”}”(hhh]”(hº)”}”(hŒdev_dbg() / v4l2_dbg()”h]”hŒdev_dbg() / v4l2_dbg()”…””}”(hj]hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”hÉjiuh1h¹hjZhžhhŸh³h K(ubhÌ)”}”(hŒ·Two debug print statements, which are specific for devices and for the v4l2 subsystem, avoid adding these to your final submission unless they have long-term value for investigations.”h]”hŒ·Two debug print statements, which are specific for devices and for the v4l2 subsystem, avoid adding these to your final submission unless they have long-term value for investigations.”…””}”(hjkhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËhŸh³h K*hjZhžhubhÌ)”}”(hŒ{For a general overview please see the :ref:`process/debugging/driver_development_debugging_guide:printk() & friends` guide.”h]”(hŒ&For a general overview please see the ”…””}”(hjyhžhhŸNh Nubh)”}”(hŒN:ref:`process/debugging/driver_development_debugging_guide:printk() & friends`”h]”j£)”}”(hjƒh]”hŒGprocess/debugging/driver_development_debugging_guide:printk() & friends”…””}”(hj…hžhhŸNh Nubah}”(h]”h ]”(j®Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j¢hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j»Œ refdomain”jŒreftype”Œref”Œ refexplicit”‰Œrefwarn”ˆjÁŒGprocess/debugging/driver_development_debugging_guide:printk() & friends”uh1hhŸh³h K.hjyubhŒ guide.”…””}”(hjyhžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËhŸh³h K.hjZhžhubhð)”}”(hhh]”hõ)”}”(hXcDifference between both? - v4l2_dbg() utilizes v4l2_printk() under the hood, which further uses printk() directly, thus it cannot be targeted by dynamic debug - dev_dbg() can be targeted by dynamic debug - v4l2_dbg() has a more specific prefix format for the media subsystem, while dev_dbg only highlights the driver name and the location of the log ”h]”(hÌ)”}”(hŒDifference between both?”h]”hŒDifference between both?”…””}”(hj²hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËhŸh³h K2hj®ubhð)”}”(hhh]”(hõ)”}”(hŒƒv4l2_dbg() utilizes v4l2_printk() under the hood, which further uses printk() directly, thus it cannot be targeted by dynamic debug”h]”hÌ)”}”(hŒƒv4l2_dbg() utilizes v4l2_printk() under the hood, which further uses printk() directly, thus it cannot be targeted by dynamic debug”h]”hŒƒv4l2_dbg() utilizes v4l2_printk() under the hood, which further uses printk() directly, thus it cannot be targeted by dynamic debug”…””}”(hjÇhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËhŸh³h K4hjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1hôhjÀubhõ)”}”(hŒ*dev_dbg() can be targeted by dynamic debug”h]”hÌ)”}”(hjÝh]”hŒ*dev_dbg() can be targeted by dynamic debug”…””}”(hjßhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËhŸh³h K6hjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1hôhjÀubhõ)”}”(hŒv4l2_dbg() has a more specific prefix format for the media subsystem, while dev_dbg only highlights the driver name and the location of the log ”h]”hÌ)”}”(hŒv4l2_dbg() has a more specific prefix format for the media subsystem, while dev_dbg only highlights the driver name and the location of the log”h]”hŒv4l2_dbg() has a more specific prefix format for the media subsystem, while dev_dbg only highlights the driver name and the location of the log”…””}”(hjöhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËhŸh³h K7hjòubah}”(h]”h ]”h"]”h$]”h&]”uh1hôhjÀubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1hïhŸh³h K4hj®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hôhj«hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”jjuh1hïhŸh³h K2hjZhžhubeh}”(h]”joah ]”h"]”Œdev_dbg() / v4l2_dbg()”ah$]”h&]”uh1h´hh¶hžhhŸh³h K(ubhµ)”}”(hhh]”(hº)”}”(hŒ Dynamic debug”h]”hŒ Dynamic debug”…””}”(hj(hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”hÉj‹uh1h¹hj%hžhhŸh³h K;ubhÌ)”}”(hŒ5A method to trim down the debug output to your needs.”h]”hŒ5A method to trim down the debug output to your needs.”…””}”(hj6hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËhŸh³h K=hj%hžhubhÌ)”}”(hŒbFor general advice see the :ref:`process/debugging/userspace_debugging_guide:dynamic debug` guide.”h]”(hŒFor general advice see the ”…””}”(hjDhžhhŸNh Nubh)”}”(hŒ@:ref:`process/debugging/userspace_debugging_guide:dynamic debug`”h]”j£)”}”(hjNh]”hŒ9process/debugging/userspace_debugging_guide:dynamic debug”…””}”(hjPhžhhŸNh Nubah}”(h]”h ]”(j®Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j¢hjLubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j»Œ refdomain”jZŒreftype”Œref”Œ refexplicit”‰Œrefwarn”ˆjÁŒ9process/debugging/userspace_debugging_guide:dynamic debug”uh1hhŸh³h K?hjDubhŒ guide.”…””}”(hjDhžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËhŸh³h K?hj%hžhubhÌ)”}”(hŒNHere is one example, that enables all available pr_debug()'s within the file::”h]”hŒOHere is one example, that enables all available pr_debug()’s within the file:”…””}”(hjvhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËhŸh³h KBhj%hžhubj)”}”(hXY$ alias ddcmd='echo $* > /proc/dynamic_debug/control' $ ddcmd '-p; file v4l2-h264.c +p' $ grep =p /proc/dynamic_debug/control drivers/media/v4l2-core/v4l2-h264.c:372 [v4l2_h264]print_ref_list_b =p "ref_pic_list_b%u (cur_poc %u%c) %s" drivers/media/v4l2-core/v4l2-h264.c:333 [v4l2_h264]print_ref_list_p =p "ref_pic_list_p (cur_poc %u%c) %s\n"”h]”hXY$ alias ddcmd='echo $* > /proc/dynamic_debug/control' $ ddcmd '-p; file v4l2-h264.c +p' $ grep =p /proc/dynamic_debug/control drivers/media/v4l2-core/v4l2-h264.c:372 [v4l2_h264]print_ref_list_b =p "ref_pic_list_b%u (cur_poc %u%c) %s" drivers/media/v4l2-core/v4l2-h264.c:333 [v4l2_h264]print_ref_list_p =p "ref_pic_list_p (cur_poc %u%c) %s\n"”…””}”hj„sbah}”(h]”h ]”h"]”h$]”h&]”h±h²uh1jhŸh³h KDhj%hžhubeh}”(h]”j‘ah ]”h"]”Œ dynamic debug”ah$]”h&]”uh1h´hh¶hžhhŸh³h K;ubhµ)”}”(hhh]”(hº)”}”(hŒFtrace”h]”hŒFtrace”…””}”(hjœhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”hÉj­uh1h¹hj™hžhhŸh³h KMubhÌ)”}”(hŒÄAn internal kernel tracer that can trace static predefined events, function calls, etc. Very useful for debugging problems without changing the kernel and understanding the behavior of subsystems.”h]”hŒÄAn internal kernel tracer that can trace static predefined events, function calls, etc. Very useful for debugging problems without changing the kernel and understanding the behavior of subsystems.”…””}”(hjªhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËhŸh³h KOhj™hžhubhÌ)”}”(hŒ[For general advice see the :ref:`process/debugging/userspace_debugging_guide:ftrace` guide.”h]”(hŒFor general advice see the ”…””}”(hj¸hžhhŸNh Nubh)”}”(hŒ9:ref:`process/debugging/userspace_debugging_guide:ftrace`”h]”j£)”}”(hjÂh]”hŒ2process/debugging/userspace_debugging_guide:ftrace”…””}”(hjÄhžhhŸNh Nubah}”(h]”h ]”(j®Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j¢hjÀubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j»Œ refdomain”jÎŒreftype”Œref”Œ refexplicit”‰Œrefwarn”ˆjÁŒ2process/debugging/userspace_debugging_guide:ftrace”uh1hhŸh³h KShj¸ubhŒ guide.”…””}”(hj¸hžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËhŸh³h KShj™hžhubeh}”(h]”j³ah ]”h"]”Œftrace”ah$]”h&]”uh1h´hh¶hžhhŸh³h KMubhµ)”}”(hhh]”(hº)”}”(hŒDebugFS”h]”hŒDebugFS”…””}”(hjôhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”hÉjÏuh1h¹hjñhžhhŸh³h KWubhÌ)”}”(hŒfThis tool allows you to dump or modify internal values of your driver to files in a custom filesystem.”h]”hŒfThis tool allows you to dump or modify internal values of your driver to files in a custom filesystem.”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËhŸh³h KYhjñhžhubhÌ)”}”(hŒeFor general advice see the :ref:`process/debugging/driver_development_debugging_guide:debugfs` guide.”h]”(hŒFor general advice see the ”…””}”(hjhžhhŸNh Nubh)”}”(hŒC:ref:`process/debugging/driver_development_debugging_guide:debugfs`”h]”j£)”}”(hjh]”hŒ`__)::”h]”(hŒsGather statistics data for a decoding job: (This example is on a RK3399 SoC with the rkvdec codec driver using the ”…””}”(hj¨hžhhŸNh Nubhý)”}”(hŒ;`fluster test suite `__”h]”hŒfluster test suite”…””}”(hj°hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œfluster test suite”Œrefuri”Œ"https://github.com/fluendo/fluster”uh1hühj¨ubhŒ):”…””}”(hj¨hžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËhŸh³h KihjIhžhubj)”}”(hX perf stat -d python3 fluster.py run -d GStreamer-H.264-V4L2SL-Gst1.0 -ts JVT-AVC_V1 -tv AUD_MW_E -j1 ... Performance counter stats for 'python3 fluster.py run -d GStreamer-H.264-V4L2SL-Gst1.0 -ts JVT-AVC_V1 -tv AUD_MW_E -j1 -v': 7794.23 msec task-clock:u # 0.697 CPUs utilized 0 context-switches:u # 0.000 /sec 0 cpu-migrations:u # 0.000 /sec 11901 page-faults:u # 1.527 K/sec 882671556 cycles:u # 0.113 GHz (95.79%) 711708695 instructions:u # 0.81 insn per cycle (95.79%) 10581935 branches:u # 1.358 M/sec (15.13%) 6871144 branch-misses:u # 64.93% of all branches (95.79%) 281716547 L1-dcache-loads:u # 36.144 M/sec (95.79%) 9019581 L1-dcache-load-misses:u # 3.20% of all L1-dcache accesses (95.79%) LLC-loads:u LLC-load-misses:u 11.180830431 seconds time elapsed 1.502318000 seconds user 6.377221000 seconds sys”h]”hX perf stat -d python3 fluster.py run -d GStreamer-H.264-V4L2SL-Gst1.0 -ts JVT-AVC_V1 -tv AUD_MW_E -j1 ... Performance counter stats for 'python3 fluster.py run -d GStreamer-H.264-V4L2SL-Gst1.0 -ts JVT-AVC_V1 -tv AUD_MW_E -j1 -v': 7794.23 msec task-clock:u # 0.697 CPUs utilized 0 context-switches:u # 0.000 /sec 0 cpu-migrations:u # 0.000 /sec 11901 page-faults:u # 1.527 K/sec 882671556 cycles:u # 0.113 GHz (95.79%) 711708695 instructions:u # 0.81 insn per cycle (95.79%) 10581935 branches:u # 1.358 M/sec (15.13%) 6871144 branch-misses:u # 64.93% of all branches (95.79%) 281716547 L1-dcache-loads:u # 36.144 M/sec (95.79%) 9019581 L1-dcache-load-misses:u # 3.20% of all L1-dcache accesses (95.79%) LLC-loads:u LLC-load-misses:u 11.180830431 seconds time elapsed 1.502318000 seconds user 6.377221000 seconds sys”…””}”hjÌsbah}”(h]”h ]”h"]”h$]”h&]”h±h²uh1jhŸh³h KmhjIhžhubhÌ)”}”(hŒMThe availability of events and metrics depends on the system you are running.”h]”hŒMThe availability of events and metrics depends on the system you are running.”…””}”(hjÚhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËhŸh³h K…hjIhžhubeh}”(h]”j÷ah ]”h"]”Œperf & alternatives”ah$]”h&]”uh1h´hh¶hžhhŸh³h K`ubhµ)”}”(hhh]”(hº)”}”(hŒError checking & panic analysis”h]”hŒError checking & panic analysis”…””}”(hjòhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”hÉjuh1h¹hjïhžhhŸh³h KˆubhÌ)”}”(hŒzVarious Kernel configuration options to enhance error detection of the Linux Kernel with the cost of lowering performance.”h]”hŒzVarious Kernel configuration options to enhance error detection of the Linux Kernel with the cost of lowering performance.”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËhŸh³h KŠhjïhžhubhÌ)”}”(hŒŒFor general advice see the :ref:`process/debugging/driver_development_debugging_guide:kasan, ubsan, lockdep and other error checkers` guide.”h]”(hŒFor general advice see the ”…””}”(hjhžhhŸNh Nubh)”}”(hŒj:ref:`process/debugging/driver_development_debugging_guide:kasan, ubsan, lockdep and other error checkers`”h]”j£)”}”(hjh]”hŒcprocess/debugging/driver_development_debugging_guide:kasan, ubsan, lockdep and other error checkers”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”(j®Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j¢hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j»Œ refdomain”j$Œreftype”Œref”Œ refexplicit”‰Œrefwarn”ˆjÁŒcprocess/debugging/driver_development_debugging_guide:kasan, ubsan, lockdep and other error checkers”uh1hhŸh³h KhjubhŒ guide.”…””}”(hjhžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËhŸh³h Khjïhžhubeh}”(h]”jah ]”h"]”Œerror checking & panic analysis”ah$]”h&]”uh1h´hh¶hžhhŸh³h Kˆubhµ)”}”(hhh]”(hº)”}”(hŒ(Driver verification with v4l2-compliance”h]”hŒ(Driver verification with v4l2-compliance”…””}”(hjJhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”hÉj5uh1h¹hjGhžhhŸh³h K’ubhÌ)”}”(hŒÜTo verify, that a driver adheres to the v4l2 API, the tool v4l2-compliance is used, which is part of the `v4l_utils `__, a suite of userspace tools to work with the media subsystem.”h]”(hŒiTo verify, that a driver adheres to the v4l2 API, the tool v4l2-compliance is used, which is part of the ”…””}”(hjXhžhhŸNh Nubhý)”}”(hŒ5`v4l_utils `__”h]”hŒ v4l_utils”…””}”(hj`hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ v4l_utils”jÀŒ%https://git.linuxtv.org/v4l-utils.git”uh1hühjXubhŒ>, a suite of userspace tools to work with the media subsystem.”…””}”(hjXhžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËhŸh³h K”hjGhžhubhÌ)”}”(hŒ7To see the detailed media topology (and check it) use::”h]”hŒ6To see the detailed media topology (and check it) use:”…””}”(hj{hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËhŸh³h K™hjGhžhubj)”}”(hŒ(v4l2-compliance -M /dev/mediaX --verbose”h]”hŒ(v4l2-compliance -M /dev/mediaX --verbose”…””}”hj‰sbah}”(h]”h ]”h"]”h$]”h&]”h±h²uh1jhŸh³h K›hjGhžhubhÌ)”}”(hŒ`You can also run a full compliance check for all devices referenced in the media topology with::”h]”hŒ_You can also run a full compliance check for all devices referenced in the media topology with:”…””}”(hj—hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËhŸh³h KhjGhžhubj)”}”(hŒv4l2-compliance -m /dev/mediaX”h]”hŒv4l2-compliance -m /dev/mediaX”…””}”hj¥sbah}”(h]”h ]”h"]”h$]”h&]”h±h²uh1jhŸh³h K hjGhžhubeh}”(h]”j;ah ]”h"]”Œ(driver verification with v4l2-compliance”ah$]”h&]”uh1h´hh¶hžhhŸh³h K’ubhµ)”}”(hhh]”(hº)”}”(hŒ'Debugging problems with receiving video”h]”hŒ'Debugging problems with receiving video”…””}”(hj½hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”hÉjWuh1h¹hjºhžhhŸh³h K£ubhÌ)”}”(hXjImplementing vidioc_log_status in the driver: this can log the current status to the kernel log. It's called by v4l2-ctl --log-status. Very useful for debugging problems with receiving video (TV/S-Video/HDMI/etc) since the video signal is external (so unpredictable). Less useful with camera sensor inputs since you have control over what the camera sensor does.”h]”hXlImplementing vidioc_log_status in the driver: this can log the current status to the kernel log. It’s called by v4l2-ctl --log-status. Very useful for debugging problems with receiving video (TV/S-Video/HDMI/etc) since the video signal is external (so unpredictable). Less useful with camera sensor inputs since you have control over what the camera sensor does.”…””}”(hjËhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËhŸh³h K¥hjºhžhubhÌ)”}”(hŒ)Usually you can just assign the default::”h]”hŒ(Usually you can just assign the default:”…””}”(hjÙhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËhŸh³h K«hjºhžhubj)”}”(hŒ+.vidioc_log_status = v4l2_ctrl_log_status,”h]”hŒ+.vidioc_log_status = v4l2_ctrl_log_status,”…””}”hjçsbah}”(h]”h ]”h"]”h$]”h&]”h±h²uh1jhŸh³h K­hjºhžhubhÌ)”}”(hŒIBut you can also create your own callback, to create a custom status log.”h]”hŒIBut you can also create your own callback, to create a custom status log.”…””}”(hjõhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËhŸh³h K¯hjºhžhubhÌ)”}”(hŒ¸You can find an example in the cobalt driver (`drivers/media/pci/cobalt/cobalt-v4l2.c `__).”h]”(hŒ.You can find an example in the cobalt driver (”…””}”(hjhžhhŸNh Nubhý)”}”(hŒˆ`drivers/media/pci/cobalt/cobalt-v4l2.c `__”h]”hŒ&drivers/media/pci/cobalt/cobalt-v4l2.c”…””}”(hj hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ&drivers/media/pci/cobalt/cobalt-v4l2.c”jÀŒ[https://elixir.bootlin.com/linux/v6.11.6/source/drivers/media/pci/cobalt/cobalt-v4l2.c#L567”uh1hühjubhŒ).”…””}”(hjhžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËhŸh³h K±hjºhžhubhÌ)”}”(hŒ **Copyright** ©2024 : Collabora”h]”(hŒstrong”“”)”}”(hŒ **Copyright**”h]”hŒ Copyright”…””}”(hj,hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j*hj&ubhŒ ©2024 : Collabora”…””}”(hj&hžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËhŸh³h K´hjºhžhubeh}”(h]”j]ah ]”h"]”Œ'debugging problems with receiving video”ah$]”h&]”uh1h´hh¶hžhhŸh³h K£ubeh}”(h]”j ah ]”h"]”Œ,debugging and tracing in the media subsystem”ah$]”h&]”uh1h´hhhžhhŸh³h Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”h³uh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)”}”(h¹NŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”juŒerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”h³Œ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(jOj j‚j~jßj+jWjMj"joj–j‘jîj³jFjÕjìj÷jDjj·j;jHj]uŒ nametypes”}”(jO‰j‚‰j߉jW‰j"‰j–‰jî‰jF‰jì‰jD‰j·‰jH‰uh}”(j h¶j~hÝj+j…jMjâjojZj‘j%j³j™jÕjñj÷jIjjïj;jGj]jºhÊhþj%jjGj>jij`j‹j‚j­j¤jÏjÆjñjèjj j5j,jWjNuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”jƒK s…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nhžhub.