8sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextEnglish}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget/core-api/irq/irqflags-tracingmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget1/translations/zh_TW/core-api/irq/irqflags-tracingmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget1/translations/it_IT/core-api/irq/irqflags-tracingmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget1/translations/ja_JP/core-api/irq/irqflags-tracingmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget1/translations/ko_KR/core-api/irq/irqflags-tracingmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget1/translations/sp_SP/core-api/irq/irqflags-tracingmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageChinese (Simplified)uh1h hh _documenthsourceNlineNubhnote)}(hX{此文件的目的是为让中文读者更容易阅读和理解,而不是作为一个分支。 因此, 如果您对此文件有任何意见或更新,请先尝试更新原始英文文件。 如果您发现本文档与原始文件有任何不同或者有翻译问题,请发建议或者补丁给 该文件的译者,或者请求中文文档维护者和审阅者的帮助。h]h paragraph)}(hX{此文件的目的是为让中文读者更容易阅读和理解,而不是作为一个分支。 因此, 如果您对此文件有任何意见或更新,请先尝试更新原始英文文件。 如果您发现本文档与原始文件有任何不同或者有翻译问题,请发建议或者补丁给 该文件的译者,或者请求中文文档维护者和审阅者的帮助。h]hX{此文件的目的是为让中文读者更容易阅读和理解,而不是作为一个分支。 因此, 如果您对此文件有任何意见或更新,请先尝试更新原始英文文件。 如果您发现本文档与原始文件有任何不同或者有翻译问题,请发建议或者补丁给 该文件的译者,或者请求中文文档维护者和审阅者的帮助。}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hh5Documentation/translations/zh_CN/disclaimer-zh_CN.rsthKhhubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubh field_list)}(hhh](hfield)}(hhh](h field_name)}(hOriginalh]hOriginal}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhh^/var/lib/git/docbuild/linux/Documentation/translations/zh_CN/core-api/irq/irqflags-tracing.rsthKubh field_body)}(h0Documentation/core-api/irq/irqflags-tracing.rst h]h)}(h/Documentation/core-api/irq/irqflags-tracing.rsth]h/Documentation/core-api/irq/irqflags-tracing.rst}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhubah}(h]h ]h"]h$]h&]uh1hhhubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hhh](h)}(h翻译h]h翻译}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhKubh)}(h-司延腾 Yanteng Si h]h)}(h,司延腾 Yanteng Si h](h司延腾 Yanteng Si <}(hjhhhNhNubh reference)}(hsiyanteng@loongson.cnh]hsiyanteng@loongson.cn}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:siyanteng@loongson.cnuh1jhjubh>}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1hhhubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubeh}(h]h ]h"]h$]h&]uh1hhhhhhhhKubhtarget)}(h.. _cn_irqflags-tracing.rst:h]h}(h]h ]h"]h$]h&]refidcn-irqflags-tracing-rstuh1jDhKhhhhhhubhsection)}(hhh](htitle)}(hIRQ-flags状态追踪h]hIRQ-flags状态追踪}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjThhhhhK ubh)}(hhh]h)}(hhh](h)}(hAuthorh]hAuthor}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjjhhhKubh)}(h4最初由Ingo Molnar 开始撰写 h]h)}(h3最初由Ingo Molnar 开始撰写h](h最初由Ingo Molnar <}(hjhhhNhNubj)}(hmingo@redhat.comh]hmingo@redhat.com}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:mingo@redhat.comuh1jhjubh >开始撰写}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj{ubah}(h]h ]h"]h$]h&]uh1hhjjubeh}(h]h ]h"]h$]h&]uh1hhhhKhjghhubah}(h]h ]h"]h$]h&]uh1hhjThhhhhKubh)}(h“irq-flags tracing”(中断标志追踪)功能可以 “追踪” hardirq和softirq的状态,它让 感兴趣的子系统有机会了解到到内核中发生的每一个 hardirqs-off/hardirqs-on、softirqs-off/softirqs-on事件。h]h“irq-flags tracing”(中断标志追踪)功能可以 “追踪” hardirq和softirq的状态,它让 感兴趣的子系统有机会了解到到内核中发生的每一个 hardirqs-off/hardirqs-on、softirqs-off/softirqs-on事件。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjThhubh)}(hXFCONFIG_TRACE_IRQFLAGS_SUPPORT是通用锁调试代码提供的CONFIG_PROVE_SPIN_LOCKING 和CONFIG_PROVE_RW_LOCKING所需要的。否则将只有CONFIG_PROVE_MUTEX_LOCKING和 CONFIG_PROVE_RWSEM_LOCKING在一个架构上被提供--这些都是不在IRQ上下文中使用的 锁API。(rwsems的一个异常是可以解决的)h]hXFCONFIG_TRACE_IRQFLAGS_SUPPORT是通用锁调试代码提供的CONFIG_PROVE_SPIN_LOCKING 和CONFIG_PROVE_RW_LOCKING所需要的。否则将只有CONFIG_PROVE_MUTEX_LOCKING和 CONFIG_PROVE_RWSEM_LOCKING在一个架构上被提供--这些都是不在IRQ上下文中使用的 锁API。(rwsems的一个异常是可以解决的)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjThhubh)}(h架构对这一点的支持当然不属于“微不足道”的范畴,因为很多低级的汇编代码都要处理irq-flags 的状态变化。但是一个架构可以以一种相当直接且无风险的方式启用irq-flags-tracing。h]h架构对这一点的支持当然不属于“微不足道”的范畴,因为很多低级的汇编代码都要处理irq-flags 的状态变化。但是一个架构可以以一种相当直接且无风险的方式启用irq-flags-tracing。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjThhubh)}(hI架构如果想支持这个,需要先做一些代码组织上的改变:h]hI架构如果想支持这个,需要先做一些代码组织上的改变:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjThhubh bullet_list)}(hhh]h list_item)}(hL在他们的arch级Kconfig文件中添加并启用TRACE_IRQFLAGS_SUPPORT。 h]h)}(hK在他们的arch级Kconfig文件中添加并启用TRACE_IRQFLAGS_SUPPORT。h]hK在他们的arch级Kconfig文件中添加并启用TRACE_IRQFLAGS_SUPPORT。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubah}(h]h ]h"]h$]h&]bullet-uh1jhhhKhjThhubh)}(hQ然后还需要做一些功能上的改变来实现对irq-flags-tracing的支持:h]hQ然后还需要做一些功能上的改变来实现对irq-flags-tracing的支持:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK!hjThhubj)}(hhh](j)}(hXI在低级入口代码中增加(构建条件)对trace_hardirqs_off()/trace_hardirqs_on() 函数的调用。锁验证器会密切关注 “real”的irq-flags是否与 “virtual”的irq-flags 状态相匹配,如果两者不匹配,则会发出警告(并关闭自己)。通常维护arch中 irq-flags-track的大部分时间都是在这种状态下度过的:看看lockdep的警告,试着 找出我们还没有搞定的汇编代码。修复并重复。一旦系统启动,并且在irq-flags跟踪功 能中没有出现lockdep警告的情况下,arch支持就完成了。 h]h)}(hXH在低级入口代码中增加(构建条件)对trace_hardirqs_off()/trace_hardirqs_on() 函数的调用。锁验证器会密切关注 “real”的irq-flags是否与 “virtual”的irq-flags 状态相匹配,如果两者不匹配,则会发出警告(并关闭自己)。通常维护arch中 irq-flags-track的大部分时间都是在这种状态下度过的:看看lockdep的警告,试着 找出我们还没有搞定的汇编代码。修复并重复。一旦系统启动,并且在irq-flags跟踪功 能中没有出现lockdep警告的情况下,arch支持就完成了。h]hXH在低级入口代码中增加(构建条件)对trace_hardirqs_off()/trace_hardirqs_on() 函数的调用。锁验证器会密切关注 “real”的irq-flags是否与 “virtual”的irq-flags 状态相匹配,如果两者不匹配,则会发出警告(并关闭自己)。通常维护arch中 irq-flags-track的大部分时间都是在这种状态下度过的:看看lockdep的警告,试着 找出我们还没有搞定的汇编代码。修复并重复。一旦系统启动,并且在irq-flags跟踪功 能中没有出现lockdep警告的情况下,arch支持就完成了。}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK#hj#ubah}(h]h ]h"]h$]h&]uh1jhj hhhhhNubj)}(h如果该架构有不可屏蔽的中断,那么需要通过lockdep_off()/lockdep_on()将这些中 断从irq跟踪[和锁验证]机制中排除。 h]h)}(h如果该架构有不可屏蔽的中断,那么需要通过lockdep_off()/lockdep_on()将这些中 断从irq跟踪[和锁验证]机制中排除。h]h如果该架构有不可屏蔽的中断,那么需要通过lockdep_off()/lockdep_on()将这些中 断从irq跟踪[和锁验证]机制中排除。}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK*hj;ubah}(h]h ]h"]h$]h&]uh1jhj hhhhhNubeh}(h]h ]h"]h$]h&]jjuh1jhhhK#hjThhubh block_quote)}(hX?一般来说,在一个架构中,不完整的irq-flags-tracing实现是没有风险的:lockdep 会检测到这一点,并将自己关闭。即锁验证器仍然可靠。应该不会因为irq-tracing的错 误而崩溃。(除非通过修改不该修改的条件来更改汇编或寄存器而破坏其他代码)h]h)}(hX?一般来说,在一个架构中,不完整的irq-flags-tracing实现是没有风险的:lockdep 会检测到这一点,并将自己关闭。即锁验证器仍然可靠。应该不会因为irq-tracing的错 误而崩溃。(除非通过修改不该修改的条件来更改汇编或寄存器而破坏其他代码)h]hX?一般来说,在一个架构中,不完整的irq-flags-tracing实现是没有风险的:lockdep 会检测到这一点,并将自己关闭。即锁验证器仍然可靠。应该不会因为irq-tracing的错 误而崩溃。(除非通过修改不该修改的条件来更改汇编或寄存器而破坏其他代码)}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK-hj[ubah}(h]h ]h"]h$]h&]uh1jYhhhK-hjThhubeh}(h]( irq-flagsjQeh ]h"](irq-flags状态追踪cn_irqflags-tracing.rsteh$]h&]uh1jRhhhhhhhK expect_referenced_by_name}jyjFsexpect_referenced_by_id}jQjFsubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(jWN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh، _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}jQ]jFasnameids}(jyjQjxjuu nametypes}(jyjxuh}(jQjTjujTu footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages]hsystem_message)}(hhh]h)}(hhh]h=Hyperlink target "cn-irqflags-tracing-rst" is not referenced.}hj sbah}(h]h ]h"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]levelKtypeINFOsourceh،lineKuh1juba transformerN include_log]BDocumentation/translations/zh_CN/core-api/irq/irqflags-tracing.rst(NNNNta decorationNhhub.