sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget'/translations/zh_CN/core-api/genericirqmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/zh_TW/core-api/genericirqmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/it_IT/core-api/genericirqmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/ja_JP/core-api/genericirqmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/ko_KR/core-api/genericirqmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/sp_SP/core-api/genericirqmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h4This data file has been placed in the public domain.h]h4This data file has been placed in the public domain.}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhho/srv/docbuild/lib/venvs/build-kernel-docs/lib64/python3.9/site-packages/docutils/parsers/rst/include/isonum.txthKubh)}(hDerived from the Unicode character mappings available from . Processed by unicode2rstsubs.py, part of Docutils: .h]hDerived from the Unicode character mappings available from . Processed by unicode2rstsubs.py, part of Docutils: .}hhsbah}(h]h ]h"]h$]h&]hhuh1hhhhhhhhKubhsubstitution_definition)}(h*.. |amp| unicode:: U+00026 .. AMPERSANDh]h&}hhsbah}(h]h ]h"]ampah$]h&]uh1hhhhKhhhhubh)}(h+.. |apos| unicode:: U+00027 .. APOSTROPHEh]h'}hhsbah}(h]h ]h"]aposah$]h&]uh1hhhhKhhhhubh)}(h).. |ast| unicode:: U+0002A .. ASTERISKh]h*}hhsbah}(h]h ]h"]astah$]h&]uh1hhhhK hhhhubh)}(h+.. |brvbar| unicode:: U+000A6 .. BROKEN BARh]h¦}hhsbah}(h]h ]h"]brvbarah$]h&]uh1hhhhK hhhhubh)}(h0.. |bsol| unicode:: U+0005C .. REVERSE SOLIDUSh]h\}hjsbah}(h]h ]h"]bsolah$]h&]uh1hhhhK hhhhubh)}(h*.. |cent| unicode:: U+000A2 .. CENT SIGNh]h¢}hjsbah}(h]h ]h"]centah$]h&]uh1hhhhK hhhhubh)}(h&.. |colon| unicode:: U+0003A .. COLONh]h:}hjsbah}(h]h ]h"]colonah$]h&]uh1hhhhK hhhhubh)}(h&.. |comma| unicode:: U+0002C .. COMMAh]h,}hj-sbah}(h]h ]h"]commaah$]h&]uh1hhhhKhhhhubh)}(h... |commat| unicode:: U+00040 .. COMMERCIAL ATh]h@}hj<sbah}(h]h ]h"]commatah$]h&]uh1hhhhKhhhhubh)}(h/.. |copy| unicode:: U+000A9 .. COPYRIGHT SIGNh]h©}hjKsbah}(h]h ]h"]copyah$]h&]uh1hhhhKhhhhubh)}(h... |curren| unicode:: U+000A4 .. CURRENCY SIGNh]h¤}hjZsbah}(h]h ]h"]currenah$]h&]uh1hhhhKhhhhubh)}(h0.. |darr| unicode:: U+02193 .. DOWNWARDS ARROWh]h↓}hjisbah}(h]h ]h"]darrah$]h&]uh1hhhhKhhhhubh)}(h,.. |deg| unicode:: U+000B0 .. DEGREE SIGNh]h°}hjxsbah}(h]h ]h"]degah$]h&]uh1hhhhKhhhhubh)}(h... |divide| unicode:: U+000F7 .. DIVISION SIGNh]h÷}hjsbah}(h]h ]h"]divideah$]h&]uh1hhhhKhhhhubh)}(h,.. |dollar| unicode:: U+00024 .. DOLLAR SIGNh]h$}hjsbah}(h]h ]h"]dollarah$]h&]uh1hhhhKhhhhubh)}(h,.. |equals| unicode:: U+0003D .. EQUALS SIGNh]h=}hjsbah}(h]h ]h"]equalsah$]h&]uh1hhhhKhhhhubh)}(h1.. |excl| unicode:: U+00021 .. EXCLAMATION MARKh]h!}hjsbah}(h]h ]h"]exclah$]h&]uh1hhhhKhhhhubh)}(h9.. |frac12| unicode:: U+000BD .. VULGAR FRACTION ONE HALFh]h½}hjsbah}(h]h ]h"]frac12ah$]h&]uh1hhhhKhhhhubh)}(h<.. |frac14| unicode:: U+000BC .. VULGAR FRACTION ONE QUARTERh]h¼}hjsbah}(h]h ]h"]frac14ah$]h&]uh1hhhhKhhhhubh)}(h;.. |frac18| unicode:: U+0215B .. VULGAR FRACTION ONE EIGHTHh]h⅛}hjsbah}(h]h ]h"]frac18ah$]h&]uh1hhhhKhhhhubh)}(h?.. |frac34| unicode:: U+000BE .. VULGAR FRACTION THREE QUARTERSh]h¾}hjsbah}(h]h ]h"]frac34ah$]h&]uh1hhhhKhhhhubh)}(h>.. |frac38| unicode:: U+0215C .. VULGAR FRACTION THREE EIGHTHSh]h⅜}hjsbah}(h]h ]h"]frac38ah$]h&]uh1hhhhKhhhhubh)}(h=.. |frac58| unicode:: U+0215D .. VULGAR FRACTION FIVE EIGHTHSh]h⅝}hjsbah}(h]h ]h"]frac58ah$]h&]uh1hhhhKhhhhubh)}(h>.. |frac78| unicode:: U+0215E .. VULGAR FRACTION SEVEN EIGHTHSh]h⅞}hjsbah}(h]h ]h"]frac78ah$]h&]uh1hhhhKhhhhubh)}(h2.. |gt| unicode:: U+0003E .. GREATER-THAN SIGNh]h>}hj,sbah}(h]h ]h"]gtah$]h&]uh1hhhhKhhhhubh)}(h9.. |half| unicode:: U+000BD .. VULGAR FRACTION ONE HALFh]h½}hj;sbah}(h]h ]h"]halfah$]h&]uh1hhhhK hhhhubh)}(h/.. |horbar| unicode:: U+02015 .. HORIZONTAL BARh]h―}hjJsbah}(h]h ]h"]horbarah$]h&]uh1hhhhK!hhhhubh)}(h'.. |hyphen| unicode:: U+02010 .. HYPHENh]h‐}hjYsbah}(h]h ]h"]hyphenah$]h&]uh1hhhhK"hhhhubh)}(h:.. |iexcl| unicode:: U+000A1 .. INVERTED EXCLAMATION MARKh]h¡}hjhsbah}(h]h ]h"]iexclah$]h&]uh1hhhhK#hhhhubh)}(h7.. |iquest| unicode:: U+000BF .. INVERTED QUESTION MARKh]h¿}hjwsbah}(h]h ]h"]iquestah$]h&]uh1hhhhK$hhhhubh)}(hJ.. |laquo| unicode:: U+000AB .. LEFT-POINTING DOUBLE ANGLE QUOTATION MARKh]h«}hjsbah}(h]h ]h"]laquoah$]h&]uh1hhhhK%hhhhubh)}(h0.. |larr| unicode:: U+02190 .. LEFTWARDS ARROWh]h←}hjsbah}(h]h ]h"]larrah$]h&]uh1hhhhK&hhhhubh)}(h3.. |lcub| unicode:: U+0007B .. LEFT CURLY BRACKETh]h{}hjsbah}(h]h ]h"]lcubah$]h&]uh1hhhhK'hhhhubh)}(h;.. |ldquo| unicode:: U+0201C .. LEFT DOUBLE QUOTATION MARKh]h“}hjsbah}(h]h ]h"]ldquoah$]h&]uh1hhhhK(hhhhubh)}(h).. |lowbar| unicode:: U+0005F .. LOW LINEh]h_}hjsbah}(h]h ]h"]lowbarah$]h&]uh1hhhhK)hhhhubh)}(h1.. |lpar| unicode:: U+00028 .. LEFT PARENTHESISh]h(}hjsbah}(h]h ]h"]lparah$]h&]uh1hhhhK*hhhhubh)}(h4.. |lsqb| unicode:: U+0005B .. LEFT SQUARE BRACKETh]h[}hjsbah}(h]h ]h"]lsqbah$]h&]uh1hhhhK+hhhhubh)}(h;.. |lsquo| unicode:: U+02018 .. LEFT SINGLE QUOTATION MARKh]h‘}hjsbah}(h]h ]h"]lsquoah$]h&]uh1hhhhK,hhhhubh)}(h/.. |lt| unicode:: U+0003C .. LESS-THAN SIGNh]h<}hjsbah}(h]h ]h"]ltah$]h&]uh1hhhhK-hhhhubh)}(h+.. |micro| unicode:: U+000B5 .. MICRO SIGNh]hµ}hj sbah}(h]h ]h"]microah$]h&]uh1hhhhK.hhhhubh)}(h+.. |middot| unicode:: U+000B7 .. MIDDLE DOTh]h·}hjsbah}(h]h ]h"]middotah$]h&]uh1hhhhK/hhhhubh)}(h/.. |nbsp| unicode:: U+000A0 .. NO-BREAK SPACEh]h }hj+sbah}(h]h ]h"]nbspah$]h&]uh1hhhhK0hhhhubh)}(h).. |not| unicode:: U+000AC .. NOT SIGNh]h¬}hj:sbah}(h]h ]h"]notah$]h&]uh1hhhhK1hhhhubh)}(h,.. |num| unicode:: U+00023 .. NUMBER SIGNh]h#}hjIsbah}(h]h ]h"]numah$]h&]uh1hhhhK2hhhhubh)}(h).. |ohm| unicode:: U+02126 .. OHM SIGNh]hΩ}hjXsbah}(h]h ]h"]ohmah$]h&]uh1hhhhK3hhhhubh)}(h;.. |ordf| unicode:: U+000AA .. FEMININE ORDINAL INDICATORh]hª}hjgsbah}(h]h ]h"]ordfah$]h&]uh1hhhhK4hhhhubh)}(h<.. |ordm| unicode:: U+000BA .. MASCULINE ORDINAL INDICATORh]hº}hjvsbah}(h]h ]h"]ordmah$]h&]uh1hhhhK5hhhhubh)}(h-.. |para| unicode:: U+000B6 .. PILCROW SIGNh]h¶}hjsbah}(h]h ]h"]paraah$]h&]uh1hhhhK6hhhhubh)}(h-.. |percnt| unicode:: U+00025 .. PERCENT SIGNh]h%}hjsbah}(h]h ]h"]percntah$]h&]uh1hhhhK7hhhhubh)}(h*.. |period| unicode:: U+0002E .. FULL STOPh]h.}hjsbah}(h]h ]h"]periodah$]h&]uh1hhhhK8hhhhubh)}(h*.. |plus| unicode:: U+0002B .. PLUS SIGNh]h+}hjsbah}(h]h ]h"]plusah$]h&]uh1hhhhK9hhhhubh)}(h0.. |plusmn| unicode:: U+000B1 .. PLUS-MINUS SIGNh]h±}hjsbah}(h]h ]h"]plusmnah$]h&]uh1hhhhK:hhhhubh)}(h+.. |pound| unicode:: U+000A3 .. POUND SIGNh]h£}hjsbah}(h]h ]h"]poundah$]h&]uh1hhhhK;hhhhubh)}(h... |quest| unicode:: U+0003F .. QUESTION MARKh]h?}hjsbah}(h]h ]h"]questah$]h&]uh1hhhhKhhhhubh)}(h1.. |rarr| unicode:: U+02192 .. RIGHTWARDS ARROWh]h→}hj sbah}(h]h ]h"]rarrah$]h&]uh1hhhhK?hhhhubh)}(h4.. |rcub| unicode:: U+0007D .. RIGHT CURLY BRACKETh]h}}hjsbah}(h]h ]h"]rcubah$]h&]uh1hhhhK@hhhhubh)}(h<.. |rdquo| unicode:: U+0201D .. RIGHT DOUBLE QUOTATION MARKh]h”}hj*sbah}(h]h ]h"]rdquoah$]h&]uh1hhhhKAhhhhubh)}(h0.. |reg| unicode:: U+000AE .. REGISTERED SIGNh]h®}hj9sbah}(h]h ]h"]regah$]h&]uh1hhhhKBhhhhubh)}(h2.. |rpar| unicode:: U+00029 .. RIGHT PARENTHESISh]h)}hjHsbah}(h]h ]h"]rparah$]h&]uh1hhhhKChhhhubh)}(h5.. |rsqb| unicode:: U+0005D .. RIGHT SQUARE BRACKETh]h]}hjWsbah}(h]h ]h"]rsqbah$]h&]uh1hhhhKDhhhhubh)}(h<.. |rsquo| unicode:: U+02019 .. RIGHT SINGLE QUOTATION MARKh]h’}hjfsbah}(h]h ]h"]rsquoah$]h&]uh1hhhhKEhhhhubh)}(h-.. |sect| unicode:: U+000A7 .. SECTION SIGNh]h§}hjusbah}(h]h ]h"]sectah$]h&]uh1hhhhKFhhhhubh)}(h*.. |semi| unicode:: U+0003B .. SEMICOLONh]h;}hjsbah}(h]h ]h"]semiah$]h&]uh1hhhhKGhhhhubh)}(h,.. |shy| unicode:: U+000AD .. SOFT HYPHENh]h­}hjsbah}(h]h ]h"]shyah$]h&]uh1hhhhKHhhhhubh)}(h(.. |sol| unicode:: U+0002F .. SOLIDUSh]h/}hjsbah}(h]h ]h"]solah$]h&]uh1hhhhKIhhhhubh)}(h,.. |sung| unicode:: U+0266A .. EIGHTH NOTEh]h♪}hjsbah}(h]h ]h"]sungah$]h&]uh1hhhhKJhhhhubh)}(h0.. |sup1| unicode:: U+000B9 .. SUPERSCRIPT ONEh]h¹}hjsbah}(h]h ]h"]sup1ah$]h&]uh1hhhhKKhhhhubh)}(h0.. |sup2| unicode:: U+000B2 .. SUPERSCRIPT TWOh]h²}hjsbah}(h]h ]h"]sup2ah$]h&]uh1hhhhKLhhhhubh)}(h2.. |sup3| unicode:: U+000B3 .. SUPERSCRIPT THREEh]h³}hjsbah}(h]h ]h"]sup3ah$]h&]uh1hhhhKMhhhhubh)}(h4.. |times| unicode:: U+000D7 .. MULTIPLICATION SIGNh]h×}hjsbah}(h]h ]h"]timesah$]h&]uh1hhhhKNhhhhubh)}(h0.. |trade| unicode:: U+02122 .. TRADE MARK SIGNh]h™}hjsbah}(h]h ]h"]tradeah$]h&]uh1hhhhKOhhhhubh)}(h... |uarr| unicode:: U+02191 .. UPWARDS ARROWh]h↑}hj sbah}(h]h ]h"]uarrah$]h&]uh1hhhhKPhhhhubh)}(h... |verbar| unicode:: U+0007C .. VERTICAL LINEh]h|}hjsbah}(h]h ]h"]verbarah$]h&]uh1hhhhKQhhhhubh)}(h*.. |yen| unicode:: U+000A5 .. YEN SIGN h]h¥}hj)sbah}(h]h ]h"]yenah$]h&]uh1hhhhKRhhhhubhsection)}(hhh](htitle)}(hLinux generic IRQ handlingh]hLinux generic IRQ handling}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1j=hj:hhhA/var/lib/git/docbuild/linux/Documentation/core-api/genericirq.rsthKubh field_list)}(hhh](hfield)}(hhh](h field_name)}(h Copyrighth]h Copyright}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjUhjMhKubh field_body)}(h!|copy| 2005-2010: Thomas Gleixnerh]h paragraph)}(hjlh](h©}(hjphhhNhNubh 2005-2010: Thomas Gleixner}(hjphhhNhNubeh}(h]h ]h"]h$]h&]uh1jnhjMhKhjjubah}(h]h ]h"]h$]h&]uh1jhhjUubeh}(h]h ]h"]h$]h&]uh1jShjMhKhjPhhubjT)}(hhh](jY)}(h Copyrighth]h Copyright}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjhjMhKubji)}(h|copy| 2005-2006: Ingo Molnar h]jo)}(h|copy| 2005-2006: Ingo Molnarh](h©}(hjhhhNhNubh 2005-2006: Ingo Molnar}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jnhjMhKhjubah}(h]h ]h"]h$]h&]uh1jhhjubeh}(h]h ]h"]h$]h&]uh1jShjMhKhjPhhubeh}(h]h ]h"]h$]h&]uh1jNhj:hhhjMhKubj9)}(hhh](j>)}(h Introductionh]h Introduction}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j=hjhhhjMhK ubjo)}(hXThe generic interrupt handling layer is designed to provide a complete abstraction of interrupt handling for device drivers. It is able to handle all the different types of interrupt controller hardware. Device drivers use generic API functions to request, enable, disable and free interrupts. The drivers do not have to know anything about interrupt hardware details, so they can be used on different platforms without code changes.h]hXThe generic interrupt handling layer is designed to provide a complete abstraction of interrupt handling for device drivers. It is able to handle all the different types of interrupt controller hardware. Device drivers use generic API functions to request, enable, disable and free interrupts. The drivers do not have to know anything about interrupt hardware details, so they can be used on different platforms without code changes.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhK hjhhubjo)}(hThis documentation is provided to developers who want to implement an interrupt subsystem based for their architecture, with the help of the generic IRQ handling layer.h]hThis documentation is provided to developers who want to implement an interrupt subsystem based for their architecture, with the help of the generic IRQ handling layer.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhKhjhhubeh}(h] introductionah ]h"] introductionah$]h&]uh1j8hj:hhhjMhK ubj9)}(hhh](j>)}(h Rationaleh]h Rationale}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j=hjhhhjMhKubjo)}(hThe original implementation of interrupt handling in Linux uses the __do_IRQ() super-handler, which is able to deal with every type of interrupt logic.h]hThe original implementation of interrupt handling in Linux uses the __do_IRQ() super-handler, which is able to deal with every type of interrupt logic.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhKhjhhubjo)}(hOriginally, Russell King identified different types of handlers to build a quite universal set for the ARM interrupt handler implementation in Linux 2.5/2.6. He distinguished between:h]hOriginally, Russell King identified different types of handlers to build a quite universal set for the ARM interrupt handler implementation in Linux 2.5/2.6. He distinguished between:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhK hjhhubh bullet_list)}(hhh](h list_item)}(h Level type h]jo)}(h Level typeh]h Level type}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhK$hj/ubah}(h]h ]h"]h$]h&]uh1j-hj*hhhjMhNubj.)}(h Edge type h]jo)}(h Edge typeh]h Edge type}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhK&hjGubah}(h]h ]h"]h$]h&]uh1j-hj*hhhjMhNubj.)}(h Simple type h]jo)}(h Simple typeh]h Simple type}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhK(hj_ubah}(h]h ]h"]h$]h&]uh1j-hj*hhhjMhNubeh}(h]h ]h"]h$]h&]bullet-uh1j(hjMhK$hjhhubjo)}(h5During the implementation we identified another type:h]h5During the implementation we identified another type:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhK*hjhhubj))}(hhh]j.)}(hFast EOI type h]jo)}(h Fast EOI typeh]h Fast EOI type}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhK,hjubah}(h]h ]h"]h$]h&]uh1j-hjhhhjMhNubah}(h]h ]h"]h$]h&]j}j~uh1j(hjMhK,hjhhubjo)}(hMIn the SMP world of the __do_IRQ() super-handler another type was identified:h]hMIn the SMP world of the __do_IRQ() super-handler another type was identified:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhK.hjhhubj))}(hhh]j.)}(h Per CPU type h]jo)}(h Per CPU typeh]h Per CPU type}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhK1hjubah}(h]h ]h"]h$]h&]uh1j-hjhhhjMhNubah}(h]h ]h"]h$]h&]j}j~uh1j(hjMhK1hjhhubjo)}(hThis split implementation of high-level IRQ handlers allows us to optimize the flow of the interrupt handling for each specific interrupt type. This reduces complexity in that particular code path and allows the optimized handling of a given type.h]hThis split implementation of high-level IRQ handlers allows us to optimize the flow of the interrupt handling for each specific interrupt type. This reduces complexity in that particular code path and allows the optimized handling of a given type.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhK3hjhhubjo)}(hXThe original general IRQ implementation used hw_interrupt_type structures and their ``->ack``, ``->end`` [etc.] callbacks to differentiate the flow control in the super-handler. This leads to a mix of flow logic and low-level hardware logic, and it also leads to unnecessary code duplication: for example in i386, there is an ``ioapic_level_irq`` and an ``ioapic_edge_irq`` IRQ-type which share many of the low-level details but have different flow handling.h](hTThe original general IRQ implementation used hw_interrupt_type structures and their }(hjhhhNhNubhliteral)}(h ``->ack``h]h->ack}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh, }(hjhhhNhNubj)}(h ``->end``h]h->end}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh [etc.] callbacks to differentiate the flow control in the super-handler. This leads to a mix of flow logic and low-level hardware logic, and it also leads to unnecessary code duplication: for example in i386, there is an }(hjhhhNhNubj)}(h``ioapic_level_irq``h]hioapic_level_irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh and an }(hjhhhNhNubj)}(h``ioapic_edge_irq``h]hioapic_edge_irq}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhU IRQ-type which share many of the low-level details but have different flow handling.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jnhjMhK8hjhhubjo)}(h\A more natural abstraction is the clean separation of the 'irq flow' and the 'chip details'.h]hdA more natural abstraction is the clean separation of the ‘irq flow’ and the ‘chip details’.}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhK@hjhhubjo)}(hX}Analysing a couple of architecture's IRQ subsystem implementations reveals that most of them can use a generic set of 'irq flow' methods and only need to add the chip-level specific code. The separation is also valuable for (sub)architectures which need specific quirks in the IRQ flow itself but not in the chip details - and thus provides a more transparent IRQ subsystem design.h]hXAnalysing a couple of architecture’s IRQ subsystem implementations reveals that most of them can use a generic set of ‘irq flow’ methods and only need to add the chip-level specific code. The separation is also valuable for (sub)architectures which need specific quirks in the IRQ flow itself but not in the chip details - and thus provides a more transparent IRQ subsystem design.}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhKChjhhubjo)}(hX%Each interrupt descriptor is assigned its own high-level flow handler, which is normally one of the generic implementations. (This high-level flow handler implementation also makes it simple to provide demultiplexing handlers which can be found in embedded platforms on various architectures.)h]hX%Each interrupt descriptor is assigned its own high-level flow handler, which is normally one of the generic implementations. (This high-level flow handler implementation also makes it simple to provide demultiplexing handlers which can be found in embedded platforms on various architectures.)}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhKJhjhhubjo)}(hXThe separation makes the generic interrupt handling layer more flexible and extensible. For example, an (sub)architecture can use a generic IRQ-flow implementation for 'level type' interrupts and add a (sub)architecture specific 'edge type' implementation.h]hXThe separation makes the generic interrupt handling layer more flexible and extensible. For example, an (sub)architecture can use a generic IRQ-flow implementation for ‘level type’ interrupts and add a (sub)architecture specific ‘edge type’ implementation.}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhKPhjhhubjo)}(hXTo make the transition to the new model easier and prevent the breakage of existing implementations, the __do_IRQ() super-handler is still available. This leads to a kind of duality for the time being. Over time the new model should be used in more and more architectures, as it enables smaller and cleaner IRQ subsystems. It's deprecated for three years now and about to be removed.h]hXTo make the transition to the new model easier and prevent the breakage of existing implementations, the __do_IRQ() super-handler is still available. This leads to a kind of duality for the time being. Over time the new model should be used in more and more architectures, as it enables smaller and cleaner IRQ subsystems. It’s deprecated for three years now and about to be removed.}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhKUhjhhubeh}(h] rationaleah ]h"] rationaleah$]h&]uh1j8hj:hhhjMhKubj9)}(hhh](j>)}(hKnown Bugs And Assumptionsh]hKnown Bugs And Assumptions}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j=hjhhhjMhK]ubjo)}(hNone (knock on wood).h]hNone (knock on wood).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhK_hjhhubeh}(h]known-bugs-and-assumptionsah ]h"]known bugs and assumptionsah$]h&]uh1j8hj:hhhjMhK]ubj9)}(hhh](j>)}(hAbstraction layersh]hAbstraction layers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j=hjhhhjMhKbubjo)}(hAThere are three main levels of abstraction in the interrupt code:h]hAThere are three main levels of abstraction in the interrupt code:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhKdhjhhubhenumerated_list)}(hhh](j.)}(hHigh-level driver API h]jo)}(hHigh-level driver APIh]hHigh-level driver API}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhKfhjubah}(h]h ]h"]h$]h&]uh1j-hjhhhjMhNubj.)}(hHigh-level IRQ flow handlers h]jo)}(hHigh-level IRQ flow handlersh]hHigh-level IRQ flow handlers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhKhhjubah}(h]h ]h"]h$]h&]uh1j-hjhhhjMhNubj.)}(h"Chip-level hardware encapsulation h]jo)}(h!Chip-level hardware encapsulationh]h!Chip-level hardware encapsulation}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhKjhj ubah}(h]h ]h"]h$]h&]uh1j-hjhhhjMhNubeh}(h]h ]h"]h$]h&]enumtypearabicprefixhsuffix.uh1jhjhhhjMhKfubj9)}(hhh](j>)}(hInterrupt control flowh]hInterrupt control flow}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1j=hj/hhhjMhKmubjo)}(hXEach interrupt is described by an interrupt descriptor structure irq_desc. The interrupt is referenced by an 'unsigned int' numeric value which selects the corresponding interrupt description structure in the descriptor structures array. The descriptor structure contains status information and pointers to the interrupt flow method and the interrupt chip structure which are assigned to this interrupt.h]hXEach interrupt is described by an interrupt descriptor structure irq_desc. The interrupt is referenced by an ‘unsigned int’ numeric value which selects the corresponding interrupt description structure in the descriptor structures array. The descriptor structure contains status information and pointers to the interrupt flow method and the interrupt chip structure which are assigned to this interrupt.}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhKohj/hhubjo)}(hX Whenever an interrupt triggers, the low-level architecture code calls into the generic interrupt code by calling desc->handle_irq(). This high-level IRQ handling function only uses desc->irq_data.chip primitives referenced by the assigned chip descriptor structure.h]hX Whenever an interrupt triggers, the low-level architecture code calls into the generic interrupt code by calling desc->handle_irq(). This high-level IRQ handling function only uses desc->irq_data.chip primitives referenced by the assigned chip descriptor structure.}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhKvhj/hhubeh}(h]interrupt-control-flowah ]h"]interrupt control flowah$]h&]uh1j8hjhhhjMhKmubj9)}(hhh](j>)}(hHigh-level Driver APIh]hHigh-level Driver API}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1j=hjdhhhjMhK|ubjo)}(h:The high-level Driver API consists of following functions:h]h:The high-level Driver API consists of following functions:}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhK~hjdhhubj))}(hhh](j.)}(hrequest_irq() h]jo)}(h request_irq()h]h request_irq()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhKhjubah}(h]h ]h"]h$]h&]uh1j-hjhhhjMhNubj.)}(hrequest_threaded_irq() h]jo)}(hrequest_threaded_irq()h]hrequest_threaded_irq()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhKhjubah}(h]h ]h"]h$]h&]uh1j-hjhhhjMhNubj.)}(h free_irq() h]jo)}(h free_irq()h]h free_irq()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhKhjubah}(h]h ]h"]h$]h&]uh1j-hjhhhjMhNubj.)}(hdisable_irq() h]jo)}(h disable_irq()h]h disable_irq()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhKhjubah}(h]h ]h"]h$]h&]uh1j-hjhhhjMhNubj.)}(h enable_irq() h]jo)}(h enable_irq()h]h enable_irq()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhKhjubah}(h]h ]h"]h$]h&]uh1j-hjhhhjMhNubj.)}(h disable_irq_nosync() (SMP only) h]jo)}(hdisable_irq_nosync() (SMP only)h]hdisable_irq_nosync() (SMP only)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhKhjubah}(h]h ]h"]h$]h&]uh1j-hjhhhjMhNubj.)}(hsynchronize_irq() (SMP only) h]jo)}(hsynchronize_irq() (SMP only)h]hsynchronize_irq() (SMP only)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhKhj ubah}(h]h ]h"]h$]h&]uh1j-hjhhhjMhNubj.)}(hirq_set_irq_type() h]jo)}(hirq_set_irq_type()h]hirq_set_irq_type()}(hj2 hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhKhj. ubah}(h]h ]h"]h$]h&]uh1j-hjhhhjMhNubj.)}(hirq_set_irq_wake() h]jo)}(hirq_set_irq_wake()h]hirq_set_irq_wake()}(hjJ hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhKhjF ubah}(h]h ]h"]h$]h&]uh1j-hjhhhjMhNubj.)}(hirq_set_handler_data() h]jo)}(hirq_set_handler_data()h]hirq_set_handler_data()}(hjb hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhKhj^ ubah}(h]h ]h"]h$]h&]uh1j-hjhhhjMhNubj.)}(hirq_set_chip() h]jo)}(hirq_set_chip()h]hirq_set_chip()}(hjz hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhKhjv ubah}(h]h ]h"]h$]h&]uh1j-hjhhhjMhNubj.)}(hirq_set_chip_data() h]jo)}(hirq_set_chip_data()h]hirq_set_chip_data()}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhKhj ubah}(h]h ]h"]h$]h&]uh1j-hjhhhjMhNubeh}(h]h ]h"]h$]h&]j}j~uh1j(hjMhKhjdhhubjo)}(h9See the autogenerated function documentation for details.h]h9See the autogenerated function documentation for details.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhKhjdhhubeh}(h]high-level-driver-apiah ]h"]high-level driver apiah$]h&]uh1j8hjhhhjMhK|ubj9)}(hhh](j>)}(hHigh-level IRQ flow handlersh]hHigh-level IRQ flow handlers}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j=hj hhhjMhKubjo)}(hAThe generic layer provides a set of pre-defined irq-flow methods:h]hAThe generic layer provides a set of pre-defined irq-flow methods:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhKhj hhubj))}(hhh](j.)}(hhandle_level_irq() h]jo)}(hhandle_level_irq()h]hhandle_level_irq()}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhKhj ubah}(h]h ]h"]h$]h&]uh1j-hj hhhjMhNubj.)}(hhandle_edge_irq() h]jo)}(hhandle_edge_irq()h]hhandle_edge_irq()}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhKhj ubah}(h]h ]h"]h$]h&]uh1j-hj hhhjMhNubj.)}(hhandle_fasteoi_irq() h]jo)}(hhandle_fasteoi_irq()h]hhandle_fasteoi_irq()}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhKhj ubah}(h]h ]h"]h$]h&]uh1j-hj hhhjMhNubj.)}(hhandle_simple_irq() h]jo)}(hhandle_simple_irq()h]hhandle_simple_irq()}(hj0 hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhKhj, ubah}(h]h ]h"]h$]h&]uh1j-hj hhhjMhNubj.)}(hhandle_percpu_irq() h]jo)}(hhandle_percpu_irq()h]hhandle_percpu_irq()}(hjH hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhKhjD ubah}(h]h ]h"]h$]h&]uh1j-hj hhhjMhNubj.)}(hhandle_edge_eoi_irq() h]jo)}(hhandle_edge_eoi_irq()h]hhandle_edge_eoi_irq()}(hj` hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhKhj\ ubah}(h]h ]h"]h$]h&]uh1j-hj hhhjMhNubj.)}(hhandle_bad_irq() h]jo)}(hhandle_bad_irq()h]hhandle_bad_irq()}(hjx hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhKhjt ubah}(h]h ]h"]h$]h&]uh1j-hj hhhjMhNubeh}(h]h ]h"]h$]h&]j}j~uh1j(hjMhKhj hhubjo)}(hThe interrupt flow handlers (either pre-defined or architecture specific) are assigned to specific interrupts by the architecture either during bootup or during device initialization.h]hThe interrupt flow handlers (either pre-defined or architecture specific) are assigned to specific interrupts by the architecture either during bootup or during device initialization.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhKhj hhubj9)}(hhh](j>)}(hDefault flow implementationsh]hDefault flow implementations}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j=hj hhhjMhKubj9)}(hhh](j>)}(hHelper functionsh]hHelper functions}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j=hj hhhjMhKubjo)}(hThe helper functions call the chip primitives and are used by the default flow implementations. The following helper functions are implemented (simplified excerpt)::h]hThe helper functions call the chip primitives and are used by the default flow implementations. The following helper functions are implemented (simplified excerpt):}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhKhj hhubh literal_block)}(hXdefault_enable(struct irq_data *data) { desc->irq_data.chip->irq_unmask(data); } default_disable(struct irq_data *data) { if (!delay_disable(data)) desc->irq_data.chip->irq_mask(data); } default_ack(struct irq_data *data) { chip->irq_ack(data); } default_mask_ack(struct irq_data *data) { if (chip->irq_mask_ack) { chip->irq_mask_ack(data); } else { chip->irq_mask(data); chip->irq_ack(data); } } noop(struct irq_data *data) { }h]hXdefault_enable(struct irq_data *data) { desc->irq_data.chip->irq_unmask(data); } default_disable(struct irq_data *data) { if (!delay_disable(data)) desc->irq_data.chip->irq_mask(data); } default_ack(struct irq_data *data) { chip->irq_ack(data); } default_mask_ack(struct irq_data *data) { if (chip->irq_mask_ack) { chip->irq_mask_ack(data); } else { chip->irq_mask(data); chip->irq_ack(data); } } noop(struct irq_data *data) { }}hj sbah}(h]h ]h"]h$]h&]hhuh1j hjMhKhj hhubeh}(h]helper-functionsah ]h"]helper functionsah$]h&]uh1j8hj hhhjMhKubeh}(h]default-flow-implementationsah ]h"]default flow implementationsah$]h&]uh1j8hj hhhjMhKubj9)}(hhh](j>)}(h$Default flow handler implementationsh]h$Default flow handler implementations}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j=hj hhhjMhKubj9)}(hhh](j>)}(hDefault Level IRQ flow handlerh]hDefault Level IRQ flow handler}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j=hj hhhjMhKubjo)}(hRhandle_level_irq provides a generic implementation for level-triggered interrupts.h]hRhandle_level_irq provides a generic implementation for level-triggered interrupts.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhKhj hhubjo)}(h@The following control flow is implemented (simplified excerpt)::h]h?The following control flow is implemented (simplified excerpt):}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhKhj hhubj )}(hgdesc->irq_data.chip->irq_mask_ack(); handle_irq_event(desc->action); desc->irq_data.chip->irq_unmask();h]hgdesc->irq_data.chip->irq_mask_ack(); handle_irq_event(desc->action); desc->irq_data.chip->irq_unmask();}hj. sbah}(h]h ]h"]h$]h&]hhuh1j hjMhKhj hhubeh}(h]default-level-irq-flow-handlerah ]h"]default level irq flow handlerah$]h&]uh1j8hj hhhjMhKubj9)}(hhh](j>)}(h!Default Fast EOI IRQ flow handlerh]h!Default Fast EOI IRQ flow handler}(hjG hhhNhNubah}(h]h ]h"]h$]h&]uh1j=hjD hhhjMhKubjo)}(hvhandle_fasteoi_irq provides a generic implementation for interrupts, which only need an EOI at the end of the handler.h]hvhandle_fasteoi_irq provides a generic implementation for interrupts, which only need an EOI at the end of the handler.}(hjU hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhKhjD hhubjo)}(h@The following control flow is implemented (simplified excerpt)::h]h?The following control flow is implemented (simplified excerpt):}(hjc hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhKhjD hhubj )}(h?handle_irq_event(desc->action); desc->irq_data.chip->irq_eoi();h]h?handle_irq_event(desc->action); desc->irq_data.chip->irq_eoi();}hjq sbah}(h]h ]h"]h$]h&]hhuh1j hjMhKhjD hhubeh}(h]!default-fast-eoi-irq-flow-handlerah ]h"]!default fast eoi irq flow handlerah$]h&]uh1j8hj hhhjMhKubj9)}(hhh](j>)}(hDefault Edge IRQ flow handlerh]hDefault Edge IRQ flow handler}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j=hj hhhjMhKubjo)}(hPhandle_edge_irq provides a generic implementation for edge-triggered interrupts.h]hPhandle_edge_irq provides a generic implementation for edge-triggered interrupts.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhKhj hhubjo)}(h@The following control flow is implemented (simplified excerpt)::h]h?The following control flow is implemented (simplified excerpt):}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhKhj hhubj )}(hXif (desc->status & running) { desc->irq_data.chip->irq_mask_ack(); desc->status |= pending | masked; return; } desc->irq_data.chip->irq_ack(); desc->status |= running; do { if (desc->status & masked) desc->irq_data.chip->irq_unmask(); desc->status &= ~pending; handle_irq_event(desc->action); } while (desc->status & pending); desc->status &= ~running;h]hXif (desc->status & running) { desc->irq_data.chip->irq_mask_ack(); desc->status |= pending | masked; return; } desc->irq_data.chip->irq_ack(); desc->status |= running; do { if (desc->status & masked) desc->irq_data.chip->irq_unmask(); desc->status &= ~pending; handle_irq_event(desc->action); } while (desc->status & pending); desc->status &= ~running;}hj sbah}(h]h ]h"]h$]h&]hhuh1j hjMhKhj hhubeh}(h]default-edge-irq-flow-handlerah ]h"]default edge irq flow handlerah$]h&]uh1j8hj hhhjMhKubj9)}(hhh](j>)}(hDefault simple IRQ flow handlerh]hDefault simple IRQ flow handler}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j=hj hhhjMhMubjo)}(hJhandle_simple_irq provides a generic implementation for simple interrupts.h]hJhandle_simple_irq provides a generic implementation for simple interrupts.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhMhj hhubhnote)}(hBThe simple flow handler does not call any handler/chip primitives.h]jo)}(hj h]hBThe simple flow handler does not call any handler/chip primitives.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhMhj ubah}(h]h ]h"]h$]h&]uh1j hj hhhjMhNubjo)}(h@The following control flow is implemented (simplified excerpt)::h]h?The following control flow is implemented (simplified excerpt):}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhMhj hhubj )}(hhandle_irq_event(desc->action);h]hhandle_irq_event(desc->action);}hj sbah}(h]h ]h"]h$]h&]hhuh1j hjMhMhj hhubeh}(h]default-simple-irq-flow-handlerah ]h"]default simple irq flow handlerah$]h&]uh1j8hj hhhjMhMubj9)}(hhh](j>)}(hDefault per CPU flow handlerh]hDefault per CPU flow handler}(hj) hhhNhNubah}(h]h ]h"]h$]h&]uh1j=hj& hhhjMhMubjo)}(hKhandle_percpu_irq provides a generic implementation for per CPU interrupts.h]hKhandle_percpu_irq provides a generic implementation for per CPU interrupts.}(hj7 hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhM!hj& hhubjo)}(hkPer CPU interrupts are only available on SMP and the handler provides a simplified version without locking.h]hkPer CPU interrupts are only available on SMP and the handler provides a simplified version without locking.}(hjE hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhM$hj& hhubjo)}(h@The following control flow is implemented (simplified excerpt)::h]h?The following control flow is implemented (simplified excerpt):}(hjS hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhM'hj& hhubj )}(hif (desc->irq_data.chip->irq_ack) desc->irq_data.chip->irq_ack(); handle_irq_event(desc->action); if (desc->irq_data.chip->irq_eoi) desc->irq_data.chip->irq_eoi();h]hif (desc->irq_data.chip->irq_ack) desc->irq_data.chip->irq_ack(); handle_irq_event(desc->action); if (desc->irq_data.chip->irq_eoi) desc->irq_data.chip->irq_eoi();}hja sbah}(h]h ]h"]h$]h&]hhuh1j hjMhM)hj& hhubeh}(h]default-per-cpu-flow-handlerah ]h"]default per cpu flow handlerah$]h&]uh1j8hj hhhjMhMubj9)}(hhh](j>)}(hEOI Edge IRQ flow handlerh]hEOI Edge IRQ flow handler}(hjz hhhNhNubah}(h]h ]h"]h$]h&]uh1j=hjw hhhjMhM1ubjo)}(hhandle_edge_eoi_irq provides an abnomination of the edge handler which is solely used to tame a badly wreckaged irq controller on powerpc/cell.h]hhandle_edge_eoi_irq provides an abnomination of the edge handler which is solely used to tame a badly wreckaged irq controller on powerpc/cell.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhM3hjw hhubeh}(h]eoi-edge-irq-flow-handlerah ]h"]eoi edge irq flow handlerah$]h&]uh1j8hj hhhjMhM1ubj9)}(hhh](j>)}(hBad IRQ flow handlerh]hBad IRQ flow handler}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j=hj hhhjMhM8ubjo)}(hThandle_bad_irq is used for spurious interrupts which have no real handler assigned..h]hThandle_bad_irq is used for spurious interrupts which have no real handler assigned..}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhM:hj hhubeh}(h]bad-irq-flow-handlerah ]h"]bad irq flow handlerah$]h&]uh1j8hj hhhjMhM8ubeh}(h]$default-flow-handler-implementationsah ]h"]$default flow handler implementationsah$]h&]uh1j8hj hhhjMhKubj9)}(hhh](j>)}(hQuirks and optimizationsh]hQuirks and optimizations}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j=hj hhhjMhM>ubjo)}(hThe generic functions are intended for 'clean' architectures and chips, which have no platform-specific IRQ handling quirks. If an architecture needs to implement quirks on the 'flow' level then it can do so by overriding the high-level irq-flow handler.h]hXThe generic functions are intended for ‘clean’ architectures and chips, which have no platform-specific IRQ handling quirks. If an architecture needs to implement quirks on the ‘flow’ level then it can do so by overriding the high-level irq-flow handler.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhM@hj hhubeh}(h]quirks-and-optimizationsah ]h"]quirks and optimizationsah$]h&]uh1j8hj hhhjMhM>ubj9)}(hhh](j>)}(hDelayed interrupt disableh]hDelayed interrupt disable}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j=hj hhhjMhMFubjo)}(hXThis per interrupt selectable feature, which was introduced by Russell King in the ARM interrupt implementation, does not mask an interrupt at the hardware level when disable_irq() is called. The interrupt is kept enabled and is masked in the flow handler when an interrupt event happens. This prevents losing edge interrupts on hardware which does not store an edge interrupt event while the interrupt is disabled at the hardware level. When an interrupt arrives while the IRQ_DISABLED flag is set, then the interrupt is masked at the hardware level and the IRQ_PENDING bit is set. When the interrupt is re-enabled by enable_irq() the pending bit is checked and if it is set, the interrupt is resent either via hardware or by a software resend mechanism. (It's necessary to enable CONFIG_HARDIRQS_SW_RESEND when you want to use the delayed interrupt disable feature and your hardware is not capable of retriggering an interrupt.) The delayed interrupt disable is not configurable.h]hXThis per interrupt selectable feature, which was introduced by Russell King in the ARM interrupt implementation, does not mask an interrupt at the hardware level when disable_irq() is called. The interrupt is kept enabled and is masked in the flow handler when an interrupt event happens. This prevents losing edge interrupts on hardware which does not store an edge interrupt event while the interrupt is disabled at the hardware level. When an interrupt arrives while the IRQ_DISABLED flag is set, then the interrupt is masked at the hardware level and the IRQ_PENDING bit is set. When the interrupt is re-enabled by enable_irq() the pending bit is checked and if it is set, the interrupt is resent either via hardware or by a software resend mechanism. (It’s necessary to enable CONFIG_HARDIRQS_SW_RESEND when you want to use the delayed interrupt disable feature and your hardware is not capable of retriggering an interrupt.) The delayed interrupt disable is not configurable.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhMHhj hhubeh}(h]delayed-interrupt-disableah ]h"]delayed interrupt disableah$]h&]uh1j8hj hhhjMhMFubeh}(h]high-level-irq-flow-handlersah ]h"]high-level irq flow handlersah$]h&]uh1j8hjhhhjMhKubj9)}(hhh](j>)}(h!Chip-level hardware encapsulationh]h!Chip-level hardware encapsulation}(hj& hhhNhNubah}(h]h ]h"]h$]h&]uh1j=hj# hhhjMhMYubjo)}(hThe chip-level hardware descriptor structure :c:type:`irq_chip` contains all the direct chip relevant functions, which can be utilized by the irq flow implementations.h](h-The chip-level hardware descriptor structure }(hj4 hhhNhNubh)}(h:c:type:`irq_chip`h]j)}(hj> h]hirq_chip}(hj@ hhhNhNubah}(h]h ](xrefcc-typeeh"]h$]h&]uh1jhj< ubah}(h]h ]h"]h$]h&]refdoccore-api/genericirq refdomainjK reftypetype refexplicitrefwarn reftargetirq_chipuh1hhjMhM[hj4 ubhh contains all the direct chip relevant functions, which can be utilized by the irq flow implementations.}(hj4 hhhNhNubeh}(h]h ]h"]h$]h&]uh1jnhjMhM[hj# hhubj))}(hhh](j.)}(h ``irq_ack`` h]jo)}(h ``irq_ack``h]j)}(hjr h]hirq_ack}(hjt hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjp ubah}(h]h ]h"]h$]h&]uh1jnhjMhM_hjl ubah}(h]h ]h"]h$]h&]uh1j-hji hhhjMhNubj.)}(h9``irq_mask_ack`` - Optional, recommended for performance h]jo)}(h8``irq_mask_ack`` - Optional, recommended for performanceh](j)}(h``irq_mask_ack``h]h irq_mask_ack}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh( - Optional, recommended for performance}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jnhjMhMahj ubah}(h]h ]h"]h$]h&]uh1j-hji hhhjMhNubj.)}(h ``irq_mask`` h]jo)}(h ``irq_mask``h]j)}(hj h]hirq_mask}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jnhjMhMchj ubah}(h]h ]h"]h$]h&]uh1j-hji hhhjMhNubj.)}(h``irq_unmask`` h]jo)}(h``irq_unmask``h]j)}(hj h]h irq_unmask}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jnhjMhMehj ubah}(h]h ]h"]h$]h&]uh1j-hji hhhjMhNubj.)}(h7``irq_eoi`` - Optional, required for EOI flow handlers h]jo)}(h6``irq_eoi`` - Optional, required for EOI flow handlersh](j)}(h ``irq_eoi``h]hirq_eoi}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh+ - Optional, required for EOI flow handlers}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jnhjMhMghj ubah}(h]h ]h"]h$]h&]uh1j-hji hhhjMhNubj.)}(h``irq_retrigger`` - Optional h]jo)}(h``irq_retrigger`` - Optionalh](j)}(h``irq_retrigger``h]h irq_retrigger}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh - Optional}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jnhjMhMihjubah}(h]h ]h"]h$]h&]uh1j-hji hhhjMhNubj.)}(h``irq_set_type`` - Optional h]jo)}(h``irq_set_type`` - Optionalh](j)}(h``irq_set_type``h]h irq_set_type}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubh - Optional}(hjEhhhNhNubeh}(h]h ]h"]h$]h&]uh1jnhjMhMkhjAubah}(h]h ]h"]h$]h&]uh1j-hji hhhjMhNubj.)}(h``irq_set_wake`` - Optional h]jo)}(h``irq_set_wake`` - Optionalh](j)}(h``irq_set_wake``h]h irq_set_wake}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjkubh - Optional}(hjkhhhNhNubeh}(h]h ]h"]h$]h&]uh1jnhjMhMmhjgubah}(h]h ]h"]h$]h&]uh1j-hji hhhjMhNubeh}(h]h ]h"]h$]h&]j}j~uh1j(hjMhM_hj# hhubjo)}(hThese primitives are strictly intended to mean what they say: ack means ACK, masking means masking of an IRQ line, etc. It is up to the flow handler(s) to use these basic units of low-level functionality.h]hThese primitives are strictly intended to mean what they say: ack means ACK, masking means masking of an IRQ line, etc. It is up to the flow handler(s) to use these basic units of low-level functionality.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhMohj# hhubeh}(h]!chip-level-hardware-encapsulationah ]h"]!chip-level hardware encapsulationah$]h&]uh1j8hjhhhjMhMYubeh}(h]abstraction-layersah ]h"]abstraction layersah$]h&]uh1j8hj:hhhjMhKbubj9)}(hhh](j>)}(h__do_IRQ entry pointh]h__do_IRQ entry point}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j=hjhhhjMhMtubjo)}(hwThe original implementation __do_IRQ() was an alternative entry point for all types of interrupts. It no longer exists.h]hwThe original implementation __do_IRQ() was an alternative entry point for all types of interrupts. It no longer exists.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhMvhjhhubjo)}(hThis handler turned out to be not suitable for all interrupt hardware and was therefore reimplemented with split functionality for edge/level/simple/percpu interrupts. This is not only a functional optimization. It also shortens code paths for interrupts.h]hThis handler turned out to be not suitable for all interrupt hardware and was therefore reimplemented with split functionality for edge/level/simple/percpu interrupts. This is not only a functional optimization. It also shortens code paths for interrupts.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhMyhjhhubeh}(h]do-irq-entry-pointah ]h"]__do_irq entry pointah$]h&]uh1j8hj:hhhjMhMtubj9)}(hhh](j>)}(hLocking on SMPh]hLocking on SMP}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j=hjhhhjMhMubjo)}(hThe locking of chip registers is up to the architecture that defines the chip primitives. The per-irq structure is protected via desc->lock, by the generic layer.h]hThe locking of chip registers is up to the architecture that defines the chip primitives. The per-irq structure is protected via desc->lock, by the generic layer.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhMhjhhubeh}(h]locking-on-smpah ]h"]locking on smpah$]h&]uh1j8hj:hhhjMhMubj9)}(hhh](j>)}(hGeneric interrupt chiph]hGeneric interrupt chip}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j=hj hhhjMhMubjo)}(hXTo avoid copies of identical implementations of IRQ chips the core provides a configurable generic interrupt chip implementation. Developers should check carefully whether the generic chip fits their needs before implementing the same functionality slightly differently themselves.h]hXTo avoid copies of identical implementations of IRQ chips the core provides a configurable generic interrupt chip implementation. Developers should check carefully whether the generic chip fits their needs before implementing the same functionality slightly differently themselves.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhMhj hhubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](singleirq_gc_noop (C function) c.irq_gc_noophNtauh1j,hj hhhNhNubhdesc)}(hhh](hdesc_signature)}(h%void irq_gc_noop (struct irq_data *d)h]hdesc_signature_line)}(h$void irq_gc_noop(struct irq_data *d)h](hdesc_sig_keyword_type)}(hvoidh]hvoid}(hjPhhhNhNubah}(h]h ]ktah"]h$]h&]uh1jNhjJhhh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKubhdesc_sig_space)}(h h]h }(hjbhhhNhNubah}(h]h ]wah"]h$]h&]uh1j`hjJhhhj_hKubh desc_name)}(h irq_gc_nooph]h desc_sig_name)}(h irq_gc_nooph]h irq_gc_noop}(hjyhhhNhNubah}(h]h ]nah"]h$]h&]uh1jwhjsubah}(h]h ](sig-namedescnameeh"]h$]h&]hhuh1jqhjJhhhj_hKubhdesc_parameterlist)}(h(struct irq_data *d)h]hdesc_parameter)}(hstruct irq_data *dh](hdesc_sig_keyword)}(hstructh]hstruct}(hjhhhNhNubah}(h]h ]kah"]h$]h&]uh1jhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubh)}(hhh]jx)}(hirq_datah]hirq_data}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ]h"]h$]h&] refdomainjK reftype identifier reftargetjmodnameN classnameN c:parent_keysphinx.domains.c LookupKey)}data]j ASTIdentifier)}jj{sb c.irq_gc_noopasbuh1hhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubhdesc_sig_punctuation)}(h*h]h*}(hjhhhNhNubah}(h]h ]pah"]h$]h&]uh1jhjubjx)}(hdh]hd}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjJhhhj_hKubeh}(h]h ]h"]h$]h&]hh add_permalinkuh1jHsphinx_line_type declaratorhjDhhhj_hKubah}(h]j;ah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1jBhj_hKhj?hhubh desc_content)}(hhh]jo)}(h NOOP functionh]h NOOP function}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKhj6hhubah}(h]h ]h"]h$]h&]uh1j4hj?hhhj_hKubeh}(h]h ](jK functioneh"]h$]h&]domainjK objtypejQdesctypejQnoindex noindexentrynocontentsentryuh1j=hhhj hNhNubh container)}(h1**Parameters** ``struct irq_data *d`` irq_datah](jo)}(h**Parameters**h]hstrong)}(hjch]h Parameters}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jehjaubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKhj]ubhdefinition_list)}(hhh]hdefinition_list_item)}(h``struct irq_data *d`` irq_datah](hterm)}(h``struct irq_data *d``h]j)}(hjh]hstruct irq_data *d}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKhjubh definition)}(hhh]jo)}(hirq_datah]hirq_data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhj}ubah}(h]h ]h"]h$]h&]uh1j{hj]ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9$irq_gc_mask_disable_reg (C function)c.irq_gc_mask_disable_reghNtauh1j,hj hhhNhNubj>)}(hhh](jC)}(h1void irq_gc_mask_disable_reg (struct irq_data *d)h]jI)}(h0void irq_gc_mask_disable_reg(struct irq_data *d)h](jO)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhKubjr)}(hirq_gc_mask_disable_regh]jx)}(hirq_gc_mask_disable_regh]hirq_gc_mask_disable_reg}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhKubj)}(h(struct irq_data *d)h]j)}(hstruct irq_data *dh](j)}(hjh]hstruct}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubja)}(h h]h }(hj0hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubh)}(hhh]jx)}(hirq_datah]hirq_data}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj>ubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjCmodnameN classnameNjj)}j]j)}jj sbc.irq_gc_mask_disable_regasbuh1hhjubja)}(h h]h }(hjahhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hjohhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hjh]hd}(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhKubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhKhjhhubj5)}(hhh]jo)}(hMask chip via disable registerh]hMask chip via disable register}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKhjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhKubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhj hNhNubj\)}(h**Parameters** ``struct irq_data *d`` irq_data **Description** Chip has separate enable/disable registers instead of a single mask register.h](jo)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chK#hjubj|)}(hhh]j)}(h ``struct irq_data *d`` irq_data h](j)}(h``struct irq_data *d``h]j)}(hjh]hstruct irq_data *d}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chK hjubj)}(hhh]jo)}(hirq_datah]hirq_data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhK hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK hjubah}(h]h ]h"]h$]h&]uh1j{hjubjo)}(h**Description**h]jf)}(hj!h]h Description}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chK"hjubjo)}(hMChip has separate enable/disable registers instead of a single mask register.h]hMChip has separate enable/disable registers instead of a single mask register.}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chK"hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9 irq_gc_mask_set_bit (C function)c.irq_gc_mask_set_bithNtauh1j,hj hhhNhNubj>)}(hhh](jC)}(h-void irq_gc_mask_set_bit (struct irq_data *d)h]jI)}(h,void irq_gc_mask_set_bit(struct irq_data *d)h](jO)}(hvoidh]hvoid}(hjfhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjbhhh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chK2ubja)}(h h]h }(hjuhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjbhhhjthK2ubjr)}(hirq_gc_mask_set_bith]jx)}(hirq_gc_mask_set_bith]hirq_gc_mask_set_bit}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjbhhhjthK2ubj)}(h(struct irq_data *d)h]j)}(hstruct irq_data *dh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubh)}(hhh]jx)}(hirq_datah]hirq_data}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.irq_gc_mask_set_bitasbuh1hhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hjh]hd}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjbhhhjthK2ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj^hhhjthK2ubah}(h]jYah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjthK2hj[hhubj5)}(hhh]jo)}(h*Mask chip via setting bit in mask registerh]h*Mask chip via setting bit in mask register}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chK2hj"hhubah}(h]h ]h"]h$]h&]uh1j4hj[hhhjthK2ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj=jWj=jXjYjZuh1j=hhhj hNhNubj\)}(h**Parameters** ``struct irq_data *d`` irq_data **Description** Chip has a single mask register. Values of this register are cached and protected by gc->lockh](jo)}(h**Parameters**h]jf)}(hjGh]h Parameters}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjEubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chK6hjAubj|)}(hhh]j)}(h ``struct irq_data *d`` irq_data h](j)}(h``struct irq_data *d``h]j)}(hjfh]hstruct irq_data *d}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chK3hj`ubj)}(hhh]jo)}(hirq_datah]hirq_data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj{hK3hj|ubah}(h]h ]h"]h$]h&]uh1jhj`ubeh}(h]h ]h"]h$]h&]uh1jhj{hK3hj]ubah}(h]h ]h"]h$]h&]uh1j{hjAubjo)}(h**Description**h]jf)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chK5hjAubjo)}(h]Chip has a single mask register. Values of this register are cached and protected by gc->lockh]h]Chip has a single mask register. Values of this register are cached and protected by gc->lock}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chK5hjAubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9 irq_gc_mask_clr_bit (C function)c.irq_gc_mask_clr_bithNtauh1j,hj hhhNhNubj>)}(hhh](jC)}(h-void irq_gc_mask_clr_bit (struct irq_data *d)h]jI)}(h,void irq_gc_mask_clr_bit(struct irq_data *d)h](jO)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKEubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhKEubjr)}(hirq_gc_mask_clr_bith]jx)}(hirq_gc_mask_clr_bith]hirq_gc_mask_clr_bit}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhKEubj)}(h(struct irq_data *d)h]j)}(hstruct irq_data *dh](j)}(hjh]hstruct}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubja)}(h h]h }(hj0hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubh)}(hhh]jx)}(hirq_datah]hirq_data}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj>ubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjCmodnameN classnameNjj)}j]j)}jj sbc.irq_gc_mask_clr_bitasbuh1hhjubja)}(h h]h }(hjahhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hjohhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hjh]hd}(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKEubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhKEubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhKEhjhhubj5)}(hhh]jo)}(h+Mask chip via clearing bit in mask registerh]h+Mask chip via clearing bit in mask register}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKEhjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhKEubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhj hNhNubj\)}(h**Parameters** ``struct irq_data *d`` irq_data **Description** Chip has a single mask register. Values of this register are cached and protected by gc->lockh](jo)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKIhjubj|)}(hhh]j)}(h ``struct irq_data *d`` irq_data h](j)}(h``struct irq_data *d``h]j)}(hjh]hstruct irq_data *d}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKFhjubj)}(hhh]jo)}(hirq_datah]hirq_data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhKFhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKFhjubah}(h]h ]h"]h$]h&]uh1j{hjubjo)}(h**Description**h]jf)}(hj!h]h Description}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKHhjubjo)}(h]Chip has a single mask register. Values of this register are cached and protected by gc->lockh]h]Chip has a single mask register. Values of this register are cached and protected by gc->lock}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKHhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9%irq_gc_unmask_enable_reg (C function)c.irq_gc_unmask_enable_reghNtauh1j,hj hhhNhNubj>)}(hhh](jC)}(h2void irq_gc_unmask_enable_reg (struct irq_data *d)h]jI)}(h1void irq_gc_unmask_enable_reg(struct irq_data *d)h](jO)}(hvoidh]hvoid}(hjfhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjbhhh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKXubja)}(h h]h }(hjuhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjbhhhjthKXubjr)}(hirq_gc_unmask_enable_regh]jx)}(hirq_gc_unmask_enable_regh]hirq_gc_unmask_enable_reg}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjbhhhjthKXubj)}(h(struct irq_data *d)h]j)}(hstruct irq_data *dh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubh)}(hhh]jx)}(hirq_datah]hirq_data}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.irq_gc_unmask_enable_regasbuh1hhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hjh]hd}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjbhhhjthKXubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj^hhhjthKXubah}(h]jYah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjthKXhj[hhubj5)}(hhh]jo)}(hUnmask chip via enable registerh]hUnmask chip via enable register}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKXhj"hhubah}(h]h ]h"]h$]h&]uh1j4hj[hhhjthKXubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj=jWj=jXjYjZuh1j=hhhj hNhNubj\)}(h**Parameters** ``struct irq_data *d`` irq_data **Description** Chip has separate enable/disable registers instead of a single mask register.h](jo)}(h**Parameters**h]jf)}(hjGh]h Parameters}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjEubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chK\hjAubj|)}(hhh]j)}(h ``struct irq_data *d`` irq_data h](j)}(h``struct irq_data *d``h]j)}(hjfh]hstruct irq_data *d}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKYhj`ubj)}(hhh]jo)}(hirq_datah]hirq_data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj{hKYhj|ubah}(h]h ]h"]h$]h&]uh1jhj`ubeh}(h]h ]h"]h$]h&]uh1jhj{hKYhj]ubah}(h]h ]h"]h$]h&]uh1j{hjAubjo)}(h**Description**h]jf)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chK[hjAubjo)}(hMChip has separate enable/disable registers instead of a single mask register.h]hMChip has separate enable/disable registers instead of a single mask register.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chK[hjAubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_gc_ack_set_bit (C function)c.irq_gc_ack_set_bithNtauh1j,hj hhhNhNubj>)}(hhh](jC)}(h,void irq_gc_ack_set_bit (struct irq_data *d)h]jI)}(h+void irq_gc_ack_set_bit(struct irq_data *d)h](jO)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKkubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhKkubjr)}(hirq_gc_ack_set_bith]jx)}(hirq_gc_ack_set_bith]hirq_gc_ack_set_bit}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhKkubj)}(h(struct irq_data *d)h]j)}(hstruct irq_data *dh](j)}(hjh]hstruct}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubja)}(h h]h }(hj0hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubh)}(hhh]jx)}(hirq_datah]hirq_data}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj>ubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjCmodnameN classnameNjj)}j]j)}jj sbc.irq_gc_ack_set_bitasbuh1hhjubja)}(h h]h }(hjahhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hjohhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hjh]hd}(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKkubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhKkubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhKkhjhhubj5)}(hhh]jo)}(h%Ack pending interrupt via setting bith]h%Ack pending interrupt via setting bit}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKkhjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhKkubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhj hNhNubj\)}(h1**Parameters** ``struct irq_data *d`` irq_datah](jo)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKohjubj|)}(hhh]j)}(h``struct irq_data *d`` irq_datah](j)}(h``struct irq_data *d``h]j)}(hjh]hstruct irq_data *d}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKqhjubj)}(hhh]jo)}(hirq_datah]hirq_data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKlhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKqhjubah}(h]h ]h"]h$]h&]uh1j{hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9,irq_gc_mask_disable_and_ack_set (C function)!c.irq_gc_mask_disable_and_ack_sethNtauh1j,hj hhhNhNubj>)}(hhh](jC)}(h9void irq_gc_mask_disable_and_ack_set (struct irq_data *d)h]jI)}(h8void irq_gc_mask_disable_and_ack_set(struct irq_data *d)h](jO)}(hvoidh]hvoid}(hj@hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj<hhh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKubja)}(h h]h }(hjOhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj<hhhjNhKubjr)}(hirq_gc_mask_disable_and_ack_seth]jx)}(hirq_gc_mask_disable_and_ack_seth]hirq_gc_mask_disable_and_ack_set}(hjahhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj]ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhj<hhhjNhKubj)}(h(struct irq_data *d)h]j)}(hstruct irq_data *dh](j)}(hjh]hstruct}(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjyubh)}(hhh]jx)}(hirq_datah]hirq_data}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjmodnameN classnameNjj)}j]j)}jjcsb!c.irq_gc_mask_disable_and_ack_setasbuh1hhjyubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjyubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyubjx)}(hjh]hd}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjyubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjuubah}(h]h ]h"]h$]h&]hhuh1jhj<hhhjNhKubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj8hhhjNhKubah}(h]j3ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjNhKhj5hhubj5)}(hhh]jo)}(hMask and ack pending interrupth]hMask and ack pending interrupt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKhjhhubah}(h]h ]h"]h$]h&]uh1j4hj5hhhjNhKubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhj hNhNubj\)}(hX**Parameters** ``struct irq_data *d`` irq_data **Description** This generic implementation of the irq_mask_ack method is for chips with separate enable/disable registers instead of a single mask register and where a pending interrupt is acknowledged by setting a bit. **Note** This is the only permutation currently used. Similar generic functions should be added here if other permutations are required.h](jo)}(h**Parameters**h]jf)}(hj!h]h Parameters}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKhjubj|)}(hhh]j)}(h ``struct irq_data *d`` irq_data h](j)}(h``struct irq_data *d``h]j)}(hj@h]hstruct irq_data *d}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKhj:ubj)}(hhh]jo)}(hirq_datah]hirq_data}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjUhKhjVubah}(h]h ]h"]h$]h&]uh1jhj:ubeh}(h]h ]h"]h$]h&]uh1jhjUhKhj7ubah}(h]h ]h"]h$]h&]uh1j{hjubjo)}(h**Description**h]jf)}(hj{h]h Description}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jehjyubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKhjubjo)}(hThis generic implementation of the irq_mask_ack method is for chips with separate enable/disable registers instead of a single mask register and where a pending interrupt is acknowledged by setting a bit.h]hThis generic implementation of the irq_mask_ack method is for chips with separate enable/disable registers instead of a single mask register and where a pending interrupt is acknowledged by setting a bit.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKhjubjo)}(h**Note**h]jf)}(hjh]hNote}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKhjubjo)}(hThis is the only permutation currently used. Similar generic functions should be added here if other permutations are required.h]hThis is the only permutation currently used. Similar generic functions should be added here if other permutations are required.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_gc_set_wake (C function)c.irq_gc_set_wakehNtauh1j,hj hhhNhNubj>)}(hhh](jC)}(h9int irq_gc_set_wake (struct irq_data *d, unsigned int on)h]jI)}(h8int irq_gc_set_wake(struct irq_data *d, unsigned int on)h](jO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhKubjr)}(hirq_gc_set_wakeh]jx)}(hirq_gc_set_wakeh]hirq_gc_set_wake}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhKubj)}(h%(struct irq_data *d, unsigned int on)h](j)}(hstruct irq_data *dh](j)}(hjh]hstruct}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubja)}(h h]h }(hj1hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj ubh)}(hhh]jx)}(hirq_datah]hirq_data}(hjBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj?ubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjDmodnameN classnameNjj)}j]j)}jj sbc.irq_gc_set_wakeasbuh1hhj ubja)}(h h]h }(hjbhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj ubj)}(hjh]h*}(hjphhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubjx)}(hjh]hd}(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hunsigned int onh](jO)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(honh]hon}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhKubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhKhjhhubj5)}(hhh]jo)}(h!Set/clr wake bit for an interrupth]h!Set/clr wake bit for an interrupt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKhjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhKubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhj hNhNubj\)}(hX(**Parameters** ``struct irq_data *d`` irq_data ``unsigned int on`` Indicates whether the wake bit should be set or cleared **Description** For chips where the wake from suspend functionality is not configured in a separate register and the wakeup active state is just stored in a bitmask.h](jo)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKhjubj|)}(hhh](j)}(h ``struct irq_data *d`` irq_data h](j)}(h``struct irq_data *d``h]j)}(hj8h]hstruct irq_data *d}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKhj2ubj)}(hhh]jo)}(hirq_datah]hirq_data}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhKhjNubah}(h]h ]h"]h$]h&]uh1jhj2ubeh}(h]h ]h"]h$]h&]uh1jhjMhKhj/ubj)}(hL``unsigned int on`` Indicates whether the wake bit should be set or cleared h](j)}(h``unsigned int on``h]j)}(hjqh]hunsigned int on}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKhjkubj)}(hhh]jo)}(h7Indicates whether the wake bit should be set or clearedh]h7Indicates whether the wake bit should be set or cleared}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjkubeh}(h]h ]h"]h$]h&]uh1jhjhKhj/ubeh}(h]h ]h"]h$]h&]uh1j{hjubjo)}(h**Description**h]jf)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKhjubjo)}(hFor chips where the wake from suspend functionality is not configured in a separate register and the wakeup active state is just stored in a bitmask.h]hFor chips where the wake from suspend functionality is not configured in a separate register and the wakeup active state is just stored in a bitmask.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9#irq_alloc_generic_chip (C function)c.irq_alloc_generic_chiphNtauh1j,hj hhhNhNubj>)}(hhh](jC)}(hstruct irq_chip_generic * irq_alloc_generic_chip (const char *name, int num_ct, unsigned int irq_base, void __iomem *reg_base, irq_flow_handler_t handler)h]jI)}(hstruct irq_chip_generic *irq_alloc_generic_chip(const char *name, int num_ct, unsigned int irq_base, void __iomem *reg_base, irq_flow_handler_t handler)h](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhKubh)}(hhh]jx)}(hirq_chip_generich]hirq_chip_generic}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj ubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjmodnameN classnameNjj)}j]j)}jirq_alloc_generic_chipsbc.irq_alloc_generic_chipasbuh1hhjhhhjhKubja)}(h h]h }(hj1hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhKubj)}(hjh]h*}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKubjr)}(hirq_alloc_generic_chiph]jx)}(hj.h]hirq_alloc_generic_chip}(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjLubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhKubj)}(hi(const char *name, int num_ct, unsigned int irq_base, void __iomem *reg_base, irq_flow_handler_t handler)h](j)}(hconst char *nameh](j)}(hconsth]hconst}(hjkhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjgubja)}(h h]h }(hjyhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjgubjO)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjgubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjgubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjgubjx)}(hnameh]hname}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjgubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjcubj)}(h int num_cth](jO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hnum_cth]hnum_ct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjcubj)}(hunsigned int irq_baseh](jO)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hj hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hj(hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hirq_baseh]hirq_base}(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjcubj)}(hvoid __iomem *reg_baseh](jO)}(hvoidh]hvoid}(hjOhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjKubja)}(h h]h }(hj]hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjKubh__iomem}(hjKhhhNhNubja)}(h h]h }(hjohhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjKubj)}(hjh]h*}(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjKubjx)}(hreg_baseh]hreg_base}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjKubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjcubj)}(hirq_flow_handler_t handlerh](h)}(hhh]jx)}(hirq_flow_handler_th]hirq_flow_handler_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjmodnameN classnameNjj)}j]j,c.irq_alloc_generic_chipasbuh1hhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hhandlerh]hhandler}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjcubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhKubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhKhjhhubj5)}(hhh]jo)}(h)Allocate a generic chip and initialize ith]h)Allocate a generic chip and initialize it}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKhjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhKubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhj hNhNubj\)}(hX**Parameters** ``const char *name`` Name of the irq chip ``int num_ct`` Number of irq_chip_type instances associated with this ``unsigned int irq_base`` Interrupt base nr for this chip ``void __iomem *reg_base`` Register base address (virtual) ``irq_flow_handler_t handler`` Default flow handler associated with this chip **Description** Returns an initialized irq_chip_generic structure. The chip defaults to the primary (index 0) irq_chip_type and **handler**h](jo)}(h**Parameters**h]jf)}(hjh]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKhjubj|)}(hhh](j)}(h*``const char *name`` Name of the irq chip h](j)}(h``const char *name``h]j)}(hj=h]hconst char *name}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKhj7ubj)}(hhh]jo)}(hName of the irq chiph]hName of the irq chip}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjRhKhjSubah}(h]h ]h"]h$]h&]uh1jhj7ubeh}(h]h ]h"]h$]h&]uh1jhjRhKhj4ubj)}(hF``int num_ct`` Number of irq_chip_type instances associated with this h](j)}(h``int num_ct``h]j)}(hjvh]h int num_ct}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKhjpubj)}(hhh]jo)}(h6Number of irq_chip_type instances associated with thish]h6Number of irq_chip_type instances associated with this}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjpubeh}(h]h ]h"]h$]h&]uh1jhjhKhj4ubj)}(h:``unsigned int irq_base`` Interrupt base nr for this chip h](j)}(h``unsigned int irq_base``h]j)}(hjh]hunsigned int irq_base}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKhjubj)}(hhh]jo)}(hInterrupt base nr for this chiph]hInterrupt base nr for this chip}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhj4ubj)}(h;``void __iomem *reg_base`` Register base address (virtual) h](j)}(h``void __iomem *reg_base``h]j)}(hjh]hvoid __iomem *reg_base}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKhjubj)}(hhh]jo)}(hRegister base address (virtual)h]hRegister base address (virtual)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhj4ubj)}(hN``irq_flow_handler_t handler`` Default flow handler associated with this chip h](j)}(h``irq_flow_handler_t handler``h]j)}(hj!h]hirq_flow_handler_t handler}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKhjubj)}(hhh]jo)}(h.Default flow handler associated with this chiph]h.Default flow handler associated with this chip}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj6hKhj7ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj6hKhj4ubeh}(h]h ]h"]h$]h&]uh1j{hjubjo)}(h**Description**h]jf)}(hj\h]h Description}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jehjZubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKhjubjo)}(h{Returns an initialized irq_chip_generic structure. The chip defaults to the primary (index 0) irq_chip_type and **handler**h](hpReturns an initialized irq_chip_generic structure. The chip defaults to the primary (index 0) irq_chip_type and }(hjrhhhNhNubjf)}(h **handler**h]hhandler}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjrubeh}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9+irq_domain_alloc_generic_chips (C function) c.irq_domain_alloc_generic_chipshNtauh1j,hj hhhNhNubj>)}(hhh](jC)}(hjint irq_domain_alloc_generic_chips (struct irq_domain *d, const struct irq_domain_chip_generic_info *info)h]jI)}(hiint irq_domain_alloc_generic_chips(struct irq_domain *d, const struct irq_domain_chip_generic_info *info)h](jO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chMubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhMubjr)}(hirq_domain_alloc_generic_chipsh]jx)}(hirq_domain_alloc_generic_chipsh]hirq_domain_alloc_generic_chips}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhMubj)}(hG(struct irq_domain *d, const struct irq_domain_chip_generic_info *info)h](j)}(hstruct irq_domain *dh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubh)}(hhh]jx)}(h irq_domainh]h irq_domain}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj ubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetj modnameN classnameNjj)}j]j)}jjsb c.irq_domain_alloc_generic_chipsasbuh1hhjubja)}(h h]h }(hj* hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hj8 hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hjh]hd}(hjE hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h/const struct irq_domain_chip_generic_info *infoh](j)}(hjmh]hconst}(hj] hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjY ubja)}(h h]h }(hjj hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjY ubj)}(hjh]hstruct}(hjx hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjY ubja)}(h h]h }(hj hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjY ubh)}(hhh]jx)}(hirq_domain_chip_generic_infoh]hirq_domain_chip_generic_info}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj ubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetj modnameN classnameNjj)}j]j& c.irq_domain_alloc_generic_chipsasbuh1hhjY ubja)}(h h]h }(hj hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjY ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjY ubjx)}(hinfoh]hinfo}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjY ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhMubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhMhjhhubj5)}(hhh]jo)}(h(Allocate generic chips for an irq domainh]h(Allocate generic chips for an irq domain}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chMhj hhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj!jWj!jXjYjZuh1j=hhhj hNhNubj\)}(h**Parameters** ``struct irq_domain *d`` irq domain for which to allocate chips ``const struct irq_domain_chip_generic_info *info`` Generic chip information **Return** 0 on success, negative error code on failureh](jo)}(h**Parameters**h]jf)}(hj!h]h Parameters}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj!ubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chMhj!ubj|)}(hhh](j)}(h@``struct irq_domain *d`` irq domain for which to allocate chips h](j)}(h``struct irq_domain *d``h]j)}(hj:!h]hstruct irq_domain *d}(hj)}(hhh](jC)}(h;void irq_domain_remove_generic_chips (struct irq_domain *d)h]jI)}(h:void irq_domain_remove_generic_chips(struct irq_domain *d)h](jO)}(hvoidh]hvoid}(hj!hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj!hhh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chMaubja)}(h h]h }(hj"hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj!hhhj"hMaubjr)}(hirq_domain_remove_generic_chipsh]jx)}(hirq_domain_remove_generic_chipsh]hirq_domain_remove_generic_chips}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj"ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhj!hhhj"hMaubj)}(h(struct irq_domain *d)h]j)}(hstruct irq_domain *dh](j)}(hjh]hstruct}(hj0"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,"ubja)}(h h]h }(hj="hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj,"ubh)}(hhh]jx)}(h irq_domainh]h irq_domain}(hjN"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjK"ubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjP"modnameN classnameNjj)}j]j)}jj"sb!c.irq_domain_remove_generic_chipsasbuh1hhj,"ubja)}(h h]h }(hjn"hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj,"ubj)}(hjh]h*}(hj|"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,"ubjx)}(hjh]hd}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj,"ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj("ubah}(h]h ]h"]h$]h&]hhuh1jhj!hhhj"hMaubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj!hhhj"hMaubah}(h]j!ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhj"hMahj!hhubj5)}(hhh]jo)}(h'Remove generic chips from an irq domainh]h'Remove generic chips from an irq domain}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chMahj"hhubah}(h]h ]h"]h$]h&]uh1j4hj!hhhj"hMaubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj"jWj"jXjYjZuh1j=hhhj hNhNubj\)}(h_**Parameters** ``struct irq_domain *d`` irq domain for which generic chips are to be removedh](jo)}(h**Parameters**h]jf)}(hj"h]h Parameters}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj"ubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chMehj"ubj|)}(hhh]j)}(hM``struct irq_domain *d`` irq domain for which generic chips are to be removedh](j)}(h``struct irq_domain *d``h]j)}(hj"h]hstruct irq_domain *d}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chMghj"ubj)}(hhh]jo)}(h4irq domain for which generic chips are to be removedh]h4irq domain for which generic chips are to be removed}(hj #hhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chMbhj #ubah}(h]h ]h"]h$]h&]uh1jhj"ubeh}(h]h ]h"]h$]h&]uh1jhj#hMghj"ubah}(h]h ]h"]h$]h&]uh1j{hj"ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9-__irq_alloc_domain_generic_chips (C function)"c.__irq_alloc_domain_generic_chipshNtauh1j,hj hhhNhNubj>)}(hhh](jC)}(hint __irq_alloc_domain_generic_chips (struct irq_domain *d, int irqs_per_chip, int num_ct, const char *name, irq_flow_handler_t handler, unsigned int clr, unsigned int set, enum irq_gc_flags gcflags)h]jI)}(hint __irq_alloc_domain_generic_chips(struct irq_domain *d, int irqs_per_chip, int num_ct, const char *name, irq_flow_handler_t handler, unsigned int clr, unsigned int set, enum irq_gc_flags gcflags)h](jO)}(hinth]hint}(hjM#hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjI#hhh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chMwubja)}(h h]h }(hj\#hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjI#hhhj[#hMwubjr)}(h __irq_alloc_domain_generic_chipsh]jx)}(h __irq_alloc_domain_generic_chipsh]h __irq_alloc_domain_generic_chips}(hjn#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjj#ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjI#hhhj[#hMwubj)}(h(struct irq_domain *d, int irqs_per_chip, int num_ct, const char *name, irq_flow_handler_t handler, unsigned int clr, unsigned int set, enum irq_gc_flags gcflags)h](j)}(hstruct irq_domain *dh](j)}(hjh]hstruct}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubja)}(h h]h }(hj#hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj#ubh)}(hhh]jx)}(h irq_domainh]h irq_domain}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj#ubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetj#modnameN classnameNjj)}j]j)}jjp#sb"c.__irq_alloc_domain_generic_chipsasbuh1hhj#ubja)}(h h]h }(hj#hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj#ubj)}(hjh]h*}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubjx)}(hjh]hd}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj#ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj#ubj)}(hint irqs_per_chiph](jO)}(hinth]hint}(hj#hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj#ubja)}(h h]h }(hj $hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj#ubjx)}(h irqs_per_chiph]h irqs_per_chip}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj#ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj#ubj)}(h int num_cth](jO)}(hinth]hint}(hj0$hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj,$ubja)}(h h]h }(hj>$hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj,$ubjx)}(hnum_cth]hnum_ct}(hjL$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj,$ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj#ubj)}(hconst char *nameh](j)}(hjmh]hconst}(hje$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhja$ubja)}(h h]h }(hjr$hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hja$ubjO)}(hcharh]hchar}(hj$hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhja$ubja)}(h h]h }(hj$hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hja$ubj)}(hjh]h*}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhja$ubjx)}(hnameh]hname}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhja$ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj#ubj)}(hirq_flow_handler_t handlerh](h)}(hhh]jx)}(hirq_flow_handler_th]hirq_flow_handler_t}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj$ubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetj$modnameN classnameNjj)}j]j#"c.__irq_alloc_domain_generic_chipsasbuh1hhj$ubja)}(h h]h }(hj$hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj$ubjx)}(hhandlerh]hhandler}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj$ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj#ubj)}(hunsigned int clrh](jO)}(hunsignedh]hunsigned}(hj %hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj%ubja)}(h h]h }(hj%hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj%ubjO)}(hinth]hint}(hj&%hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj%ubja)}(h h]h }(hj4%hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj%ubjx)}(hclrh]hclr}(hjB%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj%ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj#ubj)}(hunsigned int seth](jO)}(hunsignedh]hunsigned}(hj[%hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjW%ubja)}(h h]h }(hji%hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjW%ubjO)}(hinth]hint}(hjw%hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjW%ubja)}(h h]h }(hj%hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjW%ubjx)}(hseth]hset}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjW%ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj#ubj)}(henum irq_gc_flags gcflagsh](j)}(henumh]henum}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubja)}(h h]h }(hj%hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj%ubh)}(hhh]jx)}(h irq_gc_flagsh]h irq_gc_flags}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj%ubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetj%modnameN classnameNjj)}j]j#"c.__irq_alloc_domain_generic_chipsasbuh1hhj%ubja)}(h h]h }(hj%hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj%ubjx)}(hgcflagsh]hgcflags}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj%ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj#ubeh}(h]h ]h"]h$]h&]hhuh1jhjI#hhhj[#hMwubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjE#hhhj[#hMwubah}(h]j@#ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhj[#hMwhjB#hhubj5)}(hhh]jo)}(h(Allocate generic chips for an irq domainh]h(Allocate generic chips for an irq domain}(hj!&hhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chMwhj&hhubah}(h]h ]h"]h$]h&]uh1j4hjB#hhhj[#hMwubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj9&jWj9&jXjYjZuh1j=hhhj hNhNubj\)}(hX,**Parameters** ``struct irq_domain *d`` irq domain for which to allocate chips ``int irqs_per_chip`` Number of interrupts each chip handles (max 32) ``int num_ct`` Number of irq_chip_type instances associated with this ``const char *name`` Name of the irq chip ``irq_flow_handler_t handler`` Default flow handler associated with these chips ``unsigned int clr`` IRQ_* bits to clear in the mapping function ``unsigned int set`` IRQ_* bits to set in the mapping function ``enum irq_gc_flags gcflags`` Generic chip specific setup flagsh](jo)}(h**Parameters**h]jf)}(hjC&h]h Parameters}(hjE&hhhNhNubah}(h]h ]h"]h$]h&]uh1jehjA&ubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chM{hj=&ubj|)}(hhh](j)}(h@``struct irq_domain *d`` irq domain for which to allocate chips h](j)}(h``struct irq_domain *d``h]j)}(hjb&h]hstruct irq_domain *d}(hjd&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`&ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chMxhj\&ubj)}(hhh]jo)}(h&irq domain for which to allocate chipsh]h&irq domain for which to allocate chips}(hj{&hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjw&hMxhjx&ubah}(h]h ]h"]h$]h&]uh1jhj\&ubeh}(h]h ]h"]h$]h&]uh1jhjw&hMxhjY&ubj)}(hF``int irqs_per_chip`` Number of interrupts each chip handles (max 32) h](j)}(h``int irqs_per_chip``h]j)}(hj&h]hint irqs_per_chip}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chMyhj&ubj)}(hhh]jo)}(h/Number of interrupts each chip handles (max 32)h]h/Number of interrupts each chip handles (max 32)}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj&hMyhj&ubah}(h]h ]h"]h$]h&]uh1jhj&ubeh}(h]h ]h"]h$]h&]uh1jhj&hMyhjY&ubj)}(hF``int num_ct`` Number of irq_chip_type instances associated with this h](j)}(h``int num_ct``h]j)}(hj&h]h int num_ct}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chMzhj&ubj)}(hhh]jo)}(h6Number of irq_chip_type instances associated with thish]h6Number of irq_chip_type instances associated with this}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj&hMzhj&ubah}(h]h ]h"]h$]h&]uh1jhj&ubeh}(h]h ]h"]h$]h&]uh1jhj&hMzhjY&ubj)}(h*``const char *name`` Name of the irq chip h](j)}(h``const char *name``h]j)}(hj 'h]hconst char *name}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj 'ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chM{hj'ubj)}(hhh]jo)}(hName of the irq chiph]hName of the irq chip}(hj&'hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj"'hM{hj#'ubah}(h]h ]h"]h$]h&]uh1jhj'ubeh}(h]h ]h"]h$]h&]uh1jhj"'hM{hjY&ubj)}(hP``irq_flow_handler_t handler`` Default flow handler associated with these chips h](j)}(h``irq_flow_handler_t handler``h]j)}(hjF'h]hirq_flow_handler_t handler}(hjH'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjD'ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chM|hj@'ubj)}(hhh]jo)}(h0Default flow handler associated with these chipsh]h0Default flow handler associated with these chips}(hj_'hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj['hM|hj\'ubah}(h]h ]h"]h$]h&]uh1jhj@'ubeh}(h]h ]h"]h$]h&]uh1jhj['hM|hjY&ubj)}(hA``unsigned int clr`` IRQ_* bits to clear in the mapping function h](j)}(h``unsigned int clr``h]j)}(hj'h]hunsigned int clr}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}'ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chM}hjy'ubj)}(hhh]jo)}(h+IRQ_* bits to clear in the mapping functionh]h+IRQ_* bits to clear in the mapping function}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj'hM}hj'ubah}(h]h ]h"]h$]h&]uh1jhjy'ubeh}(h]h ]h"]h$]h&]uh1jhj'hM}hjY&ubj)}(h?``unsigned int set`` IRQ_* bits to set in the mapping function h](j)}(h``unsigned int set``h]j)}(hj'h]hunsigned int set}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chM~hj'ubj)}(hhh]jo)}(h)IRQ_* bits to set in the mapping functionh]h)IRQ_* bits to set in the mapping function}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj'hM~hj'ubah}(h]h ]h"]h$]h&]uh1jhj'ubeh}(h]h ]h"]h$]h&]uh1jhj'hM~hjY&ubj)}(h?``enum irq_gc_flags gcflags`` Generic chip specific setup flagsh](j)}(h``enum irq_gc_flags gcflags``h]j)}(hj'h]henum irq_gc_flags gcflags}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chMhj'ubj)}(hhh]jo)}(h!Generic chip specific setup flagsh]h!Generic chip specific setup flags}(hj (hhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chMhj(ubah}(h]h ]h"]h$]h&]uh1jhj'ubeh}(h]h ]h"]h$]h&]uh1jhj(hMhjY&ubeh}(h]h ]h"]h$]h&]uh1j{hj=&ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9(irq_get_domain_generic_chip (C function)c.irq_get_domain_generic_chiphNtauh1j,hj hhhNhNubj>)}(hhh](jC)}(hastruct irq_chip_generic * irq_get_domain_generic_chip (struct irq_domain *d, unsigned int hw_irq)h]jI)}(h_struct irq_chip_generic *irq_get_domain_generic_chip(struct irq_domain *d, unsigned int hw_irq)h](j)}(hjh]hstruct}(hjK(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjG(hhh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chMubja)}(h h]h }(hjY(hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjG(hhhjX(hMubh)}(hhh]jx)}(hirq_chip_generich]hirq_chip_generic}(hjj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjg(ubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjl(modnameN classnameNjj)}j]j)}jirq_get_domain_generic_chipsbc.irq_get_domain_generic_chipasbuh1hhjG(hhhjX(hMubja)}(h h]h }(hj(hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjG(hhhjX(hMubj)}(hjh]h*}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjG(hhhjX(hMubjr)}(hirq_get_domain_generic_chiph]jx)}(hj(h]hirq_get_domain_generic_chip}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj(ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjG(hhhjX(hMubj)}(h+(struct irq_domain *d, unsigned int hw_irq)h](j)}(hstruct irq_domain *dh](j)}(hjh]hstruct}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubja)}(h h]h }(hj(hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj(ubh)}(hhh]jx)}(h irq_domainh]h irq_domain}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj(ubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetj(modnameN classnameNjj)}j]j(c.irq_get_domain_generic_chipasbuh1hhj(ubja)}(h h]h }(hj)hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj(ubj)}(hjh]h*}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubjx)}(hjh]hd}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj(ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj(ubj)}(hunsigned int hw_irqh](jO)}(hunsignedh]hunsigned}(hj4)hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj0)ubja)}(h h]h }(hjB)hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj0)ubjO)}(hinth]hint}(hjP)hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj0)ubja)}(h h]h }(hj^)hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj0)ubjx)}(hhw_irqh]hhw_irq}(hjl)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj0)ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj(ubeh}(h]h ]h"]h$]h&]hhuh1jhjG(hhhjX(hMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjC(hhhjX(hMubah}(h]j>(ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjX(hMhj@(hhubj5)}(hhh]jo)}(h-Get a pointer to the generic chip of a hw_irqh]h-Get a pointer to the generic chip of a hw_irq}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chMhj)hhubah}(h]h ]h"]h$]h&]uh1j4hj@(hhhjX(hMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj)jWj)jXjYjZuh1j=hhhj hNhNubj\)}(hr**Parameters** ``struct irq_domain *d`` irq domain pointer ``unsigned int hw_irq`` Hardware interrupt numberh](jo)}(h**Parameters**h]jf)}(hj)h]h Parameters}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj)ubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chMhj)ubj|)}(hhh](j)}(h,``struct irq_domain *d`` irq domain pointer h](j)}(h``struct irq_domain *d``h]j)}(hj)h]hstruct irq_domain *d}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chMhj)ubj)}(hhh]jo)}(hirq domain pointerh]hirq domain pointer}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj)hMhj)ubah}(h]h ]h"]h$]h&]uh1jhj)ubeh}(h]h ]h"]h$]h&]uh1jhj)hMhj)ubj)}(h1``unsigned int hw_irq`` Hardware interrupt numberh](j)}(h``unsigned int hw_irq``h]j)}(hj*h]hunsigned int hw_irq}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chMhj *ubj)}(hhh]jo)}(hHardware interrupt numberh]hHardware interrupt number}(hj)*hhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chMhj&*ubah}(h]h ]h"]h$]h&]uh1jhj *ubeh}(h]h ]h"]h$]h&]uh1jhj%*hMhj)ubeh}(h]h ]h"]h$]h&]uh1j{hj)ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9#irq_setup_generic_chip (C function)c.irq_setup_generic_chiphNtauh1j,hj hhhNhNubj>)}(hhh](jC)}(hvoid irq_setup_generic_chip (struct irq_chip_generic *gc, u32 msk, enum irq_gc_flags flags, unsigned int clr, unsigned int set)h]jI)}(h~void irq_setup_generic_chip(struct irq_chip_generic *gc, u32 msk, enum irq_gc_flags flags, unsigned int clr, unsigned int set)h](jO)}(hvoidh]hvoid}(hjj*hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjf*hhh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chMubja)}(h h]h }(hjy*hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjf*hhhjx*hMubjr)}(hirq_setup_generic_chiph]jx)}(hirq_setup_generic_chiph]hirq_setup_generic_chip}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj*ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjf*hhhjx*hMubj)}(hc(struct irq_chip_generic *gc, u32 msk, enum irq_gc_flags flags, unsigned int clr, unsigned int set)h](j)}(hstruct irq_chip_generic *gch](j)}(hjh]hstruct}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubja)}(h h]h }(hj*hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj*ubh)}(hhh]jx)}(hirq_chip_generich]hirq_chip_generic}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj*ubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetj*modnameN classnameNjj)}j]j)}jj*sbc.irq_setup_generic_chipasbuh1hhj*ubja)}(h h]h }(hj*hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj*ubj)}(hjh]h*}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubjx)}(hgch]hgc}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj*ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj*ubj)}(hu32 mskh](h)}(hhh]jx)}(hu32h]hu32}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj+ubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetj+modnameN classnameNjj)}j]j*c.irq_setup_generic_chipasbuh1hhj+ubja)}(h h]h }(hj:+hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj+ubjx)}(hmskh]hmsk}(hjH+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj+ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj*ubj)}(henum irq_gc_flags flagsh](j)}(hj%h]henum}(hja+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]+ubja)}(h h]h }(hjn+hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj]+ubh)}(hhh]jx)}(h irq_gc_flagsh]h irq_gc_flags}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj|+ubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetj+modnameN classnameNjj)}j]j*c.irq_setup_generic_chipasbuh1hhj]+ubja)}(h h]h }(hj+hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj]+ubjx)}(hflagsh]hflags}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj]+ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj*ubj)}(hunsigned int clrh](jO)}(hunsignedh]hunsigned}(hj+hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj+ubja)}(h h]h }(hj+hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj+ubjO)}(hinth]hint}(hj+hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj+ubja)}(h h]h }(hj+hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj+ubjx)}(hclrh]hclr}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj+ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj*ubj)}(hunsigned int seth](jO)}(hunsignedh]hunsigned}(hj,hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj,ubja)}(h h]h }(hj#,hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj,ubjO)}(hinth]hint}(hj1,hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj,ubja)}(h h]h }(hj?,hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj,ubjx)}(hseth]hset}(hjM,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj,ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj*ubeh}(h]h ]h"]h$]h&]hhuh1jhjf*hhhjx*hMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjb*hhhjx*hMubah}(h]j]*ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjx*hMhj_*hhubj5)}(hhh]jo)}(h/Setup a range of interrupts with a generic chiph]h/Setup a range of interrupts with a generic chip}(hjw,hhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chMhjt,hhubah}(h]h ]h"]h$]h&]uh1j4hj_*hhhjx*hMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj,jWj,jXjYjZuh1j=hhhj hNhNubj\)}(hX**Parameters** ``struct irq_chip_generic *gc`` Generic irq chip holding all data ``u32 msk`` Bitmask holding the irqs to initialize relative to gc->irq_base ``enum irq_gc_flags flags`` Flags for initialization ``unsigned int clr`` IRQ_* bits to clear ``unsigned int set`` IRQ_* bits to set **Description** Set up max. 32 interrupts starting from gc->irq_base. Note, this initializes all interrupts to the primary irq_chip_type and its associated handler.h](jo)}(h**Parameters**h]jf)}(hj,h]h Parameters}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj,ubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chM hj,ubj|)}(hhh](j)}(hB``struct irq_chip_generic *gc`` Generic irq chip holding all data h](j)}(h``struct irq_chip_generic *gc``h]j)}(hj,h]hstruct irq_chip_generic *gc}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chMhj,ubj)}(hhh]jo)}(h!Generic irq chip holding all datah]h!Generic irq chip holding all data}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj,hMhj,ubah}(h]h ]h"]h$]h&]uh1jhj,ubeh}(h]h ]h"]h$]h&]uh1jhj,hMhj,ubj)}(hL``u32 msk`` Bitmask holding the irqs to initialize relative to gc->irq_base h](j)}(h ``u32 msk``h]j)}(hj,h]hu32 msk}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chM hj,ubj)}(hhh]jo)}(h?Bitmask holding the irqs to initialize relative to gc->irq_baseh]h?Bitmask holding the irqs to initialize relative to gc->irq_base}(hj -hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj-hM hj-ubah}(h]h ]h"]h$]h&]uh1jhj,ubeh}(h]h ]h"]h$]h&]uh1jhj-hM hj,ubj)}(h5``enum irq_gc_flags flags`` Flags for initialization h](j)}(h``enum irq_gc_flags flags``h]j)}(hj*-h]henum irq_gc_flags flags}(hj,-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(-ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chM hj$-ubj)}(hhh]jo)}(hFlags for initializationh]hFlags for initialization}(hjC-hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj?-hM hj@-ubah}(h]h ]h"]h$]h&]uh1jhj$-ubeh}(h]h ]h"]h$]h&]uh1jhj?-hM hj,ubj)}(h)``unsigned int clr`` IRQ_* bits to clear h](j)}(h``unsigned int clr``h]j)}(hjc-h]hunsigned int clr}(hje-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhja-ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chM hj]-ubj)}(hhh]jo)}(hIRQ_* bits to clearh]hIRQ_* bits to clear}(hj|-hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjx-hM hjy-ubah}(h]h ]h"]h$]h&]uh1jhj]-ubeh}(h]h ]h"]h$]h&]uh1jhjx-hM hj,ubj)}(h'``unsigned int set`` IRQ_* bits to set h](j)}(h``unsigned int set``h]j)}(hj-h]hunsigned int set}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chM hj-ubj)}(hhh]jo)}(hIRQ_* bits to seth]hIRQ_* bits to set}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj-hM hj-ubah}(h]h ]h"]h$]h&]uh1jhj-ubeh}(h]h ]h"]h$]h&]uh1jhj-hM hj,ubeh}(h]h ]h"]h$]h&]uh1j{hj,ubjo)}(h**Description**h]jf)}(hj-h]h Description}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj-ubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chMhj,ubjo)}(hSet up max. 32 interrupts starting from gc->irq_base. Note, this initializes all interrupts to the primary irq_chip_type and its associated handler.h]hSet up max. 32 interrupts starting from gc->irq_base. Note, this initializes all interrupts to the primary irq_chip_type and its associated handler.}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chMhj,ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_setup_alt_chip (C function)c.irq_setup_alt_chiphNtauh1j,hj hhhNhNubj>)}(hhh](jC)}(h>int irq_setup_alt_chip (struct irq_data *d, unsigned int type)h]jI)}(h=int irq_setup_alt_chip(struct irq_data *d, unsigned int type)h](jO)}(hinth]hint}(hj.hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj.hhh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chM8ubja)}(h h]h }(hj+.hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj.hhhj*.hM8ubjr)}(hirq_setup_alt_chiph]jx)}(hirq_setup_alt_chiph]hirq_setup_alt_chip}(hj=.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj9.ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhj.hhhj*.hM8ubj)}(h'(struct irq_data *d, unsigned int type)h](j)}(hstruct irq_data *dh](j)}(hjh]hstruct}(hjY.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjU.ubja)}(h h]h }(hjf.hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjU.ubh)}(hhh]jx)}(hirq_datah]hirq_data}(hjw.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjt.ubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjy.modnameN classnameNjj)}j]j)}jj?.sbc.irq_setup_alt_chipasbuh1hhjU.ubja)}(h h]h }(hj.hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjU.ubj)}(hjh]h*}(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjU.ubjx)}(hjh]hd}(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjU.ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjQ.ubj)}(hunsigned int typeh](jO)}(hunsignedh]hunsigned}(hj.hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj.ubja)}(h h]h }(hj.hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj.ubjO)}(hinth]hint}(hj.hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj.ubja)}(h h]h }(hj.hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj.ubjx)}(htypeh]htype}(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj.ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjQ.ubeh}(h]h ]h"]h$]h&]hhuh1jhj.hhhj*.hM8ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj.hhhj*.hM8ubah}(h]j.ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhj*.hM8hj.hhubj5)}(hhh]jo)}(hSwitch to alternative chiph]hSwitch to alternative chip}(hj,/hhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chM8hj)/hhubah}(h]h ]h"]h$]h&]uh1j4hj.hhhj*.hM8ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjD/jWjD/jXjYjZuh1j=hhhj hNhNubj\)}(h**Parameters** ``struct irq_data *d`` irq_data for this interrupt ``unsigned int type`` Flow type to be initialized **Description** Only to be called from chip->irq_set_type() callbacks.h](jo)}(h**Parameters**h]jf)}(hjN/h]h Parameters}(hjP/hhhNhNubah}(h]h ]h"]h$]h&]uh1jehjL/ubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chM<hjH/ubj|)}(hhh](j)}(h3``struct irq_data *d`` irq_data for this interrupt h](j)}(h``struct irq_data *d``h]j)}(hjm/h]hstruct irq_data *d}(hjo/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjk/ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chM9hjg/ubj)}(hhh]jo)}(hirq_data for this interrupth]hirq_data for this interrupt}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj/hM9hj/ubah}(h]h ]h"]h$]h&]uh1jhjg/ubeh}(h]h ]h"]h$]h&]uh1jhj/hM9hjd/ubj)}(h2``unsigned int type`` Flow type to be initialized h](j)}(h``unsigned int type``h]j)}(hj/h]hunsigned int type}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chM:hj/ubj)}(hhh]jo)}(hFlow type to be initializedh]hFlow type to be initialized}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj/hM:hj/ubah}(h]h ]h"]h$]h&]uh1jhj/ubeh}(h]h ]h"]h$]h&]uh1jhj/hM:hjd/ubeh}(h]h ]h"]h$]h&]uh1j{hjH/ubjo)}(h**Description**h]jf)}(hj/h]h Description}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj/ubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chM<hjH/ubjo)}(h6Only to be called from chip->irq_set_type() callbacks.h]h6Only to be called from chip->irq_set_type() callbacks.}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chM<hjH/ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9$irq_remove_generic_chip (C function)c.irq_remove_generic_chiphNtauh1j,hj hhhNhNubj>)}(hhh](jC)}(hgvoid irq_remove_generic_chip (struct irq_chip_generic *gc, u32 msk, unsigned int clr, unsigned int set)h]jI)}(hfvoid irq_remove_generic_chip(struct irq_chip_generic *gc, u32 msk, unsigned int clr, unsigned int set)h](jO)}(hvoidh]hvoid}(hj&0hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj"0hhh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chMPubja)}(h h]h }(hj50hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj"0hhhj40hMPubjr)}(hirq_remove_generic_chiph]jx)}(hirq_remove_generic_chiph]hirq_remove_generic_chip}(hjG0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjC0ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhj"0hhhj40hMPubj)}(hJ(struct irq_chip_generic *gc, u32 msk, unsigned int clr, unsigned int set)h](j)}(hstruct irq_chip_generic *gch](j)}(hjh]hstruct}(hjc0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_0ubja)}(h h]h }(hjp0hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj_0ubh)}(hhh]jx)}(hirq_chip_generich]hirq_chip_generic}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj~0ubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetj0modnameN classnameNjj)}j]j)}jjI0sbc.irq_remove_generic_chipasbuh1hhj_0ubja)}(h h]h }(hj0hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj_0ubj)}(hjh]h*}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_0ubjx)}(hgch]hgc}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj_0ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj[0ubj)}(hu32 mskh](h)}(hhh]jx)}(hu32h]hu32}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj0ubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetj0modnameN classnameNjj)}j]j0c.irq_remove_generic_chipasbuh1hhj0ubja)}(h h]h }(hj0hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj0ubjx)}(hmskh]hmsk}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj0ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj[0ubj)}(hunsigned int clrh](jO)}(hunsignedh]hunsigned}(hj1hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj1ubja)}(h h]h }(hj+1hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj1ubjO)}(hinth]hint}(hj91hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj1ubja)}(h h]h }(hjG1hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj1ubjx)}(hclrh]hclr}(hjU1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj1ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj[0ubj)}(hunsigned int seth](jO)}(hunsignedh]hunsigned}(hjn1hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjj1ubja)}(h h]h }(hj|1hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjj1ubjO)}(hinth]hint}(hj1hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjj1ubja)}(h h]h }(hj1hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjj1ubjx)}(hseth]hset}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjj1ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj[0ubeh}(h]h ]h"]h$]h&]hhuh1jhj"0hhhj40hMPubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj0hhhj40hMPubah}(h]j0ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhj40hMPhj0hhubj5)}(hhh]jo)}(h Remove a chiph]h Remove a chip}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chMPhj1hhubah}(h]h ]h"]h$]h&]uh1j4hj0hhhj40hMPubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj1jWj1jXjYjZuh1j=hhhj hNhNubj\)}(hXA**Parameters** ``struct irq_chip_generic *gc`` Generic irq chip holding all data ``u32 msk`` Bitmask holding the irqs to initialize relative to gc->irq_base ``unsigned int clr`` IRQ_* bits to clear ``unsigned int set`` IRQ_* bits to set **Description** Remove up to 32 interrupts starting from gc->irq_base.h](jo)}(h**Parameters**h]jf)}(hj1h]h Parameters}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj1ubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chMThj1ubj|)}(hhh](j)}(hB``struct irq_chip_generic *gc`` Generic irq chip holding all data h](j)}(h``struct irq_chip_generic *gc``h]j)}(hj2h]hstruct irq_chip_generic *gc}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chMQhj 2ubj)}(hhh]jo)}(h!Generic irq chip holding all datah]h!Generic irq chip holding all data}(hj*2hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj&2hMQhj'2ubah}(h]h ]h"]h$]h&]uh1jhj 2ubeh}(h]h ]h"]h$]h&]uh1jhj&2hMQhj2ubj)}(hL``u32 msk`` Bitmask holding the irqs to initialize relative to gc->irq_base h](j)}(h ``u32 msk``h]j)}(hjJ2h]hu32 msk}(hjL2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjH2ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chMRhjD2ubj)}(hhh]jo)}(h?Bitmask holding the irqs to initialize relative to gc->irq_baseh]h?Bitmask holding the irqs to initialize relative to gc->irq_base}(hjc2hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj_2hMRhj`2ubah}(h]h ]h"]h$]h&]uh1jhjD2ubeh}(h]h ]h"]h$]h&]uh1jhj_2hMRhj2ubj)}(h)``unsigned int clr`` IRQ_* bits to clear h](j)}(h``unsigned int clr``h]j)}(hj2h]hunsigned int clr}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chMShj}2ubj)}(hhh]jo)}(hIRQ_* bits to clearh]hIRQ_* bits to clear}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj2hMShj2ubah}(h]h ]h"]h$]h&]uh1jhj}2ubeh}(h]h ]h"]h$]h&]uh1jhj2hMShj2ubj)}(h'``unsigned int set`` IRQ_* bits to set h](j)}(h``unsigned int set``h]j)}(hj2h]hunsigned int set}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chMThj2ubj)}(hhh]jo)}(hIRQ_* bits to seth]hIRQ_* bits to set}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj2hMThj2ubah}(h]h ]h"]h$]h&]uh1jhj2ubeh}(h]h ]h"]h$]h&]uh1jhj2hMThj2ubeh}(h]h ]h"]h$]h&]uh1j{hj1ubjo)}(h**Description**h]jf)}(hj2h]h Description}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj2ubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chMVhj1ubjo)}(h6Remove up to 32 interrupts starting from gc->irq_base.h]h6Remove up to 32 interrupts starting from gc->irq_base.}(hj 3hhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:484: ./kernel/irq/generic-chip.chMVhj1ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj hhhNhNubeh}(h]generic-interrupt-chipah ]h"]generic interrupt chipah$]h&]uh1j8hj:hhhjMhMubj9)}(hhh](j>)}(h Structuresh]h Structures}(hj.3hhhNhNubah}(h]h ]h"]h$]h&]uh1j=hj+3hhhjMhMubjo)}(hpThis chapter contains the autogenerated documentation of the structures which are used in the generic IRQ layer.h]hpThis chapter contains the autogenerated documentation of the structures which are used in the generic IRQ layer.}(hj<3hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhMhj+3hhubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_common_data (C struct)c.irq_common_datahNtauh1j,hj+3hhhNhNubj>)}(hhh](jC)}(hirq_common_datah]jI)}(hstruct irq_common_datah](j)}(hjh]hstruct}(hjc3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_3hhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhKubja)}(h h]h }(hjq3hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj_3hhhjp3hKubjr)}(hirq_common_datah]jx)}(hj]3h]hirq_common_data}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj3ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhj_3hhhjp3hKubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj[3hhhjp3hKubah}(h]jV3ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjp3hKhjX3hhubj5)}(hhh]jo)}(h#per irq data shared by all irqchipsh]h#per irq data shared by all irqchips}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhKhj3hhubah}(h]h ]h"]h$]h&]uh1j4hjX3hhhjp3hKubeh}(h]h ](jK structeh"]h$]h&]jUjK jVj3jWj3jXjYjZuh1j=hhhj+3hNhNubj\)}(hXN**Definition**:: struct irq_common_data { unsigned int __private state_use_accessors; #ifdef CONFIG_NUMA; unsigned int node; #endif; void *handler_data; struct msi_desc *msi_desc; #ifdef CONFIG_SMP; cpumask_var_t affinity; #endif; #ifdef CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK; cpumask_var_t effective_affinity; #endif; #ifdef CONFIG_GENERIC_IRQ_IPI; unsigned int ipi_offset; #endif; }; **Members** ``state_use_accessors`` status information for irq chip functions. Use accessor functions to deal with it ``node`` node index useful for balancing ``handler_data`` per-IRQ data for the irq_chip methods ``msi_desc`` MSI descriptor ``affinity`` IRQ affinity on SMP. If this is an IPI related irq, then this is the mask of the CPUs to which an IPI can be sent. ``effective_affinity`` The effective IRQ affinity on SMP as some irq chips do not allow multi CPU destinations. A subset of **affinity**. ``ipi_offset`` Offset of first IPI target cpu in **affinity**. Optional.h](jo)}(h**Definition**::h](jf)}(h**Definition**h]h Definition}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj3ubh:}(hj3hhhNhNubeh}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhKhj3ubj )}(hXstruct irq_common_data { unsigned int __private state_use_accessors; #ifdef CONFIG_NUMA; unsigned int node; #endif; void *handler_data; struct msi_desc *msi_desc; #ifdef CONFIG_SMP; cpumask_var_t affinity; #endif; #ifdef CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK; cpumask_var_t effective_affinity; #endif; #ifdef CONFIG_GENERIC_IRQ_IPI; unsigned int ipi_offset; #endif; };h]hXstruct irq_common_data { unsigned int __private state_use_accessors; #ifdef CONFIG_NUMA; unsigned int node; #endif; void *handler_data; struct msi_desc *msi_desc; #ifdef CONFIG_SMP; cpumask_var_t affinity; #endif; #ifdef CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK; cpumask_var_t effective_affinity; #endif; #ifdef CONFIG_GENERIC_IRQ_IPI; unsigned int ipi_offset; #endif; };}hj3sbah}(h]h ]h"]h$]h&]hhuh1j hX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhKhj3ubjo)}(h **Members**h]jf)}(hj3h]hMembers}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj3ubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhKhj3ubj|)}(hhh](j)}(hj``state_use_accessors`` status information for irq chip functions. Use accessor functions to deal with it h](j)}(h``state_use_accessors``h]j)}(hj4h]hstate_use_accessors}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhKhj 4ubj)}(hhh]jo)}(hQstatus information for irq chip functions. Use accessor functions to deal with ith]hQstatus information for irq chip functions. Use accessor functions to deal with it}(hj+4hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhKhj(4ubah}(h]h ]h"]h$]h&]uh1jhj 4ubeh}(h]h ]h"]h$]h&]uh1jhj'4hKhj 4ubj)}(h)``node`` node index useful for balancing h](j)}(h``node``h]j)}(hjL4h]hnode}(hjN4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJ4ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhKhjF4ubj)}(hhh]jo)}(hnode index useful for balancingh]hnode index useful for balancing}(hje4hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhja4hKhjb4ubah}(h]h ]h"]h$]h&]uh1jhjF4ubeh}(h]h ]h"]h$]h&]uh1jhja4hKhj 4ubj)}(h7``handler_data`` per-IRQ data for the irq_chip methods h](j)}(h``handler_data``h]j)}(hj4h]h handler_data}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhKhj4ubj)}(hhh]jo)}(h%per-IRQ data for the irq_chip methodsh]h%per-IRQ data for the irq_chip methods}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj4hKhj4ubah}(h]h ]h"]h$]h&]uh1jhj4ubeh}(h]h ]h"]h$]h&]uh1jhj4hKhj 4ubj)}(h``msi_desc`` MSI descriptor h](j)}(h ``msi_desc``h]j)}(hj4h]hmsi_desc}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhKhj4ubj)}(hhh]jo)}(hMSI descriptorh]hMSI descriptor}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj4hKhj4ubah}(h]h ]h"]h$]h&]uh1jhj4ubeh}(h]h ]h"]h$]h&]uh1jhj4hKhj 4ubj)}(h``affinity`` IRQ affinity on SMP. If this is an IPI related irq, then this is the mask of the CPUs to which an IPI can be sent. h](j)}(h ``affinity``h]j)}(hj4h]haffinity}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhKhj4ubj)}(hhh]jo)}(hrIRQ affinity on SMP. If this is an IPI related irq, then this is the mask of the CPUs to which an IPI can be sent.h]hrIRQ affinity on SMP. If this is an IPI related irq, then this is the mask of the CPUs to which an IPI can be sent.}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhKhj 5ubah}(h]h ]h"]h$]h&]uh1jhj4ubeh}(h]h ]h"]h$]h&]uh1jhj 5hKhj 4ubj)}(h``effective_affinity`` The effective IRQ affinity on SMP as some irq chips do not allow multi CPU destinations. A subset of **affinity**. h](j)}(h``effective_affinity``h]j)}(hj15h]heffective_affinity}(hj35hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/5ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhKhj+5ubj)}(hhh]jo)}(hrThe effective IRQ affinity on SMP as some irq chips do not allow multi CPU destinations. A subset of **affinity**.h](heThe effective IRQ affinity on SMP as some irq chips do not allow multi CPU destinations. A subset of }(hjJ5hhhNhNubjf)}(h **affinity**h]haffinity}(hjR5hhhNhNubah}(h]h ]h"]h$]h&]uh1jehjJ5ubh.}(hjJ5hhhNhNubeh}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhKhjG5ubah}(h]h ]h"]h$]h&]uh1jhj+5ubeh}(h]h ]h"]h$]h&]uh1jhjF5hKhj 4ubj)}(hH``ipi_offset`` Offset of first IPI target cpu in **affinity**. Optional.h](j)}(h``ipi_offset``h]j)}(hj}5h]h ipi_offset}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj{5ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhKhjw5ubj)}(hhh]jo)}(h9Offset of first IPI target cpu in **affinity**. Optional.h](h"Offset of first IPI target cpu in }(hj5hhhNhNubjf)}(h **affinity**h]haffinity}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj5ubh . Optional.}(hj5hhhNhNubeh}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhKhj5ubah}(h]h ]h"]h$]h&]uh1jhjw5ubeh}(h]h ]h"]h$]h&]uh1jhj5hKhj 4ubeh}(h]h ]h"]h$]h&]uh1j{hj3ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj+3hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_data (C struct) c.irq_datahNtauh1j,hj+3hhhNhNubj>)}(hhh](jC)}(hirq_datah]jI)}(hstruct irq_datah](j)}(hjh]hstruct}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5hhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhKubja)}(h h]h }(hj5hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj5hhhj5hKubjr)}(hirq_datah]jx)}(hj5h]hirq_data}(hj 6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj6ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhj5hhhj5hKubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj5hhhj5hKubah}(h]j5ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhj5hKhj5hhubj5)}(hhh]jo)}(h/per irq chip data passed down to chip functionsh]h/per irq chip data passed down to chip functions}(hj+6hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhKhj(6hhubah}(h]h ]h"]h$]h&]uh1j4hj5hhhj5hKubeh}(h]h ](jK structeh"]h$]h&]jUjK jVjC6jWjC6jXjYjZuh1j=hhhj+3hNhNubj\)}(hX**Definition**:: struct irq_data { u32 mask; unsigned int irq; irq_hw_number_t hwirq; struct irq_common_data *common; struct irq_chip *chip; struct irq_domain *domain; #ifdef CONFIG_IRQ_DOMAIN_HIERARCHY; struct irq_data *parent_data; #endif; void *chip_data; }; **Members** ``mask`` precomputed bitmask for accessing the chip registers ``irq`` interrupt number ``hwirq`` hardware interrupt number, local to the interrupt domain ``common`` point to data shared by all irqchips ``chip`` low level interrupt hardware access ``domain`` Interrupt translation domain; responsible for mapping between hwirq number and linux irq number. ``parent_data`` pointer to parent struct irq_data to support hierarchy irq_domain ``chip_data`` platform-specific per-chip private data for the chip methods, to allow shared chip implementationsh](jo)}(h**Definition**::h](jf)}(h**Definition**h]h Definition}(hjO6hhhNhNubah}(h]h ]h"]h$]h&]uh1jehjK6ubh:}(hjK6hhhNhNubeh}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhKhjG6ubj )}(hX6struct irq_data { u32 mask; unsigned int irq; irq_hw_number_t hwirq; struct irq_common_data *common; struct irq_chip *chip; struct irq_domain *domain; #ifdef CONFIG_IRQ_DOMAIN_HIERARCHY; struct irq_data *parent_data; #endif; void *chip_data; };h]hX6struct irq_data { u32 mask; unsigned int irq; irq_hw_number_t hwirq; struct irq_common_data *common; struct irq_chip *chip; struct irq_domain *domain; #ifdef CONFIG_IRQ_DOMAIN_HIERARCHY; struct irq_data *parent_data; #endif; void *chip_data; };}hjh6sbah}(h]h ]h"]h$]h&]hhuh1j hX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhKhjG6ubjo)}(h **Members**h]jf)}(hjy6h]hMembers}(hj{6hhhNhNubah}(h]h ]h"]h$]h&]uh1jehjw6ubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhKhjG6ubj|)}(hhh](j)}(h>``mask`` precomputed bitmask for accessing the chip registers h](j)}(h``mask``h]j)}(hj6h]hmask}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhKhj6ubj)}(hhh]jo)}(h4precomputed bitmask for accessing the chip registersh]h4precomputed bitmask for accessing the chip registers}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj6hKhj6ubah}(h]h ]h"]h$]h&]uh1jhj6ubeh}(h]h ]h"]h$]h&]uh1jhj6hKhj6ubj)}(h``irq`` interrupt number h](j)}(h``irq``h]j)}(hj6h]hirq}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhKhj6ubj)}(hhh]jo)}(hinterrupt numberh]hinterrupt number}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj6hKhj6ubah}(h]h ]h"]h$]h&]uh1jhj6ubeh}(h]h ]h"]h$]h&]uh1jhj6hKhj6ubj)}(hC``hwirq`` hardware interrupt number, local to the interrupt domain h](j)}(h ``hwirq``h]j)}(hj 7h]hhwirq}(hj 7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhKhj7ubj)}(hhh]jo)}(h8hardware interrupt number, local to the interrupt domainh]h8hardware interrupt number, local to the interrupt domain}(hj#7hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj7hKhj 7ubah}(h]h ]h"]h$]h&]uh1jhj7ubeh}(h]h ]h"]h$]h&]uh1jhj7hKhj6ubj)}(h0``common`` point to data shared by all irqchips h](j)}(h ``common``h]j)}(hjC7h]hcommon}(hjE7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjA7ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhKhj=7ubj)}(hhh]jo)}(h$point to data shared by all irqchipsh]h$point to data shared by all irqchips}(hj\7hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjX7hKhjY7ubah}(h]h ]h"]h$]h&]uh1jhj=7ubeh}(h]h ]h"]h$]h&]uh1jhjX7hKhj6ubj)}(h-``chip`` low level interrupt hardware access h](j)}(h``chip``h]j)}(hj|7h]hchip}(hj~7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjz7ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhKhjv7ubj)}(hhh]jo)}(h#low level interrupt hardware accessh]h#low level interrupt hardware access}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj7hKhj7ubah}(h]h ]h"]h$]h&]uh1jhjv7ubeh}(h]h ]h"]h$]h&]uh1jhj7hKhj6ubj)}(hl``domain`` Interrupt translation domain; responsible for mapping between hwirq number and linux irq number. h](j)}(h ``domain``h]j)}(hj7h]hdomain}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhKhj7ubj)}(hhh]jo)}(h`Interrupt translation domain; responsible for mapping between hwirq number and linux irq number.h]h`Interrupt translation domain; responsible for mapping between hwirq number and linux irq number.}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhKhj7ubah}(h]h ]h"]h$]h&]uh1jhj7ubeh}(h]h ]h"]h$]h&]uh1jhj7hKhj6ubj)}(hR``parent_data`` pointer to parent struct irq_data to support hierarchy irq_domain h](j)}(h``parent_data``h]j)}(hj7h]h parent_data}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhKhj7ubj)}(hhh]jo)}(hApointer to parent struct irq_data to support hierarchy irq_domainh]hApointer to parent struct irq_data to support hierarchy irq_domain}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhKhj8ubah}(h]h ]h"]h$]h&]uh1jhj7ubeh}(h]h ]h"]h$]h&]uh1jhj8hKhj6ubj)}(hp``chip_data`` platform-specific per-chip private data for the chip methods, to allow shared chip implementationsh](j)}(h ``chip_data``h]j)}(hj)8h]h chip_data}(hj+8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'8ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhKhj#8ubj)}(hhh]jo)}(hbplatform-specific per-chip private data for the chip methods, to allow shared chip implementationsh]hbplatform-specific per-chip private data for the chip methods, to allow shared chip implementations}(hjB8hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj>8hKhj?8ubah}(h]h ]h"]h$]h&]uh1jhj#8ubeh}(h]h ]h"]h$]h&]uh1jhj>8hKhj6ubeh}(h]h ]h"]h$]h&]uh1j{hjG6ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj+3hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_chip (C struct) c.irq_chiphNtauh1j,hj+3hhhNhNubj>)}(hhh](jC)}(hirq_chiph]jI)}(hstruct irq_chiph](j)}(hjh]hstruct}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~8hhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhKubja)}(h h]h }(hj8hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj~8hhhj8hKubjr)}(hirq_chiph]jx)}(hj|8h]hirq_chip}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj8ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhj~8hhhj8hKubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjz8hhhj8hKubah}(h]ju8ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhj8hKhjw8hhubj5)}(hhh]jo)}(h"hardware interrupt chip descriptorh]h"hardware interrupt chip descriptor}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj8hhubah}(h]h ]h"]h$]h&]uh1j4hjw8hhhj8hKubeh}(h]h ](jK structeh"]h$]h&]jUjK jVj8jWj8jXjYjZuh1j=hhhj+3hNhNubj\)}(hX**Definition**:: struct irq_chip { const char *name; unsigned int (*irq_startup)(struct irq_data *data); void (*irq_shutdown)(struct irq_data *data); void (*irq_enable)(struct irq_data *data); void (*irq_disable)(struct irq_data *data); void (*irq_ack)(struct irq_data *data); void (*irq_mask)(struct irq_data *data); void (*irq_mask_ack)(struct irq_data *data); void (*irq_unmask)(struct irq_data *data); void (*irq_eoi)(struct irq_data *data); int (*irq_set_affinity)(struct irq_data *data, const struct cpumask *dest, bool force); int (*irq_retrigger)(struct irq_data *data); int (*irq_set_type)(struct irq_data *data, unsigned int flow_type); int (*irq_set_wake)(struct irq_data *data, unsigned int on); void (*irq_bus_lock)(struct irq_data *data); void (*irq_bus_sync_unlock)(struct irq_data *data); #ifdef CONFIG_DEPRECATED_IRQ_CPU_ONOFFLINE; void (*irq_cpu_online)(struct irq_data *data); void (*irq_cpu_offline)(struct irq_data *data); #endif; void (*irq_suspend)(struct irq_data *data); void (*irq_resume)(struct irq_data *data); void (*irq_pm_shutdown)(struct irq_data *data); void (*irq_calc_mask)(struct irq_data *data); void (*irq_print_chip)(struct irq_data *data, struct seq_file *p); int (*irq_request_resources)(struct irq_data *data); void (*irq_release_resources)(struct irq_data *data); void (*irq_compose_msi_msg)(struct irq_data *data, struct msi_msg *msg); void (*irq_write_msi_msg)(struct irq_data *data, struct msi_msg *msg); int (*irq_get_irqchip_state)(struct irq_data *data, enum irqchip_irq_state which, bool *state); int (*irq_set_irqchip_state)(struct irq_data *data, enum irqchip_irq_state which, bool state); int (*irq_set_vcpu_affinity)(struct irq_data *data, void *vcpu_info); void (*ipi_send_single)(struct irq_data *data, unsigned int cpu); void (*ipi_send_mask)(struct irq_data *data, const struct cpumask *dest); int (*irq_nmi_setup)(struct irq_data *data); void (*irq_nmi_teardown)(struct irq_data *data); void (*irq_force_complete_move)(struct irq_data *data); unsigned long flags; }; **Members** ``name`` name for /proc/interrupts ``irq_startup`` start up the interrupt (defaults to ->enable if NULL) ``irq_shutdown`` shut down the interrupt (defaults to ->disable if NULL) ``irq_enable`` enable the interrupt (defaults to chip->unmask if NULL) ``irq_disable`` disable the interrupt ``irq_ack`` start of a new interrupt ``irq_mask`` mask an interrupt source ``irq_mask_ack`` ack and mask an interrupt source ``irq_unmask`` unmask an interrupt source ``irq_eoi`` end of interrupt ``irq_set_affinity`` Set the CPU affinity on SMP machines. If the force argument is true, it tells the driver to unconditionally apply the affinity setting. Sanity checks against the supplied affinity mask are not required. This is used for CPU hotplug where the target CPU is not yet set in the cpu_online_mask. ``irq_retrigger`` resend an IRQ to the CPU ``irq_set_type`` set the flow type (IRQ_TYPE_LEVEL/etc.) of an IRQ ``irq_set_wake`` enable/disable power-management wake-on of an IRQ ``irq_bus_lock`` function to lock access to slow bus (i2c) chips ``irq_bus_sync_unlock`` function to sync and unlock slow bus (i2c) chips ``irq_cpu_online`` configure an interrupt source for a secondary CPU ``irq_cpu_offline`` un-configure an interrupt source for a secondary CPU ``irq_suspend`` function called from core code on suspend once per chip, when one or more interrupts are installed ``irq_resume`` function called from core code on resume once per chip, when one ore more interrupts are installed ``irq_pm_shutdown`` function called from core code on shutdown once per chip ``irq_calc_mask`` Optional function to set irq_data.mask for special cases ``irq_print_chip`` optional to print special chip info in show_interrupts ``irq_request_resources`` optional to request resources before calling any other callback related to this irq ``irq_release_resources`` optional to release resources acquired with irq_request_resources ``irq_compose_msi_msg`` optional to compose message content for MSI ``irq_write_msi_msg`` optional to write message content for MSI ``irq_get_irqchip_state`` return the internal state of an interrupt ``irq_set_irqchip_state`` set the internal state of a interrupt ``irq_set_vcpu_affinity`` optional to target a vCPU in a virtual machine ``ipi_send_single`` send a single IPI to destination cpus ``ipi_send_mask`` send an IPI to destination cpus in cpumask ``irq_nmi_setup`` function called from core code before enabling an NMI ``irq_nmi_teardown`` function called from core code after disabling an NMI ``irq_force_complete_move`` optional function to force complete pending irq move ``flags`` chip specific flagsh](jo)}(h**Definition**::h](jf)}(h**Definition**h]h Definition}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj8ubh:}(hj8hhhNhNubeh}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj8ubj )}(hXrstruct irq_chip { const char *name; unsigned int (*irq_startup)(struct irq_data *data); void (*irq_shutdown)(struct irq_data *data); void (*irq_enable)(struct irq_data *data); void (*irq_disable)(struct irq_data *data); void (*irq_ack)(struct irq_data *data); void (*irq_mask)(struct irq_data *data); void (*irq_mask_ack)(struct irq_data *data); void (*irq_unmask)(struct irq_data *data); void (*irq_eoi)(struct irq_data *data); int (*irq_set_affinity)(struct irq_data *data, const struct cpumask *dest, bool force); int (*irq_retrigger)(struct irq_data *data); int (*irq_set_type)(struct irq_data *data, unsigned int flow_type); int (*irq_set_wake)(struct irq_data *data, unsigned int on); void (*irq_bus_lock)(struct irq_data *data); void (*irq_bus_sync_unlock)(struct irq_data *data); #ifdef CONFIG_DEPRECATED_IRQ_CPU_ONOFFLINE; void (*irq_cpu_online)(struct irq_data *data); void (*irq_cpu_offline)(struct irq_data *data); #endif; void (*irq_suspend)(struct irq_data *data); void (*irq_resume)(struct irq_data *data); void (*irq_pm_shutdown)(struct irq_data *data); void (*irq_calc_mask)(struct irq_data *data); void (*irq_print_chip)(struct irq_data *data, struct seq_file *p); int (*irq_request_resources)(struct irq_data *data); void (*irq_release_resources)(struct irq_data *data); void (*irq_compose_msi_msg)(struct irq_data *data, struct msi_msg *msg); void (*irq_write_msi_msg)(struct irq_data *data, struct msi_msg *msg); int (*irq_get_irqchip_state)(struct irq_data *data, enum irqchip_irq_state which, bool *state); int (*irq_set_irqchip_state)(struct irq_data *data, enum irqchip_irq_state which, bool state); int (*irq_set_vcpu_affinity)(struct irq_data *data, void *vcpu_info); void (*ipi_send_single)(struct irq_data *data, unsigned int cpu); void (*ipi_send_mask)(struct irq_data *data, const struct cpumask *dest); int (*irq_nmi_setup)(struct irq_data *data); void (*irq_nmi_teardown)(struct irq_data *data); void (*irq_force_complete_move)(struct irq_data *data); unsigned long flags; };h]hXrstruct irq_chip { const char *name; unsigned int (*irq_startup)(struct irq_data *data); void (*irq_shutdown)(struct irq_data *data); void (*irq_enable)(struct irq_data *data); void (*irq_disable)(struct irq_data *data); void (*irq_ack)(struct irq_data *data); void (*irq_mask)(struct irq_data *data); void (*irq_mask_ack)(struct irq_data *data); void (*irq_unmask)(struct irq_data *data); void (*irq_eoi)(struct irq_data *data); int (*irq_set_affinity)(struct irq_data *data, const struct cpumask *dest, bool force); int (*irq_retrigger)(struct irq_data *data); int (*irq_set_type)(struct irq_data *data, unsigned int flow_type); int (*irq_set_wake)(struct irq_data *data, unsigned int on); void (*irq_bus_lock)(struct irq_data *data); void (*irq_bus_sync_unlock)(struct irq_data *data); #ifdef CONFIG_DEPRECATED_IRQ_CPU_ONOFFLINE; void (*irq_cpu_online)(struct irq_data *data); void (*irq_cpu_offline)(struct irq_data *data); #endif; void (*irq_suspend)(struct irq_data *data); void (*irq_resume)(struct irq_data *data); void (*irq_pm_shutdown)(struct irq_data *data); void (*irq_calc_mask)(struct irq_data *data); void (*irq_print_chip)(struct irq_data *data, struct seq_file *p); int (*irq_request_resources)(struct irq_data *data); void (*irq_release_resources)(struct irq_data *data); void (*irq_compose_msi_msg)(struct irq_data *data, struct msi_msg *msg); void (*irq_write_msi_msg)(struct irq_data *data, struct msi_msg *msg); int (*irq_get_irqchip_state)(struct irq_data *data, enum irqchip_irq_state which, bool *state); int (*irq_set_irqchip_state)(struct irq_data *data, enum irqchip_irq_state which, bool state); int (*irq_set_vcpu_affinity)(struct irq_data *data, void *vcpu_info); void (*ipi_send_single)(struct irq_data *data, unsigned int cpu); void (*ipi_send_mask)(struct irq_data *data, const struct cpumask *dest); int (*irq_nmi_setup)(struct irq_data *data); void (*irq_nmi_teardown)(struct irq_data *data); void (*irq_force_complete_move)(struct irq_data *data); unsigned long flags; };}hj9sbah}(h]h ]h"]h$]h&]hhuh1j hX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj8ubjo)}(h **Members**h]jf)}(hj9h]hMembers}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj9ubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj8ubj|)}(hhh](j)}(h#``name`` name for /proc/interrupts h](j)}(h``name``h]j)}(hj19h]hname}(hj39hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/9ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj+9ubj)}(hhh]jo)}(hname for /proc/interruptsh]hname for /proc/interrupts}(hjJ9hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjF9hMhjG9ubah}(h]h ]h"]h$]h&]uh1jhj+9ubeh}(h]h ]h"]h$]h&]uh1jhjF9hMhj(9ubj)}(hF``irq_startup`` start up the interrupt (defaults to ->enable if NULL) h](j)}(h``irq_startup``h]j)}(hjj9h]h irq_startup}(hjl9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjh9ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhjd9ubj)}(hhh]jo)}(h5start up the interrupt (defaults to ->enable if NULL)h]h5start up the interrupt (defaults to ->enable if NULL)}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj9hMhj9ubah}(h]h ]h"]h$]h&]uh1jhjd9ubeh}(h]h ]h"]h$]h&]uh1jhj9hMhj(9ubj)}(hI``irq_shutdown`` shut down the interrupt (defaults to ->disable if NULL) h](j)}(h``irq_shutdown``h]j)}(hj9h]h irq_shutdown}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj9ubj)}(hhh]jo)}(h7shut down the interrupt (defaults to ->disable if NULL)h]h7shut down the interrupt (defaults to ->disable if NULL)}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj9hMhj9ubah}(h]h ]h"]h$]h&]uh1jhj9ubeh}(h]h ]h"]h$]h&]uh1jhj9hMhj(9ubj)}(hG``irq_enable`` enable the interrupt (defaults to chip->unmask if NULL) h](j)}(h``irq_enable``h]j)}(hj9h]h irq_enable}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj9ubj)}(hhh]jo)}(h7enable the interrupt (defaults to chip->unmask if NULL)h]h7enable the interrupt (defaults to chip->unmask if NULL)}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj9hMhj9ubah}(h]h ]h"]h$]h&]uh1jhj9ubeh}(h]h ]h"]h$]h&]uh1jhj9hMhj(9ubj)}(h&``irq_disable`` disable the interrupt h](j)}(h``irq_disable``h]j)}(hj:h]h irq_disable}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj:ubj)}(hhh]jo)}(hdisable the interrupth]hdisable the interrupt}(hj.:hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj*:hMhj+:ubah}(h]h ]h"]h$]h&]uh1jhj:ubeh}(h]h ]h"]h$]h&]uh1jhj*:hMhj(9ubj)}(h%``irq_ack`` start of a new interrupt h](j)}(h ``irq_ack``h]j)}(hjN:h]hirq_ack}(hjP:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjL:ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhjH:ubj)}(hhh]jo)}(hstart of a new interrupth]hstart of a new interrupt}(hjg:hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjc:hMhjd:ubah}(h]h ]h"]h$]h&]uh1jhjH:ubeh}(h]h ]h"]h$]h&]uh1jhjc:hMhj(9ubj)}(h&``irq_mask`` mask an interrupt source h](j)}(h ``irq_mask``h]j)}(hj:h]hirq_mask}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj:ubj)}(hhh]jo)}(hmask an interrupt sourceh]hmask an interrupt source}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj:hMhj:ubah}(h]h ]h"]h$]h&]uh1jhj:ubeh}(h]h ]h"]h$]h&]uh1jhj:hMhj(9ubj)}(h2``irq_mask_ack`` ack and mask an interrupt source h](j)}(h``irq_mask_ack``h]j)}(hj:h]h irq_mask_ack}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj:ubj)}(hhh]jo)}(h ack and mask an interrupt sourceh]h ack and mask an interrupt source}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj:hMhj:ubah}(h]h ]h"]h$]h&]uh1jhj:ubeh}(h]h ]h"]h$]h&]uh1jhj:hMhj(9ubj)}(h*``irq_unmask`` unmask an interrupt source h](j)}(h``irq_unmask``h]j)}(hj:h]h irq_unmask}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj:ubj)}(hhh]jo)}(hunmask an interrupt sourceh]hunmask an interrupt source}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj;hMhj;ubah}(h]h ]h"]h$]h&]uh1jhj:ubeh}(h]h ]h"]h$]h&]uh1jhj;hMhj(9ubj)}(h``irq_eoi`` end of interrupt h](j)}(h ``irq_eoi``h]j)}(hj2;h]hirq_eoi}(hj4;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0;ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj,;ubj)}(hhh]jo)}(hend of interrupth]hend of interrupt}(hjK;hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjG;hMhjH;ubah}(h]h ]h"]h$]h&]uh1jhj,;ubeh}(h]h ]h"]h$]h&]uh1jhjG;hMhj(9ubj)}(hX9``irq_set_affinity`` Set the CPU affinity on SMP machines. If the force argument is true, it tells the driver to unconditionally apply the affinity setting. Sanity checks against the supplied affinity mask are not required. This is used for CPU hotplug where the target CPU is not yet set in the cpu_online_mask. h](j)}(h``irq_set_affinity``h]j)}(hjk;h]hirq_set_affinity}(hjm;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhji;ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhje;ubj)}(hhh]jo)}(hX#Set the CPU affinity on SMP machines. If the force argument is true, it tells the driver to unconditionally apply the affinity setting. Sanity checks against the supplied affinity mask are not required. This is used for CPU hotplug where the target CPU is not yet set in the cpu_online_mask.h]hX#Set the CPU affinity on SMP machines. If the force argument is true, it tells the driver to unconditionally apply the affinity setting. Sanity checks against the supplied affinity mask are not required. This is used for CPU hotplug where the target CPU is not yet set in the cpu_online_mask.}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj;ubah}(h]h ]h"]h$]h&]uh1jhje;ubeh}(h]h ]h"]h$]h&]uh1jhj;hMhj(9ubj)}(h+``irq_retrigger`` resend an IRQ to the CPU h](j)}(h``irq_retrigger``h]j)}(hj;h]h irq_retrigger}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj;ubj)}(hhh]jo)}(hresend an IRQ to the CPUh]hresend an IRQ to the CPU}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj;hMhj;ubah}(h]h ]h"]h$]h&]uh1jhj;ubeh}(h]h ]h"]h$]h&]uh1jhj;hMhj(9ubj)}(hC``irq_set_type`` set the flow type (IRQ_TYPE_LEVEL/etc.) of an IRQ h](j)}(h``irq_set_type``h]j)}(hj;h]h irq_set_type}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj;ubj)}(hhh]jo)}(h1set the flow type (IRQ_TYPE_LEVEL/etc.) of an IRQh]h1set the flow type (IRQ_TYPE_LEVEL/etc.) of an IRQ}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj;hMhj;ubah}(h]h ]h"]h$]h&]uh1jhj;ubeh}(h]h ]h"]h$]h&]uh1jhj;hMhj(9ubj)}(hC``irq_set_wake`` enable/disable power-management wake-on of an IRQ h](j)}(h``irq_set_wake``h]j)}(hj<h]h irq_set_wake}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj<ubj)}(hhh]jo)}(h1enable/disable power-management wake-on of an IRQh]h1enable/disable power-management wake-on of an IRQ}(hj0<hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj,<hMhj-<ubah}(h]h ]h"]h$]h&]uh1jhj<ubeh}(h]h ]h"]h$]h&]uh1jhj,<hMhj(9ubj)}(hA``irq_bus_lock`` function to lock access to slow bus (i2c) chips h](j)}(h``irq_bus_lock``h]j)}(hjP<h]h irq_bus_lock}(hjR<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjN<ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhjJ<ubj)}(hhh]jo)}(h/function to lock access to slow bus (i2c) chipsh]h/function to lock access to slow bus (i2c) chips}(hji<hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhje<hMhjf<ubah}(h]h ]h"]h$]h&]uh1jhjJ<ubeh}(h]h ]h"]h$]h&]uh1jhje<hMhj(9ubj)}(hI``irq_bus_sync_unlock`` function to sync and unlock slow bus (i2c) chips h](j)}(h``irq_bus_sync_unlock``h]j)}(hj<h]hirq_bus_sync_unlock}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj<ubj)}(hhh]jo)}(h0function to sync and unlock slow bus (i2c) chipsh]h0function to sync and unlock slow bus (i2c) chips}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj<hMhj<ubah}(h]h ]h"]h$]h&]uh1jhj<ubeh}(h]h ]h"]h$]h&]uh1jhj<hMhj(9ubj)}(hE``irq_cpu_online`` configure an interrupt source for a secondary CPU h](j)}(h``irq_cpu_online``h]j)}(hj<h]hirq_cpu_online}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj<ubj)}(hhh]jo)}(h1configure an interrupt source for a secondary CPUh]h1configure an interrupt source for a secondary CPU}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj<hMhj<ubah}(h]h ]h"]h$]h&]uh1jhj<ubeh}(h]h ]h"]h$]h&]uh1jhj<hMhj(9ubj)}(hI``irq_cpu_offline`` un-configure an interrupt source for a secondary CPU h](j)}(h``irq_cpu_offline``h]j)}(hj<h]hirq_cpu_offline}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj<ubj)}(hhh]jo)}(h4un-configure an interrupt source for a secondary CPUh]h4un-configure an interrupt source for a secondary CPU}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj=hMhj=ubah}(h]h ]h"]h$]h&]uh1jhj<ubeh}(h]h ]h"]h$]h&]uh1jhj=hMhj(9ubj)}(hs``irq_suspend`` function called from core code on suspend once per chip, when one or more interrupts are installed h](j)}(h``irq_suspend``h]j)}(hj4=h]h irq_suspend}(hj6=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2=ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj.=ubj)}(hhh]jo)}(hbfunction called from core code on suspend once per chip, when one or more interrupts are installedh]hbfunction called from core code on suspend once per chip, when one or more interrupts are installed}(hjM=hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhjJ=ubah}(h]h ]h"]h$]h&]uh1jhj.=ubeh}(h]h ]h"]h$]h&]uh1jhjI=hMhj(9ubj)}(hr``irq_resume`` function called from core code on resume once per chip, when one ore more interrupts are installed h](j)}(h``irq_resume``h]j)}(hjn=h]h irq_resume}(hjp=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjl=ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhjh=ubj)}(hhh]jo)}(hbfunction called from core code on resume once per chip, when one ore more interrupts are installedh]hbfunction called from core code on resume once per chip, when one ore more interrupts are installed}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj=ubah}(h]h ]h"]h$]h&]uh1jhjh=ubeh}(h]h ]h"]h$]h&]uh1jhj=hMhj(9ubj)}(hM``irq_pm_shutdown`` function called from core code on shutdown once per chip h](j)}(h``irq_pm_shutdown``h]j)}(hj=h]hirq_pm_shutdown}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj=ubj)}(hhh]jo)}(h8function called from core code on shutdown once per chiph]h8function called from core code on shutdown once per chip}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj=hMhj=ubah}(h]h ]h"]h$]h&]uh1jhj=ubeh}(h]h ]h"]h$]h&]uh1jhj=hMhj(9ubj)}(hK``irq_calc_mask`` Optional function to set irq_data.mask for special cases h](j)}(h``irq_calc_mask``h]j)}(hj=h]h irq_calc_mask}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj=ubj)}(hhh]jo)}(h8Optional function to set irq_data.mask for special casesh]h8Optional function to set irq_data.mask for special cases}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj=hMhj=ubah}(h]h ]h"]h$]h&]uh1jhj=ubeh}(h]h ]h"]h$]h&]uh1jhj=hMhj(9ubj)}(hJ``irq_print_chip`` optional to print special chip info in show_interrupts h](j)}(h``irq_print_chip``h]j)}(hj>h]hirq_print_chip}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj>ubj)}(hhh]jo)}(h6optional to print special chip info in show_interruptsh]h6optional to print special chip info in show_interrupts}(hj3>hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj/>hMhj0>ubah}(h]h ]h"]h$]h&]uh1jhj>ubeh}(h]h ]h"]h$]h&]uh1jhj/>hMhj(9ubj)}(hn``irq_request_resources`` optional to request resources before calling any other callback related to this irq h](j)}(h``irq_request_resources``h]j)}(hjS>h]hirq_request_resources}(hjU>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQ>ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhjM>ubj)}(hhh]jo)}(hSoptional to request resources before calling any other callback related to this irqh]hSoptional to request resources before calling any other callback related to this irq}(hjl>hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhji>ubah}(h]h ]h"]h$]h&]uh1jhjM>ubeh}(h]h ]h"]h$]h&]uh1jhjh>hMhj(9ubj)}(h\``irq_release_resources`` optional to release resources acquired with irq_request_resources h](j)}(h``irq_release_resources``h]j)}(hj>h]hirq_release_resources}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj>ubj)}(hhh]jo)}(hAoptional to release resources acquired with irq_request_resourcesh]hAoptional to release resources acquired with irq_request_resources}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj>ubah}(h]h ]h"]h$]h&]uh1jhj>ubeh}(h]h ]h"]h$]h&]uh1jhj>hMhj(9ubj)}(hD``irq_compose_msi_msg`` optional to compose message content for MSI h](j)}(h``irq_compose_msi_msg``h]j)}(hj>h]hirq_compose_msi_msg}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj>ubj)}(hhh]jo)}(h+optional to compose message content for MSIh]h+optional to compose message content for MSI}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj>hMhj>ubah}(h]h ]h"]h$]h&]uh1jhj>ubeh}(h]h ]h"]h$]h&]uh1jhj>hMhj(9ubj)}(h@``irq_write_msi_msg`` optional to write message content for MSI h](j)}(h``irq_write_msi_msg``h]j)}(hj?h]hirq_write_msi_msg}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj>ubj)}(hhh]jo)}(h)optional to write message content for MSIh]h)optional to write message content for MSI}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj?hMhj?ubah}(h]h ]h"]h$]h&]uh1jhj>ubeh}(h]h ]h"]h$]h&]uh1jhj?hMhj(9ubj)}(hD``irq_get_irqchip_state`` return the internal state of an interrupt h](j)}(h``irq_get_irqchip_state``h]j)}(hj9?h]hirq_get_irqchip_state}(hj;?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7?ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj3?ubj)}(hhh]jo)}(h)return the internal state of an interrupth]h)return the internal state of an interrupt}(hjR?hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjN?hMhjO?ubah}(h]h ]h"]h$]h&]uh1jhj3?ubeh}(h]h ]h"]h$]h&]uh1jhjN?hMhj(9ubj)}(h@``irq_set_irqchip_state`` set the internal state of a interrupt h](j)}(h``irq_set_irqchip_state``h]j)}(hjr?h]hirq_set_irqchip_state}(hjt?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjp?ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhjl?ubj)}(hhh]jo)}(h%set the internal state of a interrupth]h%set the internal state of a interrupt}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj?hMhj?ubah}(h]h ]h"]h$]h&]uh1jhjl?ubeh}(h]h ]h"]h$]h&]uh1jhj?hMhj(9ubj)}(hI``irq_set_vcpu_affinity`` optional to target a vCPU in a virtual machine h](j)}(h``irq_set_vcpu_affinity``h]j)}(hj?h]hirq_set_vcpu_affinity}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj?ubj)}(hhh]jo)}(h.optional to target a vCPU in a virtual machineh]h.optional to target a vCPU in a virtual machine}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj?hMhj?ubah}(h]h ]h"]h$]h&]uh1jhj?ubeh}(h]h ]h"]h$]h&]uh1jhj?hMhj(9ubj)}(h:``ipi_send_single`` send a single IPI to destination cpus h](j)}(h``ipi_send_single``h]j)}(hj?h]hipi_send_single}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj?ubj)}(hhh]jo)}(h%send a single IPI to destination cpush]h%send a single IPI to destination cpus}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj?hMhj?ubah}(h]h ]h"]h$]h&]uh1jhj?ubeh}(h]h ]h"]h$]h&]uh1jhj?hMhj(9ubj)}(h=``ipi_send_mask`` send an IPI to destination cpus in cpumask h](j)}(h``ipi_send_mask``h]j)}(hj@h]h ipi_send_mask}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj@ubj)}(hhh]jo)}(h*send an IPI to destination cpus in cpumaskh]h*send an IPI to destination cpus in cpumask}(hj6@hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj2@hMhj3@ubah}(h]h ]h"]h$]h&]uh1jhj@ubeh}(h]h ]h"]h$]h&]uh1jhj2@hMhj(9ubj)}(hH``irq_nmi_setup`` function called from core code before enabling an NMI h](j)}(h``irq_nmi_setup``h]j)}(hjV@h]h irq_nmi_setup}(hjX@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjT@ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhjP@ubj)}(hhh]jo)}(h5function called from core code before enabling an NMIh]h5function called from core code before enabling an NMI}(hjo@hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjk@hMhjl@ubah}(h]h ]h"]h$]h&]uh1jhjP@ubeh}(h]h ]h"]h$]h&]uh1jhjk@hMhj(9ubj)}(hK``irq_nmi_teardown`` function called from core code after disabling an NMI h](j)}(h``irq_nmi_teardown``h]j)}(hj@h]hirq_nmi_teardown}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj@ubj)}(hhh]jo)}(h5function called from core code after disabling an NMIh]h5function called from core code after disabling an NMI}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj@hMhj@ubah}(h]h ]h"]h$]h&]uh1jhj@ubeh}(h]h ]h"]h$]h&]uh1jhj@hMhj(9ubj)}(hQ``irq_force_complete_move`` optional function to force complete pending irq move h](j)}(h``irq_force_complete_move``h]j)}(hj@h]hirq_force_complete_move}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj@ubj)}(hhh]jo)}(h4optional function to force complete pending irq moveh]h4optional function to force complete pending irq move}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj@hMhj@ubah}(h]h ]h"]h$]h&]uh1jhj@ubeh}(h]h ]h"]h$]h&]uh1jhj@hMhj(9ubj)}(h``flags`` chip specific flagsh](j)}(h ``flags``h]j)}(hjAh]hflags}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj@ubj)}(hhh]jo)}(hchip specific flagsh]hchip specific flags}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhjAubah}(h]h ]h"]h$]h&]uh1jhj@ubeh}(h]h ]h"]h$]h&]uh1jhjAhMhj(9ubeh}(h]h ]h"]h$]h&]uh1j{hj8ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj+3hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_chip_regs (C struct)c.irq_chip_regshNtauh1j,hj+3hhhNhNubj>)}(hhh](jC)}(h irq_chip_regsh]jI)}(hstruct irq_chip_regsh](j)}(hjh]hstruct}(hj[AhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWAhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMubja)}(h h]h }(hjiAhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjWAhhhjhAhMubjr)}(h irq_chip_regsh]jx)}(hjUAh]h irq_chip_regs}(hj{AhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjwAubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjWAhhhjhAhMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjSAhhhjhAhMubah}(h]jNAah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhAhMhjPAhhubj5)}(hhh]jo)}(h#register offsets for struct irq_gcih]h#register offsets for struct irq_gci}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhjAhhubah}(h]h ]h"]h$]h&]uh1j4hjPAhhhjhAhMubeh}(h]h ](jK structeh"]h$]h&]jUjK jVjAjWjAjXjYjZuh1j=hhhj+3hNhNubj\)}(hX9**Definition**:: struct irq_chip_regs { unsigned long enable; unsigned long disable; unsigned long mask; unsigned long ack; unsigned long eoi; unsigned long type; }; **Members** ``enable`` Enable register offset to reg_base ``disable`` Disable register offset to reg_base ``mask`` Mask register offset to reg_base ``ack`` Ack register offset to reg_base ``eoi`` Eoi register offset to reg_base ``type`` Type configuration register offset to reg_baseh](jo)}(h**Definition**::h](jf)}(h**Definition**h]h Definition}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjAubh:}(hjAhhhNhNubeh}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhjAubj )}(hstruct irq_chip_regs { unsigned long enable; unsigned long disable; unsigned long mask; unsigned long ack; unsigned long eoi; unsigned long type; };h]hstruct irq_chip_regs { unsigned long enable; unsigned long disable; unsigned long mask; unsigned long ack; unsigned long eoi; unsigned long type; };}hjAsbah}(h]h ]h"]h$]h&]hhuh1j hX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhjAubjo)}(h **Members**h]jf)}(hjAh]hMembers}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjAubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhjAubj|)}(hhh](j)}(h.``enable`` Enable register offset to reg_base h](j)}(h ``enable``h]j)}(hj Bh]henable}(hj BhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhjBubj)}(hhh]jo)}(h"Enable register offset to reg_baseh]h"Enable register offset to reg_base}(hj#BhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjBhMhj Bubah}(h]h ]h"]h$]h&]uh1jhjBubeh}(h]h ]h"]h$]h&]uh1jhjBhMhjBubj)}(h0``disable`` Disable register offset to reg_base h](j)}(h ``disable``h]j)}(hjCBh]hdisable}(hjEBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjABubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj=Bubj)}(hhh]jo)}(h#Disable register offset to reg_baseh]h#Disable register offset to reg_base}(hj\BhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjXBhMhjYBubah}(h]h ]h"]h$]h&]uh1jhj=Bubeh}(h]h ]h"]h$]h&]uh1jhjXBhMhjBubj)}(h*``mask`` Mask register offset to reg_base h](j)}(h``mask``h]j)}(hj|Bh]hmask}(hj~BhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjzBubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhjvBubj)}(hhh]jo)}(h Mask register offset to reg_baseh]h Mask register offset to reg_base}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjBhMhjBubah}(h]h ]h"]h$]h&]uh1jhjvBubeh}(h]h ]h"]h$]h&]uh1jhjBhMhjBubj)}(h(``ack`` Ack register offset to reg_base h](j)}(h``ack``h]j)}(hjBh]hack}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhjBubj)}(hhh]jo)}(hAck register offset to reg_baseh]hAck register offset to reg_base}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjBhMhjBubah}(h]h ]h"]h$]h&]uh1jhjBubeh}(h]h ]h"]h$]h&]uh1jhjBhMhjBubj)}(h(``eoi`` Eoi register offset to reg_base h](j)}(h``eoi``h]j)}(hjBh]heoi}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhjBubj)}(hhh]jo)}(hEoi register offset to reg_baseh]hEoi register offset to reg_base}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjChMhjCubah}(h]h ]h"]h$]h&]uh1jhjBubeh}(h]h ]h"]h$]h&]uh1jhjChMhjBubj)}(h7``type`` Type configuration register offset to reg_baseh](j)}(h``type``h]j)}(hj'Ch]htype}(hj)ChhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%Cubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj!Cubj)}(hhh]jo)}(h.Type configuration register offset to reg_baseh]h.Type configuration register offset to reg_base}(hj@ChhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj=Cubah}(h]h ]h"]h$]h&]uh1jhj!Cubeh}(h]h ]h"]h$]h&]uh1jhj)}(hhh](jC)}(h irq_chip_typeh]jI)}(hstruct irq_chip_typeh](j)}(hjh]hstruct}(hjChhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ChhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMubja)}(h h]h }(hjChhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj}ChhhjChMubjr)}(h irq_chip_typeh]jx)}(hj{Ch]h irq_chip_type}(hjChhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjCubah}(h]h ](jjeh"]h$]h&]hhuh1jqhj}ChhhjChMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjyChhhjChMubah}(h]jtCah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjChMhjvChhubj5)}(hhh]jo)}(h/Generic interrupt chip instance for a flow typeh]h/Generic interrupt chip instance for a flow type}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhjChhubah}(h]h ]h"]h$]h&]uh1j4hjvChhhjChMubeh}(h]h ](jK structeh"]h$]h&]jUjK jVjCjWjCjXjYjZuh1j=hhhj+3hNhNubj\)}(hX.**Definition**:: struct irq_chip_type { struct irq_chip chip; struct irq_chip_regs regs; irq_flow_handler_t handler; u32 type; u32 mask_cache_priv; u32 *mask_cache; }; **Members** ``chip`` The real interrupt chip which provides the callbacks ``regs`` Register offsets for this chip ``handler`` Flow handler associated with this chip ``type`` Chip can handle these flow types ``mask_cache_priv`` Cached mask register private to the chip type ``mask_cache`` Pointer to cached mask registerh](jo)}(h**Definition**::h](jf)}(h**Definition**h]h Definition}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jehjCubh:}(hjChhhNhNubeh}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhjCubj )}(hstruct irq_chip_type { struct irq_chip chip; struct irq_chip_regs regs; irq_flow_handler_t handler; u32 type; u32 mask_cache_priv; u32 *mask_cache; };h]hstruct irq_chip_type { struct irq_chip chip; struct irq_chip_regs regs; irq_flow_handler_t handler; u32 type; u32 mask_cache_priv; u32 *mask_cache; };}hjDsbah}(h]h ]h"]h$]h&]hhuh1j hX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhjCubjo)}(h **Members**h]jf)}(hjDh]hMembers}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjDubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhjCubj|)}(hhh](j)}(h>``chip`` The real interrupt chip which provides the callbacks h](j)}(h``chip``h]j)}(hj0Dh]hchip}(hj2DhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.Dubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj*Dubj)}(hhh]jo)}(h4The real interrupt chip which provides the callbacksh]h4The real interrupt chip which provides the callbacks}(hjIDhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjEDhMhjFDubah}(h]h ]h"]h$]h&]uh1jhj*Dubeh}(h]h ]h"]h$]h&]uh1jhjEDhMhj'Dubj)}(h(``regs`` Register offsets for this chip h](j)}(h``regs``h]j)}(hjiDh]hregs}(hjkDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgDubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhjcDubj)}(hhh]jo)}(hRegister offsets for this chiph]hRegister offsets for this chip}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj~DhMhjDubah}(h]h ]h"]h$]h&]uh1jhjcDubeh}(h]h ]h"]h$]h&]uh1jhj~DhMhj'Dubj)}(h3``handler`` Flow handler associated with this chip h](j)}(h ``handler``h]j)}(hjDh]hhandler}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhjDubj)}(hhh]jo)}(h&Flow handler associated with this chiph]h&Flow handler associated with this chip}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjDhMhjDubah}(h]h ]h"]h$]h&]uh1jhjDubeh}(h]h ]h"]h$]h&]uh1jhjDhMhj'Dubj)}(h*``type`` Chip can handle these flow types h](j)}(h``type``h]j)}(hjDh]htype}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhjDubj)}(hhh]jo)}(h Chip can handle these flow typesh]h Chip can handle these flow types}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjDhMhjDubah}(h]h ]h"]h$]h&]uh1jhjDubeh}(h]h ]h"]h$]h&]uh1jhjDhMhj'Dubj)}(hB``mask_cache_priv`` Cached mask register private to the chip type h](j)}(h``mask_cache_priv``h]j)}(hjEh]hmask_cache_priv}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhjEubj)}(hhh]jo)}(h-Cached mask register private to the chip typeh]h-Cached mask register private to the chip type}(hj-EhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj)EhMhj*Eubah}(h]h ]h"]h$]h&]uh1jhjEubeh}(h]h ]h"]h$]h&]uh1jhj)EhMhj'Dubj)}(h.``mask_cache`` Pointer to cached mask registerh](j)}(h``mask_cache``h]j)}(hjMEh]h mask_cache}(hjOEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKEubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhjGEubj)}(hhh]jo)}(hPointer to cached mask registerh]hPointer to cached mask register}(hjfEhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhjcEubah}(h]h ]h"]h$]h&]uh1jhjGEubeh}(h]h ]h"]h$]h&]uh1jhjbEhMhj'Dubeh}(h]h ]h"]h$]h&]uh1j{hjCubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj+3hhhNhNubjo)}(h**Description**h]jf)}(hjEh]h Description}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjEubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj+3hhubjo)}(hA irq_generic_chip can have several instances of irq_chip_type when it requires different functions and register offsets for different flow types.h]hA irq_generic_chip can have several instances of irq_chip_type when it requires different functions and register offsets for different flow types.}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj+3hhubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_chip_generic (C struct)c.irq_chip_generichNtauh1j,hj+3hhhNhNubj>)}(hhh](jC)}(hirq_chip_generich]jI)}(hstruct irq_chip_generich](j)}(hjh]hstruct}(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMubja)}(h h]h }(hjEhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjEhhhjEhMubjr)}(hirq_chip_generich]jx)}(hjEh]hirq_chip_generic}(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjEubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjEhhhjEhMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjEhhhjEhMubah}(h]jEah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjEhMhjEhhubj5)}(hhh]jo)}(hGeneric irq chip data structureh]hGeneric irq chip data structure}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj Fhhubah}(h]h ]h"]h$]h&]uh1j4hjEhhhjEhMubeh}(h]h ](jK structeh"]h$]h&]jUjK jVj(FjWj(FjXjYjZuh1j=hhhj+3hNhNubj\)}(hX**Definition**:: struct irq_chip_generic { raw_spinlock_t lock; void __iomem *reg_base; u32 (*reg_readl)(void __iomem *addr); void (*reg_writel)(u32 val, void __iomem *addr); void (*suspend)(struct irq_chip_generic *gc); void (*resume)(struct irq_chip_generic *gc); unsigned int irq_base; unsigned int irq_cnt; u32 mask_cache; u32 wake_enabled; u32 wake_active; unsigned int num_ct; void *private; unsigned long installed; unsigned long unused; struct irq_domain *domain; struct list_head list; struct irq_chip_type chip_types[]; }; **Members** ``lock`` Lock to protect register and cache data access ``reg_base`` Register base address (virtual) ``reg_readl`` Alternate I/O accessor (defaults to readl if NULL) ``reg_writel`` Alternate I/O accessor (defaults to writel if NULL) ``suspend`` Function called from core code on suspend once per chip; can be useful instead of irq_chip::suspend to handle chip details even when no interrupts are in use ``resume`` Function called from core code on resume once per chip; can be useful instead of irq_chip::suspend to handle chip details even when no interrupts are in use ``irq_base`` Interrupt base nr for this chip ``irq_cnt`` Number of interrupts handled by this chip ``mask_cache`` Cached mask register shared between all chip types ``wake_enabled`` Interrupt can wakeup from suspend ``wake_active`` Interrupt is marked as an wakeup from suspend source ``num_ct`` Number of available irq_chip_type instances (usually 1) ``private`` Private data for non generic chip callbacks ``installed`` bitfield to denote installed interrupts ``unused`` bitfield to denote unused interrupts ``domain`` irq domain pointer ``list`` List head for keeping track of instances ``chip_types`` Array of interrupt irq_chip_typesh](jo)}(h**Definition**::h](jf)}(h**Definition**h]h Definition}(hj4FhhhNhNubah}(h]h ]h"]h$]h&]uh1jehj0Fubh:}(hj0FhhhNhNubeh}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj,Fubj )}(hXstruct irq_chip_generic { raw_spinlock_t lock; void __iomem *reg_base; u32 (*reg_readl)(void __iomem *addr); void (*reg_writel)(u32 val, void __iomem *addr); void (*suspend)(struct irq_chip_generic *gc); void (*resume)(struct irq_chip_generic *gc); unsigned int irq_base; unsigned int irq_cnt; u32 mask_cache; u32 wake_enabled; u32 wake_active; unsigned int num_ct; void *private; unsigned long installed; unsigned long unused; struct irq_domain *domain; struct list_head list; struct irq_chip_type chip_types[]; };h]hXstruct irq_chip_generic { raw_spinlock_t lock; void __iomem *reg_base; u32 (*reg_readl)(void __iomem *addr); void (*reg_writel)(u32 val, void __iomem *addr); void (*suspend)(struct irq_chip_generic *gc); void (*resume)(struct irq_chip_generic *gc); unsigned int irq_base; unsigned int irq_cnt; u32 mask_cache; u32 wake_enabled; u32 wake_active; unsigned int num_ct; void *private; unsigned long installed; unsigned long unused; struct irq_domain *domain; struct list_head list; struct irq_chip_type chip_types[]; };}hjMFsbah}(h]h ]h"]h$]h&]hhuh1j hX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj,Fubjo)}(h **Members**h]jf)}(hj^Fh]hMembers}(hj`FhhhNhNubah}(h]h ]h"]h$]h&]uh1jehj\Fubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj,Fubj|)}(hhh](j)}(h8``lock`` Lock to protect register and cache data access h](j)}(h``lock``h]j)}(hj}Fh]hlock}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj{Fubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhjwFubj)}(hhh]jo)}(h.Lock to protect register and cache data accessh]h.Lock to protect register and cache data access}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjFhMhjFubah}(h]h ]h"]h$]h&]uh1jhjwFubeh}(h]h ]h"]h$]h&]uh1jhjFhMhjtFubj)}(h-``reg_base`` Register base address (virtual) h](j)}(h ``reg_base``h]j)}(hjFh]hreg_base}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhjFubj)}(hhh]jo)}(hRegister base address (virtual)h]hRegister base address (virtual)}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjFhMhjFubah}(h]h ]h"]h$]h&]uh1jhjFubeh}(h]h ]h"]h$]h&]uh1jhjFhMhjtFubj)}(hA``reg_readl`` Alternate I/O accessor (defaults to readl if NULL) h](j)}(h ``reg_readl``h]j)}(hjFh]h reg_readl}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhjFubj)}(hhh]jo)}(h2Alternate I/O accessor (defaults to readl if NULL)h]h2Alternate I/O accessor (defaults to readl if NULL)}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjGhMhjGubah}(h]h ]h"]h$]h&]uh1jhjFubeh}(h]h ]h"]h$]h&]uh1jhjGhMhjtFubj)}(hC``reg_writel`` Alternate I/O accessor (defaults to writel if NULL) h](j)}(h``reg_writel``h]j)}(hj(Gh]h reg_writel}(hj*GhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&Gubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj"Gubj)}(hhh]jo)}(h3Alternate I/O accessor (defaults to writel if NULL)h]h3Alternate I/O accessor (defaults to writel if NULL)}(hjAGhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj=GhMhj>Gubah}(h]h ]h"]h$]h&]uh1jhj"Gubeh}(h]h ]h"]h$]h&]uh1jhj=GhMhjtFubj)}(h``suspend`` Function called from core code on suspend once per chip; can be useful instead of irq_chip::suspend to handle chip details even when no interrupts are in use h](j)}(h ``suspend``h]j)}(hjaGh]hsuspend}(hjcGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_Gubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj[Gubj)}(hhh]jo)}(hFunction called from core code on suspend once per chip; can be useful instead of irq_chip::suspend to handle chip details even when no interrupts are in useh]hFunction called from core code on suspend once per chip; can be useful instead of irq_chip::suspend to handle chip details even when no interrupts are in use}(hjzGhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhjwGubah}(h]h ]h"]h$]h&]uh1jhj[Gubeh}(h]h ]h"]h$]h&]uh1jhjvGhMhjtFubj)}(h``resume`` Function called from core code on resume once per chip; can be useful instead of irq_chip::suspend to handle chip details even when no interrupts are in use h](j)}(h ``resume``h]j)}(hjGh]hresume}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhM hjGubj)}(hhh]jo)}(hFunction called from core code on resume once per chip; can be useful instead of irq_chip::suspend to handle chip details even when no interrupts are in useh]hFunction called from core code on resume once per chip; can be useful instead of irq_chip::suspend to handle chip details even when no interrupts are in use}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhM hjGubah}(h]h ]h"]h$]h&]uh1jhjGubeh}(h]h ]h"]h$]h&]uh1jhjGhM hjtFubj)}(h-``irq_base`` Interrupt base nr for this chip h](j)}(h ``irq_base``h]j)}(hjGh]hirq_base}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhM hjGubj)}(hhh]jo)}(hInterrupt base nr for this chiph]hInterrupt base nr for this chip}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjGhM hjGubah}(h]h ]h"]h$]h&]uh1jhjGubeh}(h]h ]h"]h$]h&]uh1jhjGhM hjtFubj)}(h6``irq_cnt`` Number of interrupts handled by this chip h](j)}(h ``irq_cnt``h]j)}(hjHh]hirq_cnt}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj Hubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhM hjHubj)}(hhh]jo)}(h)Number of interrupts handled by this chiph]h)Number of interrupts handled by this chip}(hj'HhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj#HhM hj$Hubah}(h]h ]h"]h$]h&]uh1jhjHubeh}(h]h ]h"]h$]h&]uh1jhj#HhM hjtFubj)}(hB``mask_cache`` Cached mask register shared between all chip types h](j)}(h``mask_cache``h]j)}(hjGHh]h mask_cache}(hjIHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEHubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhjAHubj)}(hhh]jo)}(h2Cached mask register shared between all chip typesh]h2Cached mask register shared between all chip types}(hj`HhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj\HhMhj]Hubah}(h]h ]h"]h$]h&]uh1jhjAHubeh}(h]h ]h"]h$]h&]uh1jhj\HhMhjtFubj)}(h3``wake_enabled`` Interrupt can wakeup from suspend h](j)}(h``wake_enabled``h]j)}(hjHh]h wake_enabled}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~Hubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhjzHubj)}(hhh]jo)}(h!Interrupt can wakeup from suspendh]h!Interrupt can wakeup from suspend}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjHhMhjHubah}(h]h ]h"]h$]h&]uh1jhjzHubeh}(h]h ]h"]h$]h&]uh1jhjHhMhjtFubj)}(hE``wake_active`` Interrupt is marked as an wakeup from suspend source h](j)}(h``wake_active``h]j)}(hjHh]h wake_active}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhjHubj)}(hhh]jo)}(h4Interrupt is marked as an wakeup from suspend sourceh]h4Interrupt is marked as an wakeup from suspend source}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjHhMhjHubah}(h]h ]h"]h$]h&]uh1jhjHubeh}(h]h ]h"]h$]h&]uh1jhjHhMhjtFubj)}(hC``num_ct`` Number of available irq_chip_type instances (usually 1) h](j)}(h ``num_ct``h]j)}(hjHh]hnum_ct}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhjHubj)}(hhh]jo)}(h7Number of available irq_chip_type instances (usually 1)h]h7Number of available irq_chip_type instances (usually 1)}(hj IhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjIhMhjIubah}(h]h ]h"]h$]h&]uh1jhjHubeh}(h]h ]h"]h$]h&]uh1jhjIhMhjtFubj)}(h8``private`` Private data for non generic chip callbacks h](j)}(h ``private``h]j)}(hj+Ih]hprivate}(hj-IhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)Iubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj%Iubj)}(hhh]jo)}(h+Private data for non generic chip callbacksh]h+Private data for non generic chip callbacks}(hjDIhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj@IhMhjAIubah}(h]h ]h"]h$]h&]uh1jhj%Iubeh}(h]h ]h"]h$]h&]uh1jhj@IhMhjtFubj)}(h6``installed`` bitfield to denote installed interrupts h](j)}(h ``installed``h]j)}(hjdIh]h installed}(hjfIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbIubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj^Iubj)}(hhh]jo)}(h'bitfield to denote installed interruptsh]h'bitfield to denote installed interrupts}(hj}IhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjyIhMhjzIubah}(h]h ]h"]h$]h&]uh1jhj^Iubeh}(h]h ]h"]h$]h&]uh1jhjyIhMhjtFubj)}(h0``unused`` bitfield to denote unused interrupts h](j)}(h ``unused``h]j)}(hjIh]hunused}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhjIubj)}(hhh]jo)}(h$bitfield to denote unused interruptsh]h$bitfield to denote unused interrupts}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjIhMhjIubah}(h]h ]h"]h$]h&]uh1jhjIubeh}(h]h ]h"]h$]h&]uh1jhjIhMhjtFubj)}(h``domain`` irq domain pointer h](j)}(h ``domain``h]j)}(hjIh]hdomain}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhjIubj)}(hhh]jo)}(hirq domain pointerh]hirq domain pointer}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjIhMhjIubah}(h]h ]h"]h$]h&]uh1jhjIubeh}(h]h ]h"]h$]h&]uh1jhjIhMhjtFubj)}(h2``list`` List head for keeping track of instances h](j)}(h``list``h]j)}(hjJh]hlist}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj Jubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj Jubj)}(hhh]jo)}(h(List head for keeping track of instancesh]h(List head for keeping track of instances}(hj(JhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj$JhMhj%Jubah}(h]h ]h"]h$]h&]uh1jhj Jubeh}(h]h ]h"]h$]h&]uh1jhj$JhMhjtFubj)}(h0``chip_types`` Array of interrupt irq_chip_typesh](j)}(h``chip_types``h]j)}(hjHJh]h chip_types}(hjJJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFJubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhjBJubj)}(hhh]jo)}(h!Array of interrupt irq_chip_typesh]h!Array of interrupt irq_chip_types}(hjaJhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj^Jubah}(h]h ]h"]h$]h&]uh1jhjBJubeh}(h]h ]h"]h$]h&]uh1jhj]JhMhjtFubeh}(h]h ]h"]h$]h&]uh1j{hj,Fubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj+3hhhNhNubjo)}(h**Description**h]jf)}(hjJh]h Description}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjJubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj+3hhubjo)}(hX-Note, that irq_chip_generic can have multiple irq_chip_type implementations which can be associated to a particular irq line of an irq_chip_generic instance. That allows to share and protect state in an irq_chip_generic instance when we need to implement different flow mechanisms (level/edge) for it.h]hX-Note, that irq_chip_generic can have multiple irq_chip_type implementations which can be associated to a particular irq line of an irq_chip_generic instance. That allows to share and protect state in an irq_chip_generic instance when we need to implement different flow mechanisms (level/edge) for it.}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMhj+3hhubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_gc_flags (C enum)c.irq_gc_flagshNtauh1j,hj+3hhhNhNubj>)}(hhh](jC)}(h irq_gc_flagsh]jI)}(henum irq_gc_flagsh](j)}(hj%h]henum}(hjJhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhM!ubja)}(h h]h }(hjJhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjJhhhjJhM!ubjr)}(h irq_gc_flagsh]jx)}(hjJh]h irq_gc_flags}(hjJhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjJubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjJhhhjJhM!ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjJhhhjJhM!ubah}(h]jJah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjJhM!hjJhhubj5)}(hhh]jo)}(h*Initialization flags for generic irq chipsh]h*Initialization flags for generic irq chips}(hj KhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhM4hjKhhubah}(h]h ]h"]h$]h&]uh1j4hjJhhhjJhM!ubeh}(h]h ](jK enumeh"]h$]h&]jUjK jVj#KjWj#KjXjYjZuh1j=hhhj+3hNhNubj\)}(hX**Constants** ``IRQ_GC_INIT_MASK_CACHE`` Initialize the mask_cache by reading mask reg ``IRQ_GC_INIT_NESTED_LOCK`` Set the lock class of the irqs to nested for irq chips which need to call irq_set_wake() on the parent irq. Usually GPIO implementations ``IRQ_GC_MASK_CACHE_PER_TYPE`` Mask cache is chip type private ``IRQ_GC_NO_MASK`` Do not calculate irq_data->mask ``IRQ_GC_BE_IO`` Use big-endian register accesses (default: LE)h](jo)}(h **Constants**h]jf)}(hj-Kh]h Constants}(hj/KhhhNhNubah}(h]h ]h"]h$]h&]uh1jehj+Kubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhM8hj'Kubj|)}(hhh](j)}(hI``IRQ_GC_INIT_MASK_CACHE`` Initialize the mask_cache by reading mask reg h](j)}(h``IRQ_GC_INIT_MASK_CACHE``h]j)}(hjLKh]hIRQ_GC_INIT_MASK_CACHE}(hjNKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJKubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhM;hjFKubj)}(hhh]jo)}(h-Initialize the mask_cache by reading mask regh]h-Initialize the mask_cache by reading mask reg}(hjeKhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjaKhM;hjbKubah}(h]h ]h"]h$]h&]uh1jhjFKubeh}(h]h ]h"]h$]h&]uh1jhjaKhM;hjCKubj)}(h``IRQ_GC_INIT_NESTED_LOCK`` Set the lock class of the irqs to nested for irq chips which need to call irq_set_wake() on the parent irq. Usually GPIO implementations h](j)}(h``IRQ_GC_INIT_NESTED_LOCK``h]j)}(hjKh]hIRQ_GC_INIT_NESTED_LOCK}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhM@hjKubj)}(hhh]jo)}(hSet the lock class of the irqs to nested for irq chips which need to call irq_set_wake() on the parent irq. Usually GPIO implementationsh]hSet the lock class of the irqs to nested for irq chips which need to call irq_set_wake() on the parent irq. Usually GPIO implementations}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhM>hjKubah}(h]h ]h"]h$]h&]uh1jhjKubeh}(h]h ]h"]h$]h&]uh1jhjKhM@hjCKubj)}(h?``IRQ_GC_MASK_CACHE_PER_TYPE`` Mask cache is chip type private h](j)}(h``IRQ_GC_MASK_CACHE_PER_TYPE``h]j)}(hjKh]hIRQ_GC_MASK_CACHE_PER_TYPE}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMChjKubj)}(hhh]jo)}(hMask cache is chip type privateh]hMask cache is chip type private}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjKhMChjKubah}(h]h ]h"]h$]h&]uh1jhjKubeh}(h]h ]h"]h$]h&]uh1jhjKhMChjCKubj)}(h3``IRQ_GC_NO_MASK`` Do not calculate irq_data->mask h](j)}(h``IRQ_GC_NO_MASK``h]j)}(hjKh]hIRQ_GC_NO_MASK}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMFhjKubj)}(hhh]jo)}(hDo not calculate irq_data->maskh]hDo not calculate irq_data->mask}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj LhMFhjLubah}(h]h ]h"]h$]h&]uh1jhjKubeh}(h]h ]h"]h$]h&]uh1jhj LhMFhjCKubj)}(h?``IRQ_GC_BE_IO`` Use big-endian register accesses (default: LE)h](j)}(h``IRQ_GC_BE_IO``h]j)}(hj1Lh]h IRQ_GC_BE_IO}(hj3LhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/Lubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMHhj+Lubj)}(hhh]jo)}(h.Use big-endian register accesses (default: LE)h]h.Use big-endian register accesses (default: LE)}(hjJLhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMIhjGLubah}(h]h ]h"]h$]h&]uh1jhj+Lubeh}(h]h ]h"]h$]h&]uh1jhjFLhMHhjCKubeh}(h]h ]h"]h$]h&]uh1j{hj'Kubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj+3hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9'irq_domain_chip_generic_info (C struct)c.irq_domain_chip_generic_infohNtauh1j,hj+3hhhNhNubj>)}(hhh](jC)}(hirq_domain_chip_generic_infoh]jI)}(h#struct irq_domain_chip_generic_infoh](j)}(hjh]hstruct}(hjLhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjLhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMNubja)}(h h]h }(hjLhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjLhhhjLhMNubjr)}(hirq_domain_chip_generic_infoh]jx)}(hjLh]hirq_domain_chip_generic_info}(hjLhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjLubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjLhhhjLhMNubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjLhhhjLhMNubah}(h]j~Lah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjLhMNhjLhhubj5)}(hhh]jo)}(h"Generic chip information structureh]h"Generic chip information structure}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMZhjLhhubah}(h]h ]h"]h$]h&]uh1j4hjLhhhjLhMNubeh}(h]h ](jK structeh"]h$]h&]jUjK jVjLjWjLjXjYjZuh1j=hhhj+3hNhNubj\)}(hXn**Definition**:: struct irq_domain_chip_generic_info { const char *name; irq_flow_handler_t handler; unsigned int irqs_per_chip; unsigned int num_ct; unsigned int irq_flags_to_clear; unsigned int irq_flags_to_set; enum irq_gc_flags gc_flags; int (*init)(struct irq_chip_generic *gc); void (*exit)(struct irq_chip_generic *gc); }; **Members** ``name`` Name of the generic interrupt chip ``handler`` Interrupt handler used by the generic interrupt chip ``irqs_per_chip`` Number of interrupts each chip handles (max 32) ``num_ct`` Number of irq_chip_type instances associated with each chip ``irq_flags_to_clear`` IRQ_* bits to clear in the mapping function ``irq_flags_to_set`` IRQ_* bits to set in the mapping function ``gc_flags`` Generic chip specific setup flags ``init`` Function called on each chip when they are created. Allow to do some additional chip initialisation. ``exit`` Function called on each chip when they are destroyed. Allow to do some chip cleanup operation.h](jo)}(h**Definition**::h](jf)}(h**Definition**h]h Definition}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjLubh:}(hjLhhhNhNubeh}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhM^hjLubj )}(hXstruct irq_domain_chip_generic_info { const char *name; irq_flow_handler_t handler; unsigned int irqs_per_chip; unsigned int num_ct; unsigned int irq_flags_to_clear; unsigned int irq_flags_to_set; enum irq_gc_flags gc_flags; int (*init)(struct irq_chip_generic *gc); void (*exit)(struct irq_chip_generic *gc); };h]hXstruct irq_domain_chip_generic_info { const char *name; irq_flow_handler_t handler; unsigned int irqs_per_chip; unsigned int num_ct; unsigned int irq_flags_to_clear; unsigned int irq_flags_to_set; enum irq_gc_flags gc_flags; int (*init)(struct irq_chip_generic *gc); void (*exit)(struct irq_chip_generic *gc); };}hj Msbah}(h]h ]h"]h$]h&]hhuh1j hX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhM`hjLubjo)}(h **Members**h]jf)}(hjMh]hMembers}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjMubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:493: ./include/linux/irq.hhMlhjLubj|)}(hhh](j)}(h,``name`` Name of the generic interrupt chip h](j)}(h``name``h]j)}(hj:Mh]hname}(hj)}(hhh](jC)}(h irqactionh]jI)}(hstruct irqactionh](j)}(hjh]hstruct}(hj]OhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYOhhh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhKubja)}(h h]h }(hjkOhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjYOhhhjjOhKubjr)}(h irqactionh]jx)}(hjWOh]h irqaction}(hj}OhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjyOubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjYOhhhjjOhKubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjUOhhhjjOhKubah}(h]jPOah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjjOhKhjROhhubj5)}(hhh]jo)}(hper interrupt action descriptorh]hper interrupt action descriptor}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhKkhjOhhubah}(h]h ]h"]h$]h&]uh1j4hjROhhhjjOhKubeh}(h]h ](jK structeh"]h$]h&]jUjK jVjOjWjOjXjYjZuh1j=hhhj+3hNhNubj\)}(hX**Definition**:: struct irqaction { irq_handler_t handler; void *dev_id; void __percpu *percpu_dev_id; struct irqaction *next; irq_handler_t thread_fn; struct task_struct *thread; struct irqaction *secondary; unsigned int irq; unsigned int flags; unsigned long thread_flags; unsigned long thread_mask; const char *name; struct proc_dir_entry *dir; }; **Members** ``handler`` interrupt handler function ``dev_id`` cookie to identify the device ``percpu_dev_id`` cookie to identify the device ``next`` pointer to the next irqaction for shared interrupts ``thread_fn`` interrupt handler function for threaded interrupts ``thread`` thread pointer for threaded interrupts ``secondary`` pointer to secondary irqaction (force threading) ``irq`` interrupt number ``flags`` flags (see IRQF_* above) ``thread_flags`` flags related to **thread** ``thread_mask`` bitmask for keeping track of **thread** activity ``name`` name of the device ``dir`` pointer to the proc/irq/NN/name entryh](jo)}(h**Definition**::h](jf)}(h**Definition**h]h Definition}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjOubh:}(hjOhhhNhNubeh}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhKohjOubj )}(hXstruct irqaction { irq_handler_t handler; void *dev_id; void __percpu *percpu_dev_id; struct irqaction *next; irq_handler_t thread_fn; struct task_struct *thread; struct irqaction *secondary; unsigned int irq; unsigned int flags; unsigned long thread_flags; unsigned long thread_mask; const char *name; struct proc_dir_entry *dir; };h]hXstruct irqaction { irq_handler_t handler; void *dev_id; void __percpu *percpu_dev_id; struct irqaction *next; irq_handler_t thread_fn; struct task_struct *thread; struct irqaction *secondary; unsigned int irq; unsigned int flags; unsigned long thread_flags; unsigned long thread_mask; const char *name; struct proc_dir_entry *dir; };}hjOsbah}(h]h ]h"]h$]h&]hhuh1j h^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhKqhjOubjo)}(h **Members**h]jf)}(hjOh]hMembers}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjOubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhKhjOubj|)}(hhh](j)}(h'``handler`` interrupt handler function h](j)}(h ``handler``h]j)}(hj Ph]hhandler}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj Pubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhKmhjPubj)}(hhh]jo)}(hinterrupt handler functionh]hinterrupt handler function}(hj%PhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj!PhKmhj"Pubah}(h]h ]h"]h$]h&]uh1jhjPubeh}(h]h ]h"]h$]h&]uh1jhj!PhKmhjPubj)}(h)``dev_id`` cookie to identify the device h](j)}(h ``dev_id``h]j)}(hjEPh]hdev_id}(hjGPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCPubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhKohj?Pubj)}(hhh]jo)}(hcookie to identify the deviceh]hcookie to identify the device}(hj^PhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjZPhKohj[Pubah}(h]h ]h"]h$]h&]uh1jhj?Pubeh}(h]h ]h"]h$]h&]uh1jhjZPhKohjPubj)}(h0``percpu_dev_id`` cookie to identify the device h](j)}(h``percpu_dev_id``h]j)}(hj~Ph]h percpu_dev_id}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|Pubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhKphjxPubj)}(hhh]jo)}(hcookie to identify the deviceh]hcookie to identify the device}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjPhKphjPubah}(h]h ]h"]h$]h&]uh1jhjxPubeh}(h]h ]h"]h$]h&]uh1jhjPhKphjPubj)}(h=``next`` pointer to the next irqaction for shared interrupts h](j)}(h``next``h]j)}(hjPh]hnext}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhKqhjPubj)}(hhh]jo)}(h3pointer to the next irqaction for shared interruptsh]h3pointer to the next irqaction for shared interrupts}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjPhKqhjPubah}(h]h ]h"]h$]h&]uh1jhjPubeh}(h]h ]h"]h$]h&]uh1jhjPhKqhjPubj)}(hA``thread_fn`` interrupt handler function for threaded interrupts h](j)}(h ``thread_fn``h]j)}(hjPh]h thread_fn}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhKthjPubj)}(hhh]jo)}(h2interrupt handler function for threaded interruptsh]h2interrupt handler function for threaded interrupts}(hj QhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjQhKthjQubah}(h]h ]h"]h$]h&]uh1jhjPubeh}(h]h ]h"]h$]h&]uh1jhjQhKthjPubj)}(h2``thread`` thread pointer for threaded interrupts h](j)}(h ``thread``h]j)}(hj)Qh]hthread}(hj+QhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'Qubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhKuhj#Qubj)}(hhh]jo)}(h&thread pointer for threaded interruptsh]h&thread pointer for threaded interrupts}(hjBQhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj>QhKuhj?Qubah}(h]h ]h"]h$]h&]uh1jhj#Qubeh}(h]h ]h"]h$]h&]uh1jhj>QhKuhjPubj)}(h?``secondary`` pointer to secondary irqaction (force threading) h](j)}(h ``secondary``h]j)}(hjbQh]h secondary}(hjdQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`Qubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhKvhj\Qubj)}(hhh]jo)}(h0pointer to secondary irqaction (force threading)h]h0pointer to secondary irqaction (force threading)}(hj{QhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjwQhKvhjxQubah}(h]h ]h"]h$]h&]uh1jhj\Qubeh}(h]h ]h"]h$]h&]uh1jhjwQhKvhjPubj)}(h``irq`` interrupt number h](j)}(h``irq``h]j)}(hjQh]hirq}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhKrhjQubj)}(hhh]jo)}(hinterrupt numberh]hinterrupt number}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjQhKrhjQubah}(h]h ]h"]h$]h&]uh1jhjQubeh}(h]h ]h"]h$]h&]uh1jhjQhKrhjPubj)}(h#``flags`` flags (see IRQF_* above) h](j)}(h ``flags``h]j)}(hjQh]hflags}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhKshjQubj)}(hhh]jo)}(hflags (see IRQF_* above)h]hflags (see IRQF_* above)}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjQhKshjQubah}(h]h ]h"]h$]h&]uh1jhjQubeh}(h]h ]h"]h$]h&]uh1jhjQhKshjPubj)}(h-``thread_flags`` flags related to **thread** h](j)}(h``thread_flags``h]j)}(hj Rh]h thread_flags}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj Rubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhKwhjRubj)}(hhh]jo)}(hflags related to **thread**h](hflags related to }(hj&RhhhNhNubjf)}(h **thread**h]hthread}(hj.RhhhNhNubah}(h]h ]h"]h$]h&]uh1jehj&Rubeh}(h]h ]h"]h$]h&]uh1jnhj"RhKwhj#Rubah}(h]h ]h"]h$]h&]uh1jhjRubeh}(h]h ]h"]h$]h&]uh1jhj"RhKwhjPubj)}(hA``thread_mask`` bitmask for keeping track of **thread** activity h](j)}(h``thread_mask``h]j)}(hjTRh]h thread_mask}(hjVRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRRubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhKxhjNRubj)}(hhh]jo)}(h0bitmask for keeping track of **thread** activityh](hbitmask for keeping track of }(hjmRhhhNhNubjf)}(h **thread**h]hthread}(hjuRhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjmRubh activity}(hjmRhhhNhNubeh}(h]h ]h"]h$]h&]uh1jnhjiRhKxhjjRubah}(h]h ]h"]h$]h&]uh1jhjNRubeh}(h]h ]h"]h$]h&]uh1jhjiRhKxhjPubj)}(h``name`` name of the device h](j)}(h``name``h]j)}(hjRh]hname}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhKnhjRubj)}(hhh]jo)}(hname of the deviceh]hname of the device}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjRhKnhjRubah}(h]h ]h"]h$]h&]uh1jhjRubeh}(h]h ]h"]h$]h&]uh1jhjRhKnhjPubj)}(h-``dir`` pointer to the proc/irq/NN/name entryh](j)}(h``dir``h]j)}(hjRh]hdir}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhKxhjRubj)}(hhh]jo)}(h%pointer to the proc/irq/NN/name entryh]h%pointer to the proc/irq/NN/name entry}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhKyhjRubah}(h]h ]h"]h$]h&]uh1jhjRubeh}(h]h ]h"]h$]h&]uh1jhjRhKxhjPubeh}(h]h ]h"]h$]h&]uh1j{hjOubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj+3hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9request_irq (C function) c.request_irqhNtauh1j,hj+3hhhNhNubj>)}(hhh](jC)}(hkint request_irq (unsigned int irq, irq_handler_t handler, unsigned long flags, const char *name, void *dev)h]jI)}(hjint request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags, const char *name, void *dev)h](jO)}(hinth]hint}(hj2ShhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj.Shhh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhKubja)}(h h]h }(hjAShhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj.Shhhj@ShKubjr)}(h request_irqh]jx)}(h request_irqh]h request_irq}(hjSShhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjOSubah}(h]h ](jjeh"]h$]h&]hhuh1jqhj.Shhhj@ShKubj)}(h[(unsigned int irq, irq_handler_t handler, unsigned long flags, const char *name, void *dev)h](j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hjoShhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjkSubja)}(h h]h }(hj}ShhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjkSubjO)}(hinth]hint}(hjShhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjkSubja)}(h h]h }(hjShhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjkSubjx)}(hirqh]hirq}(hjShhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjkSubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjgSubj)}(hirq_handler_t handlerh](h)}(hhh]jx)}(h irq_handler_th]h irq_handler_t}(hjShhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjSubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjSmodnameN classnameNjj)}j]j)}jjUSsb c.request_irqasbuh1hhjSubja)}(h h]h }(hjShhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjSubjx)}(hhandlerh]hhandler}(hjShhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjSubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjgSubj)}(hunsigned long flagsh](jO)}(hunsignedh]hunsigned}(hj ThhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjTubja)}(h h]h }(hjThhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjTubjO)}(hlongh]hlong}(hj&ThhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjTubja)}(h h]h }(hj4ThhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjTubjx)}(hflagsh]hflags}(hjBThhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjTubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjgSubj)}(hconst char *nameh](j)}(hjmh]hconst}(hj[ThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWTubja)}(h h]h }(hjhThhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjWTubjO)}(hcharh]hchar}(hjvThhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjWTubja)}(h h]h }(hjThhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjWTubj)}(hjh]h*}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWTubjx)}(hnameh]hname}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjWTubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjgSubj)}(h void *devh](jO)}(hvoidh]hvoid}(hjThhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjTubja)}(h h]h }(hjThhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjTubj)}(hjh]h*}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjTubjx)}(hdevh]hdev}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjTubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjgSubeh}(h]h ]h"]h$]h&]hhuh1jhj.Shhhj@ShKubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj*Shhhj@ShKubah}(h]j%Sah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhj@ShKhj'Shhubj5)}(hhh]jo)}(h#Add a handler for an interrupt lineh]h#Add a handler for an interrupt line}(hj UhhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhKhjUhhubah}(h]h ]h"]h$]h&]uh1j4hj'Shhhj@ShKubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj#UjWj#UjXjYjZuh1j=hhhj+3hNhNubj\)}(hX**Parameters** ``unsigned int irq`` The interrupt line to allocate ``irq_handler_t handler`` Function to be called when the IRQ occurs. Primary handler for threaded interrupts If NULL, the default primary handler is installed ``unsigned long flags`` Handling flags ``const char *name`` Name of the device generating this interrupt ``void *dev`` A cookie passed to the handler function **Description** This call allocates an interrupt and establishes a handler; see the documentation for request_threaded_irq() for details.h](jo)}(h**Parameters**h]jf)}(hj-Uh]h Parameters}(hj/UhhhNhNubah}(h]h ]h"]h$]h&]uh1jehj+Uubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhKhj'Uubj|)}(hhh](j)}(h4``unsigned int irq`` The interrupt line to allocate h](j)}(h``unsigned int irq``h]j)}(hjLUh]hunsigned int irq}(hjNUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJUubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhKhjFUubj)}(hhh]jo)}(hThe interrupt line to allocateh]hThe interrupt line to allocate}(hjeUhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjaUhKhjbUubah}(h]h ]h"]h$]h&]uh1jhjFUubeh}(h]h ]h"]h$]h&]uh1jhjaUhKhjCUubj)}(h``irq_handler_t handler`` Function to be called when the IRQ occurs. Primary handler for threaded interrupts If NULL, the default primary handler is installed h](j)}(h``irq_handler_t handler``h]j)}(hjUh]hirq_handler_t handler}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhKhjUubj)}(hhh]jo)}(hFunction to be called when the IRQ occurs. Primary handler for threaded interrupts If NULL, the default primary handler is installedh]hFunction to be called when the IRQ occurs. Primary handler for threaded interrupts If NULL, the default primary handler is installed}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhKhjUubah}(h]h ]h"]h$]h&]uh1jhjUubeh}(h]h ]h"]h$]h&]uh1jhjUhKhjCUubj)}(h'``unsigned long flags`` Handling flags h](j)}(h``unsigned long flags``h]j)}(hjUh]hunsigned long flags}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhKhjUubj)}(hhh]jo)}(hHandling flagsh]hHandling flags}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjUhKhjUubah}(h]h ]h"]h$]h&]uh1jhjUubeh}(h]h ]h"]h$]h&]uh1jhjUhKhjCUubj)}(hB``const char *name`` Name of the device generating this interrupt h](j)}(h``const char *name``h]j)}(hjUh]hconst char *name}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhKhjUubj)}(hhh]jo)}(h,Name of the device generating this interrupth]h,Name of the device generating this interrupt}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj VhKhjVubah}(h]h ]h"]h$]h&]uh1jhjUubeh}(h]h ]h"]h$]h&]uh1jhj VhKhjCUubj)}(h6``void *dev`` A cookie passed to the handler function h](j)}(h ``void *dev``h]j)}(hj1Vh]h void *dev}(hj3VhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/Vubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhKhj+Vubj)}(hhh]jo)}(h'A cookie passed to the handler functionh]h'A cookie passed to the handler function}(hjJVhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjFVhKhjGVubah}(h]h ]h"]h$]h&]uh1jhj+Vubeh}(h]h ]h"]h$]h&]uh1jhjFVhKhjCUubeh}(h]h ]h"]h$]h&]uh1j{hj'Uubjo)}(h**Description**h]jf)}(hjlVh]h Description}(hjnVhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjjVubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhKhj'Uubjo)}(hyThis call allocates an interrupt and establishes a handler; see the documentation for request_threaded_irq() for details.h]hyThis call allocates an interrupt and establishes a handler; see the documentation for request_threaded_irq() for details.}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhKhj'Uubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj+3hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_affinity_notify (C struct)c.irq_affinity_notifyhNtauh1j,hj+3hhhNhNubj>)}(hhh](jC)}(hirq_affinity_notifyh]jI)}(hstruct irq_affinity_notifyh](j)}(hjh]hstruct}(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVhhh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhKubja)}(h h]h }(hjVhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjVhhhjVhKubjr)}(hirq_affinity_notifyh]jx)}(hjVh]hirq_affinity_notify}(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjVubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjVhhhjVhKubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjVhhhjVhKubah}(h]jVah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjVhKhjVhhubj5)}(hhh]jo)}(h0context for notification of IRQ affinity changesh]h0context for notification of IRQ affinity changes}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhMhjVhhubah}(h]h ]h"]h$]h&]uh1j4hjVhhhjVhKubeh}(h]h ](jK structeh"]h$]h&]jUjK jVj WjWj WjXjYjZuh1j=hhhj+3hNhNubj\)}(hX**Definition**:: struct irq_affinity_notify { unsigned int irq; struct kref kref; struct work_struct work; void (*notify)(struct irq_affinity_notify *, const cpumask_t *mask); void (*release)(struct kref *ref); }; **Members** ``irq`` Interrupt to which notification applies ``kref`` Reference count, for internal use ``work`` Work item, for internal use ``notify`` Function to be called on change. This will be called in process context. ``release`` Function to be called on release. This will be called in process context. Once registered, the structure must only be freed when this function is called or later.h](jo)}(h**Definition**::h](jf)}(h**Definition**h]h Definition}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjWubh:}(hjWhhhNhNubeh}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhMhjWubj )}(hstruct irq_affinity_notify { unsigned int irq; struct kref kref; struct work_struct work; void (*notify)(struct irq_affinity_notify *, const cpumask_t *mask); void (*release)(struct kref *ref); };h]hstruct irq_affinity_notify { unsigned int irq; struct kref kref; struct work_struct work; void (*notify)(struct irq_affinity_notify *, const cpumask_t *mask); void (*release)(struct kref *ref); };}hj0Wsbah}(h]h ]h"]h$]h&]hhuh1j h^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhMhjWubjo)}(h **Members**h]jf)}(hjAWh]hMembers}(hjCWhhhNhNubah}(h]h ]h"]h$]h&]uh1jehj?Wubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhMhjWubj|)}(hhh](j)}(h0``irq`` Interrupt to which notification applies h](j)}(h``irq``h]j)}(hj`Wh]hirq}(hjbWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^Wubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhMhjZWubj)}(hhh]jo)}(h'Interrupt to which notification appliesh]h'Interrupt to which notification applies}(hjyWhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjuWhMhjvWubah}(h]h ]h"]h$]h&]uh1jhjZWubeh}(h]h ]h"]h$]h&]uh1jhjuWhMhjWWubj)}(h+``kref`` Reference count, for internal use h](j)}(h``kref``h]j)}(hjWh]hkref}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhMhjWubj)}(hhh]jo)}(h!Reference count, for internal useh]h!Reference count, for internal use}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjWhMhjWubah}(h]h ]h"]h$]h&]uh1jhjWubeh}(h]h ]h"]h$]h&]uh1jhjWhMhjWWubj)}(h%``work`` Work item, for internal use h](j)}(h``work``h]j)}(hjWh]hwork}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhMhjWubj)}(hhh]jo)}(hWork item, for internal useh]hWork item, for internal use}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjWhMhjWubah}(h]h ]h"]h$]h&]uh1jhjWubeh}(h]h ]h"]h$]h&]uh1jhjWhMhjWWubj)}(hU``notify`` Function to be called on change. This will be called in process context. h](j)}(h ``notify``h]j)}(hj Xh]hnotify}(hj XhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj Xubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhMhjXubj)}(hhh]jo)}(hIFunction to be called on change. This will be called in process context.h]hIFunction to be called on change. This will be called in process context.}(hj$XhhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhMhj!Xubah}(h]h ]h"]h$]h&]uh1jhjXubeh}(h]h ]h"]h$]h&]uh1jhj XhMhjWWubj)}(h``release`` Function to be called on release. This will be called in process context. Once registered, the structure must only be freed when this function is called or later.h](j)}(h ``release``h]j)}(hjEXh]hrelease}(hjGXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCXubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhM hj?Xubj)}(hhh]jo)}(hFunction to be called on release. This will be called in process context. Once registered, the structure must only be freed when this function is called or later.h]hFunction to be called on release. This will be called in process context. Once registered, the structure must only be freed when this function is called or later.}(hj^XhhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhMhj[Xubah}(h]h ]h"]h$]h&]uh1jhj?Xubeh}(h]h ]h"]h$]h&]uh1jhjZXhM hjWWubeh}(h]h ]h"]h$]h&]uh1j{hjWubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj+3hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_affinity (C struct)c.irq_affinityhNtauh1j,hj+3hhhNhNubj>)}(hhh](jC)}(h irq_affinityh]jI)}(hstruct irq_affinityh](j)}(hjh]hstruct}(hjXhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjXhhh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhMubja)}(h h]h }(hjXhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjXhhhjXhMubjr)}(h irq_affinityh]jx)}(hjXh]h irq_affinity}(hjXhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjXubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjXhhhjXhMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjXhhhjXhMubah}(h]jXah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjXhMhjXhhubj5)}(hhh]jo)}(h2Description for automatic irq affinity assignmentsh]h2Description for automatic irq affinity assignments}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhMhjXhhubah}(h]h ]h"]h$]h&]uh1j4hjXhhhjXhMubeh}(h]h ](jK structeh"]h$]h&]jUjK jVjXjWjXjXjYjZuh1j=hhhj+3hNhNubj\)}(hXE**Definition**:: struct irq_affinity { unsigned int pre_vectors; unsigned int post_vectors; unsigned int nr_sets; unsigned int set_size[IRQ_AFFINITY_MAX_SETS]; void (*calc_sets)(struct irq_affinity *, unsigned int nvecs); void *priv; }; **Members** ``pre_vectors`` Don't apply affinity to **pre_vectors** at beginning of the MSI(-X) vector space ``post_vectors`` Don't apply affinity to **post_vectors** at end of the MSI(-X) vector space ``nr_sets`` The number of interrupt sets for which affinity spreading is required ``set_size`` Array holding the size of each interrupt set ``calc_sets`` Callback for calculating the number and size of interrupt sets ``priv`` Private data for usage by **calc_sets**, usually a pointer to driver/device specific data.h](jo)}(h**Definition**::h](jf)}(h**Definition**h]h Definition}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjYubh:}(hjYhhhNhNubeh}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhMhjXubj )}(hstruct irq_affinity { unsigned int pre_vectors; unsigned int post_vectors; unsigned int nr_sets; unsigned int set_size[IRQ_AFFINITY_MAX_SETS]; void (*calc_sets)(struct irq_affinity *, unsigned int nvecs); void *priv; };h]hstruct irq_affinity { unsigned int pre_vectors; unsigned int post_vectors; unsigned int nr_sets; unsigned int set_size[IRQ_AFFINITY_MAX_SETS]; void (*calc_sets)(struct irq_affinity *, unsigned int nvecs); void *priv; };}hjYsbah}(h]h ]h"]h$]h&]hhuh1j h^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhMhjXubjo)}(h **Members**h]jf)}(hj/Yh]hMembers}(hj1YhhhNhNubah}(h]h ]h"]h$]h&]uh1jehj-Yubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhM&hjXubj|)}(hhh](j)}(ha``pre_vectors`` Don't apply affinity to **pre_vectors** at beginning of the MSI(-X) vector space h](j)}(h``pre_vectors``h]j)}(hjNYh]h pre_vectors}(hjPYhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLYubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhMhjHYubj)}(hhh]jo)}(hPDon't apply affinity to **pre_vectors** at beginning of the MSI(-X) vector spaceh](hDon’t apply affinity to }(hjgYhhhNhNubjf)}(h**pre_vectors**h]h pre_vectors}(hjoYhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjgYubh) at beginning of the MSI(-X) vector space}(hjgYhhhNhNubeh}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhMhjdYubah}(h]h ]h"]h$]h&]uh1jhjHYubeh}(h]h ]h"]h$]h&]uh1jhjcYhMhjEYubj)}(h]``post_vectors`` Don't apply affinity to **post_vectors** at end of the MSI(-X) vector space h](j)}(h``post_vectors``h]j)}(hjYh]h post_vectors}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjYubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhMhjYubj)}(hhh]jo)}(hKDon't apply affinity to **post_vectors** at end of the MSI(-X) vector spaceh](hDon’t apply affinity to }(hjYhhhNhNubjf)}(h**post_vectors**h]h post_vectors}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjYubh# at end of the MSI(-X) vector space}(hjYhhhNhNubeh}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhMhjYubah}(h]h ]h"]h$]h&]uh1jhjYubeh}(h]h ]h"]h$]h&]uh1jhjYhMhjEYubj)}(hR``nr_sets`` The number of interrupt sets for which affinity spreading is required h](j)}(h ``nr_sets``h]j)}(hjYh]hnr_sets}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjYubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhMhjYubj)}(hhh]jo)}(hEThe number of interrupt sets for which affinity spreading is requiredh]hEThe number of interrupt sets for which affinity spreading is required}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhMhjYubah}(h]h ]h"]h$]h&]uh1jhjYubeh}(h]h ]h"]h$]h&]uh1jhjYhMhjEYubj)}(h:``set_size`` Array holding the size of each interrupt set h](j)}(h ``set_size``h]j)}(hj Zh]hset_size}(hj"ZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhMhjZubj)}(hhh]jo)}(h,Array holding the size of each interrupt seth]h,Array holding the size of each interrupt set}(hj9ZhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj5ZhMhj6Zubah}(h]h ]h"]h$]h&]uh1jhjZubeh}(h]h ]h"]h$]h&]uh1jhj5ZhMhjEYubj)}(hM``calc_sets`` Callback for calculating the number and size of interrupt sets h](j)}(h ``calc_sets``h]j)}(hjYZh]h calc_sets}(hj[ZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWZubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhM!hjSZubj)}(hhh]jo)}(h>Callback for calculating the number and size of interrupt setsh]h>Callback for calculating the number and size of interrupt sets}(hjrZhhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhM hjoZubah}(h]h ]h"]h$]h&]uh1jhjSZubeh}(h]h ]h"]h$]h&]uh1jhjnZhM!hjEYubj)}(hc``priv`` Private data for usage by **calc_sets**, usually a pointer to driver/device specific data.h](j)}(h``priv``h]j)}(hjZh]hpriv}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhM"hjZubj)}(hhh]jo)}(hZPrivate data for usage by **calc_sets**, usually a pointer to driver/device specific data.h](hPrivate data for usage by }(hjZhhhNhNubjf)}(h **calc_sets**h]h calc_sets}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjZubh3, usually a pointer to driver/device specific data.}(hjZhhhNhNubeh}(h]h ]h"]h$]h&]uh1jnhjZhM"hjZubah}(h]h ]h"]h$]h&]uh1jhjZubeh}(h]h ]h"]h$]h&]uh1jhjZhM"hjEYubeh}(h]h ]h"]h$]h&]uh1j{hjXubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj+3hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_affinity_desc (C struct)c.irq_affinity_deschNtauh1j,hj+3hhhNhNubj>)}(hhh](jC)}(hirq_affinity_desch]jI)}(hstruct irq_affinity_desch](j)}(hjh]hstruct}(hjZhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZhhh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhM)ubja)}(h h]h }(hj [hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjZhhhj [hM)ubjr)}(hirq_affinity_desch]jx)}(hjZh]hirq_affinity_desc}(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj[ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjZhhhj [hM)ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjZhhhj [hM)ubah}(h]jZah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhj [hM)hjZhhubj5)}(hhh]jo)}(hInterrupt affinity descriptorh]hInterrupt affinity descriptor}(hj@[hhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhM.hj=[hhubah}(h]h ]h"]h$]h&]uh1j4hjZhhhj [hM)ubeh}(h]h ](jK structeh"]h$]h&]jUjK jVjX[jWjX[jXjYjZuh1j=hhhj+3hNhNubj\)}(h**Definition**:: struct irq_affinity_desc { struct cpumask mask; unsigned int is_managed : 1; }; **Members** ``mask`` cpumask to hold the affinity assignment ``is_managed`` 1 if the interrupt is managed internallyh](jo)}(h**Definition**::h](jf)}(h**Definition**h]h Definition}(hjd[hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj`[ubh:}(hj`[hhhNhNubeh}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhM2hj\[ubj )}(h[struct irq_affinity_desc { struct cpumask mask; unsigned int is_managed : 1; };h]h[struct irq_affinity_desc { struct cpumask mask; unsigned int is_managed : 1; };}hj}[sbah}(h]h ]h"]h$]h&]hhuh1j h^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhM4hj\[ubjo)}(h **Members**h]jf)}(hj[h]hMembers}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj[ubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhM9hj\[ubj|)}(hhh](j)}(h1``mask`` cpumask to hold the affinity assignment h](j)}(h``mask``h]j)}(hj[h]hmask}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhM0hj[ubj)}(hhh]jo)}(h'cpumask to hold the affinity assignmenth]h'cpumask to hold the affinity assignment}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj[hM0hj[ubah}(h]h ]h"]h$]h&]uh1jhj[ubeh}(h]h ]h"]h$]h&]uh1jhj[hM0hj[ubj)}(h7``is_managed`` 1 if the interrupt is managed internallyh](j)}(h``is_managed``h]j)}(hj[h]h is_managed}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhM0hj[ubj)}(hhh]jo)}(h(1 if the interrupt is managed internallyh]h(1 if the interrupt is managed internally}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhM1hj[ubah}(h]h ]h"]h$]h&]uh1jhj[ubeh}(h]h ]h"]h$]h&]uh1jhj[hM0hj[ubeh}(h]h ]h"]h$]h&]uh1j{hj\[ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj+3hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9%irq_update_affinity_hint (C function)c.irq_update_affinity_hinthNtauh1j,hj+3hhhNhNubj>)}(hhh](jC)}(hHint irq_update_affinity_hint (unsigned int irq, const struct cpumask *m)h]jI)}(hGint irq_update_affinity_hint(unsigned int irq, const struct cpumask *m)h](jO)}(hinth]hint}(hj@\hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj<\hhh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhMEubja)}(h h]h }(hjO\hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj<\hhhjN\hMEubjr)}(hirq_update_affinity_hinth]jx)}(hirq_update_affinity_hinth]hirq_update_affinity_hint}(hja\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj]\ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhj<\hhhjN\hMEubj)}(h+(unsigned int irq, const struct cpumask *m)h](j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hj}\hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjy\ubja)}(h h]h }(hj\hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjy\ubjO)}(hinth]hint}(hj\hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjy\ubja)}(h h]h }(hj\hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjy\ubjx)}(hirqh]hirq}(hj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjy\ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhju\ubj)}(hconst struct cpumask *mh](j)}(hjmh]hconst}(hj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\ubja)}(h h]h }(hj\hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj\ubj)}(hjh]hstruct}(hj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\ubja)}(h h]h }(hj\hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj\ubh)}(hhh]jx)}(hcpumaskh]hcpumask}(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj]ubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetj ]modnameN classnameNjj)}j]j)}jjc\sbc.irq_update_affinity_hintasbuh1hhj\ubja)}(h h]h }(hj']hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj\ubj)}(hjh]h*}(hj5]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\ubjx)}(hmh]hm}(hjB]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj\ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhju\ubeh}(h]h ]h"]h$]h&]hhuh1jhj<\hhhjN\hMEubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj8\hhhjN\hMEubah}(h]j3\ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjN\hMEhj5\hhubj5)}(hhh]jo)}(hUpdate the affinity hinth]hUpdate the affinity hint}(hjl]hhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhMEhji]hhubah}(h]h ]h"]h$]h&]uh1j4hj5\hhhjN\hMEubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj]jWj]jXjYjZuh1j=hhhj+3hNhNubj\)}(h**Parameters** ``unsigned int irq`` Interrupt to update ``const struct cpumask *m`` cpumask pointer (NULL to clear the hint) **Description** Updates the affinity hint, but does not change the affinity of the interrupt.h](jo)}(h**Parameters**h]jf)}(hj]h]h Parameters}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj]ubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhMIhj]ubj|)}(hhh](j)}(h)``unsigned int irq`` Interrupt to update h](j)}(h``unsigned int irq``h]j)}(hj]h]hunsigned int irq}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhMFhj]ubj)}(hhh]jo)}(hInterrupt to updateh]hInterrupt to update}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj]hMFhj]ubah}(h]h ]h"]h$]h&]uh1jhj]ubeh}(h]h ]h"]h$]h&]uh1jhj]hMFhj]ubj)}(hE``const struct cpumask *m`` cpumask pointer (NULL to clear the hint) h](j)}(h``const struct cpumask *m``h]j)}(hj]h]hconst struct cpumask *m}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhMGhj]ubj)}(hhh]jo)}(h(cpumask pointer (NULL to clear the hint)h]h(cpumask pointer (NULL to clear the hint)}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj]hMGhj]ubah}(h]h ]h"]h$]h&]uh1jhj]ubeh}(h]h ]h"]h$]h&]uh1jhj]hMGhj]ubeh}(h]h ]h"]h$]h&]uh1j{hj]ubjo)}(h**Description**h]jf)}(hj!^h]h Description}(hj#^hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj^ubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhMIhj]ubjo)}(hMUpdates the affinity hint, but does not change the affinity of the interrupt.h]hMUpdates the affinity hint, but does not change the affinity of the interrupt.}(hj7^hhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhMIhj]ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj+3hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9&irq_set_affinity_and_hint (C function)c.irq_set_affinity_and_hinthNtauh1j,hj+3hhhNhNubj>)}(hhh](jC)}(hIint irq_set_affinity_and_hint (unsigned int irq, const struct cpumask *m)h]jI)}(hHint irq_set_affinity_and_hint(unsigned int irq, const struct cpumask *m)h](jO)}(hinth]hint}(hjf^hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjb^hhh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhMRubja)}(h h]h }(hju^hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjb^hhhjt^hMRubjr)}(hirq_set_affinity_and_hinth]jx)}(hirq_set_affinity_and_hinth]hirq_set_affinity_and_hint}(hj^hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj^ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjb^hhhjt^hMRubj)}(h+(unsigned int irq, const struct cpumask *m)h](j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hj^hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj^ubja)}(h h]h }(hj^hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj^ubjO)}(hinth]hint}(hj^hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj^ubja)}(h h]h }(hj^hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj^ubjx)}(hirqh]hirq}(hj^hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj^ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj^ubj)}(hconst struct cpumask *mh](j)}(hjmh]hconst}(hj^hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj^ubja)}(h h]h }(hj_hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj^ubj)}(hjh]hstruct}(hj_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj^ubja)}(h h]h }(hj_hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj^ubh)}(hhh]jx)}(hcpumaskh]hcpumask}(hj-_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj*_ubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetj/_modnameN classnameNjj)}j]j)}jj^sbc.irq_set_affinity_and_hintasbuh1hhj^ubja)}(h h]h }(hjM_hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj^ubj)}(hjh]h*}(hj[_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj^ubjx)}(hjD]h]hm}(hjh_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj^ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj^ubeh}(h]h ]h"]h$]h&]hhuh1jhjb^hhhjt^hMRubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj^^hhhjt^hMRubah}(h]jY^ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjt^hMRhj[^hhubj5)}(hhh]jo)}(hHUpdate the affinity hint and apply the provided cpumask to the interrupth]hHUpdate the affinity hint and apply the provided cpumask to the interrupt}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhMRhj_hhubah}(h]h ]h"]h$]h&]uh1j4hj[^hhhjt^hMRubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj_jWj_jXjYjZuh1j=hhhj+3hNhNubj\)}(h**Parameters** ``unsigned int irq`` Interrupt to update ``const struct cpumask *m`` cpumask pointer (NULL to clear the hint) **Description** Updates the affinity hint and if **m** is not NULL it applies it as the affinity of that interrupt.h](jo)}(h**Parameters**h]jf)}(hj_h]h Parameters}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj_ubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhMVhj_ubj|)}(hhh](j)}(h)``unsigned int irq`` Interrupt to update h](j)}(h``unsigned int irq``h]j)}(hj_h]hunsigned int irq}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhMThj_ubj)}(hhh]jo)}(hInterrupt to updateh]hInterrupt to update}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj_hMThj_ubah}(h]h ]h"]h$]h&]uh1jhj_ubeh}(h]h ]h"]h$]h&]uh1jhj_hMThj_ubj)}(hE``const struct cpumask *m`` cpumask pointer (NULL to clear the hint) h](j)}(h``const struct cpumask *m``h]j)}(hj `h]hconst struct cpumask *m}(hj `hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj `ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhMUhj`ubj)}(hhh]jo)}(h(cpumask pointer (NULL to clear the hint)h]h(cpumask pointer (NULL to clear the hint)}(hj$`hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj `hMUhj!`ubah}(h]h ]h"]h$]h&]uh1jhj`ubeh}(h]h ]h"]h$]h&]uh1jhj `hMUhj_ubeh}(h]h ]h"]h$]h&]uh1j{hj_ubjo)}(h**Description**h]jf)}(hjF`h]h Description}(hjH`hhhNhNubah}(h]h ]h"]h$]h&]uh1jehjD`ubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhMWhj_ubjo)}(hcUpdates the affinity hint and if **m** is not NULL it applies it as the affinity of that interrupt.h](h!Updates the affinity hint and if }(hj\`hhhNhNubjf)}(h**m**h]hm}(hjd`hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj\`ubh= is not NULL it applies it as the affinity of that interrupt.}(hj\`hhhNhNubeh}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:496: ./include/linux/interrupt.hhMWhj_ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj+3hhhNhNubeh}(h] structuresah ]h"] structuresah$]h&]uh1j8hj:hhhjMhMubj9)}(hhh](j>)}(hPublic Functions Providedh]hPublic Functions Provided}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1j=hj`hhhjMhMubjo)}(heThis chapter contains the autogenerated documentation of the kernel API functions which are exported.h]heThis chapter contains the autogenerated documentation of the kernel API functions which are exported.}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhMhj`hhubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9 synchronize_hardirq (C function)c.synchronize_hardirqhNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(h+bool synchronize_hardirq (unsigned int irq)h]jI)}(h*bool synchronize_hardirq(unsigned int irq)2h](jO)}(hboolh]hbool}(hj`hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj`hhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chKKubja)}(h h]h }(hj`hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj`hhhj`hKKubjr)}(hsynchronize_hardirqh]jx)}(hsynchronize_hardirqh]hsynchronize_hardirq}(hj`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj`ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhj`hhhj`hKKubj)}(h(unsigned int irq)h]j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hjahhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj`ubja)}(h h]h }(hjahhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj`ubjO)}(hinth]hint}(hjahhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj`ubja)}(h h]h }(hj+ahhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj`ubjx)}(hirqh]hirq}(hj9ahhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj`ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj`ubah}(h]h ]h"]h$]h&]hhuh1jhj`hhhj`hKKubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj`hhhj`hKKubah}(h]j`ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhj`hKKhj`hhubj5)}(hhh]jo)}(h2wait for pending hard IRQ handlers (on other CPUs)h]h2wait for pending hard IRQ handlers (on other CPUs)}(hjcahhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chKKhj`ahhubah}(h]h ]h"]h$]h&]uh1j4hj`hhhj`hKKubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj{ajWj{ajXjYjZuh1j=hhhj`hNhNubj\)}(hX **Parameters** ``unsigned int irq`` interrupt number to wait for **Description** This function waits for any pending hard IRQ handlers for this interrupt to complete before returning. If you use this function while holding a resource the IRQ handler may need you will deadlock. It does not take associated threaded handlers into account. Do not use this for shutdown scenarios where you must be sure that all parts (hardirq and threaded handler) have completed. This function may be called - with care - from IRQ context. It does not check whether there is an interrupt in flight at the hardware level, but not serviced yet, as this might deadlock when called with interrupts disabled and the target CPU of the interrupt is the current CPU. **Return** false if a threaded handler is active.h](jo)}(h**Parameters**h]jf)}(hjah]h Parameters}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jehjaubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chKOhjaubj|)}(hhh]j)}(h2``unsigned int irq`` interrupt number to wait for h](j)}(h``unsigned int irq``h]j)}(hjah]hunsigned int irq}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jhjaubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chKLhjaubj)}(hhh]jo)}(hinterrupt number to wait forh]hinterrupt number to wait for}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjahKLhjaubah}(h]h ]h"]h$]h&]uh1jhjaubeh}(h]h ]h"]h$]h&]uh1jhjahKLhjaubah}(h]h ]h"]h$]h&]uh1j{hjaubjo)}(h**Description**h]jf)}(hjah]h Description}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jehjaubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chKNhjaubjo)}(hXThis function waits for any pending hard IRQ handlers for this interrupt to complete before returning. If you use this function while holding a resource the IRQ handler may need you will deadlock. It does not take associated threaded handlers into account.h]hXThis function waits for any pending hard IRQ handlers for this interrupt to complete before returning. If you use this function while holding a resource the IRQ handler may need you will deadlock. It does not take associated threaded handlers into account.}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chKNhjaubjo)}(h{Do not use this for shutdown scenarios where you must be sure that all parts (hardirq and threaded handler) have completed.h]h{Do not use this for shutdown scenarios where you must be sure that all parts (hardirq and threaded handler) have completed.}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chKShjaubjo)}(h;This function may be called - with care - from IRQ context.h]h;This function may be called - with care - from IRQ context.}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chKVhjaubjo)}(hIt does not check whether there is an interrupt in flight at the hardware level, but not serviced yet, as this might deadlock when called with interrupts disabled and the target CPU of the interrupt is the current CPU.h]hIt does not check whether there is an interrupt in flight at the hardware level, but not serviced yet, as this might deadlock when called with interrupts disabled and the target CPU of the interrupt is the current CPU.}(hj"bhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chKXhjaubjo)}(h **Return**h]jf)}(hj3bh]hReturn}(hj5bhhhNhNubah}(h]h ]h"]h$]h&]uh1jehj1bubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chK]hjaubjo)}(h&false if a threaded handler is active.h]h&false if a threaded handler is active.}(hjIbhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chKVhjaubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9synchronize_irq (C function)c.synchronize_irqhNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(h'void synchronize_irq (unsigned int irq)h]jI)}(h&void synchronize_irq(unsigned int irq)h](jO)}(hvoidh]hvoid}(hjxbhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjtbhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chKwubja)}(h h]h }(hjbhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjtbhhhjbhKwubjr)}(hsynchronize_irqh]jx)}(hsynchronize_irqh]hsynchronize_irq}(hjbhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjbubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjtbhhhjbhKwubj)}(h(unsigned int irq)h]j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hjbhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjbubja)}(h h]h }(hjbhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjbubjO)}(hinth]hint}(hjbhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjbubja)}(h h]h }(hjbhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjbubjx)}(hirqh]hirq}(hjbhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjbubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjbubah}(h]h ]h"]h$]h&]hhuh1jhjtbhhhjbhKwubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjpbhhhjbhKwubah}(h]jkbah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjbhKwhjmbhhubj5)}(hhh]jo)}(h-wait for pending IRQ handlers (on other CPUs)h]h-wait for pending IRQ handlers (on other CPUs)}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chKwhjchhubah}(h]h ]h"]h$]h&]uh1j4hjmbhhhjbhKwubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj/cjWj/cjXjYjZuh1j=hhhj`hNhNubj\)}(hX **Parameters** ``unsigned int irq`` interrupt number to wait for **Description** This function waits for any pending IRQ handlers for this interrupt to complete before returning. If you use this function while holding a resource the IRQ handler may need you will deadlock. Can only be called from preemptible code as it might sleep when an interrupt thread is associated to **irq**. It optionally makes sure (when the irq chip supports that method) that the interrupt is not pending in any CPU and waiting for service.h](jo)}(h**Parameters**h]jf)}(hj9ch]h Parameters}(hj;chhhNhNubah}(h]h ]h"]h$]h&]uh1jehj7cubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chK{hj3cubj|)}(hhh]j)}(h2``unsigned int irq`` interrupt number to wait for h](j)}(h``unsigned int irq``h]j)}(hjXch]hunsigned int irq}(hjZchhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVcubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chKxhjRcubj)}(hhh]jo)}(hinterrupt number to wait forh]hinterrupt number to wait for}(hjqchhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjmchKxhjncubah}(h]h ]h"]h$]h&]uh1jhjRcubeh}(h]h ]h"]h$]h&]uh1jhjmchKxhjOcubah}(h]h ]h"]h$]h&]uh1j{hj3cubjo)}(h**Description**h]jf)}(hjch]h Description}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jehjcubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chKzhj3cubjo)}(hThis function waits for any pending IRQ handlers for this interrupt to complete before returning. If you use this function while holding a resource the IRQ handler may need you will deadlock.h]hThis function waits for any pending IRQ handlers for this interrupt to complete before returning. If you use this function while holding a resource the IRQ handler may need you will deadlock.}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chKzhj3cubjo)}(hmCan only be called from preemptible code as it might sleep when an interrupt thread is associated to **irq**.h](heCan only be called from preemptible code as it might sleep when an interrupt thread is associated to }(hjchhhNhNubjf)}(h**irq**h]hirq}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jehjcubh.}(hjchhhNhNubeh}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chK~hj3cubjo)}(hIt optionally makes sure (when the irq chip supports that method) that the interrupt is not pending in any CPU and waiting for service.h]hIt optionally makes sure (when the irq chip supports that method) that the interrupt is not pending in any CPU and waiting for service.}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chKhj3cubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9!irq_can_set_affinity (C function)c.irq_can_set_affinityhNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(h+int irq_can_set_affinity (unsigned int irq)h]jI)}(h*int irq_can_set_affinity(unsigned int irq)h](jO)}(hinth]hint}(hjdhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjdhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chKubja)}(h h]h }(hjdhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjdhhhjdhKubjr)}(hirq_can_set_affinityh]jx)}(hirq_can_set_affinityh]hirq_can_set_affinity}(hj)dhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj%dubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjdhhhjdhKubj)}(h(unsigned int irq)h]j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hjEdhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjAdubja)}(h h]h }(hjSdhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjAdubjO)}(hinth]hint}(hjadhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjAdubja)}(h h]h }(hjodhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjAdubjx)}(hirqh]hirq}(hj}dhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjAdubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj=dubah}(h]h ]h"]h$]h&]hhuh1jhjdhhhjdhKubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjdhhhjdhKubah}(h]jcah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjdhKhjchhubj5)}(hhh]jo)}(h/Check if the affinity of a given irq can be seth]h/Check if the affinity of a given irq can be set}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chKhjdhhubah}(h]h ]h"]h$]h&]uh1j4hjchhhjdhKubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjdjWjdjXjYjZuh1j=hhhj`hNhNubj\)}(h9**Parameters** ``unsigned int irq`` Interrupt to checkh](jo)}(h**Parameters**h]jf)}(hjdh]h Parameters}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjdubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chKhjdubj|)}(hhh]j)}(h'``unsigned int irq`` Interrupt to checkh](j)}(h``unsigned int irq``h]j)}(hjdh]hunsigned int irq}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chKhjdubj)}(hhh]jo)}(hInterrupt to checkh]hInterrupt to check}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chKhjdubah}(h]h ]h"]h$]h&]uh1jhjdubeh}(h]h ]h"]h$]h&]uh1jhjdhKhjdubah}(h]h ]h"]h$]h&]uh1j{hjdubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9%irq_can_set_affinity_usr (C function)c.irq_can_set_affinity_usrhNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(h0bool irq_can_set_affinity_usr (unsigned int irq)h]jI)}(h/bool irq_can_set_affinity_usr(unsigned int irq)h](jO)}(hj`h]hbool}(hjBehhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj>ehhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chKubja)}(h h]h }(hjPehhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj>ehhhjOehKubjr)}(hirq_can_set_affinity_usrh]jx)}(hirq_can_set_affinity_usrh]hirq_can_set_affinity_usr}(hjbehhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj^eubah}(h]h ](jjeh"]h$]h&]hhuh1jqhj>ehhhjOehKubj)}(h(unsigned int irq)h]j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hj~ehhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjzeubja)}(h h]h }(hjehhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjzeubjO)}(hinth]hint}(hjehhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjzeubja)}(h h]h }(hjehhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjzeubjx)}(hirqh]hirq}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjzeubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjveubah}(h]h ]h"]h$]h&]hhuh1jhj>ehhhjOehKubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj:ehhhjOehKubah}(h]j5eah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjOehKhj7ehhubj5)}(hhh]jo)}(h5Check if affinity of a irq can be set from user spaceh]h5Check if affinity of a irq can be set from user space}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chKhjehhubah}(h]h ]h"]h$]h&]uh1j4hj7ehhhjOehKubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjejWjejXjYjZuh1j=hhhj`hNhNubj\)}(h**Parameters** ``unsigned int irq`` Interrupt to check **Description** Like irq_can_set_affinity() above, but additionally checks for the AFFINITY_MANAGED flag.h](jo)}(h**Parameters**h]jf)}(hjfh]h Parameters}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjfubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chKhjeubj|)}(hhh]j)}(h(``unsigned int irq`` Interrupt to check h](j)}(h``unsigned int irq``h]j)}(hj!fh]hunsigned int irq}(hj#fhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chKhjfubj)}(hhh]jo)}(hInterrupt to checkh]hInterrupt to check}(hj:fhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj6fhKhj7fubah}(h]h ]h"]h$]h&]uh1jhjfubeh}(h]h ]h"]h$]h&]uh1jhj6fhKhjfubah}(h]h ]h"]h$]h&]uh1j{hjeubjo)}(h**Description**h]jf)}(hj\fh]h Description}(hj^fhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjZfubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chKhjeubjo)}(hYLike irq_can_set_affinity() above, but additionally checks for the AFFINITY_MANAGED flag.h]hYLike irq_can_set_affinity() above, but additionally checks for the AFFINITY_MANAGED flag.}(hjrfhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chKhjeubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9$irq_set_thread_affinity (C function)c.irq_set_thread_affinityhNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(h4void irq_set_thread_affinity (struct irq_desc *desc)h]jI)}(h3void irq_set_thread_affinity(struct irq_desc *desc)h](jO)}(hvoidh]hvoid}(hjfhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjfhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chKubja)}(h h]h }(hjfhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjfhhhjfhKubjr)}(hirq_set_thread_affinityh]jx)}(hirq_set_thread_affinityh]hirq_set_thread_affinity}(hjfhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjfubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjfhhhjfhKubj)}(h(struct irq_desc *desc)h]j)}(hstruct irq_desc *desch](j)}(hjh]hstruct}(hjfhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjfubja)}(h h]h }(hjfhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjfubh)}(hhh]jx)}(hirq_desch]hirq_desc}(hjfhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjfubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjfmodnameN classnameNjj)}j]j)}jjfsbc.irq_set_thread_affinityasbuh1hhjfubja)}(h h]h }(hjghhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjfubj)}(hjh]h*}(hj*ghhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjfubjx)}(hdesch]hdesc}(hj7ghhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjfubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjfubah}(h]h ]h"]h$]h&]hhuh1jhjfhhhjfhKubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjfhhhjfhKubah}(h]jfah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjfhKhjfhhubj5)}(hhh]jo)}(h%Notify irq threads to adjust affinityh]h%Notify irq threads to adjust affinity}(hjaghhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chKhj^ghhubah}(h]h ]h"]h$]h&]uh1j4hjfhhhjfhKubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjygjWjygjXjYjZuh1j=hhhj`hNhNubj\)}(hX<**Parameters** ``struct irq_desc *desc`` irq descriptor which has affinity changed **Description** Just set IRQTF_AFFINITY and delegate the affinity setting to the interrupt thread itself. We can not call set_cpus_allowed_ptr() here as we hold desc->lock and this code can be called from hard interrupt context.h](jo)}(h**Parameters**h]jf)}(hjgh]h Parameters}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jehjgubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chKhj}gubj|)}(hhh]j)}(hD``struct irq_desc *desc`` irq descriptor which has affinity changed h](j)}(h``struct irq_desc *desc``h]j)}(hjgh]hstruct irq_desc *desc}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chKhjgubj)}(hhh]jo)}(h)irq descriptor which has affinity changedh]h)irq descriptor which has affinity changed}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjghKhjgubah}(h]h ]h"]h$]h&]uh1jhjgubeh}(h]h ]h"]h$]h&]uh1jhjghKhjgubah}(h]h ]h"]h$]h&]uh1j{hj}gubjo)}(h**Description**h]jf)}(hjgh]h Description}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jehjgubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chKhj}gubjo)}(hJust set IRQTF_AFFINITY and delegate the affinity setting to the interrupt thread itself. We can not call set_cpus_allowed_ptr() here as we hold desc->lock and this code can be called from hard interrupt context.h]hJust set IRQTF_AFFINITY and delegate the affinity setting to the interrupt thread itself. We can not call set_cpus_allowed_ptr() here as we hold desc->lock and this code can be called from hard interrupt context.}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chKhj}gubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9%irq_update_affinity_desc (C function)c.irq_update_affinity_deschNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(hSint irq_update_affinity_desc (unsigned int irq, struct irq_affinity_desc *affinity)h]jI)}(hRint irq_update_affinity_desc(unsigned int irq, struct irq_affinity_desc *affinity)h](jO)}(hinth]hint}(hj"hhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMubja)}(h h]h }(hj1hhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhhj0hhMubjr)}(hirq_update_affinity_desch]jx)}(hirq_update_affinity_desch]hirq_update_affinity_desc}(hjChhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj?hubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhhj0hhMubj)}(h6(unsigned int irq, struct irq_affinity_desc *affinity)h](j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hj_hhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj[hubja)}(h h]h }(hjmhhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj[hubjO)}(hinth]hint}(hj{hhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj[hubja)}(h h]h }(hjhhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj[hubjx)}(hirqh]hirq}(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj[hubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjWhubj)}(h"struct irq_affinity_desc *affinityh](j)}(hjh]hstruct}(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhubja)}(h h]h }(hjhhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhubh)}(hhh]jx)}(hirq_affinity_desch]hirq_affinity_desc}(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjhubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjhmodnameN classnameNjj)}j]j)}jjEhsbc.irq_update_affinity_descasbuh1hhjhubja)}(h h]h }(hjhhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhubj)}(hjh]h*}(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhubjx)}(haffinityh]haffinity}(hj ihhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjhubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjWhubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhhj0hhMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhhj0hhMubah}(h]jhah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhj0hhMhjhhhubj5)}(hhh]jo)}(h+Update affinity management for an interrupth]h+Update affinity management for an interrupt}(hj3ihhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhj0ihhubah}(h]h ]h"]h$]h&]uh1j4hjhhhhj0hhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjKijWjKijXjYjZuh1j=hhhj`hNhNubj\)}(hX**Parameters** ``unsigned int irq`` The interrupt number to update ``struct irq_affinity_desc *affinity`` Pointer to the affinity descriptor **Description** This interface can be used to configure the affinity management of interrupts which have been allocated already. There are certain limitations on when it may be used - attempts to use it for when the kernel is configured for generic IRQ reservation mode (in config GENERIC_IRQ_RESERVATION_MODE) will fail, as it may conflict with managed/non-managed interrupt accounting. In addition, attempts to use it on an interrupt which is already started or which has already been configured as managed will also fail, as these mean invalid init state or double init.h](jo)}(h**Parameters**h]jf)}(hjUih]h Parameters}(hjWihhhNhNubah}(h]h ]h"]h$]h&]uh1jehjSiubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjOiubj|)}(hhh](j)}(h4``unsigned int irq`` The interrupt number to update h](j)}(h``unsigned int irq``h]j)}(hjtih]hunsigned int irq}(hjvihhhNhNubah}(h]h ]h"]h$]h&]uh1jhjriubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjniubj)}(hhh]jo)}(hThe interrupt number to updateh]hThe interrupt number to update}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjihMhjiubah}(h]h ]h"]h$]h&]uh1jhjniubeh}(h]h ]h"]h$]h&]uh1jhjihMhjkiubj)}(hJ``struct irq_affinity_desc *affinity`` Pointer to the affinity descriptor h](j)}(h&``struct irq_affinity_desc *affinity``h]j)}(hjih]h"struct irq_affinity_desc *affinity}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjiubj)}(hhh]jo)}(h"Pointer to the affinity descriptorh]h"Pointer to the affinity descriptor}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjihMhjiubah}(h]h ]h"]h$]h&]uh1jhjiubeh}(h]h ]h"]h$]h&]uh1jhjihMhjkiubeh}(h]h ]h"]h$]h&]uh1j{hjOiubjo)}(h**Description**h]jf)}(hjih]h Description}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jehjiubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjOiubjo)}(hpThis interface can be used to configure the affinity management of interrupts which have been allocated already.h]hpThis interface can be used to configure the affinity management of interrupts which have been allocated already.}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjOiubjo)}(hXThere are certain limitations on when it may be used - attempts to use it for when the kernel is configured for generic IRQ reservation mode (in config GENERIC_IRQ_RESERVATION_MODE) will fail, as it may conflict with managed/non-managed interrupt accounting. In addition, attempts to use it on an interrupt which is already started or which has already been configured as managed will also fail, as these mean invalid init state or double init.h]hXThere are certain limitations on when it may be used - attempts to use it for when the kernel is configured for generic IRQ reservation mode (in config GENERIC_IRQ_RESERVATION_MODE) will fail, as it may conflict with managed/non-managed interrupt accounting. In addition, attempts to use it on an interrupt which is already started or which has already been configured as managed will also fail, as these mean invalid init state or double init.}(hj jhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjOiubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_set_affinity (C function)c.irq_set_affinityhNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(hFint irq_set_affinity (unsigned int irq, const struct cpumask *cpumask)h]jI)}(hEint irq_set_affinity(unsigned int irq, const struct cpumask *cpumask)h](jO)}(hinth]hint}(hjkhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjqjubeh}(h]h ]h"]h$]h&]hhuh1jhj8jhhhjJjhMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj4jhhhjJjhMubah}(h]j/jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjJjhMhj1jhhubj5)}(hhh]jo)}(h#Set the irq affinity of a given irqh]h#Set the irq affinity of a given irq}(hjhkhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjekhhubah}(h]h ]h"]h$]h&]uh1j4hj1jhhhjJjhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjkjWjkjXjYjZuh1j=hhhj`hNhNubj\)}(h**Parameters** ``unsigned int irq`` Interrupt to set affinity ``const struct cpumask *cpumask`` cpumask **Description** Fails if cpumask does not contain an online CPUh](jo)}(h**Parameters**h]jf)}(hjkh]h Parameters}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjkubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjkubj|)}(hhh](j)}(h/``unsigned int irq`` Interrupt to set affinity h](j)}(h``unsigned int irq``h]j)}(hjkh]hunsigned int irq}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjkubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjkubj)}(hhh]jo)}(hInterrupt to set affinityh]hInterrupt to set affinity}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjkhMhjkubah}(h]h ]h"]h$]h&]uh1jhjkubeh}(h]h ]h"]h$]h&]uh1jhjkhMhjkubj)}(h*``const struct cpumask *cpumask`` cpumask h](j)}(h!``const struct cpumask *cpumask``h]j)}(hjkh]hconst struct cpumask *cpumask}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjkubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjkubj)}(hhh]jo)}(hcpumaskh]hcpumask}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjkhMhjkubah}(h]h ]h"]h$]h&]uh1jhjkubeh}(h]h ]h"]h$]h&]uh1jhjkhMhjkubeh}(h]h ]h"]h$]h&]uh1j{hjkubjo)}(h**Description**h]jf)}(hjlh]h Description}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjlubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjkubjo)}(h/Fails if cpumask does not contain an online CPUh]h/Fails if cpumask does not contain an online CPU}(hj3lhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjkubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_force_affinity (C function)c.irq_force_affinityhNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(hHint irq_force_affinity (unsigned int irq, const struct cpumask *cpumask)h]jI)}(hGint irq_force_affinity(unsigned int irq, const struct cpumask *cpumask)h](jO)}(hinth]hint}(hjblhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj^lhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMubja)}(h h]h }(hjqlhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj^lhhhjplhMubjr)}(hirq_force_affinityh]jx)}(hirq_force_affinityh]hirq_force_affinity}(hjlhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjlubah}(h]h ](jjeh"]h$]h&]hhuh1jqhj^lhhhjplhMubj)}(h1(unsigned int irq, const struct cpumask *cpumask)h](j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hjlhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjlubja)}(h h]h }(hjlhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjlubjO)}(hinth]hint}(hjlhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjlubja)}(h h]h }(hjlhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjlubjx)}(hirqh]hirq}(hjlhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjlubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjlubj)}(hconst struct cpumask *cpumaskh](j)}(hjmh]hconst}(hjlhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjlubja)}(h h]h }(hjlhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjlubj)}(hjh]hstruct}(hj mhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjlubja)}(h h]h }(hjmhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjlubh)}(hhh]jx)}(hcpumaskh]hcpumask}(hj)mhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj&mubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetj+mmodnameN classnameNjj)}j]j)}jjlsbc.irq_force_affinityasbuh1hhjlubja)}(h h]h }(hjImhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjlubj)}(hjh]h*}(hjWmhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjlubjx)}(hcpumaskh]hcpumask}(hjdmhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjlubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjlubeh}(h]h ]h"]h$]h&]hhuh1jhj^lhhhjplhMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjZlhhhjplhMubah}(h]jUlah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjplhMhjWlhhubj5)}(hhh]jo)}(h%Force the irq affinity of a given irqh]h%Force the irq affinity of a given irq}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjmhhubah}(h]h ]h"]h$]h&]uh1j4hjWlhhhjplhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjmjWjmjXjYjZuh1j=hhhj`hNhNubj\)}(hXC**Parameters** ``unsigned int irq`` Interrupt to set affinity ``const struct cpumask *cpumask`` cpumask **Description** Same as irq_set_affinity, but without checking the mask against online cpus. Solely for low level cpu hotplug code, where we need to make per cpu interrupts affine before the cpu becomes online.h](jo)}(h**Parameters**h]jf)}(hjmh]h Parameters}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjmubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjmubj|)}(hhh](j)}(h/``unsigned int irq`` Interrupt to set affinity h](j)}(h``unsigned int irq``h]j)}(hjmh]hunsigned int irq}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjmubj)}(hhh]jo)}(hInterrupt to set affinityh]hInterrupt to set affinity}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjmhMhjmubah}(h]h ]h"]h$]h&]uh1jhjmubeh}(h]h ]h"]h$]h&]uh1jhjmhMhjmubj)}(h*``const struct cpumask *cpumask`` cpumask h](j)}(h!``const struct cpumask *cpumask``h]j)}(hjnh]hconst struct cpumask *cpumask}(hj nhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjnubj)}(hhh]jo)}(hcpumaskh]hcpumask}(hj!nhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjnhMhjnubah}(h]h ]h"]h$]h&]uh1jhjnubeh}(h]h ]h"]h$]h&]uh1jhjnhMhjmubeh}(h]h ]h"]h$]h&]uh1j{hjmubjo)}(h**Description**h]jf)}(hjCnh]h Description}(hjEnhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjAnubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjmubjo)}(hLSame as irq_set_affinity, but without checking the mask against online cpus.h]hLSame as irq_set_affinity, but without checking the mask against online cpus.}(hjYnhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjmubjo)}(huSolely for low level cpu hotplug code, where we need to make per cpu interrupts affine before the cpu becomes online.h]huSolely for low level cpu hotplug code, where we need to make per cpu interrupts affine before the cpu becomes online.}(hjhnhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjmubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9&irq_set_affinity_notifier (C function)c.irq_set_affinity_notifierhNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(hTint irq_set_affinity_notifier (unsigned int irq, struct irq_affinity_notify *notify)h]jI)}(hSint irq_set_affinity_notifier(unsigned int irq, struct irq_affinity_notify *notify)h](jO)}(hinth]hint}(hjnhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjnhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM ubja)}(h h]h }(hjnhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjnhhhjnhM ubjr)}(hirq_set_affinity_notifierh]jx)}(hirq_set_affinity_notifierh]hirq_set_affinity_notifier}(hjnhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjnubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjnhhhjnhM ubj)}(h6(unsigned int irq, struct irq_affinity_notify *notify)h](j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hjnhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjnubja)}(h h]h }(hjnhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjnubjO)}(hinth]hint}(hjnhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjnubja)}(h h]h }(hjnhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjnubjx)}(hirqh]hirq}(hj ohhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjnubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjnubj)}(h"struct irq_affinity_notify *notifyh](j)}(hjh]hstruct}(hj%ohhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!oubja)}(h h]h }(hj2ohhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj!oubh)}(hhh]jx)}(hirq_affinity_notifyh]hirq_affinity_notify}(hjCohhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj@oubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjEomodnameN classnameNjj)}j]j)}jjnsbc.irq_set_affinity_notifierasbuh1hhj!oubja)}(h h]h }(hjcohhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj!oubj)}(hjh]h*}(hjqohhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!oubjx)}(hnotifyh]hnotify}(hj~ohhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj!oubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjnubeh}(h]h ]h"]h$]h&]hhuh1jhjnhhhjnhM ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjnhhhjnhM ubah}(h]jnah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjnhM hjnhhubj5)}(hhh]jo)}(h,control notification of IRQ affinity changesh]h,control notification of IRQ affinity changes}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hjohhubah}(h]h ]h"]h$]h&]uh1j4hjnhhhjnhM ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjojWjojXjYjZuh1j=hhhj`hNhNubj\)}(hX**Parameters** ``unsigned int irq`` Interrupt for which to enable/disable notification ``struct irq_affinity_notify *notify`` Context for notification, or ``NULL`` to disable notification. Function pointers must be initialised; the other fields will be initialised by this function. **Description** Must be called in process context. Notification may only be enabled after the IRQ is allocated and must be disabled before the IRQ is freed using free_irq().h](jo)}(h**Parameters**h]jf)}(hjoh]h Parameters}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jehjoubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjoubj|)}(hhh](j)}(hH``unsigned int irq`` Interrupt for which to enable/disable notification h](j)}(h``unsigned int irq``h]j)}(hjoh]hunsigned int irq}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hjoubj)}(hhh]jo)}(h2Interrupt for which to enable/disable notificationh]h2Interrupt for which to enable/disable notification}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjohM hjoubah}(h]h ]h"]h$]h&]uh1jhjoubeh}(h]h ]h"]h$]h&]uh1jhjohM hjoubj)}(h``struct irq_affinity_notify *notify`` Context for notification, or ``NULL`` to disable notification. Function pointers must be initialised; the other fields will be initialised by this function. h](j)}(h&``struct irq_affinity_notify *notify``h]j)}(hj"ph]h"struct irq_affinity_notify *notify}(hj$phhhNhNubah}(h]h ]h"]h$]h&]uh1jhj pubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjpubj)}(hhh]jo)}(hContext for notification, or ``NULL`` to disable notification. Function pointers must be initialised; the other fields will be initialised by this function.h](hContext for notification, or }(hj;phhhNhNubj)}(h``NULL``h]hNULL}(hjCphhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;pubhx to disable notification. Function pointers must be initialised; the other fields will be initialised by this function.}(hj;phhhNhNubeh}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hj8pubah}(h]h ]h"]h$]h&]uh1jhjpubeh}(h]h ]h"]h$]h&]uh1jhj7phMhjoubeh}(h]h ]h"]h$]h&]uh1j{hjoubjo)}(h**Description**h]jf)}(hjpph]h Description}(hjrphhhNhNubah}(h]h ]h"]h$]h&]uh1jehjnpubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjoubjo)}(hMust be called in process context. Notification may only be enabled after the IRQ is allocated and must be disabled before the IRQ is freed using free_irq().h]hMust be called in process context. Notification may only be enabled after the IRQ is allocated and must be disabled before the IRQ is freed using free_irq().}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjoubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9"irq_set_vcpu_affinity (C function)c.irq_set_vcpu_affinityhNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(h=int irq_set_vcpu_affinity (unsigned int irq, void *vcpu_info)h]jI)}(h IOMMU -> irq_set_vcpu_affinity().h](jo)}(h**Parameters**h]jf)}(hjqh]h Parameters}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjqubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMqhjqubj|)}(hhh](j)}(h6``unsigned int irq`` interrupt number to set affinity h](j)}(h``unsigned int irq``h]j)}(hjqh]hunsigned int irq}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjqubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMnhjqubj)}(hhh]jo)}(h interrupt number to set affinityh]h interrupt number to set affinity}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjqhMnhjqubah}(h]h ]h"]h$]h&]uh1jhjqubeh}(h]h ]h"]h$]h&]uh1jhjqhMnhjqubj)}(hv``void *vcpu_info`` vCPU specific data or pointer to a percpu array of vCPU specific data for percpu_devid interrupts h](j)}(h``void *vcpu_info``h]j)}(hjrh]hvoid *vcpu_info}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjrubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMphj rubj)}(hhh]jo)}(havCPU specific data or pointer to a percpu array of vCPU specific data for percpu_devid interruptsh]havCPU specific data or pointer to a percpu array of vCPU specific data for percpu_devid interrupts}(hj)rhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMohj&rubah}(h]h ]h"]h$]h&]uh1jhj rubeh}(h]h ]h"]h$]h&]uh1jhj%rhMphjqubeh}(h]h ]h"]h$]h&]uh1j{hjqubjo)}(h**Description**h]jf)}(hjLrh]h Description}(hjNrhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjJrubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMrhjqubjo)}(hThis function uses the vCPU specific data to set the vCPU affinity for an irq. The vCPU specific data is passed from outside, such as KVM. One example code path is as below: KVM -> IOMMU -> irq_set_vcpu_affinity().h]hThis function uses the vCPU specific data to set the vCPU affinity for an irq. The vCPU specific data is passed from outside, such as KVM. One example code path is as below: KVM -> IOMMU -> irq_set_vcpu_affinity().}(hjbrhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMrhjqubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9disable_irq_nosync (C function)c.disable_irq_nosynchNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(h*void disable_irq_nosync (unsigned int irq)h]jI)}(h)void disable_irq_nosync(unsigned int irq)h](jO)}(hvoidh]hvoid}(hjrhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjrhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMubja)}(h h]h }(hjrhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjrhhhjrhMubjr)}(hdisable_irq_nosynch]jx)}(hdisable_irq_nosynch]hdisable_irq_nosync}(hjrhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjrubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjrhhhjrhMubj)}(h(unsigned int irq)h]j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hjrhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjrubja)}(h h]h }(hjrhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjrubjO)}(hinth]hint}(hjrhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjrubja)}(h h]h }(hjrhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjrubjx)}(hirqh]hirq}(hjshhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjrubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjrubah}(h]h ]h"]h$]h&]hhuh1jhjrhhhjrhMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjrhhhjrhMubah}(h]jrah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjrhMhjrhhubj5)}(hhh]jo)}(hdisable an irq without waitingh]hdisable an irq without waiting}(hj0shhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhj-shhubah}(h]h ]h"]h$]h&]uh1j4hjrhhhjrhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjHsjWjHsjXjYjZuh1j=hhhj`hNhNubj\)}(hX>**Parameters** ``unsigned int irq`` Interrupt to disable **Description** Disable the selected interrupt line. Disables and Enables are nested. Unlike disable_irq(), this function does not ensure existing instances of the IRQ handler have completed before returning. This function may be called from IRQ context.h](jo)}(h**Parameters**h]jf)}(hjRsh]h Parameters}(hjTshhhNhNubah}(h]h ]h"]h$]h&]uh1jehjPsubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjLsubj|)}(hhh]j)}(h*``unsigned int irq`` Interrupt to disable h](j)}(h``unsigned int irq``h]j)}(hjqsh]hunsigned int irq}(hjsshhhNhNubah}(h]h ]h"]h$]h&]uh1jhjosubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjksubj)}(hhh]jo)}(hInterrupt to disableh]hInterrupt to disable}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjshMhjsubah}(h]h ]h"]h$]h&]uh1jhjksubeh}(h]h ]h"]h$]h&]uh1jhjshMhjhsubah}(h]h ]h"]h$]h&]uh1j{hjLsubjo)}(h**Description**h]jf)}(hjsh]h Description}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jehjsubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjLsubjo)}(hDisable the selected interrupt line. Disables and Enables are nested. Unlike disable_irq(), this function does not ensure existing instances of the IRQ handler have completed before returning.h]hDisable the selected interrupt line. Disables and Enables are nested. Unlike disable_irq(), this function does not ensure existing instances of the IRQ handler have completed before returning.}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjLsubjo)}(h-This function may be called from IRQ context.h]h-This function may be called from IRQ context.}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjLsubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9disable_irq (C function) c.disable_irqhNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(h#void disable_irq (unsigned int irq)h]jI)}(h"void disable_irq(unsigned int irq)h](jO)}(hvoidh]hvoid}(hjthhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjshhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMubja)}(h h]h }(hjthhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjshhhjthMubjr)}(h disable_irqh]jx)}(h disable_irqh]h disable_irq}(hj!thhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjtubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjshhhjthMubj)}(h(unsigned int irq)h]j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hj=thhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj9tubja)}(h h]h }(hjKthhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj9tubjO)}(hinth]hint}(hjYthhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj9tubja)}(h h]h }(hjgthhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj9tubjx)}(hirqh]hirq}(hjuthhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj9tubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj5tubah}(h]h ]h"]h$]h&]hhuh1jhjshhhjthMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjshhhjthMubah}(h]jsah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjthMhjshhubj5)}(hhh]jo)}(h&disable an irq and wait for completionh]h&disable an irq and wait for completion}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjthhubah}(h]h ]h"]h$]h&]uh1j4hjshhhjthMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjtjWjtjXjYjZuh1j=hhhj`hNhNubj\)}(hX**Parameters** ``unsigned int irq`` Interrupt to disable **Description** Disable the selected interrupt line. Enables and Disables are nested. This function waits for any pending IRQ handlers for this interrupt to complete before returning. If you use this function while holding a resource the IRQ handler may need you will deadlock. Can only be called from preemptible code as it might sleep when an interrupt thread is associated to **irq**.Dh](jo)}(h**Parameters**h]jf)}(hjth]h Parameters}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jehjtubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjtubj|)}(hhh]j)}(h*``unsigned int irq`` Interrupt to disable h](j)}(h``unsigned int irq``h]j)}(hjth]hunsigned int irq}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjtubj)}(hhh]jo)}(hInterrupt to disableh]hInterrupt to disable}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjthMhjtubah}(h]h ]h"]h$]h&]uh1jhjtubeh}(h]h ]h"]h$]h&]uh1jhjthMhjtubah}(h]h ]h"]h$]h&]uh1j{hjtubjo)}(h**Description**h]jf)}(hjuh]h Description}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjuubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjtubjo)}(hFDisable the selected interrupt line. Enables and Disables are nested.h]hFDisable the selected interrupt line. Enables and Disables are nested.}(hj1uhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjtubjo)}(hThis function waits for any pending IRQ handlers for this interrupt to complete before returning. If you use this function while holding a resource the IRQ handler may need you will deadlock.h]hThis function waits for any pending IRQ handlers for this interrupt to complete before returning. If you use this function while holding a resource the IRQ handler may need you will deadlock.}(hj@uhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjtubjo)}(hmCan only be called from preemptible code as it might sleep when an interrupt thread is associated to **irq**.h](heCan only be called from preemptible code as it might sleep when an interrupt thread is associated to }(hjOuhhhNhNubjf)}(h**irq**h]hirq}(hjWuhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjOuubh.}(hjOuhhhNhNubeh}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjtubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9disable_hardirq (C function)c.disable_hardirqhNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(h'bool disable_hardirq (unsigned int irq)h]jI)}(h&bool disable_hardirq(unsigned int irq)h](jO)}(hj`h]hbool}(hjuhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjuhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMubja)}(h h]h }(hjuhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjuhhhjuhMubjr)}(hdisable_hardirqh]jx)}(hdisable_hardirqh]hdisable_hardirq}(hjuhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjuubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjuhhhjuhMubj)}(h(unsigned int irq)h]j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hjuhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjuubja)}(h h]h }(hjuhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjuubjO)}(hinth]hint}(hjuhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjuubja)}(h h]h }(hjuhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjuubjx)}(hirqh]hirq}(hjvhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjuubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjuubah}(h]h ]h"]h$]h&]hhuh1jhjuhhhjuhMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjuhhhjuhMubah}(h]juah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjuhMhjuhhubj5)}(hhh]jo)}(h0disables an irq and waits for hardirq completionh]h0disables an irq and waits for hardirq completion}(hj.vhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhj+vhhubah}(h]h ]h"]h$]h&]uh1j4hjuhhhjuhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjFvjWjFvjXjYjZuh1j=hhhj`hNhNubj\)}(hX8**Parameters** ``unsigned int irq`` Interrupt to disable **Description** Disable the selected interrupt line. Enables and Disables are nested. This function waits for any pending hard IRQ handlers for this interrupt to complete before returning. If you use this function while holding a resource the hard IRQ handler may need you will deadlock. When used to optimistically disable an interrupt from atomic context the return value must be checked. This function may be called - with care - from IRQ context. **Return** false if a threaded handler is active.h](jo)}(h**Parameters**h]jf)}(hjPvh]h Parameters}(hjRvhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjNvubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjJvubj|)}(hhh]j)}(h*``unsigned int irq`` Interrupt to disable h](j)}(h``unsigned int irq``h]j)}(hjovh]hunsigned int irq}(hjqvhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmvubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjivubj)}(hhh]jo)}(hInterrupt to disableh]hInterrupt to disable}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjvhMhjvubah}(h]h ]h"]h$]h&]uh1jhjivubeh}(h]h ]h"]h$]h&]uh1jhjvhMhjfvubah}(h]h ]h"]h$]h&]uh1j{hjJvubjo)}(h**Description**h]jf)}(hjvh]h Description}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjvubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjJvubjo)}(hFDisable the selected interrupt line. Enables and Disables are nested.h]hFDisable the selected interrupt line. Enables and Disables are nested.}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjJvubjo)}(hThis function waits for any pending hard IRQ handlers for this interrupt to complete before returning. If you use this function while holding a resource the hard IRQ handler may need you will deadlock.h]hThis function waits for any pending hard IRQ handlers for this interrupt to complete before returning. If you use this function while holding a resource the hard IRQ handler may need you will deadlock.}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjJvubjo)}(hfWhen used to optimistically disable an interrupt from atomic context the return value must be checked.h]hfWhen used to optimistically disable an interrupt from atomic context the return value must be checked.}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjJvubjo)}(h;This function may be called - with care - from IRQ context.h]h;This function may be called - with care - from IRQ context.}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjJvubjo)}(h **Return**h]jf)}(hjvh]hReturn}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjvubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjJvubjo)}(h&false if a threaded handler is active.h]h&false if a threaded handler is active.}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjJvubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9disable_nmi_nosync (C function)c.disable_nmi_nosynchNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(h*void disable_nmi_nosync (unsigned int irq)h]jI)}(h)void disable_nmi_nosync(unsigned int irq)h](jO)}(hvoidh]hvoid}(hjCwhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj?whhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMubja)}(h h]h }(hjRwhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj?whhhjQwhMubjr)}(hdisable_nmi_nosynch]jx)}(hdisable_nmi_nosynch]hdisable_nmi_nosync}(hjdwhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj`wubah}(h]h ](jjeh"]h$]h&]hhuh1jqhj?whhhjQwhMubj)}(h(unsigned int irq)h]j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hjwhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj|wubja)}(h h]h }(hjwhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj|wubjO)}(hinth]hint}(hjwhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj|wubja)}(h h]h }(hjwhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj|wubjx)}(hirqh]hirq}(hjwhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj|wubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjxwubah}(h]h ]h"]h$]h&]hhuh1jhj?whhhjQwhMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj;whhhjQwhMubah}(h]j6wah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjQwhMhj8whhubj5)}(hhh]jo)}(hdisable an nmi without waitingh]hdisable an nmi without waiting}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjwhhubah}(h]h ]h"]h$]h&]uh1j4hj8whhhjQwhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjwjWjwjXjYjZuh1j=hhhj`hNhNubj\)}(hXV**Parameters** ``unsigned int irq`` Interrupt to disable **Description** Disable the selected interrupt line. Disables and enables are nested. The interrupt to disable must have been requested through request_nmi. Unlike disable_nmi(), this function does not ensure existing instances of the IRQ handler have completed before returning.h](jo)}(h**Parameters**h]jf)}(hjxh]h Parameters}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjxubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjwubj|)}(hhh]j)}(h*``unsigned int irq`` Interrupt to disable h](j)}(h``unsigned int irq``h]j)}(hj#xh]hunsigned int irq}(hj%xhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!xubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjxubj)}(hhh]jo)}(hInterrupt to disableh]hInterrupt to disable}(hj)}(hhh](jC)}(h"void enable_irq (unsigned int irq)h]jI)}(h!void enable_irq(unsigned int irq)h](jO)}(hvoidh]hvoid}(hjxhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjxhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM ubja)}(h h]h }(hjxhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjxhhhjxhM ubjr)}(h enable_irqh]jx)}(h enable_irqh]h enable_irq}(hjxhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjxubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjxhhhjxhM ubj)}(h(unsigned int irq)h]j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hjxhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjxubja)}(h h]h }(hjxhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjxubjO)}(hinth]hint}(hj yhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjxubja)}(h h]h }(hjyhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjxubjx)}(hirqh]hirq}(hj'yhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjxubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjxubah}(h]h ]h"]h$]h&]hhuh1jhjxhhhjxhM ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjxhhhjxhM ubah}(h]jxah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjxhM hjxhhubj5)}(hhh]jo)}(henable handling of an irqh]henable handling of an irq}(hjQyhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hjNyhhubah}(h]h ]h"]h$]h&]uh1j4hjxhhhjxhM ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjiyjWjiyjXjYjZuh1j=hhhj`hNhNubj\)}(hXY**Parameters** ``unsigned int irq`` Interrupt to enable **Description** Undoes the effect of one call to disable_irq(). If this matches the last disable, processing of interrupts on this IRQ line is re-enabled. This function may be called from IRQ context only when desc->irq_data.chip->bus_lock and desc->chip->bus_sync_unlock are NULL !h](jo)}(h**Parameters**h]jf)}(hjsyh]h Parameters}(hjuyhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjqyubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjmyubj|)}(hhh]j)}(h)``unsigned int irq`` Interrupt to enable h](j)}(h``unsigned int irq``h]j)}(hjyh]hunsigned int irq}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjyubj)}(hhh]jo)}(hInterrupt to enableh]hInterrupt to enable}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjyhMhjyubah}(h]h ]h"]h$]h&]uh1jhjyubeh}(h]h ]h"]h$]h&]uh1jhjyhMhjyubah}(h]h ]h"]h$]h&]uh1j{hjmyubjo)}(h**Description**h]jf)}(hjyh]h Description}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjyubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjmyubjo)}(hUndoes the effect of one call to disable_irq(). If this matches the last disable, processing of interrupts on this IRQ line is re-enabled.h]hUndoes the effect of one call to disable_irq(). If this matches the last disable, processing of interrupts on this IRQ line is re-enabled.}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjmyubjo)}(hThis function may be called from IRQ context only when desc->irq_data.chip->bus_lock and desc->chip->bus_sync_unlock are NULL !h]hThis function may be called from IRQ context only when desc->irq_data.chip->bus_lock and desc->chip->bus_sync_unlock are NULL !}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjmyubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9enable_nmi (C function) c.enable_nmihNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(h"void enable_nmi (unsigned int irq)h]jI)}(h!void enable_nmi(unsigned int irq)h](jO)}(hvoidh]hvoid}(hj!zhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjzhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM#ubja)}(h h]h }(hj0zhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjzhhhj/zhM#ubjr)}(h enable_nmih]jx)}(h enable_nmih]h enable_nmi}(hjBzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj>zubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjzhhhj/zhM#ubj)}(h(unsigned int irq)h]j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hj^zhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjZzubja)}(h h]h }(hjlzhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjZzubjO)}(hinth]hint}(hjzzhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjZzubja)}(h h]h }(hjzhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjZzubjx)}(hirqh]hirq}(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjZzubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjVzubah}(h]h ]h"]h$]h&]hhuh1jhjzhhhj/zhM#ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjzhhhj/zhM#ubah}(h]jzah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhj/zhM#hjzhhubj5)}(hhh]jo)}(henable handling of an nmih]henable handling of an nmi}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM#hjzhhubah}(h]h ]h"]h$]h&]uh1j4hjzhhhj/zhM#ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjzjWjzjXjYjZuh1j=hhhj`hNhNubj\)}(hX**Parameters** ``unsigned int irq`` Interrupt to enable **Description** The interrupt to enable must have been requested through request_nmi. Undoes the effect of one call to disable_nmi(). If this matches the last disable, processing of interrupts on this IRQ line is re-enabled.h](jo)}(h**Parameters**h]jf)}(hjzh]h Parameters}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjzubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM'hjzubj|)}(hhh]j)}(h)``unsigned int irq`` Interrupt to enable h](j)}(h``unsigned int irq``h]j)}(hj{h]hunsigned int irq}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjzubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM$hjzubj)}(hhh]jo)}(hInterrupt to enableh]hInterrupt to enable}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj{hM$hj{ubah}(h]h ]h"]h$]h&]uh1jhjzubeh}(h]h ]h"]h$]h&]uh1jhj{hM$hjzubah}(h]h ]h"]h$]h&]uh1j{hjzubjo)}(h**Description**h]jf)}(hj<{h]h Description}(hj>{hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj:{ubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM&hjzubjo)}(hThe interrupt to enable must have been requested through request_nmi. Undoes the effect of one call to disable_nmi(). If this matches the last disable, processing of interrupts on this IRQ line is re-enabled.h]hThe interrupt to enable must have been requested through request_nmi. Undoes the effect of one call to disable_nmi(). If this matches the last disable, processing of interrupts on this IRQ line is re-enabled.}(hjR{hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM&hjzubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_set_irq_wake (C function)c.irq_set_irq_wakehNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(h8int irq_set_irq_wake (unsigned int irq, unsigned int on)h]jI)}(h7int irq_set_irq_wake(unsigned int irq, unsigned int on)h](jO)}(hinth]hint}(hj{hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj}{hhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM>ubja)}(h h]h }(hj{hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj}{hhhj{hM>ubjr)}(hirq_set_irq_wakeh]jx)}(hirq_set_irq_wakeh]hirq_set_irq_wake}(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj{ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhj}{hhhj{hM>ubj)}(h#(unsigned int irq, unsigned int on)h](j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hj{hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj{ubja)}(h h]h }(hj{hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj{ubjO)}(hinth]hint}(hj{hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj{ubja)}(h h]h }(hj{hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj{ubjx)}(hirqh]hirq}(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj{ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj{ubj)}(hunsigned int onh](jO)}(hunsignedh]hunsigned}(hj|hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj |ubja)}(h h]h }(hj|hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj |ubjO)}(hinth]hint}(hj+|hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj |ubja)}(h h]h }(hj9|hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj |ubjx)}(honh]hon}(hjG|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj |ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj{ubeh}(h]h ]h"]h$]h&]hhuh1jhj}{hhhj{hM>ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjy{hhhj{hM>ubah}(h]jt{ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhj{hM>hjv{hhubj5)}(hhh]jo)}(h#control irq power management wakeuph]h#control irq power management wakeup}(hjq|hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM>hjn|hhubah}(h]h ]h"]h$]h&]uh1j4hjv{hhhj{hM>ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj|jWj|jXjYjZuh1j=hhhj`hNhNubj\)}(hX**Parameters** ``unsigned int irq`` interrupt to control ``unsigned int on`` enable/disable power management wakeup **Description** Enable/disable power management wakeup mode, which is disabled by default. Enables and disables must match, just as they match for non-wakeup mode support. Wakeup mode lets this IRQ wake the system from sleep states like "suspend to RAM". **Note** irq enable/disable state is completely orthogonal to the enable/disable state of irq wake. An irq can be disabled with disable_irq() and still wake the system as long as the irq has wake enabled. If this does not hold, then the underlying irq chip and the related driver need to be investigated.h](jo)}(h**Parameters**h]jf)}(hj|h]h Parameters}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj|ubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMBhj|ubj|)}(hhh](j)}(h*``unsigned int irq`` interrupt to control h](j)}(h``unsigned int irq``h]j)}(hj|h]hunsigned int irq}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM?hj|ubj)}(hhh]jo)}(hinterrupt to controlh]hinterrupt to control}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj|hM?hj|ubah}(h]h ]h"]h$]h&]uh1jhj|ubeh}(h]h ]h"]h$]h&]uh1jhj|hM?hj|ubj)}(h;``unsigned int on`` enable/disable power management wakeup h](j)}(h``unsigned int on``h]j)}(hj|h]hunsigned int on}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM@hj|ubj)}(hhh]jo)}(h&enable/disable power management wakeuph]h&enable/disable power management wakeup}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj}hM@hj}ubah}(h]h ]h"]h$]h&]uh1jhj|ubeh}(h]h ]h"]h$]h&]uh1jhj}hM@hj|ubeh}(h]h ]h"]h$]h&]uh1j{hj|ubjo)}(h**Description**h]jf)}(hj&}h]h Description}(hj(}hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj$}ubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMBhj|ubjo)}(hEnable/disable power management wakeup mode, which is disabled by default. Enables and disables must match, just as they match for non-wakeup mode support.h]hEnable/disable power management wakeup mode, which is disabled by default. Enables and disables must match, just as they match for non-wakeup mode support.}(hj<}hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMBhj|ubjo)}(hRWakeup mode lets this IRQ wake the system from sleep states like "suspend to RAM".h]hVWakeup mode lets this IRQ wake the system from sleep states like “suspend to RAM”.}(hjK}hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMFhj|ubjo)}(h**Note**h]jf)}(hj\}h]hNote}(hj^}hhhNhNubah}(h]h ]h"]h$]h&]uh1jehjZ}ubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMIhj|ubjo)}(hX'irq enable/disable state is completely orthogonal to the enable/disable state of irq wake. An irq can be disabled with disable_irq() and still wake the system as long as the irq has wake enabled. If this does not hold, then the underlying irq chip and the related driver need to be investigated.h]hX'irq enable/disable state is completely orthogonal to the enable/disable state of irq wake. An irq can be disabled with disable_irq() and still wake the system as long as the irq has wake enabled. If this does not hold, then the underlying irq chip and the related driver need to be investigated.}(hjr}hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMIhj|ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_wake_thread (C function)c.irq_wake_threadhNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(h5void irq_wake_thread (unsigned int irq, void *dev_id)h]jI)}(h4void irq_wake_thread(unsigned int irq, void *dev_id)h](jO)}(hvoidh]hvoid}(hj}hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj}hhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMubja)}(h h]h }(hj}hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj}hhhj}hMubjr)}(hirq_wake_threadh]jx)}(hirq_wake_threadh]hirq_wake_thread}(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj}ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhj}hhhj}hMubj)}(h (unsigned int irq, void *dev_id)h](j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hj}hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj}ubja)}(h h]h }(hj}hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj}ubjO)}(hinth]hint}(hj}hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj}ubja)}(h h]h }(hj~hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj}ubjx)}(hirqh]hirq}(hj~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj}ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj}ubj)}(h void *dev_idh](jO)}(hvoidh]hvoid}(hj/~hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj+~ubja)}(h h]h }(hj=~hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj+~ubj)}(hjh]h*}(hjK~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+~ubjx)}(hdev_idh]hdev_id}(hjX~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj+~ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj}ubeh}(h]h ]h"]h$]h&]hhuh1jhj}hhhj}hMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj}hhhj}hMubah}(h]j}ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhj}hMhj}hhubj5)}(hhh]jo)}(h7wake the irq thread for the action identified by dev_idh]h7wake the irq thread for the action identified by dev_id}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhj~hhubah}(h]h ]h"]h$]h&]uh1j4hj}hhhj}hMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj~jWj~jXjYjZuh1j=hhhj`hNhNubj\)}(h~**Parameters** ``unsigned int irq`` Interrupt line ``void *dev_id`` Device identity for which the thread should be wokenh](jo)}(h**Parameters**h]jf)}(hj~h]h Parameters}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj~ubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhj~ubj|)}(hhh](j)}(h$``unsigned int irq`` Interrupt line h](j)}(h``unsigned int irq``h]j)}(hj~h]hunsigned int irq}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhj~ubj)}(hhh]jo)}(hInterrupt lineh]hInterrupt line}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj~hMhj~ubah}(h]h ]h"]h$]h&]uh1jhj~ubeh}(h]h ]h"]h$]h&]uh1jhj~hMhj~ubj)}(hE``void *dev_id`` Device identity for which the thread should be wokenh](j)}(h``void *dev_id``h]j)}(hj~h]h void *dev_id}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhj~ubj)}(hhh]jo)}(h4Device identity for which the thread should be wokenh]h4Device identity for which the thread should be woken}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjubah}(h]h ]h"]h$]h&]uh1jhj~ubeh}(h]h ]h"]h$]h&]uh1jhjhMhj~ubeh}(h]h ]h"]h$]h&]uh1j{hj~ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9free_irq (C function) c.free_irqhNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(h6const void * free_irq (unsigned int irq, void *dev_id)h]jI)}(h4const void *free_irq(unsigned int irq, void *dev_id)h](j)}(hjmh]hconst}(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjRhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMubja)}(h h]h }(hjdhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjRhhhjchMubjO)}(hvoidh]hvoid}(hjrhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjRhhhjchMubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjRhhhjchMubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjRhhhjchMubjr)}(hfree_irqh]jx)}(hfree_irqh]hfree_irq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjRhhhjchMubj)}(h (unsigned int irq, void *dev_id)h](j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hirqh]hirq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h void *dev_idh](jO)}(hvoidh]hvoid}(hj hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hdev_idh]hdev_id}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjRhhhjchMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjNhhhjchMubah}(h]jIah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjchMhjKhhubj5)}(hhh]jo)}(h,free an interrupt allocated with request_irqh]h,free an interrupt allocated with request_irq}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhj\hhubah}(h]h ]h"]h$]h&]uh1j4hjKhhhjchMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjwjWjwjXjYjZuh1j=hhhj`hNhNubj\)}(hX9**Parameters** ``unsigned int irq`` Interrupt line to free ``void *dev_id`` Device identity to free **Description** Remove an interrupt handler. The handler is removed and if the interrupt line is no longer in use by any driver it is disabled. On a shared IRQ the caller must ensure the interrupt is disabled on the card it drives before calling this function. The function does not return until any executing interrupts for this IRQ have completed. This function must not be called from interrupt context. Returns the devname argument passed to request_irq.h](jo)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhj{ubj|)}(hhh](j)}(h,``unsigned int irq`` Interrupt line to free h](j)}(h``unsigned int irq``h]j)}(hjh]hunsigned int irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjubj)}(hhh]jo)}(hInterrupt line to freeh]hInterrupt line to free}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h)``void *dev_id`` Device identity to free h](j)}(h``void *dev_id``h]j)}(hjـh]h void *dev_id}(hjۀhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj׀ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjӀubj)}(hhh]jo)}(hDevice identity to freeh]hDevice identity to free}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjӀubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubeh}(h]h ]h"]h$]h&]uh1j{hj{ubjo)}(h**Description**h]jf)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhj{ubjo)}(hXNRemove an interrupt handler. The handler is removed and if the interrupt line is no longer in use by any driver it is disabled. On a shared IRQ the caller must ensure the interrupt is disabled on the card it drives before calling this function. The function does not return until any executing interrupts for this IRQ have completed.h]hXNRemove an interrupt handler. The handler is removed and if the interrupt line is no longer in use by any driver it is disabled. On a shared IRQ the caller must ensure the interrupt is disabled on the card it drives before calling this function. The function does not return until any executing interrupts for this IRQ have completed.}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhj{ubjo)}(h8This function must not be called from interrupt context.h]h8This function must not be called from interrupt context.}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhj{ubjo)}(h3Returns the devname argument passed to request_irq.h]h3Returns the devname argument passed to request_irq.}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhj{ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9!request_threaded_irq (C function)c.request_threaded_irqhNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(hint request_threaded_irq (unsigned int irq, irq_handler_t handler, irq_handler_t thread_fn, unsigned long irqflags, const char *devname, void *dev_id)h]jI)}(hint request_threaded_irq(unsigned int irq, irq_handler_t handler, irq_handler_t thread_fn, unsigned long irqflags, const char *devname, void *dev_id)h](jO)}(hinth]hint}(hjwhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjshhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjshhhjhMubjr)}(hrequest_threaded_irqh]jx)}(hrequest_threaded_irqh]hrequest_threaded_irq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjshhhjhMubj)}(h}(unsigned int irq, irq_handler_t handler, irq_handler_t thread_fn, unsigned long irqflags, const char *devname, void *dev_id)h](j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjO)}(hinth]hint}(hjЁhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjށhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hirqh]hirq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hirq_handler_t handlerh](h)}(hhh]jx)}(h irq_handler_th]h irq_handler_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetj modnameN classnameNjj)}j]j)}jjsbc.request_threaded_irqasbuh1hhjubja)}(h h]h }(hj(hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hhandlerh]hhandler}(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hirq_handler_t thread_fnh](h)}(hhh]jx)}(h irq_handler_th]h irq_handler_t}(hjRhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjOubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjTmodnameN classnameNjj)}j]j$c.request_threaded_irqasbuh1hhjKubja)}(h h]h }(hjphhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjKubjx)}(h thread_fnh]h thread_fn}(hj~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjKubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hunsigned long irqflagsh](jO)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjO)}(hlongh]hlong}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hirqflagsh]hirqflags}(hjςhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hconst char *devnameh](j)}(hjmh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjO)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hdevnameh]hdevname}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h void *dev_idh](jO)}(hvoidh]hvoid}(hjEhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjAubja)}(h h]h }(hjShhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjAubj)}(hjh]h*}(hjahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubjx)}(hdev_idh]hdev_id}(hjnhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjAubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjshhhjhMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjohhhjhMubah}(h]jjah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhMhjlhhubj5)}(hhh]jo)}(hallocate an interrupt lineh]hallocate an interrupt line}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjhhubah}(h]h ]h"]h$]h&]uh1j4hjlhhhjhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhj`hNhNubj\)}(hX.**Parameters** ``unsigned int irq`` Interrupt line to allocate ``irq_handler_t handler`` Function to be called when the IRQ occurs. Primary handler for threaded interrupts. If handler is NULL and thread_fn != NULL the default primary handler is installed. ``irq_handler_t thread_fn`` Function called from the irq handler thread If NULL, no irq thread is created ``unsigned long irqflags`` Interrupt type flags ``const char *devname`` An ascii name for the claiming device ``void *dev_id`` A cookie passed back to the handler function **Description** This call allocates interrupt resources and enables the interrupt line and IRQ handling. From the point this call is made your handler function may be invoked. Since your handler function must clear any interrupt the board raises, you must take care both to initialise your hardware and to set up the interrupt handler in the right order. If you want to set up a threaded irq handler for your device then you need to supply **handler** and **thread_fn**. **handler** is still called in hard interrupt context and has to check whether the interrupt originates from the device. If yes it needs to disable the interrupt on the device and return IRQ_WAKE_THREAD which will wake up the handler thread and run **thread_fn**. This split handler design is necessary to support shared interrupts. **dev_id** must be globally unique. Normally the address of the device data structure is used as the cookie. Since the handler receives this value it makes sense to use it. If your interrupt is shared you must pass a non NULL dev_id as this is required when freeing the interrupt. Flags: IRQF_SHARED Interrupt is shared IRQF_TRIGGER_* Specify active edge(s) or level IRQF_ONESHOT Run thread_fn with interrupt line maskedh](jo)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjubj|)}(hhh](j)}(h0``unsigned int irq`` Interrupt line to allocate h](j)}(h``unsigned int irq``h]j)}(hjكh]hunsigned int irq}(hjۃhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj׃ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjӃubj)}(hhh]jo)}(hInterrupt line to allocateh]hInterrupt line to allocate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjӃubeh}(h]h ]h"]h$]h&]uh1jhjhMhjЃubj)}(h``irq_handler_t handler`` Function to be called when the IRQ occurs. Primary handler for threaded interrupts. If handler is NULL and thread_fn != NULL the default primary handler is installed. h](j)}(h``irq_handler_t handler``h]j)}(hjh]hirq_handler_t handler}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhj ubj)}(hhh]jo)}(hFunction to be called when the IRQ occurs. Primary handler for threaded interrupts. If handler is NULL and thread_fn != NULL the default primary handler is installed.h]hFunction to be called when the IRQ occurs. Primary handler for threaded interrupts. If handler is NULL and thread_fn != NULL the default primary handler is installed.}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhj(ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj'hMhjЃubj)}(hj``irq_handler_t thread_fn`` Function called from the irq handler thread If NULL, no irq thread is created h](j)}(h``irq_handler_t thread_fn``h]j)}(hjLh]hirq_handler_t thread_fn}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjFubj)}(hhh]jo)}(hMFunction called from the irq handler thread If NULL, no irq thread is createdh]hMFunction called from the irq handler thread If NULL, no irq thread is created}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjbubah}(h]h ]h"]h$]h&]uh1jhjFubeh}(h]h ]h"]h$]h&]uh1jhjahMhjЃubj)}(h0``unsigned long irqflags`` Interrupt type flags h](j)}(h``unsigned long irqflags``h]j)}(hjh]hunsigned long irqflags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjubj)}(hhh]jo)}(hInterrupt type flagsh]hInterrupt type flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjЃubj)}(h>``const char *devname`` An ascii name for the claiming device h](j)}(h``const char *devname``h]j)}(hjh]hconst char *devname}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjubj)}(hhh]jo)}(h%An ascii name for the claiming deviceh]h%An ascii name for the claiming device}(hj؄hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjԄhMhjՄubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjԄhMhjЃubj)}(h>``void *dev_id`` A cookie passed back to the handler function h](j)}(h``void *dev_id``h]j)}(hjh]h void *dev_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjubj)}(hhh]jo)}(h,A cookie passed back to the handler functionh]h,A cookie passed back to the handler function}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj hMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj hMhjЃubeh}(h]h ]h"]h$]h&]uh1j{hjubjo)}(h**Description**h]jf)}(hj3h]h Description}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj1ubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjubjo)}(hXRThis call allocates interrupt resources and enables the interrupt line and IRQ handling. From the point this call is made your handler function may be invoked. Since your handler function must clear any interrupt the board raises, you must take care both to initialise your hardware and to set up the interrupt handler in the right order.h]hXRThis call allocates interrupt resources and enables the interrupt line and IRQ handling. From the point this call is made your handler function may be invoked. Since your handler function must clear any interrupt the board raises, you must take care both to initialise your hardware and to set up the interrupt handler in the right order.}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjubjo)}(hXIf you want to set up a threaded irq handler for your device then you need to supply **handler** and **thread_fn**. **handler** is still called in hard interrupt context and has to check whether the interrupt originates from the device. If yes it needs to disable the interrupt on the device and return IRQ_WAKE_THREAD which will wake up the handler thread and run **thread_fn**. This split handler design is necessary to support shared interrupts.h](hUIf you want to set up a threaded irq handler for your device then you need to supply }(hjXhhhNhNubjf)}(h **handler**h]hhandler}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jehjXubh and }(hjXhhhNhNubjf)}(h **thread_fn**h]h thread_fn}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjXubh. }(hjXhhhNhNubjf)}(h **handler**h]hhandler}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjXubh is still called in hard interrupt context and has to check whether the interrupt originates from the device. If yes it needs to disable the interrupt on the device and return IRQ_WAKE_THREAD which will wake up the handler thread and run }(hjXhhhNhNubjf)}(h **thread_fn**h]h thread_fn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjXubhF. This split handler design is necessary to support shared interrupts.}(hjXhhhNhNubeh}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjubjo)}(h**dev_id** must be globally unique. Normally the address of the device data structure is used as the cookie. Since the handler receives this value it makes sense to use it.h](jf)}(h **dev_id**h]hdev_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubh must be globally unique. Normally the address of the device data structure is used as the cookie. Since the handler receives this value it makes sense to use it.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjubjo)}(hkIf your interrupt is shared you must pass a non NULL dev_id as this is required when freeing the interrupt.h]hkIf your interrupt is shared you must pass a non NULL dev_id as this is required when freeing the interrupt.}(hj̅hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hjubjo)}(hFlags:h]hFlags:}(hjۅhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hjubh block_quote)}(hIRQF_SHARED Interrupt is shared IRQF_TRIGGER_* Specify active edge(s) or level IRQF_ONESHOT Run thread_fn with interrupt line maskedh]jo)}(hIRQF_SHARED Interrupt is shared IRQF_TRIGGER_* Specify active edge(s) or level IRQF_ONESHOT Run thread_fn with interrupt line maskedh]hIRQF_SHARED Interrupt is shared IRQF_TRIGGER_* Specify active edge(s) or level IRQF_ONESHOT Run thread_fn with interrupt line masked}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjubah}(h]h ]h"]h$]h&]uh1jhjhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9$request_any_context_irq (C function)c.request_any_context_irqhNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(hzint request_any_context_irq (unsigned int irq, irq_handler_t handler, unsigned long flags, const char *name, void *dev_id)h]jI)}(hyint request_any_context_irq(unsigned int irq, irq_handler_t handler, unsigned long flags, const char *name, void *dev_id)h](jO)}(hinth]hint}(hj%hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj!hhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMnubja)}(h h]h }(hj4hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj!hhhj3hMnubjr)}(hrequest_any_context_irqh]jx)}(hrequest_any_context_irqh]hrequest_any_context_irq}(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjBubah}(h]h ](jjeh"]h$]h&]hhuh1jqhj!hhhj3hMnubj)}(h^(unsigned int irq, irq_handler_t handler, unsigned long flags, const char *name, void *dev_id)h](j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hjbhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj^ubja)}(h h]h }(hjphhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj^ubjO)}(hinth]hint}(hj~hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj^ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj^ubjx)}(hirqh]hirq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj^ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjZubj)}(hirq_handler_t handlerh](h)}(hhh]jx)}(h irq_handler_th]h irq_handler_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjmodnameN classnameNjj)}j]j)}jjHsbc.request_any_context_irqasbuh1hhjubja)}(h h]h }(hjֆhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hhandlerh]hhandler}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjZubj)}(hunsigned long flagsh](jO)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hj hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjO)}(hlongh]hlong}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hj'hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hflagsh]hflags}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjZubj)}(hconst char *nameh](j)}(hjmh]hconst}(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJubja)}(h h]h }(hj[hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjJubjO)}(hcharh]hchar}(hjihhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjJubja)}(h h]h }(hjwhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjJubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJubjx)}(hnameh]hname}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjJubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjZubj)}(h void *dev_idh](jO)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hjLJhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hdev_idh]hdev_id}(hjԇhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjZubeh}(h]h ]h"]h$]h&]hhuh1jhj!hhhj3hMnubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhj3hMnubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhj3hMnhjhhubj5)}(hhh]jo)}(hallocate an interrupt lineh]hallocate an interrupt line}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMnhjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhj3hMnubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhj`hNhNubj\)}(hX**Parameters** ``unsigned int irq`` Interrupt line to allocate ``irq_handler_t handler`` Function to be called when the IRQ occurs. Threaded handler for threaded interrupts. ``unsigned long flags`` Interrupt type flags ``const char *name`` An ascii name for the claiming device ``void *dev_id`` A cookie passed back to the handler function **Description** This call allocates interrupt resources and enables the interrupt line and IRQ handling. It selects either a hardirq or threaded handling method depending on the context. **Return** On failure, it returns a negative value. On success, it returns either IRQC_IS_HARDIRQ or IRQC_IS_NESTED.h](jo)}(h**Parameters**h]jf)}(hj h]h Parameters}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMrhjubj|)}(hhh](j)}(h0``unsigned int irq`` Interrupt line to allocate h](j)}(h``unsigned int irq``h]j)}(hj?h]hunsigned int irq}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMohj9ubj)}(hhh]jo)}(hInterrupt line to allocateh]hInterrupt line to allocate}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjThMohjUubah}(h]h ]h"]h$]h&]uh1jhj9ubeh}(h]h ]h"]h$]h&]uh1jhjThMohj6ubj)}(ho``irq_handler_t handler`` Function to be called when the IRQ occurs. Threaded handler for threaded interrupts. h](j)}(h``irq_handler_t handler``h]j)}(hjxh]hirq_handler_t handler}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjvubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMqhjrubj)}(hhh]jo)}(hTFunction to be called when the IRQ occurs. Threaded handler for threaded interrupts.h]hTFunction to be called when the IRQ occurs. Threaded handler for threaded interrupts.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMphjubah}(h]h ]h"]h$]h&]uh1jhjrubeh}(h]h ]h"]h$]h&]uh1jhjhMqhj6ubj)}(h-``unsigned long flags`` Interrupt type flags h](j)}(h``unsigned long flags``h]j)}(hjh]hunsigned long flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMrhjubj)}(hhh]jo)}(hInterrupt type flagsh]hInterrupt type flags}(hjˈhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjLjhMrhjȈubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjLjhMrhj6ubj)}(h;``const char *name`` An ascii name for the claiming device h](j)}(h``const char *name``h]j)}(hjh]hconst char *name}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMshjubj)}(hhh]jo)}(h%An ascii name for the claiming deviceh]h%An ascii name for the claiming device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhMshjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMshj6ubj)}(h>``void *dev_id`` A cookie passed back to the handler function h](j)}(h``void *dev_id``h]j)}(hj$h]h void *dev_id}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMthjubj)}(hhh]jo)}(h,A cookie passed back to the handler functionh]h,A cookie passed back to the handler function}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj9hMthj:ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj9hMthj6ubeh}(h]h ]h"]h$]h&]uh1j{hjubjo)}(h**Description**h]jf)}(hj_h]h Description}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jehj]ubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMvhjubjo)}(hThis call allocates interrupt resources and enables the interrupt line and IRQ handling. It selects either a hardirq or threaded handling method depending on the context.h]hThis call allocates interrupt resources and enables the interrupt line and IRQ handling. It selects either a hardirq or threaded handling method depending on the context.}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMvhjubjo)}(h **Return**h]jf)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMzhjubjo)}(hiOn failure, it returns a negative value. On success, it returns either IRQC_IS_HARDIRQ or IRQC_IS_NESTED.h]hiOn failure, it returns a negative value. On success, it returns either IRQC_IS_HARDIRQ or IRQC_IS_NESTED.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMzhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9request_nmi (C function) c.request_nmihNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(hqint request_nmi (unsigned int irq, irq_handler_t handler, unsigned long irqflags, const char *name, void *dev_id)h]jI)}(hpint request_nmi(unsigned int irq, irq_handler_t handler, unsigned long irqflags, const char *name, void *dev_id)h](jO)}(hinth]hint}(hjˉhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjljhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMubja)}(h h]h }(hjډhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjljhhhjىhMubjr)}(h request_nmih]jx)}(h request_nmih]h request_nmi}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjljhhhjىhMubj)}(ha(unsigned int irq, irq_handler_t handler, unsigned long irqflags, const char *name, void *dev_id)h](j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjO)}(hinth]hint}(hj$hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hj2hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hirqh]hirq}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hirq_handler_t handlerh](h)}(hhh]jx)}(h irq_handler_th]h irq_handler_t}(hj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjYubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetj^modnameN classnameNjj)}j]j)}jjsb c.request_nmiasbuh1hhjUubja)}(h h]h }(hj|hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjUubjx)}(hhandlerh]hhandler}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjUubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hunsigned long irqflagsh](jO)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjO)}(hlongh]hlong}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hj͊hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hirqflagsh]hirqflags}(hjۊhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hconst char *nameh](j)}(hjmh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjO)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hnameh]hname}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h void *dev_idh](jO)}(hvoidh]hvoid}(hjQhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjMubja)}(h h]h }(hj_hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjMubj)}(hjh]h*}(hjmhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjMubjx)}(hdev_idh]hdev_id}(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjMubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjljhhhjىhMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjÉhhhjىhMubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjىhMhjhhubj5)}(hhh]jo)}(h+allocate an interrupt line for NMI deliveryh]h+allocate an interrupt line for NMI delivery}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjىhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhj`hNhNubj\)}(hX**Parameters** ``unsigned int irq`` Interrupt line to allocate ``irq_handler_t handler`` Function to be called when the IRQ occurs. Threaded handler for threaded interrupts. ``unsigned long irqflags`` Interrupt type flags ``const char *name`` An ascii name for the claiming device ``void *dev_id`` A cookie passed back to the handler function **Description** This call allocates interrupt resources and enables the interrupt line and IRQ handling. It sets up the IRQ line to be handled as an NMI. An interrupt line delivering NMIs cannot be shared and IRQ handling cannot be threaded. Interrupt lines requested for NMI delivering must produce per cpu interrupts and have auto enabling setting disabled. **dev_id** must be globally unique. Normally the address of the device data structure is used as the cookie. Since the handler receives this value it makes sense to use it. If the interrupt line cannot be used to deliver NMIs, function will fail and return a negative value.h](jo)}(h**Parameters**h]jf)}(hjƋh]h Parameters}(hjȋhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjċubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjubj|)}(hhh](j)}(h0``unsigned int irq`` Interrupt line to allocate h](j)}(h``unsigned int irq``h]j)}(hjh]hunsigned int irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjߋubj)}(hhh]jo)}(hInterrupt line to allocateh]hInterrupt line to allocate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjߋubeh}(h]h ]h"]h$]h&]uh1jhjhMhj܋ubj)}(ho``irq_handler_t handler`` Function to be called when the IRQ occurs. Threaded handler for threaded interrupts. h](j)}(h``irq_handler_t handler``h]j)}(hjh]hirq_handler_t handler}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjubj)}(hhh]jo)}(hTFunction to be called when the IRQ occurs. Threaded handler for threaded interrupts.h]hTFunction to be called when the IRQ occurs. Threaded handler for threaded interrupts.}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhj4ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj3hMhj܋ubj)}(h0``unsigned long irqflags`` Interrupt type flags h](j)}(h``unsigned long irqflags``h]j)}(hjXh]hunsigned long irqflags}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjRubj)}(hhh]jo)}(hInterrupt type flagsh]hInterrupt type flags}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjmhMhjnubah}(h]h ]h"]h$]h&]uh1jhjRubeh}(h]h ]h"]h$]h&]uh1jhjmhMhj܋ubj)}(h;``const char *name`` An ascii name for the claiming device h](j)}(h``const char *name``h]j)}(hjh]hconst char *name}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjubj)}(hhh]jo)}(h%An ascii name for the claiming deviceh]h%An ascii name for the claiming device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj܋ubj)}(h>``void *dev_id`` A cookie passed back to the handler function h](j)}(h``void *dev_id``h]j)}(hjʌh]h void *dev_id}(hǰhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjȌubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjČubj)}(hhh]jo)}(h,A cookie passed back to the handler functionh]h,A cookie passed back to the handler function}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjߌhMhjubah}(h]h ]h"]h$]h&]uh1jhjČubeh}(h]h ]h"]h$]h&]uh1jhjߌhMhj܋ubeh}(h]h ]h"]h$]h&]uh1j{hjubjo)}(h**Description**h]jf)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjubjo)}(hThis call allocates interrupt resources and enables the interrupt line and IRQ handling. It sets up the IRQ line to be handled as an NMI.h]hThis call allocates interrupt resources and enables the interrupt line and IRQ handling. It sets up the IRQ line to be handled as an NMI.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjubjo)}(hWAn interrupt line delivering NMIs cannot be shared and IRQ handling cannot be threaded.h]hWAn interrupt line delivering NMIs cannot be shared and IRQ handling cannot be threaded.}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjubjo)}(huInterrupt lines requested for NMI delivering must produce per cpu interrupts and have auto enabling setting disabled.h]huInterrupt lines requested for NMI delivering must produce per cpu interrupts and have auto enabling setting disabled.}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjubjo)}(h**dev_id** must be globally unique. Normally the address of the device data structure is used as the cookie. Since the handler receives this value it makes sense to use it.h](jf)}(h **dev_id**h]hdev_id}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjHubh must be globally unique. Normally the address of the device data structure is used as the cookie. Since the handler receives this value it makes sense to use it.}(hjHhhhNhNubeh}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjubjo)}(heIf the interrupt line cannot be used to deliver NMIs, function will fail and return a negative value.h]heIf the interrupt line cannot be used to deliver NMIs, function will fail and return a negative value.}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9"irq_percpu_is_enabled (C function)c.irq_percpu_is_enabledhNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(h-bool irq_percpu_is_enabled (unsigned int irq)h]jI)}(h,bool irq_percpu_is_enabled(unsigned int irq)h](jO)}(hj`h]hbool}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhM ubjr)}(hirq_percpu_is_enabledh]jx)}(hirq_percpu_is_enabledh]hirq_percpu_is_enabled}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhM ubj)}(h(unsigned int irq)h]j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hjЍhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj̍ubja)}(h h]h }(hjލhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj̍ubjO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj̍ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj̍ubjx)}(hirqh]hirq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj̍ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjȍubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhM ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhM ubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhM hjhhubj5)}(hhh]jo)}(h(Check whether the per cpu irq is enabledh]h(Check whether the per cpu irq is enabled}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hj/hhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhM ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjJjWjJjXjYjZuh1j=hhhj`hNhNubj\)}(h**Parameters** ``unsigned int irq`` Linux irq number to check for **Description** Must be called from a non migratable context. Returns the enable state of a per cpu interrupt on the current cpu.h](jo)}(h**Parameters**h]jf)}(hjTh]h Parameters}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjRubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hjNubj|)}(hhh]j)}(h3``unsigned int irq`` Linux irq number to check for h](j)}(h``unsigned int irq``h]j)}(hjsh]hunsigned int irq}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjqubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hjmubj)}(hhh]jo)}(hLinux irq number to check forh]hLinux irq number to check for}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhM hjubah}(h]h ]h"]h$]h&]uh1jhjmubeh}(h]h ]h"]h$]h&]uh1jhjhM hjjubah}(h]h ]h"]h$]h&]uh1j{hjNubjo)}(h**Description**h]jf)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hjNubjo)}(hqMust be called from a non migratable context. Returns the enable state of a per cpu interrupt on the current cpu.h]hqMust be called from a non migratable context. Returns the enable state of a per cpu interrupt on the current cpu.}(hjĎhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hjNubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9free_percpu_irq (C function)c.free_percpu_irqhNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(h>void free_percpu_irq (unsigned int irq, void __percpu *dev_id)h]jI)}(h=void free_percpu_irq(unsigned int irq, void __percpu *dev_id)h](jO)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMM ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhMM ubjr)}(hfree_percpu_irqh]jx)}(hfree_percpu_irqh]hfree_percpu_irq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhMM ubj)}(h)(unsigned int irq, void __percpu *dev_id)h](j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hj0hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj,ubja)}(h h]h }(hj>hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj,ubjO)}(hinth]hint}(hjLhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj,ubja)}(h h]h }(hjZhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj,ubjx)}(hirqh]hirq}(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj,ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj(ubj)}(hvoid __percpu *dev_idh](jO)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj}ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj}ubh__percpu}(hj}hhhNhNubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj}ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubjx)}(hdev_idh]hdev_id}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj}ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj(ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMM ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhMM ubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhMM hjhhubj5)}(hhh]jo)}(h3free an interrupt allocated with request_percpu_irqh]h3free an interrupt allocated with request_percpu_irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMM hjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhMM ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhj`hNhNubj\)}(hX**Parameters** ``unsigned int irq`` Interrupt line to free ``void __percpu *dev_id`` Device identity to free **Description** Remove a percpu interrupt handler. The handler is removed, but the interrupt line is not disabled. This must be done on each CPU before calling this function. The function does not return until any executing interrupts for this IRQ have completed. This function must not be called from interrupt context.h](jo)}(h**Parameters**h]jf)}(hjh]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMQ hjubj|)}(hhh](j)}(h,``unsigned int irq`` Interrupt line to free h](j)}(h``unsigned int irq``h]j)}(hj'h]hunsigned int irq}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMN hj!ubj)}(hhh]jo)}(hInterrupt line to freeh]hInterrupt line to free}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj<hMN hj=ubah}(h]h ]h"]h$]h&]uh1jhj!ubeh}(h]h ]h"]h$]h&]uh1jhj<hMN hjubj)}(h2``void __percpu *dev_id`` Device identity to free h](j)}(h``void __percpu *dev_id``h]j)}(hj`h]hvoid __percpu *dev_id}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMO hjZubj)}(hhh]jo)}(hDevice identity to freeh]hDevice identity to free}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjuhMO hjvubah}(h]h ]h"]h$]h&]uh1jhjZubeh}(h]h ]h"]h$]h&]uh1jhjuhMO hjubeh}(h]h ]h"]h$]h&]uh1j{hjubjo)}(h**Description**h]jf)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMQ hjubjo)}(hRemove a percpu interrupt handler. The handler is removed, but the interrupt line is not disabled. This must be done on each CPU before calling this function. The function does not return until any executing interrupts for this IRQ have completed.h]hRemove a percpu interrupt handler. The handler is removed, but the interrupt line is not disabled. This must be done on each CPU before calling this function. The function does not return until any executing interrupts for this IRQ have completed.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMQ hjubjo)}(h8This function must not be called from interrupt context.h]h8This function must not be called from interrupt context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMV hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9setup_percpu_irq (C function)c.setup_percpu_irqhNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(h>int setup_percpu_irq (unsigned int irq, struct irqaction *act)h]jI)}(h=int setup_percpu_irq(unsigned int irq, struct irqaction *act)h](jO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMs ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhMs ubjr)}(hsetup_percpu_irqh]jx)}(hsetup_percpu_irqh]hsetup_percpu_irq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhMs ubj)}(h)(unsigned int irq, struct irqaction *act)h](j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hj,hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj(ubja)}(h h]h }(hj:hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj(ubjO)}(hinth]hint}(hjHhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj(ubja)}(h h]h }(hjVhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj(ubjx)}(hirqh]hirq}(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj(ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj$ubj)}(hstruct irqaction *acth](j)}(hjh]hstruct}(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjyubh)}(hhh]jx)}(h irqactionh]h irqaction}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.setup_percpu_irqasbuh1hhjyubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjyubj)}(hjh]h*}(hjɑhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyubjx)}(hacth]hact}(hj֑hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjyubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj$ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMs ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhMs ubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhMs hjhhubj5)}(hhh]jo)}(hsetup a per-cpu interrupth]hsetup a per-cpu interrupt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMs hjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhMs ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhj`hNhNubj\)}(h**Parameters** ``unsigned int irq`` Interrupt line to setup ``struct irqaction *act`` irqaction for the interrupt **Description** Used to statically setup per-cpu interrupts in the early boot process.h](jo)}(h**Parameters**h]jf)}(hj"h]h Parameters}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj ubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMw hjubj|)}(hhh](j)}(h-``unsigned int irq`` Interrupt line to setup h](j)}(h``unsigned int irq``h]j)}(hjAh]hunsigned int irq}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMt hj;ubj)}(hhh]jo)}(hInterrupt line to setuph]hInterrupt line to setup}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjVhMt hjWubah}(h]h ]h"]h$]h&]uh1jhj;ubeh}(h]h ]h"]h$]h&]uh1jhjVhMt hj8ubj)}(h6``struct irqaction *act`` irqaction for the interrupt h](j)}(h``struct irqaction *act``h]j)}(hjzh]hstruct irqaction *act}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjxubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMu hjtubj)}(hhh]jo)}(hirqaction for the interrupth]hirqaction for the interrupt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhMu hjubah}(h]h ]h"]h$]h&]uh1jhjtubeh}(h]h ]h"]h$]h&]uh1jhjhMu hj8ubeh}(h]h ]h"]h$]h&]uh1j{hjubjo)}(h**Description**h]jf)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMw hjubjo)}(hFUsed to statically setup per-cpu interrupts in the early boot process.h]hFUsed to statically setup per-cpu interrupts in the early boot process.}(hj˒hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMw hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9!__request_percpu_irq (C function)c.__request_percpu_irqhNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(hint __request_percpu_irq (unsigned int irq, irq_handler_t handler, unsigned long flags, const char *devname, void __percpu *dev_id)h]jI)}(hint __request_percpu_irq(unsigned int irq, irq_handler_t handler, unsigned long flags, const char *devname, void __percpu *dev_id)h](jO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM ubja)}(h h]h }(hj hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhM ubjr)}(h__request_percpu_irqh]jx)}(h__request_percpu_irqh]h__request_percpu_irq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhM ubj)}(hj(unsigned int irq, irq_handler_t handler, unsigned long flags, const char *devname, void __percpu *dev_id)h](j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hj7hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj3ubja)}(h h]h }(hjEhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj3ubjO)}(hinth]hint}(hjShhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj3ubja)}(h h]h }(hjahhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj3ubjx)}(hirqh]hirq}(hjohhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj3ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj/ubj)}(hirq_handler_t handlerh](h)}(hhh]jx)}(h irq_handler_th]h irq_handler_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.__request_percpu_irqasbuh1hhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hhandlerh]hhandler}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj/ubj)}(hunsigned long flagsh](jO)}(hunsignedh]hunsigned}(hjғhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjΓubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjΓubjO)}(hlongh]hlong}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjΓubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjΓubjx)}(hflagsh]hflags}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjΓubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj/ubj)}(hconst char *devnameh](j)}(hjmh]hconst}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubja)}(h h]h }(hj0hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjO)}(hcharh]hchar}(hj>hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjLhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hjZhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hdevnameh]hdevname}(hjghhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj/ubj)}(hvoid __percpu *dev_idh](jO)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj|ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj|ubh__percpu}(hj|hhhNhNubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj|ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|ubjx)}(hdev_idh]hdev_id}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj|ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj/ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhM ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhM ubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhM hjhhubj5)}(hhh]jo)}(h allocate a percpu interrupt lineh]h allocate a percpu interrupt line}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhM ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhj`hNhNubj\)}(hX**Parameters** ``unsigned int irq`` Interrupt line to allocate ``irq_handler_t handler`` Function to be called when the IRQ occurs. ``unsigned long flags`` Interrupt type flags (IRQF_TIMER only) ``const char *devname`` An ascii name for the claiming device ``void __percpu *dev_id`` A percpu cookie passed back to the handler function **Description** This call allocates interrupt resources and enables the interrupt on the local CPU. If the interrupt is supposed to be enabled on other CPUs, it has to be done on each CPU using enable_percpu_irq(). **dev_id** must be globally unique. It is a per-cpu variable, and the handler gets called with the interrupted CPU's instance of that variable.h](jo)}(h**Parameters**h]jf)}(hjh]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hjubj|)}(hhh](j)}(h0``unsigned int irq`` Interrupt line to allocate h](j)}(h``unsigned int irq``h]j)}(hj&h]hunsigned int irq}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hj ubj)}(hhh]jo)}(hInterrupt line to allocateh]hInterrupt line to allocate}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj;hM hj<ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj;hM hjubj)}(hE``irq_handler_t handler`` Function to be called when the IRQ occurs. h](j)}(h``irq_handler_t handler``h]j)}(hj_h]hirq_handler_t handler}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hjYubj)}(hhh]jo)}(h*Function to be called when the IRQ occurs.h]h*Function to be called when the IRQ occurs.}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjthM hjuubah}(h]h ]h"]h$]h&]uh1jhjYubeh}(h]h ]h"]h$]h&]uh1jhjthM hjubj)}(h?``unsigned long flags`` Interrupt type flags (IRQF_TIMER only) h](j)}(h``unsigned long flags``h]j)}(hjh]hunsigned long flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hjubj)}(hhh]jo)}(h&Interrupt type flags (IRQF_TIMER only)h]h&Interrupt type flags (IRQF_TIMER only)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhM hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM hjubj)}(h>``const char *devname`` An ascii name for the claiming device h](j)}(h``const char *devname``h]j)}(hjѕh]hconst char *devname}(hjӕhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjϕubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hj˕ubj)}(hhh]jo)}(h%An ascii name for the claiming deviceh]h%An ascii name for the claiming device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhM hjubah}(h]h ]h"]h$]h&]uh1jhj˕ubeh}(h]h ]h"]h$]h&]uh1jhjhM hjubj)}(hN``void __percpu *dev_id`` A percpu cookie passed back to the handler function h](j)}(h``void __percpu *dev_id``h]j)}(hj h]hvoid __percpu *dev_id}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hjubj)}(hhh]jo)}(h3A percpu cookie passed back to the handler functionh]h3A percpu cookie passed back to the handler function}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhM hj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM hjubeh}(h]h ]h"]h$]h&]uh1j{hjubjo)}(h**Description**h]jf)}(hjEh]h Description}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjCubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hjubjo)}(hThis call allocates interrupt resources and enables the interrupt on the local CPU. If the interrupt is supposed to be enabled on other CPUs, it has to be done on each CPU using enable_percpu_irq().h]hThis call allocates interrupt resources and enables the interrupt on the local CPU. If the interrupt is supposed to be enabled on other CPUs, it has to be done on each CPU using enable_percpu_irq().}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hjubjo)}(h**dev_id** must be globally unique. It is a per-cpu variable, and the handler gets called with the interrupted CPU's instance of that variable.h](jf)}(h **dev_id**h]hdev_id}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjjubh must be globally unique. It is a per-cpu variable, and the handler gets called with the interrupted CPU’s instance of that variable.}(hjjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9request_percpu_nmi (C function)c.request_percpu_nmihNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(hiint request_percpu_nmi (unsigned int irq, irq_handler_t handler, const char *name, void __percpu *dev_id)h]jI)}(hhint request_percpu_nmi(unsigned int irq, irq_handler_t handler, const char *name, void __percpu *dev_id)h](jO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhM ubjr)}(hrequest_percpu_nmih]jx)}(hrequest_percpu_nmih]hrequest_percpu_nmi}(hjȖhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjĖubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhM ubj)}(hR(unsigned int irq, irq_handler_t handler, const char *name, void __percpu *dev_id)h](j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hirqh]hirq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjܖubj)}(hirq_handler_t handlerh](h)}(hhh]jx)}(h irq_handler_th]h irq_handler_t}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj5ubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetj:modnameN classnameNjj)}j]j)}jjʖsbc.request_percpu_nmiasbuh1hhj1ubja)}(h h]h }(hjXhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj1ubjx)}(hhandlerh]hhandler}(hjfhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj1ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjܖubj)}(hconst char *nameh](j)}(hjmh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj{ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj{ubjO)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj{ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj{ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj{ubjx)}(hnameh]hname}(hj×hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj{ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjܖubj)}(hvoid __percpu *dev_idh](jO)}(hvoidh]hvoid}(hjܗhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjؗubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjؗubh__percpu}(hjؗhhhNhNubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjؗubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjؗubjx)}(hdev_idh]hdev_id}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjؗubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjܖubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhM ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhM ubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhM hjhhubj5)}(hhh]jo)}(h1allocate a percpu interrupt line for NMI deliveryh]h1allocate a percpu interrupt line for NMI delivery}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hj>hhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhM ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjYjWjYjXjYjZuh1j=hhhj`hNhNubj\)}(hXC**Parameters** ``unsigned int irq`` Interrupt line to allocate ``irq_handler_t handler`` Function to be called when the IRQ occurs. ``const char *name`` An ascii name for the claiming device ``void __percpu *dev_id`` A percpu cookie passed back to the handler function **Description** This call allocates interrupt resources for a per CPU NMI. Per CPU NMIs have to be setup on each CPU by calling prepare_percpu_nmi() before being enabled on the same CPU by using enable_percpu_nmi(). **dev_id** must be globally unique. It is a per-cpu variable, and the handler gets called with the interrupted CPU's instance of that variable. Interrupt lines requested for NMI delivering should have auto enabling setting disabled. If the interrupt line cannot be used to deliver NMIs, function will fail returning a negative value.h](jo)}(h**Parameters**h]jf)}(hjch]h Parameters}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jehjaubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hj]ubj|)}(hhh](j)}(h0``unsigned int irq`` Interrupt line to allocate h](j)}(h``unsigned int irq``h]j)}(hjh]hunsigned int irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hj|ubj)}(hhh]jo)}(hInterrupt line to allocateh]hInterrupt line to allocate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhM hjubah}(h]h ]h"]h$]h&]uh1jhj|ubeh}(h]h ]h"]h$]h&]uh1jhjhM hjyubj)}(hE``irq_handler_t handler`` Function to be called when the IRQ occurs. h](j)}(h``irq_handler_t handler``h]j)}(hjh]hirq_handler_t handler}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hjubj)}(hhh]jo)}(h*Function to be called when the IRQ occurs.h]h*Function to be called when the IRQ occurs.}(hjԘhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjИhM hjјubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjИhM hjyubj)}(h;``const char *name`` An ascii name for the claiming device h](j)}(h``const char *name``h]j)}(hjh]hconst char *name}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hjubj)}(hhh]jo)}(h%An ascii name for the claiming deviceh]h%An ascii name for the claiming device}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj hM hj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj hM hjyubj)}(hN``void __percpu *dev_id`` A percpu cookie passed back to the handler function h](j)}(h``void __percpu *dev_id``h]j)}(hj-h]hvoid __percpu *dev_id}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hj'ubj)}(hhh]jo)}(h3A percpu cookie passed back to the handler functionh]h3A percpu cookie passed back to the handler function}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjBhM hjCubah}(h]h ]h"]h$]h&]uh1jhj'ubeh}(h]h ]h"]h$]h&]uh1jhjBhM hjyubeh}(h]h ]h"]h$]h&]uh1j{hj]ubjo)}(h**Description**h]jf)}(hjhh]h Description}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjfubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hj]ubjo)}(hThis call allocates interrupt resources for a per CPU NMI. Per CPU NMIs have to be setup on each CPU by calling prepare_percpu_nmi() before being enabled on the same CPU by using enable_percpu_nmi().h]hThis call allocates interrupt resources for a per CPU NMI. Per CPU NMIs have to be setup on each CPU by calling prepare_percpu_nmi() before being enabled on the same CPU by using enable_percpu_nmi().}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hj]ubjo)}(h**dev_id** must be globally unique. It is a per-cpu variable, and the handler gets called with the interrupted CPU's instance of that variable.h](jf)}(h **dev_id**h]hdev_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubh must be globally unique. It is a per-cpu variable, and the handler gets called with the interrupted CPU’s instance of that variable.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hj]ubjo)}(hXInterrupt lines requested for NMI delivering should have auto enabling setting disabled.h]hXInterrupt lines requested for NMI delivering should have auto enabling setting disabled.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hj]ubjo)}(hdIf the interrupt line cannot be used to deliver NMIs, function will fail returning a negative value.h]hdIf the interrupt line cannot be used to deliver NMIs, function will fail returning a negative value.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hj]ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9prepare_percpu_nmi (C function)c.prepare_percpu_nmihNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(h)int prepare_percpu_nmi (unsigned int irq)h]jI)}(h(int prepare_percpu_nmi(unsigned int irq)h](jO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhM ubjr)}(hprepare_percpu_nmih]jx)}(hprepare_percpu_nmih]hprepare_percpu_nmi}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhM ubj)}(h(unsigned int irq)h]j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hj%hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj!ubja)}(h h]h }(hj3hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj!ubjO)}(hinth]hint}(hjAhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj!ubja)}(h h]h }(hjOhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj!ubjx)}(hirqh]hirq}(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj!ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhM ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhM ubah}(h]jۙah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhM hjݙhhubj5)}(hhh]jo)}(h)performs CPU local setup for NMI deliveryh]h)performs CPU local setup for NMI delivery}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hjhhubah}(h]h ]h"]h$]h&]uh1j4hjݙhhhjhM ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhj`hNhNubj\)}(hX**Parameters** ``unsigned int irq`` Interrupt line to prepare for NMI delivery **Description** This call prepares an interrupt line to deliver NMI on the current CPU, before that interrupt line gets enabled with enable_percpu_nmi(). As a CPU local operation, this should be called from non-preemptible context. If the interrupt line cannot be used to deliver NMIs, function will fail returning a negative value.h](jo)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hjubj|)}(hhh]j)}(h@``unsigned int irq`` Interrupt line to prepare for NMI delivery h](j)}(h``unsigned int irq``h]j)}(hjȚh]hunsigned int irq}(hjʚhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjƚubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hjšubj)}(hhh]jo)}(h*Interrupt line to prepare for NMI deliveryh]h*Interrupt line to prepare for NMI delivery}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjݚhM hjޚubah}(h]h ]h"]h$]h&]uh1jhjšubeh}(h]h ]h"]h$]h&]uh1jhjݚhM hjubah}(h]h ]h"]h$]h&]uh1j{hjubjo)}(h**Description**h]jf)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hjubjo)}(hThis call prepares an interrupt line to deliver NMI on the current CPU, before that interrupt line gets enabled with enable_percpu_nmi().h]hThis call prepares an interrupt line to deliver NMI on the current CPU, before that interrupt line gets enabled with enable_percpu_nmi().}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hjubjo)}(hMAs a CPU local operation, this should be called from non-preemptible context.h]hMAs a CPU local operation, this should be called from non-preemptible context.}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hjubjo)}(hdIf the interrupt line cannot be used to deliver NMIs, function will fail returning a negative value.h]hdIf the interrupt line cannot be used to deliver NMIs, function will fail returning a negative value.}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9 teardown_percpu_nmi (C function)c.teardown_percpu_nmihNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(h+void teardown_percpu_nmi (unsigned int irq)h]jI)}(h*void teardown_percpu_nmi(unsigned int irq)h](jO)}(hvoidh]hvoid}(hjfhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjbhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM3 ubja)}(h h]h }(hjuhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjbhhhjthM3 ubjr)}(hteardown_percpu_nmih]jx)}(hteardown_percpu_nmih]hteardown_percpu_nmi}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjbhhhjthM3 ubj)}(h(unsigned int irq)h]j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hj͛hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hirqh]hirq}(hjۛhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjbhhhjthM3 ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj^hhhjthM3 ubah}(h]jYah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjthM3 hj[hhubj5)}(hhh]jo)}(hundoes NMI setup of IRQ lineh]hundoes NMI setup of IRQ line}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM3 hjhhubah}(h]h ]h"]h$]h&]uh1j4hj[hhhjthM3 ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhj`hNhNubj\)}(hX<**Parameters** ``unsigned int irq`` Interrupt line from which CPU local NMI configuration should be removed **Description** This call undoes the setup done by prepare_percpu_nmi(). IRQ line should not be enabled for the current CPU. As a CPU local operation, this should be called from non-preemptible context.h](jo)}(h**Parameters**h]jf)}(hj'h]h Parameters}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj%ubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM7 hj!ubj|)}(hhh]j)}(h]``unsigned int irq`` Interrupt line from which CPU local NMI configuration should be removed h](j)}(h``unsigned int irq``h]j)}(hjFh]hunsigned int irq}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM4 hj@ubj)}(hhh]jo)}(hGInterrupt line from which CPU local NMI configuration should be removedh]hGInterrupt line from which CPU local NMI configuration should be removed}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj[hM4 hj\ubah}(h]h ]h"]h$]h&]uh1jhj@ubeh}(h]h ]h"]h$]h&]uh1jhj[hM4 hj=ubah}(h]h ]h"]h$]h&]uh1j{hj!ubjo)}(h**Description**h]jf)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM6 hj!ubjo)}(h8This call undoes the setup done by prepare_percpu_nmi().h]h8This call undoes the setup done by prepare_percpu_nmi().}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM6 hj!ubjo)}(hIRQ line should not be enabled for the current CPU. As a CPU local operation, this should be called from non-preemptible context.h]hIRQ line should not be enabled for the current CPU. As a CPU local operation, this should be called from non-preemptible context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM8 hj!ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9"irq_get_irqchip_state (C function)c.irq_get_irqchip_statehNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(hWint irq_get_irqchip_state (unsigned int irq, enum irqchip_irq_state which, bool *state)h]jI)}(hVint irq_get_irqchip_state(unsigned int irq, enum irqchip_irq_state which, bool *state)h](jO)}(hinth]hint}(hj՜hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjќhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM_ ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjќhhhjhM_ ubjr)}(hirq_get_irqchip_stateh]jx)}(hirq_get_irqchip_stateh]hirq_get_irqchip_state}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjќhhhjhM_ ubj)}(h=(unsigned int irq, enum irqchip_irq_state which, bool *state)h](j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hj hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjO)}(hinth]hint}(hj.hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hj<hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hirqh]hirq}(hjJhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(henum irqchip_irq_state whichh](j)}(hj%h]henum}(hjchhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_ubja)}(h h]h }(hjphhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj_ubh)}(hhh]jx)}(hirqchip_irq_stateh]hirqchip_irq_state}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj~ubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.irq_get_irqchip_stateasbuh1hhj_ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj_ubjx)}(hwhichh]hwhich}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj_ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(h bool *stateh](jO)}(hj`h]hbool}(hjȝhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjĝubja)}(h h]h }(hj՝hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjĝubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjĝubjx)}(hstateh]hstate}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjĝubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubeh}(h]h ]h"]h$]h&]hhuh1jhjќhhhjhM_ ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj͜hhhjhM_ ubah}(h]jȜah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhM_ hjʜhhubj5)}(hhh]jo)}(h)returns the irqchip state of a interrupt.h]h)returns the irqchip state of a interrupt.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM_ hjhhubah}(h]h ]h"]h$]h&]uh1j4hjʜhhhjhM_ ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj2jWj2jXjYjZuh1j=hhhj`hNhNubj\)}(hX**Parameters** ``unsigned int irq`` Interrupt line that is forwarded to a VM ``enum irqchip_irq_state which`` One of IRQCHIP_STATE_* the caller wants to know about ``bool *state`` a pointer to a boolean where the state is to be stored **Description** This call snapshots the internal irqchip state of an interrupt, returning into **state** the bit corresponding to stage **which** This function should be called with preemption disabled if the interrupt controller has per-cpu registers.h](jo)}(h**Parameters**h]jf)}(hj<h]h Parameters}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj:ubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMc hj6ubj|)}(hhh](j)}(h>``unsigned int irq`` Interrupt line that is forwarded to a VM h](j)}(h``unsigned int irq``h]j)}(hj[h]hunsigned int irq}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjYubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM` hjUubj)}(hhh]jo)}(h(Interrupt line that is forwarded to a VMh]h(Interrupt line that is forwarded to a VM}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjphM` hjqubah}(h]h ]h"]h$]h&]uh1jhjUubeh}(h]h ]h"]h$]h&]uh1jhjphM` hjRubj)}(hW``enum irqchip_irq_state which`` One of IRQCHIP_STATE_* the caller wants to know about h](j)}(h ``enum irqchip_irq_state which``h]j)}(hjh]henum irqchip_irq_state which}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMa hjubj)}(hhh]jo)}(h5One of IRQCHIP_STATE_* the caller wants to know abouth]h5One of IRQCHIP_STATE_* the caller wants to know about}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhMa hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMa hjRubj)}(hG``bool *state`` a pointer to a boolean where the state is to be stored h](j)}(h``bool *state``h]j)}(hj͞h]h bool *state}(hjϞhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj˞ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMb hjǞubj)}(hhh]jo)}(h6a pointer to a boolean where the state is to be storedh]h6a pointer to a boolean where the state is to be stored}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhMb hjubah}(h]h ]h"]h$]h&]uh1jhjǞubeh}(h]h ]h"]h$]h&]uh1jhjhMb hjRubeh}(h]h ]h"]h$]h&]uh1j{hj6ubjo)}(h**Description**h]jf)}(hjh]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMd hj6ubjo)}(hThis call snapshots the internal irqchip state of an interrupt, returning into **state** the bit corresponding to stage **which**h](hOThis call snapshots the internal irqchip state of an interrupt, returning into }(hjhhhNhNubjf)}(h **state**h]hstate}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubh the bit corresponding to stage }(hjhhhNhNubjf)}(h **which**h]hwhich}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubeh}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMd hj6ubjo)}(hjThis function should be called with preemption disabled if the interrupt controller has per-cpu registers.h]hjThis function should be called with preemption disabled if the interrupt controller has per-cpu registers.}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMg hj6ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9"irq_set_irqchip_state (C function)c.irq_set_irqchip_statehNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(hTint irq_set_irqchip_state (unsigned int irq, enum irqchip_irq_state which, bool val)h]jI)}(hSint irq_set_irqchip_state(unsigned int irq, enum irqchip_irq_state which, bool val)h](jO)}(hinth]hint}(hj|hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjxhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMv ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjxhhhjhMv ubjr)}(hirq_set_irqchip_stateh]jx)}(hirq_set_irqchip_stateh]hirq_set_irqchip_state}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjxhhhjhMv ubj)}(h:(unsigned int irq, enum irqchip_irq_state which, bool val)h](j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjǟhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjO)}(hinth]hint}(hj՟hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hirqh]hirq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(henum irqchip_irq_state whichh](j)}(hj%h]henum}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubh)}(hhh]jx)}(hirqchip_irq_stateh]hirqchip_irq_state}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj%ubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetj*modnameN classnameNjj)}j]j)}jjsbc.irq_set_irqchip_stateasbuh1hhjubja)}(h h]h }(hjHhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hwhichh]hwhich}(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hbool valh](jO)}(hj`h]hbool}(hjohhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjkubja)}(h h]h }(hj|hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjkubjx)}(hvalh]hval}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjkubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjxhhhjhMv ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjthhhjhMv ubah}(h]joah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhMv hjqhhubj5)}(hhh]jo)}(h'set the state of a forwarded interrupt.h]h'set the state of a forwarded interrupt.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMv hjhhubah}(h]h ]h"]h$]h&]uh1j4hjqhhhjhMv ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj̠jWj̠jXjYjZuh1j=hhhj`hNhNubj\)}(hX**Parameters** ``unsigned int irq`` Interrupt line that is forwarded to a VM ``enum irqchip_irq_state which`` State to be restored (one of IRQCHIP_STATE_*) ``bool val`` Value corresponding to **which** **Description** This call sets the internal irqchip state of an interrupt, depending on the value of **which**. This function should be called with migration disabled if the interrupt controller has per-cpu registers.h](jo)}(h**Parameters**h]jf)}(hj֠h]h Parameters}(hjؠhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjԠubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMz hjРubj|)}(hhh](j)}(h>``unsigned int irq`` Interrupt line that is forwarded to a VM h](j)}(h``unsigned int irq``h]j)}(hjh]hunsigned int irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMw hjubj)}(hhh]jo)}(h(Interrupt line that is forwarded to a VMh]h(Interrupt line that is forwarded to a VM}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj hMw hj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj hMw hjubj)}(hO``enum irqchip_irq_state which`` State to be restored (one of IRQCHIP_STATE_*) h](j)}(h ``enum irqchip_irq_state which``h]j)}(hj.h]henum irqchip_irq_state which}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMx hj(ubj)}(hhh]jo)}(h-State to be restored (one of IRQCHIP_STATE_*)h]h-State to be restored (one of IRQCHIP_STATE_*)}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjChMx hjDubah}(h]h ]h"]h$]h&]uh1jhj(ubeh}(h]h ]h"]h$]h&]uh1jhjChMx hjubj)}(h.``bool val`` Value corresponding to **which** h](j)}(h ``bool val``h]j)}(hjgh]hbool val}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jhjeubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chMy hjaubj)}(hhh]jo)}(h Value corresponding to **which**h](hValue corresponding to }(hjhhhNhNubjf)}(h **which**h]hwhich}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubeh}(h]h ]h"]h$]h&]uh1jnhj|hMy hj}ubah}(h]h ]h"]h$]h&]uh1jhjaubeh}(h]h ]h"]h$]h&]uh1jhj|hMy hjubeh}(h]h ]h"]h$]h&]uh1j{hjРubjo)}(h**Description**h]jf)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM{ hjРubjo)}(h_This call sets the internal irqchip state of an interrupt, depending on the value of **which**.h](hUThis call sets the internal irqchip state of an interrupt, depending on the value of }(hjơhhhNhNubjf)}(h **which**h]hwhich}(hjΡhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjơubh.}(hjơhhhNhNubeh}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM{ hjРubjo)}(hiThis function should be called with migration disabled if the interrupt controller has per-cpu registers.h]hiThis function should be called with migration disabled if the interrupt controller has per-cpu registers.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM~ hjРubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_has_action (C function)c.irq_has_actionhNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(h&bool irq_has_action (unsigned int irq)h]jI)}(h%bool irq_has_action(unsigned int irq)h](jO)}(hj`h]hbool}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM ubja)}(h h]h }(hj$hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhj#hM ubjr)}(hirq_has_actionh]jx)}(hirq_has_actionh]hirq_has_action}(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj2ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhj#hM ubj)}(h(unsigned int irq)h]j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hjRhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjNubja)}(h h]h }(hj`hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjNubjO)}(hinth]hint}(hjnhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjNubja)}(h h]h }(hj|hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjNubjx)}(hirqh]hirq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjNubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjJubah}(h]h ]h"]h$]h&]hhuh1jhjhhhj#hM ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhj#hM ubah}(h]j ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhj#hM hj hhubj5)}(hhh]jo)}(h'Check whether an interrupt is requestedh]h'Check whether an interrupt is requested}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hjhhubah}(h]h ]h"]h$]h&]uh1j4hj hhhj#hM ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj̢jWj̢jXjYjZuh1j=hhhj`hNhNubj\)}(hh**Parameters** ``unsigned int irq`` The linux irq number **Return** A snapshot of the current stateh](jo)}(h**Parameters**h]jf)}(hj֢h]h Parameters}(hjآhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjԢubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hjТubj|)}(hhh]j)}(h*``unsigned int irq`` The linux irq number h](j)}(h``unsigned int irq``h]j)}(hjh]hunsigned int irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hjubj)}(hhh]jo)}(hThe linux irq numberh]hThe linux irq number}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj hM hj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj hM hjubah}(h]h ]h"]h$]h&]uh1j{hjТubjo)}(h **Return**h]jf)}(hj0h]hReturn}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj.ubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hjТubjo)}(hA snapshot of the current stateh]hA snapshot of the current state}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hjТubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9!irq_check_status_bit (C function)c.irq_check_status_bithNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(hBbool irq_check_status_bit (unsigned int irq, unsigned int bitmask)h]jI)}(hAbool irq_check_status_bit(unsigned int irq, unsigned int bitmask)h](jO)}(hj`h]hbool}(hjuhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjqhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjqhhhjhM ubjr)}(hirq_check_status_bith]jx)}(hirq_check_status_bith]hirq_check_status_bit}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjqhhhjhM ubj)}(h((unsigned int irq, unsigned int bitmask)h](j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjO)}(hinth]hint}(hjͣhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjۣhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hirqh]hirq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hunsigned int bitmaskh](jO)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hj,hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hbitmaskh]hbitmask}(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjqhhhjhM ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjmhhhjhM ubah}(h]jhah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhM hjjhhubj5)}(hhh]jo)}(h7Check whether bits in the irq descriptor status are seth]h7Check whether bits in the irq descriptor status are set}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hjahhubah}(h]h ]h"]h$]h&]uh1j4hjjhhhjhM ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj|jWj|jXjYjZuh1j=hhhj`hNhNubj\)}(h**Parameters** ``unsigned int irq`` The linux irq number ``unsigned int bitmask`` The bitmask to evaluate **Return** True if one of the bits in **bitmask** is seth](jo)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hjubj|)}(hhh](j)}(h*``unsigned int irq`` The linux irq number h](j)}(h``unsigned int irq``h]j)}(hjh]hunsigned int irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hjubj)}(hhh]jo)}(hThe linux irq numberh]hThe linux irq number}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhM hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM hjubj)}(h1``unsigned int bitmask`` The bitmask to evaluate h](j)}(h``unsigned int bitmask``h]j)}(hjޤh]hunsigned int bitmask}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjܤubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hjؤubj)}(hhh]jo)}(hThe bitmask to evaluateh]hThe bitmask to evaluate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhM hjubah}(h]h ]h"]h$]h&]uh1jhjؤubeh}(h]h ]h"]h$]h&]uh1jhjhM hjubeh}(h]h ]h"]h$]h&]uh1j{hjubjo)}(h **Return**h]jf)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hjubjo)}(h-True if one of the bits in **bitmask** is seth](hTrue if one of the bits in }(hj/hhhNhNubjf)}(h **bitmask**h]hbitmask}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj/ubh is set}(hj/hhhNhNubeh}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:505: ./kernel/irq/manage.chM hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_set_chip (C function)c.irq_set_chiphNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(h@int irq_set_chip (unsigned int irq, const struct irq_chip *chip)h]jI)}(h?int irq_set_chip(unsigned int irq, const struct irq_chip *chip)h](jO)}(hinth]hint}(hjphhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjlhhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chK%ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjlhhhj~hK%ubjr)}(h irq_set_chiph]jx)}(h irq_set_chiph]h irq_set_chip}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjlhhhj~hK%ubj)}(h/(unsigned int irq, const struct irq_chip *chip)h](j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjO)}(hinth]hint}(hjɥhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjץhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hirqh]hirq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hconst struct irq_chip *chiph](j)}(hjmh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubja)}(h h]h }(hj hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubja)}(h h]h }(hj&hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubh)}(hhh]jx)}(hirq_chiph]hirq_chip}(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj4ubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetj9modnameN classnameNjj)}j]j)}jjsbc.irq_set_chipasbuh1hhjubja)}(h h]h }(hjWhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hchiph]hchip}(hjrhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjlhhhj~hK%ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhhj~hK%ubah}(h]jcah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhj~hK%hjehhubj5)}(hhh]jo)}(hset the irq chip for an irqh]hset the irq chip for an irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chK%hjhhubah}(h]h ]h"]h$]h&]uh1j4hjehhhj~hK%ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhj`hNhNubj\)}(h~**Parameters** ``unsigned int irq`` irq number ``const struct irq_chip *chip`` pointer to irq chip description structureh](jo)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chK)hjubj|)}(hhh](j)}(h ``unsigned int irq`` irq number h](j)}(h``unsigned int irq``h]j)}(hjݦh]hunsigned int irq}(hjߦhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjۦubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chK&hjצubj)}(hhh]jo)}(h irq numberh]h irq number}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhK&hjubah}(h]h ]h"]h$]h&]uh1jhjצubeh}(h]h ]h"]h$]h&]uh1jhjhK&hjԦubj)}(hI``const struct irq_chip *chip`` pointer to irq chip description structureh](j)}(h``const struct irq_chip *chip``h]j)}(hjh]hconst struct irq_chip *chip}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chK(hjubj)}(hhh]jo)}(h)pointer to irq chip description structureh]h)pointer to irq chip description structure}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chK'hj,ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj+hK(hjԦubeh}(h]h ]h"]h$]h&]uh1j{hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_set_irq_type (C function)c.irq_set_irq_typehNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(h:int irq_set_irq_type (unsigned int irq, unsigned int type)h]jI)}(h9int irq_set_irq_type(unsigned int irq, unsigned int type)h](jO)}(hinth]hint}(hjphhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjlhhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chK9ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjlhhhj~hK9ubjr)}(hirq_set_irq_typeh]jx)}(hirq_set_irq_typeh]hirq_set_irq_type}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjlhhhj~hK9ubj)}(h%(unsigned int irq, unsigned int type)h](j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjO)}(hinth]hint}(hjɧhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjקhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hirqh]hirq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hunsigned int typeh](jO)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hj hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hj(hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(htypeh]htype}(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjlhhhj~hK9ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhhj~hK9ubah}(h]jcah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhj~hK9hjehhubj5)}(hhh]jo)}(h#set the irq trigger type for an irqh]h#set the irq trigger type for an irq}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chK9hj]hhubah}(h]h ]h"]h$]h&]uh1j4hjehhhj~hK9ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjxjWjxjXjYjZuh1j=hhhj`hNhNubj\)}(h**Parameters** ``unsigned int irq`` irq number ``unsigned int type`` IRQ_TYPE_{LEVEL,EDGE}_* value - see include/linux/irq.hh](jo)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chK=hj|ubj|)}(hhh](j)}(h ``unsigned int irq`` irq number h](j)}(h``unsigned int irq``h]j)}(hjh]hunsigned int irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chK:hjubj)}(hhh]jo)}(h irq numberh]h irq number}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhK:hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK:hjubj)}(hM``unsigned int type`` IRQ_TYPE_{LEVEL,EDGE}_* value - see include/linux/irq.hh](j)}(h``unsigned int type``h]j)}(hjڨh]hunsigned int type}(hjܨhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjبubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chK)}(hhh](jC)}(h7int irq_set_handler_data (unsigned int irq, void *data)h]jI)}(h6int irq_set_handler_data(unsigned int irq, void *data)h](jO)}(hinth]hint}(hj4hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj0hhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chKFubja)}(h h]h }(hjChhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj0hhhjBhKFubjr)}(hirq_set_handler_datah]jx)}(hirq_set_handler_datah]hirq_set_handler_data}(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjQubah}(h]h ](jjeh"]h$]h&]hhuh1jqhj0hhhjBhKFubj)}(h(unsigned int irq, void *data)h](j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hjqhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjmubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjmubjO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjmubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjmubjx)}(hirqh]hirq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjmubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjiubj)}(h void *datah](jO)}(hvoidh]hvoid}(hj©hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjЩhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hjީhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjiubeh}(h]h ]h"]h$]h&]hhuh1jhj0hhhjBhKFubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj,hhhjBhKFubah}(h]j'ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjBhKFhj)hhubj5)}(hhh]jo)}(hset irq handler data for an irqh]hset irq handler data for an irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chKFhjhhubah}(h]h ]h"]h$]h&]uh1j4hj)hhhjBhKFubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj-jWj-jXjYjZuh1j=hhhj`hNhNubj\)}(h**Parameters** ``unsigned int irq`` Interrupt number ``void *data`` Pointer to interrupt specific data **Description** Set the hardware irq controller data for an irqh](jo)}(h**Parameters**h]jf)}(hj7h]h Parameters}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj5ubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chKJhj1ubj|)}(hhh](j)}(h&``unsigned int irq`` Interrupt number h](j)}(h``unsigned int irq``h]j)}(hjVh]hunsigned int irq}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chKGhjPubj)}(hhh]jo)}(hInterrupt numberh]hInterrupt number}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjkhKGhjlubah}(h]h ]h"]h$]h&]uh1jhjPubeh}(h]h ]h"]h$]h&]uh1jhjkhKGhjMubj)}(h2``void *data`` Pointer to interrupt specific data h](j)}(h``void *data``h]j)}(hjh]h void *data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chKHhjubj)}(hhh]jo)}(h"Pointer to interrupt specific datah]h"Pointer to interrupt specific data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhKHhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKHhjMubeh}(h]h ]h"]h$]h&]uh1j{hj1ubjo)}(h**Description**h]jf)}(hjʪh]h Description}(hj̪hhhNhNubah}(h]h ]h"]h$]h&]uh1jehjȪubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chKJhj1ubjo)}(h/Set the hardware irq controller data for an irqh]h/Set the hardware irq controller data for an irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chKJhj1ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_set_chip_data (C function)c.irq_set_chip_datahNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(h4int irq_set_chip_data (unsigned int irq, void *data)h]jI)}(h3int irq_set_chip_data(unsigned int irq, void *data)h](jO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj hhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chKvubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj hhhjhKvubjr)}(hirq_set_chip_datah]jx)}(hirq_set_chip_datah]hirq_set_chip_data}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj,ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhj hhhjhKvubj)}(h(unsigned int irq, void *data)h](j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hjLhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjHubja)}(h h]h }(hjZhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjHubjO)}(hinth]hint}(hjhhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjHubja)}(h h]h }(hjvhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjHubjx)}(hirqh]hirq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjHubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjDubj)}(h void *datah](jO)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hdatah]hdata}(hjƫhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjDubeh}(h]h ]h"]h$]h&]hhuh1jhj hhhjhKvubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhKvubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhKvhjhhubj5)}(hhh]jo)}(hset irq chip data for an irqh]hset irq chip data for an irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chKvhjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhKvubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhj`hNhNubj\)}(h**Parameters** ``unsigned int irq`` Interrupt number ``void *data`` Pointer to chip specific data **Description** Set the hardware irq chip data for an irqh](jo)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chKzhj ubj|)}(hhh](j)}(h&``unsigned int irq`` Interrupt number h](j)}(h``unsigned int irq``h]j)}(hj1h]hunsigned int irq}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chKwhj+ubj)}(hhh]jo)}(hInterrupt numberh]hInterrupt number}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjFhKwhjGubah}(h]h ]h"]h$]h&]uh1jhj+ubeh}(h]h ]h"]h$]h&]uh1jhjFhKwhj(ubj)}(h-``void *data`` Pointer to chip specific data h](j)}(h``void *data``h]j)}(hjjh]h void *data}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chKxhjdubj)}(hhh]jo)}(hPointer to chip specific datah]hPointer to chip specific data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhKxhjubah}(h]h ]h"]h$]h&]uh1jhjdubeh}(h]h ]h"]h$]h&]uh1jhjhKxhj(ubeh}(h]h ]h"]h$]h&]uh1j{hj ubjo)}(h**Description**h]jf)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chKzhj ubjo)}(h)Set the hardware irq chip data for an irqh]h)Set the hardware irq chip data for an irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chKzhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9handle_nested_irq (C function)c.handle_nested_irqhNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(h)void handle_nested_irq (unsigned int irq)h]jI)}(h(void handle_nested_irq(unsigned int irq)h](jO)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhMubjr)}(hhandle_nested_irqh]jx)}(hhandle_nested_irqh]hhandle_nested_irq}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhMubj)}(h(unsigned int irq)h]j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hj'hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj#ubja)}(h h]h }(hj5hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj#ubjO)}(hinth]hint}(hjChhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj#ubja)}(h h]h }(hjQhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj#ubjx)}(hirqh]hirq}(hj_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj#ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhMubah}(h]jݬah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhMhj߬hhubj5)}(hhh]jo)}(h%Handle a nested irq from a irq threadh]h%Handle a nested irq from a irq thread}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjhhubah}(h]h ]h"]h$]h&]uh1j4hj߬hhhjhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhj`hNhNubj\)}(h**Parameters** ``unsigned int irq`` the interrupt number **Description** Handle interrupts which are nested into a threaded interrupt handler. The handler function is called inside the calling threads context.h](jo)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjubj|)}(hhh]j)}(h*``unsigned int irq`` the interrupt number h](j)}(h``unsigned int irq``h]j)}(hjʭh]hunsigned int irq}(hj̭hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjȭubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjĭubj)}(hhh]jo)}(hthe interrupt numberh]hthe interrupt number}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj߭hMhjubah}(h]h ]h"]h$]h&]uh1jhjĭubeh}(h]h ]h"]h$]h&]uh1jhj߭hMhjubah}(h]h ]h"]h$]h&]uh1j{hjubjo)}(h**Description**h]jf)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjubjo)}(hHandle interrupts which are nested into a threaded interrupt handler. The handler function is called inside the calling threads context.h]hHandle interrupts which are nested into a threaded interrupt handler. The handler function is called inside the calling threads context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9handle_simple_irq (C function)c.handle_simple_irqhNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(h.void handle_simple_irq (struct irq_desc *desc)h]jI)}(h-void handle_simple_irq(struct irq_desc *desc)h](jO)}(hvoidh]hvoid}(hjJhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjFhhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chM$ubja)}(h h]h }(hjYhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjFhhhjXhM$ubjr)}(hhandle_simple_irqh]jx)}(hhandle_simple_irqh]hhandle_simple_irq}(hjkhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjgubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjFhhhjXhM$ubj)}(h(struct irq_desc *desc)h]j)}(hstruct irq_desc *desch](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubh)}(hhh]jx)}(hirq_desch]hirq_desc}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjmodnameN classnameNjj)}j]j)}jjmsbc.handle_simple_irqasbuh1hhjubja)}(h h]h }(hjŮhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hjӮhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hdesch]hdesc}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjFhhhjXhM$ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjBhhhjXhM$ubah}(h]j=ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjXhM$hj?hhubj5)}(hhh]jo)}(h!Simple and software-decoded IRQs.h]h!Simple and software-decoded IRQs.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chM$hjhhubah}(h]h ]h"]h$]h&]uh1j4hj?hhhjXhM$ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj"jWj"jXjYjZuh1j=hhhj`hNhNubj\)}(hXb**Parameters** ``struct irq_desc *desc`` the interrupt description structure for this irq **Description** Simple interrupts are either sent from a demultiplexing interrupt handler or come from hardware, where no interrupt hardware control is necessary. **Note** The caller is expected to handle the ack, clear, mask and unmask issues if necessary.h](jo)}(h**Parameters**h]jf)}(hj,h]h Parameters}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj*ubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chM(hj&ubj|)}(hhh]j)}(hK``struct irq_desc *desc`` the interrupt description structure for this irq h](j)}(h``struct irq_desc *desc``h]j)}(hjKh]hstruct irq_desc *desc}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chM%hjEubj)}(hhh]jo)}(h0the interrupt description structure for this irqh]h0the interrupt description structure for this irq}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj`hM%hjaubah}(h]h ]h"]h$]h&]uh1jhjEubeh}(h]h ]h"]h$]h&]uh1jhj`hM%hjBubah}(h]h ]h"]h$]h&]uh1j{hj&ubjo)}(h**Description**h]jf)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chM'hj&ubjo)}(hSimple interrupts are either sent from a demultiplexing interrupt handler or come from hardware, where no interrupt hardware control is necessary.h]hSimple interrupts are either sent from a demultiplexing interrupt handler or come from hardware, where no interrupt hardware control is necessary.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chM'hj&ubjo)}(h**Note**h]jf)}(hjh]hNote}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chM+hj&ubjo)}(hUThe caller is expected to handle the ack, clear, mask and unmask issues if necessary.h]hUThe caller is expected to handle the ack, clear, mask and unmask issues if necessary.}(hjïhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chM+hj&ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9!handle_untracked_irq (C function)c.handle_untracked_irqhNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(h1void handle_untracked_irq (struct irq_desc *desc)h]jI)}(h0void handle_untracked_irq(struct irq_desc *desc)h](jO)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chM;ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhM;ubjr)}(hhandle_untracked_irqh]jx)}(hhandle_untracked_irqh]hhandle_untracked_irq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhM;ubj)}(h(struct irq_desc *desc)h]j)}(hstruct irq_desc *desch](j)}(hjh]hstruct}(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubja)}(h h]h }(hj<hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj+ubh)}(hhh]jx)}(hirq_desch]hirq_desc}(hjMhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjJubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjOmodnameN classnameNjj)}j]j)}jjsbc.handle_untracked_irqasbuh1hhj+ubja)}(h h]h }(hjmhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj+ubj)}(hjh]h*}(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubjx)}(hdesch]hdesc}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj+ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj'ubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhM;ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhM;ubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhM;hjhhubj5)}(hhh]jo)}(h!Simple and software-decoded IRQs.h]h!Simple and software-decoded IRQs.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chM;hjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhM;ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjʰjWjʰjXjYjZuh1j=hhhj`hNhNubj\)}(hX**Parameters** ``struct irq_desc *desc`` the interrupt description structure for this irq **Description** Untracked interrupts are sent from a demultiplexing interrupt handler when the demultiplexer does not know which device it its multiplexed irq domain generated the interrupt. IRQ's handled through here are not subjected to stats tracking, randomness, or spurious interrupt detection. **Note** Like handle_simple_irq, the caller is expected to handle the ack, clear, mask and unmask issues if necessary.h](jo)}(h**Parameters**h]jf)}(hj԰h]h Parameters}(hjְhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjҰubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chM?hjΰubj|)}(hhh]j)}(hK``struct irq_desc *desc`` the interrupt description structure for this irq h](j)}(h``struct irq_desc *desc``h]j)}(hjh]hstruct irq_desc *desc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chM<hjubj)}(hhh]jo)}(h0the interrupt description structure for this irqh]h0the interrupt description structure for this irq}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhM<hj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM<hjubah}(h]h ]h"]h$]h&]uh1j{hjΰubjo)}(h**Description**h]jf)}(hj.h]h Description}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj,ubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chM>hjΰubjo)}(hXUntracked interrupts are sent from a demultiplexing interrupt handler when the demultiplexer does not know which device it its multiplexed irq domain generated the interrupt. IRQ's handled through here are not subjected to stats tracking, randomness, or spurious interrupt detection.h]hXUntracked interrupts are sent from a demultiplexing interrupt handler when the demultiplexer does not know which device it its multiplexed irq domain generated the interrupt. IRQ’s handled through here are not subjected to stats tracking, randomness, or spurious interrupt detection.}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chM>hjΰubjo)}(h**Note**h]jf)}(hjUh]hNote}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjSubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMDhjΰubjo)}(hmLike handle_simple_irq, the caller is expected to handle the ack, clear, mask and unmask issues if necessary.h]hmLike handle_simple_irq, the caller is expected to handle the ack, clear, mask and unmask issues if necessary.}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMDhjΰubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9handle_level_irq (C function)c.handle_level_irqhNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(h-void handle_level_irq (struct irq_desc *desc)h]jI)}(h,void handle_level_irq(struct irq_desc *desc)h](jO)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMkubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhMkubjr)}(hhandle_level_irqh]jx)}(hhandle_level_irqh]hhandle_level_irq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhMkubj)}(h(struct irq_desc *desc)h]j)}(hstruct irq_desc *desch](j)}(hjh]hstruct}(hjױhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjӱubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjӱubh)}(hhh]jx)}(hirq_desch]hirq_desc}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.handle_level_irqasbuh1hhjӱubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjӱubj)}(hjh]h*}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjӱubjx)}(hdesch]hdesc}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjӱubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjϱubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMkubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhMkubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhMkhjhhubj5)}(hhh]jo)}(hLevel type irq handlerh]hLevel type irq handler}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMkhjWhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhMkubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjrjWjrjXjYjZuh1j=hhhj`hNhNubj\)}(hX\**Parameters** ``struct irq_desc *desc`` the interrupt description structure for this irq **Description** Level type interrupts are active as long as the hardware line has the active level. This may require to mask the interrupt and unmask it after the associated handler has acknowledged the device, so the interrupt line is back to inactive.h](jo)}(h**Parameters**h]jf)}(hj|h]h Parameters}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jehjzubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.cGhMohjvubj|)}(hhh]j)}(hK``struct irq_desc *desc`` the interrupt description structure for this irq h](j)}(h``struct irq_desc *desc``h]j)}(hjh]hstruct irq_desc *desc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMlhjubj)}(hhh]jo)}(h0the interrupt description structure for this irqh]h0the interrupt description structure for this irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhMlhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMlhjubah}(h]h ]h"]h$]h&]uh1j{hjvubjo)}(h**Description**h]jf)}(hjֲh]h Description}(hjزhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjԲubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMnhjvubjo)}(hLevel type interrupts are active as long as the hardware line has the active level. This may require to mask the interrupt and unmask it after the associated handler has acknowledged the device, so the interrupt line is back to inactive.h]hLevel type interrupts are active as long as the hardware line has the active level. This may require to mask the interrupt and unmask it after the associated handler has acknowledged the device, so the interrupt line is back to inactive.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMnhjvubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9handle_fasteoi_irq (C function)c.handle_fasteoi_irqhNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(h/void handle_fasteoi_irq (struct irq_desc *desc)h]jI)}(h.void handle_fasteoi_irq(struct irq_desc *desc)h](jO)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMubja)}(h h]h }(hj*hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhj)hMubjr)}(hhandle_fasteoi_irqh]jx)}(hhandle_fasteoi_irqh]hhandle_fasteoi_irq}(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj8ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhj)hMubj)}(h(struct irq_desc *desc)h]j)}(hstruct irq_desc *desch](j)}(hjh]hstruct}(hjXhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjTubja)}(h h]h }(hjehhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjTubh)}(hhh]jx)}(hirq_desch]hirq_desc}(hjvhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjsubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjxmodnameN classnameNjj)}j]j)}jj>sbc.handle_fasteoi_irqasbuh1hhjTubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjTubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjTubjx)}(hdesch]hdesc}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjTubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjPubah}(h]h ]h"]h$]h&]hhuh1jhjhhhj)hMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhj)hMubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhj)hMhjhhubj5)}(hhh]jo)}(h'irq handler for transparent controllersh]h'irq handler for transparent controllers}(hj۳hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjسhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhj)hMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhj`hNhNubj\)}(hXN**Parameters** ``struct irq_desc *desc`` the interrupt description structure for this irq **Description** Only a single callback will be issued to the chip: an ->eoi() call when the interrupt has been serviced. This enables support for modern forms of interrupt handlers, which handle the flow details in hardware, transparently.h](jo)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjubj|)}(hhh]j)}(hK``struct irq_desc *desc`` the interrupt description structure for this irq h](j)}(h``struct irq_desc *desc``h]j)}(hjh]hstruct irq_desc *desc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjubj)}(hhh]jo)}(h0the interrupt description structure for this irqh]h0the interrupt description structure for this irq}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj1hMhj2ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj1hMhjubah}(h]h ]h"]h$]h&]uh1j{hjubjo)}(h**Description**h]jf)}(hjWh]h Description}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjUubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjubjo)}(hOnly a single callback will be issued to the chip: an ->eoi() call when the interrupt has been serviced. This enables support for modern forms of interrupt handlers, which handle the flow details in hardware, transparently.h]hOnly a single callback will be issued to the chip: an ->eoi() call when the interrupt has been serviced. This enables support for modern forms of interrupt handlers, which handle the flow details in hardware, transparently.}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9handle_fasteoi_nmi (C function)c.handle_fasteoi_nmihNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(h/void handle_fasteoi_nmi (struct irq_desc *desc)h]jI)}(h.void handle_fasteoi_nmi(struct irq_desc *desc)h](jO)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhMubjr)}(hhandle_fasteoi_nmih]jx)}(hhandle_fasteoi_nmih]hhandle_fasteoi_nmi}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhMubj)}(h(struct irq_desc *desc)h]j)}(hstruct irq_desc *desch](j)}(hjh]hstruct}(hjٴhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjմubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjմubh)}(hhh]jx)}(hirq_desch]hirq_desc}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.handle_fasteoi_nmiasbuh1hhjմubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjմubj)}(hjh]h*}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjմubjx)}(hdesch]hdesc}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjմubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjѴubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhMubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhMhjhhubj5)}(hhh]jo)}(h#irq handler for NMI interrupt linesh]h#irq handler for NMI interrupt lines}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjYhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjtjWjtjXjYjZuh1j=hhhj`hNhNubj\)}(hX**Parameters** ``struct irq_desc *desc`` the interrupt description structure for this irq A simple NMI-safe handler, considering the restrictions from request_nmi. Only a single callback will be issued to the chip: an ->eoi() call when the interrupt has been serviced. This enables support for modern forms of interrupt handlers, which handle the flow details in hardware, transparently.h](jo)}(h**Parameters**h]jf)}(hj~h]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehj|ubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjxubj|)}(hhh]j)}(hXv``struct irq_desc *desc`` the interrupt description structure for this irq A simple NMI-safe handler, considering the restrictions from request_nmi. Only a single callback will be issued to the chip: an ->eoi() call when the interrupt has been serviced. This enables support for modern forms of interrupt handlers, which handle the flow details in hardware, transparently.h](j)}(h``struct irq_desc *desc``h]j)}(hjh]hstruct irq_desc *desc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjubj)}(hhh](jo)}(h0the interrupt description structure for this irqh]h0the interrupt description structure for this irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjubjo)}(hIA simple NMI-safe handler, considering the restrictions from request_nmi.h]hIA simple NMI-safe handler, considering the restrictions from request_nmi.}(hjŵhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjubjo)}(hOnly a single callback will be issued to the chip: an ->eoi() call when the interrupt has been serviced. This enables support for modern forms of interrupt handlers, which handle the flow details in hardware, transparently.h]hOnly a single callback will be issued to the chip: an ->eoi() call when the interrupt has been serviced. This enables support for modern forms of interrupt handlers, which handle the flow details in hardware, transparently.}(hjԵhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1j{hjxubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9handle_edge_irq (C function)c.handle_edge_irqhNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(h,void handle_edge_irq (struct irq_desc *desc)h]jI)}(h+void handle_edge_irq(struct irq_desc *desc)h](jO)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMubja)}(h h]h }(hj$hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhj#hMubjr)}(hhandle_edge_irqh]jx)}(hhandle_edge_irqh]hhandle_edge_irq}(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj2ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhj#hMubj)}(h(struct irq_desc *desc)h]j)}(hstruct irq_desc *desch](j)}(hjh]hstruct}(hjRhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjNubja)}(h h]h }(hj_hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjNubh)}(hhh]jx)}(hirq_desch]hirq_desc}(hjphhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjmubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjrmodnameN classnameNjj)}j]j)}jj8sbc.handle_edge_irqasbuh1hhjNubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjNubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjNubjx)}(hdesch]hdesc}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjNubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjJubah}(h]h ]h"]h$]h&]hhuh1jhjhhhj#hMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj hhhj#hMubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhj#hMhj hhubj5)}(hhh]jo)}(hedge type IRQ handlerh]hedge type IRQ handler}(hjնhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjҶhhubah}(h]h ]h"]h$]h&]uh1j4hj hhhj#hMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhj`hNhNubj\)}(hX**Parameters** ``struct irq_desc *desc`` the interrupt description structure for this irq **Description** Interrupt occurs on the falling and/or rising edge of a hardware signal. The occurrence is latched into the irq controller hardware and must be acked in order to be reenabled. After the ack another interrupt can happen on the same source even before the first one is handled by the associated event handler. If this happens it might be necessary to disable (mask) the interrupt depending on the controller hardware. This requires to reenable the interrupt inside of the loop which handles the interrupts which have arrived while the handler was running. If all pending interrupts are handled, the loop is left.h](jo)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjubj|)}(hhh]j)}(hK``struct irq_desc *desc`` the interrupt description structure for this irq h](j)}(h``struct irq_desc *desc``h]j)}(hjh]hstruct irq_desc *desc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjubj)}(hhh]jo)}(h0the interrupt description structure for this irqh]h0the interrupt description structure for this irq}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj+hMhj,ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj+hMhj ubah}(h]h ]h"]h$]h&]uh1j{hjubjo)}(h**Description**h]jf)}(hjQh]h Description}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jehjOubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjubjo)}(hXbInterrupt occurs on the falling and/or rising edge of a hardware signal. The occurrence is latched into the irq controller hardware and must be acked in order to be reenabled. After the ack another interrupt can happen on the same source even before the first one is handled by the associated event handler. If this happens it might be necessary to disable (mask) the interrupt depending on the controller hardware. This requires to reenable the interrupt inside of the loop which handles the interrupts which have arrived while the handler was running. If all pending interrupts are handled, the loop is left.h]hXbInterrupt occurs on the falling and/or rising edge of a hardware signal. The occurrence is latched into the irq controller hardware and must be acked in order to be reenabled. After the ack another interrupt can happen on the same source even before the first one is handled by the associated event handler. If this happens it might be necessary to disable (mask) the interrupt depending on the controller hardware. This requires to reenable the interrupt inside of the loop which handles the interrupts which have arrived while the handler was running. If all pending interrupts are handled, the loop is left.}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9#handle_fasteoi_ack_irq (C function)c.handle_fasteoi_ack_irqhNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(h3void handle_fasteoi_ack_irq (struct irq_desc *desc)h]jI)}(h2void handle_fasteoi_ack_irq(struct irq_desc *desc)h](jO)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMDubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhMDubjr)}(hhandle_fasteoi_ack_irqh]jx)}(hhandle_fasteoi_ack_irqh]hhandle_fasteoi_ack_irq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhMDubj)}(h(struct irq_desc *desc)h]j)}(hstruct irq_desc *desch](j)}(hjh]hstruct}(hjӷhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjϷubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjϷubh)}(hhh]jx)}(hirq_desch]hirq_desc}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.handle_fasteoi_ack_irqasbuh1hhjϷubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjϷubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjϷubjx)}(hdesch]hdesc}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjϷubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj˷ubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMDubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhMDubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhMDhjhhubj5)}(hhh]jo)}(hAirq handler for edge hierarchy stacked on transparent controllersh]hAirq handler for edge hierarchy stacked on transparent controllers}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMDhjShhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhMDubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjnjWjnjXjYjZuh1j=hhhj`hNhNubj\)}(h**Parameters** ``struct irq_desc *desc`` the interrupt description structure for this irq **Description** Like handle_fasteoi_irq(), but for use with hierarchy where the irq_chip also needs to have its ->irq_ack() function called.h](jo)}(h**Parameters**h]jf)}(hjxh]h Parameters}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjvubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMHhjrubj|)}(hhh]j)}(hK``struct irq_desc *desc`` the interrupt description structure for this irq h](j)}(h``struct irq_desc *desc``h]j)}(hjh]hstruct irq_desc *desc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMGhjubj)}(hhh]jo)}(h0the interrupt description structure for this irqh]h0the interrupt description structure for this irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhMGhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMGhjubah}(h]h ]h"]h$]h&]uh1j{hjrubjo)}(h**Description**h]jf)}(hjҸh]h Description}(hjԸhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjиubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMIhjrubjo)}(h|Like handle_fasteoi_irq(), but for use with hierarchy where the irq_chip also needs to have its ->irq_ack() function called.h]h|Like handle_fasteoi_irq(), but for use with hierarchy where the irq_chip also needs to have its ->irq_ack() function called.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMIhjrubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9$handle_fasteoi_mask_irq (C function)c.handle_fasteoi_mask_irqhNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(h4void handle_fasteoi_mask_irq (struct irq_desc *desc)h]jI)}(h3void handle_fasteoi_mask_irq(struct irq_desc *desc)h](jO)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMjubja)}(h h]h }(hj&hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhj%hMjubjr)}(hhandle_fasteoi_mask_irqh]jx)}(hhandle_fasteoi_mask_irqh]hhandle_fasteoi_mask_irq}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj4ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhj%hMjubj)}(h(struct irq_desc *desc)h]j)}(hstruct irq_desc *desch](j)}(hjh]hstruct}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPubja)}(h h]h }(hjahhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjPubh)}(hhh]jx)}(hirq_desch]hirq_desc}(hjrhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjoubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjtmodnameN classnameNjj)}j]j)}jj:sbc.handle_fasteoi_mask_irqasbuh1hhjPubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjPubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPubjx)}(hdesch]hdesc}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjPubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjLubah}(h]h ]h"]h$]h&]hhuh1jhjhhhj%hMjubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhj%hMjubah}(h]j ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhj%hMjhj hhubj5)}(hhh]jo)}(hBirq handler for level hierarchy stacked on transparent controllersh]hBirq handler for level hierarchy stacked on transparent controllers}(hj׹hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMjhjԹhhubah}(h]h ]h"]h$]h&]uh1j4hj hhhj%hMjubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhj`hNhNubj\)}(h**Parameters** ``struct irq_desc *desc`` the interrupt description structure for this irq **Description** Like handle_fasteoi_irq(), but for use with hierarchy where the irq_chip also needs to have its ->irq_mask_ack() function called.h](jo)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMnhjubj|)}(hhh]j)}(hK``struct irq_desc *desc`` the interrupt description structure for this irq h](j)}(h``struct irq_desc *desc``h]j)}(hjh]hstruct irq_desc *desc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMmhjubj)}(hhh]jo)}(h0the interrupt description structure for this irqh]h0the interrupt description structure for this irq}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj-hMmhj.ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj-hMmhjubah}(h]h ]h"]h$]h&]uh1j{hjubjo)}(h**Description**h]jf)}(hjSh]h Description}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjQubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMohjubjo)}(hLike handle_fasteoi_irq(), but for use with hierarchy where the irq_chip also needs to have its ->irq_mask_ack() function called.h]hLike handle_fasteoi_irq(), but for use with hierarchy where the irq_chip also needs to have its ->irq_mask_ack() function called.}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMohjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9&irq_chip_set_parent_state (C function)c.irq_chip_set_parent_statehNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(h]int irq_chip_set_parent_state (struct irq_data *data, enum irqchip_irq_state which, bool val)h]jI)}(h\int irq_chip_set_parent_state(struct irq_data *data, enum irqchip_irq_state which, bool val)h](jO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhMubjr)}(hirq_chip_set_parent_stateh]jx)}(hirq_chip_set_parent_stateh]hirq_chip_set_parent_state}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhMubj)}(h?(struct irq_data *data, enum irqchip_irq_state which, bool val)h](j)}(hstruct irq_data *datah](j)}(hjh]hstruct}(hjպhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjѺubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjѺubh)}(hhh]jx)}(hirq_datah]hirq_data}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.irq_chip_set_parent_stateasbuh1hhjѺubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjѺubj)}(hjh]h*}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjѺubjx)}(hdatah]hdata}(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjѺubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjͺubj)}(henum irqchip_irq_state whichh](j)}(hj%h]henum}(hjGhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjCubja)}(h h]h }(hjThhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjCubh)}(hhh]jx)}(hirqchip_irq_stateh]hirqchip_irq_state}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjbubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjgmodnameN classnameNjj)}j]jc.irq_chip_set_parent_stateasbuh1hhjCubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjCubjx)}(hwhichh]hwhich}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjCubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjͺubj)}(hbool valh](jO)}(hj`h]hbool}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hvalh]hval}(hjŻhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjͺubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhMubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhMhjhhubj5)}(hhh]jo)}(h$set the state of a parent interrupt.h]h$set the state of a parent interrupt.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhj`hNhNubj\)}(hX)**Parameters** ``struct irq_data *data`` Pointer to interrupt specific data ``enum irqchip_irq_state which`` State to be restored (one of IRQCHIP_STATE_*) ``bool val`` Value corresponding to **which** **Description** Conditional success, if the underlying irqchip does not implement it.h](jo)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhj ubj|)}(hhh](j)}(h=``struct irq_data *data`` Pointer to interrupt specific data h](j)}(h``struct irq_data *data``h]j)}(hj0h]hstruct irq_data *data}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhj*ubj)}(hhh]jo)}(h"Pointer to interrupt specific datah]h"Pointer to interrupt specific data}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjEhMhjFubah}(h]h ]h"]h$]h&]uh1jhj*ubeh}(h]h ]h"]h$]h&]uh1jhjEhMhj'ubj)}(hO``enum irqchip_irq_state which`` State to be restored (one of IRQCHIP_STATE_*) h](j)}(h ``enum irqchip_irq_state which``h]j)}(hjih]henum irqchip_irq_state which}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjcubj)}(hhh]jo)}(h-State to be restored (one of IRQCHIP_STATE_*)h]h-State to be restored (one of IRQCHIP_STATE_*)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj~hMhjubah}(h]h ]h"]h$]h&]uh1jhjcubeh}(h]h ]h"]h$]h&]uh1jhj~hMhj'ubj)}(h.``bool val`` Value corresponding to **which** h](j)}(h ``bool val``h]j)}(hjh]hbool val}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjubj)}(hhh]jo)}(h Value corresponding to **which**h](hValue corresponding to }(hjhhhNhNubjf)}(h **which**h]hwhich}(hjühhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubeh}(h]h ]h"]h$]h&]uh1jnhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj'ubeh}(h]h ]h"]h$]h&]uh1j{hj ubjo)}(h**Description**h]jf)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhj ubjo)}(hEConditional success, if the underlying irqchip does not implement it.h]hEConditional success, if the underlying irqchip does not implement it.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9&irq_chip_get_parent_state (C function)c.irq_chip_get_parent_statehNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(h`int irq_chip_get_parent_state (struct irq_data *data, enum irqchip_irq_state which, bool *state)h]jI)}(h_int irq_chip_get_parent_state(struct irq_data *data, enum irqchip_irq_state which, bool *state)h](jO)}(hinth]hint}(hj0hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj,hhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMubja)}(h h]h }(hj?hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj,hhhj>hMubjr)}(hirq_chip_get_parent_stateh]jx)}(hirq_chip_get_parent_stateh]hirq_chip_get_parent_state}(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjMubah}(h]h ](jjeh"]h$]h&]hhuh1jqhj,hhhj>hMubj)}(hB(struct irq_data *data, enum irqchip_irq_state which, bool *state)h](j)}(hstruct irq_data *datah](j)}(hjh]hstruct}(hjmhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjiubja)}(h h]h }(hjzhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjiubh)}(hhh]jx)}(hirq_datah]hirq_data}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjmodnameN classnameNjj)}j]j)}jjSsbc.irq_chip_get_parent_stateasbuh1hhjiubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjiubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjiubjx)}(hdatah]hdata}(hjƽhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjiubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjeubj)}(henum irqchip_irq_state whichh](j)}(hj%h]henum}(hj߽hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj۽ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj۽ubh)}(hhh]jx)}(hirqchip_irq_stateh]hirqchip_irq_state}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjmodnameN classnameNjj)}j]jc.irq_chip_get_parent_stateasbuh1hhj۽ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj۽ubjx)}(hwhichh]hwhich}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj۽ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjeubj)}(h bool *stateh](jO)}(hj`h]hbool}(hjBhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj>ubja)}(h h]h }(hjOhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj>ubj)}(hjh]h*}(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>ubjx)}(hstateh]hstate}(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj>ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjeubeh}(h]h ]h"]h$]h&]hhuh1jhj,hhhj>hMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj(hhhj>hMubah}(h]j#ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhj>hMhj%hhubj5)}(hhh]jo)}(h$get the state of a parent interrupt.h]h$get the state of a parent interrupt.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjhhubah}(h]h ]h"]h$]h&]uh1j4hj%hhhj>hMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhj`hNhNubj\)}(hXD**Parameters** ``struct irq_data *data`` Pointer to interrupt specific data ``enum irqchip_irq_state which`` one of IRQCHIP_STATE_* the caller wants to know ``bool *state`` a pointer to a boolean where the state is to be stored **Description** Conditional success, if the underlying irqchip does not implement it.h](jo)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjubj|)}(hhh](j)}(h=``struct irq_data *data`` Pointer to interrupt specific data h](j)}(h``struct irq_data *data``h]j)}(hjվh]hstruct irq_data *data}(hj׾hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjӾubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjϾubj)}(hhh]jo)}(h"Pointer to interrupt specific datah]h"Pointer to interrupt specific data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjϾubeh}(h]h ]h"]h$]h&]uh1jhjhMhj̾ubj)}(hQ``enum irqchip_irq_state which`` one of IRQCHIP_STATE_* the caller wants to know h](j)}(h ``enum irqchip_irq_state which``h]j)}(hjh]henum irqchip_irq_state which}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjubj)}(hhh]jo)}(h/one of IRQCHIP_STATE_* the caller wants to knowh]h/one of IRQCHIP_STATE_* the caller wants to know}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj#hMhj$ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj#hMhj̾ubj)}(hG``bool *state`` a pointer to a boolean where the state is to be stored h](j)}(h``bool *state``h]j)}(hjGh]h bool *state}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjAubj)}(hhh]jo)}(h6a pointer to a boolean where the state is to be storedh]h6a pointer to a boolean where the state is to be stored}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj\hMhj]ubah}(h]h ]h"]h$]h&]uh1jhjAubeh}(h]h ]h"]h$]h&]uh1jhj\hMhj̾ubeh}(h]h ]h"]h$]h&]uh1j{hjubjo)}(h**Description**h]jf)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjubjo)}(hEConditional success, if the underlying irqchip does not implement it.h]hEConditional success, if the underlying irqchip does not implement it.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9#irq_chip_enable_parent (C function)c.irq_chip_enable_parenthNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(h3void irq_chip_enable_parent (struct irq_data *data)h]jI)}(h2void irq_chip_enable_parent(struct irq_data *data)h](jO)}(hvoidh]hvoid}(hjǿhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjÿhhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMubja)}(h h]h }(hjֿhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjÿhhhjտhMubjr)}(hirq_chip_enable_parenth]jx)}(hirq_chip_enable_parenth]hirq_chip_enable_parent}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjÿhhhjտhMubj)}(h(struct irq_data *data)h]j)}(hstruct irq_data *datah](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubh)}(hhh]jx)}(hirq_datah]hirq_data}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetj$modnameN classnameNjj)}j]j)}jjsbc.irq_chip_enable_parentasbuh1hhjubja)}(h h]h }(hjBhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hdatah]hdata}(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjÿhhhjտhMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjտhMubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjտhMhjhhubj5)}(hhh]jo)}(h8Enable the parent interrupt (defaults to unmask if NULL)h]h8Enable the parent interrupt (defaults to unmask if NULL)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjտhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhj`hNhNubj\)}(hN**Parameters** ``struct irq_data *data`` Pointer to interrupt specific datah](jo)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjubj|)}(hhh]j)}(h<``struct irq_data *data`` Pointer to interrupt specific datah](j)}(h``struct irq_data *data``h]j)}(hjh]hstruct irq_data *data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjubj)}(hhh]jo)}(h"Pointer to interrupt specific datah]h"Pointer to interrupt specific data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1j{hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9$irq_chip_disable_parent (C function)c.irq_chip_disable_parenthNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(h4void irq_chip_disable_parent (struct irq_data *data)h]jI)}(h3void irq_chip_disable_parent(struct irq_data *data)h](jO)}(hvoidh]hvoid}(hj"hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMubja)}(h h]h }(hj1hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhj0hMubjr)}(hirq_chip_disable_parenth]jx)}(hirq_chip_disable_parenth]hirq_chip_disable_parent}(hjChhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj?ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhj0hMubj)}(h(struct irq_data *data)h]j)}(hstruct irq_data *datah](j)}(hjh]hstruct}(hj_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[ubja)}(h h]h }(hjlhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj[ubh)}(hhh]jx)}(hirq_datah]hirq_data}(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjzubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjmodnameN classnameNjj)}j]j)}jjEsbc.irq_chip_disable_parentasbuh1hhj[ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj[ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[ubjx)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj[ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjWubah}(h]h ]h"]h$]h&]hhuh1jhjhhhj0hMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhj0hMubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhj0hMhjhhubj5)}(hhh]jo)}(h7Disable the parent interrupt (defaults to mask if NULL)h]h7Disable the parent interrupt (defaults to mask if NULL)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhj0hMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhj`hNhNubj\)}(hN**Parameters** ``struct irq_data *data`` Pointer to interrupt specific datah](jo)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjubj|)}(hhh]j)}(h<``struct irq_data *data`` Pointer to interrupt specific datah](j)}(h``struct irq_data *data``h]j)}(hj#h]hstruct irq_data *data}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjubj)}(hhh]jo)}(h"Pointer to interrupt specific datah]h"Pointer to interrupt specific data}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhj9ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj8hMhjubah}(h]h ]h"]h$]h&]uh1j{hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9 irq_chip_ack_parent (C function)c.irq_chip_ack_parenthNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(h0void irq_chip_ack_parent (struct irq_data *data)h]jI)}(h/void irq_chip_ack_parent(struct irq_data *data)h](jO)}(hvoidh]hvoid}(hj}hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjyhhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjyhhhjhMubjr)}(hirq_chip_ack_parenth]jx)}(hirq_chip_ack_parenth]hirq_chip_ack_parent}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjyhhhjhMubj)}(h(struct irq_data *data)h]j)}(hstruct irq_data *datah](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubh)}(hhh]jx)}(hirq_datah]hirq_data}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.irq_chip_ack_parentasbuh1hhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjyhhhjhMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjuhhhjhMubah}(h]jpah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhMhjrhhubj5)}(hhh]jo)}(h Acknowledge the parent interrupth]h Acknowledge the parent interrupt}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhj:hhubah}(h]h ]h"]h$]h&]uh1j4hjrhhhjhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjUjWjUjXjYjZuh1j=hhhj`hNhNubj\)}(hN**Parameters** ``struct irq_data *data`` Pointer to interrupt specific datah](jo)}(h**Parameters**h]jf)}(hj_h]h Parameters}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jehj]ubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjYubj|)}(hhh]j)}(h<``struct irq_data *data`` Pointer to interrupt specific datah](j)}(h``struct irq_data *data``h]j)}(hj~h]hstruct irq_data *data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjxubj)}(hhh]jo)}(h"Pointer to interrupt specific datah]h"Pointer to interrupt specific data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjubah}(h]h ]h"]h$]h&]uh1jhjxubeh}(h]h ]h"]h$]h&]uh1jhjhMhjuubah}(h]h ]h"]h$]h&]uh1j{hjYubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9!irq_chip_mask_parent (C function)c.irq_chip_mask_parenthNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(h1void irq_chip_mask_parent (struct irq_data *data)h]jI)}(h0void irq_chip_mask_parent(struct irq_data *data)h](jO)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhMubjr)}(hirq_chip_mask_parenth]jx)}(hirq_chip_mask_parenth]hirq_chip_mask_parent}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhMubj)}(h(struct irq_data *data)h]j)}(hstruct irq_data *datah](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubja)}(h h]h }(hj"hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubh)}(hhh]jx)}(hirq_datah]hirq_data}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj0ubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetj5modnameN classnameNjj)}j]j)}jjsbc.irq_chip_mask_parentasbuh1hhjubja)}(h h]h }(hjShhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hjahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hdatah]hdata}(hjnhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhMubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhMhjhhubj5)}(hhh]jo)}(hMask the parent interrupth]hMask the parent interrupt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhj`hNhNubj\)}(hN**Parameters** ``struct irq_data *data`` Pointer to interrupt specific datah](jo)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjubj|)}(hhh]j)}(h<``struct irq_data *data`` Pointer to interrupt specific datah](j)}(h``struct irq_data *data``h]j)}(hjh]hstruct irq_data *data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjubj)}(hhh]jo)}(h"Pointer to interrupt specific datah]h"Pointer to interrupt specific data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1j{hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9%irq_chip_mask_ack_parent (C function)c.irq_chip_mask_ack_parenthNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(h5void irq_chip_mask_ack_parent (struct irq_data *data)h]jI)}(h4void irq_chip_mask_ack_parent(struct irq_data *data)h](jO)}(hvoidh]hvoid}(hj3hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj/hhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMubja)}(h h]h }(hjBhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj/hhhjAhMubjr)}(hirq_chip_mask_ack_parenth]jx)}(hirq_chip_mask_ack_parenth]hirq_chip_mask_ack_parent}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjPubah}(h]h ](jjeh"]h$]h&]hhuh1jqhj/hhhjAhMubj)}(h(struct irq_data *data)h]j)}(hstruct irq_data *datah](j)}(hjh]hstruct}(hjphhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjlubja)}(h h]h }(hj}hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjlubh)}(hhh]jx)}(hirq_datah]hirq_data}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjmodnameN classnameNjj)}j]j)}jjVsbc.irq_chip_mask_ack_parentasbuh1hhjlubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjlubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjlubjx)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjlubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjhubah}(h]h ]h"]h$]h&]hhuh1jhj/hhhjAhMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj+hhhjAhMubah}(h]j&ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjAhMhj(hhubj5)}(hhh]jo)}(h)Mask and acknowledge the parent interrupth]h)Mask and acknowledge the parent interrupt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjhhubah}(h]h ]h"]h$]h&]uh1j4hj(hhhjAhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj jWj jXjYjZuh1j=hhhj`hNhNubj\)}(hN**Parameters** ``struct irq_data *data`` Pointer to interrupt specific datah](jo)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjubj|)}(hhh]j)}(h<``struct irq_data *data`` Pointer to interrupt specific datah](j)}(h``struct irq_data *data``h]j)}(hj4h]hstruct irq_data *data}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhj.ubj)}(hhh]jo)}(h"Pointer to interrupt specific datah]h"Pointer to interrupt specific data}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjJubah}(h]h ]h"]h$]h&]uh1jhj.ubeh}(h]h ]h"]h$]h&]uh1jhjIhMhj+ubah}(h]h ]h"]h$]h&]uh1j{hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9#irq_chip_unmask_parent (C function)c.irq_chip_unmask_parenthNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(h3void irq_chip_unmask_parent (struct irq_data *data)h]jI)}(h2void irq_chip_unmask_parent(struct irq_data *data)h](jO)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhMubjr)}(hirq_chip_unmask_parenth]jx)}(hirq_chip_unmask_parenth]hirq_chip_unmask_parent}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhMubj)}(h(struct irq_data *data)h]j)}(hstruct irq_data *datah](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubh)}(hhh]jx)}(hirq_datah]hirq_data}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.irq_chip_unmask_parentasbuh1hhjubja)}(h h]h }(hj hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hdatah]hdata}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhMubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhMhjhhubj5)}(hhh]jo)}(hUnmask the parent interrupth]hUnmask the parent interrupt}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjKhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjfjWjfjXjYjZuh1j=hhhj`hNhNubj\)}(hN**Parameters** ``struct irq_data *data`` Pointer to interrupt specific datah](jo)}(h**Parameters**h]jf)}(hjph]h Parameters}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjnubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjjubj|)}(hhh]j)}(h<``struct irq_data *data`` Pointer to interrupt specific datah](j)}(h``struct irq_data *data``h]j)}(hjh]hstruct irq_data *data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.c9hMhjubj)}(hhh]jo)}(h"Pointer to interrupt specific datah]h"Pointer to interrupt specific data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1j{hjjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9 irq_chip_eoi_parent (C function)c.irq_chip_eoi_parenthNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(h0void irq_chip_eoi_parent (struct irq_data *data)h]jI)}(h/void irq_chip_eoi_parent(struct irq_data *data)h](jO)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhMubjr)}(hirq_chip_eoi_parenth]jx)}(hirq_chip_eoi_parenth]hirq_chip_eoi_parent}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhMubj)}(h(struct irq_data *data)h]j)}(hstruct irq_data *datah](j)}(hjh]hstruct}(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubja)}(h h]h }(hj3hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj"ubh)}(hhh]jx)}(hirq_datah]hirq_data}(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjAubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjFmodnameN classnameNjj)}j]j)}jj sbc.irq_chip_eoi_parentasbuh1hhj"ubja)}(h h]h }(hjdhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj"ubj)}(hjh]h*}(hjrhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubjx)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj"ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhMubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhMhjhhubj5)}(hhh]jo)}(h"Invoke EOI on the parent interrupth]h"Invoke EOI on the parent interrupt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhj`hNhNubj\)}(hN**Parameters** ``struct irq_data *data`` Pointer to interrupt specific datah](jo)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjubj|)}(hhh]j)}(h<``struct irq_data *data`` Pointer to interrupt specific datah](j)}(h``struct irq_data *data``h]j)}(hjh]hstruct irq_data *data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjubj)}(hhh]jo)}(h"Pointer to interrupt specific datah]h"Pointer to interrupt specific data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1j{hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9)irq_chip_set_affinity_parent (C function)c.irq_chip_set_affinity_parenthNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(h`int irq_chip_set_affinity_parent (struct irq_data *data, const struct cpumask *dest, bool force)h]jI)}(h_int irq_chip_set_affinity_parent(struct irq_data *data, const struct cpumask *dest, bool force)h](jO)}(hinth]hint}(hjDhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj@hhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chM ubja)}(h h]h }(hjShhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj@hhhjRhM ubjr)}(hirq_chip_set_affinity_parenth]jx)}(hirq_chip_set_affinity_parenth]hirq_chip_set_affinity_parent}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjaubah}(h]h ](jjeh"]h$]h&]hhuh1jqhj@hhhjRhM ubj)}(h?(struct irq_data *data, const struct cpumask *dest, bool force)h](j)}(hstruct irq_data *datah](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj}ubh)}(hhh]jx)}(hirq_datah]hirq_data}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjmodnameN classnameNjj)}j]j)}jjgsbc.irq_chip_set_affinity_parentasbuh1hhj}ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj}ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubjx)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj}ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjyubj)}(hconst struct cpumask *desth](j)}(hjmh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubh)}(hhh]jx)}(hcpumaskh]hcpumask}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj)ubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetj.modnameN classnameNjj)}j]jc.irq_chip_set_affinity_parentasbuh1hhjubja)}(h h]h }(hjJhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hjXhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hdesth]hdest}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjyubj)}(h bool forceh](jO)}(hj`h]hbool}(hj~hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjzubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjzubjx)}(hforceh]hforce}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjzubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjyubeh}(h]h ]h"]h$]h&]hhuh1jhj@hhhjRhM ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj<hhhjRhM ubah}(h]j7ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjRhM hj9hhubj5)}(hhh]jo)}(h$Set affinity on the parent interrupth]h$Set affinity on the parent interrupt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chM hjhhubah}(h]h ]h"]h$]h&]uh1j4hj9hhhjRhM ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhj`hNhNubj\)}(hX **Parameters** ``struct irq_data *data`` Pointer to interrupt specific data ``const struct cpumask *dest`` The affinity mask to set ``bool force`` Flag to enforce setting (disable online checks) **Description** Conditional, as the underlying parent chip might not implement it.h](jo)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjubj|)}(hhh](j)}(h=``struct irq_data *data`` Pointer to interrupt specific data h](j)}(h``struct irq_data *data``h]j)}(hjh]hstruct irq_data *data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chM hjubj)}(hhh]jo)}(h"Pointer to interrupt specific datah]h"Pointer to interrupt specific data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhM hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM hjubj)}(h8``const struct cpumask *dest`` The affinity mask to set h](j)}(h``const struct cpumask *dest``h]j)}(hj=h]hconst struct cpumask *dest}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chM hj7ubj)}(hhh]jo)}(hThe affinity mask to seth]hThe affinity mask to set}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjRhM hjSubah}(h]h ]h"]h$]h&]uh1jhj7ubeh}(h]h ]h"]h$]h&]uh1jhjRhM hjubj)}(h?``bool force`` Flag to enforce setting (disable online checks) h](j)}(h``bool force``h]j)}(hjvh]h bool force}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chM hjpubj)}(hhh]jo)}(h/Flag to enforce setting (disable online checks)h]h/Flag to enforce setting (disable online checks)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhM hjubah}(h]h ]h"]h$]h&]uh1jhjpubeh}(h]h ]h"]h$]h&]uh1jhjhM hjubeh}(h]h ]h"]h$]h&]uh1j{hjubjo)}(h**Description**h]jf)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjubjo)}(hBConditional, as the underlying parent chip might not implement it.h]hBConditional, as the underlying parent chip might not implement it.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9%irq_chip_set_type_parent (C function)c.irq_chip_set_type_parenthNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(hGint irq_chip_set_type_parent (struct irq_data *data, unsigned int type)h]jI)}(hFint irq_chip_set_type_parent(struct irq_data *data, unsigned int type)h](jO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhMubjr)}(hirq_chip_set_type_parenth]jx)}(hirq_chip_set_type_parenth]hirq_chip_set_type_parent}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhMubj)}(h*(struct irq_data *data, unsigned int type)h](j)}(hstruct irq_data *datah](j)}(hjh]hstruct}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj/ubja)}(h h]h }(hj@hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj/ubh)}(hhh]jx)}(hirq_datah]hirq_data}(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjNubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjSmodnameN classnameNjj)}j]j)}jjsbc.irq_chip_set_type_parentasbuh1hhj/ubja)}(h h]h }(hjqhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj/ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj/ubjx)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj/ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj+ubj)}(hunsigned int typeh](jO)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(htypeh]htype}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj+ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhMubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhMhjhhubj5)}(hhh]jo)}(h$Set IRQ type on the parent interrupth]h$Set IRQ type on the parent interrupt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhj`hNhNubj\)}(h**Parameters** ``struct irq_data *data`` Pointer to interrupt specific data ``unsigned int type`` IRQ_TYPE_{LEVEL,EDGE}_* value - see include/linux/irq.h **Description** Conditional, as the underlying parent chip might not implement it.h](jo)}(h**Parameters**h]jf)}(hj)h]h Parameters}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj'ubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chM!hj#ubj|)}(hhh](j)}(h=``struct irq_data *data`` Pointer to interrupt specific data h](j)}(h``struct irq_data *data``h]j)}(hjHh]hstruct irq_data *data}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhjBubj)}(hhh]jo)}(h"Pointer to interrupt specific datah]h"Pointer to interrupt specific data}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj]hMhj^ubah}(h]h ]h"]h$]h&]uh1jhjBubeh}(h]h ]h"]h$]h&]uh1jhj]hMhj?ubj)}(hN``unsigned int type`` IRQ_TYPE_{LEVEL,EDGE}_* value - see include/linux/irq.h h](j)}(h``unsigned int type``h]j)}(hjh]hunsigned int type}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMhj{ubj)}(hhh]jo)}(h7IRQ_TYPE_{LEVEL,EDGE}_* value - see include/linux/irq.hh]h7IRQ_TYPE_{LEVEL,EDGE}_* value - see include/linux/irq.h}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhMhjubah}(h]h ]h"]h$]h&]uh1jhj{ubeh}(h]h ]h"]h$]h&]uh1jhjhMhj?ubeh}(h]h ]h"]h$]h&]uh1j{hj#ubjo)}(h**Description**h]jf)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chM!hj#ubjo)}(hBConditional, as the underlying parent chip might not implement it.h]hBConditional, as the underlying parent chip might not implement it.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chM!hj#ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9)irq_chip_retrigger_hierarchy (C function)c.irq_chip_retrigger_hierarchyhNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(h8int irq_chip_retrigger_hierarchy (struct irq_data *data)h]jI)}(h7int irq_chip_retrigger_hierarchy(struct irq_data *data)h](jO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chM/ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhM/ubjr)}(hirq_chip_retrigger_hierarchyh]jx)}(hirq_chip_retrigger_hierarchyh]hirq_chip_retrigger_hierarchy}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhM/ubj)}(h(struct irq_data *data)h]j)}(hstruct irq_data *datah](j)}(hjh]hstruct}(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubja)}(h h]h }(hjKhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj:ubh)}(hhh]jx)}(hirq_datah]hirq_data}(hj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjYubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetj^modnameN classnameNjj)}j]j)}jj$sbc.irq_chip_retrigger_hierarchyasbuh1hhj:ubja)}(h h]h }(hj|hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj:ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubjx)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj:ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj6ubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhM/ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhM/ubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhM/hjhhubj5)}(hhh]jo)}(h"Retrigger an interrupt in hardwareh]h"Retrigger an interrupt in hardware}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chM/hjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhM/ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhj`hNhNubj\)}(h**Parameters** ``struct irq_data *data`` Pointer to interrupt specific data **Description** Iterate through the domain hierarchy of the interrupt and check whether a hw retrigger function exists. If yes, invoke it.h](jo)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chM3hjubj|)}(hhh]j)}(h=``struct irq_data *data`` Pointer to interrupt specific data h](j)}(h``struct irq_data *data``h]j)}(hjh]hstruct irq_data *data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chM0hjubj)}(hhh]jo)}(h"Pointer to interrupt specific datah]h"Pointer to interrupt specific data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhM0hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM0hjubah}(h]h ]h"]h$]h&]uh1j{hjubjo)}(h**Description**h]jf)}(hj=h]h Description}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj;ubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chM2hjubjo)}(hzIterate through the domain hierarchy of the interrupt and check whether a hw retrigger function exists. If yes, invoke it.h]hzIterate through the domain hierarchy of the interrupt and check whether a hw retrigger function exists. If yes, invoke it.}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chM2hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9.irq_chip_set_vcpu_affinity_parent (C function)#c.irq_chip_set_vcpu_affinity_parenthNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(hNint irq_chip_set_vcpu_affinity_parent (struct irq_data *data, void *vcpu_info)h]jI)}(hMint irq_chip_set_vcpu_affinity_parent(struct irq_data *data, void *vcpu_info)h](jO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj~hhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chM@ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj~hhhjhM@ubjr)}(h!irq_chip_set_vcpu_affinity_parenth]jx)}(h!irq_chip_set_vcpu_affinity_parenth]h!irq_chip_set_vcpu_affinity_parent}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhj~hhhjhM@ubj)}(h((struct irq_data *data, void *vcpu_info)h](j)}(hstruct irq_data *datah](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubh)}(hhh]jx)}(hirq_datah]hirq_data}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjmodnameN classnameNjj)}j]j)}jjsb#c.irq_chip_set_vcpu_affinity_parentasbuh1hhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hvoid *vcpu_infoh](jO)}(hvoidh]hvoid}(hj1hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj-ubja)}(h h]h }(hj?hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj-ubj)}(hjh]h*}(hjMhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-ubjx)}(h vcpu_infoh]h vcpu_info}(hjZhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj-ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhj~hhhjhM@ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjzhhhjhM@ubah}(h]juah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhM@hjwhhubj5)}(hhh]jo)}(h)Set vcpu affinity on the parent interrupth]h)Set vcpu affinity on the parent interrupt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chM@hjhhubah}(h]h ]h"]h$]h&]uh1j4hjwhhhjhM@ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhj`hNhNubj\)}(h**Parameters** ``struct irq_data *data`` Pointer to interrupt specific data ``void *vcpu_info`` The vcpu affinity informationh](jo)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMDhjubj|)}(hhh](j)}(h=``struct irq_data *data`` Pointer to interrupt specific data h](j)}(h``struct irq_data *data``h]j)}(hjh]hstruct irq_data *data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMAhjubj)}(hhh]jo)}(h"Pointer to interrupt specific datah]h"Pointer to interrupt specific data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhMAhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMAhjubj)}(h1``void *vcpu_info`` The vcpu affinity informationh](j)}(h``void *vcpu_info``h]j)}(hjh]hvoid *vcpu_info}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMChjubj)}(hhh]jo)}(hThe vcpu affinity informationh]hThe vcpu affinity information}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMBhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMChjubeh}(h]h ]h"]h$]h&]uh1j{hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9%irq_chip_set_wake_parent (C function)c.irq_chip_set_wake_parenthNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(hEint irq_chip_set_wake_parent (struct irq_data *data, unsigned int on)h]jI)}(hDint irq_chip_set_wake_parent(struct irq_data *data, unsigned int on)h](jO)}(hinth]hint}(hjXhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjThhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMNubja)}(h h]h }(hjghhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjThhhjfhMNubjr)}(hirq_chip_set_wake_parenth]jx)}(hirq_chip_set_wake_parenth]hirq_chip_set_wake_parent}(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjuubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjThhhjfhMNubj)}(h((struct irq_data *data, unsigned int on)h](j)}(hstruct irq_data *datah](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubh)}(hhh]jx)}(hirq_datah]hirq_data}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjmodnameN classnameNjj)}j]j)}jj{sbc.irq_chip_set_wake_parentasbuh1hhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hunsigned int onh](jO)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjO)}(hinth]hint}(hj#hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hj1hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(honh]hon}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjThhhjfhMNubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjPhhhjfhMNubah}(h]jKah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjfhMNhjMhhubj5)}(hhh]jo)}(h)Set/reset wake-up on the parent interrupth]h)Set/reset wake-up on the parent interrupt}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMNhjfhhubah}(h]h ]h"]h$]h&]uh1j4hjMhhhjfhMNubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhj`hNhNubj\)}(h**Parameters** ``struct irq_data *data`` Pointer to interrupt specific data ``unsigned int on`` Whether to set or reset the wake-up capability of this irq **Description** Conditional, as the underlying parent chip might not implement it.h](jo)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMRhjubj|)}(hhh](j)}(h=``struct irq_data *data`` Pointer to interrupt specific data h](j)}(h``struct irq_data *data``h]j)}(hjh]hstruct irq_data *data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMOhjubj)}(hhh]jo)}(h"Pointer to interrupt specific datah]h"Pointer to interrupt specific data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhMOhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMOhjubj)}(hO``unsigned int on`` Whether to set or reset the wake-up capability of this irq h](j)}(h``unsigned int on``h]j)}(hjh]hunsigned int on}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMPhjubj)}(hhh]jo)}(h:Whether to set or reset the wake-up capability of this irqh]h:Whether to set or reset the wake-up capability of this irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhMPhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMPhjubeh}(h]h ]h"]h$]h&]uh1j{hjubjo)}(h**Description**h]jf)}(hjh]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMRhjubjo)}(hBConditional, as the underlying parent chip might not implement it.h]hBConditional, as the underlying parent chip might not implement it.}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMRhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9.irq_chip_request_resources_parent (C function)#c.irq_chip_request_resources_parenthNtauh1j,hj`hhhNhNubj>)}(hhh](jC)}(h=int irq_chip_request_resources_parent (struct irq_data *data)h]jI)}(h)}(hhh](jC)}(h>void irq_chip_release_resources_parent (struct irq_data *data)h]jI)}(h=void irq_chip_release_resources_parent(struct irq_data *data)h](jO)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMsubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhMsubjr)}(h!irq_chip_release_resources_parenth]jx)}(h!irq_chip_release_resources_parenth]h!irq_chip_release_resources_parent}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhMsubj)}(h(struct irq_data *data)h]j)}(hstruct irq_data *datah](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubh)}(hhh]jx)}(hirq_datah]hirq_data}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjmodnameN classnameNjj)}j]j)}jjsb#c.irq_chip_release_resources_parentasbuh1hhjubja)}(h h]h }(hj9hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hjGhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hdatah]hdata}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMsubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhMsubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhMshjhhubj5)}(hhh]jo)}(h)Release resources on the parent interrupth]h)Release resources on the parent interrupt}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMshj{hhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhMsubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhj`hNhNubj\)}(hN**Parameters** ``struct irq_data *data`` Pointer to interrupt specific datah](jo)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMwhjubj|)}(hhh]j)}(h<``struct irq_data *data`` Pointer to interrupt specific datah](j)}(h``struct irq_data *data``h]j)}(hjh]hstruct irq_data *data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMyhjubj)}(hhh]jo)}(h"Pointer to interrupt specific datah]h"Pointer to interrupt specific data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/chip.chMthjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMyhjubah}(h]h ]h"]h$]h&]uh1j{hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj`hhhNhNubeh}(h]public-functions-providedah ]h"]public functions providedah$]h&]uh1j8hj:hhhjMhMubj9)}(hhh](j>)}(hInternal Functions Providedh]hInternal Functions Provided}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j=hjhhhjMhMubjo)}(hPThis chapter contains the autogenerated documentation of the internal functions.h]hPThis chapter contains the autogenerated documentation of the internal functions.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhMhjhhubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_get_nr_irqs (C function)c.irq_get_nr_irqshNtauh1j,hjhhhNhNubj>)}(hhh](jC)}(h#unsigned int irq_get_nr_irqs (void)h]jI)}(h"unsigned int irq_get_nr_irqs(void)h](jO)}(hunsignedh]hunsigned}(hj@hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj<hhhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chKubja)}(h h]h }(hjOhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj<hhhjNhKubjO)}(hinth]hint}(hj]hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj<hhhjNhKubja)}(h h]h }(hjkhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj<hhhjNhKubjr)}(hirq_get_nr_irqsh]jx)}(hirq_get_nr_irqsh]hirq_get_nr_irqs}(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjyubah}(h]h ](jjeh"]h$]h&]hhuh1jqhj<hhhjNhKubj)}(h(void)h]j)}(hvoidh]jO)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhj<hhhjNhKubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj8hhhjNhKubah}(h]j3ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjNhKhj5hhubj5)}(hhh]jo)}(h-Number of interrupts supported by the system.h]h-Number of interrupts supported by the system.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chKhjhhubah}(h]h ]h"]h$]h&]uh1j4hj5hhhjNhKubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjhNhNubj\)}(h'**Parameters** ``void`` no argumentsh](jo)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chKhjubj|)}(hhh]j)}(h``void`` no argumentsh](j)}(h``void``h]j)}(hjh]hvoid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chKhjubj)}(hhh]jo)}(h no argumentsh]h no arguments}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1j{hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_set_nr_irqs (C function)c.irq_set_nr_irqshNtauh1j,hjhhhNhNubj>)}(hhh](jC)}(h.unsigned int irq_set_nr_irqs (unsigned int nr)h]jI)}(h-unsigned int irq_set_nr_irqs(unsigned int nr)h](jO)}(hunsignedh]hunsigned}(hj^hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjZhhhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chKubja)}(h h]h }(hjmhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjZhhhjlhKubjO)}(hinth]hint}(hj{hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjZhhhjlhKubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjZhhhjlhKubjr)}(hirq_set_nr_irqsh]jx)}(hirq_set_nr_irqsh]hirq_set_nr_irqs}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjZhhhjlhKubj)}(h(unsigned int nr)h]j)}(hunsigned int nrh](jO)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hnrh]hnr}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjZhhhjlhKubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjVhhhjlhKubah}(h]jQah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjlhKhjShhubj5)}(hhh]jo)}(h5Set the number of interrupts supported by the system.h]h5Set the number of interrupts supported by the system.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chKhjhhubah}(h]h ]h"]h$]h&]uh1j4hjShhhjlhKubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj1jWj1jXjYjZuh1j=hhhjhNhNubj\)}(hT**Parameters** ``unsigned int nr`` New number of interrupts. **Return** **nr**.h](jo)}(h**Parameters**h]jf)}(hj;h]h Parameters}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj9ubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chKhj5ubj|)}(hhh]j)}(h.``unsigned int nr`` New number of interrupts. h](j)}(h``unsigned int nr``h]j)}(hjZh]hunsigned int nr}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chKhjTubj)}(hhh]jo)}(hNew number of interrupts.h]hNew number of interrupts.}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjohKhjpubah}(h]h ]h"]h$]h&]uh1jhjTubeh}(h]h ]h"]h$]h&]uh1jhjohKhjQubah}(h]h ]h"]h$]h&]uh1j{hj5ubjo)}(h **Return**h]jf)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chKhj5ubjo)}(h**nr**.h](jf)}(h**nr**h]hnr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chKhj5ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9generic_handle_irq (C function)c.generic_handle_irqhNtauh1j,hjhhhNhNubj>)}(hhh](jC)}(h)int generic_handle_irq (unsigned int irq)h]jI)}(h(int generic_handle_irq(unsigned int irq)h](jO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhMubjr)}(hgeneric_handle_irqh]jx)}(hgeneric_handle_irqh]hgeneric_handle_irq}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhMubj)}(h(unsigned int irq)h]j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hj%hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj!ubja)}(h h]h }(hj3hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj!ubjO)}(hinth]hint}(hjAhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj!ubja)}(h h]h }(hjOhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj!ubjx)}(hirqh]hirq}(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj!ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhMubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhMhjhhubj5)}(hhh]jo)}(h'Invoke the handler for a particular irqh]h'Invoke the handler for a particular irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMhjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjhNhNubj\)}(h**Parameters** ``unsigned int irq`` The irq number to handle **Return** 0 on success, or -EINVAL if conversion has failed This function must be called from an IRQ context with irq regs initialized.h](jo)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMhjubj|)}(hhh]j)}(h.``unsigned int irq`` The irq number to handle h](j)}(h``unsigned int irq``h]j)}(hjh]hunsigned int irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMhjubj)}(hhh]jo)}(hThe irq number to handleh]hThe irq number to handle}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1j{hjubjo)}(h **Return**h]jf)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMhjubjo)}(h10 on success, or -EINVAL if conversion has failedh]h10 on success, or -EINVAL if conversion has failed}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMhjubj)}(hKThis function must be called from an IRQ context with irq regs initialized.h]jo)}(hKThis function must be called from an IRQ context with irq regs initialized.h]hKThis function must be called from an IRQ context with irq regs initialized.}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMhj(ubah}(h]h ]h"]h$]h&]uh1jhj:hMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9$generic_handle_irq_safe (C function)c.generic_handle_irq_safehNtauh1j,hjhhhNhNubj>)}(hhh](jC)}(h.int generic_handle_irq_safe (unsigned int irq)h]jI)}(h-int generic_handle_irq_safe(unsigned int irq)h](jO)}(hinth]hint}(hjahhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj]hhhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMubja)}(h h]h }(hjphhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj]hhhjohMubjr)}(hgeneric_handle_irq_safeh]jx)}(hgeneric_handle_irq_safeh]hgeneric_handle_irq_safe}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj~ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhj]hhhjohMubj)}(h(unsigned int irq)h]j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hirqh]hirq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhj]hhhjohMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjYhhhjohMubah}(h]jTah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjohMhjVhhubj5)}(hhh]jo)}(h9Invoke the handler for a particular irq from any context.h]h9Invoke the handler for a particular irq from any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMhjhhubah}(h]h ]h"]h$]h&]uh1j4hjVhhhjohMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjhNhNubj\)}(hX?**Parameters** ``unsigned int irq`` The irq number to handle **Return** 0 on success, a negative value on error. **Description** This function can be called from any context (IRQ or process context). It will report an error if not invoked from IRQ context and the irq has been marked to enforce IRQ-context only.h](jo)}(h**Parameters**h]jf)}(hj"h]h Parameters}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj ubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMhjubj|)}(hhh]j)}(h.``unsigned int irq`` The irq number to handle h](j)}(h``unsigned int irq``h]j)}(hjAh]hunsigned int irq}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?ubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMhj;ubj)}(hhh]jo)}(hThe irq number to handleh]hThe irq number to handle}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjVhMhjWubah}(h]h ]h"]h$]h&]uh1jhj;ubeh}(h]h ]h"]h$]h&]uh1jhjVhMhj8ubah}(h]h ]h"]h$]h&]uh1j{hjubjo)}(h **Return**h]jf)}(hj|h]hReturn}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jehjzubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMhjubjo)}(h(0 on success, a negative value on error.h]h(0 on success, a negative value on error.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMhjubjo)}(h**Description**h]jf)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMhjubjo)}(hThis function can be called from any context (IRQ or process context). It will report an error if not invoked from IRQ context and the irq has been marked to enforce IRQ-context only.h]hThis function can be called from any context (IRQ or process context). It will report an error if not invoked from IRQ context and the irq has been marked to enforce IRQ-context only.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9&generic_handle_domain_irq (C function)c.generic_handle_domain_irqhNtauh1j,hjhhhNhNubj>)}(hhh](jC)}(hMint generic_handle_domain_irq (struct irq_domain *domain, unsigned int hwirq)h]jI)}(hLint generic_handle_domain_irq(struct irq_domain *domain, unsigned int hwirq)h](jO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhMubjr)}(hgeneric_handle_domain_irqh]jx)}(hgeneric_handle_domain_irqh]hgeneric_handle_domain_irq}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhMubj)}(h/(struct irq_domain *domain, unsigned int hwirq)h](j)}(hstruct irq_domain *domainh](j)}(hjh]hstruct}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubja)}(h h]h }(hj2hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj!ubh)}(hhh]jx)}(h irq_domainh]h irq_domain}(hjChhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj@ubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjEmodnameN classnameNjj)}j]j)}jj sbc.generic_handle_domain_irqasbuh1hhj!ubja)}(h h]h }(hjchhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj!ubj)}(hjh]h*}(hjqhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubjx)}(hdomainh]hdomain}(hj~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj!ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hunsigned int hwirqh](jO)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hhwirqh]hhwirq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhMubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhMhjhhubj5)}(hhh]jo)}(h6Invoke the handler for a HW irq belonging to a domain.h]h6Invoke the handler for a HW irq belonging to a domain.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMhjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjhNhNubj\)}(hXD**Parameters** ``struct irq_domain *domain`` The domain where to perform the lookup ``unsigned int hwirq`` The HW irq number to convert to a logical one **Return** 0 on success, or -EINVAL if conversion has failed This function must be called from an IRQ context with irq regs initialized.h](jo)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMhjubj|)}(hhh](j)}(hE``struct irq_domain *domain`` The domain where to perform the lookup h](j)}(h``struct irq_domain *domain``h]j)}(hj:h]hstruct irq_domain *domain}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMhj4ubj)}(hhh]jo)}(h&The domain where to perform the lookuph]h&The domain where to perform the lookup}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjOhMhjPubah}(h]h ]h"]h$]h&]uh1jhj4ubeh}(h]h ]h"]h$]h&]uh1jhjOhMhj1ubj)}(hE``unsigned int hwirq`` The HW irq number to convert to a logical one h](j)}(h``unsigned int hwirq``h]j)}(hjsh]hunsigned int hwirq}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjqubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMhjmubj)}(hhh]jo)}(h-The HW irq number to convert to a logical oneh]h-The HW irq number to convert to a logical one}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjmubeh}(h]h ]h"]h$]h&]uh1jhjhMhj1ubeh}(h]h ]h"]h$]h&]uh1j{hjubjo)}(h **Return**h]jf)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMhjubjo)}(h10 on success, or -EINVAL if conversion has failedh]h10 on success, or -EINVAL if conversion has failed}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMhjubj)}(hKThis function must be called from an IRQ context with irq regs initialized.h]jo)}(hKThis function must be called from an IRQ context with irq regs initialized.h]hKThis function must be called from an IRQ context with irq regs initialized.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMhjubah}(h]h ]h"]h$]h&]uh1jhjhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9&generic_handle_domain_nmi (C function)c.generic_handle_domain_nmihNtauh1j,hjhhhNhNubj>)}(hhh](jC)}(hMint generic_handle_domain_nmi (struct irq_domain *domain, unsigned int hwirq)h]jI)}(hLint generic_handle_domain_nmi(struct irq_domain *domain, unsigned int hwirq)h](jO)}(hinth]hint}(hj hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhMubjr)}(hgeneric_handle_domain_nmih]jx)}(hgeneric_handle_domain_nmih]hgeneric_handle_domain_nmi}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj)ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhMubj)}(h/(struct irq_domain *domain, unsigned int hwirq)h](j)}(hstruct irq_domain *domainh](j)}(hjh]hstruct}(hjIhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubja)}(h h]h }(hjVhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjEubh)}(hhh]jx)}(h irq_domainh]h irq_domain}(hjghhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjdubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjimodnameN classnameNjj)}j]j)}jj/sbc.generic_handle_domain_nmiasbuh1hhjEubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjEubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubjx)}(hdomainh]hdomain}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjEubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjAubj)}(hunsigned int hwirqh](jO)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hhwirqh]hhwirq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjAubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhMubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhMhjhhubj5)}(hhh]jo)}(h6Invoke the handler for a HW nmi belonging to a domain.h]h6Invoke the handler for a HW nmi belonging to a domain.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMhjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj5jWj5jXjYjZuh1j=hhhjhNhNubj\)}(hXD**Parameters** ``struct irq_domain *domain`` The domain where to perform the lookup ``unsigned int hwirq`` The HW irq number to convert to a logical one **Return** 0 on success, or -EINVAL if conversion has failed This function must be called from an NMI context with irq regs initialized.h](jo)}(h**Parameters**h]jf)}(hj?h]h Parameters}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jehj=ubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMhj9ubj|)}(hhh](j)}(hE``struct irq_domain *domain`` The domain where to perform the lookup h](j)}(h``struct irq_domain *domain``h]j)}(hj^h]hstruct irq_domain *domain}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj\ubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMhjXubj)}(hhh]jo)}(h&The domain where to perform the lookuph]h&The domain where to perform the lookup}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjshMhjtubah}(h]h ]h"]h$]h&]uh1jhjXubeh}(h]h ]h"]h$]h&]uh1jhjshMhjUubj)}(hE``unsigned int hwirq`` The HW irq number to convert to a logical one h](j)}(h``unsigned int hwirq``h]j)}(hjh]hunsigned int hwirq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMhjubj)}(hhh]jo)}(h-The HW irq number to convert to a logical oneh]h-The HW irq number to convert to a logical one}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjUubeh}(h]h ]h"]h$]h&]uh1j{hj9ubjo)}(h **Return**h]jf)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMhj9ubjo)}(h10 on success, or -EINVAL if conversion has failedh]h10 on success, or -EINVAL if conversion has failed}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMhj9ubj)}(hKThis function must be called from an NMI context with irq regs initialized.h]jo)}(hKThis function must be called from an NMI context with irq regs initialized.h]hKThis function must be called from an NMI context with irq regs initialized.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMhjubah}(h]h ]h"]h$]h&]uh1jhj hMhj9ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_free_descs (C function)c.irq_free_descshNtauh1j,hjhhhNhNubj>)}(hhh](jC)}(h9void irq_free_descs (unsigned int from, unsigned int cnt)h]jI)}(h8void irq_free_descs(unsigned int from, unsigned int cnt)h](jO)}(hvoidh]hvoid}(hj0hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj,hhhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chM ubja)}(h h]h }(hj?hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj,hhhj>hM ubjr)}(hirq_free_descsh]jx)}(hirq_free_descsh]hirq_free_descs}(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjMubah}(h]h ](jjeh"]h$]h&]hhuh1jqhj,hhhj>hM ubj)}(h%(unsigned int from, unsigned int cnt)h](j)}(hunsigned int fromh](jO)}(hunsignedh]hunsigned}(hjmhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjiubja)}(h h]h }(hj{hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjiubjO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjiubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjiubjx)}(hfromh]hfrom}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjiubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjeubj)}(hunsigned int cnth](jO)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hcnth]hcnt}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjeubeh}(h]h ]h"]h$]h&]hhuh1jhj,hhhj>hM ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj(hhhj>hM ubah}(h]j#ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhj>hM hj%hhubj5)}(hhh]jo)}(hfree irq descriptorsh]hfree irq descriptors}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chM hjhhubah}(h]h ]h"]h$]h&]uh1j4hj%hhhj>hM ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj8jWj8jXjYjZuh1j=hhhjhNhNubj\)}(h|**Parameters** ``unsigned int from`` Start of descriptor range ``unsigned int cnt`` Number of consecutive irqs to freeh](jo)}(h**Parameters**h]jf)}(hjBh]h Parameters}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jehj@ubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMhj<ubj|)}(hhh](j)}(h0``unsigned int from`` Start of descriptor range h](j)}(h``unsigned int from``h]j)}(hjah]hunsigned int from}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_ubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMhj[ubj)}(hhh]jo)}(hStart of descriptor rangeh]hStart of descriptor range}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjvhMhjwubah}(h]h ]h"]h$]h&]uh1jhj[ubeh}(h]h ]h"]h$]h&]uh1jhjvhMhjXubj)}(h7``unsigned int cnt`` Number of consecutive irqs to freeh](j)}(h``unsigned int cnt``h]j)}(hjh]hunsigned int cnt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMhjubj)}(hhh]jo)}(h"Number of consecutive irqs to freeh]h"Number of consecutive irqs to free}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjXubeh}(h]h ]h"]h$]h&]uh1j{hj<ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9__irq_alloc_descs (C function)c.__irq_alloc_descshNtauh1j,hjhhhNhNubj>)}(hhh](jC)}(hint __ref __irq_alloc_descs (int irq, unsigned int from, unsigned int cnt, int node, struct module *owner, const struct irq_affinity_desc *affinity)h]jI)}(hint __ref __irq_alloc_descs(int irq, unsigned int from, unsigned int cnt, int node, struct module *owner, const struct irq_affinity_desc *affinity)h](jO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhMubh__ref}(hjhhhNhNubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhMubjr)}(h__irq_alloc_descsh]jx)}(h__irq_alloc_descsh]h__irq_alloc_descs}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj#ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhMubj)}(hx(int irq, unsigned int from, unsigned int cnt, int node, struct module *owner, const struct irq_affinity_desc *affinity)h](j)}(hint irqh](jO)}(hinth]hint}(hjChhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj?ubja)}(h h]h }(hjQhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj?ubjx)}(hirqh]hirq}(hj_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj?ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj;ubj)}(hunsigned int fromh](jO)}(hunsignedh]hunsigned}(hjxhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjtubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjtubjO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjtubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjtubjx)}(hfromh]hfrom}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjtubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj;ubj)}(hunsigned int cnth](jO)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hcnth]hcnt}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj;ubj)}(hint nodeh](jO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hj(hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hnodeh]hnode}(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj;ubj)}(hstruct module *ownerh](j)}(hjh]hstruct}(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjKubja)}(h h]h }(hj\hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjKubh)}(hhh]jx)}(hmoduleh]hmodule}(hjmhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjjubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjomodnameN classnameNjj)}j]j)}jj)sbc.__irq_alloc_descsasbuh1hhjKubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjKubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjKubjx)}(hownerh]howner}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjKubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj;ubj)}(h(const struct irq_affinity_desc *affinityh](j)}(hjmh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubh)}(hhh]jx)}(hirq_affinity_desch]hirq_affinity_desc}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjmodnameN classnameNjj)}j]jc.__irq_alloc_descsasbuh1hhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(haffinityh]haffinity}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj;ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhMubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhMhjhhubj5)}(hhh]jo)}(h2allocate and initialize a range of irq descriptorsh]h2allocate and initialize a range of irq descriptors}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMhjZhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjujWjujXjYjZuh1j=hhhjhNhNubj\)}(hXZ**Parameters** ``int irq`` Allocate for specific irq number if irq >= 0 ``unsigned int from`` Start the search from this irq number ``unsigned int cnt`` Number of consecutive irqs to allocate. ``int node`` Preferred node on which the irq descriptor should be allocated ``struct module *owner`` Owning module (can be NULL) ``const struct irq_affinity_desc *affinity`` Optional pointer to an affinity mask array of size **cnt** which hints where the irq descriptors should be allocated and which default affinities to use **Description** Returns the first irq number or error codeh](jo)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehj}ubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chM#hjyubj|)}(hhh](j)}(h9``int irq`` Allocate for specific irq number if irq >= 0 h](j)}(h ``int irq``h]j)}(hjh]hint irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chM hjubj)}(hhh]jo)}(h,Allocate for specific irq number if irq >= 0h]h,Allocate for specific irq number if irq >= 0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhM hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM hjubj)}(h<``unsigned int from`` Start the search from this irq number h](j)}(h``unsigned int from``h]j)}(hjh]hunsigned int from}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chM!hjubj)}(hhh]jo)}(h%Start the search from this irq numberh]h%Start the search from this irq number}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhM!hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM!hjubj)}(h=``unsigned int cnt`` Number of consecutive irqs to allocate. h](j)}(h``unsigned int cnt``h]j)}(hjh]hunsigned int cnt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chM"hj ubj)}(hhh]jo)}(h'Number of consecutive irqs to allocate.h]h'Number of consecutive irqs to allocate.}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj%hM"hj&ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj%hM"hjubj)}(hL``int node`` Preferred node on which the irq descriptor should be allocated h](j)}(h ``int node``h]j)}(hjIh]hint node}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chM#hjCubj)}(hhh]jo)}(h>Preferred node on which the irq descriptor should be allocatedh]h>Preferred node on which the irq descriptor should be allocated}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj^hM#hj_ubah}(h]h ]h"]h$]h&]uh1jhjCubeh}(h]h ]h"]h$]h&]uh1jhj^hM#hjubj)}(h5``struct module *owner`` Owning module (can be NULL) h](j)}(h``struct module *owner``h]j)}(hjh]hstruct module *owner}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chM$hj|ubj)}(hhh]jo)}(hOwning module (can be NULL)h]hOwning module (can be NULL)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhM$hjubah}(h]h ]h"]h$]h&]uh1jhj|ubeh}(h]h ]h"]h$]h&]uh1jhjhM$hjubj)}(h``const struct irq_affinity_desc *affinity`` Optional pointer to an affinity mask array of size **cnt** which hints where the irq descriptors should be allocated and which default affinities to use h](j)}(h,``const struct irq_affinity_desc *affinity``h]j)}(hjh]h(const struct irq_affinity_desc *affinity}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chM'hjubj)}(hhh]jo)}(hOptional pointer to an affinity mask array of size **cnt** which hints where the irq descriptors should be allocated and which default affinities to useh](h3Optional pointer to an affinity mask array of size }(hjhhhNhNubjf)}(h**cnt**h]hcnt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubh^ which hints where the irq descriptors should be allocated and which default affinities to use}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chM%hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM'hjubeh}(h]h ]h"]h$]h&]uh1j{hjyubjo)}(h**Description**h]jf)}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chM)hjyubjo)}(h*Returns the first irq number or error codeh]h*Returns the first irq number or error code}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chM)hjyubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_get_next_irq (C function)c.irq_get_next_irqhNtauh1j,hjhhhNhNubj>)}(hhh](jC)}(h3unsigned int irq_get_next_irq (unsigned int offset)h]jI)}(h2unsigned int irq_get_next_irq(unsigned int offset)h](jO)}(hunsignedh]hunsigned}(hjNhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjJhhhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMOubja)}(h h]h }(hj]hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjJhhhj\hMOubjO)}(hinth]hint}(hjkhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjJhhhj\hMOubja)}(h h]h }(hjyhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjJhhhj\hMOubjr)}(hirq_get_next_irqh]jx)}(hirq_get_next_irqh]hirq_get_next_irq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjJhhhj\hMOubj)}(h(unsigned int offset)h]j)}(hunsigned int offseth](jO)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hoffseth]hoffset}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjJhhhj\hMOubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjFhhhj\hMOubah}(h]jAah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhj\hMOhjChhubj5)}(hhh]jo)}(hget next allocated irq numberh]hget next allocated irq number}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMOhjhhubah}(h]h ]h"]h$]h&]uh1j4hjChhhj\hMOubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj!jWj!jXjYjZuh1j=hhhjhNhNubj\)}(h**Parameters** ``unsigned int offset`` where to start the search **Description** Returns next irq number after offset or nr_irqs if none is found.h](jo)}(h**Parameters**h]jf)}(hj+h]h Parameters}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj)ubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMShj%ubj|)}(hhh]j)}(h2``unsigned int offset`` where to start the search h](j)}(h``unsigned int offset``h]j)}(hjJh]hunsigned int offset}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMPhjDubj)}(hhh]jo)}(hwhere to start the searchh]hwhere to start the search}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj_hMPhj`ubah}(h]h ]h"]h$]h&]uh1jhjDubeh}(h]h ]h"]h$]h&]uh1jhj_hMPhjAubah}(h]h ]h"]h$]h&]uh1j{hj%ubjo)}(h**Description**h]jf)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMRhj%ubjo)}(hAReturns next irq number after offset or nr_irqs if none is found.h]hAReturns next irq number after offset or nr_irqs if none is found.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMRhj%ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9kstat_irqs_cpu (C function)c.kstat_irqs_cpuhNtauh1j,hjhhhNhNubj>)}(hhh](jC)}(h7unsigned int kstat_irqs_cpu (unsigned int irq, int cpu)h]jI)}(h6unsigned int kstat_irqs_cpu(unsigned int irq, int cpu)h](jO)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhMubjO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhjhMubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhMubjr)}(hkstat_irqs_cpuh]jx)}(hkstat_irqs_cpuh]hkstat_irqs_cpu}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhMubj)}(h(unsigned int irq, int cpu)h](j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hj#hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hj1hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjO)}(hinth]hint}(hj?hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjMhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hirqh]hirq}(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hint cpuh](jO)}(hinth]hint}(hjthhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjpubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjpubjx)}(hcpuh]hcpu}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjpubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhMubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhMhjhhubj5)}(hhh]jo)}(h,Get the statistics for an interrupt on a cpuh]h,Get the statistics for an interrupt on a cpu}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMhjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjhNhNubj\)}(h**Parameters** ``unsigned int irq`` The interrupt number ``int cpu`` The cpu number **Description** Returns the sum of interrupt counts on **cpu** since boot for **irq**. The caller must ensure that the interrupt is not removed concurrently.h](jo)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMhjubj|)}(hhh](j)}(h*``unsigned int irq`` The interrupt number h](j)}(h``unsigned int irq``h]j)}(hjh]hunsigned int irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMhjubj)}(hhh]jo)}(hThe interrupt numberh]hThe interrupt number}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h``int cpu`` The cpu number h](j)}(h ``int cpu``h]j)}(hj4h]hint cpu}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMhj.ubj)}(hhh]jo)}(hThe cpu numberh]hThe cpu number}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjIhMhjJubah}(h]h ]h"]h$]h&]uh1jhj.ubeh}(h]h ]h"]h$]h&]uh1jhjIhMhjubeh}(h]h ]h"]h$]h&]uh1j{hjubjo)}(h**Description**h]jf)}(hjoh]h Description}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjmubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMhjubjo)}(hReturns the sum of interrupt counts on **cpu** since boot for **irq**. The caller must ensure that the interrupt is not removed concurrently.h](h'Returns the sum of interrupt counts on }(hjhhhNhNubjf)}(h**cpu**h]hcpu}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubh since boot for }(hjhhhNhNubjf)}(h**irq**h]hirq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubhH. The caller must ensure that the interrupt is not removed concurrently.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9kstat_irqs_usr (C function)c.kstat_irqs_usrhNtauh1j,hjhhhNhNubj>)}(hhh](jC)}(h.unsigned int kstat_irqs_usr (unsigned int irq)h]jI)}(h-unsigned int kstat_irqs_usr(unsigned int irq)h](jO)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhMubjO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhjhMubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhMubjr)}(hkstat_irqs_usrh]jx)}(hkstat_irqs_usrh]hkstat_irqs_usr}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhMubj)}(h(unsigned int irq)h]j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hj1hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj-ubja)}(h h]h }(hj?hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj-ubjO)}(hinth]hint}(hjMhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj-ubja)}(h h]h }(hj[hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj-ubjx)}(hirqh]hirq}(hjihhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj-ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj)ubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhMubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhMhjhhubj5)}(hhh]jo)}(h7Get the statistics for an interrupt from thread contexth]h7Get the statistics for an interrupt from thread context}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMhjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjhNhNubj\)}(hX>**Parameters** ``unsigned int irq`` The interrupt number **Description** Returns the sum of interrupt counts on all cpus since boot for **irq**. It uses rcu to protect the access since a concurrent removal of an interrupt descriptor is observing an rcu grace period before delayed_free_desc()/irq_kobj_release().h](jo)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMhjubj|)}(hhh]j)}(h*``unsigned int irq`` The interrupt number h](j)}(h``unsigned int irq``h]j)}(hjh]hunsigned int irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMhjubj)}(hhh]jo)}(hThe interrupt numberh]hThe interrupt number}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1j{hjubjo)}(h**Description**h]jf)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehj ubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMhjubjo)}(hGReturns the sum of interrupt counts on all cpus since boot for **irq**.h](h?Returns the sum of interrupt counts on all cpus since boot for }(hj%hhhNhNubjf)}(h**irq**h]hirq}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj%ubh.}(hj%hhhNhNubeh}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMhjubjo)}(hIt uses rcu to protect the access since a concurrent removal of an interrupt descriptor is observing an rcu grace period before delayed_free_desc()/irq_kobj_release().h]hIt uses rcu to protect the access since a concurrent removal of an interrupt descriptor is observing an rcu grace period before delayed_free_desc()/irq_kobj_release().}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:516: ./kernel/irq/irqdesc.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9handle_bad_irq (C function)c.handle_bad_irqhNtauh1j,hjhhhNhNubj>)}(hhh](jC)}(h+void handle_bad_irq (struct irq_desc *desc)h]jI)}(h*void handle_bad_irq(struct irq_desc *desc)h](jO)}(hvoidh]hvoid}(hjuhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjqhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/handle.chKubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjqhhhjhKubjr)}(hhandle_bad_irqh]jx)}(hhandle_bad_irqh]hhandle_bad_irq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjqhhhjhKubj)}(h(struct irq_desc *desc)h]j)}(hstruct irq_desc *desch](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubh)}(hhh]jx)}(hirq_desch]hirq_desc}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.handle_bad_irqasbuh1hhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hdesch]hdesc}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjqhhhjhKubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjmhhhjhKubah}(h]jhah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhKhjjhhubj5)}(hhh]jo)}(h"handle spurious and unhandled irqsh]h"handle spurious and unhandled irqs}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/handle.chKhj2hhubah}(h]h ]h"]h$]h&]uh1j4hjjhhhjhKubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjMjWjMjXjYjZuh1j=hhhjhNhNubj\)}(h**Parameters** ``struct irq_desc *desc`` description of the interrupt **Description** Handles spurious and unhandled IRQ's. It also prints a debugmessage.h](jo)}(h**Parameters**h]jf)}(hjWh]h Parameters}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjUubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/handle.chK hjQubj|)}(hhh]j)}(h7``struct irq_desc *desc`` description of the interrupt h](j)}(h``struct irq_desc *desc``h]j)}(hjvh]hstruct irq_desc *desc}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/handle.chKhjpubj)}(hhh]jo)}(hdescription of the interrupth]hdescription of the interrupt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjpubeh}(h]h ]h"]h$]h&]uh1jhjhKhjmubah}(h]h ]h"]h$]h&]uh1j{hjQubjo)}(h**Description**h]jf)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/handle.chKhjQubjo)}(hDHandles spurious and unhandled IRQ's. It also prints a debugmessage.h]hFHandles spurious and unhandled IRQ’s. It also prints a debugmessage.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/handle.chKhjQubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9$generic_handle_arch_irq (C function)c.generic_handle_arch_irqhNtauh1j,hjhhhNhNubj>)}(hhh](jC)}(h;void noinstr generic_handle_arch_irq (struct pt_regs *regs)h]jI)}(h:void noinstr generic_handle_arch_irq(struct pt_regs *regs)h](jO)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/handle.chKubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhKubhnoinstr}(hjhhhNhNubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhKubjr)}(hgeneric_handle_arch_irqh]jx)}(hgeneric_handle_arch_irqh]hgeneric_handle_arch_irq}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj%ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhKubj)}(h(struct pt_regs *regs)h]j)}(hstruct pt_regs *regsh](j)}(hjh]hstruct}(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubja)}(h h]h }(hjRhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjAubh)}(hhh]jx)}(hpt_regsh]hpt_regs}(hjchhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj`ubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjemodnameN classnameNjj)}j]j)}jj+sbc.generic_handle_arch_irqasbuh1hhjAubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjAubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubjx)}(hregsh]hregs}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjAubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj=ubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhKubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhKhjhhubj5)}(hhh]jo)}(hJroot irq handler for architectures which do no entry accounting themselvesh]hJroot irq handler for architectures which do no entry accounting themselves}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/handle.chKhjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhKubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjhNhNubj\)}(h`**Parameters** ``struct pt_regs *regs`` Register file coming from the low-level handling codeh](jo)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/handle.chKhjubj|)}(hhh]j)}(hN``struct pt_regs *regs`` Register file coming from the low-level handling codeh](j)}(h``struct pt_regs *regs``h]j)}(hj h]hstruct pt_regs *regs}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/handle.chKhjubj)}(hhh]jo)}(h5Register file coming from the low-level handling codeh]h5Register file coming from the low-level handling code}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/handle.chKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1j{hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9!irq_set_msi_desc_off (C function)c.irq_set_msi_desc_offhNtauh1j,hjhhhNhNubj>)}(hhh](jC)}(haint irq_set_msi_desc_off (unsigned int irq_base, unsigned int irq_offset, struct msi_desc *entry)h]jI)}(h`int irq_set_msi_desc_off(unsigned int irq_base, unsigned int irq_offset, struct msi_desc *entry)h](jO)}(hinth]hint}(hjchhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj_hhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chKWubja)}(h h]h }(hjrhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj_hhhjqhKWubjr)}(hirq_set_msi_desc_offh]jx)}(hirq_set_msi_desc_offh]hirq_set_msi_desc_off}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhj_hhhjqhKWubj)}(hH(unsigned int irq_base, unsigned int irq_offset, struct msi_desc *entry)h](j)}(hunsigned int irq_baseh](jO)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hirq_baseh]hirq_base}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hunsigned int irq_offseth](jO)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjO)}(hinth]hint}(hj hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(h irq_offseth]h irq_offset}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct msi_desc *entryh](j)}(hjh]hstruct}(hjBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>ubja)}(h h]h }(hjOhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj>ubh)}(hhh]jx)}(hmsi_desch]hmsi_desc}(hj`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj]ubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjbmodnameN classnameNjj)}j]j)}jjsbc.irq_set_msi_desc_offasbuh1hhj>ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj>ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>ubjx)}(hentryh]hentry}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj>ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhj_hhhjqhKWubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj[hhhjqhKWubah}(h]jVah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjqhKWhjXhhubj5)}(hhh]jo)}(h,set MSI descriptor data for an irq at offseth]h,set MSI descriptor data for an irq at offset}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chKWhjhhubah}(h]h ]h"]h$]h&]uh1j4hjXhhhjqhKWubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjhNhNubj\)}(h**Parameters** ``unsigned int irq_base`` Interrupt number base ``unsigned int irq_offset`` Interrupt number offset ``struct msi_desc *entry`` Pointer to MSI descriptor data **Description** Set the MSI descriptor entry for an irq at offseth](jo)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chK[hjubj|)}(hhh](j)}(h0``unsigned int irq_base`` Interrupt number base h](j)}(h``unsigned int irq_base``h]j)}(hjh]hunsigned int irq_base}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chKXhjubj)}(hhh]jo)}(hInterrupt number baseh]hInterrupt number base}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhKXhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKXhjubj)}(h4``unsigned int irq_offset`` Interrupt number offset h](j)}(h``unsigned int irq_offset``h]j)}(hj?h]hunsigned int irq_offset}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chKYhj9ubj)}(hhh]jo)}(hInterrupt number offseth]hInterrupt number offset}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjThKYhjUubah}(h]h ]h"]h$]h&]uh1jhj9ubeh}(h]h ]h"]h$]h&]uh1jhjThKYhjubj)}(h:``struct msi_desc *entry`` Pointer to MSI descriptor data h](j)}(h``struct msi_desc *entry``h]j)}(hjxh]hstruct msi_desc *entry}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjvubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chKZhjrubj)}(hhh]jo)}(hPointer to MSI descriptor datah]hPointer to MSI descriptor data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhKZhjubah}(h]h ]h"]h$]h&]uh1jhjrubeh}(h]h ]h"]h$]h&]uh1jhjhKZhjubeh}(h]h ]h"]h$]h&]uh1j{hjubjo)}(h**Description**h]jf)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chK\hjubjo)}(h1Set the MSI descriptor entry for an irq at offseth]h1Set the MSI descriptor entry for an irq at offset}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chK\hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_set_msi_desc (C function)c.irq_set_msi_deschNtauh1j,hjhhhNhNubj>)}(hhh](jC)}(h?int irq_set_msi_desc (unsigned int irq, struct msi_desc *entry)h]jI)}(h>int irq_set_msi_desc(unsigned int irq, struct msi_desc *entry)h](jO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chKjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhKjubjr)}(hirq_set_msi_desch]jx)}(hirq_set_msi_desch]hirq_set_msi_desc}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhKjubj)}(h*(unsigned int irq, struct msi_desc *entry)h](j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hj5hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj1ubja)}(h h]h }(hjChhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj1ubjO)}(hinth]hint}(hjQhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj1ubja)}(h h]h }(hj_hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj1ubjx)}(hirqh]hirq}(hjmhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj1ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj-ubj)}(hstruct msi_desc *entryh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubh)}(hhh]jx)}(hmsi_desch]hmsi_desc}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.irq_set_msi_descasbuh1hhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hentryh]hentry}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj-ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKjubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhKjubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhKjhjhhubj5)}(hhh]jo)}(h"set MSI descriptor data for an irqh]h"set MSI descriptor data for an irq}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chKjhjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhKjubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj!jWj!jXjYjZuh1j=hhhjhNhNubj\)}(h**Parameters** ``unsigned int irq`` Interrupt number ``struct msi_desc *entry`` Pointer to MSI descriptor data **Description** Set the MSI descriptor entry for an irqh](jo)}(h**Parameters**h]jf)}(hj+h]h Parameters}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj)ubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chKnhj%ubj|)}(hhh](j)}(h&``unsigned int irq`` Interrupt number h](j)}(h``unsigned int irq``h]j)}(hjJh]hunsigned int irq}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chKkhjDubj)}(hhh]jo)}(hInterrupt numberh]hInterrupt number}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj_hKkhj`ubah}(h]h ]h"]h$]h&]uh1jhjDubeh}(h]h ]h"]h$]h&]uh1jhj_hKkhjAubj)}(h:``struct msi_desc *entry`` Pointer to MSI descriptor data h](j)}(h``struct msi_desc *entry``h]j)}(hjh]hstruct msi_desc *entry}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chKlhj}ubj)}(hhh]jo)}(hPointer to MSI descriptor datah]hPointer to MSI descriptor data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhKlhjubah}(h]h ]h"]h$]h&]uh1jhj}ubeh}(h]h ]h"]h$]h&]uh1jhjhKlhjAubeh}(h]h ]h"]h$]h&]uh1j{hj%ubjo)}(h**Description**h]jf)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chKnhj%ubjo)}(h'Set the MSI descriptor entry for an irqh]h'Set the MSI descriptor entry for an irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chKnhj%ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_disable (C function) c.irq_disablehNtauh1j,hjhhhNhNubj>)}(hhh](jC)}(h(void irq_disable (struct irq_desc *desc)h]jI)}(h'void irq_disable(struct irq_desc *desc)h](jO)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chMvubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhMvubjr)}(h irq_disableh]jx)}(h irq_disableh]h irq_disable}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhMvubj)}(h(struct irq_desc *desc)h]j)}(hstruct irq_desc *desch](j)}(hjh]hstruct}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<ubja)}(h h]h }(hjMhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj<ubh)}(hhh]jx)}(hirq_desch]hirq_desc}(hj^hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj[ubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetj`modnameN classnameNjj)}j]j)}jj&sb c.irq_disableasbuh1hhj<ubja)}(h h]h }(hj~hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj<ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<ubjx)}(hdesch]hdesc}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj<ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj8ubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMvubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhMvubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhMvhjhhubj5)}(hhh]jo)}(hMark interrupt disabledh]hMark interrupt disabled}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chMvhjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhMvubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjhNhNubj\)}(hXe**Parameters** ``struct irq_desc *desc`` irq descriptor which should be disabled **Description** If the chip does not implement the irq_disable callback, we use a lazy disable approach. That means we mark the interrupt disabled, but leave the hardware unmasked. That's an optimization because we avoid the hardware access for the common case where no interrupt happens after we marked it disabled. If an interrupt happens, then the interrupt flow handler masks the line at the hardware level and marks it pending. If the interrupt chip does not implement the irq_disable callback, a driver can disable the lazy approach for a particular irq line by calling 'irq_set_status_flags(irq, IRQ_DISABLE_UNLAZY)'. This can be used for devices which cannot disable the interrupt at the device level under certain circumstances and have to use disable_irq[_nosync] instead.h](jo)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chMzhjubj|)}(hhh]j)}(hB``struct irq_desc *desc`` irq descriptor which should be disabled h](j)}(h``struct irq_desc *desc``h]j)}(hjh]hstruct irq_desc *desc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chMwhjubj)}(hhh]jo)}(h'irq descriptor which should be disabledh]h'irq descriptor which should be disabled}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhMwhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMwhjubah}(h]h ]h"]h$]h&]uh1j{hjubjo)}(h**Description**h]jf)}(hj?h]Ih Description}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jehj=ubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chMyhjubjo)}(hXIf the chip does not implement the irq_disable callback, we use a lazy disable approach. That means we mark the interrupt disabled, but leave the hardware unmasked. That's an optimization because we avoid the hardware access for the common case where no interrupt happens after we marked it disabled. If an interrupt happens, then the interrupt flow handler masks the line at the hardware level and marks it pending.h]hXIf the chip does not implement the irq_disable callback, we use a lazy disable approach. That means we mark the interrupt disabled, but leave the hardware unmasked. That’s an optimization because we avoid the hardware access for the common case where no interrupt happens after we marked it disabled. If an interrupt happens, then the interrupt flow handler masks the line at the hardware level and marks it pending.}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chMyhjubjo)}(hX]If the interrupt chip does not implement the irq_disable callback, a driver can disable the lazy approach for a particular irq line by calling 'irq_set_status_flags(irq, IRQ_DISABLE_UNLAZY)'. This can be used for devices which cannot disable the interrupt at the device level under certain circumstances and have to use disable_irq[_nosync] instead.h]hXaIf the interrupt chip does not implement the irq_disable callback, a driver can disable the lazy approach for a particular irq line by calling ‘irq_set_status_flags(irq, IRQ_DISABLE_UNLAZY)’. This can be used for devices which cannot disable the interrupt at the device level under certain circumstances and have to use disable_irq[_nosync] instead.}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9handle_percpu_irq (C function)c.handle_percpu_irqhNtauh1j,hjhhhNhNubj>)}(hhh](jC)}(h.void handle_percpu_irq (struct irq_desc *desc)h]jI)}(h-void handle_percpu_irq(struct irq_desc *desc)h](jO)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chM$ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhM$ubjr)}(hhandle_percpu_irqh]jx)}(hhandle_percpu_irqh]hhandle_percpu_irq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhM$ubj)}(h(struct irq_desc *desc)h]j)}(hstruct irq_desc *desch](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubh)}(hhh]jx)}(hirq_desch]hirq_desc}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.handle_percpu_irqasbuh1hhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hdesch]hdesc}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhM$ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhM$ubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhM$hjhhubj5)}(hhh]jo)}(hPer CPU local irq handlerh]hPer CPU local irq handler}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chM$hjPhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhM$ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjkjWjkjXjYjZuh1j=hhhjhNhNubj\)}(h**Parameters** ``struct irq_desc *desc`` the interrupt description structure for this irq Per CPU interrupts on SMP machines without locking requirementsh](jo)}(h**Parameters**h]jf)}(hjuh]h Parameters}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjsubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chM(hjoubj|)}(hhh]j)}(h``struct irq_desc *desc`` the interrupt description structure for this irq Per CPU interrupts on SMP machines without locking requirementsh](j)}(h``struct irq_desc *desc``h]j)}(hjh]hstruct irq_desc *desc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chM&hjubj)}(hhh](jo)}(h0the interrupt description structure for this irqh]h0the interrupt description structure for this irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chM%hjubjo)}(h?Per CPU interrupts on SMP machines without locking requirementsh]h?Per CPU interrupts on SMP machines without locking requirements}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chM'hjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM&hjubah}(h]h ]h"]h$]h&]uh1j{hjoubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9$handle_percpu_devid_irq (C function)c.handle_percpu_devid_irqhNtauh1j,hjhhhNhNubj>)}(hhh](jC)}(h4void handle_percpu_devid_irq (struct irq_desc *desc)h]jI)}(h3void handle_percpu_devid_irq(struct irq_desc *desc)h](jO)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chM=ubja)}(h h]h }(hj hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhj hM=ubjr)}(hhandle_percpu_devid_irqh]jx)}(hhandle_percpu_devid_irqh]hhandle_percpu_devid_irq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhj hM=ubj)}(h(struct irq_desc *desc)h]j)}(hstruct irq_desc *desch](j)}(hjh]hstruct}(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6ubja)}(h h]h }(hjGhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj6ubh)}(hhh]jx)}(hirq_desch]hirq_desc}(hjXhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjUubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjZmodnameN classnameNjj)}j]j)}jj sbc.handle_percpu_devid_irqasbuh1hhj6ubja)}(h h]h }(hjxhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj6ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6ubjx)}(hdesch]hdesc}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj6ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj2ubah}(h]h ]h"]h$]h&]hhuh1jhjhhhj hM=ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhj hM=ubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhj hM=hjhhubj5)}(hhh]jo)}(h.Per CPU local irq handler with per cpu dev idsh]h.Per CPU local irq handler with per cpu dev ids}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chM=hjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhj hM=ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjhNhNubj\)}(hXu**Parameters** ``struct irq_desc *desc`` the interrupt description structure for this irq **Description** Per CPU interrupts on SMP machines without locking requirements. Same as handle_percpu_irq() above but with the following extras: action->percpu_dev_id is a pointer to percpu variables which contain the real device id for the cpu on which this handler is calledh](jo)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chMAhjubj|)}(hhh]j)}(hK``struct irq_desc *desc`` the interrupt description structure for this irq h](j)}(h``struct irq_desc *desc``h]j)}(hjh]hstruct irq_desc *desc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chM>hjubj)}(hhh]jo)}(h0the interrupt description structure for this irqh]h0the interrupt description structure for this irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhM>hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM>hjubah}(h]h ]h"]h$]h&]uh1j{hjubjo)}(h**Description**h]jf)}(hj9h]h Description}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj7ubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chM@hjubjo)}(hPer CPU interrupts on SMP machines without locking requirements. Same as handle_percpu_irq() above but with the following extras:h]hPer CPU interrupts on SMP machines without locking requirements. Same as handle_percpu_irq() above but with the following extras:}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chM@hjubjo)}(haction->percpu_dev_id is a pointer to percpu variables which contain the real device id for the cpu on which this handler is calledh]haction->percpu_dev_id is a pointer to percpu variables which contain the real device id for the cpu on which this handler is called}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chMChjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9,handle_percpu_devid_fasteoi_nmi (C function)!c.handle_percpu_devid_fasteoi_nmihNtauh1j,hjhhhNhNubj>)}(hhh](jC)}(h)}(hhh](jC)}(hvoid irq_cpu_online (void)h]jI)}(hvoid irq_cpu_online(void)h](jO)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj hhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chM ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj hhhjhM ubjr)}(hirq_cpu_onlineh]jx)}(hirq_cpu_onlineh]hirq_cpu_online}(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj+ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhj hhhjhM ubj)}(h(void)h]j)}(hvoidh]jO)}(hvoidh]hvoid}(hjKhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjGubah}(h]h ]h"]h$]h&]noemphhhuh1jhjCubah}(h]h ]h"]h$]h&]hhuh1jhj hhhjhM ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhM ubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhM hjhhubj5)}(hhh]jo)}(h$Invoke all irq_cpu_online functions.h]h$Invoke all irq_cpu_online functions.}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chM hjrhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhM ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjhNhNubj\)}(h**Parameters** ``void`` no arguments **Description** Iterate through all irqs and invoke the chip.irq_cpu_online() for each.h](jo)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chMhjubj|)}(hhh]j)}(h``void`` no arguments h](j)}(h``void``h]j)}(hjh]hvoid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chKhjubj)}(hhh]jo)}(h no argumentsh]h no arguments}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1j{hjubjo)}(h**Description**h]jf)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chKhjubj)}(hGIterate through all irqs and invoke the chip.irq_cpu_online() for each.h]jo)}(hGIterate through all irqs and invoke the chip.irq_cpu_online() for each.h]hGIterate through all irqs and invoke the chip.irq_cpu_online() for each.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chM hjubah}(h]h ]h"]h$]h&]uh1jhjhM hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_cpu_offline (C function)c.irq_cpu_offlinehNtauh1j,hjhhhNhNubj>)}(hhh](jC)}(hvoid irq_cpu_offline (void)h]jI)}(hvoid irq_cpu_offline(void)h](jO)}(hvoidh]hvoid}(hj@hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj<hhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chM&ubja)}(h h]h }(hjOhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj<hhhjNhM&ubjr)}(hirq_cpu_offlineh]jx)}(hirq_cpu_offlineh]hirq_cpu_offline}(hjahhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj]ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhj<hhhjNhM&ubj)}(h(void)h]j)}(hvoidh]jO)}(hvoidh]hvoid}(hj}hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjyubah}(h]h ]h"]h$]h&]noemphhhuh1jhjuubah}(h]h ]h"]h$]h&]hhuh1jhj<hhhjNhM&ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj8hhhjNhM&ubah}(h]j3ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjNhM&hj5hhubj5)}(hhh]jo)}(h%Invoke all irq_cpu_offline functions.h]h%Invoke all irq_cpu_offline functions.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chM&hjhhubah}(h]h ]h"]h$]h&]uh1j4hj5hhhjNhM&ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjhNhNubj\)}(h**Parameters** ``void`` no arguments **Description** Iterate through all irqs and invoke the chip.irq_cpu_offline() for each.h](jo)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chM*hjubj|)}(hhh]j)}(h``void`` no arguments h](j)}(h``void``h]j)}(hjh]hvoid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chKhjubj)}(hhh]jo)}(h no argumentsh]h no arguments}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1j{hjubjo)}(h**Description**h]jf)}(hj#h]h Description}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj!ubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chKhjubj)}(hHIterate through all irqs and invoke the chip.irq_cpu_offline() for each.h]jo)}(hHIterate through all irqs and invoke the chip.irq_cpu_offline() for each.h]hHIterate through all irqs and invoke the chip.irq_cpu_offline() for each.}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chM'hj9ubah}(h]h ]h"]h$]h&]uh1jhjKhM'hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9%irq_chip_compose_msi_msg (C function)c.irq_chip_compose_msi_msghNtauh1j,hjhhhNhNubj>)}(hhh](jC)}(hIint irq_chip_compose_msi_msg (struct irq_data *data, struct msi_msg *msg)h]jI)}(hHint irq_chip_compose_msi_msg(struct irq_data *data, struct msi_msg *msg)h](jO)}(hinth]hint}(hjrhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjnhhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chMubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjnhhhjhMubjr)}(hirq_chip_compose_msi_msgh]jx)}(hirq_chip_compose_msi_msgh]hirq_chip_compose_msi_msg}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjnhhhjhMubj)}(h,(struct irq_data *data, struct msi_msg *msg)h](j)}(hstruct irq_data *datah](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubh)}(hhh]jx)}(hirq_datah]hirq_data}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.irq_chip_compose_msi_msgasbuh1hhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct msi_msg *msgh](j)}(hjh]hstruct}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubja)}(h h]h }(hj.hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubh)}(hhh]jx)}(hmsi_msgh]hmsi_msg}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj<ubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjAmodnameN classnameNjj)}j]jc.irq_chip_compose_msi_msgasbuh1hhjubja)}(h h]h }(hj]hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hjkhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hmsgh]hmsg}(hjxhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjnhhhjhMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjjhhhjhMubah}(h]jeah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhMhjghhubj5)}(hhh]jo)}(h"Compose msi message for a irq chiph]h"Compose msi message for a irq chip}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chMhjhhubah}(h]h ]h"]h$]h&]uh1j4hjghhhjhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjhNhNubj\)}(hX:**Parameters** ``struct irq_data *data`` Pointer to interrupt specific data ``struct msi_msg *msg`` Pointer to the MSI message **Description** For hierarchical domains we find the first chip in the hierarchy which implements the irq_compose_msi_msg callback. For non hierarchical we use the top level chip.h](jo)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chMhjubj|)}(hhh](j)}(h=``struct irq_data *data`` Pointer to interrupt specific data h](j)}(h``struct irq_data *data``h]j)}(hjh]hstruct irq_data *data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chMhjubj)}(hhh]jo)}(h"Pointer to interrupt specific datah]h"Pointer to interrupt specific data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h3``struct msi_msg *msg`` Pointer to the MSI message h](j)}(h``struct msi_msg *msg``h]j)}(hjh]hstruct msi_msg *msg}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chMhjubj)}(hhh]jo)}(hPointer to the MSI messageh]hPointer to the MSI message}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj1hMhj2ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj1hMhjubeh}(h]h ]h"]h$]h&]uh1j{hjubjo)}(h**Description**h]jf)}(hjWh]h Description}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjUubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chMhjubjo)}(hFor hierarchical domains we find the first chip in the hierarchy which implements the irq_compose_msi_msg callback. For non hierarchical we use the top level chip.h]hFor hierarchical domains we find the first chip in the hierarchy which implements the irq_compose_msi_msg callback. For non hierarchical we use the top level chip.}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_chip_pm_get (C function)c.irq_chip_pm_gethNtauh1j,hjhhhNhNubj>)}(hhh](jC)}(h+int irq_chip_pm_get (struct irq_data *data)h]jI)}(h*int irq_chip_pm_get(struct irq_data *data)h](jO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chMubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhMubjr)}(hirq_chip_pm_geth]jx)}(hirq_chip_pm_geth]hirq_chip_pm_get}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhMubj)}(h(struct irq_data *data)h]j)}(hstruct irq_data *datah](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubh)}(hhh]jx)}(hirq_datah]hirq_data}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.irq_chip_pm_getasbuh1hhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hdatah]hdata}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhMubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhMhjhhubj5)}(hhh]jo)}(hEnable power for an IRQ chiph]hEnable power for an IRQ chip}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chMhjYhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjtjWjtjXjYjZuh1j=hhhjhNhNubj\)}(h**Parameters** ``struct irq_data *data`` Pointer to interrupt specific data **Description** Enable the power to the IRQ chip referenced by the interrupt data structure.h](jo)}(h**Parameters**h]jf)}(hj~h]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehj|ubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chMhjxubj|)}(hhh]j)}(h=``struct irq_data *data`` Pointer to interrupt specific data h](j)}(h``struct irq_data *data``h]j)}(hjh]hstruct irq_data *data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chMhjubj)}(hhh]jo)}(h"Pointer to interrupt specific datah]h"Pointer to interrupt specific data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1j{hjxubjo)}(h**Description**h]jf)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chMhjxubjo)}(hLEnable the power to the IRQ chip referenced by the interrupt data structure.h]hLEnable the power to the IRQ chip referenced by the interrupt data structure.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chMhjxubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_chip_pm_put (C function)c.irq_chip_pm_puthNtauh1j,hjhhhNhNubj>)}(hhh](jC)}(h+int irq_chip_pm_put (struct irq_data *data)h]jI)}(h*int irq_chip_pm_put(struct irq_data *data)h](jO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chMubja)}(h h]h }(hj,hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhj+hMubjr)}(hirq_chip_pm_puth]jx)}(hirq_chip_pm_puth]hirq_chip_pm_put}(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj:ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhj+hMubj)}(h(struct irq_data *data)h]j)}(hstruct irq_data *datah](j)}(hjh]hstruct}(hjZhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVubja)}(h h]h }(hjghhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjVubh)}(hhh]jx)}(hirq_datah]hirq_data}(hjxhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjuubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjzmodnameN classnameNjj)}j]j)}jj@sbc.irq_chip_pm_putasbuh1hhjVubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjVubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVubjx)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjVubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjRubah}(h]h ]h"]h$]h&]hhuh1jhjhhhj+hMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhj+hMubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhj+hMhjhhubj5)}(hhh]jo)}(hDisable power for an IRQ chiph]hDisable power for an IRQ chip}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chMhjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhj+hMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjhNhNubj\)}(hX2**Parameters** ``struct irq_data *data`` Pointer to interrupt specific data **Description** Disable the power to the IRQ chip referenced by the interrupt data structure, belongs. Note that power will only be disabled, once this function has been called for all IRQs that have called irq_chip_pm_get().h](jo)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chMhjubj|)}(hhh]j)}(h=``struct irq_data *data`` Pointer to interrupt specific data h](j)}(h``struct irq_data *data``h]j)}(hjh]hstruct irq_data *data}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chMhjubj)}(hhh]jo)}(h"Pointer to interrupt specific datah]h"Pointer to interrupt specific data}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj3hMhj4ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj3hMhjubah}(h]h ]h"]h$]h&]uh1j{hjubjo)}(h**Description**h]jf)}(hjYh]h Description}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jehjWubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chMhjubjo)}(hDisable the power to the IRQ chip referenced by the interrupt data structure, belongs. Note that power will only be disabled, once this function has been called for all IRQs that have called irq_chip_pm_get().h]hDisable the power to the IRQ chip referenced by the interrupt data structure, belongs. Note that power will only be disabled, once this function has been called for all IRQs that have called irq_chip_pm_get().}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/chip.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubeh}(h]internal-functions-providedah ]h"]internal functions providedah$]h&]uh1j8hj:hhhjMhMubj9)}(hhh](j>)}(hCreditsh]hCredits}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j=hjhhhjMhMubjo)}(h7The following people have contributed to this document:h]h7The following people have contributed to this document:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhMhjhhubj)}(hhh](j.)}(h#Thomas Gleixner tglx@linutronix.de h]jo)}(h"Thomas Gleixner tglx@linutronix.deh](hThomas Gleixner }(hjhhhNhNubh reference)}(htglx@linutronix.deh]htglx@linutronix.de}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:tglx@linutronix.deuh1jhjubeh}(h]h ]h"]h$]h&]uh1jnhjMhMhjubah}(h]h ]h"]h$]h&]uh1j-hjhhhjMhNubj.)}(hIngo Molnar mingo@elte.huh]jo)}(hjh](h Ingo Molnar }(hjhhhNhNubj)}(h mingo@elte.huh]h mingo@elte.hu}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:mingo@elte.huuh1jhjubeh}(h]h ]h"]h$]h&]uh1jnhjMhMhjubah}(h]h ]h"]h$]h&]uh1j-hjhhhjMhNubeh}(h]h ]h"]h$]h&]j*j+j,hj-j.uh1jhjhhhjMhMubeh}(h]creditsah ]h"]creditsah$]h&]uh1j8hj:hhhjMhMubeh}(h]linux-generic-irq-handlingah ]h"]linux generic irq handlingah$]h&]uh1j8hhhhhjMhKubeh}(h]h ]h"]h$]h&]sourcejMuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(j=N 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_handlerj9error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourcejM _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}(hhhhhhhhj jjjj*jj9j-jHj<jWjKjfjZjujijjxjjjjjjjjjjjjjjjjj jjjj)jj8j,jGj;jVjJjejYjtjhjjwjjjjjjjjjjjjjjjjj jjj j(jj7j+jFj:jUjIjdjXjsjgjjvjjjjjjjjjjjjjjjjj jjj j'jj6j*jEj9jTjHjcjWjrjfjjujjjjjjjjjjjjjjjjjjjj j&jj5j)usubstitution_names}(amphЌaposhߌasthbrvbarhbsolj centjcolonj*commaj9commatjHcopyjWcurrenjfdarrjudegjdividejdollarjequalsjexcljfrac12jfrac14jfrac18jfrac34jfrac38j frac58jfrac78j)gtj8halfjGhorbarjVhyphenjeiexcljtiquestjlaquojlarrjlcubjldquojlowbarjlparjlsqbjlsquojltj microjmiddotj(nbspj7notjFnumjUohmjdordfjsordmjparajpercntjperiodjplusjplusmnjpoundjquestjquotjraquoj rarrjrcubj'rdquoj6regjErparjTrsqbjcrsquojrsectjsemijshyjsoljsungjsup1jsup2jsup3jtimesjtradejuarrjverbarj&yenj5urefnames}refids}nameids}(jjjjjjjjjjjaj^j j j j j j j j j j jA j> j j j j j# j jt jq j j j j j j j j jjjjj jj(3j%3j`j`jjjjj ju nametypes}(jjjjjjaj j j j j jA j j j# jt j j j j jjj j(3j`jjj uh}(jj:jjjjjjjjj^j/j jdj j j j j j j j j> j j jD j j j j jq j& j jw j j j j j j jj# jjjjj%3j j;jDjjjYj^jjjYj^jjj3j8jjjjjjj!j!j@#jE#j>(jC(j]*jb*j.j.j0j0j`j+3jV3j[3j5j5ju8jz8jNAjSAjtCjyCjEjEjJjJj~LjLjPOjUOj%Sj*SjVjVjXjXjZjZj3\j8\jY^j^^jj`j`j`jkbjpbjcjdj5ej:ejfjfjhjhj/jj4jjUljZljnjnjpjpjrjrjsjsjujuj6wj;wjxjxjzjzjt{jy{j}j}jIjNjjjojjjjÉjjjjjjjjjjjۙjjYj^jȜj͜jojtj jjhjmjcjhjcjhj'j,jjjݬjj=jBjjjjjjjjjj jjj jjjj#j(jjjjjpjujjj&j+jjjjj7j<jjjjjujzjKjPjVj[jjjjj3j8jQjVjjjTjYjjjjj#j(jjjAjFjjjjjhjmjjjVj[jjjjjjjjjjjjj3j8jejjjjjjjju 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] transformerN include_log]%Documentation/core-api/genericirq.rst(NNNNta decorationNhhub.