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.chK%ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhK%ubjr)}(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&]hhuh1jqhjhhhjhK%ubj)}(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&]hhuh1jhjhhhjhK%ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhK%ubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhK%hjhhubj5)}(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&]uh1j4hjhhhjhK%ubeh}(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.chK9ubja)}(h h]h }(hjuhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjbhhhjthK9ubjr)}(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&]hhuh1jqhjbhhhjthK9ubj)}(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&]hhuh1jhjbhhhjthK9ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj^hhhjthK9ubah}(h]jYah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjthK9hj[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.chK3hj"hhubah}(h]h ]h"]h$]h&]uh1j4hj[hhhjthK9ubeh}(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.chK7hjAubj|)}(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.chK4hj`ubj)}(hhh]jo)}(hirq_datah]hirq_data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj{hK4hj|ubah}(h]h ]h"]h$]h&]uh1jhj`ubeh}(h]h ]h"]h$]h&]uh1jhj{hK4hj]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.chK6hjAubjo)}(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.chK6hjAubeh}(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.chKMubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhKMubjr)}(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&]hhuh1jqhjhhhjhKMubj)}(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&]hhuh1jhjhhhjhKMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhKMubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhKMhjhhubj5)}(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.chKGhjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhKMubeh}(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.chKKhjubj|)}(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.chKHhjubj)}(hhh]jo)}(hirq_datah]hirq_data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhKHhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKHhjubah}(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.chKJhjubjo)}(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.chKJhjubeh}(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.chKaubja)}(h h]h }(hjuhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjbhhhjthKaubjr)}(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&]hhuh1jqhjbhhhjthKaubj)}(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&]hhuh1jhjbhhhjthKaubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj^hhhjthKaubah}(h]jYah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjthKahj[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.chK[hj"hhubah}(h]h ]h"]h$]h&]uh1j4hj[hhhjthKaubeh}(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.chK\hj`ubj)}(hhh]jo)}(hirq_datah]hirq_data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj{hK\hj|ubah}(h]h ]h"]h$]h&]uh1jhj`ubeh}(h]h ]h"]h$]h&]uh1jhj{hK\hj]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.chKrubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhKrubjr)}(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&]hhuh1jqhjhhhjhKrubj)}(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&]hhuh1jhjhhhjhKrubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhKrubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhKrhjhhubj5)}(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.chKohjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhKrubeh}(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.chKshjubj|)}(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.chKuhjubj)}(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.chKphjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKuhjubah}(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.chMoubja)}(h h]h }(hj"hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj!hhhj"hMoubjr)}(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"hMoubj)}(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"hMoubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj!hhhj"hMoubah}(h]j!ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhj"hMohj!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.chMlhj"hhubah}(h]h ]h"]h$]h&]uh1j4hj!hhhj"hMoubeh}(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.chMphj"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.chMrhj"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.chMmhj #ubah}(h]h ]h"]h$]h&]uh1jhj"ubeh}(h]h ]h"]h$]h&]uh1jhj#hMrhj"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.chMubja)}(h h]h }(hj\#hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjI#hhhj[#hMubjr)}(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[#hMubj)}(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[#hMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjE#hhhj[#hMubah}(h]j@#ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhj[#hMhjB#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.chMhj&hhubah}(h]h ]h"]h$]h&]uh1j4hjB#hhhj[#hMubeh}(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.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)}(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.chMhj\&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&hMhjx&ubah}(h]h ]h"]h$]h&]uh1jhj\&ubeh}(h]h ]h"]h$]h&]uh1jhjw&hMhjY&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.chMhj&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&hMhj&ubah}(h]h ]h"]h$]h&]uh1jhj&ubeh}(h]h ]h"]h$]h&]uh1jhj&hMhjY&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.chMhj&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&hMhj&ubah}(h]h ]h"]h$]h&]uh1jhj&ubeh}(h]h ]h"]h$]h&]uh1jhj&hMhjY&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.chMhj'ubj)}(hhh]jo)}(hName of the irq chiph]hName of the irq chip}(hj&'hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj"'hMhj#'ubah}(h]h ]h"]h$]h&]uh1jhj'ubeh}(h]h ]h"]h$]h&]uh1jhj"'hMhjY&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.chMhj@'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['hMhj\'ubah}(h]h ]h"]h$]h&]uh1jhj@'ubeh}(h]h ]h"]h$]h&]uh1jhj['hMhjY&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.chMhjy'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'hMhj'ubah}(h]h ]h"]h$]h&]uh1jhjy'ubeh}(h]h ]h"]h$]h&]uh1jhj'hMhjY&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.chMhj'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'hMhj'ubah}(h]h ]h"]h$]h&]uh1jhj'ubeh}(h]h ]h"]h$]h&]uh1jhj'hMhjY&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.chMhj,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.chMhj,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-hMhj-ubah}(h]h ]h"]h$]h&]uh1jhj,ubeh}(h]h ]h"]h$]h&]uh1jhj-hMhj,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.chMhj$-ubj)}(hhh]jo)}(hFlags for initializationh]hFlags for initialization}(hjC-hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj?-hMhj@-ubah}(h]h ]h"]h$]h&]uh1jhj$-ubeh}(h]h ]h"]h$]h&]uh1jhj?-hMhj,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.chMhj]-ubj)}(hhh]jo)}(hIRQ_* bits to clearh]hIRQ_* bits to clear}(hj|-hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjx-hMhjy-ubah}(h]h ]h"]h$]h&]uh1jhj]-ubeh}(h]h ]h"]h$]h&]uh1jhjx-hMhj,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.chMhj-ubj)}(hhh]jo)}(hIRQ_* bits to seth]hIRQ_* bits to set}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj-hMhj-ubah}(h]h ]h"]h$]h&]uh1jhj-ubeh}(h]h ]h"]h$]h&]uh1jhj-hMhj,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.chMLubja)}(h h]h }(hj+.hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj.hhhj*.hMLubjr)}(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*.hMLubj)}(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*.hMLubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj.hhhj*.hMLubah}(h]j.ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhj*.hMLhj.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.chMFhj)/hhubah}(h]h ]h"]h$]h&]uh1j4hj.hhhj*.hMLubeh}(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.chMJhjH/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.chMGhjg/ubj)}(hhh]jo)}(hirq_data for this interrupth]hirq_data for this interrupt}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj/hMGhj/ubah}(h]h ]h"]h$]h&]uh1jhjg/ubeh}(h]h ]h"]h$]h&]uh1jhj/hMGhjd/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.chMHhj/ubj)}(hhh]jo)}(hFlow type to be initializedh]hFlow type to be initialized}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj/hMHhj/ubah}(h]h ]h"]h$]h&]uh1jhj/ubeh}(h]h ]h"]h$]h&]uh1jhj/hMHhjd/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.chMJhjH/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.chMJhjH/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.chMfubja)}(h h]h }(hj50hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj"0hhhj40hMfubjr)}(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"0hhhj40hMfubj)}(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"0hhhj40hMfubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj0hhhj40hMfubah}(h]j0ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhj40hMfhj0hhubj5)}(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.chM^hj1hhubah}(h]h ]h"]h$]h&]uh1j4hj0hhhj40hMfubeh}(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.chMbhj1ubj|)}(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.chM_hj 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&2hM_hj'2ubah}(h]h ]h"]h$]h&]uh1jhj 2ubeh}(h]h ]h"]h$]h&]uh1jhj&2hM_hj2ubj)}(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.chM`hjD2ubj)}(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_2hM`hj`2ubah}(h]h ]h"]h$]h&]uh1jhjD2ubeh}(h]h ]h"]h$]h&]uh1jhj_2hM`hj2ubj)}(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.chMahj}2ubj)}(hhh]jo)}(hIRQ_* bits to clearh]hIRQ_* bits to clear}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj2hMahj2ubah}(h]h ]h"]h$]h&]uh1jhj}2ubeh}(h]h ]h"]h$]h&]uh1jhj2hMahj2ubj)}(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.chMbhj2ubj)}(hhh]jo)}(hIRQ_* bits to seth]hIRQ_* bits to set}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj2hMbhj2ubah}(h]h ]h"]h$]h&]uh1jhj2ubeh}(h]h ]h"]h$]h&]uh1jhj2hMbhj2ubeh}(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.chMdhj1ubjo)}(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.chMdhj1ubeh}(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.hhM hj[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&]uh1jhjvGhM hjtFubj)}(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.hhMhjHubj)}(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#HhMhj$Hubah}(h]h ]h"]h$]h&]uh1jhjHubeh}(h]h ]h"]h$]h&]uh1jhj#HhMhjtFubj)}(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.hhM5hjKhhubah}(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.hhM9hj'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.hhMAhjKubj)}(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&]uh1jhjKhMAhjCKubj)}(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.hhMDhjKubj)}(hhh]jo)}(hMask cache is chip type privateh]hMask cache is chip type private}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjKhMDhjKubah}(h]h ]h"]h$]h&]uh1jhjKubeh}(h]h ]h"]h$]h&]uh1jhjKhMDhjCKubj)}(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.hhMGhjKubj)}(hhh]jo)}(hDo not calculate irq_data->maskh]hDo not calculate irq_data->mask}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj LhMGhjLubah}(h]h ]h"]h$]h&]uh1jhjKubeh}(h]h ]h"]h$]h&]uh1jhj LhMGhjCKubj)}(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.hhMIhj+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.hhMJhjGLubah}(h]h ]h"]h$]h&]uh1jhj+Lubeh}(h]h ]h"]h$]h&]uh1jhjFLhMIhjCKubeh}(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.hhMPubja)}(h h]h }(hjLhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjLhhhjLhMPubjr)}(hirq_domain_chip_generic_infoh]jx)}(hjLh]hirq_domain_chip_generic_info}(hjLhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjLubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjLhhhjLhMPubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjLhhhjLhMPubah}(h]j~Lah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjLhMPhjLhhubj5)}(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.hhM[hjLhhubah}(h]h ]h"]h$]h&]uh1j4hjLhhhjLhMPubeh}(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.hhMahjLubjo)}(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.hhMmhjLubj|)}(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.hhMKubja)}(h h]h }(hjO\hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj<\hhhjN\hMKubjr)}(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\hMKubj)}(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\hMKubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj8\hhhjN\hMKubah}(h]j3\ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjN\hMKhj5\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\hMKubeh}(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.hhMZubja)}(h h]h }(hju^hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjb^hhhjt^hMZubjr)}(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^hMZubj)}(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^hMZubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj^^hhhjt^hMZubah}(h]jY^ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjt^hMZhj[^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^hMZubeh}(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+3hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_fwspec (C struct) c.irq_fwspechNtauh1j,hj+3hhhNhNubj>)}(hhh](jC)}(h irq_fwspech]jI)}(hstruct irq_fwspech](j)}(hjh]hstruct}(hj`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`hhh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKubja)}(h h]h }(hj`hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj`hhhj`hKubjr)}(h irq_fwspech]jx)}(hj`h]h irq_fwspec}(hj`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj`ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhj`hhhj`hKubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj`hhhj`hKubah}(h]j`ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhj`hKhj`hhubj5)}(hhh]jo)}(hgeneric IRQ specifier structureh]hgeneric IRQ specifier structure}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhK6hj`hhubah}(h]h ]h"]h$]h&]uh1j4hj`hhhj`hKubeh}(h]h ](jK structeh"]h$]h&]jUjK jVj`jWj`jXjYjZuh1j=hhhj+3hNhNubj\)}(hX9**Definition**:: struct irq_fwspec { struct fwnode_handle *fwnode; int param_count; u32 param[IRQ_DOMAIN_IRQ_SPEC_PARAMS]; }; **Members** ``fwnode`` Pointer to a firmware-specific descriptor ``param_count`` Number of device-specific parameters ``param`` Device-specific parametersh](jo)}(h**Definition**::h](jf)}(h**Definition**h]h Definition}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jehj`ubh:}(hj`hhhNhNubeh}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhK:hj`ubj )}(hxstruct irq_fwspec { struct fwnode_handle *fwnode; int param_count; u32 param[IRQ_DOMAIN_IRQ_SPEC_PARAMS]; };h]hxstruct irq_fwspec { struct fwnode_handle *fwnode; int param_count; u32 param[IRQ_DOMAIN_IRQ_SPEC_PARAMS]; };}hjasbah}(h]h ]h"]h$]h&]hhuh1j h^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKhj+3hhubjo)}(hvThis structure, directly modeled after of_phandle_args, is used to pass a device-specific description of an interrupt.h]hvThis structure, directly modeled after of_phandle_args, is used to pass a device-specific description of an interrupt.}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhK)}(hhh](jC)}(hirq_domain_opsh]jI)}(hstruct irq_domain_opsh](j)}(hjh]hstruct}(hj?bhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;bhhh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKBubja)}(h h]h }(hjMbhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj;bhhhjLbhKBubjr)}(hirq_domain_opsh]jx)}(hj9bh]hirq_domain_ops}(hj_bhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj[bubah}(h]h ](jjeh"]h$]h&]hhuh1jqhj;bhhhjLbhKBubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj7bhhhjLbhKBubah}(h]j2bah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjLbhKBhj4bhhubj5)}(hhh]jo)}(hMethods for irq_domain objectsh]hMethods for irq_domain objects}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKJhj~bhhubah}(h]h ]h"]h$]h&]uh1j4hj4bhhhjLbhKBubeh}(h]h ](jK structeh"]h$]h&]jUjK jVjbjWjbjXjYjZuh1j=hhhj+3hNhNubj\)}(hX **Definition**:: struct irq_domain_ops { int (*match)(struct irq_domain *d, struct device_node *node, enum irq_domain_bus_token bus_token); int (*select)(struct irq_domain *d, struct irq_fwspec *fwspec, enum irq_domain_bus_token bus_token); int (*map)(struct irq_domain *d, unsigned int virq, irq_hw_number_t hw); void (*unmap)(struct irq_domain *d, unsigned int virq); int (*xlate)(struct irq_domain *d, struct device_node *node,const u32 *intspec, unsigned int intsize, unsigned long *out_hwirq, unsigned int *out_type); #ifdef CONFIG_IRQ_DOMAIN_HIERARCHY; int (*alloc)(struct irq_domain *d, unsigned int virq, unsigned int nr_irqs, void *arg); void (*free)(struct irq_domain *d, unsigned int virq, unsigned int nr_irqs); int (*activate)(struct irq_domain *d, struct irq_data *irqd, bool reserve); void (*deactivate)(struct irq_domain *d, struct irq_data *irq_data); int (*translate)(struct irq_domain *d, struct irq_fwspec *fwspec, unsigned long *out_hwirq, unsigned int *out_type); #endif; #ifdef CONFIG_GENERIC_IRQ_DEBUGFS; void (*debug_show)(struct seq_file *m, struct irq_domain *d, struct irq_data *irqd, int ind); #endif; }; **Members** ``match`` Match an interrupt controller device node to a domain, returns 1 on a match ``select`` Match an interrupt controller fw specification. It is more generic than **match** as it receives a complete struct irq_fwspec. Therefore, **select** is preferred if provided. Returns 1 on a match. ``map`` Create or update a mapping between a virtual irq number and a hw irq number. This is called only once for a given mapping. ``unmap`` Dispose of such a mapping ``xlate`` Given a device tree node and interrupt specifier, decode the hardware irq number and linux irq type value. ``alloc`` Allocate **nr_irqs** interrupts starting from **virq**. ``free`` Free **nr_irqs** interrupts starting from **virq**. ``activate`` Activate one interrupt in HW (**irqd**). If **reserve** is set, only reserve the vector. If unset, assign the vector (called from request_irq()). ``deactivate`` Disarm one interrupt (**irqd**). ``translate`` Given **fwspec**, decode the hardware irq number (**out_hwirq**) and linux irq type value (**out_type**). This is a generalised **xlate** (over struct irq_fwspec) and is preferred if provided. ``debug_show`` For domains to show specific data for an interrupt in debugfs.h](jo)}(h**Definition**::h](jf)}(h**Definition**h]h Definition}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjbubh:}(hjbhhhNhNubeh}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKNhjbubj )}(hXstruct irq_domain_ops { int (*match)(struct irq_domain *d, struct device_node *node, enum irq_domain_bus_token bus_token); int (*select)(struct irq_domain *d, struct irq_fwspec *fwspec, enum irq_domain_bus_token bus_token); int (*map)(struct irq_domain *d, unsigned int virq, irq_hw_number_t hw); void (*unmap)(struct irq_domain *d, unsigned int virq); int (*xlate)(struct irq_domain *d, struct device_node *node,const u32 *intspec, unsigned int intsize, unsigned long *out_hwirq, unsigned int *out_type); #ifdef CONFIG_IRQ_DOMAIN_HIERARCHY; int (*alloc)(struct irq_domain *d, unsigned int virq, unsigned int nr_irqs, void *arg); void (*free)(struct irq_domain *d, unsigned int virq, unsigned int nr_irqs); int (*activate)(struct irq_domain *d, struct irq_data *irqd, bool reserve); void (*deactivate)(struct irq_domain *d, struct irq_data *irq_data); int (*translate)(struct irq_domain *d, struct irq_fwspec *fwspec, unsigned long *out_hwirq, unsigned int *out_type); #endif; #ifdef CONFIG_GENERIC_IRQ_DEBUGFS; void (*debug_show)(struct seq_file *m, struct irq_domain *d, struct irq_data *irqd, int ind); #endif; };h]hXstruct irq_domain_ops { int (*match)(struct irq_domain *d, struct device_node *node, enum irq_domain_bus_token bus_token); int (*select)(struct irq_domain *d, struct irq_fwspec *fwspec, enum irq_domain_bus_token bus_token); int (*map)(struct irq_domain *d, unsigned int virq, irq_hw_number_t hw); void (*unmap)(struct irq_domain *d, unsigned int virq); int (*xlate)(struct irq_domain *d, struct device_node *node,const u32 *intspec, unsigned int intsize, unsigned long *out_hwirq, unsigned int *out_type); #ifdef CONFIG_IRQ_DOMAIN_HIERARCHY; int (*alloc)(struct irq_domain *d, unsigned int virq, unsigned int nr_irqs, void *arg); void (*free)(struct irq_domain *d, unsigned int virq, unsigned int nr_irqs); int (*activate)(struct irq_domain *d, struct irq_data *irqd, bool reserve); void (*deactivate)(struct irq_domain *d, struct irq_data *irq_data); int (*translate)(struct irq_domain *d, struct irq_fwspec *fwspec, unsigned long *out_hwirq, unsigned int *out_type); #endif; #ifdef CONFIG_GENERIC_IRQ_DEBUGFS; void (*debug_show)(struct seq_file *m, struct irq_domain *d, struct irq_data *irqd, int ind); #endif; };}hjbsbah}(h]h ]h"]h$]h&]hhuh1j h^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKPhjbubjo)}(h **Members**h]jf)}(hjbh]hMembers}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjbubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKbhjbubj|)}(hhh](j)}(hV``match`` Match an interrupt controller device node to a domain, returns 1 on a match h](j)}(h ``match``h]j)}(hjbh]hmatch}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKMhjbubj)}(hhh]jo)}(hKMatch an interrupt controller device node to a domain, returns 1 on a matchh]hKMatch an interrupt controller device node to a domain, returns 1 on a match}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKLhjcubah}(h]h ]h"]h$]h&]uh1jhjbubeh}(h]h ]h"]h$]h&]uh1jhjchKMhjbubj)}(h``select`` Match an interrupt controller fw specification. It is more generic than **match** as it receives a complete struct irq_fwspec. Therefore, **select** is preferred if provided. Returns 1 on a match. h](j)}(h ``select``h]j)}(hj(ch]hselect}(hj*chhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&cubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKPhj"cubj)}(hhh]jo)}(hMatch an interrupt controller fw specification. It is more generic than **match** as it receives a complete struct irq_fwspec. Therefore, **select** is preferred if provided. Returns 1 on a match.h](hHMatch an interrupt controller fw specification. It is more generic than }(hjAchhhNhNubjf)}(h **match**h]hmatch}(hjIchhhNhNubah}(h]h ]h"]h$]h&]uh1jehjAcubh9 as it receives a complete struct irq_fwspec. Therefore, }(hjAchhhNhNubjf)}(h **select**h]hselect}(hj[chhhNhNubah}(h]h ]h"]h$]h&]uh1jehjAcubh0 is preferred if provided. Returns 1 on a match.}(hjAchhhNhNubeh}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKNhj>cubah}(h]h ]h"]h$]h&]uh1jhj"cubeh}(h]h ]h"]h$]h&]uh1jhj=chKPhjbubj)}(h``map`` Create or update a mapping between a virtual irq number and a hw irq number. This is called only once for a given mapping. h](j)}(h``map``h]j)}(hjch]hmap}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jhjcubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKRhjcubj)}(hhh]jo)}(hzCreate or update a mapping between a virtual irq number and a hw irq number. This is called only once for a given mapping.h]hzCreate or update a mapping between a virtual irq number and a hw irq number. This is called only once for a given mapping.}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKQhjcubah}(h]h ]h"]h$]h&]uh1jhjcubeh}(h]h ]h"]h$]h&]uh1jhjchKRhjbubj)}(h$``unmap`` Dispose of such a mapping h](j)}(h ``unmap``h]j)}(hjch]hunmap}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jhjcubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKShjcubj)}(hhh]jo)}(hDispose of such a mappingh]hDispose of such a mapping}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjchKShjcubah}(h]h ]h"]h$]h&]uh1jhjcubeh}(h]h ]h"]h$]h&]uh1jhjchKShjbubj)}(hu``xlate`` Given a device tree node and interrupt specifier, decode the hardware irq number and linux irq type value. h](j)}(h ``xlate``h]j)}(hjch]hxlate}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jhjcubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKUhjcubj)}(hhh]jo)}(hjGiven a device tree node and interrupt specifier, decode the hardware irq number and linux irq type value.h]hjGiven a device tree node and interrupt specifier, decode the hardware irq number and linux irq type value.}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKThjdubah}(h]h ]h"]h$]h&]uh1jhjcubeh}(h]h ]h"]h$]h&]uh1jhjdhKUhjbubj)}(hB``alloc`` Allocate **nr_irqs** interrupts starting from **virq**. h](j)}(h ``alloc``h]j)}(hj3dh]halloc}(hj5dhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1dubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKVhj-dubj)}(hhh]jo)}(h7Allocate **nr_irqs** interrupts starting from **virq**.h](h Allocate }(hjLdhhhNhNubjf)}(h **nr_irqs**h]hnr_irqs}(hjTdhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjLdubh interrupts starting from }(hjLdhhhNhNubjf)}(h**virq**h]hvirq}(hjfdhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjLdubh.}(hjLdhhhNhNubeh}(h]h ]h"]h$]h&]uh1jnhjHdhKVhjIdubah}(h]h ]h"]h$]h&]uh1jhj-dubeh}(h]h ]h"]h$]h&]uh1jhjHdhKVhjbubj)}(h=``free`` Free **nr_irqs** interrupts starting from **virq**. h](j)}(h``free``h]j)}(hjdh]hfree}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKWhjdubj)}(hhh]jo)}(h3Free **nr_irqs** interrupts starting from **virq**.h](hFree }(hjdhhhNhNubjf)}(h **nr_irqs**h]hnr_irqs}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjdubh interrupts starting from }(hjdhhhNhNubjf)}(h**virq**h]hvirq}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjdubh.}(hjdhhhNhNubeh}(h]h ]h"]h$]h&]uh1jnhjdhKWhjdubah}(h]h ]h"]h$]h&]uh1jhjdubeh}(h]h ]h"]h$]h&]uh1jhjdhKWhjbubj)}(h``activate`` Activate one interrupt in HW (**irqd**). If **reserve** is set, only reserve the vector. If unset, assign the vector (called from request_irq()). h](j)}(h ``activate``h]j)}(hjdh]hactivate}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKZhjdubj)}(hhh]jo)}(hActivate one interrupt in HW (**irqd**). If **reserve** is set, only reserve the vector. If unset, assign the vector (called from request_irq()).h](hActivate one interrupt in HW (}(hjehhhNhNubjf)}(h**irqd**h]hirqd}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jehjeubh). If }(hjehhhNhNubjf)}(h **reserve**h]hreserve}(hj ehhhNhNubah}(h]h ]h"]h$]h&]uh1jehjeubhZ is set, only reserve the vector. If unset, assign the vector (called from request_irq()).}(hjehhhNhNubeh}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKXhjeubah}(h]h ]h"]h$]h&]uh1jhjdubeh}(h]h ]h"]h$]h&]uh1jhjehKZhjbubj)}(h0``deactivate`` Disarm one interrupt (**irqd**). h](j)}(h``deactivate``h]j)}(hjKeh]h deactivate}(hjMehhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIeubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhK[hjEeubj)}(hhh]jo)}(h Disarm one interrupt (**irqd**).h](hDisarm one interrupt (}(hjdehhhNhNubjf)}(h**irqd**h]hirqd}(hjlehhhNhNubah}(h]h ]h"]h$]h&]uh1jehjdeubh).}(hjdehhhNhNubeh}(h]h ]h"]h$]h&]uh1jnhj`ehK[hjaeubah}(h]h ]h"]h$]h&]uh1jhjEeubeh}(h]h ]h"]h$]h&]uh1jhj`ehK[hjbubj)}(h``translate`` Given **fwspec**, decode the hardware irq number (**out_hwirq**) and linux irq type value (**out_type**). This is a generalised **xlate** (over struct irq_fwspec) and is preferred if provided. h](j)}(h ``translate``h]j)}(hjeh]h translate}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jhjeubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhK^hjeubj)}(hhh]jo)}(hGiven **fwspec**, decode the hardware irq number (**out_hwirq**) and linux irq type value (**out_type**). This is a generalised **xlate** (over struct irq_fwspec) and is preferred if provided.h](hGiven }(hjehhhNhNubjf)}(h **fwspec**h]hfwspec}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jehjeubh", decode the hardware irq number (}(hjehhhNhNubjf)}(h **out_hwirq**h]h out_hwirq}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jehjeubh) and linux irq type value (}(hjehhhNhNubjf)}(h **out_type**h]hout_type}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jehjeubh). This is a generalised }(hjehhhNhNubjf)}(h **xlate**h]hxlate}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jehjeubh7 (over struct irq_fwspec) and is preferred if provided.}(hjehhhNhNubeh}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhK\hjeubah}(h]h ]h"]h$]h&]uh1jhjeubeh}(h]h ]h"]h$]h&]uh1jhjehK^hjbubj)}(hM``debug_show`` For domains to show specific data for an interrupt in debugfs.h](j)}(h``debug_show``h]j)}(hjfh]h debug_show}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhK^hjfubj)}(hhh]jo)}(h>For domains to show specific data for an interrupt in debugfs.h]h>For domains to show specific data for an interrupt in debugfs.}(hj1fhhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhK_hj.fubah}(h]h ]h"]h$]h&]uh1jhjfubeh}(h]h ]h"]h$]h&]uh1jhj-fhK^hjbubeh}(h]h ]h"]h$]h&]uh1j{hjbubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj+3hhhNhNubjo)}(h**Description**h]jf)}(hj[fh]h Description}(hj]fhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjYfubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKbhj+3hhubjo)}(hXFunctions below are provided by the driver and called whenever a new mapping is created or an old mapping is disposed. The driver can then proceed to whatever internal data structures management is required. It also needs to setup the irq_desc when returning from map().h]hXFunctions below are provided by the driver and called whenever a new mapping is created or an old mapping is disposed. The driver can then proceed to whatever internal data structures management is required. It also needs to setup the irq_desc when returning from map().}(hjqfhhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhK`hj+3hhubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_domain (C struct) c.irq_domainhNtauh1j,hj+3hhhNhNubj>)}(hhh](jC)}(h irq_domainh]jI)}(hstruct irq_domainh](j)}(hjh]hstruct}(hjfhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjfhhh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKhubja)}(h h]h }(hjfhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjfhhhjfhKhubjr)}(h irq_domainh]jx)}(hjfh]h irq_domain}(hjfhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjfubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjfhhhjfhKhubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjfhhhjfhKhubah}(h]jfah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjfhKhhjfhhubj5)}(hhh]jo)}(h,Hardware interrupt number translation objecth]h,Hardware interrupt number translation object}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKhjfhhubah}(h]h ]h"]h$]h&]uh1j4hjfhhhjfhKhubeh}(h]h ](jK structeh"]h$]h&]jUjK jVjfjWjfjXjYjZuh1j=hhhj+3hNhNubj\)}(hX **Definition**:: struct irq_domain { struct list_head link; const char *name; const struct irq_domain_ops *ops; void *host_data; unsigned int flags; unsigned int mapcount; struct mutex mutex; struct irq_domain *root; struct fwnode_handle *fwnode; enum irq_domain_bus_token bus_token; struct irq_domain_chip_generic *gc; struct device *dev; struct device *pm_dev; #ifdef CONFIG_IRQ_DOMAIN_HIERARCHY; struct irq_domain *parent; #endif; #ifdef CONFIG_GENERIC_MSI_IRQ; const struct msi_parent_ops *msi_parent_ops; #endif; void (*exit)(struct irq_domain *d); irq_hw_number_t hwirq_max; unsigned int revmap_size; struct radix_tree_root revmap_tree; struct irq_data __rcu *revmap[] ; }; **Members** ``link`` Element in global irq_domain list. ``name`` Name of interrupt domain ``ops`` Pointer to irq_domain methods ``host_data`` Private data pointer for use by owner. Not touched by irq_domain core code. ``flags`` Per irq_domain flags ``mapcount`` The number of mapped interrupts ``mutex`` Domain lock, hierarchical domains use root domain's lock ``root`` Pointer to root domain, or containing structure if non-hierarchical ``fwnode`` Pointer to firmware node associated with the irq_domain. Pretty easy to swap it for the of_node via the irq_domain_get_of_node accessor ``bus_token`` **fwnode**'s device_node might be used for several irq domains. But in connection with **bus_token**, the pair shall be unique in a system. ``gc`` Pointer to a list of generic chips. There is a helper function for setting up one or more generic chips for interrupt controllers drivers using the generic chip library which uses this pointer. ``dev`` Pointer to the device which instantiated the irqdomain With per device irq domains this is not necessarily the same as **pm_dev**. ``pm_dev`` Pointer to a device that can be utilized for power management purposes related to the irq domain. ``parent`` Pointer to parent irq_domain to support hierarchy irq_domains ``msi_parent_ops`` Pointer to MSI parent domain methods for per device domain init ``exit`` Function called when the domain is destroyed ``hwirq_max`` Top limit for the HW irq number. Especially to avoid conflicts/failures with reserved HW irqs. Can be ~0. ``revmap_size`` Size of the linear map table **revmap** ``revmap_tree`` Radix map tree for hwirqs that don't fit in the linear map ``revmap`` Linear table of irq_data pointersh](jo)}(h**Definition**::h](jf)}(h**Definition**h]h Definition}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjfubh:}(hjfhhhNhNubeh}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKhjfubj )}(hXstruct irq_domain { struct list_head link; const char *name; const struct irq_domain_ops *ops; void *host_data; unsigned int flags; unsigned int mapcount; struct mutex mutex; struct irq_domain *root; struct fwnode_handle *fwnode; enum irq_domain_bus_token bus_token; struct irq_domain_chip_generic *gc; struct device *dev; struct device *pm_dev; #ifdef CONFIG_IRQ_DOMAIN_HIERARCHY; struct irq_domain *parent; #endif; #ifdef CONFIG_GENERIC_MSI_IRQ; const struct msi_parent_ops *msi_parent_ops; #endif; void (*exit)(struct irq_domain *d); irq_hw_number_t hwirq_max; unsigned int revmap_size; struct radix_tree_root revmap_tree; struct irq_data __rcu *revmap[] ; };h]hXstruct irq_domain { struct list_head link; const char *name; const struct irq_domain_ops *ops; void *host_data; unsigned int flags; unsigned int mapcount; struct mutex mutex; struct irq_domain *root; struct fwnode_handle *fwnode; enum irq_domain_bus_token bus_token; struct irq_domain_chip_generic *gc; struct device *dev; struct device *pm_dev; #ifdef CONFIG_IRQ_DOMAIN_HIERARCHY; struct irq_domain *parent; #endif; #ifdef CONFIG_GENERIC_MSI_IRQ; const struct msi_parent_ops *msi_parent_ops; #endif; void (*exit)(struct irq_domain *d); irq_hw_number_t hwirq_max; unsigned int revmap_size; struct radix_tree_root revmap_tree; struct irq_data __rcu *revmap[] ; };}hjgsbah}(h]h ]h"]h$]h&]hhuh1j h^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKhjfubjo)}(h **Members**h]jf)}(hj)gh]hMembers}(hj+ghhhNhNubah}(h]h ]h"]h$]h&]uh1jehj'gubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKhjfubj|)}(hhh](j)}(h,``link`` Element in global irq_domain list. h](j)}(h``link``h]j)}(hjHgh]hlink}(hjJghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFgubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKhjBgubj)}(hhh]jo)}(h"Element in global irq_domain list.h]h"Element in global irq_domain list.}(hjaghhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj]ghKhj^gubah}(h]h ]h"]h$]h&]uh1jhjBgubeh}(h]h ]h"]h$]h&]uh1jhj]ghKhj?gubj)}(h"``name`` Name of interrupt domain h](j)}(h``name``h]j)}(hjgh]hname}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKhj{gubj)}(hhh]jo)}(hName of interrupt domainh]hName of interrupt domain}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjghKhjgubah}(h]h ]h"]h$]h&]uh1jhj{gubeh}(h]h ]h"]h$]h&]uh1jhjghKhj?gubj)}(h&``ops`` Pointer to irq_domain methods h](j)}(h``ops``h]j)}(hjgh]hops}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKhjgubj)}(hhh]jo)}(hPointer to irq_domain methodsh]hPointer to irq_domain methods}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjghKhjgubah}(h]h ]h"]h$]h&]uh1jhjgubeh}(h]h ]h"]h$]h&]uh1jhjghKhj?gubj)}(h[``host_data`` Private data pointer for use by owner. Not touched by irq_domain core code. h](j)}(h ``host_data``h]j)}(hjgh]h host_data}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKhjgubj)}(hhh]jo)}(hLPrivate data pointer for use by owner. Not touched by irq_domain core code.h]hLPrivate data pointer for use by owner. Not touched by irq_domain core code.}(hj hhhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKhj hubah}(h]h ]h"]h$]h&]uh1jhjgubeh}(h]h ]h"]h$]h&]uh1jhjhhKhj?gubj)}(h``flags`` Per irq_domain flags h](j)}(h ``flags``h]j)}(hj-hh]hflags}(hj/hhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+hubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKhj'hubj)}(hhh]jo)}(hPer irq_domain flagsh]hPer irq_domain flags}(hjFhhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjBhhKhjChubah}(h]h ]h"]h$]h&]uh1jhj'hubeh}(h]h ]h"]h$]h&]uh1jhjBhhKhj?gubj)}(h-``mapcount`` The number of mapped interrupts h](j)}(h ``mapcount``h]j)}(hjfhh]hmapcount}(hjhhhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdhubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKhj`hubj)}(hhh]jo)}(hThe number of mapped interruptsh]hThe number of mapped interrupts}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj{hhKhj|hubah}(h]h ]h"]h$]h&]uh1jhj`hubeh}(h]h ]h"]h$]h&]uh1jhj{hhKhj?gubj)}(hC``mutex`` Domain lock, hierarchical domains use root domain's lock h](j)}(h ``mutex``h]j)}(hjhh]hmutex}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKhjhubj)}(hhh]jo)}(h8Domain lock, hierarchical domains use root domain's lockh]h:Domain lock, hierarchical domains use root domain’s lock}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhhKhjhubah}(h]h ]h"]h$]h&]uh1jhjhubeh}(h]h ]h"]h$]h&]uh1jhjhhKhj?gubj)}(hM``root`` Pointer to root domain, or containing structure if non-hierarchical h](j)}(h``root``h]j)}(hjhh]hroot}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKhjhubj)}(hhh]jo)}(hCPointer to root domain, or containing structure if non-hierarchicalh]hCPointer to root domain, or containing structure if non-hierarchical}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhhKhjhubah}(h]h ]h"]h$]h&]uh1jhjhubeh}(h]h ]h"]h$]h&]uh1jhjhhKhj?gubj)}(h``fwnode`` Pointer to firmware node associated with the irq_domain. Pretty easy to swap it for the of_node via the irq_domain_get_of_node accessor h](j)}(h ``fwnode``h]j)}(hjih]hfwnode}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKhj iubj)}(hhh]jo)}(hPointer to firmware node associated with the irq_domain. Pretty easy to swap it for the of_node via the irq_domain_get_of_node accessorh]hPointer to firmware node associated with the irq_domain. Pretty easy to swap it for the of_node via the irq_domain_get_of_node accessor}(hj*ihhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKhj'iubah}(h]h ]h"]h$]h&]uh1jhj iubeh}(h]h ]h"]h$]h&]uh1jhj&ihKhj?gubj)}(h``bus_token`` **fwnode**'s device_node might be used for several irq domains. But in connection with **bus_token**, the pair shall be unique in a system. h](j)}(h ``bus_token``h]j)}(hjKih]h bus_token}(hjMihhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIiubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKhjEiubj)}(hhh]jo)}(h**fwnode**'s device_node might be used for several irq domains. But in connection with **bus_token**, the pair shall be unique in a system.h](jf)}(h **fwnode**h]hfwnode}(hjhihhhNhNubah}(h]h ]h"]h$]h&]uh1jehjdiubhO’s device_node might be used for several irq domains. But in connection with }(hjdihhhNhNubjf)}(h **bus_token**h]h bus_token}(hjzihhhNhNubah}(h]h ]h"]h$]h&]uh1jehjdiubh', the pair shall be unique in a system.}(hjdihhhNhNubeh}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKhjaiubah}(h]h ]h"]h$]h&]uh1jhjEiubeh}(h]h ]h"]h$]h&]uh1jhj`ihKhj?gubj)}(h``gc`` Pointer to a list of generic chips. There is a helper function for setting up one or more generic chips for interrupt controllers drivers using the generic chip library which uses this pointer. h](j)}(h``gc``h]j)}(hjih]hgc}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKhjiubj)}(hhh]jo)}(hPointer to a list of generic chips. There is a helper function for setting up one or more generic chips for interrupt controllers drivers using the generic chip library which uses this pointer.h]hPointer to a list of generic chips. There is a helper function for setting up one or more generic chips for interrupt controllers drivers using the generic chip library which uses this pointer.}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKhjiubah}(h]h ]h"]h$]h&]uh1jhjiubeh}(h]h ]h"]h$]h&]uh1jhjihKhj?gubj)}(h``dev`` Pointer to the device which instantiated the irqdomain With per device irq domains this is not necessarily the same as **pm_dev**. h](j)}(h``dev``h]j)}(hjih]hdev}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKhjiubj)}(hhh]jo)}(hPointer to the device which instantiated the irqdomain With per device irq domains this is not necessarily the same as **pm_dev**.h](hwPointer to the device which instantiated the irqdomain With per device irq domains this is not necessarily the same as }(hjihhhNhNubjf)}(h **pm_dev**h]hpm_dev}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjiubh.}(hjihhhNhNubeh}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKhjiubah}(h]h ]h"]h$]h&]uh1jhjiubeh}(h]h ]h"]h$]h&]uh1jhjihKhj?gubj)}(hm``pm_dev`` Pointer to a device that can be utilized for power management purposes related to the irq domain. h](j)}(h ``pm_dev``h]j)}(hj+jh]hpm_dev}(hj-jhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)jubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKhj%jubj)}(hhh]jo)}(haPointer to a device that can be utilized for power management purposes related to the irq domain.h]haPointer to a device that can be utilized for power management purposes related to the irq domain.}(hjDjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKhjAjubah}(h]h ]h"]h$]h&]uh1jhj%jubeh}(h]h ]h"]h$]h&]uh1jhj@jhKhj?gubj)}(hI``parent`` Pointer to parent irq_domain to support hierarchy irq_domains h](j)}(h ``parent``h]j)}(hjejh]hparent}(hjgjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjcjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKhj_jubj)}(hhh]jo)}(h=Pointer to parent irq_domain to support hierarchy irq_domainsh]h=Pointer to parent irq_domain to support hierarchy irq_domains}(hj~jhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjzjhKhj{jubah}(h]h ]h"]h$]h&]uh1jhj_jubeh}(h]h ]h"]h$]h&]uh1jhjzjhKhj?gubj)}(hS``msi_parent_ops`` Pointer to MSI parent domain methods for per device domain init h](j)}(h``msi_parent_ops``h]j)}(hjjh]hmsi_parent_ops}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKhjjubj)}(hhh]jo)}(h?Pointer to MSI parent domain methods for per device domain inith]h?Pointer to MSI parent domain methods for per device domain init}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjjhKhjjubah}(h]h ]h"]h$]h&]uh1jhjjubeh}(h]h ]h"]h$]h&]uh1jhjjhKhj?gubj)}(h6``exit`` Function called when the domain is destroyed h](j)}(h``exit``h]j)}(hjjh]hexit}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKhjjubj)}(hhh]jo)}(h,Function called when the domain is destroyedh]h,Function called when the domain is destroyed}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjjhKhjjubah}(h]h ]h"]h$]h&]uh1jhjjubeh}(h]h ]h"]h$]h&]uh1jhjjhKhj?gubj)}(hx``hwirq_max`` Top limit for the HW irq number. Especially to avoid conflicts/failures with reserved HW irqs. Can be ~0. h](j)}(h ``hwirq_max``h]j)}(hjkh]h hwirq_max}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjkubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKhj kubj)}(hhh]jo)}(hiTop limit for the HW irq number. Especially to avoid conflicts/failures with reserved HW irqs. Can be ~0.h]hiTop limit for the HW irq number. Especially to avoid conflicts/failures with reserved HW irqs. Can be ~0.}(hj)khhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKhj&kubah}(h]h ]h"]h$]h&]uh1jhj kubeh}(h]h ]h"]h$]h&]uh1jhj%khKhj?gubj)}(h8``revmap_size`` Size of the linear map table **revmap** h](j)}(h``revmap_size``h]j)}(hjJkh]h revmap_size}(hjLkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHkubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKhjDkubj)}(hhh]jo)}(h'Size of the linear map table **revmap**h](hSize of the linear map table }(hjckhhhNhNubjf)}(h **revmap**h]hrevmap}(hjkkhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjckubeh}(h]h ]h"]h$]h&]uh1jnhj_khKhj`kubah}(h]h ]h"]h$]h&]uh1jhjDkubeh}(h]h ]h"]h$]h&]uh1jhj_khKhj?gubj)}(hK``revmap_tree`` Radix map tree for hwirqs that don't fit in the linear map h](j)}(h``revmap_tree``h]j)}(hjkh]h revmap_tree}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjkubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKhjkubj)}(hhh]jo)}(h:Radix map tree for hwirqs that don't fit in the linear maph]h)}(hhh](jC)}(hirq_domain_infoh]jI)}(hstruct irq_domain_infoh](j)}(hjh]hstruct}(hjKlhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGlhhh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhKubja)}(h h]h }(hjYlhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjGlhhhjXlhKubjr)}(hirq_domain_infoh]jx)}(hjElh]hirq_domain_info}(hjklhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjglubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjGlhhhjXlhKubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjClhhhjXlhKubah}(h]j>lah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjXlhKhj@lhhubj5)}(hhh]jo)}(hDomain information structureh]hDomain information structure}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhMhjlhhubah}(h]h ]h"]h$]h&]uh1j4hj@lhhhjXlhKubeh}(h]h ](jK structeh"]h$]h&]jUjK jVjljWjljXjYjZuh1j=hhhj+3hNhNubj\)}(hX**Definition**:: struct irq_domain_info { struct fwnode_handle *fwnode; unsigned int domain_flags; unsigned int size; irq_hw_number_t hwirq_max; int direct_max; unsigned int hwirq_base; unsigned int virq_base; enum irq_domain_bus_token bus_token; const char *name_suffix; const struct irq_domain_ops *ops; void *host_data; #ifdef CONFIG_IRQ_DOMAIN_HIERARCHY; struct irq_domain *parent; #endif; struct irq_domain_chip_generic_info *dgc_info; int (*init)(struct irq_domain *d); void (*exit)(struct irq_domain *d); }; **Members** ``fwnode`` firmware node for the interrupt controller ``domain_flags`` Additional flags to add to the domain flags ``size`` Size of linear map; 0 for radix mapping only ``hwirq_max`` Maximum number of interrupts supported by controller ``direct_max`` Maximum value of direct maps; Use ~0 for no limit; 0 for no direct mapping ``hwirq_base`` The first hardware interrupt number (legacy domains only) ``virq_base`` The first Linux interrupt number for legacy domains to immediately associate the interrupts after domain creation ``bus_token`` Domain bus token ``name_suffix`` Optional name suffix to avoid collisions when multiple domains are added using same fwnode ``ops`` Domain operation callbacks ``host_data`` Controller private data pointer ``parent`` Pointer to the parent irq domain used in a hierarchy domain ``dgc_info`` Geneneric chip information structure pointer used to create generic chips for the domain if not NULL. ``init`` Function called when the domain is created. Allow to do some additional domain initialisation. ``exit`` Function called when the domain is destroyed. Allow to do some additional 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&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhM#hjlubj )}(hXstruct irq_domain_info { struct fwnode_handle *fwnode; unsigned int domain_flags; unsigned int size; irq_hw_number_t hwirq_max; int direct_max; unsigned int hwirq_base; unsigned int virq_base; enum irq_domain_bus_token bus_token; const char *name_suffix; const struct irq_domain_ops *ops; void *host_data; #ifdef CONFIG_IRQ_DOMAIN_HIERARCHY; struct irq_domain *parent; #endif; struct irq_domain_chip_generic_info *dgc_info; int (*init)(struct irq_domain *d); void (*exit)(struct irq_domain *d); };h]hXstruct irq_domain_info { struct fwnode_handle *fwnode; unsigned int domain_flags; unsigned int size; irq_hw_number_t hwirq_max; int direct_max; unsigned int hwirq_base; unsigned int virq_base; enum irq_domain_bus_token bus_token; const char *name_suffix; const struct irq_domain_ops *ops; void *host_data; #ifdef CONFIG_IRQ_DOMAIN_HIERARCHY; struct irq_domain *parent; #endif; struct irq_domain_chip_generic_info *dgc_info; int (*init)(struct irq_domain *d); void (*exit)(struct irq_domain *d); };}hjlsbah}(h]h ]h"]h$]h&]hhuh1j h^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhM%hjlubjo)}(h **Members**h]jf)}(hjlh]hMembers}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjlubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhM9hjlubj|)}(hhh](j)}(h6``fwnode`` firmware node for the interrupt controller h](j)}(h ``fwnode``h]j)}(hjlh]hfwnode}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjlubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhM!hjlubj)}(hhh]jo)}(h*firmware node for the interrupt controllerh]h*firmware node for the interrupt controller}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjmhM!hjmubah}(h]h ]h"]h$]h&]uh1jhjlubeh}(h]h ]h"]h$]h&]uh1jhjmhM!hjlubj)}(h=``domain_flags`` Additional flags to add to the domain flags h](j)}(h``domain_flags``h]j)}(hj3mh]h domain_flags}(hj5mhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1mubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhM"hj-mubj)}(hhh]jo)}(h+Additional flags to add to the domain flagsh]h+Additional flags to add to the domain flags}(hjLmhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjHmhM"hjImubah}(h]h ]h"]h$]h&]uh1jhj-mubeh}(h]h ]h"]h$]h&]uh1jhjHmhM"hjlubj)}(h6``size`` Size of linear map; 0 for radix mapping only h](j)}(h``size``h]j)}(hjlmh]hsize}(hjnmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjmubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhM#hjfmubj)}(hhh]jo)}(h,Size of linear map; 0 for radix mapping onlyh]h,Size of linear map; 0 for radix mapping only}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjmhM#hjmubah}(h]h ]h"]h$]h&]uh1jhjfmubeh}(h]h ]h"]h$]h&]uh1jhjmhM#hjlubj)}(hC``hwirq_max`` Maximum number of interrupts supported by controller h](j)}(h ``hwirq_max``h]j)}(hjmh]h hwirq_max}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhM$hjmubj)}(hhh]jo)}(h4Maximum number of interrupts supported by controllerh]h4Maximum number of interrupts supported by controller}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjmhM$hjmubah}(h]h ]h"]h$]h&]uh1jhjmubeh}(h]h ]h"]h$]h&]uh1jhjmhM$hjlubj)}(hZ``direct_max`` Maximum value of direct maps; Use ~0 for no limit; 0 for no direct mapping h](j)}(h``direct_max``h]j)}(hjmh]h direct_max}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhM&hjmubj)}(hhh]jo)}(hJMaximum value of direct maps; Use ~0 for no limit; 0 for no direct mappingh]hJMaximum value of direct maps; Use ~0 for no limit; 0 for no direct mapping}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhM%hjmubah}(h]h ]h"]h$]h&]uh1jhjmubeh}(h]h ]h"]h$]h&]uh1jhjmhM&hjlubj)}(hI``hwirq_base`` The first hardware interrupt number (legacy domains only) h](j)}(h``hwirq_base``h]j)}(hjnh]h hwirq_base}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhM'hjnubj)}(hhh]jo)}(h9The first hardware interrupt number (legacy domains only)h]h9The first hardware interrupt number (legacy domains only)}(hj1nhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj-nhM'hj.nubah}(h]h ]h"]h$]h&]uh1jhjnubeh}(h]h ]h"]h$]h&]uh1jhj-nhM'hjlubj)}(h``virq_base`` The first Linux interrupt number for legacy domains to immediately associate the interrupts after domain creation h](j)}(h ``virq_base``h]j)}(hjQnh]h virq_base}(hjSnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOnubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhM)hjKnubj)}(hhh]jo)}(hqThe first Linux interrupt number for legacy domains to immediately associate the interrupts after domain creationh]hqThe first Linux interrupt number for legacy domains to immediately associate the interrupts after domain creation}(hjjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhM(hjgnubah}(h]h ]h"]h$]h&]uh1jhjKnubeh}(h]h ]h"]h$]h&]uh1jhjfnhM)hjlubj)}(h``bus_token`` Domain bus token h](j)}(h ``bus_token``h]j)}(hjnh]h bus_token}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhM*hjnubj)}(hhh]jo)}(hDomain bus tokenh]hDomain bus token}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjnhM*hjnubah}(h]h ]h"]h$]h&]uh1jhjnubeh}(h]h ]h"]h$]h&]uh1jhjnhM*hjlubj)}(hk``name_suffix`` Optional name suffix to avoid collisions when multiple domains are added using same fwnode h](j)}(h``name_suffix``h]j)}(hjnh]h name_suffix}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhM,hjnubj)}(hhh]jo)}(hZOptional name suffix to avoid collisions when multiple domains are added using same fwnodeh]hZOptional name suffix to avoid collisions when multiple domains are added using same fwnode}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhM+hjnubah}(h]h ]h"]h$]h&]uh1jhjnubeh}(h]h ]h"]h$]h&]uh1jhjnhM,hjlubj)}(h#``ops`` Domain operation callbacks h](j)}(h``ops``h]j)}(hjnh]hops}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhM-hjnubj)}(hhh]jo)}(hDomain operation callbacksh]hDomain operation callbacks}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjohM-hjoubah}(h]h ]h"]h$]h&]uh1jhjnubeh}(h]h ]h"]h$]h&]uh1jhjohM-hjlubj)}(h.``host_data`` Controller private data pointer h](j)}(h ``host_data``h]j)}(hj7oh]h host_data}(hj9ohhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5oubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhM.hj1oubj)}(hhh]jo)}(hController private data pointerh]hController private data pointer}(hjPohhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjLohM.hjMoubah}(h]h ]h"]h$]h&]uh1jhj1oubeh}(h]h ]h"]h$]h&]uh1jhjLohM.hjlubj)}(hG``parent`` Pointer to the parent irq domain used in a hierarchy domain h](j)}(h ``parent``h]j)}(hjpoh]hparent}(hjrohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnoubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhMDhjjoubj)}(hhh]jo)}(h;Pointer to the parent irq domain used in a hierarchy domainh]h;Pointer to the parent irq domain used in a hierarchy domain}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjohMDhjoubah}(h]h ]h"]h$]h&]uh1jhjjoubeh}(h]h ]h"]h$]h&]uh1jhjohMDhjlubj)}(hs``dgc_info`` Geneneric chip information structure pointer used to create generic chips for the domain if not NULL. h](j)}(h ``dgc_info``h]j)}(hjoh]hdgc_info}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhM0hjoubj)}(hhh]jo)}(heGeneneric chip information structure pointer used to create generic chips for the domain if not NULL.h]heGeneneric chip information structure pointer used to create generic chips for the domain if not NULL.}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhM/hjoubah}(h]h ]h"]h$]h&]uh1jhjoubeh}(h]h ]h"]h$]h&]uh1jhjohM0hjlubj)}(hh``init`` Function called when the domain is created. Allow to do some additional domain initialisation. h](j)}(h``init``h]j)}(hjoh]hinit}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhM2hjoubj)}(hhh]jo)}(h^Function called when the domain is created. Allow to do some additional domain initialisation.h]h^Function called when the domain is created. Allow to do some additional domain initialisation.}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhM1hjoubah}(h]h ]h"]h$]h&]uh1jhjoubeh}(h]h ]h"]h$]h&]uh1jhjohM2hjlubj)}(he``exit`` Function called when the domain is destroyed. Allow to do some additional cleanup operation.h](j)}(h``exit``h]j)}(hjph]hexit}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jhjpubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhM3hjpubj)}(hhh]jo)}(h\Function called when the domain is destroyed. Allow to do some additional cleanup operation.h]h\Function called when the domain is destroyed. Allow to do some additional cleanup operation.}(hj6phhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj2phM3hj3pubah}(h]h ]h"]h$]h&]uh1jhjpubeh}(h]h ]h"]h$]h&]uh1jhj2ph^M3hjlubeh}(h]h ]h"]h$]h&]uh1j{hjlubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj+3hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9"irq_domain_add_linear (C function)c.irq_domain_add_linearhNtauh1j,hj+3hhhNhNubj>)}(hhh](jC)}(hstruct irq_domain * irq_domain_add_linear (struct device_node *of_node, unsigned int size, const struct irq_domain_ops *ops, void *host_data)h]jI)}(hstruct irq_domain *irq_domain_add_linear(struct device_node *of_node, unsigned int size, const struct irq_domain_ops *ops, void *host_data)h](j)}(hjh]hstruct}(hjvphhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjrphhh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhMubja)}(h h]h }(hjphhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjrphhhjphMubh)}(hhh]jx)}(h irq_domainh]h irq_domain}(hjphhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjpubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjpmodnameN classnameNjj)}j]j)}jirq_domain_add_linearsbc.irq_domain_add_linearasbuh1hhjrphhhjphMubja)}(h h]h }(hjphhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjrphhhjphMubj)}(hjh]h*}(hjphhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjrphhhjphMubjr)}(hirq_domain_add_linearh]jx)}(hjph]hirq_domain_add_linear}(hjphhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjpubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjrphhhjphMubj)}(hc(struct device_node *of_node, unsigned int size, const struct irq_domain_ops *ops, void *host_data)h](j)}(hstruct device_node *of_nodeh](j)}(hjh]hstruct}(hjphhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjpubja)}(h h]h }(hjphhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjpubh)}(hhh]jx)}(h device_nodeh]h device_node}(hjqhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj qubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjqmodnameN classnameNjj)}j]jpc.irq_domain_add_linearasbuh1hhjpubja)}(h h]h }(hj,qhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjpubj)}(hjh]h*}(hj:qhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjpubjx)}(hof_nodeh]hof_node}(hjGqhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjpubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjpubj)}(hunsigned int sizeh](jO)}(hunsignedh]hunsigned}(hj`qhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj\qubja)}(h h]h }(hjnqhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj\qubjO)}(hinth]hint}(hj|qhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj\qubja)}(h h]h }(hjqhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj\qubjx)}(hsizeh]hsize}(hjqhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj\qubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjpubj)}(h const struct irq_domain_ops *opsh](j)}(hjmh]hconst}(hjqhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjqubja)}(h h]h }(hjqhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjqubj)}(hjh]hstruct}(hjqhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjqubja)}(h h]h }(hjqhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjqubh)}(hhh]jx)}(hirq_domain_opsh]hirq_domain_ops}(hjqhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjqubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjqmodnameN classnameNjj)}j]jpc.irq_domain_add_linearasbuh1hhjqubja)}(h h]h }(hjrhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjqubj)}(hjh]h*}(hjrhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjqubjx)}(hopsh]hops}(hj#rhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjqubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjpubj)}(hvoid *host_datah](jO)}(hvoidh]hvoid}(hj)}(hhh](jC)}(hPunsigned int irq_find_mapping (struct irq_domain *domain, irq_hw_number_t hwirq)h]jI)}(hOunsigned int irq_find_mapping(struct irq_domain *domain, irq_hw_number_t hwirq)h](jO)}(hunsignedh]hunsigned}(hjshhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjshhh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhM!ubja)}(h h]h }(hjshhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjshhhjshM!ubjO)}(hinth]hint}(hjshhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjshhhjshM!ubja)}(h h]h }(hjthhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjshhhjshM!ubjr)}(hirq_find_mappingh]jx)}(hirq_find_mappingh]hirq_find_mapping}(hjthhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjtubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjshhhjshM!ubj)}(h2(struct irq_domain *domain, irq_hw_number_t hwirq)h](j)}(hstruct irq_domain *domainh](j)}(hjh]hstruct}(hj.thhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*tubja)}(h h]h }(hj;thhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj*tubh)}(hhh]jx)}(h irq_domainh]h irq_domain}(hjLthhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjItubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjNtmodnameN classnameNjj)}j]j)}jjtsbc.irq_find_mappingasbuh1hhj*tubja)}(h h]h }(hjlthhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj*tubj)}(hjh]h*}(hjzthhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*tubjx)}(hdomainh]hdomain}(hjthhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj*tubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj&tubj)}(hirq_hw_number_t hwirqh](h)}(hhh]jx)}(hirq_hw_number_th]hirq_hw_number_t}(hjthhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjtubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjtmodnameN classnameNjj)}j]jhtc.irq_find_mappingasbuh1hhjtubja)}(h h]h }(hjthhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjtubjx)}(hhwirqh]hhwirq}(hjthhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjtubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj&tubeh}(h]h ]h"]h$]h&]hhuh1jhjshhhjshM!ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjshhhjshM!ubah}(h]jsah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjshM!hjshhubj5)}(hhh]jo)}(h&Find a linux irq from a hw irq number.h]h&Find a linux irq from a hw irq number.}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhMhjthhubah}(h]h ]h"]h$]h&]uh1j4hjshhhjshM!ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjujWjujXjYjZuh1j=hhhj+3hNhNubj\)}(h**Parameters** ``struct irq_domain *domain`` domain owning this hardware interrupt ``irq_hw_number_t hwirq`` hardware irq number in that domain spaceh](jo)}(h**Parameters**h]jf)}(hjuh]h Parameters}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjuubah}(h]h ]h"]h$]h&]uh1jnh^/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:499: ./include/linux/irqdomain.hhM!hjuubj|)}(hhh](j)}(hD``struct irq_domain *domain`` domain owning this hardware interrupt h](j)}(h``struct irq_domain *domain``h]j)}(hj:uh]hstruct irq_domain *domain}(hj)}(hPublic Functions Providedh]hPublic Functions Provided}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1j=hjuhhhjMhMubjo)}(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.}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhMhjuhhubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9 synchronize_hardirq (C function)c.synchronize_hardirqhNtauh1j,hjuhhhNhNubj>)}(hhh](jC)}(h+bool synchronize_hardirq (unsigned int irq)h]jI)}(h*bool synchronize_hardirq(unsigned int irq)h](jO)}(hboolh]hbool}(hjuhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjuhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chKdubja)}(h h]h }(hjvhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjuhhhjvhKdubjr)}(hsynchronize_hardirqh]jx)}(hsynchronize_hardirqh]hsynchronize_hardirq}(hjvhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjvubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjuhhhjvhKdubj)}(h(unsigned int irq)h]j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hj1vhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj-vubja)}(h h]h }(hj?vhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj-vubjO)}(hinth]hint}(hjMvhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj-vubja)}(h h]h }(hj[vhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj-vubjx)}(hirqh]hirq}(hjivhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj-vubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj)vubah}(h]h ]h"]h$]h&]hhuh1jhjuhhhjvhKdubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjuhhhjvhKdubah}(h]juah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjvhKdhjuhhubj5)}(hhh]jo)}(h2wait for pending hard IRQ handlers (on other CPUs)h]h2wait for pending hard IRQ handlers (on other CPUs)}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chKOhjvhhubah}(h]h ]h"]h$]h&]uh1j4hjuhhhjvhKdubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjvjWjvjXjYjZuh1j=hhhjuhNhNubj\)}(hX6**Parameters** ``unsigned int irq`` interrupt number to wait for 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. **Return** false if a threaded handler is active. 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.h](jo)}(h**Parameters**h]jf)}(hjvh]h Parameters}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjvubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chKShjvubj|)}(hhh]j)}(hX``unsigned int irq`` interrupt number to wait for 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. h](j)}(h``unsigned int irq``h]j)}(hjvh]hunsigned int irq}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjvubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chKYhjvubj)}(hhh](jo)}(hinterrupt number to wait forh]hinterrupt number to wait for}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chKPhjvubjo)}(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.}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chKRhjvubjo)}(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.}(hj whhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chKXhjvubeh}(h]h ]h"]h$]h&]uh1jhjvubeh}(h]h ]h"]h$]h&]uh1jhjvhKYhjvubah}(h]h ]h"]h$]h&]uh1j{hjvubjo)}(h **Return**h]jf)}(hj.wh]hReturn}(hj0whhhNhNubah}(h]h ]h"]h$]h&]uh1jehj,wubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chK[hjvubjo)}(h&false if a threaded handler is active.h]h&false if a threaded handler is active.}(hjDwhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chK[hjvubh block_quote)}(hXThis 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.h](jo)}(h;This function may be called - with care - from IRQ context.h]h;This function may be called - with care - from IRQ context.}(hjYwhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chK]hjUwubjo)}(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.}(hjhwhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chK_hjUwubeh}(h]h ]h"]h$]h&]uh1jSwhjgwhK]hjvubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9synchronize_irq (C function)c.synchronize_irqhNtauh1j,hjuhhhNhNubj>)}(hhh](jC)}(h'void synchronize_irq (unsigned int irq)h]jI)}(h&void synchronize_irq(unsigned int irq)h](jO)}(hvoidh]hvoid}(hjwhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjwhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chKubja)}(h h]h }(hjwhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjwhhhjwhKubjr)}(hsynchronize_irqh]jx)}(hsynchronize_irqh]hsynchronize_irq}(hjwhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjwubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjwhhhjwhKubj)}(h(unsigned int irq)h]j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hjwhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjwubja)}(h h]h }(hjwhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjwubjO)}(hinth]hint}(hjwhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjwubja)}(h h]h }(hjxhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjwubjx)}(hirqh]hirq}(hjxhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjwubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjwubah}(h]h ]h"]h$]h&]hhuh1jhjwhhhjwhKubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjwhhhjwhKubah}(h]jwah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjwhKhjwhhubj5)}(hhh]jo)}(h-wait for pending IRQ handlers (on other CPUs)h]h-wait for pending IRQ handlers (on other CPUs)}(hj)}(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}(hjyhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjyhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chKubja)}(h h]h }(hj%yhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjyhhhj$yhKubjr)}(hirq_can_set_affinityh]jx)}(hirq_can_set_affinityh]hirq_can_set_affinity}(hj7yhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj3yubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjyhhhj$yhKubj)}(h(unsigned int irq)h]j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hjSyhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjOyubja)}(h h]h }(hjayhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjOyubjO)}(hinth]hint}(hjoyhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjOyubja)}(h h]h }(hj}yhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjOyubjx)}(hirqh]hirq}(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjOyubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjKyubah}(h]h ]h"]h$]h&]hhuh1jhjyhhhj$yhKubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjyhhhj$yhKubah}(h]j yah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhj$yhKhj yhhubj5)}(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}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chKhjyhhubah}(h]h ]h"]h$]h&]uh1j4hj yhhhj$yhKubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjyjWjyjXjYjZuh1j=hhhjuhNhNubj\)}(h9**Parameters** ``unsigned int irq`` Interrupt to checkh](jo)}(h**Parameters**h]jf)}(hjyh]h Parameters}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjyubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chKhjyubj|)}(hhh]j)}(h'``unsigned int irq`` Interrupt to checkh](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:507: ./kernel/irq/manage.chKhjyubj)}(hhh]jo)}(hInterrupt to checkh]hInterrupt to check}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chKhj zubah}(h]h ]h"]h$]h&]uh1jhjyubeh}(h]h ]h"]h$]h&]uh1jhj zhKhjyubah}(h]h ]h"]h$]h&]uh1j{hjyubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9%irq_can_set_affinity_usr (C function)c.irq_can_set_affinity_usrhNtauh1j,hjuhhhNhNubj>)}(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)}(hjuh]hbool}(hjPzhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjLzhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chKubja)}(h h]h }(hj^zhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjLzhhhj]zhKubjr)}(hirq_can_set_affinity_usrh]jx)}(hirq_can_set_affinity_usrh]hirq_can_set_affinity_usr}(hjpzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjlzubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjLzhhhj]zhKubj)}(h(unsigned int irq)h]j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hjzhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjzubja)}(h h]h }(hjzhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjzubjO)}(hinth]hint}(hjzhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjzubja)}(h h]h }(hjzhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjzubjx)}(hirqh]hirq}(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjzubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjzubah}(h]h ]h"]h$]h&]hhuh1jhjLzhhhj]zhKubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjHzhhhj]zhKubah}(h]jCzah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhj]zhKhjEzhhubj5)}(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}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chKhjzhhubah}(h]h ]h"]h$]h&]uh1j4hjEzhhhj]zhKubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj{jWj{jXjYjZuh1j=hhhjuhNhNubj\)}(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)}(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:507: ./kernel/irq/manage.chKhj {ubj|)}(hhh]j)}(h(``unsigned int irq`` Interrupt to check h](j)}(h``unsigned int irq``h]j)}(hj/{h]hunsigned int irq}(hj1{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-{ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chKhj){ubj)}(hhh]jo)}(hInterrupt to checkh]hInterrupt to check}(hjH{hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjD{hKhjE{ubah}(h]h ]h"]h$]h&]uh1jhj){ubeh}(h]h ]h"]h$]h&]uh1jhjD{hKhj&{ubah}(h]h ]h"]h$]h&]uh1j{hj {ubjo)}(h**Description**h]jf)}(hjj{h]h Description}(hjl{hhhNhNubah}(h]h ]h"]h$]h&]uh1jehjh{ubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chKhj {ubjo)}(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.}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chKhj {ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9$irq_set_thread_affinity (C function)c.irq_set_thread_affinityhNtauh1j,hjuhhhNhNubj>)}(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}(hj{hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj{hhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chKubja)}(h h]h }(hj{hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj{hhhj{hKubjr)}(hirq_set_thread_affinityh]jx)}(hirq_set_thread_affinityh]hirq_set_thread_affinity}(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj{ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhj{hhhj{hKubj)}(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}(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_thread_affinityasbuh1hhj{ubja)}(h h]h }(hj*|hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj{ubj)}(hjh]h*}(hj8|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj{ubjx)}(hdesch]hdesc}(hjE|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj{ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj{ubah}(h]h ]h"]h$]h&]hhuh1jhj{hhhj{hKubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj{hhhj{hKubah}(h]j{ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhj{hKhj{hhubj5)}(hhh]jo)}(h%Notify irq threads to adjust affinityh]h%Notify irq threads to adjust affinity}(hjo|hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chKhjl|hhubah}(h]h ]h"]h$]h&]uh1j4hj{hhhj{hKubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj|jWj|jXjYjZuh1j=hhhjuhNhNubj\)}(hX6**Parameters** ``struct irq_desc *desc`` irq descriptor which has affinity changed We 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)}(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:507: ./kernel/irq/manage.chKhj|ubj|)}(hhh]j)}(hX``struct irq_desc *desc`` irq descriptor which has affinity changed We 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](j)}(h``struct irq_desc *desc``h]j)}(hj|h]hstruct irq_desc *desc}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chKhj|ubj)}(hhh](jo)}(h)irq descriptor which has affinity changedh]h)irq descriptor which has affinity changed}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chKhj|ubjo)}(hWe 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]hWe 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.}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chKhj|ubeh}(h]h ]h"]h$]h&]uh1jhj|ubeh}(h]h ]h"]h$]h&]uh1jhj|hKhj|ubah}(h]h ]h"]h$]h&]uh1j{hj|ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9%irq_update_affinity_desc (C function)c.irq_update_affinity_deschNtauh1j,hjuhhhNhNubj>)}(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}hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj}hhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMubja)}(h h]h }(hj(}hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj}hhhj'}hMubjr)}(hirq_update_affinity_desch]jx)}(hirq_update_affinity_desch]hirq_update_affinity_desc}(hj:}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj6}ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhj}hhhj'}hMubj)}(h6(unsigned int irq, struct irq_affinity_desc *affinity)h](j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hjV}hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjR}ubja)}(h h]h }(hjd}hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjR}ubjO)}(hinth]hint}(hjr}hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjR}ubja)}(h h]h }(hj}hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjR}ubjx)}(hirqh]hirq}(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjR}ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjN}ubj)}(h"struct irq_affinity_desc *affinityh](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_affinity_desch]hirq_affinity_desc}(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj}ubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetj}modnameN classnameNjj)}j]j)}jj<}sbc.irq_update_affinity_descasbuh1hhj}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)}(haffinityh]haffinity}(hj~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj}ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjN}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)}(h+Update affinity management for an interrupth]h+Update affinity management for an interrupt}(hj*~hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhj'~hhubah}(h]h ]h"]h$]h&]uh1j4hj}hhhj'}hMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjB~jWjB~jXjYjZuh1j=hhhjuhNhNubj\)}(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)}(hjL~h]h Parameters}(hjN~hhhNhNubah}(h]h ]h"]h$]h&]uh1jehjJ~ubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhjF~ubj|)}(hhh](j)}(h4``unsigned int irq`` The interrupt number to update h](j)}(h``unsigned int irq``h]j)}(hjk~h]hunsigned int irq}(hjm~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhji~ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhje~ubj)}(hhh]jo)}(hThe interrupt number to updateh]hThe interrupt number to update}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj~hMhj~ubah}(h]h ]h"]h$]h&]uh1jhje~ubeh}(h]h ]h"]h$]h&]uh1jhj~hMhjb~ubj)}(hJ``struct irq_affinity_desc *affinity`` Pointer to the affinity descriptor h](j)}(h&``struct irq_affinity_desc *affinity``h]j)}(hj~h]h"struct irq_affinity_desc *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:507: ./kernel/irq/manage.chMhj~ubj)}(hhh]jo)}(h"Pointer to the affinity descriptorh]h"Pointer to the affinity descriptor}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj~hMhj~ubah}(h]h ]h"]h$]h&]uh1jhj~ubeh}(h]h ]h"]h$]h&]uh1jhj~hMhjb~ubeh}(h]h ]h"]h$]h&]uh1j{hjF~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:507: ./kernel/irq/manage.chMhjF~ubjo)}(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.}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhjF~ubjo)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhjF~ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_set_affinity (C function)c.irq_set_affinityhNtauh1j,hjuhhhNhNubj>)}(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}(hj3hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj/hhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMubja)}(h h]h }(hjBhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj/hhhjAhMubjr)}(hirq_set_affinityh]jx)}(hirq_set_affinityh]hirq_set_affinity}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjPubah}(h]h ](jjeh"]h$]h&]hhuh1jqhj/hhhjAhMubj)}(h1(unsigned int irq, const struct cpumask *cpumask)h](j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hjphhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjlubja)}(h h]h }(hj~hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjlubjO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjlubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjlubjx)}(hirqh]hirq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjlubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjhubj)}(hconst struct cpumask *cpumaskh](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}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjmodnameN classnameNjj)}j]j)}jjVsbc.irq_set_affinityasbuh1hhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hcpumaskh]hcpumask}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjhubeh}(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#Set the irq affinity of a given irqh]h#Set the irq affinity of a given irq}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhj\hhubah}(h]h ]h"]h$]h&]uh1j4hj(hhhjAhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjwjWjwjXjYjZuh1j=hhhjuhNhNubj\)}(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)}(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:507: ./kernel/irq/manage.chMhj{ubj|)}(hhh](j)}(h/``unsigned int irq`` Interrupt to set affinity 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:507: ./kernel/irq/manage.chMhjubj)}(hhh]jo)}(hInterrupt to set affinityh]hInterrupt to set affinity}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h*``const struct cpumask *cpumask`` cpumask h](j)}(h!``const struct cpumask *cpumask``h]j)}(hjـh]hconst struct cpumask *cpumask}(hjۀhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj׀ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhjӀubj)}(hhh]jo)}(hcpumaskh]hcpumask}(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:507: ./kernel/irq/manage.chMhj{ubjo)}(h/Fails if cpumask does not contain an online CPUh]h/Fails if cpumask does not contain an online CPU}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhj{ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_force_affinity (C function)c.irq_force_affinityhNtauh1j,hjuhhhNhNubj>)}(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}(hjYhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjUhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMubja)}(h h]h }(hjhhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjUhhhjghMubjr)}(hirq_force_affinityh]jx)}(hirq_force_affinityh]hirq_force_affinity}(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjvubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjUhhhjghMubj)}(h1(unsigned int irq, const struct cpumask *cpumask)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}(hj΁hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hconst struct cpumask *cpumaskh](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&]uh1jwhjubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetj"modnameN classnameNjj)}j]j)}jj|sbc.irq_force_affinityasbuh1hhjubja)}(h h]h }(hj@hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hcpumaskh]hcpumask}(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjUhhhjghMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjQhhhjghMubah}(h]jLah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjghMhjNhhubj5)}(hhh]jo)}(h%Force the irq affinity of a given irqh]h%Force the irq affinity of a given irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhjhhubah}(h]h ]h"]h$]h&]uh1j4hjNhhhjghMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjuhNhNubj\)}(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)}(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:507: ./kernel/irq/manage.chMhjubj|)}(hhh](j)}(h/``unsigned int irq`` Interrupt to set affinity 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:507: ./kernel/irq/manage.chMhjubj)}(hhh]jo)}(hInterrupt to set affinityh]hInterrupt to set affinity}(hj߂hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjۂhMhj܂ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjۂhMhjubj)}(h*``const struct cpumask *cpumask`` cpumask h](j)}(h!``const struct cpumask *cpumask``h]j)}(hjh]hconst struct cpumask *cpumask}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhjubj)}(hhh]jo)}(hcpumaskh]hcpumask}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubeh}(h]h ]h"]h$]h&]uh1j{hjubjo)}(h**Description**h]jf)}(hj:h]h Description}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj8ubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhjubjo)}(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.}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhjubjo)}(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.}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9&irq_set_affinity_notifier (C function)c.irq_set_affinity_notifierhNtauh1j,hjuhhhNhNubj>)}(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}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM,ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhM,ubjr)}(hirq_set_affinity_notifierh]jx)}(hirq_set_affinity_notifierh]hirq_set_affinity_notifier}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhM,ubj)}(h6(unsigned int irq, struct irq_affinity_notify *notify)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Ãubj)}(h"struct irq_affinity_notify *notifyh](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_affinity_notifyh]hirq_affinity_notify}(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj7ubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetj<modnameN classnameNjj)}j]j)}jjsbc.irq_set_affinity_notifierasbuh1hhjubja)}(h h]h }(hjZhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hnotifyh]hnotify}(hjuhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(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,control notification of IRQ affinity changesh]h,control notification of IRQ affinity changes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM"hjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhM,ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjuhNhNubj\)}(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. 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)}(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:507: ./kernel/irq/manage.chM&hjubj|)}(hhh](j)}(hH``unsigned int irq`` Interrupt for which to enable/disable notification h](j)}(h``unsigned int irq``h]j)}(hjh]hunsigned int irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjބubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM#hjڄubj)}(hhh]jo)}(h2Interrupt for which to enable/disable notificationh]h2Interrupt for which to enable/disable notification}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhM#hjubah}(h]h ]h"]h$]h&]uh1jhjڄubeh}(h]h ]h"]h$]h&]uh1jhjhM#hjׄubj)}(hXs``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. 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](j)}(h&``struct irq_affinity_notify *notify``h]j)}(hjh]h"struct irq_affinity_notify *notify}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM)hjubj)}(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 }(hj2hhhNhNubj)}(h``NULL``h]hNULL}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubhx to disable notification. Function pointers must be initialised; the other fields will be initialised by this function.}(hj2hhhNhNubeh}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM$hj/ubjTw)}(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]jo)}(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().}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM(hjSubah}(h]h ]h"]h$]h&]uh1jSwhjehM(hj/ubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj.hM)hjׄubeh}(h]h ]h"]h$]h&]uh1j{hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9"irq_set_vcpu_affinity (C function)c.irq_set_vcpu_affinityhNtauh1j,hjuhhhNhNubj>)}(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)}(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:507: ./kernel/irq/manage.chMhjubj|)}(hhh](j)}(h6``unsigned int irq`` interrupt number to set affinity h](j)}(h``unsigned int irq``h]j)}(hjh]hunsigned int irq}(hj†hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhjubj)}(hhh]jo)}(h interrupt number to set affinityh]h interrupt number to set affinity}(hjنhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjՆhMhjֆubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjՆhMhjubj)}(hXa``void *vcpu_info`` vCPU specific data or pointer to a percpu array of vCPU specific data for percpu_devid interrupts This 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](j)}(h``void *vcpu_info``h]j)}(hjh]hvoid *vcpu_info}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhjubj)}(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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhjubjTw)}(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]jo)}(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().}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhj!ubah}(h]h ]h"]h$]h&]uh1jSwhj3hMhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubeh}(h]h ]h"]h$]h&]uh1j{hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9disable_irq_nosync (C function)c.disable_irq_nosynchNtauh1j,hjuhhhNhNubj>)}(hhh](jC)}(h*void disable_irq_nosync (unsigned int irq)h]jI)}(h)void disable_irq_nosync(unsigned int irq)h](jO)}(hvoidh]hvoid}(hjlhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMubja)}(h h]h }(hj{hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhhjzhMubjr)}(hdisable_irq_nosynch]jx)}(hdisable_irq_nosynch]hdisable_irq_nosync}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhhjzhMubj)}(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}(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&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhhjzhMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjdhhhjzhMubah}(h]j_ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjzhMhjahhubj5)}(hhh]jo)}(hdisable an irq without waitingh]hdisable an irq without waiting}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhjhhubah}(h]h ]h"]h$]h&]uh1j4hjahhhjzhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj#jWj#jXjYjZuh1j=hhhjuhNhNubj\)}(hX7**Parameters** ``unsigned int irq`` Interrupt to disable 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)}(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:507: ./kernel/irq/manage.chMhj'ubj|)}(hhh]j)}(hX``unsigned int irq`` Interrupt to disable 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](j)}(h``unsigned int irq``h]j)}(hjLh]hunsigned int irq}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhjFubj)}(hhh](jo)}(hInterrupt to disableh]hInterrupt to disable}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhjbubjo)}(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.}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhjbubjo)}(h-This function may be called from IRQ context.h]h-This function may be called from IRQ context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhjbubeh}(h]h ]h"]h$]h&]uh1jhjFubeh}(h]h ]h"]h$]h&]uh1jhjahMhjCubah}(h]h ]h"]h$]h&]uh1j{hj'ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9disable_irq (C function) c.disable_irqhNtauh1j,hjuhhhNhNubj>)}(hhh](jC)}(h#void disable_irq (unsigned int irq)h]jI)}(h"void disable_irq(unsigned int irq)h](jO)}(hvoidh]hvoid}(hjĈhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMubja)}(h h]h }(hjӈhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhj҈hMubjr)}(h disable_irqh]jx)}(h disable_irqh]h disable_irq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhj҈hMubj)}(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}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(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&disable an irq and wait for completionh]h&disable an irq and wait for completion}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhj`hhubah}(h]h ]h"]h$]h&]uh1j4hjhhhj҈hMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj{jWj{jXjYjZuh1j=hhhjuhNhNubj\)}(hX**Parameters** ``unsigned int irq`` Interrupt to disable 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**.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:507: ./kernel/irq/manage.chMhjubj|)}(hhh]j)}(hX``unsigned int irq`` Interrupt to disable 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**.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:507: ./kernel/irq/manage.chMhjubj)}(hhh](jo)}(hInterrupt to disableh]hInterrupt to disable}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhjubjo)}(hXDisable 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.h]hXDisable 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.}(hj̉hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhjubjo)}(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 }(hjۉhhhNhNubjf)}(h**irq**h]hirq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjۉubh.}(hjۉhhhNhNubeh}(h]h ]h"]h$]h&]uh1jnhjhMhjubeh}(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[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9disable_hardirq (C function)c.disable_hardirqhNtauh1j,hjuhhhNhNubj>)}(hhh](jC)}(h'bool disable_hardirq (unsigned int irq)h]jI)}(h&bool disable_hardirq(unsigned int irq)h](jO)}(hjuh]hbool}(hj-hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj)hhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMubja)}(h h]h }(hj;hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj)hhhj:hMubjr)}(hdisable_hardirqh]jx)}(hdisable_hardirqh]hdisable_hardirq}(hjMhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjIubah}(h]h ](jjeh"]h$]h&]hhuh1jqhj)hhhj:hMubj)}(h(unsigned int irq)h]j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hjihhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjeubja)}(h h]h }(hjwhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjeubjO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjeubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjeubjx)}(hirqh]hirq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjeubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjaubah}(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)}(h0disables an irq and waits for hardirq completionh]h0disables an irq and waits for hardirq completion}(hjˊhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhjȊhhubah}(h]h ]h"]h$]h&]uh1j4hj"hhhj:hMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjuhNhNubj\)}(hX9**Parameters** ``unsigned int irq`` Interrupt to disable 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. **Return** false if a threaded handler is active. This function may be called - with care - from IRQ context.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:507: ./kernel/irq/manage.chMhjubj|)}(hhh]j)}(hX``unsigned int irq`` Interrupt to disable 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. h](j)}(h``unsigned int irq``h]j)}(hj h]hunsigned int irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhjubj)}(hhh](jo)}(hInterrupt to disableh]hInterrupt to disable}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhj"ubjo)}(hXDisable 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.h]hXDisable 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.}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhj"ubjo)}(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.}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhj"ubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj!hMhjubah}(h]h ]h"]h$]h&]uh1j{hjubjo)}(h **Return**h]jf)}(hjfh]hReturn}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjdubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhjubjo)}(h&false if a threaded handler is active.h]h&false if a threaded handler is active.}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhjubjTw)}(h;This function may be called - with care - from IRQ context.h]jo)}(hjh]h;This function may be called - with care - from IRQ context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhjubah}(h]h ]h"]h$]h&]uh1jSwhjhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9disable_nmi_nosync (C function)c.disable_nmi_nosynchNtauh1j,hjuhhhNhNubj>)}(hhh](jC)}(h*void disable_nmi_nosync (unsigned int irq)h]jI)}(h)void disable_nmi_nosync(unsigned int irq)h](jO)}(hvoidh]hvoid}(hjËhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMubja)}(h h]h }(hjҋhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjыhMubjr)}(hdisable_nmi_nosynch]jx)}(hdisable_nmi_nosynch]hdisable_nmi_nosync}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjыhMubj)}(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}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(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 an nmi without waitingh]hdisable an nmi without waiting}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhj_hhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjыhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjzjWjzjXjYjZuh1j=hhhjuhNhNubj\)}(hXN**Parameters** ``unsigned int irq`` Interrupt to disable 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)}(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:507: ./kernel/irq/manage.chM hj~ubj|)}(hhh]j)}(hX2``unsigned int irq`` Interrupt to disable 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](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:507: ./kernel/irq/manage.chM hjubj)}(hhh](jo)}(hInterrupt to disableh]hInterrupt to disable}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhjubjo)}(hXDisable 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]hXDisable 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.}(hjˌhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM hjubah}(h]h ]h"]h$]h&]uh1j{hj~ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9enable_irq (C function) c.enable_irqhNtauh1j,hjuhhhNhNubj>)}(hhh](jC)}(h"void enable_irq (unsigned int irq)h]jI)}(h!void enable_irq(unsigned int irq)h](jO)}(hvoidh]hvoid}(hj hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM>ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhM>ubjr)}(h enable_irqh]jx)}(h enable_irqh]h enable_irq}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj)ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhM>ubj)}(h(unsigned int irq)h]j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hjIhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjEubja)}(h h]h }(hjWhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjEubjO)}(hinth]hint}(hjehhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjEubja)}(h h]h }(hjshhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjEubjx)}(hirqh]hirq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjEubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjAubah}(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)}(henable handling of an irqh]henable handling of an irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM4hjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhM>ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjÍjWjÍjXjYjZuh1j=hhhjuhNhNubj\)}(hXR**Parameters** ``unsigned int irq`` Interrupt to enable 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)}(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:507: ./kernel/irq/manage.chM8hjǍubj|)}(hhh]j)}(hX6``unsigned int irq`` Interrupt to enable 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](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:507: ./kernel/irq/manage.chM;hjubj)}(hhh](jo)}(hInterrupt to enableh]hInterrupt to enable}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM5hjubjo)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM7hjubjo)}(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 !}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhM;hjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM;hjubah}(h]h ]h"]h$]h&]uh1j{hjǍubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9enable_nmi (C function) c.enable_nmihNtauh1j,hjuhhhNhNubj>)}(hhh](jC)}(h"void enable_nmi (unsigned int irq)h]jI)}(h!void enable_nmi(unsigned int irq)h](jO)}(hvoidh]hvoid}(hjchhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj_hhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMXubja)}(h h]h }(hjrhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj_hhhjqhMXubjr)}(h enable_nmih]jx)}(h enable_nmih]h enable_nmi}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhj_hhhjqhMXubj)}(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&]hhuh1jhj_hhhjqhMXubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj[hhhjqhMXubah}(h]jVah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjqhMXhjXhhubj5)}(hhh]jo)}(henable handling of an nmih]henable handling of an nmi}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMPhjhhubah}(h]h ]h"]h$]h&]uh1j4hjXhhhjqhMXubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjuhNhNubj\)}(hX**Parameters** ``unsigned int irq`` Interrupt to enable 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)}(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:507: ./kernel/irq/manage.chMThjubj|)}(hhh]j)}(h``unsigned int irq`` Interrupt to enable 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](j)}(h``unsigned int irq``h]j)}(hjCh]hunsigned int irq}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMUhj=ubj)}(hhh](jo)}(hInterrupt to enableh]hInterrupt to enable}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMQhjYubjo)}(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.}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMShjYubeh}(h]h ]h"]h$]h&]uh1jhj=ubeh}(h]h ]h"]h$]h&]uh1jhjXhMUhj:ubah}(h]h ]h"]h$]h&]uh1j{hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_set_irq_wake (C function)c.irq_set_irq_wakehNtauh1j,hjuhhhNhNubj>)}(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}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM~ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhM~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&]hhuh1jqhjhhhjhM~ubj)}(h#(unsigned int irq, unsigned int on)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}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hunsigned int onh](jO)}(hunsignedh]hunsigned}(hj:hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj6ubja)}(h h]h }(hjHhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj6ubjO)}(hinth]hint}(hjVhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj6ubja)}(h h]h }(hjdhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj6ubjx)}(honh]hon}(hjrhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj6ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(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#control irq power management wakeuph]h#control irq power management wakeup}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMlhjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhM~ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjuhNhNubj\)}(hX**Parameters** ``unsigned int irq`` interrupt to control ``unsigned int on`` enable/disable power management wakeup 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)}(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:507: ./kernel/irq/manage.chMphjubj|)}(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:507: ./kernel/irq/manage.chMmhjאubj)}(hhh]jo)}(hinterrupt to controlh]hinterrupt to control}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhMmhjubah}(h]h ]h"]h$]h&]uh1jhjאubeh}(h]h ]h"]h$]h&]uh1jhjhMmhjԐubj)}(hX-``unsigned int on`` enable/disable power management wakeup 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". h](j)}(h``unsigned int on``h]j)}(hjh]hunsigned int on}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMuhjubj)}(hhh](jo)}(h&enable/disable power management wakeuph]h&enable/disable power management wakeup}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMnhj,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:507: ./kernel/irq/manage.chMphj,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”.}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMthj,ubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj+hMuhjԐubeh}(h]h ]h"]h$]h&]uh1j{hjubjo)}(h**Note**h]jf)}(hjph]hNote}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjnubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMwhjubj|)}(hhh]j)}(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](j)}(h1irq enable/disable state is completely orthogonalh]h1irq enable/disable state is completely orthogonal}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM{hjubj)}(hhh]jo)}(hto 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]hto 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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMxhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM{hjubah}(h]h ]h"]h$]h&]uh1j{hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_wake_thread (C function)c.irq_wake_threadhNtauh1j,hjuhhhNhNubj>)}(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}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjܑhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM>ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjܑhhhjhM>ubjr)}(hirq_wake_threadh]jx)}(hirq_wake_threadh]hirq_wake_thread}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjܑhhhjhM>ubj)}(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 }(hj+hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjO)}(hinth]hint}(hj9hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjGhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hirqh]hirq}(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h void *dev_idh](jO)}(hvoidh]hvoid}(hjnhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjjubja)}(h h]h }(hj|hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjjubjx)}(hdev_idh]hdev_id}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(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)}(h7wake the irq thread for the action identified by dev_idh]h7wake the irq thread for the action identified by dev_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM9hjhhubah}(h]h ]h"]h$]h&]uh1j4hjՑhhhjhM>ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjْjWjْjXjYjZuh1j=hhhjuhNhNubj\)}(h~**Parameters** ``unsigned int irq`` Interrupt line ``void *dev_id`` Device identity for which the thread should be wokenh](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:507: ./kernel/irq/manage.chM=hjݒubj|)}(hhh](j)}(h$``unsigned int irq`` Interrupt line 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:507: ./kernel/irq/manage.chM:hjubj)}(hhh]jo)}(hInterrupt lineh]hInterrupt line}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhM:hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM:hjubj)}(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&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM<hj5ubj)}(hhh]jo)}(h4Device identity for which the thread should be wokenh]h4Device identity for which the thread should be woken}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM;hjQubah}(h]h ]h"]h$]h&]uh1jhj5ubeh}(h]h ]h"]h$]h&]uh1jhjPhM<hjubeh}(h]h ]h"]h$]h&]uh1j{hjݒubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9free_irq (C function) c.free_irqhNtauh1j,hjuhhhNhNubj>)}(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}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhMubjO)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhjhMubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhMubj)}(hjh]h*}(hj͓hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubjr)}(hfree_irqh]jx)}(hfree_irqh]hfree_irq}(hjޓhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjړubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhMubj)}(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 }(hj$hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hirqh]hirq}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h void *dev_idh](jO)}(hvoidh]hvoid}(hjKhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjGubja)}(h h]h }(hjYhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjGubj)}(hjh]h*}(hjghhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGubjx)}(hdev_idh]hdev_id}(hjthhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjGubeh}(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,free an interrupt allocated with request_irqh]h,free an interrupt allocated with request_irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjuhNhNubj\)}(hX7**Parameters** ``unsigned int irq`` Interrupt line to free ``void *dev_id`` Device identity to free 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}(hj”hhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhjubj|)}(hhh](j)}(h,``unsigned int irq`` Interrupt line to free h](j)}(h``unsigned int irq``h]j)}(hjߔh]hunsigned int irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjݔubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhjٔubj)}(hhh]jo)}(hInterrupt line to freeh]hInterrupt line to free}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjٔubeh}(h]h ]h"]h$]h&]uh1jhjhMhj֔ubj)}(hX``void *dev_id`` Device identity to free 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](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:507: ./kernel/irq/manage.chMhjubj)}(hhh](jo)}(hDevice identity to freeh]hDevice identity to free}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhj.ubjo)}(hXMRemove 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]hXMRemove 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:507: ./kernel/irq/manage.chMhj.ubjo)}(h8This function must not be called from interrupt context.h]h8This function must not be called from interrupt context.}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhj.ubjo)}(h3Returns the devname argument passed to request_irq.h]h3Returns the devname argument passed to request_irq.}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhj.ubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj-hMhj֔ubeh}(h]h ]h"]h$]h&]uh1j{hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9!request_threaded_irq (C function)c.request_threaded_irqhNtauh1j,hjuhhhNhNubj>)}(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}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM_ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhM_ubjr)}(hrequest_threaded_irqh]jx)}(hrequest_threaded_irqh]hrequest_threaded_irq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhM_ubj)}(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}(hjܕhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjؕubja)}(h h]h }(hjhhhNhNubah}(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ԕubj)}(hirq_handler_t handlerh](h)}(hhh]jx)}(h irq_handler_th]h irq_handler_t}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj-ubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetj2modnameN classnameNjj)}j]j)}jj•sbc.request_threaded_irqasbuh1hhj)ubja)}(h h]h }(hjPhhhNhNubah}(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)}(hirq_handler_t thread_fnh](h)}(hhh]jx)}(h irq_handler_th]h irq_handler_t}(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjwubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetj|modnameN classnameNjj)}j]jLc.request_threaded_irqasbuh1hhjsubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjsubjx)}(h thread_fnh]h thread_fn}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjsubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjԕubj)}(hunsigned long irqflagsh](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}(hjۖhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hirqflagsh]hirqflags}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjԕubj)}(hconst char *devnameh](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}(hj+hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj ubja)}(h h]h }(hj9hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj ubj)}(hjh]h*}(hjGhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubjx)}(hdevnameh]hdevname}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjԕubj)}(h void *dev_idh](jO)}(hvoidh]hvoid}(hjmhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjiubja)}(h h]h }(hj{hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjiubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjiubjx)}(hdev_idh]hdev_id}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjiubeh}(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)}(hallocate an interrupt lineh]hallocate an interrupt line}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM6hjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhM_ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjؗjWjؗjXjYjZuh1j=hhhjuhNhNubj\)}(hX8**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 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:507: ./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:507: ./kernel/irq/manage.chM7hjubj)}(hhh]jo)}(hInterrupt line to allocateh]hInterrupt line to allocate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhM7hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM7hjubj)}(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)}(hj:h]hirq_handler_t handler}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM;hj4ubj)}(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.}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM8hjPubah}(h]h ]h"]h$]h&]uh1jhj4ubeh}(h]h ]h"]h$]h&]uh1jhjOhM;hjubj)}(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)}(hjth]hirq_handler_t thread_fn}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjrubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM=hjnubj)}(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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM<hjubah}(h]h ]h"]h$]h&]uh1jhjnubeh}(h]h ]h"]h$]h&]uh1jhjhM=hjubj)}(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:507: ./kernel/irq/manage.chM>hjubj)}(hhh]jo)}(hInterrupt type flagsh]hInterrupt type flags}(hjǘhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjØhM>hjĘubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjØhM>hjubj)}(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:507: ./kernel/irq/manage.chM?hjubj)}(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&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM?hjubj)}(hX``void *dev_id`` A cookie passed back to the handler function 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](j)}(h``void *dev_id``h]j)}(hj h]h void *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:507: ./kernel/irq/manage.chM\hjubj)}(hhh](jo)}(h,A cookie passed back to the handler functionh]h,A cookie passed back to the handler function}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM@hj6ubjo)}(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.}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMBhj6ubjo)}(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 }(hjWhhhNhNubjf)}(h **handler**h]hhandler}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jehjWubh and }(hjWhhhNhNubjf)}(h **thread_fn**h]h thread_fn}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjWubh. }(hjWhhhNhNubjf)}(h **handler**h]hhandler}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjWubh 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 }(hjWhhhNhNubjf)}(h **thread_fn**h]h thread_fn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjWubhF. This split handler design is necessary to support shared interrupts.}(hjWhhhNhNubeh}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMIhj6ubjo)}(hDev_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]hDev_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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMRhj6ubjo)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMVhj6ubjo)}(hFlags:h]hFlags:}(hj̙hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMYhj6ubjo)}(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}(hjۙhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM[hj6ubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj5hM\hjubeh}(h]h ]h"]h$]h&]uh1j{hjܗubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9$request_any_context_irq (C function)c.request_any_context_irqhNtauh1j,hjuhhhNhNubj>)}(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}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMubja)}(h h]h }(hj+hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhj*hMubjr)}(hrequest_any_context_irqh]jx)}(hrequest_any_context_irqh]hrequest_any_context_irq}(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj9ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhj*hMubj)}(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}(hjYhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjUubja)}(h h]h }(hjghhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjUubjO)}(hinth]hint}(hjuhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjUubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjUubjx)}(hirqh]hirq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjUubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjQubj)}(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)}jj?sbc.request_any_context_irqasbuh1hhjubja)}(h h]h }(hj͚hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hhandlerh]hhandler}(hjۚhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjQubj)}(hunsigned long flagsh](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)}(hflagsh]hflags}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjQubj)}(hconst char *nameh](j)}(hjmh]hconst}(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubja)}(h h]h }(hjRhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjAubjO)}(hcharh]hchar}(hj`hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjAubja)}(h h]h }(hjnhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjAubj)}(hjh]h*}(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubjx)}(hnameh]hname}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjAubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjQubj)}(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*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hdev_idh]hdev_id}(hj˛hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjQubeh}(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)}(hallocate an interrupt lineh]hallocate an interrupt line}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhj*hMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj jWj jXjYjZuh1j=hhhjuhNhNubj\)}(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 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. 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)}(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:507: ./kernel/irq/manage.chMhjubj|)}(hhh](j)}(h0``unsigned int irq`` Interrupt line to allocate h](j)}(h``unsigned int irq``h]j)}(hj6h]hunsigned int irq}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhj0ubj)}(hhh]jo)}(hInterrupt line to allocateh]hInterrupt line to allocate}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjKhMhjLubah}(h]h ]h"]h$]h&]uh1jhj0ubeh}(h]h ]h"]h$]h&]uh1jhjKhMhj-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)}(hjoh]hirq_handler_t handler}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhjiubj)}(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:507: ./kernel/irq/manage.chMhjubah}(h]h ]h"]h$]h&]uh1jhjiubeh}(h]h ]h"]h$]h&]uh1jhjhMhj-ubj)}(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:507: ./kernel/irq/manage.chMhjubj)}(hhh]jo)}(hInterrupt type flagsh]hInterrupt type flags}(hjœhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj-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:507: ./kernel/irq/manage.chMhjܜ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&]uh1jnhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjܜubeh}(h]h ]h"]h$]h&]uh1jhjhMhj-ubj)}(hXT``void *dev_id`` A cookie passed back to the handler function 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. On failure, it returns a negative value. On success, it returns either IRQC_IS_HARDIRQ or IRQC_IS_NESTED.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:507: ./kernel/irq/manage.chMhjubj)}(hhh](jo)}(h,A cookie passed back to the handler functionh]h,A cookie passed back to the handler function}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhj1ubjo)}(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.}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhj1ubjo)}(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.}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj0hMhj1ubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj0hMhj-ubeh}(h]h ]h"]h$]h&]uh1j{hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9request_nmi (C function) c.request_nmihNtauh1j,hjuhhhNhNubj>)}(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}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhMubjr)}(h request_nmih]jx)}(h request_nmih]h request_nmi}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhMubj)}(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}(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ǝubj)}(hirq_handler_t handlerh](h)}(hhh]jx)}(h irq_handler_th]h irq_handler_t}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj ubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetj%modnameN classnameNjj)}j]j)}jjsb c.request_nmiasbuh1hhjubja)}(h h]h }(hjChhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hhandlerh]hhandler}(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjǝubj)}(hunsigned long irqflagsh](jO)}(hunsignedh]hunsigned}(hjjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjfubja)}(h h]h }(hjxhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjfubjO)}(hlongh]hlong}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjfubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjfubjx)}(hirqflagsh]hirqflags}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjfubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjǝubj)}(hconst char *nameh](j)}(hjmh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubja)}(h h]h }(hjȞhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjO)}(hcharh]hchar}(hj֞hhhNhNubah}(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)}(hnameh]hname}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjǝubj)}(h void *dev_idh](jO)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hj&hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hdev_idh]hdev_id}(hjAhhhNhNubah}(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+allocate an interrupt line for NMI deliveryh]h+allocate an interrupt line for NMI delivery}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhjhhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjuhNhNubj\)}(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 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)}(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:507: ./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:507: ./kernel/irq/manage.chMhjubj)}(hhh]jo)}(hInterrupt line to allocateh]hInterrupt line to allocate}(hjşhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhMhjŸubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhjߟubj)}(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:507: ./kernel/irq/manage.chMhjubah}(h]h ]h"]h$]h&]uh1jhjߟubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h0``unsigned long irqflags`` Interrupt type flags h](j)}(h``unsigned long irqflags``h]j)}(hjh]hunsigned long irqflags}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhjubj)}(hhh]jo)}(hInterrupt type flagsh]hInterrupt type flags}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj4hMhj5ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj4hMhjubj)}(h;``const char *name`` An ascii name for the claiming device h](j)}(h``const char *name``h]j)}(hjXh]hconst char *name}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhjRubj)}(hhh]jo)}(h%An ascii name for the claiming deviceh]h%An ascii name for the claiming device}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjmhMhjnubah}(h]h ]h"]h$]h&]uh1jhjRubeh}(h]h ]h"]h$]h&]uh1jhjmhMhjubj)}(hX``void *dev_id`` A cookie passed back to the handler function 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](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:507: ./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&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./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:507: ./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:507: ./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.}(hjנhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMhjubjo)}(hDev_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]hDev_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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhMhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubeh}(h]h ]h"]h$]h&]uh1j{hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9"irq_percpu_is_enabled (C function)c.irq_percpu_is_enabledhNtauh1j,hjuhhhNhNubj>)}(hhh](jC)}(h-bool irq_percpu_is_enabled (unsigned int irq)h]jI)}(h,bool irq_percpu_is_enabled(unsigned int irq)h](jO)}(hjuh]hbool}(hj5hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj1hhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMq ubja)}(h h]h }(hjChhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj1hhhjBhMq ubjr)}(hirq_percpu_is_enabledh]jx)}(hirq_percpu_is_enabledh]hirq_percpu_is_enabled}(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjQubah}(h]h ](jjeh"]h$]h&]hhuh1jqhj1hhhjBhMq ubj)}(h(unsigned int irq)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&]noemphhhuh1jhjiubah}(h]h ]h"]h$]h&]hhuh1jhj1hhhjBhMq ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj-hhhjBhMq ubah}(h]j(ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjBhMq hj*hhubj5)}(hhh]jo)}(h(Check whether the per cpu irq is enabledh]h(Check whether the per cpu irq is enabled}(hjӡhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMk hjСhhubah}(h]h ]h"]h$]h&]uh1j4hj*hhhjBhMq ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjuhNhNubj\)}(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)}(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:507: ./kernel/irq/manage.chMo hjubj|)}(hhh]j)}(h3``unsigned int irq`` Linux irq number to check for 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:507: ./kernel/irq/manage.chMl hjubj)}(hhh]jo)}(hLinux irq number to check forh]hLinux irq number to check for}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj)hMl hj*ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj)hMl hj ubah}(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&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMn hjubjo)}(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.}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMn hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9remove_percpu_irq (C function)c.remove_percpu_irqhNtauh1j,hjuhhhNhNubj>)}(hhh](jC)}(h@void remove_percpu_irq (unsigned int irq, struct irqaction *act)h]jI)}(h?void remove_percpu_irq(unsigned int irq, struct irqaction *act)h](jO)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhM ubjr)}(hremove_percpu_irqh]jx)}(hremove_percpu_irqh]hremove_percpu_irq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhM 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}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj͢ubja)}(h h]h }(hjhhhNhNubah}(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)}(hstruct irqaction *acth](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)}(h irqactionh]h irqaction}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj=ubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjBmodnameN classnameNjj)}j]j)}jjsbc.remove_percpu_irqasbuh1hhjubja)}(h h]h }(hj`hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hjnhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hacth]hact}(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(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)}(hfree a per-cpu interrupth]hfree a per-cpu interrupt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM hjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhM ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjuhNhNubj\)}(h**Parameters** ``unsigned int irq`` Interrupt line to free ``struct irqaction *act`` irqaction for the interrupt **Description** Used to remove interrupts statically setup by 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:507: ./kernel/irq/manage.chM hjubj|)}(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:507: ./kernel/irq/manage.chM hjubj)}(hhh]jo)}(hInterrupt line to freeh]hInterrupt line to free}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhM hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM hjݣubj)}(h6``struct irqaction *act`` irqaction for the interrupt h](j)}(h``struct irqaction *act``h]j)}(hjh]hstruct irqaction *act}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM hjubj)}(hhh]jo)}(hirqaction for the interrupth]hirqaction for the interrupt}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj4hM hj5ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj4hM hjݣubeh}(h]h ]h"]h$]h&]uh1j{hjubjo)}(h**Description**h]jf)}(hjZh]h Description}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jehjXubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM hjubjo)}(hEUsed to remove interrupts statically setup by the early boot process.h]hEUsed to remove interrupts statically setup by the early boot process.}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9free_percpu_irq (C function)c.free_percpu_irqhNtauh1j,hjuhhhNhNubj>)}(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:507: ./kernel/irq/manage.chM ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhM ubjr)}(hfree_percpu_irqh]jx)}(hfree_percpu_irqh]hfree_percpu_irq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhM ubj)}(h)(unsigned int irq, void __percpu *dev_id)h](j)}(hunsigned int irqh](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)}(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Ԥubj)}(hvoid __percpu *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)ubh__percpu}(hj)hhhNhNubja)}(h h]h }(hjMhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj)ubj)}(hjh]h*}(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubjx)}(hdev_idh]hdev_id}(hjhhhhNhNubah}(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)}(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:507: ./kernel/irq/manage.chM hjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhM ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjuhNhNubj\)}(hX**Parameters** ``unsigned int irq`` Interrupt line to free ``void __percpu *dev_id`` Device identity to free 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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM 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:507: ./kernel/irq/manage.chM hjͥubj)}(hhh]jo)}(hInterrupt line to freeh]hInterrupt line to free}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhM hjubah}(h]h ]h"]h$]h&]uh1jhjͥubeh}(h]h ]h"]h$]h&]uh1jhjhM hjʥubj)}(hXd``void __percpu *dev_id`` Device identity to free 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](j)}(h``void __percpu *dev_id``h]j)}(hj h]hvoid __percpu *dev_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM hjubj)}(hhh](jo)}(hDevice identity to freeh]hDevice identity to free}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM hj"ubjo)}(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.}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM hj"ubjo)}(h8This function must not be called from interrupt context.h]h8This function must not be called from interrupt context.}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM hj"ubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj!hM hjʥubeh}(h]h ]h"]h$]h&]uh1j{hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9setup_percpu_irq (C function)c.setup_percpu_irqhNtauh1j,hjuhhhNhNubj>)}(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:507: ./kernel/irq/manage.chM ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhM ubjr)}(hsetup_percpu_irqh]jx)}(hsetup_percpu_irqh]hsetup_percpu_irq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhM ubj)}(h)(unsigned int irq, struct irqaction *act)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)}(hstruct irqaction *acth](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubh)}(hhh]jx)}(h irqactionh]h irqaction}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj-ubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetj2modnameN classnameNjj)}j]j)}jjsbc.setup_percpu_irqasbuh1hhjubja)}(h h]h }(hjPhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hj^hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hacth]hact}(hjkhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhM ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj|hhhjhM ubah}(h]jwah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhM hjyhhubj5)}(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:507: ./kernel/irq/manage.chM hjhhubah}(h]h ]h"]h$]h&]uh1j4hjyhhhjhM ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjuhNhNubj\)}(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)}(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:507: ./kernel/irq/manage.chM hjubj|)}(hhh](j)}(h-``unsigned int irq`` Interrupt line to setup 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:507: ./kernel/irq/manage.chM hjЧubj)}(hhh]jo)}(hInterrupt line to setuph]hInterrupt line to setup}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhM hjubah}(h]h ]h"]h$]h&]uh1jhjЧubeh}(h]h ]h"]h$]h&]uh1jhjhM hjͧubj)}(h6``struct irqaction *act`` irqaction for the interrupt h](j)}(h``struct irqaction *act``h]j)}(hjh]hstruct irqaction *act}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM hj ubj)}(hhh]jo)}(hirqaction for the interrupth]hirqaction for the interrupt}(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{hjubjo)}(h**Description**h]jf)}(hjJh]h Description}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjHubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM 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:507: ./kernel/irq/manage.chM hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9!__request_percpu_irq (C function)c.__request_percpu_irqhNtauh1j,hjuhhhNhNubj>)}(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:507: ./kernel/irq/manage.chM% ubja)}(h h]h }(hjhhhNhNubah}(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}(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Ĩubj)}(hirq_handler_t handlerh](h)}(hhh]jx)}(h irq_handler_th]h irq_handler_t}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetj"modnameN classnameNjj)}j]j)}jjsbc.__request_percpu_irqasbuh1hhjubja)}(h h]h }(hj@hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hhandlerh]hhandler}(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjĨubj)}(hunsigned long flagsh](jO)}(hunsignedh]hunsigned}(hjghhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjcubja)}(h h]h }(hjuhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjcubjO)}(hlongh]hlong}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjcubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjcubjx)}(hflagsh]hflags}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjcubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjĨubj)}(hconst char *devnameh](j)}(hjmh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubja)}(h h]h }(hjũhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjO)}(hcharh]hchar}(hjөhhhNhNubah}(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}(hjhhhNhNubah}(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&]uh1jNhjubja)}(h h]h }(hj#hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubh__percpu}(hjhhhNhNubja)}(h h]h }(hj5hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hjChhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hdev_idh]hdev_id}(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(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}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM hjwhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhM% ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjuhNhNubj\)}(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 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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM hjubj|)}(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:507: ./kernel/irq/manage.c hM hjubj)}(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&]uh1jhjubeh}(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)}(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:507: ./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 hjubj)}(h?``unsigned long flags`` Interrupt type flags (IRQF_TIMER only) h](j)}(h``unsigned long flags``h]j)}(hj-h]hunsigned long flags}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM hj'ubj)}(hhh]jo)}(h&Interrupt type flags (IRQF_TIMER only)h]h&Interrupt type flags (IRQF_TIMER only)}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjBhM hjCubah}(h]h ]h"]h$]h&]uh1jhj'ubeh}(h]h ]h"]h$]h&]uh1jhjBhM hjubj)}(h>``const char *devname`` An ascii name for the claiming device h](j)}(h``const char *devname``h]j)}(hjfh]hconst char *devname}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./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&]uh1jnhj{hM hj|ubah}(h]h ]h"]h$]h&]uh1jhj`ubeh}(h]h ]h"]h$]h&]uh1jhj{hM hjubj)}(hX``void __percpu *dev_id`` A percpu cookie passed back to the handler function 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](j)}(h``void __percpu *dev_id``h]j)}(hjh]hvoid __percpu *dev_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./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:507: ./kernel/irq/manage.chM hjubjo)}(hDev_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]hDev_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.}(hj֫hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM! hjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM" hjubeh}(h]h ]h"]h$]h&]uh1j{hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9request_percpu_nmi (C function)c.request_percpu_nmihNtauh1j,hjuhhhNhNubj>)}(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:507: ./kernel/irq/manage.chMg ubja)}(h h]h }(hj&hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhj%hMg ubjr)}(hrequest_percpu_nmih]jx)}(hrequest_percpu_nmih]hrequest_percpu_nmi}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj4ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhj%hMg ubj)}(hR(unsigned int irq, irq_handler_t handler, const char *name, void __percpu *dev_id)h](j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hjThhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjPubja)}(h h]h }(hjbhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjPubjO)}(hinth]hint}(hjphhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjPubja)}(h h]h }(hj~hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjPubjx)}(hirqh]hirq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjPubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjLubj)}(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)}jj:sbc.request_percpu_nmiasbuh1hhjubja)}(h h]h }(hjȬhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hhandlerh]hhandler}(hj֬hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjLubj)}(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}(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)}(hnameh]hname}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjLubj)}(hvoid __percpu *dev_idh](jO)}(hvoidh]hvoid}(hjLhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjHubja)}(h h]h }(hjZhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjHubh__percpu}(hjHhhhNhNubja)}(h h]h }(hjlhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjHubj)}(hjh]h*}(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjHubjx)}(hdev_idh]hdev_id}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjHubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjLubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhj%hMg ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhj%hMg ubah}(h]j ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhj%hMg hj hhubj5)}(hhh]jo)}(h1allocate a percpu interrupt line for NMI deliveryh]h1allocate a percpu interrupt line for NMI delivery}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMS hjhhubah}(h]h ]h"]h$]h&]uh1j4hj hhhj%hMg ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjɭjWjɭjXjYjZuh1j=hhhjuhNhNubj\)}(hXB**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 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)}(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:507: ./kernel/irq/manage.chMW 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:507: ./kernel/irq/manage.chMT hjubj)}(hhh]jo)}(hInterrupt line to allocateh]hInterrupt line to allocate}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhMT hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMT 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}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMU hj%ubj)}(hhh]jo)}(h*Function to be called when the IRQ occurs.h]h*Function to be called when the IRQ occurs.}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj@hMU hjAubah}(h]h ]h"]h$]h&]uh1jhj%ubeh}(h]h ]h"]h$]h&]uh1jhj@hMU hjubj)}(h;``const char *name`` An ascii name for the claiming device h](j)}(h``const char *name``h]j)}(hjdh]hconst char *name}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMV hj^ubj)}(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&]uh1jnhjyhMV hjzubah}(h]h ]h"]h$]h&]uh1jhj^ubeh}(h]h ]h"]h$]h&]uh1jhjyhMV hjubj)}(hXc``void __percpu *dev_id`` A percpu cookie passed back to the handler function 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](j)}(h``void __percpu *dev_id``h]j)}(hjh]hvoid __percpu *dev_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMd hjubj)}(hhh](jo)}(h3A percpu cookie passed back to the handler functionh]h3A percpu cookie passed back to the handler function}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMW hjubjo)}(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:507: ./kernel/irq/manage.chMY hjubjo)}(hDev_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]hDev_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.}(hjԮhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM] hjubjo)}(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:507: ./kernel/irq/manage.chMa 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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhMd hjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMd hjubeh}(h]h ]h"]h$]h&]uh1j{hjͭubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9prepare_percpu_nmi (C function)c.prepare_percpu_nmihNtauh1j,hjuhhhNhNubj>)}(hhh](jC)}(h)int prepare_percpu_nmi (unsigned int irq)h]jI)}(h(int prepare_percpu_nmi(unsigned int irq)h](jO)}(hinth]hint}(hj2hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj.hhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM ubja)}(h h]h }(hjAhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj.hhhj@hM ubjr)}(hprepare_percpu_nmih]jx)}(hprepare_percpu_nmih]hprepare_percpu_nmi}(hjShhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjOubah}(h]h ](jjeh"]h$]h&]hhuh1jqhj.hhhj@hM ubj)}(h(unsigned int irq)h]j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hjohhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjkubja)}(h h]h }(hj}hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjkubjO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjkubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjkubjx)}(hirqh]hirq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjkubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjgubah}(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)}(h)performs CPU local setup for NMI deliveryh]h)performs CPU local setup for NMI delivery}(hjѯhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM hjίhhubah}(h]h ]h"]h$]h&]uh1j4hj'hhhj@hM ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjuhNhNubj\)}(hX**Parameters** ``unsigned int irq`` Interrupt line to prepare for NMI delivery 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:507: ./kernel/irq/manage.chM hjubj|)}(hhh]j)}(hX``unsigned int irq`` Interrupt line to prepare for NMI delivery 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](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:507: ./kernel/irq/manage.chM hj ubj)}(hhh](jo)}(h*Interrupt line to prepare for NMI deliveryh]h*Interrupt line to prepare for NMI delivery}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM hj(ubjo)}(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().}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM hj(ubjo)}(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.}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./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.}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj'hM hj(ubeh}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj'hM hj ubah}(h]h ]h"]h$]h&]uh1j{hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9 teardown_percpu_nmi (C function)c.teardown_percpu_nmihNtauh1j,hjuhhhNhNubj>)}(hhh](jC)}(h+void teardown_percpu_nmi (unsigned int irq)h]jI)}(h*void teardown_percpu_nmi(unsigned int irq)h](jO)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhM ubjr)}(hteardown_percpu_nmih]jx)}(hteardown_percpu_nmih]hteardown_percpu_nmi}(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 }(hjhhhNhNubah}(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}(hj hhhNhNubah}(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)}(hundoes NMI setup of IRQ lineh]hundoes NMI setup of IRQ line}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM hj4hhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhM ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjOjWjOjXjYjZuh1j=hhhjuhNhNubj\)}(hXJ**Parameters** ``unsigned int irq`` Interrupt line from which CPU local NMI configuration should be removed 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)}(hjYh]h Parameters}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jehjWubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM hjSubj|)}(hhh]j)}(hX.``unsigned int irq`` Interrupt line from which CPU local NMI configuration should be removed 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](j)}(h``unsigned int irq``h]j)}(hjxh]hunsigned int irq}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjvubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM hjrubj)}(hhh](jo)}(hGInterrupt line from which CPU local NMI configuration should be removedh]hGInterrupt line from which CPU local NMI configuration should be removed}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM hjubjTw)}(hThis 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)}(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:507: ./kernel/irq/manage.chM hjubjo)}(h3IRQ line should not be enabled for the current CPU.h]h3IRQ line should not be enabled for the current CPU.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./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&]uh1jnhjhM hjubeh}(h]h ]h"]h$]h&]uh1jSwhjhM hjubeh}(h]h ]h"]h$]h&]uh1jhjrubeh}(h]h ]h"]h$]h&]uh1jhjhM hjoubah}(h]h ]h"]h$]h&]uh1j{hjSubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9"irq_get_irqchip_state (C function)c.irq_get_irqchip_statehNtauh1j,hjuhhhNhNubj>)}(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}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhM ubjr)}(hirq_get_irqchip_stateh]jx)}(hirq_get_irqchip_stateh]hirq_get_irqchip_state}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj%ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhM ubj)}(h=(unsigned int irq, enum irqchip_irq_state which, bool *state)h](j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hjEhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjAubja)}(h h]h }(hjShhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjAubjO)}(hinth]hint}(hjahhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjAubja)}(h h]h }(hjohhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjAubjx)}(hirqh]hirq}(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjAubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj=ubj)}(henum irqchip_irq_state whichh](j)}(hj%h]henum}(hjhhhNhNubah}(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}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjmodnameN classnameNjj)}j]j)}jj+sbc.irq_get_irqchip_stateasbuh1hhjubja)}(h h]h }(hjԲhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hwhichh]hwhich}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj=ubj)}(h bool *stateh](jO)}(hjuh]hbool}(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)}(hstateh]hstate}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(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)returns the irqchip state of a interrupt.h]h)returns the irqchip state of a interrupt.}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM hjJhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhM ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjejWjejXjYjZuh1j=hhhjuhNhNubj\)}(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 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)}(hjoh]h Parameters}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjmubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM hjiubj|)}(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:507: ./kernel/irq/manage.chM 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&]uh1jnhjhM hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM hjubj)}(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)}(hjdzh]henum irqchip_irq_state which}(hjɳhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjųubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM 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&]uh1jnhjܳhM hjݳubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjܳhM hjubj)}(hX5``bool *state`` a pointer to a boolean where the state is to be stored 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](j)}(h``bool *state``h]j)}(hjh]h bool *state}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM hjubj)}(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&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM hjubjo)}(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 }(hj(hhhNhNubjf)}(h **state**h]hstate}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj(ubh the bit corresponding to stage }(hj(hhhNhNubjf)}(h **which**h]hwhich}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jehj(ubeh}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM hjubjo)}(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.}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhM hjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM hjubeh}(h]h ]h"]h$]h&]uh1j{hjiubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9"irq_set_irqchip_state (C function)c.irq_set_irqchip_statehNtauh1j,hjuhhhNhNubj>)}(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}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM/ ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhM/ 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&]hhuh1jqhjhhhjhM/ ubj)}(h:(unsigned int irq, enum irqchip_irq_state which, bool val)h](j)}(hunsigned int irqh](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)}(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}(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}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubja)}(h h]h }(hj2hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj!ubh)}(hhh]jx)}(hirqchip_irq_stateh]hirqchip_irq_state}(hjChhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj@ubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjEmodnameN classnameNjj)}j]j)}jjsbc.irq_set_irqchip_stateasbuh1hhj!ubja)}(h h]h }(hjchhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj!ubjx)}(hwhichh]hwhich}(hjqhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj!ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj̴ubj)}(hbool valh](jO)}(hjuh]hbool}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hvalh]hval}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(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'set the state of a forwarded interrupt.h]h'set the state of a forwarded interrupt.}(hjϵhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM$ hj̵hhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhM/ ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjuhNhNubj\)}(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** 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)}(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:507: ./kernel/irq/manage.chM( hjubj|)}(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:507: ./kernel/irq/manage.chM% hj ubj)}(hhh]jo)}(h(Interrupt line that is forwarded to a VMh]h(Interrupt line that is forwarded to a VM}(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)}(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&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM& hjCubj)}(hhh]jo)}(h-State to be restored (one of IRQCHIP_STATE_*)h]h-State to be restored (one of IRQCHIP_STATE_*)}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj^hM& hj_ubah}(h]h ]h"]h$]h&]uh1jhjCubeh}(h]h ]h"]h$]h&]uh1jhj^hM& hjubj)}(h``bool val`` Value corresponding to **which** 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](j)}(h ``bool val``h]j)}(hjh]hbool val}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM, hj|ubj)}(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&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM' hjubjo)}(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 }(hjhhhNhNubjf)}(h **which**h]hwhich}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chM) hjubjo)}(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.}(hjٶhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhM, hjubeh}(h]h ]h"]h$]h&]uh1jhj|ubeh}(h]h ]h"]h$]h&]uh1jhjhM, hjubeh}(h]h ]h"]h$]h&]uh1j{hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_has_action (C function)c.irq_has_actionhNtauh1j,hjuhhhNhNubj>)}(hhh](jC)}(h&bool irq_has_action (unsigned int irq)h]jI)}(h%bool irq_has_action(unsigned int irq)h](jO)}(hjuh]hbool}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./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}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj5ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhj&hM\ ubj)}(h(unsigned int irq)h]j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hjUhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjQubja)}(h h]h }(hjchhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjQubjO)}(hinth]hint}(hjqhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjQubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjQubjx)}(hirqh]hirq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjQubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjMubah}(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\ hjhhubj5)}(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:507: ./kernel/irq/manage.chMW hjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhj&hM\ ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjϷjWjϷjXjYjZuh1j=hhhjuhNhNubj\)}(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:507: ./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:507: ./kernel/irq/manage.chMX hjubj)}(hhh]jo)}(hThe linux irq numberh]hThe linux irq number}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj hMX hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj hMX hjubah}(h]h ]h"]h$]h&]uh1j{hjӷubjo)}(h **Return**h]jf)}(hj3h]hReturn}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj1ubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMZ hjӷubjo)}(hA snapshot of the current stateh]hA snapshot of the current state}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMZ hjӷubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9!irq_check_status_bit (C function)c.irq_check_status_bithNtauh1j,hjuhhhNhNubj>)}(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)}(hjuh]hbool}(hjxhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjthhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMn ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjthhhjhMn 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&]hhuh1jqhjthhhjhMn 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 }(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)}(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}(hj!hhhNhNubah}(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&]hhuh1jhjthhhjhMn ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjphhhjhMn ubah}(h]jkah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhMn hjmhhubj5)}(hhh]jo)}(h7Check whether bits in the irq descriptor status are seth]h7Check whether bits in the irq descriptor status are set}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMh hjdhhubah}(h]h ]h"]h$]h&]uh1j4hjmhhhjhMn ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjuhNhNubj\)}(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:507: ./kernel/irq/manage.chMl 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:507: ./kernel/irq/manage.chMi hjubj)}(hhh]jo)}(hThe linux irq numberh]hThe linux irq number}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhMi hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMi hjubj)}(h1``unsigned int bitmask`` The bitmask to evaluate h](j)}(h``unsigned int bitmask``h]j)}(hjh]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:507: ./kernel/irq/manage.chMj hj۹ubj)}(hhh]jo)}(hThe bitmask to evaluateh]hThe bitmask to evaluate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhMj hjubah}(h]h ]h"]h$]h&]uh1jhj۹ubeh}(h]h ]h"]h$]h&]uh1jhjhMj 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:507: ./kernel/irq/manage.chMl hjubjo)}(h-True if one of the bits in **bitmask** is seth](hTrue if one of the bits in }(hj2hhhNhNubjf)}(h **bitmask**h]hbitmask}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj2ubh is set}(hj2hhhNhNubeh}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:507: ./kernel/irq/manage.chMl hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_set_chip (C function)c.irq_set_chiphNtauh1j,hjuhhhNhNubj>)}(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}(hjshhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjohhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chK)ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjohhhjhK)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&]hhuh1jqhjohhhjhK)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 }(hjhhhNhNubah}(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}(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj7ubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetj<modnameN classnameNjj)}j]j)}jjsbc.irq_set_chipasbuh1hhjubja)}(h h]h }(hjZhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hchiph]hchip}(hjuhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjohhhjhK)ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjkhhhjhK)ubah}(h]jfah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhK)hjhhhubj5)}(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:509: ./kernel/irq/chip.chK%hjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhhjhK)ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjuhNhNubj\)}(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}(hjûhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chK)hjubj|)}(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&]uh1jhj޻ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./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:509: ./kernel/irq/chip.chK(hjubj)}(hhh]jo)}(h)pointer to irq chip description structureh]h)pointer to irq chip description structure}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./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[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_set_irq_type (C function)c.irq_set_irq_typehNtauh1j,hjuhhhNhNubj>)}(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}(hjshhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjohhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chKAubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjohhhjhKAubjr)}(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&]hhuh1jqhjohhhjhKAubj)}(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 }(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)}(htypeh]htype}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjohhhjhKAubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjkhhhjhKAubah}(h]jfah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhKAhjhhhubj5)}(hhh]jo)}(h#set the irq trigger type for an irqh]h#set the irq trigger type for an irq}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chK=hj`hhubah}(h]h ]h"]h$]h&]uh1j4hjhhhhjhKAubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj{jWj{jXjYjZuh1j=hhhjuhNhNubj\)}(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:509: ./kernel/irq/chip.chKAhjubj|)}(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:509: ./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:509: ./kernel/irq/chip.chK@hj׽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&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chK?hjubah}(h]h ]h"]h$]h&]uh1jhj׽ubeh}(h]h ]h"]h$]h&]uh1jhjhK@hjubeh}(h]h ]h"]h$]h&]uh1j{hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9!irq_set_handler_data (C function)c.irq_set_handler_datahNtauh1j,hjuhhhNhNubj>)}(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}(hj7hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj3hhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chKWubja)}(h h]h }(hjFhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj3hhhjEhKWubjr)}(hirq_set_handler_datah]jx)}(hirq_set_handler_datah]hirq_set_handler_data}(hjXhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjTubah}(h]h ](jjeh"]h$]h&]hhuh1jqhj3hhhjEhKWubj)}(h(unsigned int irq, void *data)h](j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hjthhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjpubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjpubjO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjpubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjpubjx)}(hirqh]hirq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjpubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjlubj)}(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*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjlubeh}(h]h ]h"]h$]h&]hhuh1jhj3hhhjEhKWubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj/hhhjEhKWubah}(h]j*ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjEhKWhj,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:509: ./kernel/irq/chip.chKQhjhhubah}(h]h ]h"]h$]h&]uh1j4hj,hhhjEhKWubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj0jWj0jXjYjZuh1j=hhhjuhNhNubj\)}(h**Parameters** ``unsigned int irq`` Interrupt number ``void *data`` Pointer to interrupt specific data Set the hardware irq controller data for an irqh](jo)}(h**Parameters**h]jf)}(hj:h]h Parameters}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj8ubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chKUhj4ubj|)}(hhh](j)}(h&``unsigned int irq`` Interrupt number h](j)}(h``unsigned int irq``h]j)}(hjYh]hunsigned int irq}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chKRhjSubj)}(hhh]jo)}(hInterrupt numberh]hInterrupt number}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjnhKRhjoubah}(h]h ]h"]h$]h&]uh1jhjSubeh}(h]h ]h"]h$]h&]uh1jhjnhKRhjPubj)}(hb``void *data`` Pointer to interrupt specific data Set the hardware irq controller data for an irqh](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:509: ./kernel/irq/chip.chKThjubj)}(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:509: ./kernel/irq/chip.chKShjubjo)}(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:509: ./kernel/irq/chip.chKUhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKThjPubeh}(h]h ]h"]h$]h&]uh1j{hj4ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_set_chip_data (C function)c.irq_set_chip_datahNtauh1j,hjuhhhNhNubj>)}(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&]uh1jNhjhhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chKubja)}(h h]h }(hj hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhj hKubjr)}(hirq_set_chip_datah]jx)}(hirq_set_chip_datah]hirq_set_chip_data}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhj hKubj)}(h(unsigned int irq, void *data)h](j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hj8hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj4ubja)}(h h]h }(hjFhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj4ubjO)}(hinth]hint}(hjThhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj4ubja)}(h h]h }(hjbhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj4ubjx)}(hirqh]hirq}(hjphhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj4ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj0ubj)}(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}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj0ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhj hKubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhj hKubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhj hKhjhhubj5)}(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:509: ./kernel/irq/chip.chKhjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhj hKubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjuhNhNubj\)}(h**Parameters** ``unsigned int irq`` Interrupt number ``void *data`` Pointer to chip specific data 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:509: ./kernel/irq/chip.chKhjubj|)}(hhh](j)}(h&``unsigned int irq`` 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&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chKhjubj)}(hhh]jo)}(hInterrupt numberh]hInterrupt number}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj2hKhj3ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj2hKhjubj)}(hW``void *data`` Pointer to chip specific data Set the hardware irq chip data for an irqh](j)}(h``void *data``h]j)}(hjVh]h void *data}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chKhjPubj)}(hhh](jo)}(hPointer to chip specific datah]hPointer to chip specific data}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chKhjlubjo)}(h)Set the hardware irq chip data for an irqh]h)Set the hardware irq chip data for an irq}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chKhjlubeh}(h]h ]h"]h$]h&]uh1jhjPubeh}(h]h ]h"]h$]h&]uh1jhjkhKhjubeh}(h]h ]h"]h$]h&]uh1j{hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9handle_simple_irq (C function)c.handle_simple_irqhNtauh1j,hjuhhhNhNubj>)}(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}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhMubjr)}(hhandle_simple_irqh]jx)}(hhandle_simple_irqh]hhandle_simple_irq}(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}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubja)}(h h]h }(hj hhhNhNubah}(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_simple_irqasbuh1hhjubja)}(h h]h }(hj:hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hdesch]hdesc}(hjUhhhNhNubah}(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)}(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:509: ./kernel/irq/chip.chMhj|hhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjuhNhNubj\)}(hX\**Parameters** ``struct irq_desc *desc`` the interrupt description structure for this irq 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)}(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:509: ./kernel/irq/chip.chMhjubj|)}(hhh]j)}(h``struct irq_desc *desc`` the interrupt description structure for this irq Simple interrupts are either sent from a demultiplexing interrupt handler or come from hardware, where no interrupt hardware control is necessary. 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:509: ./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:509: ./kernel/irq/chip.chMhjubjo)}(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:509: ./kernel/irq/chip.chMhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1j{hjubjo)}(h**Note**h]jf)}(hj h]hNote}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj ubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMhjubj|)}(hhh]j)}(hUThe caller is expected to handle the ack, clear, mask and unmask issues if necessary.h](j)}(h9The caller is expected to handle the ack, clear, mask andh]h9The caller is expected to handle the ack, clear, mask and}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMhj$ubj)}(hhh]jo)}(hunmask issues if necessary.h]hunmask issues if necessary.}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMhj7ubah}(h]h ]h"]h$]h&]uh1jhj$ubeh}(h]h ]h"]h$]h&]uh1jhj6hMhj!ubah}(h]h ]h"]h$]h&]uh1j{hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9!handle_untracked_irq (C function)c.handle_untracked_irqhNtauh1j,hjuhhhNhNubj>)}(hhh](jC)}(h1void handle_untracked_irq (struct irq_desc *desc)h]jI)}(h0void handle_untracked_irq(struct irq_desc *desc)h](jO)}(hvoidh]hvoid}(hj{hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjwhhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chM=ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjwhhhjhM=ubjr)}(hhandle_untracked_irqh]jx)}(hhandle_untracked_irqh]hhandle_untracked_irq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjwhhhjhM=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_untracked_irqasbuh1hhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hjhhhNhNubah}(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&]hhuh1jhjwhhhjhM=ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjshhhjhM=ubah}(h]jnah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhM=hjphhubj5)}(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:509: ./kernel/irq/chip.chM1hj8hhubah}(h]h ]h"]h$]h&]uh1j4hjphhhjhM=ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjSjWjSjXjYjZuh1j=hhhjuhNhNubj\)}(hX**Parameters** ``struct irq_desc *desc`` the interrupt description structure for this irq 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:509: ./kernel/irq/chip.chM5hjWubj|)}(hhh]j)}(hXh``struct irq_desc *desc`` the interrupt description structure for this irq 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. h](j)}(h``struct irq_desc *desc``h]j)}(hj|h]hstruct irq_desc *desc}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjzubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chM8hjvubj)}(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:509: ./kernel/irq/chip.chM2hjubjo)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chM4hjubeh}(h]h ]h"]h$]h&]uh1jhjvubeh}(h]h ]h"]h$]h&]uh1jhjhM8hjsubah}(h]h ]h"]h$]h&]uh1j{hjWubjo)}(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:509: ./kernel/irq/chip.chM:hjWubj|)}(hhh]j)}(hmLike handle_simple_irq, the caller is expected to handle the ack, clear, mask and unmask issues if necessary.h](j)}(h8Like handle_simple_irq, the caller is expected to handleh]h8Like handle_simple_irq, the caller is expected to handle}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chM:hjubj)}(hhh]jo)}(h4the ack, clear, mask and unmask issues if necessary.h]h4the ack, clear, mask and unmask issues if necessary.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chM;hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM:hjubah}(h]h ]h"]h$]h&]uh1j{hjWubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9handle_level_irq (C function)c.handle_level_irqhNtauh1j,hjuhhhNhNubj>)}(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}(hj7hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj3hhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMtubja)}(h h]h }(hjFhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj3hhhjEhMtubjr)}(hhandle_level_irqh]jx)}(hhandle_level_irqh]hhandle_level_irq}(hjXhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjTubah}(h]h ](jjeh"]h$]h&]hhuh1jqhj3hhhjEhMtubj)}(h(struct irq_desc *desc)h]j)}(hstruct irq_desc *desch](j)}(hjh]hstruct}(hjthhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjpubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjpubh)}(hhh]jx)}(hirq_desch]hirq_desc}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjmodnameN classnameNjj)}j]j)}jjZsbc.handle_level_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&]hhuh1jhj3hhhjEhMtubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj/hhhjEhMtubah}(h]j*ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjEhMthj,hhubj5)}(hhh]jo)}(hLevel type irq handlerh]hLevel type irq handler}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMlhjhhubah}(h]h ]h"]h$]h&]uh1j4hj,hhhjEhMtubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjuhNhNubj\)}(hXS**Parameters** ``struct irq_desc *desc`` the interrupt description structure for this irq 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)}(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:509: ./kernel/irq/chip.chMphjubj|)}(hhh]j)}(hX9``struct irq_desc *desc`` the interrupt description structure for this irq 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](j)}(h``struct irq_desc *desc``h]j)}(hj8h]hstruct irq_desc *desc}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMqhj2ubj)}(hhh](jo)}(h0the interrupt description structure for this irqh]h0the interrupt description structure for this irq}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMmhjNubjo)}(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.}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMohjNubeh}(h]h ]h"]h$]h&]uh1jhj2ubeh}(h]h ]h"]h$]h&]uh1jhjMhMqhj/ubah}(h]h ]h"]h$]h&]uh1j{hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9handle_fasteoi_irq (C function)c.handle_fasteoi_irqhNtauh1j,hjuhhhNhNubj>)}(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:509: ./kernel/irq/chip.chMubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhMubjr)}(hhandle_fasteoi_irqh]jx)}(hhandle_fasteoi_irqh]hhandle_fasteoi_irq}(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}(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_fasteoi_irqasbuh1hhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hdesch]hdesc}(hj7hhhNhNubah}(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)}(h'irq handler for transparent controllersh]h'irq handler for transparent controllers}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMhj^hhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjyjWjyjXjYjZuh1j=hhhjuhNhNubj\)}(hXE**Parameters** ``struct irq_desc *desc`` the interrupt description structure for this irq 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:509: ./kernel/irq/chip.chMhj}ubj|)}(hhh]j)}(hX+``struct irq_desc *desc`` the interrupt description structure for this irq 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:509: ./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:509: ./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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1j{hj}ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9handle_fasteoi_nmi (C function)c.handle_fasteoi_nmihNtauh1j,hjuhhhNhNubj>)}(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}(hj hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./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}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj(ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhMubj)}(h(struct irq_desc *desc)h]j)}(hstruct irq_desc *desch](j)}(hjh]hstruct}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDubja)}(h h]h }(hjUhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjDubh)}(hhh]jx)}(hirq_desch]hirq_desc}(hjfhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjcubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjhmodnameN classnameNjj)}j]j)}jj.sbc.handle_fasteoi_nmiasbuh1hhjDubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjDubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDubjx)}(hdesch]hdesc}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjDubeh}(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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMhjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjuhNhNubj\)}(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)}(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:509: ./kernel/irq/chip.chMhjubj|)}(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)}(hj h]hstruct irq_desc *desc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./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&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMhj"ubjo)}(hIA simple NMI-safe handler, considering the restrictions from request_nmi.h]hIA simple NMI-safe handler, considering the restrictions from request_nmi.}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMhj"ubjo)}(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.}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMhj"ubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj!hMhjubah}(h]h ]h"]h$]h&]uh1j{hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9handle_edge_irq (C function)c.handle_edge_irqhNtauh1j,hjuhhhNhNubj>)}(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:509: ./kernel/irq/chip.chMubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhMubjr)}(hhandle_edge_irqh]jx)}(hhandle_edge_irqh]hhandle_edge_irq}(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}(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_edge_irqasbuh1hhjubja)}(h h]h }(hjhhhNhNubah}(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&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj|hhhjhMubah}(h]jwah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhMhjyhhubj5)}(hhh]jo)}(hedge type IRQ handlerh]hedge type IRQ handler}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMhjAhhubah}(h]h ]h"]h$]h&]uh1j4hjyhhhjhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj\jWj\jXjYjZuh1j=hhhjuhNhNubj\)}(hX**Parameters** ``struct irq_desc *desc`` the interrupt description structure for this irq 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)}(hjfh]h Parameters}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjdubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chM hj`ubj|)}(hhh]j)}(hX``struct irq_desc *desc`` the interrupt description structure for this irq 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](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:509: ./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:509: ./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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj|ubah}(h]h ]h"]h$]h&]uh1j{hj`ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9#handle_fasteoi_ack_irq (C function)c.handle_fasteoi_ack_irqhNtauh1j,hjuhhhNhNubj>)}(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:509: ./kernel/irq/chip.chMubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhMubjr)}(hhandle_fasteoi_ack_irqh]jx)}(hhandle_fasteoi_ack_irqh]hhandle_fasteoi_ack_irq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj ubah}(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 }(hj8hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj'ubh)}(hhh]jx)}(hirq_desch]hirq_desc}(hjIhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjFubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjKmodnameN classnameNjj)}j]j)}jjsbc.handle_fasteoi_ack_irqasbuh1hhj'ubja)}(h h]h }(hjihhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj'ubj)}(hjh]h*}(hjwhhhNhNubah}(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&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhMubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhMhjhhubj5)}(hhh]jo)}(hAirq handler for edge hierarchy stacked on transparent controllersh]hAirq handler for edge hierarchy stacked on transparent controllers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMhjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjuhNhNubj\)}(h**Parameters** ``struct irq_desc *desc`` the interrupt description structure for this irq 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)}(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:509: ./kernel/irq/chip.chMhjubj|)}(hhh]j)}(h``struct irq_desc *desc`` the interrupt description structure for this irq Like handle_fasteoi_irq(), but for use with hierarchy where the irq_chip also needs to have its ->irq_ack() function called.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:509: ./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:509: ./kernel/irq/chip.chMhjubjo)}(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:509: ./kernel/irq/chip.chMhjubeh}(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[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9$handle_fasteoi_mask_irq (C function)c.handle_fasteoi_mask_irqhNtauh1j,hjuhhhNhNubj>)}(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}(hjXhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjThhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMubja)}(h h]h }(hjghhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjThhhjfhMubjr)}(hhandle_fasteoi_mask_irqh]jx)}(hhandle_fasteoi_mask_irqh]hhandle_fasteoi_mask_irq}(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjuubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjThhhjfhMubj)}(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)}jj{sbc.handle_fasteoi_mask_irqasbuh1hhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hjhhhNhNubah}(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&]hhuh1jhjThhhjfhMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjPhhhjfhMubah}(h]jKah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjfhMhjMhhubj5)}(hhh]jo)}(hBirq handler for level hierarchy stacked on transparent controllersh]hBirq handler for level hierarchy stacked on transparent controllers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMhjhhubah}(h]h ]h"]h$]h&]uh1j4hjMhhhjfhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj0jWj0jXjYjZuh1j=hhhjuhNhNubj\)}(h**Parameters** ``struct irq_desc *desc`` the interrupt description structure for this irq 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)}(hj:h]h Parameters}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj8ubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMhj4ubj|)}(hhh]j)}(h``struct irq_desc *desc`` the interrupt description structure for this irq Like handle_fasteoi_irq(), but for use with hierarchy where the irq_chip also needs to have its ->irq_mask_ack() function called.h](j)}(h``struct irq_desc *desc``h]j)}(hjYh]hstruct irq_desc *desc}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMhjSubj)}(hhh](jo)}(h0the interrupt description structure for this irqh]h0the interrupt description structure for this irq}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMhjoubjo)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMhjoubeh}(h]h ]h"]h$]h&]uh1jhjSubeh}(h]h ]h"]h$]h&]uh1jhjnhMhjPubah}(h]h ]h"]h$]h&]uh1j{hj4ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9&irq_chip_set_parent_state (C function)c.irq_chip_set_parent_statehNtauh1j,hjuhhhNhNubj>)}(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:509: ./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}(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}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.irq_chip_set_parent_stateasbuh1hhjubja)}(h h]h }(hj=hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hjKhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hdatah]hdata}(hjXhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(henum irqchip_irq_state whichh](j)}(hj%h]henum}(hjqhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjmubja)}(h h]h }(hj~hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjmubh)}(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]j9c.irq_chip_set_parent_stateasbuh1hhjmubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjmubjx)}(hwhichh]hwhich}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjmubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hbool valh](jO)}(hjuh]hbool}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hvalh]hval}(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)}(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:509: ./kernel/irq/chip.chMhjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj1jWj1jXjYjZuh1j=hhhjuhNhNubj\)}(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)}(hj;h]h Parameters}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj9ubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMhj5ubj|)}(hhh](j)}(h=``struct irq_data *data`` Pointer to interrupt specific data h](j)}(h``struct irq_data *data``h]j)}(hjZh]hstruct irq_data *data}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMhjTubj)}(hhh]jo)}(h"Pointer to interrupt specific datah]h"Pointer to interrupt specific data}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjohMhjpubah}(h]h ]h"]h$]h&]uh1jhjTubeh}(h]h ]h"]h$]h&]uh1jhjohMhjQubj)}(hO``enum irqchip_irq_state which`` State to be restored (one of IRQCHIP_STATE_*) 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&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMhjubj)}(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&]uh1jnhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjQubj)}(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:509: ./kernel/irq/chip.chMhjubj)}(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&]uh1jnhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjQubeh}(h]h ]h"]h$]h&]uh1j{hj5ubjo)}(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:509: ./kernel/irq/chip.chMhj5ubjo)}(hEConditional success, if the underlying irqchip does not implement it.h]hEConditional success, if the underlying irqchip does not implement it.}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMhj5ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9&irq_chip_get_parent_state (C function)c.irq_chip_get_parent_statehNtauh1j,hjuhhhNhNubj>)}(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}(hjZhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjVhhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMubja)}(h h]h }(hjihhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjVhhhjhhMubjr)}(hirq_chip_get_parent_stateh]jx)}(hirq_chip_get_parent_stateh]hirq_chip_get_parent_state}(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjwubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjVhhhjhhMubj)}(hB(struct irq_data *data, enum irqchip_irq_state which, bool *state)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_get_parent_stateasbuh1hhjubja)}(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)}(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]jc.irq_chip_get_parent_stateasbuh1hhjubja)}(h h]h }(hjEhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hwhichh]hwhich}(hjShhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h bool *stateh](jO)}(hjuh]hbool}(hjlhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhubja)}(h h]h }(hjyhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhubjx)}(hstateh]hstate}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjhubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjVhhhjhhMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjRhhhjhhMubah}(h]jMah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhhMhjOhhubj5)}(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:509: ./kernel/irq/chip.chMhjhhubah}(h]h ]h"]h$]h&]uh1j4hjOhhhjhhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjuhNhNubj\)}(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:509: ./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:509: ./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)}(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)}(hj8h]henum irqchip_irq_state which}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMhj2ubj)}(hhh]jo)}(h/one of IRQCHIP_STATE_* the caller wants to knowh]h/one of IRQCHIP_STATE_* the caller wants to know}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhMhjNubah}(h]h ]h"]h$]h&]uh1jhj2ubeh}(h]h ]h"]h$]h&]uh1jhjMhMhjubj)}(hG``bool *state`` a pointer to a boolean where the state is to be stored h](j)}(h``bool *state``h]j)}(hjqh]h bool *state}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMhjkubj)}(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&]uh1jnhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjkubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubeh}(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:509: ./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:509: ./kernel/irq/chip.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9#irq_chip_enable_parent (C function)c.irq_chip_enable_parenthNtauh1j,hjuhhhNhNubj>)}(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}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhMubjr)}(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&]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 }(hj;hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj*ubh)}(hhh]jx)}(hirq_datah]hirq_data}(hjLhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjIubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjNmodnameN classnameNjj)}j]j)}jjsbc.irq_chip_enable_parentasbuh1hhj*ubja)}(h h]h }(hjlhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj*ubj)}(hjh]h*}(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubjx)}(hdatah]hdata}(hjhhhNhNubah}(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)}(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:509: ./kernel/irq/chip.chMhjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjuhNhNubj\)}(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:509: ./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:509: ./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:509: ./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[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9$irq_chip_disable_parent (C function)c.irq_chip_disable_parenthNtauh1j,hjuhhhNhNubj>)}(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}(hjLhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjHhhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chM'ubja)}(h h]h }(hj[hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjHhhhjZhM'ubjr)}(hirq_chip_disable_parenth]jx)}(hirq_chip_disable_parenth]hirq_chip_disable_parent}(hjmhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjiubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjHhhhjZhM'ubj)}(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)}jjosbc.irq_chip_disable_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&]hhuh1jhjHhhhjZhM'ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjDhhhjZhM'ubah}(h]j?ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjZhM'hjAhhubj5)}(hhh]jo)}(h7Disable the parent interrupt (defaults to mask if NULL)h]h7Disable the parent interrupt (defaults to mask if NULL)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chM#hj hhubah}(h]h ]h"]h$]h&]uh1j4hjAhhhjZhM'ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj$jWj$jXjYjZuh1j=hhhjuhNhNubj\)}(hN**Parameters** ``struct irq_data *data`` Pointer to interrupt specific datah](jo)}(h**Parameters**h]jf)}(hj.h]h Parameters}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj,ubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chM'hj(ubj|)}(hhh]j)}(h<``struct irq_data *data`` Pointer to interrupt specific datah](j)}(h``struct irq_data *data``h]j)}(hjMh]hstruct irq_data *data}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chM)hjGubj)}(hhh]jo)}(h"Pointer to interrupt specific datah]h"Pointer to interrupt specific data}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chM%hjcubah}(h]h ]h"]h$]h&]uh1jhjGubeh}(h]h ]h"]h$]h&]uh1jhjbhM)hjDubah}(h]h ]h"]h$]h&]uh1j{hj(ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9 irq_chip_ack_parent (C function)c.irq_chip_ack_parenthNtauh1j,hjuhhhNhNubj>)}(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}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chM5ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhM5ubjr)}(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&]hhuh1jqhjhhhjhM5ubj)}(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 }(hj"hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hj0hhhNhNubah}(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&]hhuh1jhjhhhjhM5ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhM5ubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhM5hjhhubj5)}(hhh]jo)}(h Acknowledge the parent interrupth]h Acknowledge the parent interrupt}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chM2hjdhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhM5ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjuhNhNubj\)}(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:509: ./kernel/irq/chip.chM6hjubj|)}(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:509: ./kernel/irq/chip.chM8hjubj)}(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:509: ./kernel/irq/chip.chM3hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM8hjubah}(h]h ]h"]h$]h&]uh1j{hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9!irq_chip_mask_parent (C function)c.irq_chip_mask_parenthNtauh1j,hjuhhhNhNubj>)}(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:509: ./kernel/irq/chip.chM@ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhM@ubjr)}(hirq_chip_mask_parenth]jx)}(hirq_chip_mask_parenth]hirq_chip_mask_parent}(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 }(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 reftargetj_modnameN classnameNjj)}j]j)}jj%sbc.irq_chip_mask_parentasbuh1hhj;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&]noemphhhuh1jhj7ubah}(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)}(hMask the parent interrupth]hMask the parent interrupt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chM=hjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhM@ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjuhNhNubj\)}(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:509: ./kernel/irq/chip.chMAhjubj|)}(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:509: ./kernel/irq/chip.chMChjubj)}(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:509: ./kernel/irq/chip.chM>hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMChjubah}(h]h ]h"]h$]h&]uh1j{hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9%irq_chip_mask_ack_parent (C function)c.irq_chip_mask_ack_parenthNtauh1j,hjuhhhNhNubj>)}(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}(hj]hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjYhhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMKubja)}(h h]h }(hjlhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjYhhhjkhMKubjr)}(hirq_chip_mask_ack_parenth]jx)}(hirq_chip_mask_ack_parenth]hirq_chip_mask_ack_parent}(hj~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjzubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjYhhhjkhMKubj)}(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_mask_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&]hhuh1jhjYhhhjkhMKubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjUhhhjkhMKubah}(h]jPah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjkhMKhjRhhubj5)}(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:509: ./kernel/irq/chip.chMHhjhhubah}(h]h ]h"]h$]h&]uh1j4hjRhhhjkhMKubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj5jWj5jXjYjZuh1j=hhhjuhNhNubj\)}(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:509: ./kernel/irq/chip.chMLhj9ubj|)}(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:509: ./kernel/irq/chip.chMNhjXubj)}(hhh]jo)}(h"Pointer to interrupt specific datah]h"Pointer to interrupt specific data}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMIhjtubah}(h]h ]h"]h$]h&]uh1jhjXubeh}(h]h ]h"]h$]h&]uh1jhjshMNhjUubah}(h]h ]h"]h$]h&]uh1j{hj9ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9#irq_chip_unmask_parent (C function)c.irq_chip_unmask_parenthNtauh1j,hjuhhhNhNubj>)}(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:509: ./kernel/irq/chip.chMVubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhMVubjr)}(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&]hhuh1jqhjhhhjhMVubj)}(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 }(hj3hhhNhNubah}(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&]noemphhhuh1jhjubah}(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)}(hUnmask the parent interrupth]hUnmask the parent interrupt}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMShjuhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhMVubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjuhNhNubj\)}(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:509: ./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:509: ./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:509: ./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[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9 irq_chip_eoi_parent (C function)c.irq_chip_eoi_parenthNtauh1j,hjuhhhNhNubj>)}(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:509: ./kernel/irq/chip.chMaubja)}(h h]h }(hj"hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhj!hMaubjr)}(hirq_chip_eoi_parenth]jx)}(hirq_chip_eoi_parenth]hirq_chip_eoi_parent}(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj0ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhj!hMaubj)}(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}(hjnhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjkubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjpmodnameN classnameNjj)}j]j)}jj6sbc.irq_chip_eoi_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&]hhuh1jhjhhhj!hMaubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj hhhj!hMaubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhj!hMahjhhubj5)}(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:509: ./kernel/irq/chip.chM^hjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhj!hMaubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjuhNhNubj\)}(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:509: ./kernel/irq/chip.chMbhjubj|)}(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:509: ./kernel/irq/chip.chMdhjubj)}(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:509: ./kernel/irq/chip.chM_hj*ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj)hMdhj ubah}(h]h ]h"]h$]h&]uh1j{hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9)irq_chip_set_affinity_parent (C function)c.irq_chip_set_affinity_parenthNtauh1j,hjuhhhNhNubj>)}(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}(hjnhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjjhhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMpubja)}(h h]h }(hj}hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjjhhhj|hMpubjr)}(hirq_chip_set_affinity_parenth]jx)}(hirq_chip_set_affinity_parenth]hirq_chip_set_affinity_parent}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjjhhhj|hMpubj)}(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&]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_set_affinity_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)}(hconst struct cpumask *desth](j)}(hjmh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubja)}(h h]h }(hj*hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]hstruct}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubja)}(h h]h }(hjEhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubh)}(hhh]jx)}(hcpumaskh]hcpumask}(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjSubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjXmodnameN classnameNjj)}j]jc.irq_chip_set_affinity_parentasbuh1hhjubja)}(h h]h }(hjthhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hdesth]hdest}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h bool forceh](jO)}(hjuh]hbool}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hforceh]hforce}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjjhhhj|hMpubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjfhhhj|hMpubah}(h]jaah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhj|hMphjchhubj5)}(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:509: ./kernel/irq/chip.chMihjhhubah}(h]h ]h"]h$]h&]uh1j4hjchhhj|hMpubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjuhNhNubj\)}(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&]uh1jehj ubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMmhj ubj|)}(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}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMjhj(ubj)}(hhh]jo)}(h"Pointer to interrupt specific datah]h"Pointer to interrupt specific data}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjChMjhjDubah}(h]h ]h"]h$]h&]uh1jhj(ubeh}(h]h ]h"]h$]h&]uh1jhjChMjhj%ubj)}(h8``const struct cpumask *dest`` The affinity mask to set h](j)}(h``const struct cpumask *dest``h]j)}(hjgh]hconst struct cpumask *dest}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jhjeubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMkhjaubj)}(hhh]jo)}(hThe affinity mask to seth]hThe affinity mask to set}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj|hMkhj}ubah}(h]h ]h"]h$]h&]uh1jhjaubeh}(h]h ]h"]h$]h&]uh1jhj|hMkhj%ubj)}(h?``bool force`` Flag to enforce setting (disable online checks) h](j)}(h``bool force``h]j)}(hjh]h bool force}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMlhjubj)}(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&]uh1jnhjhMlhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMlhj%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:509: ./kernel/irq/chip.chMnhj 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:509: ./kernel/irq/chip.chMnhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9%irq_chip_set_type_parent (C function)c.irq_chip_set_type_parenthNtauh1j,hjuhhhNhNubj>)}(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}(hj hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMubja)}(h h]h }(hj/hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhj.hMubjr)}(hirq_chip_set_type_parenth]jx)}(hirq_chip_set_type_parenth]hirq_chip_set_type_parent}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj=ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhj.hMubj)}(h*(struct irq_data *data, unsigned int type)h](j)}(hstruct irq_data *datah](j)}(hjh]hstruct}(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubja)}(h h]h }(hjjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjYubh)}(hhh]jx)}(hirq_datah]hirq_data}(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjxubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetj}modnameN classnameNjj)}j]j)}jjCsbc.irq_chip_set_type_parentasbuh1hhjYubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjYubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubjx)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjYubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjUubj)}(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&]noemphhhuh1jhjUubeh}(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$Set IRQ type on the parent interrupth]h$Set IRQ type on the parent interrupt}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chM|hj.hhubah}(h]h ]h"]h$]h&]uh1j4hjhhhj.hMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjIjWjIjXjYjZuh1j=hhhjuhNhNubj\)}(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)}(hjSh]h Parameters}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjQubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMhjMubj|)}(hhh](j)}(h=``struct irq_data *data`` Pointer to interrupt specific data h](j)}(h``struct irq_data *data``h]j)}(hjrh]hstruct irq_data *data}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jhjpubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chM}hjlubj)}(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&]uh1jhjlubeh}(h]h ]h"]h$]h&]uh1jhjhM}hjiubj)}(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:509: ./kernel/irq/chip.chM~hjubj)}(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&]uh1jnhjhM~hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM~hjiubeh}(h]h ]h"]h$]h&]uh1j{hjMubjo)}(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:509: ./kernel/irq/chip.chMhjMubjo)}(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:509: ./kernel/irq/chip.chMhjMubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9)irq_chip_retrigger_hierarchy (C function)c.irq_chip_retrigger_hierarchyhNtauh1j,hjuhhhNhNubj>)}(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}(hj+hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj'hhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMubja)}(h h]h }(hj:hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj'hhhj9hMubjr)}(hirq_chip_retrigger_hierarchyh]jx)}(hirq_chip_retrigger_hierarchyh]hirq_chip_retrigger_hierarchy}(hjLhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjHubah}(h]h ](jjeh"]h$]h&]hhuh1jqhj'hhhj9hMubj)}(h(struct irq_data *data)h]j)}(hstruct irq_data *datah](j)}(hjh]hstruct}(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjdubja)}(h h]h }(hjuhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjdubh)}(hhh]jx)}(hirq_datah]hirq_data}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjmodnameN classnameNjj)}j]j)}jjNsbc.irq_chip_retrigger_hierarchyasbuh1hhjdubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjdubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjdubjx)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjdubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj`ubah}(h]h ]h"]h$]h&]hhuh1jhj'hhhj9hMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj#hhhj9hMubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhj9hMhj hhubj5)}(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:509: ./kernel/irq/chip.chMhjhhubah}(h]h ]h"]h$]h&]uh1j4hj hhhj9hMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjuhNhNubj\)}(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)}(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:509: ./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:509: ./kernel/irq/chip.chMhj&ubj)}(hhh]jo)}(h"Pointer to interrupt specific datah]h"Pointer to interrupt specific data}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjAhMhjBubah}(h]h ]h"]h$]h&]uh1jhj&ubeh}(h]h ]h"]h$]h&]uh1jhjAhMhj#ubah}(h]h ]h"]h$]h&]uh1j{hjubjo)}(h**Description**h]jf)}(hjgh]h Description}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jehjeubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMhjubjo)}(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.}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9.irq_chip_set_vcpu_affinity_parent (C function)#c.irq_chip_set_vcpu_affinity_parenthNtauh1j,hjuhhhNhNubj>)}(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&]uh1jNhjhhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhMubjr)}(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&]hhuh1jqhjhhhjhMubj)}(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 reftargetj modnameN classnameNjj)}j]j)}jjsb#c.irq_chip_set_vcpu_affinity_parentasbuh1hhjubja)}(h h]h }(hj'hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hdatah]hdata}(hjBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hvoid *vcpu_infoh](jO)}(hvoidh]hvoid}(hj[hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjWubja)}(h h]h }(hjihhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjWubj)}(hjh]h*}(hjwhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWubjx)}(h vcpu_infoh]h vcpu_info}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjWubeh}(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)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:509: ./kernel/irq/chip.chMhjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjuhNhNubj\)}(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:509: ./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:509: ./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)}(h1``void *vcpu_info`` The vcpu affinity informationh](j)}(h``void *vcpu_info``h]j)}(hj(h]hvoid *vcpu_info}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMhj"ubj)}(hhh]jo)}(hThe vcpu affinity informationh]hThe vcpu affinity information}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMhj>ubah}(h]h ]h"]h$]h&]uh1jhj"ubeh}(h]h ]h"]h$]h&]uh1jhj=hMhjubeh}(h]h ]h"]h$]h&]uh1j{hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9%irq_chip_set_wake_parent (C function)c.irq_chip_set_wake_parenthNtauh1j,hjuhhhNhNubj>)}(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}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj~hhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj~hhhjhMubjr)}(hirq_chip_set_wake_parenth]jx)}(hirq_chip_set_wake_parenth]hirq_chip_set_wake_parent}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhj~hhhjhMubj)}(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)}jjsbc.irq_chip_set_wake_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)}(hunsigned int onh](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)}(honh]hon}(hjihhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj-ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhj~hhhjhMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjzhhhjhMubah}(h]juah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhMhjwhhubj5)}(hhh]jo)}(h)Set/reset wake-up on the parent interrupth]h)Set/reset wake-up on the parent interrupt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMhjhhubah}(h]h ]h"]h$]h&]uh1j4hjwhhhjhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjuhNhNubj\)}(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:509: ./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:509: ./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)}(hO``unsigned int on`` Whether to set or reset the wake-up capability of this irq h](j)}(h``unsigned int on``h]j)}(hj h]hunsigned int on}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMhjubj)}(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}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj"hMhj#ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj"hMhjubeh}(h]h ]h"]h$]h&]uh1j{hjubjo)}(h**Description**h]jf)}(hjHh]h Description}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjFubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./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.}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjuhhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9.irq_chip_request_resources_parent (C function)#c.irq_chip_request_resources_parenthNtauh1j,hjuhhhNhNubj>)}(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:509: ./kernel/irq/chip.chMubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhMubjr)}(h!irq_chip_release_resources_parenth]jx)}(h!irq_chip_release_resources_parenth]h!irq_chip_release_resources_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 }(hj2hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj!ubh)}(hhh]jx)}(hirq_datah]hirq_data}(hjChhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj@ubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjEmodnameN classnameNjj)}j]j)}jj sb#c.irq_chip_release_resources_parentasbuh1hhj!ubja)}(h h]h }(hjchhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj!ubj)}(hjh]h*}(hjqhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubjx)}(hdatah]hdata}(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)Release resources on the parent interrupth]h)Release resources on the parent interrupt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:509: ./kernel/irq/chip.chMhjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhjuhNhNubj\)}(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:509: ./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:509: ./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:509: ./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[hjuhhhNhNubeh}(h]public-functions-providedah ]h"]public functions providedah$]h&]uh1j8hj:hhhjMhMubj9)}(hhh](j>)}(hInternal Functions Providedh]hInternal Functions Provided}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1j=hj2hhhjMhMubjo)}(hPThis chapter contains the autogenerated documentation of the internal functions.h]hPThis chapter contains the autogenerated documentation of the internal functions.}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjMhMhj2hhubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_get_nr_irqs (C function)c.irq_get_nr_irqshNtauh1j,hj2hhhNhNubj>)}(hhh](jC)}(h#unsigned int irq_get_nr_irqs (void)h]jI)}(h"unsigned int irq_get_nr_irqs(void)h](jO)}(hunsignedh]hunsigned}(hjjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjfhhhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/irqdesc.chKubja)}(h h]h }(hjyhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjfhhhjxhKubjO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjfhhhjxhKubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjfhhhjxhKubjr)}(hirq_get_nr_irqsh]jx)}(hirq_get_nr_irqsh]hirq_get_nr_irqs}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjfhhhjxhKubj)}(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&]hhuh1jhjfhhhjxhKubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjbhhhjxhKubah}(h]j]ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjxhKhj_hhubj5)}(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:518: ./kernel/irq/irqdesc.chKhjhhubah}(h]h ]h"]h$]h&]uh1j4hj_hhhjxhKubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhj2hNhNubj\)}(h'**Parameters** ``void`` no argumentsh](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:518: ./kernel/irq/irqdesc.chKhj ubj|)}(hhh]j)}(h``void`` no argumentsh](j)}(h``void``h]j)}(hj.h]hvoid}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,ubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/irqdesc.chKhj(ubj)}(hhh]jo)}(h no argumentsh]h no arguments}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/irqdesc.chKhjDubah}(h]h ]h"]h$]h&]uh1jhj(ubeh}(h]h ]h"]h$]h&]uh1jhjChKhj%ubah}(h]h ]h"]h$]h&]uh1j{hj ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj2hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_set_nr_irqs (C function)c.irq_set_nr_irqshNtauh1j,hj2hhhNhNubj>)}(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}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/irqdesc.chKubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhKubjO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhjhKubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhKubjr)}(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&]hhuh1jqhjhhhjhKubj)}(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 }(hj hhhNhNubah}(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&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhKubah}(h]j{ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhKhj}hhubj5)}(hhh]jo)}(h5Set the number of interrupts supported by the system.h]h5Set the number of interrupts supported by the system.}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/irqdesc.chKhj@hhubah}(h]h ]h"]h$]h&]uh1j4hj}hhhjhKubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj[jWj[jXjYjZuh1j=hhhj2hNhNubj\)}(hT**Parameters** ``unsigned int nr`` New number of interrupts. **Return** **nr**.h](jo)}(h**Parameters**h]jf)}(hjeh]h Parameters}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jehjcubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/irqdesc.chKhj_ubj|)}(hhh]j)}(h.``unsigned int nr`` New number of interrupts. h](j)}(h``unsigned int nr``h]j)}(hjh]hunsigned int nr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/irqdesc.chKhj~ubj)}(hhh]jo)}(hNew number of interrupts.h]hNew number of interrupts.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhKhjubah}(h]h ]h"]h$]h&]uh1jhj~ubeh}(h]h ]h"]h$]h&]uh1jhjhKhj{ubah}(h]h ]h"]h$]h&]uh1j{hj_ubjo)}(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:518: ./kernel/irq/irqdesc.chKhj_ubjo)}(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:518: ./kernel/irq/irqdesc.chKhj_ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj2hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9generic_handle_irq (C function)c.generic_handle_irqhNtauh1j,hj2hhhNhNubj>)}(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:518: ./kernel/irq/irqdesc.chMubja)}(h h]h }(hj!hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhj hMubjr)}(hgeneric_handle_irqh]jx)}(hgeneric_handle_irqh]hgeneric_handle_irq}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj/ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhj hMubj)}(h(unsigned int irq)h]j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hjOhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjKubja)}(h h]h }(hj]hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjKubjO)}(hinth]hint}(hjkhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjKubja)}(h h]h }(hjyhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjKubjx)}(hirqh]hirq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjKubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjGubah}(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 hMhjhhubj5)}(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:518: ./kernel/irq/irqdesc.chMhjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhj hMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhj2hNhNubj\)}(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:518: ./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:518: ./kernel/irq/irqdesc.chMhjubj)}(hhh]jo)}(hThe irq number to handleh]hThe irq number to handle}(hj hhhNhNubah}(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)}(hj-h]hReturn}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj+ubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/irqdesc.chMhjubjo)}(h10 on success, or -EINVAL if conversion has failedh]h10 on success, or -EINVAL if conversion has failed}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/irqdesc.chMhjubjTw)}(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.}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/irqdesc.chMhjRubah}(h]h ]h"]h$]h&]uh1jSwhjdhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj2hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9$generic_handle_irq_safe (C function)c.generic_handle_irq_safehNtauh1j,hj2hhhNhNubj>)}(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}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/irqdesc.chMubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhMubjr)}(hgeneric_handle_irq_safeh]jx)}(hgeneric_handle_irq_safeh]hgeneric_handle_irq_safe}(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}(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&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhMubah}(h]j~ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhMhjhhubj5)}(hhh]jo)}(h9Invoke the handler for a particular irq from any context.h]h9Invoke the handler for a particular irq from any context.}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/irqdesc.chMhj'hhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjBjWjBjXjYjZuh1j=hhhj2hNhNubj\)}(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)}(hjLh]h Parameters}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjJubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/irqdesc.chMhjFubj|)}(hhh]j)}(h.``unsigned int irq`` The irq number to handle h](j)}(h``unsigned int irq``h]j)}(hjkh]hunsigned int irq}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/irqdesc.chMhjeubj)}(hhh]jo)}(hThe irq number to handleh]hThe irq number to handle}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjeubeh}(h]h ]h"]h$]h&]uh1jhjhMhjbubah}(h]h ]h"]h$]h&]uh1j{hjFubjo)}(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:518: ./kernel/irq/irqdesc.chMhjFubjo)}(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:518: ./kernel/irq/irqdesc.chMhjFubjo)}(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:518: ./kernel/irq/irqdesc.chMhjFubjo)}(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:518: ./kernel/irq/irqdesc.chMhjFubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj2hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9&generic_handle_domain_irq (C function)c.generic_handle_domain_irqhNtauh1j,hj2hhhNhNubj>)}(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:518: ./kernel/irq/irqdesc.chMubja)}(h h]h }(hj!hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhj hMubjr)}(hgeneric_handle_domain_irqh]jx)}(hgeneric_handle_domain_irqh]hgeneric_handle_domain_irq}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj/ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhj hMubj)}(h/(struct irq_domain *domain, unsigned int hwirq)h](j)}(hstruct irq_domain *domainh](j)}(hjh]hstruct}(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjKubja)}(h h]h }(hj\hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjKubh)}(hhh]jx)}(h irq_domainh]h irq_domain}(hjmhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjjubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjomodnameN classnameNjj)}j]j)}jj5sbc.generic_handle_domain_irqasbuh1hhjKubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjKubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjKubjx)}(hdomainh]hdomain}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjKubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjGubj)}(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&]noemphhhuh1jhjGubeh}(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 hMhjhhubj5)}(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.}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/irqdesc.chMhj hhubah}(h]h ]h"]h$]h&]uh1j4hjhhhj hMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj;jWj;jXjYjZuh1j=hhhj2hNhNubj\)}(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)}(hjEh]h Parameters}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjCubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/irqdesc.chMhj?ubj|)}(hhh](j)}(hE``struct irq_domain *domain`` The domain where to perform the lookup h](j)}(h``struct irq_domain *domain``h]j)}(hjdh]hstruct irq_domain *domain}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/irqdesc.chMhj^ubj)}(hhh]jo)}(h&The domain where to perform the lookuph]h&The domain where to perform the lookup}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjyhMhjzubah}(h]h ]h"]h$]h&]uh1jhj^ubeh}(h]h ]h"]h$]h&]uh1jhjyhMhj[ubj)}(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:518: ./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&]uh1jhjhMhj[ubeh}(h]h ]h"]h$]h&]uh1j{hj?ubjo)}(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:518: ./kernel/irq/irqdesc.chMhj?ubjo)}(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:518: ./kernel/irq/irqdesc.chMhj?ubjTw)}(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:518: ./kernel/irq/irqdesc.chMhjubah}(h]h ]h"]h$]h&]uh1jSwhjhMhj?ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj2hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9&generic_handle_domain_nmi (C function)c.generic_handle_domain_nmihNtauh1j,hj2hhhNhNubj>)}(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}(hj6hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj2hhhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/irqdesc.chM)ubja)}(h h]h }(hjEhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj2hhhjDhM)ubjr)}(hgeneric_handle_domain_nmih]jx)}(hgeneric_handle_domain_nmih]hgeneric_handle_domain_nmi}(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjSubah}(h]h ](jjeh"]h$]h&]hhuh1jqhj2hhhjDhM)ubj)}(h/(struct irq_domain *domain, unsigned int hwirq)h](j)}(hstruct irq_domain *domainh](j)}(hjh]hstruct}(hjshhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjoubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjoubh)}(hhh]jx)}(h irq_domainh]h irq_domain}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjmodnameN classnameNjj)}j]j)}jjYsbc.generic_handle_domain_nmiasbuh1hhjoubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjoubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjoubjx)}(hdomainh]hdomain}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjoubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjkubj)}(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&]noemphhhuh1jhjkubeh}(h]h ]h"]h$]h&]hhuh1jhj2hhhjDhM)ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj.hhhjDhM)ubah}(h]j)ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjDhM)hj+hhubj5)}(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.}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/irqdesc.chMhjDhhubah}(h]h ]h"]h$]h&]uh1j4hj+hhhjDhM)ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj_jWj_jXjYjZuh1j=hhhj2hNhNubj\)}(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)}(hjih]h Parameters}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjgubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/irqdesc.chM#hjcubj|)}(hhh](j)}(hE``struct irq_domain *domain`` The domain where to perform the lookup h](j)}(h``struct irq_domain *domain``h]j)}(hjh]hstruct irq_domain *domain}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/irqdesc.chM!hjubj)}(hhh]jo)}(h&The domain where to perform the lookuph]h&The domain where to perform the lookup}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhM!hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM!hjubj)}(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:518: ./kernel/irq/irqdesc.chM"hjubj)}(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&]uh1jnhjhM"hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM"hjubeh}(h]h ]h"]h$]h&]uh1j{hjcubjo)}(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:518: ./kernel/irq/irqdesc.chM$hjcubjo)}(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:518: ./kernel/irq/irqdesc.chM$hjcubjTw)}(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.}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/irqdesc.chM&hj!ubah}(h]h ]h"]h$]h&]uh1jSwhj3hM&hjcubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj2hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_free_descs (C function)c.irq_free_descshNtauh1j,hj2hhhNhNubj>)}(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}(hjZhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjVhhhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/irqdesc.chM7ubja)}(h h]h }(hjihhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjVhhhjhhM7ubjr)}(hirq_free_descsh]jx)}(hirq_free_descsh]hirq_free_descs}(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjwubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjVhhhjhhM7ubj)}(h%(unsigned int from, unsigned int cnt)h](j)}(hunsigned int fromh](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)}(hfromh]hfrom}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(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}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjVhhhjhhM7ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjRhhhjhhM7ubah}(h]jMah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhhM7hjOhhubj5)}(hhh]jo)}(hfree irq descriptorsh]hfree irq descriptors}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/irqdesc.chM3hjGhhubah}(h]h ]h"]h$]h&]uh1j4hjOhhhjhhM7ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjbjWjbjXjYjZuh1j=hhhj2hNhNubj\)}(h|**Parameters** ``unsigned int from`` Start of descriptor range ``unsigned int cnt`` Number of consecutive irqs to freeh](jo)}(h**Parameters**h]jf)}(hjlh]h Parameters}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjjubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/irqdesc.chM7hjfubj|)}(hhh](j)}(h0``unsigned int from`` Start of descriptor range 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:518: ./kernel/irq/irqdesc.chM4hjubj)}(hhh]jo)}(hStart of descriptor rangeh]hStart of descriptor range}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhM4hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM4hjubj)}(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:518: ./kernel/irq/irqdesc.chM6hjubj)}(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:518: ./kernel/irq/irqdesc.chM5hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM6hjubeh}(h]h ]h"]h$]h&]uh1j{hjfubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj2hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9__irq_alloc_descs (C function)c.__irq_alloc_descshNtauh1j,hj2hhhNhNubj>)}(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:518: ./kernel/irq/irqdesc.chMSubja)}(h h]h }(hj-hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhj,hMSubh__ref}(hjhhhNhNubja)}(h h]h }(hj?hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhj,hMSubjr)}(h__irq_alloc_descsh]jx)}(h__irq_alloc_descsh]h__irq_alloc_descs}(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjMubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhj,hMSubj)}(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}(hjmhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjiubja)}(h h]h }(hj{hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjiubjx)}(hirqh]hirq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjiubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjeubj)}(hunsigned int fromh](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)}(hfromh]hfrom}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(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}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjeubj)}(hint nodeh](jO)}(hinth]hint}(hjDhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj@ubja)}(h h]h }(hjRhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj@ubjx)}(hnodeh]hnode}(hj`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj@ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjeubj)}(hstruct module *ownerh](j)}(hjh]hstruct}(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjuubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjuubh)}(hhh]jx)}(hmoduleh]hmodule}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjmodnameN classnameNjj)}j]j)}jjSsbc.__irq_alloc_descsasbuh1hhjuubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjuubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjuubjx)}(hownerh]howner}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjuubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjeubj)}(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}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj!ubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetj&modnameN classnameNjj)}j]jc.__irq_alloc_descsasbuh1hhjubja)}(h h]h }(hjBhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(haffinityh]haffinity}(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjeubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhj,hMSubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhj,hMSubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhj,hMShjhhubj5)}(hhh]jo)}(h2allocate and initialize a range of irq descriptorsh]h2allocate and initialize a range of irq descriptors}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/irqdesc.chMGhjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhj,hMSubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhj2hNhNubj\)}(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&]uh1jehjubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/irqdesc.chMKhjubj|)}(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:518: ./kernel/irq/irqdesc.chMHhjubj)}(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&]uh1jnhjhMHhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMHhjubj)}(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:518: ./kernel/irq/irqdesc.chMIhjubj)}(hhh]jo)}(h%Start the search from this irq numberh]h%Start the search from this irq number}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhMIhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMIhjubj)}(h=``unsigned int cnt`` Number of consecutive irqs to allocate. h](j)}(h``unsigned int cnt``h]j)}(hj:h]hunsigned int cnt}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/irqdesc.chMJhj4ubj)}(hhh]jo)}(h'Number of consecutive irqs to allocate.h]h'Number of consecutive irqs to allocate.}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjOhMJhjPubah}(h]h ]h"]h$]h&]uh1jhj4ubeh}(h]h ]h"]h$]h&]uh1jhjOhMJhjubj)}(hL``int node`` Preferred node on which the irq descriptor should be allocated h](j)}(h ``int node``h]j)}(hjsh]hint node}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjqubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/irqdesc.chMKhjmubj)}(hhh]jo)}(h>Preferred node on which the irq descriptor should be allocatedh]h>Preferred node on which the irq descriptor should be allocated}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhMKhjubah}(h]h ]h"]h$]h&]uh1jhjmubeh}(h]h ]h"]h$]h&]uh1jhjhMKhjubj)}(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:518: ./kernel/irq/irqdesc.chMLhjubj)}(hhh]jo)}(hOwning module (can be NULL)h]hOwning module (can be NULL)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhMLhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMLhjubj)}(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:518: ./kernel/irq/irqdesc.chMOhjubj)}(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:518: ./kernel/irq/irqdesc.chMMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMOhjubeh}(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&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/irqdesc.chMQhjubjo)}(h*Returns the first irq number or error codeh]h*Returns the first irq number or error code}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/irqdesc.chMQhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj2hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_get_next_irq (C function)c.irq_get_next_irqhNtauh1j,hj2hhhNhNubj>)}(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}(hjxhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjthhhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/irqdesc.chMubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjthhhjhMubjO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjthhhjhMubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjthhhjhMubjr)}(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&]hhuh1jqhjthhhjhMubj)}(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}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjthhhjhMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjphhhjhMubah}(h]jkah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhMhjmhhubj5)}(hhh]jo)}(hget next allocated irq numberh]hget next allocated irq number}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/irqdesc.chM}hj0hhubah}(h]h ]h"]h$]h&]uh1j4hjmhhhjhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjKjWjKjXjYjZuh1j=hhhj2hNhNubj\)}(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)}(hjUh]h Parameters}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjSubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/irqdesc.chMhjOubj|)}(hhh]j)}(h2``unsigned int offset`` where to start the search h](j)}(h``unsigned int offset``h]j)}(hjth]hunsigned int offset}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjrubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/irqdesc.chM~hjnubj)}(hhh]jo)}(hwhere to start the searchh]hwhere to start the search}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhM~hjubah}(h]h ]h"]h$]h&]uh1jhjnubeh}(h]h ]h"]h$]h&]uh1jhjhM~hjkubah}(h]h ]h"]h$]h&]uh1j{hjOubjo)}(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:518: ./kernel/irq/irqdesc.chMhjOubjo)}(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:518: ./kernel/irq/irqdesc.chMhjOubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj2hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9kstat_irqs_cpu (C function)c.kstat_irqs_cpuhNtauh1j,hj2hhhNhNubj>)}(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:518: ./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}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj-ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhMubj)}(h(unsigned int irq, int cpu)h](j)}(hunsigned int irqh](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}(hjihhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjIubja)}(h h]h }(hjwhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjIubjx)}(hirqh]hirq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjIubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjEubj)}(hint cpuh](jO)}(hinth]hint}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(hcpuh]hcpu}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjEubeh}(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:518: ./kernel/irq/irqdesc.chMhjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhj2hNhNubj\)}(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:518: ./kernel/irq/irqdesc.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&]uh1jhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/irqdesc.chMhjubj)}(hhh]jo)}(hThe interrupt numberh]hThe interrupt number}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj:hMhj;ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj:hMhjubj)}(h``int cpu`` The cpu number h](j)}(h ``int cpu``h]j)}(hj^h]hint cpu}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj\ubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/irqdesc.chMhjXubj)}(hhh]jo)}(hThe cpu numberh]hThe cpu number}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjshMhjtubah}(h]h ]h"]h$]h&]uh1jhjXubeh}(h]h ]h"]h$]h&]uh1jhjshMhjubeh}(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&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./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:518: ./kernel/irq/irqdesc.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj2hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9kstat_irqs_usr (C function)c.kstat_irqs_usrhNtauh1j,hj2hhhNhNubj>)}(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:518: ./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 }(hj-hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhMubjr)}(hkstat_irqs_usrh]jx)}(hkstat_irqs_usrh]hkstat_irqs_usr}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj;ubah}(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&]uh1jNhjWubja)}(h h]h }(hjihhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjWubjO)}(hinth]hint}(hjwhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjWubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjWubjx)}(hirqh]hirq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjWubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjSubah}(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:518: ./kernel/irq/irqdesc.chMhjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhj2hNhNubj\)}(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:518: ./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:518: ./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)}(hj9h]h Description}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj7ubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./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 }(hjOhhhNhNubjf)}(h**irq**h]hirq}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjOubh.}(hjOhhhNhNubeh}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./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().}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jnhY/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:518: ./kernel/irq/irqdesc.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj2hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9handle_bad_irq (C function)c.handle_bad_irqhNtauh1j,hj2hhhNhNubj>)}(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}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/handle.chK!ubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhK!ubjr)}(hhandle_bad_irqh]jx)}(hhandle_bad_irqh]hhandle_bad_irq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhK!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_bad_irqasbuh1hhjubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hdesch]hdesc}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhK!ubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhK!ubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhK!hjhhubj5)}(hhh]jo)}(h"handle spurious and unhandled irqsh]h"handle spurious and unhandled irqs}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/handle.chKhj\hhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhK!ubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjwjWjwjXjYjZuh1j=hhhj2hNhNubj\)}(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)}(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:520: ./kernel/irq/handle.chK hj{ubj|)}(hhh]j)}(h7``struct irq_desc *desc`` description of the interrupt 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&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/handle.chKhjubj)}(hhh]jo)}(hdescription of the interrupth]hdescription of the interrupt}(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{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:520: ./kernel/irq/handle.chKhj{ubjo)}(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:520: ./kernel/irq/handle.chKhj{ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj2hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9$generic_handle_arch_irq (C function)c.generic_handle_arch_irqhNtauh1j,hj2hhhNhNubj>)}(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}(hj hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/handle.chKubja)}(h h]h }(hj/hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhj.hKubhnoinstr}(hjhhhNhNubja)}(h h]h }(hjAhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhj.hKubjr)}(hgeneric_handle_arch_irqh]jx)}(hgeneric_handle_arch_irqh]hgeneric_handle_arch_irq}(hjShhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjOubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhj.hKubj)}(h(struct pt_regs *regs)h]j)}(hstruct pt_regs *regsh](j)}(hjh]hstruct}(hjohhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjkubja)}(h h]h }(hj|hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjkubh)}(hhh]jx)}(hpt_regsh]hpt_regs}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjmodnameN classnameNjj)}j]j)}jjUsbc.generic_handle_arch_irqasbuh1hhjkubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjkubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjkubjx)}(hregsh]hregs}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjkubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjgubah}(h]h ]h"]h$]h&]hhuh1jhjhhhj.hKubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhj.hKubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhj.hKhjhhubj5)}(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:520: ./kernel/irq/handle.chKhjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhj.hKubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj jWj jXjYjZuh1j=hhhj2hNhNubj\)}(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:520: ./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)}(hj3h]hstruct pt_regs *regs}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/handle.chKhj-ubj)}(hhh]jo)}(h5Register file coming from the low-level handling codeh]h5Register file coming from the low-level handling code}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhX/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:520: ./kernel/irq/handle.chKhjIubah}(h]h ]h"]h$]h&]uh1jhj-ubeh}(h]h ]h"]h$]h&]uh1jhjHhKhj*ubah}(h]h ]h"]h$]h&]uh1j{hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj2hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9!irq_set_msi_desc_off (C function)c.irq_set_msi_desc_offhNtauh1j,hj2hhhNhNubj>)}(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}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:522: ./kernel/irq/chip.chKlubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhKlubjr)}(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&]hhuh1jqhjhhhjhKlubj)}(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 }(hj)hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjO)}(hinth]hint}(hj7hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubja)}(h h]h }(hjEhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubjx)}(h irq_offseth]h irq_offset}(hjShhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct msi_desc *entryh](j)}(hjh]hstruct}(hjlhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhubja)}(h h]h }(hjyhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhubh)}(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_desc_offasbuh1hhjhubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhubjx)}(hentryh]hentry}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjhubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKlubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhKlubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhKlhjhhubj5)}(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:522: ./kernel/irq/chip.chKehjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhKlubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhj2hNhNubj\)}(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 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:522: ./kernel/irq/chip.chKihj ubj|)}(hhh](j)}(h0``unsigned int irq_base`` Interrupt number base h](j)}(h``unsigned int irq_base``h]j)}(hj0h]hunsigned int irq_base}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:522: ./kernel/irq/chip.chKfhj*ubj)}(hhh]jo)}(hInterrupt number baseh]hInterrupt number base}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjEhKfhjFubah}(h]h ]h"]h$]h&]uh1jhj*ubeh}(h]h ]h"]h$]h&]uh1jhjEhKfhj'ubj)}(h4``unsigned int irq_offset`` Interrupt number offset h](j)}(h``unsigned int irq_offset``h]j)}(hjih]hunsigned int irq_offset}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:522: ./kernel/irq/chip.chKghjcubj)}(hhh]jo)}(hInterrupt number offseth]hInterrupt number offset}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj~hKghjubah}(h]h ]h"]h$]h&]uh1jhjcubeh}(h]h ]h"]h$]h&]uh1jhj~hKghj'ubj)}(hl``struct msi_desc *entry`` Pointer to MSI descriptor data Set the MSI descriptor entry for an irq at offseth](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:522: ./kernel/irq/chip.chKihjubj)}(hhh](jo)}(hPointer to MSI descriptor datah]hPointer to MSI descriptor data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:522: ./kernel/irq/chip.chKhhjubjo)}(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:522: ./kernel/irq/chip.chKjhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKihj'ubeh}(h]h ]h"]h$]h&]uh1j{hj ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj2hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_set_msi_desc (C function)c.irq_set_msi_deschNtauh1j,hj2hhhNhNubj>)}(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}(hj hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjhhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:522: ./kernel/irq/chip.chKubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhKubjr)}(hirq_set_msi_desch]jx)}(hirq_set_msi_desch]hirq_set_msi_desc}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj(ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhKubj)}(h*(unsigned int irq, struct msi_desc *entry)h](j)}(hunsigned int irqh](jO)}(hunsignedh]hunsigned}(hjHhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjDubja)}(h h]h }(hjVhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjDubjO)}(hinth]hint}(hjdhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjDubja)}(h h]h }(hjrhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjDubjx)}(hirqh]hirq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjDubeh}(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)}jj.sbc.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&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhKubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhKhjhhubj5)}(hhh]jo)}(h"set MSI descriptor data for an irqh]h"set MSI descriptor data for an irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:522: ./kernel/irq/chip.chK|hjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhKubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj4jWj4jXjYjZuh1j=hhhj2hNhNubj\)}(h**Parameters** ``unsigned int irq`` Interrupt number ``struct msi_desc *entry`` Pointer to MSI descriptor data 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:522: ./kernel/irq/chip.chKhj8ubj|)}(hhh](j)}(h&``unsigned int irq`` 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:522: ./kernel/irq/chip.chK}hjWubj)}(hhh]jo)}(hInterrupt numberh]hInterrupt number}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjrhK}hjsubah}(h]h ]h"]h$]h&]uh1jhjWubeh}(h]h ]h"]h$]h&]uh1jhjrhK}hjTubj)}(hb``struct msi_desc *entry`` Pointer to MSI descriptor data Set the MSI descriptor entry for an irqh](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:522: ./kernel/irq/chip.chKhjubj)}(hhh](jo)}(hPointer to MSI descriptor datah]hPointer to MSI descriptor data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:522: ./kernel/irq/chip.chK~hjubjo)}(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:522: ./kernel/irq/chip.chKhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjTubeh}(h]h ]h"]h$]h&]uh1j{hj8ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj2hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_disable (C function) c.irq_disablehNtauh1j,hj2hhhNhNubj>)}(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:522: ./kernel/irq/chip.chMubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhj hMubjr)}(h irq_disableh]jx)}(h irq_disableh]h irq_disable}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhj hMubj)}(h(struct irq_desc *desc)h]j)}(hstruct irq_desc *desch](j)}(hjh]hstruct}(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8ubja)}(h h]h }(hjIhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj8ubh)}(hhh]jx)}(hirq_desch]hirq_desc}(hjZhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjWubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetj\modnameN classnameNjj)}j]j)}jj"sb c.irq_disableasbuh1hhj8ubja)}(h h]h }(hjzhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj8ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8ubjx)}(hdesch]hdesc}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj8ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj4ubah}(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)}(hMark interrupt disabledh]hMark interrupt disabled}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:522: ./kernel/irq/chip.chMohjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhj hMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhj2hNhNubj\)}(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:522: ./kernel/irq/chip.chMshjubj|)}(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:522: ./kernel/irq/chip.chMphjubj)}(hhh]jo)}(h'irq descriptor which should be disabledh]h'irq descriptor which should be disabled}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjhMphjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMphjubah}(h]h ]h"]h$]h&]uh1j{hjubjo)}(h**Description**h]jf)}(hj;h]h Description}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj9ubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:522: ./kernel/irq/chip.chMrhjubjo)}(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.}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:522: ./kernel/irq/chip.chMrhjubjo)}(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.}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:522: ./kernel/irq/chip.chM{hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj2hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9handle_percpu_irq (C function)c.handle_percpu_irqhNtauh1j,hj2hhhNhNubj>)}(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:522: ./kernel/irq/chip.chMOubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhjhMOubjr)}(hhandle_percpu_irqh]jx)}(hhandle_percpu_irqh]hhandle_percpu_irq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhjhMOubj)}(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 }(hj hhhNhNubah}(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&]hhuh1jhjhhhjhMOubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhjhMOubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjhMOhjhhubj5)}(hhh]jo)}(hPer CPU local irq handlerh]hPer CPU local irq handler}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:522: ./kernel/irq/chip.chMJhjLhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhMOubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjgjWjgjXjYjZuh1j=hhhj2hNhNubj\)}(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)}(hjqh]h Parameters}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jehjoubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:522: ./kernel/irq/chip.chMNhjkubj|)}(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:522: ./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&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:522: ./kernel/irq/chip.chMKhjubjo)}(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:522: ./kernel/irq/chip.chMMhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMLhjubah}(h]h ]h"]h$]h&]uh1j{hjkubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj2hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9$handle_percpu_devid_irq (C function)c.handle_percpu_devid_irqhNtauh1j,hj2hhhNhNubj>)}(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:522: ./kernel/irq/chip.chMmubja)}(h h]h }(hj hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjhhhj hMmubjr)}(hhandle_percpu_devid_irqh]jx)}(hhandle_percpu_devid_irqh]hhandle_percpu_devid_irq}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhj hMmubj)}(h(struct irq_desc *desc)h]j)}(hstruct irq_desc *desch](j)}(hjh]hstruct}(hj6 hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2 ubja)}(h h]h }(hjC hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj2 ubh)}(hhh]jx)}(hirq_desch]hirq_desc}(hjT hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjQ ubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjV modnameN classnameNjj)}j]j)}jj sbc.handle_percpu_devid_irqasbuh1hhj2 ubja)}(h h]h }(hjt hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj2 ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2 ubjx)}(hdesch]hdesc}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhj2 ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj. ubah}(h]h ]h"]h$]h&]hhuh1jhjhhhj hMmubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhj hMmubah}(h]jah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhj hMmhjhhubj5)}(hhh]jo)}(h.Per CPU local irq handler with per cpu dev idsh]h.Per CPU local irq handler with per cpu dev ids}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:522: ./kernel/irq/chip.chMchj hhubah}(h]h ]h"]h$]h&]uh1j4hjhhhj hMmubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj jWj jXjYjZuh1j=hhhj2hNhNubj\)}(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)}(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:522: ./kernel/irq/chip.chMghj ubj|)}(hhh]j)}(hK``struct irq_desc *desc`` the interrupt description structure for this irq h](j)}(h``struct irq_desc *desc``h]j)}(hj h]hstruct irq_desc *desc}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:522: ./kernel/irq/chip.chMdhj ubj)}(hhh]jo)}(h0the interrupt description structure for this irqh]h0the interrupt description structure for this irq}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj hMdhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hMdhj ubah}(h]h ]h"]h$]h&]uh1j{hj ubjo)}(h**Description**h]jf)}(hj5 h]h Description}(hj7 hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj3 ubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:522: ./kernel/irq/chip.chMfhj ubjo)}(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:}(hjK hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:522: ./kernel/irq/chip.chMfhj ubjo)}(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}(hjZ hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:522: ./kernel/irq/chip.chMihj ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj2hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9,handle_percpu_devid_fasteoi_nmi (C function)!c.handle_percpu_devid_fasteoi_nmihNtauh1j,hj2hhhNhNubj>)}(hhh](jC)}(h)}(hhh](jC)}(hvoid irq_cpu_online (void)h]jI)}(hvoid irq_cpu_online(void)h](jO)}(hvoidh]hvoid}(hj hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj hhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:522: ./kernel/irq/chip.chMGubja)}(h h]h }(hj hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj hhhj hMGubjr)}(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 hhhj hMGubj)}(h(void)h]j)}(hvoidh]jO)}(hvoidh]hvoid}(hjG hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjC ubah}(h]h ]h"]h$]h&]noemphhhuh1jhj? ubah}(h]h ]h"]h$]h&]hhuh1jhj hhhj hMGubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj hhhj hMGubah}(h]j ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhj hMGhj hhubj5)}(hhh]jo)}(h$Invoke all irq_cpu_online functions.h]h$Invoke all irq_cpu_online functions.}(hjq hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:522: ./kernel/irq/chip.chMBhjn hhubah}(h]h ]h"]h$]h&]uh1j4hj hhhj hMGubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj jWj jXjYjZuh1j=hhhj2hNhNubj\)}(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)}(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:522: ./kernel/irq/chip.chMFhj ubj|)}(hhh]j)}(h``void`` no arguments h](j)}(h``void``h]j)}(hj h]hvoid}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:522: ./kernel/irq/chip.chMIhj ubj)}(hhh]jo)}(h no argumentsh]h no arguments}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj hMIhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hMIhj ubah}(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&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:522: ./kernel/irq/chip.chMKhj ubjTw)}(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:522: ./kernel/irq/chip.chMChj ubah}(h]h ]h"]h$]h&]uh1jSwhj hMChj ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj2hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_cpu_offline (C function)c.irq_cpu_offlinehNtauh1j,hj2hhhNhNubj>)}(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&]uh1jNhj8 hhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:522: ./kernel/irq/chip.chMeubja)}(h h]h }(hjK hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hj8 hhhjJ hMeubjr)}(hirq_cpu_offlineh]jx)}(hirq_cpu_offlineh]hirq_cpu_offline}(hj] hhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjY ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhj8 hhhjJ hMeubj)}(h(void)h]j)}(hvoidh]jO)}(hvoidh]hvoid}(hjy hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhju ubah}(h]h ]h"]h$]h&]noemphhhuh1jhjq ubah}(h]h ]h"]h$]h&]hhuh1jhj8 hhhjJ hMeubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hj4 hhhjJ hMeubah}(h]j/ ah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhjJ hMehj1 hhubj5)}(hhh]jo)}(h%Invoke all irq_cpu_offline functions.h]h%Invoke all irq_cpu_offline functions.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:522: ./kernel/irq/chip.chM`hj hhubah}(h]h ]h"]h$]h&]uh1j4hj1 hhhjJ hMeubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVj jWj jXjYjZuh1j=hhhj2hNhNubj\)}(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)}(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:522: ./kernel/irq/chip.chMdhj ubj|)}(hhh]j)}(h``void`` no arguments h](j)}(h``void``h]j)}(hj h]hvoid}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:522: ./kernel/irq/chip.chMghj ubj)}(hhh]jo)}(h no argumentsh]h no arguments}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj hMghj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hMghj ubah}(h]h ]h"]h$]h&]uh1j{hj ubjo)}(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:522: ./kernel/irq/chip.chMihj ubjTw)}(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.}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:522: ./kernel/irq/chip.chMahj5ubah}(h]h ]h"]h$]h&]uh1jSwhjGhMahj ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj2hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9%irq_chip_compose_msi_msg (C function)c.irq_chip_compose_msi_msghNtauh1j,hj2hhhNhNubj>)}(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}(hjnhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjjhhhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:522: ./kernel/irq/chip.chMubja)}(h h]h }(hj}hhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjjhhhj|hMubjr)}(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&]hhuh1jqhjjhhhj|hMubj)}(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}(hjhhhNhNubah}(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&]uh1jwhj8ubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetj=modnameN classnameNjj)}j]jc.irq_chip_compose_msi_msgasbuh1hhjubja)}(h h]h }(hjYhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjubj)}(hjh]h*}(hjghhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjx)}(hmsgh]hmsg}(hjthhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjjhhhj|hMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjfhhhj|hMubah}(h]jaah ](j,j-eh"]h$]h&]j1j2)j3huh1jBhj|hMhjchhubj5)}(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:522: ./kernel/irq/chip.chMhjhhubah}(h]h ]h"]h$]h&]uh1j4hjchhhj|hMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhj2hNhNubj\)}(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:522: ./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:522: ./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:522: ./kernel/irq/chip.chMhjubj)}(hhh]jo)}(hPointer to the MSI messageh]hPointer to the MSI message}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj-hMhj.ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj-hMhjubeh}(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:522: ./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.}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:522: ./kernel/irq/chip.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj2hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_chip_pm_get (C function)c.irq_chip_pm_gethNtauh1j,hj2hhhNhNubj>)}(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:522: ./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}(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)}(hEnable power for an IRQ chiph]hEnable power for an IRQ chip}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:522: ./kernel/irq/chip.chMhjUhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhjhMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjpjWjpjXjYjZuh1j=hhhj2hNhNubj\)}(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)}(hjzh]h Parameters}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jehjxubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:522: ./kernel/irq/chip.chMhjtubj|)}(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:522: ./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{hjtubjo)}(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:522: ./kernel/irq/chip.chMhjtubjo)}(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:522: ./kernel/irq/chip.chMhjtubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj2hhhNhNubj-)}(hhh]h}(h]h ]h"]h$]h&]entries](j9irq_chip_pm_put (C function)c.irq_chip_pm_puthNtauh1j,hj2hhhNhNubj>)}(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:522: ./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&]uh1jwhj6ubah}(h]h ](jjeh"]h$]h&]hhuh1jqhjhhhj'hMubj)}(h(struct irq_data *data)h]j)}(hstruct irq_data *datah](j)}(hjh]hstruct}(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjRubja)}(h h]h }(hjchhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjRubh)}(hhh]jx)}(hirq_datah]hirq_data}(hjthhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjqubah}(h]h ]h"]h$]h&] refdomainjK reftypej reftargetjvmodnameN classnameNjj)}j]j)}jj<sbc.irq_chip_pm_putasbuh1hhjRubja)}(h h]h }(hjhhhNhNubah}(h]h ]jmah"]h$]h&]uh1j`hjRubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjRubjx)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jwhjRubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjNubah}(h]h ]h"]h$]h&]hhuh1jhjhhhj'hMubeh}(h]h ]h"]h$]h&]hhj&uh1jHj'j(hjhhhj'hMubah}(h]j ah ](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:522: ./kernel/irq/chip.chMhjhhubah}(h]h ]h"]h$]h&]uh1j4hjhhhj'hMubeh}(h]h ](jK functioneh"]h$]h&]jUjK jVjjWjjXjYjZuh1j=hhhj2hNhNubj\)}(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:522: ./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:522: ./kernel/irq/chip.chMhjubj)}(hhh]jo)}(h"Pointer to interrupt specific datah]h"Pointer to interrupt specific data}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj/hMhj0ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj/hMhjubah}(h]h ]h"]h$]h&]uh1j{hjubjo)}(h**Description**h]jf)}(hjUh]h Description}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjSubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:522: ./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().}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhV/var/lib/git/docbuild/linux/Documentation/core-api/genericirq:522: ./kernel/irq/chip.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hj2hhhNhNubeh}(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_handlerj5error_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 micro& jmiddotj(nbspj7notjFnumjUohmjdordfjsordmjparajpercntjperiodjplusjplusmnjpoundjquestjquotjraquoj rarrjrcubj'rdquoj6regjErparjTrsqbjcrsquojrsectjsemijshyjsoljsungjsup1jsup2jsup3jtimesjtradejuarrjverbarj&yenj5urefnames}refids}nameids}(jj jjjjjjjjjaj^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%3jujuj/j,jjjju nametypes}(jjjjjjaj j j j j jA j j j# jt j j j j jjj j(3juj/jjuh}(j j: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.j0j0juj+3jV3j[3j5j5ju8jz8jNAjSAjtCjyCjEjEjJjJj~LjLjPOjUOj%Sj*SjVjVjXjXjZjZj3\j8\jY^j^^j`j`j2bj7bjfjfj>ljCljipjnpjsjsj,jujujujwjwj yjyjCzjHzj{j{j }j}j&j+jLjQjjjjj_jdjjj j%jjjjjVj[jjjӑjؑjjjjjjjjj(j-jjjjjwj|jjj jj%j*jjjjjjj jjkjpjfjkjfjkj*j/jjjjjnjsj*j/jjjjjwj|jjjKjPjjjMjRjjj?jDjjjjjPjUjjjj jajfjjjj#jjjujzjjjjjj2j]jbj{jjj j~jjj j)j.jMjRjjjkjpjjjjjjjjjjjjjjjjjjj| j j j j/ j4 jajfjjj jjju 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.