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/driver-api/pci/tsmmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget&/translations/zh_TW/driver-api/pci/tsmmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget&/translations/it_IT/driver-api/pci/tsmmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget&/translations/ja_JP/driver-api/pci/tsmmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget&/translations/ko_KR/driver-api/pci/tsmmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget&/translations/sp_SP/driver-api/pci/tsmmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhh@/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm.rsthKubh)}(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&]hhuh1hhhhhho/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¦}hjsbah}(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:}hj-sbah}(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@}hjKsbah}(h]h ]h"]commatah$]h&]uh1hhhhKhhhhubh)}(h/.. |copy| unicode:: U+000A9 .. COPYRIGHT SIGNh]h©}hjZsbah}(h]h ]h"]copyah$]h&]uh1hhhhKhhhhubh)}(h... |curren| unicode:: U+000A4 .. CURRENCY SIGNh]h¤}hjisbah}(h]h ]h"]currenah$]h&]uh1hhhhKhhhhubh)}(h0.. |darr| unicode:: U+02193 .. DOWNWARDS ARROWh]h↓}hjxsbah}(h]h ]h"]darrah$]h&]uh1hhhhKhhhhubh)}(h,.. |deg| unicode:: U+000B0 .. DEGREE SIGNh]h°}hjsbah}(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⅞}hj,sbah}(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½}hjJsbah}(h]h ]h"]halfah$]h&]uh1hhhhK hhhhubh)}(h/.. |horbar| unicode:: U+02015 .. HORIZONTAL BARh]h―}hjYsbah}(h]h ]h"]horbarah$]h&]uh1hhhhK!hhhhubh)}(h'.. |hyphen| unicode:: U+02010 .. HYPHENh]h‐}hjhsbah}(h]h ]h"]hyphenah$]h&]uh1hhhhK"hhhhubh)}(h:.. |iexcl| unicode:: U+000A1 .. INVERTED EXCLAMATION MARKh]h¡}hjwsbah}(h]h ]h"]iexclah$]h&]uh1hhhhK#hhhhubh)}(h7.. |iquest| unicode:: U+000BF .. INVERTED QUESTION MARKh]h¿}hjsbah}(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<}hj sbah}(h]h ]h"]ltah$]h&]uh1hhhhK-hhhhubh)}(h+.. |micro| unicode:: U+000B5 .. MICRO SIGNh]hµ}hjsbah}(h]h ]h"]microah$]h&]uh1hhhhK.hhhhubh)}(h+.. |middot| unicode:: U+000B7 .. MIDDLE DOTh]h·}hj+sbah}(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¬}hjIsbah}(h]h ]h"]notah$]h&]uh1hhhhK1hhhhubh)}(h,.. |num| unicode:: U+00023 .. NUMBER SIGNh]h#}hjXsbah}(h]h ]h"]numah$]h&]uh1hhhhK2hhhhubh)}(h).. |ohm| unicode:: U+02126 .. OHM SIGNh]hΩ}hjgsbah}(h]h ]h"]ohmah$]h&]uh1hhhhK3hhhhubh)}(h;.. |ordf| unicode:: U+000AA .. FEMININE ORDINAL INDICATORh]hª}hjvsbah}(h]h ]h"]ordfah$]h&]uh1hhhhK4hhhhubh)}(h<.. |ordm| unicode:: U+000BA .. MASCULINE ORDINAL INDICATORh]hº}hjsbah}(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→}hjsbah}(h]h ]h"]rarrah$]h&]uh1hhhhK?hhhhubh)}(h4.. |rcub| unicode:: U+0007D .. RIGHT CURLY BRACKETh]h}}hj*sbah}(h]h ]h"]rcubah$]h&]uh1hhhhK@hhhhubh)}(h<.. |rdquo| unicode:: U+0201D .. RIGHT DOUBLE QUOTATION MARKh]h”}hj9sbah}(h]h ]h"]rdquoah$]h&]uh1hhhhKAhhhhubh)}(h0.. |reg| unicode:: U+000AE .. REGISTERED SIGNh]h®}hjHsbah}(h]h ]h"]regah$]h&]uh1hhhhKBhhhhubh)}(h2.. |rpar| unicode:: U+00029 .. RIGHT PARENTHESISh]h)}hjWsbah}(h]h ]h"]rparah$]h&]uh1hhhhKChhhhubh)}(h5.. |rsqb| unicode:: U+0005D .. RIGHT SQUARE BRACKETh]h]}hjfsbah}(h]h ]h"]rsqbah$]h&]uh1hhhhKDhhhhubh)}(h<.. |rsquo| unicode:: U+02019 .. RIGHT SINGLE QUOTATION MARKh]h’}hjusbah}(h]h ]h"]rsquoah$]h&]uh1hhhhKEhhhhubh)}(h-.. |sect| unicode:: U+000A7 .. SECTION SIGNh]h§}hjsbah}(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™}hj sbah}(h]h ]h"]tradeah$]h&]uh1hhhhKOhhhhubh)}(h... |uarr| unicode:: U+02191 .. UPWARDS ARROWh]h↑}hjsbah}(h]h ]h"]uarrah$]h&]uh1hhhhKPhhhhubh)}(h... |verbar| unicode:: U+0007C .. VERTICAL LINEh]h|}hj)sbah}(h]h ]h"]verbarah$]h&]uh1hhhhKQhhhhubh)}(h*.. |yen| unicode:: U+000A5 .. YEN SIGN h]h¥}hj8sbah}(h]h ]h"]yenah$]h&]uh1hhhhKRhhhhubhsection)}(hhh](htitle)}(h8PCI Trusted Execution Environment Security Manager (TSM)h]h8PCI Trusted Execution Environment Security Manager (TSM)}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjIhhhhhKubjH)}(hhh](jM)}(hSubsystem Interfacesh]hSubsystem Interfaces}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj\hhhhhK ubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](singlepci_ide_partner (C struct)c.pci_ide_partnerhNtauh1jmhj\hhhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhNubhdesc)}(hhh](hdesc_signature)}(hpci_ide_partnerh]hdesc_signature_line)}(hstruct pci_ide_partnerh](hdesc_sig_keyword)}(hstructh]hstruct}(hjhhhNhNubah}(h]h ]kah"]h$]h&]uh1jhjhhhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhKubhdesc_sig_space)}(h h]h }(hjhhhNhNubah}(h]h ]wah"]h$]h&]uh1jhjhhhjhKubh desc_name)}(hpci_ide_partnerh]h desc_sig_name)}(hjh]hpci_ide_partner}(hjhhhNhNubah}(h]h ]nah"]h$]h&]uh1jhjubah}(h]h ](sig-namedescnameeh"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hh add_permalinkuh1jsphinx_line_type declaratorhjhhhjhKubah}(h]j|ah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1jhjhKhjhhubh desc_content)}(hhh]h paragraph)}(h+Per port pair Selective IDE Stream settingsh]h+Per port pair Selective IDE Stream settings}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhKhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](cstructeh"]h$]h&]domainjobjtypejdesctypejnoindex noindexentrynocontentsentryuh1jhhhj\hj~hNubh container)}(hX**Definition**:: struct pci_ide_partner { u16 rid_start; u16 rid_end; u8 stream_index; struct pci_bus_region mem_assoc; struct pci_bus_region pref_assoc; unsigned int default_stream:1; unsigned int setup:1; unsigned int enable:1; }; **Members** ``rid_start`` Partner Port Requester ID range start ``rid_end`` Partner Port Requester ID range end ``stream_index`` Selective IDE Stream Register Block selection ``mem_assoc`` PCI bus memory address association for targeting peer partner ``pref_assoc`` PCI bus prefetchable memory address association for targeting peer partner ``default_stream`` Endpoint uses this stream for all upstream TLPs regardless of address and RID association registers ``setup`` flag to track whether to run pci_ide_stream_teardown() for this partner slot ``enable`` flag whether to run pci_ide_stream_disable() for this partner sloth](j)}(h**Definition**::h](hstrong)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhKhjubh literal_block)}(hstruct pci_ide_partner { u16 rid_start; u16 rid_end; u8 stream_index; struct pci_bus_region mem_assoc; struct pci_bus_region pref_assoc; unsigned int default_stream:1; unsigned int setup:1; unsigned int enable:1; };h]hstruct pci_ide_partner { u16 rid_start; u16 rid_end; u8 stream_index; struct pci_bus_region mem_assoc; struct pci_bus_region pref_assoc; unsigned int default_stream:1; unsigned int setup:1; unsigned int enable:1; };}hj6sbah}(h]h ]h"]h$]h&]hhuh1j4hZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhK!hjubj)}(h **Members**h]j)}(hjGh]hMembers}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhK,hjubhdefinition_list)}(hhh](hdefinition_list_item)}(h4``rid_start`` Partner Port Requester ID range start h](hterm)}(h ``rid_start``h]hliteral)}(hjlh]h rid_start}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjjubah}(h]h ]h"]h$]h&]uh1jhhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhKhjdubh definition)}(hhh]j)}(h%Partner Port Requester ID range starth]h%Partner Port Requester ID range start}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjdubeh}(h]h ]h"]h$]h&]uh1jbhjhKhj_ubjc)}(h0``rid_end`` Partner Port Requester ID range end h](ji)}(h ``rid_end``h]jo)}(hjh]hrid_end}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&]uh1jhhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhKhjubj)}(hhh]j)}(h#Partner Port Requester ID range endh]h#Partner Port Requester ID range end}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jbhjhKhj_ubjc)}(h?``stream_index`` Selective IDE Stream Register Block selection h](ji)}(h``stream_index``h]jo)}(hjh]h stream_index}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&]uh1jhhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhKhjubj)}(hhh]j)}(h-Selective IDE Stream Register Block selectionh]h-Selective IDE Stream Register Block selection}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jbhjhKhj_ubjc)}(hL``mem_assoc`` PCI bus memory address association for targeting peer partner h](ji)}(h ``mem_assoc``h]jo)}(hjh]h mem_assoc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&]uh1jhhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhK hjubj)}(hhh]j)}(h=PCI bus memory address association for targeting peer partnerh]h=PCI bus memory address association for targeting peer partner}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0hK hj1ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jbhj0hK hj_ubjc)}(hZ``pref_assoc`` PCI bus prefetchable memory address association for targeting peer partner h](ji)}(h``pref_assoc``h]jo)}(hjTh]h pref_assoc}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjRubah}(h]h ]h"]h$]h&]uh1jhhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhK"hjNubj)}(hhh]j)}(hJPCI bus prefetchable memory address association for targeting peer partnerh]hJPCI bus prefetchable memory address association for targeting peer partner}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhK!hjjubah}(h]h ]h"]h$]h&]uh1jhjNubeh}(h]h ]h"]h$]h&]uh1jbhjihK"hj_ubjc)}(hw``default_stream`` Endpoint uses this stream for all upstream TLPs regardless of address and RID association registers h](ji)}(h``default_stream``h]jo)}(hjh]hdefault_stream}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&]uh1jhhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhK$hjubj)}(hhh]j)}(hcEndpoint uses this stream for all upstream TLPs regardless of address and RID association registersh]hcEndpoint uses this stream for all upstream TLPs regardless of address and RID association registers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhK#hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jbhjhK$hj_ubjc)}(hW``setup`` flag to track whether to run pci_ide_stream_teardown() for this partner slot h](ji)}(h ``setup``h]jo)}(hjh]hsetup}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&]uh1jhhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhK&hjubj)}(hhh]j)}(hLflag to track whether to run pci_ide_stream_teardown() for this partner sloth]hLflag to track whether to run pci_ide_stream_teardown() for this partner slot}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhK%hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jbhjhK&hj_ubjc)}(hM``enable`` flag whether to run pci_ide_stream_disable() for this partner sloth](ji)}(h ``enable``h]jo)}(hjh]henable}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&]uh1jhhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhK&hjubj)}(hhh]j)}(hBflag whether to run pci_ide_stream_disable() for this partner sloth]hBflag whether to run pci_ide_stream_disable() for this partner slot}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhK'hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jbhjhK&hj_ubeh}(h]h ]h"]h$]h&]uh1j]hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj\hhhj~hNubj)}(h**Description**h]j)}(hjEh]h Description}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhK*hj\hhubj)}(hX!By default, pci_ide_stream_alloc() initializes **mem_assoc** and **pref_assoc** with the immediate ancestor downstream port memory ranges (i.e. Type 1 Configuration Space Header values). Caller may zero size ({0, -1}) the range to drop it from consideration at pci_ide_stream_setup() time.h](h/By default, pci_ide_stream_alloc() initializes }(hj[hhhNhNubj)}(h **mem_assoc**h]h mem_assoc}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[ubh and }(hj[hhhNhNubj)}(h**pref_assoc**h]h pref_assoc}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[ubh with the immediate ancestor downstream port memory ranges (i.e. Type 1 Configuration Space Header values). Caller may zero size ({0, -1}) the range to drop it from consideration at pci_ide_stream_setup() time.}(hj[hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhK'hj\hhubjn)}(hhh]h}(h]h ]h"]h$]h&]entries](jzpci_ide_regs (C struct)c.pci_ide_regshNtauh1jmhj\hhhj~hNubj)}(hhh](j)}(h pci_ide_regsh]j)}(hstruct pci_ide_regsh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhK/ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhK/ubj)}(h pci_ide_regsh]j)}(hjh]h pci_ide_regs}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhK/ubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhjhK/ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jhjhK/hjhhubj)}(hhh]j)}(h@Hardware register association settings for Selective IDE Streamsh]h@Hardware register association settings for Selective IDE Streams}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhK9hjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhK/ubeh}(h]h ](jstructeh"]h$]h&]j jj j j j j j juh1jhhhj\hj~hNubj)}(hX**Definition**:: struct pci_ide_regs { u32 rid1; u32 rid2; struct { u32 assoc1; u32 assoc2; u32 assoc3; } addr[2]; int nr_addr; }; **Members** ``rid1`` IDE RID Association Register 1 ``rid2`` IDE RID Association Register 2 ``addr`` Up to two address association blocks (IDE Address Association Register 1 through 3) for MMIO and prefetchable MMIO ``nr_addr`` Number of address association blocks initializedh](j)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh:}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhK=hj ubj5)}(hstruct pci_ide_regs { u32 rid1; u32 rid2; struct { u32 assoc1; u32 assoc2; u32 assoc3; } addr[2]; int nr_addr; };h]hstruct pci_ide_regs { u32 rid1; u32 rid2; struct { u32 assoc1; u32 assoc2; u32 assoc3; } addr[2]; int nr_addr; };}hj& sbah}(h]h ]h"]h$]h&]hhuh1j4hZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhK?hj ubj)}(h **Members**h]j)}(hj7 h]hMembers}(hj9 hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5 ubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhKJhj ubj^)}(hhh](jc)}(h(``rid1`` IDE RID Association Register 1 h](ji)}(h``rid1``h]jo)}(hjV h]hrid1}(hjX hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjT ubah}(h]h ]h"]h$]h&]uh1jhhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jbhj hK?hjM ubjc)}(h<``nr_addr`` Number of address association blocks initializedh](ji)}(h ``nr_addr``h]jo)}(hj h]hnr_addr}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj ubah}(h]h ]h"]h$]h&]uh1jhhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhK?hj ubj)}(hhh]j)}(h0Number of address association blocks initializedh]h0Number of address association blocks initialized}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhK@hj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jbhj hK?hjM ubeh}(h]h ]h"]h$]h&]uh1j]hj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj\hhhj~hNubj)}(h**Description**h]j)}(hjE h]h Description}(hjG hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjC ubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhKChj\hhubj)}(hSee pci_ide_stream_to_regs()h]hSee pci_ide_stream_to_regs()}(hj[ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhK@hj\hhubjn)}(hhh]h}(h]h ]h"]h$]h&]entries](jzpci_ide (C struct) c.pci_idehNtauh1jmhj\hhhj~hNubj)}(hhh](j)}(hpci_ideh]j)}(hstruct pci_ideh](j)}(hjh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhKEubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhj hKEubj)}(hpci_ideh]j)}(hj} h]hpci_ide}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj hhhj hKEubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj{ hhhj hKEubah}(h]jv ah ](jjeh"]h$]h&]jj)jhuh1jhj hKEhjx hhubj)}(hhh]j)}(h$PCIe Selective IDE Stream descriptorh]h$PCIe Selective IDE Stream descriptor}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhKOhj hhubah}(h]h ]h"]h$]h&]uh1jhjx hhhj hKEubeh}(h]h ](jstructeh"]h$]h&]j jj j j j j j juh1jhhhj\hj~hNubj)}(hX^**Definition**:: struct pci_ide { struct pci_dev *pdev; struct pci_ide_partner partner[PCI_IDE_PARTNER_MAX]; u8 host_bridge_stream; int stream_id; const char *name; struct tsm_dev *tsm_dev; }; **Members** ``pdev`` PCIe Endpoint in the pci_ide_partner pair ``partner`` per-partner settings ``host_bridge_stream`` allocated from host bridge **ide_stream_ida** pool ``stream_id`` unique Stream ID (within Partner Port pairing) ``name`` name of the established Selective IDE Stream in sysfs ``tsm_dev`` For TSM established IDE, the TSM device contexth](j)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh:}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhKShj ubj5)}(hstruct pci_ide { struct pci_dev *pdev; struct pci_ide_partner partner[PCI_IDE_PARTNER_MAX]; u8 host_bridge_stream; int stream_id; const char *name; struct tsm_dev *tsm_dev; };h]hstruct pci_ide { struct pci_dev *pdev; struct pci_ide_partner partner[PCI_IDE_PARTNER_MAX]; u8 host_bridge_stream; int stream_id; const char *name; struct tsm_dev *tsm_dev; };}hj sbah}(h]h ]h"]h$]h&]hhuh1j4hZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhKUhj ubj)}(h **Members**h]j)}(hj h]hMembers}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhK^hj ubj^)}(hhh](jc)}(h3``pdev`` PCIe Endpoint in the pci_ide_partner pair h](ji)}(h``pdev``h]jo)}(hj2 h]hpdev}(hj4 hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj0 ubah}(h]h ]h"]h$]h&]uh1jhhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhKQhj, ubj)}(hhh]j)}(h)PCIe Endpoint in the pci_ide_partner pairh]h)PCIe Endpoint in the pci_ide_partner pair}(hjK hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjG hKQhjH ubah}(h]h ]h"]h$]h&]uh1jhj, ubeh}(h]h ]h"]h$]h&]uh1jbhjG hKQhj) ubjc)}(h!``partner`` per-partner settings h](ji)}(h ``partner``h]jo)}(hjk h]hpartner}(hjm hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhji ubah}(h]h ]h"]h$]h&]uh1jhhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhKRhje ubj)}(hhh]j)}(hper-partner settingsh]hper-partner settings}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj hKRhj ubah}(h]h ]h"]h$]h&]uh1jhje ubeh}(h]h ]h"]h$]h&]uh1jbhj hKRhj) ubjc)}(hJ``host_bridge_stream`` allocated from host bridge **ide_stream_ida** pool h](ji)}(h``host_bridge_stream``h]jo)}(hj h]hhost_bridge_stream}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj ubah}(h]h ]h"]h$]h&]uh1jhhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhKShj ubj)}(hhh]j)}(h2allocated from host bridge **ide_stream_ida** poolh](hallocated from host bridge }(hj hhhNhNubj)}(h**ide_stream_ida**h]hide_stream_ida}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh pool}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhj hKShj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jbhj hKShj) ubjc)}(h=``stream_id`` unique Stream ID (within Partner Port pairing) h](ji)}(h ``stream_id``h]jo)}(hj h]h stream_id}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj ubah}(h]h ]h"]h$]h&]uh1jhhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhKThj ubj)}(hhh]j)}(h.unique Stream ID (within Partner Port pairing)h]h.unique Stream ID (within Partner Port pairing)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj hKThj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jbhj hKThj) ubjc)}(h?``name`` name of the established Selective IDE Stream in sysfs h](ji)}(h``name``h]jo)}(hj( h]hname}(hj* hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj& ubah}(h]h ]h"]h$]h&]uh1jhhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhKUhj" ubj)}(hhh]j)}(h5name of the established Selective IDE Stream in sysfsh]h5name of the established Selective IDE Stream in sysfs}(hjA hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj= hKUhj> ubah}(h]h ]h"]h$]h&]uh1jhj" ubeh}(h]h ]h"]h$]h&]uh1jbhj= hKUhj) ubjc)}(h;``tsm_dev`` For TSM established IDE, the TSM device contexth](ji)}(h ``tsm_dev``h]jo)}(hja h]htsm_dev}(hjc hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj_ ubah}(h]h ]h"]h$]h&]uh1jhhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhKUhj[ ubj)}(hhh]j)}(h/For TSM established IDE, the TSM device contexth]h/For TSM established IDE, the TSM device context}(hjz hhhNhNubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhKVhjw ubah}(h]h ]h"]h$]h&]uh1jhj[ ubeh}(h]h ]h"]h$]h&]uh1jbhjv hKUhj) ubeh}(h]h ]h"]h$]h&]uh1j]hj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj\hhhj~hNubj)}(h**Description**h]j)}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhKYhj\hhubj)}(hNegative **stream_id** values indicate "uninitialized" on the expectation that with TSM established IDE the TSM owns the stream_id allocation.h](h Negative }(hj hhhNhNubj)}(h **stream_id**h]h stream_id}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh| values indicate “uninitialized” on the expectation that with TSM established IDE the TSM owns the stream_id allocation.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhKVhj\hhubjn)}(hhh]h}(h]h ]h"]h$]h&]entries](jz!pci_ide_stream_alloc (C function)c.pci_ide_stream_allochNtauh1jmhj\hhhNhNubj)}(hhh](j)}(hubah}(h]h ]h"]h$]h&]uh1jhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chKhj:ubj)}(hhh]j)}(h+IDE capable PCIe Endpoint Physical Functionh]h+IDE capable PCIe Endpoint Physical Function}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUhKhjVubah}(h]h ]h"]h$]h&]uh1jhj:ubeh}(h]h ]h"]h$]h&]uh1jbhjUhKhj7ubah}(h]h ]h"]h$]h&]uh1j]hjubj)}(h**Description**h]j)}(hj{h]h Description}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chKhjubj)}(hRetrieve the Requester ID range of **pdev** for programming its Root Port IDE RID Association registers, and conversely retrieve the Requester ID of the Root Port for programming **pdev**'s IDE RID Association registers.h](h#Retrieve the Requester ID range of }(hjhhhNhNubj)}(h**pdev**h]hpdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh for programming its Root Port IDE RID Association registers, and conversely retrieve the Requester ID of the Root Port for programming }(hjhhhNhNubj)}(h**pdev**h]hpdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh#’s IDE RID Association registers.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chKhjubj)}(hAAllocate a Selective IDE Stream Register Block instance per port.h]hAAllocate a Selective IDE Stream Register Block instance per port.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chKhjubj)}(hAllocate a platform stream resource from the associated host bridge. Retrieve stream association parameters for Requester ID range and address range restrictions for the stream.h]hAllocate a platform stream resource from the associated host bridge. Retrieve stream association parameters for Requester ID range and address range restrictions for the stream.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj\hhhNhNubjn)}(hhh]h}(h]h ]h"]h$]h&]entries](jz pci_ide_stream_free (C function)c.pci_ide_stream_freehNtauh1jmhj\hhhNhNubj)}(hhh](j)}(h.void pci_ide_stream_free (struct pci_ide *ide)h]j)}(h-void pci_ide_stream_free(struct pci_ide *ide)h](hdesc_sig_keyword_type)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]ktah"]h$]h&]uh1jhjhhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMNubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMNubj)}(hpci_ide_stream_freeh]j)}(hpci_ide_stream_freeh]hpci_ide_stream_free}(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhMNubjs )}(h(struct pci_ide *ide)h]jy )}(hstruct pci_ide *ideh](j)}(hjh]hstruct}(hjBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>ubj)}(h h]h }(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>ubh)}(hhh]j)}(hpci_ideh]hpci_ide}(hj`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubah}(h]h ]h"]h$]h&] refdomainjreftypej) reftargetjbmodnameN classnameNj- j0 )}j3 ]j6 )}j) j(sbc.pci_ide_stream_freeasbuh1hhj>ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>ubjK )}(hjN h]h*}(hjhhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jJ hj>ubj)}(hideh]hide}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>ubeh}(h]h ]h"]h$]h&]noemphhhuh1jx hj:ubah}(h]h ]h"]h$]h&]hhuh1jr hjhhhjhMNubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhjhMNubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jhjhMNhjhhubj)}(hhh]j)}(hunwind pci_ide_stream_alloc()h]hunwind pci_ide_stream_alloc()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMNhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMNubeh}(h]h ](jfunctioneh"]h$]h&]j jj jj jj j juh1jhhhj\hNhNubj)}(hX**Parameters** ``struct pci_ide *ide`` idle IDE settings descriptor **Description** Free all of the stream index (register block) allocations acquired by pci_ide_stream_alloc(). The stream represented by **ide** is assumed to be unregistered and not instantiated in any device.h](j)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMRhjubj^)}(hhh]jc)}(h5``struct pci_ide *ide`` idle IDE settings descriptor h](ji)}(h``struct pci_ide *ide``h]jo)}(hjh]hstruct pci_ide *ide}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&]uh1jhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMOhjubj)}(hhh]j)}(hidle IDE settings descriptorh]hidle IDE settings descriptor}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMOhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jbhjhMOhjubah}(h]h ]h"]h$]h&]uh1j]hjubj)}(h**Description**h]j)}(hjAh]h Description}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMQhjubj)}(hFree all of the stream index (register block) allocations acquired by pci_ide_stream_alloc(). The stream represented by **ide** is assumed to be unregistered and not instantiated in any device.h](hxFree all of the stream index (register block) allocations acquired by pci_ide_stream_alloc(). The stream represented by }(hjWhhhNhNubj)}(h**ide**h]hide}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWubhB is assumed to be unregistered and not instantiated in any device.}(hjWhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMPhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj\hhhNhNubjn)}(hhh]h}(h]h ]h"]h$]h&]entries](jz#pci_ide_stream_release (C function)c.pci_ide_stream_releasehNtauh1jmhj\hhhNhNubj)}(hhh](j)}(h1void pci_ide_stream_release (struct pci_ide *ide)h]j)}(h0void pci_ide_stream_release(struct pci_ide *ide)h](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMcubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMcubj)}(hpci_ide_stream_releaseh]j)}(hpci_ide_stream_releaseh]hpci_ide_stream_release}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhMcubjs )}(h(struct pci_ide *ide)h]jy )}(hstruct pci_ide *ideh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(hpci_ideh]hpci_ide}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej) reftargetjmodnameN classnameNj- j0 )}j3 ]j6 )}j) jsbc.pci_ide_stream_releaseasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjK )}(hjN h]h*}(hj!hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jJ hjubj)}(hideh]hide}(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jx hjubah}(h]h ]h"]h$]h&]hhuh1jr hjhhhjhMcubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhjhMcubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jhjhMchjhhubj)}(hhh]j)}(h%unwind and release an **ide** contexth](hunwind and release an }(hjXhhhNhNubj)}(h**ide**h]hide}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubh context}(hjXhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMchjUhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMcubeh}(h]h ](jfunctioneh"]h$]h&]j jj jj jj j juh1jhhhj\hNhNubj)}(hX**Parameters** ``struct pci_ide *ide`` partially or fully registered IDE settings descriptor **Description** In support of automatic cleanup of IDE setup routines perform IDE teardown in expected reverse order of setup and with respect to which aspects of IDE setup have successfully completed. Be careful that setup order mirrors this shutdown order. Otherwise, open code releasing the IDE context.h](j)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMghjubj^)}(hhh]jc)}(hN``struct pci_ide *ide`` partially or fully registered IDE settings descriptor h](ji)}(h``struct pci_ide *ide``h]jo)}(hjh]hstruct pci_ide *ide}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&]uh1jhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMdhjubj)}(hhh]j)}(h5partially or fully registered IDE settings descriptorh]h5partially or fully registered IDE settings descriptor}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMdhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jbhjhMdhjubah}(h]h ]h"]h$]h&]uh1j]hjubj)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMfhjubj)}(hIn support of automatic cleanup of IDE setup routines perform IDE teardown in expected reverse order of setup and with respect to which aspects of IDE setup have successfully completed.h]hIn support of automatic cleanup of IDE setup routines perform IDE teardown in expected reverse order of setup and with respect to which aspects of IDE setup have successfully completed.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMehjubj)}(hhBe careful that setup order mirrors this shutdown order. Otherwise, open code releasing the IDE context.h]hhBe careful that setup order mirrors this shutdown order. Otherwise, open code releasing the IDE context.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMihjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj\hhhNhNubjn)}(hhh]h}(h]h ]h"]h$]h&]entries](jz$pci_ide_stream_register (C function)c.pci_ide_stream_registerhNtauh1jmhj\hhhNhNubj)}(hhh](j)}(h1int pci_ide_stream_register (struct pci_ide *ide)h]j)}(h0int pci_ide_stream_register(struct pci_ide *ide)h](j)}(hinth]hint}(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6hhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMubj)}(h h]h }(hjIhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6hhhjHhMubj)}(hpci_ide_stream_registerh]j)}(hpci_ide_stream_registerh]hpci_ide_stream_register}(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWubah}(h]h ](jjeh"]h$]h&]hhuh1jhj6hhhjHhMubjs )}(h(struct pci_ide *ide)h]jy )}(hstruct pci_ide *ideh](j)}(hjh]hstruct}(hjwhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjsubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjsubh)}(hhh]j)}(hpci_ideh]hpci_ide}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej) reftargetjmodnameN classnameNj- j0 )}j3 ]j6 )}j) j]sbc.pci_ide_stream_registerasbuh1hhjsubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjsubjK )}(hjN h]h*}(hjhhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jJ hjsubj)}(hideh]hide}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjsubeh}(h]h ]h"]h$]h&]noemphhhuh1jx hjoubah}(h]h ]h"]h$]h&]hhuh1jr hj6hhhjHhMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj2hhhjHhMubah}(h]j-ah ](jjeh"]h$]h&]jj)jhuh1jhjHhMhj/hhubj)}(hhh]j)}(h!Prepare to activate an IDE Streamh]h!Prepare to activate an IDE Stream}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhj/hhhjHhMubeh}(h]h ](jfunctioneh"]h$]h&]j jj jj jj j juh1jhhhj\hNhNubj)}(h**Parameters** ``struct pci_ide *ide`` IDE settings descriptor **Description** After a Stream ID has been acquired for **ide**, record the presence of the stream in sysfs. The expectation is that **ide** is immutable while registered.h](j)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMhjubj^)}(hhh]jc)}(h0``struct pci_ide *ide`` IDE settings descriptor h](ji)}(h``struct pci_ide *ide``h]jo)}(hj;h]hstruct pci_ide *ide}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj9ubah}(h]h ]h"]h$]h&]uh1jhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMhj5ubj)}(hhh]j)}(hIDE settings descriptorh]hIDE settings descriptor}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPhMhjQubah}(h]h ]h"]h$]h&]uh1jhj5ubeh}(h]h ]h"]h$]h&]uh1jbhjPhMhj2ubah}(h]h ]h"]h$]h&]uh1j]hjubj)}(h**Description**h]j)}(hjvh]h Description}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMhjubj)}(hAfter a Stream ID has been acquired for **ide**, record the presence of the stream in sysfs. The expectation is that **ide** is immutable while registered.h](h(After a Stream ID has been acquired for }(hjhhhNhNubj)}(h**ide**h]hide}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhF, record the presence of the stream in sysfs. The expectation is that }(hjhhhNhNubj)}(h**ide**h]hide}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh is immutable while registered.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj\hhhNhNubjn)}(hhh]h}(h]h ]h"]h$]h&]entries](jz&pci_ide_stream_unregister (C function)c.pci_ide_stream_unregisterhNtauh1jmhj\hhhNhNubj)}(hhh](j)}(h4void pci_ide_stream_unregister (struct pci_ide *ide)h]j)}(h3void pci_ide_stream_unregister(struct pci_ide *ide)h](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj)}(hpci_ide_stream_unregisterh]j)}(hpci_ide_stream_unregisterh]hpci_ide_stream_unregister}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhMubjs )}(h(struct pci_ide *ide)h]jy )}(hstruct pci_ide *ideh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(hpci_ideh]hpci_ide}(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7ubah}(h]h ]h"]h$]h&] refdomainjreftypej) reftargetj<modnameN classnameNj- j0 )}j3 ]j6 )}j) jsbc.pci_ide_stream_unregisterasbuh1hhjubj)}(h h]h }(hjZhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjK )}(hjN h]h*}(hjhhhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jJ hjubj)}(hideh]hide}(hjuhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jx hjubah}(h]h ]h"]h$]h&]hhuh1jr hjhhhjhMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhjhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jhjhMhjhhubj)}(hhh]j)}(h unwind pci_ide_stream_register()h]h unwind pci_ide_stream_register()3}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]j jj jj jj j juh1jhhhj\hNhNubj)}(h**Parameters** ``struct pci_ide *ide`` idle IDE settings descriptor **Description** In preparation for freeing **ide**, remove sysfs enumeration for the stream.h](j)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMhjubj^)}(hhh]jc)}(h5``struct pci_ide *ide`` idle IDE settings descriptor h](ji)}(h``struct pci_ide *ide``h]jo)}(hjh]hstruct pci_ide *ide}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&]uh1jhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMhjubj)}(hhh]j)}(hidle IDE settings descriptorh]hidle IDE settings descriptor}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jbhjhMhjubah}(h]h ]h"]h$]h&]uh1j]hjubj)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMhjubj)}(hLIn preparation for freeing **ide**, remove sysfs enumeration for the stream.h](hIn preparation for freeing }(hj1hhhNhNubj)}(h**ide**h]hide}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubh*, remove sysfs enumeration for the stream.}(hj1hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj\hhhNhNubjn)}(hhh]h}(h]h ]h"]h$]h&]entries](jz!pci_ide_stream_setup (C function)c.pci_ide_stream_setuphNtauh1jmhj\hhhNhNubj)}(hhh](j)}(hEvoid pci_ide_stream_setup (struct pci_dev *pdev, struct pci_ide *ide)h]j)}(hDvoid pci_ide_stream_setup(struct pci_dev *pdev, struct pci_ide *ide)h](j)}(hvoidh]hvoid}(hjrhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjnhhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMOubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjnhhhjhMOubj)}(hpci_ide_stream_setuph]j)}(hpci_ide_stream_setuph]hpci_ide_stream_setup}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjnhhhjhMOubjs )}(h+(struct pci_dev *pdev, struct pci_ide *ide)h](jy )}(hstruct pci_dev *pdevh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(hpci_devh]hpci_dev}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej) reftargetjmodnameN classnameNj- j0 )}j3 ]j6 )}j) jsbc.pci_ide_stream_setupasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjK )}(hjN h]h*}(hjhhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jJ hjubj)}(hpdevh]hpdev}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jx hjubjy )}(hstruct pci_ide *ideh](j)}(hjh]hstruct}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(hpci_ideh]hpci_ide}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<ubah}(h]h ]h"]h$]h&] refdomainjreftypej) reftargetjAmodnameN classnameNj- j0 )}j3 ]jc.pci_ide_stream_setupasbuh1hhjubj)}(h h]h }(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjK )}(hjN h]h*}(hjkhhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jJ hjubj)}(hideh]hide}(hjxhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jx hjubeh}(h]h ]h"]h$]h&]hhuh1jr hjnhhhjhMOubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjjhhhjhMOubah}(h]jeah ](jjeh"]h$]h&]jj)jhuh1jhjhMOhjghhubj)}(hhh]j)}(h2program settings to Selective IDE Stream registersh]h2program settings to Selective IDE Stream registers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMOhjhhubah}(h]h ]h"]h$]h&]uh1jhjghhhjhMOubeh}(h]h ](jfunctioneh"]h$]h&]j jj jj jj j juh1jhhhj\hNhNubj)}(hX**Parameters** ``struct pci_dev *pdev`` PCIe device object for either a Root Port or Endpoint Partner Port ``struct pci_ide *ide`` registered IDE settings descriptor **Description** When **pdev** is a PCI_EXP_TYPE_ENDPOINT then the PCI_IDE_EP partner settings are written to **pdev**'s Selective IDE Stream register block, and when **pdev** is a PCI_EXP_TYPE_ROOT_PORT, the PCI_IDE_RP settings are selected.h](j)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMShjubj^)}(hhh](jc)}(h\``struct pci_dev *pdev`` PCIe device object for either a Root Port or Endpoint Partner Port h](ji)}(h``struct pci_dev *pdev``h]jo)}(hjh]hstruct pci_dev *pdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&]uh1jhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMPhjubj)}(hhh]j)}(hBPCIe device object for either a Root Port or Endpoint Partner Porth]hBPCIe device object for either a Root Port or Endpoint Partner Port}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMPhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jbhjhMPhjubjc)}(h;``struct pci_ide *ide`` registered IDE settings descriptor h](ji)}(h``struct pci_ide *ide``h]jo)}(hjh]hstruct pci_ide *ide}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&]uh1jhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMQhjubj)}(hhh]j)}(h"registered IDE settings descriptorh]h"registered IDE settings descriptor}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1hMQhj2ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jbhj1hMQhjubeh}(h]h ]h"]h$]h&]uh1j]hjubj)}(h**Description**h]j)}(hjWh]h Description}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMShjubj)}(hWhen **pdev** is a PCI_EXP_TYPE_ENDPOINT then the PCI_IDE_EP partner settings are written to **pdev**'s Selective IDE Stream register block, and when **pdev** is a PCI_EXP_TYPE_ROOT_PORT, the PCI_IDE_RP settings are selected.h](hWhen }(hjmhhhNhNubj)}(h**pdev**h]hpdev}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmubhP is a PCI_EXP_TYPE_ENDPOINT then the PCI_IDE_EP partner settings are written to }(hjmhhhNhNubj)}(h**pdev**h]hpdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmubh3’s Selective IDE Stream register block, and when }(hjmhhhNhNubj)}(h**pdev**h]hpdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmubhC is a PCI_EXP_TYPE_ROOT_PORT, the PCI_IDE_RP settings are selected.}(hjmhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMRhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj\hhhNhNubjn)}(hhh]h}(h]h ]h"]h$]h&]entries](jz$pci_ide_stream_teardown (C function)c.pci_ide_stream_teardownhNtauh1jmhj\hhhNhNubj)}(hhh](j)}(hHvoid pci_ide_stream_teardown (struct pci_dev *pdev, struct pci_ide *ide)h]j)}(hGvoid pci_ide_stream_teardown(struct pci_dev *pdev, struct pci_ide *ide)h](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj)}(hpci_ide_stream_teardownh]j)}(hpci_ide_stream_teardownh]hpci_ide_stream_teardown}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhMubjs )}(h+(struct pci_dev *pdev, struct pci_ide *ide)h](jy )}(hstruct pci_dev *pdevh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubh)}(hhh]j)}(hpci_devh]hpci_dev}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&] refdomainjreftypej) reftargetj/modnameN classnameNj- j0 )}j3 ]j6 )}j) jsbc.pci_ide_stream_teardownasbuh1hhj ubj)}(h h]h }(hjMhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubjK )}(hjN h]h*}(hj[hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jJ hj ubj)}(hpdevh]hpdev}(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jx hjubjy )}(hstruct pci_ide *ideh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubh)}(hhh]j)}(hpci_ideh]hpci_ide}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej) reftargetjmodnameN classnameNj- j0 )}j3 ]jIc.pci_ide_stream_teardownasbuh1hhj}ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubjK )}(hjN h]h*}(hjhhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jJ hj}ubj)}(hideh]hide}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubeh}(h]h ]h"]h$]h&]noemphhhuh1jx hjubeh}(h]h ]h"]h$]h&]hhuh1jr hjhhhjhMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhjhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jhjhMhjhhubj)}(hhh]j)}(h)disable the stream and clear all settingsh]h)disable the stream and clear all settings}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]j jj jj jj j juh1jhhhj\hNhNubj)}(hX**Parameters** ``struct pci_dev *pdev`` PCIe device object for either a Root Port or Endpoint Partner Port ``struct pci_ide *ide`` registered IDE settings descriptor **Description** For stream destruction, zero all registers that may have been written by pci_ide_stream_setup(). Consider pci_ide_stream_disable() to leave settings in place while temporarily disabling the stream.h](j)}(h**Parameters**h]j)}(hj$h]h Parameters}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMhjubj^)}(hhh](jc)}(h\``struct pci_dev *pdev`` PCIe device object for either a Root Port or Endpoint Partner Port h](ji)}(h``struct pci_dev *pdev``h]jo)}(hjCh]hstruct pci_dev *pdev}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjAubah}(h]h ]h"]h$]h&]uh1jhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMhj=ubj)}(hhh]j)}(hBPCIe device object for either a Root Port or Endpoint Partner Porth]hBPCIe device object for either a Root Port or Endpoint Partner Port}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXhMhjYubah}(h]h ]h"]h$]h&]uh1jhj=ubeh}(h]h ]h"]h$]h&]uh1jbhjXhMhj:ubjc)}(h;``struct pci_ide *ide`` registered IDE settings descriptor h](ji)}(h``struct pci_ide *ide``h]jo)}(hj|h]hstruct pci_ide *ide}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjzubah}(h]h ]h"]h$]h&]uh1jhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMhjvubj)}(hhh]j)}(h"registered IDE settings descriptorh]h"registered IDE settings descriptor}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjvubeh}(h]h ]h"]h$]h&]uh1jbhjhMhj:ubeh}(h]h ]h"]h$]h&]uh1j]hjubj)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMhjubj)}(hFor stream destruction, zero all registers that may have been written by pci_ide_stream_setup(). Consider pci_ide_stream_disable() to leave settings in place while temporarily disabling the stream.h]hFor stream destruction, zero all registers that may have been written by pci_ide_stream_setup(). Consider pci_ide_stream_disable() to leave settings in place while temporarily disabling the stream.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj\hhhNhNubjn)}(hhh]h}(h]h ]h"]h$]h&]entries](jz"pci_ide_stream_enable (C function)c.pci_ide_stream_enablehNtauh1jmhj\hhhNhNubj)}(hhh](j)}(hEint pci_ide_stream_enable (struct pci_dev *pdev, struct pci_ide *ide)h]j)}(hDint pci_ide_stream_enable(struct pci_dev *pdev, struct pci_ide *ide)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhj hMubj)}(hpci_ide_stream_enableh]j)}(hpci_ide_stream_enableh]hpci_ide_stream_enable}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhj hMubjs )}(h+(struct pci_dev *pdev, struct pci_ide *ide)h](jy )}(hstruct pci_dev *pdevh](j)}(hjh]hstruct}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubj)}(h h]h }(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubh)}(hhh]j)}(hpci_devh]hpci_dev}(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjTubah}(h]h ]h"]h$]h&] refdomainjreftypej) reftargetjYmodnameN classnameNj- j0 )}j3 ]j6 )}j) jsbc.pci_ide_stream_enableasbuh1hhj5ubj)}(h h]h }(hjwhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubjK )}(hjN h]h*}(hjhhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jJ hj5ubj)}(hpdevh]hpdev}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubeh}(h]h ]h"]h$]h&]noemphhhuh1jx hj1ubjy )}(hstruct pci_ide *ideh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(hpci_ideh]hpci_ide}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej) reftargetjmodnameN classnameNj- j0 )}j3 ]jsc.pci_ide_stream_enableasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjK )}(hjN h]h*}(hjhhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jJ hjubj)}(hideh]hide}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jx hj1ubeh}(h]h ]h"]h$]h&]hhuh1jr hjhhhj hMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhj hMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jhj hMhjhhubj)}(hhh]j)}(henable a Selective IDE Streamh]henable a Selective IDE Stream}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMhj)hhubah}(h]h ]h"]h$]h&]uh1jhjhhhj hMubeh}(h]h ](jfunctioneh"]h$]h&]j jj jDj jDj j juh1jhhhj\hNhNubj)}(hX**Parameters** ``struct pci_dev *pdev`` PCIe device object for either a Root Port or Endpoint Partner Port ``struct pci_ide *ide`` registered and setup IDE settings descriptor **Description** Activate the stream by writing to the Selective IDE Stream Control Register. Note that the state may go "insecure" at any point after returning 0, but those events are equivalent to a "link down" event and handled via asynchronous error reporting. Caller is responsible to clear the enable bit in the -ENXIO case. **Return** 0 if the stream successfully entered the "secure" state, and -EINVAL if **ide** is invalid, and -ENXIO if the stream fails to enter the secure state.h](j)}(h**Parameters**h]j)}(hjNh]h Parameters}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMhjHubj^)}(hhh](jc)}(h\``struct pci_dev *pdev`` PCIe device object for either a Root Port or Endpoint Partner Port h](ji)}(h``struct pci_dev *pdev``h]jo)}(hjmh]hstruct pci_dev *pdev}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjkubah}(h]h ]h"]h$]h&]uh1jhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMhjgubj)}(hhh]j)}(hBPCIe device object for either a Root Port or Endpoint Partner Porth]hBPCIe device object for either a Root Port or Endpoint Partner Port}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjgubeh}(h]h ]h"]h$]h&]uh1jbhjhMhjdubjc)}(hE``struct pci_ide *ide`` registered and setup IDE settings descriptor h](ji)}(h``struct pci_ide *ide``h]jo)}(hjh]hstruct pci_ide *ide}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&]uh1jhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMhjubj)}(hhh]j)}(h,registered and setup IDE settings descriptorh]h,registered and setup IDE settings descriptor}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jbhjhMhjdubeh}(h]h ]h"]h$]h&]uh1j]hjHubj)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMhjHubj)}(hLActivate the stream by writing to the Selective IDE Stream Control Register.h]hLActivate the stream by writing to the Selective IDE Stream Control Register.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMhjHubj)}(hNote that the state may go "insecure" at any point after returning 0, but those events are equivalent to a "link down" event and handled via asynchronous error reporting.h]hNote that the state may go “insecure” at any point after returning 0, but those events are equivalent to a “link down” event and handled via asynchronous error reporting.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMhjHubj)}(hACaller is responsible to clear the enable bit in the -ENXIO case.h]hACaller is responsible to clear the enable bit in the -ENXIO case.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMhjHubj)}(h **Return**h]j)}(hj&h]hReturn}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMhjHubj)}(h0 if the stream successfully entered the "secure" state, and -EINVAL if **ide** is invalid, and -ENXIO if the stream fails to enter the secure state.h](hL0 if the stream successfully entered the “secure” state, and -EINVAL if }(hj<hhhNhNubj)}(h**ide**h]hide}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<ubhF is invalid, and -ENXIO if the stream fails to enter the secure state.}(hj<hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMhjHubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj\hhhNhNubjn)}(hhh]h}(h]h ]h"]h$]h&]entries](jz#pci_ide_stream_disable (C function)c.pci_ide_stream_disablehNtauh1jmhj\hhhNhNubj)}(hhh](j)}(hGvoid pci_ide_stream_disable (struct pci_dev *pdev, struct pci_ide *ide)h]j)}(hFvoid pci_ide_stream_disable(struct pci_dev *pdev, struct pci_ide *ide)h](j)}(hvoidh]hvoid}(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyhhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyhhhjhMubj)}(hpci_ide_stream_disableh]j)}(hpci_ide_stream_disableh]hpci_ide_stream_disable}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjyhhhjhMubjs )}(h+(struct pci_dev *pdev, struct pci_ide *ide)h](jy )}(hstruct pci_dev *pdevh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(hpci_devh]hpci_dev}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej) reftargetjmodnameN classnameNj- j0 )}j3 ]j6 )}j) jsbc.pci_ide_stream_disableasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjK )}(hjN h]h*}(hjhhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jJ hjubj)}(hpdevh]hpdev}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jx hjubjy )}(hstruct pci_ide *ideh](j)}(hjh]hstruct}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubj)}(h h]h }(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubh)}(hhh]j)}(hpci_ideh]hpci_ide}(hjJhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGubah}(h]h ]h"]h$]h&] refdomainjreftypej) reftargetjLmodnameN classnameNj- j0 )}j3 ]jc.pci_ide_stream_disableasbuh1hhj(ubj)}(h h]h }(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubjK )}(hjN h]h*}(hjvhhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jJ hj(ubj)}(hideh]hide}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubeh}(h]h ]h"]h$]h&]noemphhhuh1jx hjubeh}(h]h ]h"]h$]h&]hhuh1jr hjyhhhjhMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjuhhhjhMubah}(h]jpah ](jjeh"]h$]h&]jj)jhuh1jhjhMhjrhhubj)}(hhh]j)}(hdisable a Selective IDE Streamh]hdisable a Selective IDE Stream}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjrhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]j jj jj jj j juh1jhhhj\hNhNubj)}(hX!**Parameters** ``struct pci_dev *pdev`` PCIe device object for either a Root Port or Endpoint Partner Port ``struct pci_ide *ide`` registered and setup IDE settings descriptor **Description** Clear the Selective IDE Stream Control Register, but leave all other registers untouched.h](j)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMhjubj^)}(hhh](jc)}(h\``struct pci_dev *pdev`` PCIe device object for either a Root Port or Endpoint Partner Port h](ji)}(h``struct pci_dev *pdev``h]jo)}(hjh]hstruct pci_dev *pdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&]uh1jhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMhjubj)}(hhh]j)}(hBPCIe device object for either a Root Port or Endpoint Partner Porth]hBPCIe device object for either a Root Port or Endpoint Partner Port}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jbhjhMhjubjc)}(hE``struct pci_ide *ide`` registered and setup IDE settings descriptor h](ji)}(h``struct pci_ide *ide``h]jo)}(hj'h]hstruct pci_ide *ide}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj%ubah}(h]h ]h"]h$]h&]uh1jhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMhj!ubj)}(hhh]j)}(h,registered and setup IDE settings descriptorh]h,registered and setup IDE settings descriptor}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<hMhj=ubah}(h]h ]h"]h$]h&]uh1jhj!ubeh}(h]h ]h"]h$]h&]uh1jbhj<hMhjubeh}(h]h ]h"]h$]h&]uh1j]hjubj)}(h**Description**h]j)}(hjbh]h Description}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMhjubj)}(hYClear the Selective IDE Stream Control Register, but leave all other registers untouched.h]hYClear the Selective IDE Stream Control Register, but leave all other registers untouched.}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj\hhhNhNubjn)}(hhh]h}(h]h ]h"]h$]h&]entries](jz#pci_ide_set_nr_streams (C function)c.pci_ide_set_nr_streamshNtauh1jmhj\hhhNhNubj)}(hhh](j)}(h@void pci_ide_set_nr_streams (struct pci_host_bridge *hb, u16 nr)h]j)}(h?void pci_ide_set_nr_streams(struct pci_host_bridge *hb, u16 nr)h](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj)}(hpci_ide_set_nr_streamsh]j)}(hpci_ide_set_nr_streamsh]hpci_ide_set_nr_streams}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhMubjs )}(h$(struct pci_host_bridge *hb, u16 nr)h](jy )}(hstruct pci_host_bridge *hbh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(hpci_host_bridgeh]hpci_host_bridge}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej) reftargetjmodnameN classnameNj- j0 )}j3 ]j6 )}j) jsbc.pci_ide_set_nr_streamsasbuh1hhjubj)}(h h]h }(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjK )}(hjN h]h*}(hj0hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jJ hjubj)}(hhbh]hhb}(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jx hjubjy )}(hu16 nrh](h)}(hhh]j)}(hu16h]hu16}(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVubah}(h]h ]h"]h$]h&] refdomainjreftypej) reftargetj[modnameN classnameNj- j0 )}j3 ]jc.pci_ide_set_nr_streamsasbuh1hhjRubj)}(h h]h }(hjwhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjRubj)}(hnrh]hnr}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjRubeh}(h]h ]h"]h$]h&]noemphhhuh1jx hjubeh}(h]h ]h"]h$]h&]hhuh1jr hjhhhjhMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhjhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jhjhMhjhhubj)}(hhh]j)}(h-sets size of the pool of IDE Stream resourcesh]h-sets size of the pool of IDE Stream resources}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]j jj jj jj j juh1jhhhj\hNhNubj)}(hX`**Parameters** ``struct pci_host_bridge *hb`` host bridge boundary for the stream pool ``u16 nr`` number of streams **Description** Platform PCI init and/or expert test module use only. Limit IDE Stream establishment by setting the number of stream resources available at the host bridge. Platform init code must set this before the first pci_ide_stream_alloc() call if the platform has less than the default of 256 streams per host-bridge. The "PCI_IDE" symbol namespace is required because this is typically a detail that is settled in early PCI init. I.e. this export is not for endpoint drivers.h](j)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMhjubj^)}(hhh](jc)}(hH``struct pci_host_bridge *hb`` host bridge boundary for the stream pool h](ji)}(h``struct pci_host_bridge *hb``h]jo)}(hjh]hstruct pci_host_bridge *hb}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&]uh1jhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMhjubj)}(hhh]j)}(h(host bridge boundary for the stream poolh]h(host bridge boundary for the stream pool}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj hMhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jbhj hMhjubjc)}(h``u16 nr`` number of streams h](ji)}(h ``u16 nr``h]jo)}(hj) h]hu16 nr}(hj+ hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj' ubah}(h]h ]h"]h$]h&]uh1jhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMhj# ubj)}(hhh]j)}(hnumber of streamsh]hnumber of streams}(hjB hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj> hMhj? ubah}(h]h ]h"]h$]h&]uh1jhj# ubeh}(h]h ]h"]h$]h&]uh1jbhj> hMhjubeh}(h]h ]h"]h$]h&]uh1j]hjubj)}(h**Description**h]j)}(hjd h]h Description}(hjf hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjb ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMhjubj)}(hX4Platform PCI init and/or expert test module use only. Limit IDE Stream establishment by setting the number of stream resources available at the host bridge. Platform init code must set this before the first pci_ide_stream_alloc() call if the platform has less than the default of 256 streams per host-bridge.h]hX4Platform PCI init and/or expert test module use only. Limit IDE Stream establishment by setting the number of stream resources available at the host bridge. Platform init code must set this before the first pci_ide_stream_alloc() call if the platform has less than the default of 256 streams per host-bridge.}(hjz hhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMhjubj)}(hThe "PCI_IDE" symbol namespace is required because this is typically a detail that is settled in early PCI init. I.e. this export is not for endpoint drivers.h]hThe “PCI_IDE” symbol namespace is required because this is typically a detail that is settled in early PCI init. I.e. this export is not for endpoint drivers.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj\hhhNhNubjn)}(hhh]h}(h]h ]h"]h$]h&]entries](jzpci_tdi (C struct) c.pci_tdihNtauh1jmhj\hhh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhNubj)}(hhh](j)}(hpci_tdih]j)}(hstruct pci_tdih](j)}(hjh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhj hKubj)}(hpci_tdih]j)}(hj h]hpci_tdi}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj hhhj hKubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj hhhj hKubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1jhj hKhj hhubj)}(hhh]j)}(h+Core TEE I/O Device Interface (TDI) contexth]h+Core TEE I/O Device Interface (TDI) context}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKQhj hhubah}(h]h ]h"]h$]h&]uh1jhj hhhj hKubeh}(h]h ](jstructeh"]h$]h&]j jj j!j j!j j juh1jhhhj\hj hNubj)}(hX-**Definition**:: struct pci_tdi { struct pci_dev *pdev; struct kvm *kvm; u32 tdi_id; }; **Members** ``pdev`` host side representation of guest-side TDI ``kvm`` TEE VM context of bound TDI ``tdi_id`` Identifier (virtual BDF) for the TDI as referenced by the TSM and DSMh](j)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!ubh:}(hj!hhhNhNubeh}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKUhj!ubj5)}(hRstruct pci_tdi { struct pci_dev *pdev; struct kvm *kvm; u32 tdi_id; };h]hRstruct pci_tdi { struct pci_dev *pdev; struct kvm *kvm; u32 tdi_id; };}hj8!sbah}(h]h ]h"]h$]h&]hhuh1j4h[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKWhj!ubj)}(h **Members**h]j)}(hjI!h]hMembers}(hjK!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjG!ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhK]hj!ubj^)}(hhh](jc)}(h4``pdev`` host side representation of guest-side TDI h](ji)}(h``pdev``h]jo)}(hjh!h]hpdev}(hjj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjf!ubah}(h]h ]h"]h$]h&]uh1jhh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKShjb!ubj)}(hhh]j)}(h*host side representation of guest-side TDIh]h*host side representation of guest-side TDI}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}!hKShj~!ubah}(h]h ]h"]h$]h&]uh1jhjb!ubeh}(h]h ]h"]h$]h&]uh1jbhj}!hKShj_!ubjc)}(h$``kvm`` TEE VM context of bound TDI h](ji)}(h``kvm``h]jo)}(hj!h]hkvm}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj!ubah}(h]h ]h"]h$]h&]uh1jhh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKThj!ubj)}(hhh]j)}(hTEE VM context of bound TDIh]hTEE VM context of bound TDI}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!hKThj!ubah}(h]h ]h"]h$]h&]uh1jhj!ubeh}(h]h ]h"]h$]h&]uh1jbhj!hKThj_!ubjc)}(hP``tdi_id`` Identifier (virtual BDF) for the TDI as referenced by the TSM and DSMh](ji)}(h ``tdi_id``h]jo)}(hj!h]htdi_id}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj!ubah}(h]h ]h"]h$]h&]uh1jhh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKThj!ubj)}(hhh]j)}(hEIdentifier (virtual BDF) for the TDI as referenced by the TSM and DSMh]hEIdentifier (virtual BDF) for the TDI as referenced by the TSM and DSM}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKUhj!ubah}(h]h ]h"]h$]h&]uh1jhj!ubeh}(h]h ]h"]h$]h&]uh1jbhj!hKThj_!ubeh}(h]h ]h"]h$]h&]uh1j]hj!ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj\hhhj hNubjn)}(hhh]h}(h]h ]h"]h$]h&]entries](jzpci_tsm (C struct) c.pci_tsmhNtauh1jmhj\hhhj hNubj)}(hhh](j)}(hpci_tsmh]j)}(hstruct pci_tsmh](j)}(hjh]hstruct}(hj4"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0"hhh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhK[ubj)}(h h]h }(hjB"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0"hhhjA"hK[ubj)}(hpci_tsmh]j)}(hj."h]hpci_tsm}(hjT"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjP"ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj0"hhhjA"hK[ubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj,"hhhjA"hK[ubah}(h]j'"ah ](jjeh"]h$]h&]jj)jhuh1jhjA"hK[hj)"hhubj)}(hhh]j)}(h*Core TSM context for a given PCIe endpointh]h*Core TSM context for a given PCIe endpoint}(hjv"hhhNhNubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhK]hjs"hhubah}(h]h ]h"]h$]h&]uh1jhj)"hhhjA"hK[ubeh}(h]h ](jstructeh"]h$]h&]j jj j"j j"j j juh1jhhhj\hj hNubj)}(hX**Definition**:: struct pci_tsm { struct pci_dev *pdev; struct pci_dev *dsm_dev; struct tsm_dev *tsm_dev; struct pci_tdi *tdi; }; **Members** ``pdev`` Back ref to device function, distinguishes type of pci_tsm context ``dsm_dev`` PCI Device Security Manager for link operations on **pdev** ``tsm_dev`` PCI TEE Security Manager device for Link Confidentiality or Device Function Security operations ``tdi`` TDI context established by the **bind** link operationh](j)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubh:}(hj"hhhNhNubeh}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKahj"ubj5)}(hstruct pci_tsm { struct pci_dev *pdev; struct pci_dev *dsm_dev; struct tsm_dev *tsm_dev; struct pci_tdi *tdi; };h]hstruct pci_tsm { struct pci_dev *pdev; struct pci_dev *dsm_dev; struct tsm_dev *tsm_dev; struct pci_tdi *tdi; };}hj"sbah}(h]h ]h"]h$]h&]hhuh1j4h[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKchj"ubj)}(h **Members**h]j)}(hj"h]hMembers}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKjhj"ubj^)}(hhh](jc)}(hL``pdev`` Back ref to device function, distinguishes type of pci_tsm context h](ji)}(h``pdev``h]jo)}(hj"h]hpdev}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj"ubah}(h]h ]h"]h$]h&]uh1jhh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhK_hj"ubj)}(hhh]j)}(hBBack ref to device function, distinguishes type of pci_tsm contexth]hBBack ref to device function, distinguishes type of pci_tsm context}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"hK_hj"ubah}(h]h ]h"]h$]h&]uh1jhj"ubeh}(h]h ]h"]h$]h&]uh1jbhj"hK_hj"ubjc)}(hH``dsm_dev`` PCI Device Security Manager for link operations on **pdev** h](ji)}(h ``dsm_dev``h]jo)}(hj#h]hdsm_dev}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj#ubah}(h]h ]h"]h$]h&]uh1jhh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhK`hj#ubj)}(hhh]j)}(h;PCI Device Security Manager for link operations on **pdev**h](h3PCI Device Security Manager for link operations on }(hj5#hhhNhNubj)}(h**pdev**h]hpdev}(hj=#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5#ubeh}(h]h ]h"]h$]h&]uh1jhj1#hK`hj2#ubah}(h]h ]h"]h$]h&]uh1jhj#ubeh}(h]h ]h"]h$]h&]uh1jbhj1#hK`hj"ubjc)}(hl``tsm_dev`` PCI TEE Security Manager device for Link Confidentiality or Device Function Security operations h](ji)}(h ``tsm_dev``h]jo)}(hjc#h]htsm_dev}(hje#hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhja#ubah}(h]h ]h"]h$]h&]uh1jhh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKbhj]#ubj)}(hhh]j)}(h_PCI TEE Security Manager device for Link Confidentiality or Device Function Security operationsh]h_PCI TEE Security Manager device for Link Confidentiality or Device Function Security operations}(hj|#hhhNhNubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKahjy#ubah}(h]h ]h"]h$]h&]uh1jhj]#ubeh}(h]h ]h"]h$]h&]uh1jbhjx#hKbhj"ubjc)}(h>``tdi`` TDI context established by the **bind** link operationh](ji)}(h``tdi``h]jo)}(hj#h]htdi}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj#ubah}(h]h ]h"]h$]h&]uh1jhh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKbhj#ubj)}(hhh]j)}(h6TDI context established by the **bind** link operationh](hTDI context established by the }(hj#hhhNhNubj)}(h**bind**h]hbind}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj#ubh link operation}(hj#hhhNhNubeh}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKchj#ubah}(h]h ]h"]h$]h&]uh1jhj#ubeh}(h]h ]h"]h$]h&]uh1jbhj#hKbhj"ubeh}(h]h ]h"]h$]h&]uh1j]hj"ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj\hhhj hNubj)}(h**Description**h]j)}(hj#h]h Description}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj#ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKfhj\hhubj)}(hThis structure is wrapped by low level TSM driver data and returned by probe()/lock(), it is freed by the corresponding remove()/unlock().h]hThis structure is wrapped by low level TSM driver data and returned by probe()/lock(), it is freed by the corresponding remove()/unlock().}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKchj\hhubj)}(hXaFor link operations it serves to cache the association between a Device Security Manager (DSM) and the functions that manager can assign to a TVM. That can be "self", for assigning function0 of a TEE I/O device, a sub-function (SR-IOV virtual function, or non-function0 multifunction-device), or a downstream endpoint (PCIe upstream switch-port as DSM).h]hXeFor link operations it serves to cache the association between a Device Security Manager (DSM) and the functions that manager can assign to a TVM. That can be “self”, for assigning function0 of a TEE I/O device, a sub-function (SR-IOV virtual function, or non-function0 multifunction-device), or a downstream endpoint (PCIe upstream switch-port as DSM).}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKfhj\hhubjn)}(hhh]h}(h]h ]h"]h$]h&]entries](jzpci_tsm_pf0 (C struct) c.pci_tsm_pf0hNtauh1jmhj\hhhj hNubj)}(hhh](j)}(h pci_tsm_pf0h]j)}(hstruct pci_tsm_pf0h](j)}(hjh]hstruct}(hj?$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;$hhh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKpubj)}(h h]h }(hjM$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;$hhhjL$hKpubj)}(h pci_tsm_pf0h]j)}(hj9$h]h pci_tsm_pf0}(hj_$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[$ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj;$hhhjL$hKpubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj7$hhhjL$hKpubah}(h]j2$ah ](jjeh"]h$]h&]jj)jhuh1jhjL$hKphj4$hhubj)}(hhh]j)}(h&Physical Function 0 TDISP link contexth]h&Physical Function 0 TDISP link context}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKvhj~$hhubah}(h]h ]h"]h$]h&]uh1jhj4$hhhjL$hKpubeh}(h]h ](jstructeh"]h$]h&]j jj j$j j$j j juh1jhhhj\hj hNubj)}(hX'**Definition**:: struct pci_tsm_pf0 { struct pci_tsm base_tsm; struct mutex lock; struct pci_doe_mb *doe_mb; }; **Members** ``base_tsm`` generic core "tsm" context ``lock`` mutual exclustion for pci_tsm_ops invocation ``doe_mb`` PCIe Data Object Exchange mailboxh](j)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubh:}(hj$hhhNhNubeh}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKzhj$ubj5)}(hjstruct pci_tsm_pf0 { struct pci_tsm base_tsm; struct mutex lock; struct pci_doe_mb *doe_mb; };h]hjstruct pci_tsm_pf0 { struct pci_tsm base_tsm; struct mutex lock; struct pci_doe_mb *doe_mb; };}hj$sbah}(h]h ]h"]h$]h&]hhuh1j4h[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhK|hj$ubj)}(h **Members**h]j)}(hj$h]hMembers}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKhj$ubj^)}(hhh](jc)}(h(``base_tsm`` generic core "tsm" context h](ji)}(h ``base_tsm``h]jo)}(hj$h]hbase_tsm}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj$ubah}(h]h ]h"]h$]h&]uh1jhh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKxhj$ubj)}(hhh]j)}(hgeneric core "tsm" contexth]hgeneric core “tsm” context}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%hKxhj%ubah}(h]h ]h"]h$]h&]uh1jhj$ubeh}(h]h ]h"]h$]h&]uh1jbhj%hKxhj$ubjc)}(h6``lock`` mutual exclustion for pci_tsm_ops invocation h](ji)}(h``lock``h]jo)}(hj'%h]hlock}(hj)%hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj%%ubah}(h]h ]h"]h$]h&]uh1jhh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKyhj!%ubj)}(hhh]j)}(h,mutual exclustion for pci_tsm_ops invocationh]h,mutual exclustion for pci_tsm_ops invocation}(hj@%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<%hKyhj=%ubah}(h]h ]h"]h$]h&]uh1jhj!%ubeh}(h]h ]h"]h$]h&]uh1jbhj<%hKyhj$ubjc)}(h,``doe_mb`` PCIe Data Object Exchange mailboxh](ji)}(h ``doe_mb``h]jo)}(hj`%h]hdoe_mb}(hjb%hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj^%ubah}(h]h ]h"]h$]h&]uh1jhh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKyhjZ%ubj)}(hhh]j)}(h!PCIe Data Object Exchange mailboxh]h!PCIe Data Object Exchange mailbox}(hjy%hhhNhNubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKzhjv%ubah}(h]h ]h"]h$]h&]uh1jhjZ%ubeh}(h]h ]h"]h$]h&]uh1jbhju%hKyhj$ubeh}(h]h ]h"]h$]h&]uh1j]hj$ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj\hhhj hNubjn)}(hhh]h}(h]h ]h"]h$]h&]entries](jzpci_tsm_req_scope (C enum)c.pci_tsm_req_scopehNtauh1jmhj\hhhj hNubj)}(hhh](j)}(hpci_tsm_req_scopeh]j)}(henum pci_tsm_req_scopeh](j)}(henumh]henum}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%hhh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKubj)}(h h]h }(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%hhhj%hKubj)}(hpci_tsm_req_scopeh]j)}(hj%h]hpci_tsm_req_scope}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj%hhhj%hKubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj%hhhj%hKubah}(h]j%ah ](jjeh"]h$]h&]jj)jhuh1jhj%hKhj%hhubj)}(hhh]j)}(h.Scope of guest requests to be validated by TSMh]h.Scope of guest requests to be validated by TSM}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKhj%hhubah}(h]h ]h"]h$]h&]uh1jhj%hhhj%hKubeh}(h]h ](jenumeh"]h$]h&]j jj j&j j&j j juh1jhhhj\hj hNubj)}(hX**Constants** ``PCI_TSM_REQ_INFO`` Read-only, without side effects, request for typical TDISP collateral information like Device Interface Reports. No device secrets are permitted, and no device state is changed. ``PCI_TSM_REQ_STATE_CHANGE`` Request to change the TDISP state from UNLOCKED->LOCKED, LOCKED->RUN, or other architecture specific state changes to support those transitions for a TDI. No other (unrelated to TDISP) device / host state, configuration, or data change is permitted. ``PCI_TSM_REQ_DEBUG_READ`` Read-only request for debug information A method to facilitate TVM information retrieval outside of typical TDISP operational requirements. No device secrets are permitted. ``PCI_TSM_REQ_DEBUG_WRITE`` Device state changes for debug purposes The request may affect the operational state of the device outside of the TDISP operational model. If allowed, requires CAP_SYS_RAW_IO, and will taint the kernel.h](j)}(h **Constants**h]j)}(hj&h]h Constants}(hj!&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKhj&ubj^)}(hhh](jc)}(h``PCI_TSM_REQ_INFO`` Read-only, without side effects, request for typical TDISP collateral information like Device Interface Reports. No device secrets are permitted, and no device state is changed. h](ji)}(h``PCI_TSM_REQ_INFO``h]jo)}(hj>&h]hPCI_TSM_REQ_INFO}(hj@&hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj<&ubah}(h]h ]h"]h$]h&]uh1jhh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKhj8&ubj)}(hhh]j)}(hRead-only, without side effects, request for typical TDISP collateral information like Device Interface Reports. No device secrets are permitted, and no device state is changed.h]hRead-only, without side effects, request for typical TDISP collateral information like Device Interface Reports. No device secrets are permitted, and no device state is changed.}(hjW&hhhNhNubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKhjT&ubah}(h]h ]h"]h$]h&]uh1jhj8&ubeh}(h]h ]h"]h$]h&]uh1jbhjS&hKhj5&ubjc)}(hX``PCI_TSM_REQ_STATE_CHANGE`` Request to change the TDISP state from UNLOCKED->LOCKED, LOCKED->RUN, or other architecture specific state changes to support those transitions for a TDI. No other (unrelated to TDISP) device / host state, configuration, or data change is permitted. h](ji)}(h``PCI_TSM_REQ_STATE_CHANGE``h]jo)}(hjx&h]hPCI_TSM_REQ_STATE_CHANGE}(hjz&hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjv&ubah}(h]h ]h"]h$]h&]uh1jhh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKhjr&ubj)}(hhh]j)}(hRequest to change the TDISP state from UNLOCKED->LOCKED, LOCKED->RUN, or other architecture specific state changes to support those transitions for a TDI. No other (unrelated to TDISP) device / host state, configuration, or data change is permitted.h]hRequest to change the TDISP state from UNLOCKED->LOCKED, LOCKED->RUN, or other architecture specific state changes to support those transitions for a TDI. No other (unrelated to TDISP) device / host state, configuration, or data change is permitted.}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKhj&ubah}(h]h ]h"]h$]h&]uh1jhjr&ubeh}(h]h ]h"]h$]h&]uh1jbhj&hKhj5&ubjc)}(h``PCI_TSM_REQ_DEBUG_READ`` Read-only request for debug information A method to facilitate TVM information retrieval outside of typical TDISP operational requirements. No device secrets are permitted. h](ji)}(h``PCI_TSM_REQ_DEBUG_READ``h]jo)}(hj&h]hPCI_TSM_REQ_DEBUG_READ}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj&ubah}(h]h ]h"]h$]h&]uh1jhh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKhj&ubj)}(hhh](j)}(h'Read-only request for debug informationh]h'Read-only request for debug information}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKhj&ubj)}(hA method to facilitate TVM information retrieval outside of typical TDISP operational requirements. No device secrets are permitted.h]hA method to facilitate TVM information retrieval outside of typical TDISP operational requirements. No device secrets are permitted.}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKhj&ubeh}(h]h ]h"]h$]h&]uh1jhj&ubeh}(h]h ]h"]h$]h&]uh1jbhj&hKhj5&ubjc)}(h``PCI_TSM_REQ_DEBUG_WRITE`` Device state changes for debug purposes The request may affect the operational state of the device outside of the TDISP operational model. If allowed, requires CAP_SYS_RAW_IO, and will taint the kernel.h](ji)}(h``PCI_TSM_REQ_DEBUG_WRITE``h]jo)}(hj&h]hPCI_TSM_REQ_DEBUG_WRITE}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj&ubah}(h]h ]h"]h$]h&]uh1jhh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKhj&ubj)}(hhh](j)}(h'Device state changes for debug purposesh]h'Device state changes for debug purposes}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKhj'ubj)}(hThe request may affect the operational state of the device outside of the TDISP operational model. If allowed, requires CAP_SYS_RAW_IO, and will taint the kernel.h]hThe request may affect the operational state of the device outside of the TDISP operational model. If allowed, requires CAP_SYS_RAW_IO, and will taint the kernel.}(hj#'hhhNhNubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKhj'ubeh}(h]h ]h"]h$]h&]uh1jhj&ubeh}(h]h ]h"]h$]h&]uh1jbhj'hKhj5&ubeh}(h]h ]h"]h$]h&]uh1j]hj&ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj\hhhj hNubj)}(h**Description**h]j)}(hjM'h]h Description}(hjO'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjK'ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKhj\hhubj)}(hX Guest requests are a transport for a TVM to communicate with a TSM + DSM for a given TDI. A TSM driver is responsible for maintaining the kernel security model and limit commands that may affect the host, or are otherwise outside the typical TDISP operational model.h]hX Guest requests are a transport for a TVM to communicate with a TSM + DSM for a given TDI. A TSM driver is responsible for maintaining the kernel security model and limit commands that may affect the host, or are otherwise outside the typical TDISP operational model.}(hjc'hhhNhNubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKhj\hhubjn)}(hhh]h}(h]h ]h"]h$]h&]entries](jzpci_tsm_bind (C function)c.pci_tsm_bindhNtauh1jmhj\hhhNhNubj)}(hhh](j)}(hDint pci_tsm_bind (struct pci_dev *pdev, struct kvm *kvm, u32 tdi_id)h]j)}(hCint pci_tsm_bind(struct pci_dev *pdev, struct kvm *kvm, u32 tdi_id)h](j)}(hinth]hint}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'hhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMKubj)}(h h]h }(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'hhhj'hMKubj)}(h pci_tsm_bindh]j)}(h pci_tsm_bindh]h pci_tsm_bind}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj'hhhj'hMKubjs )}(h3(struct pci_dev *pdev, struct kvm *kvm, u32 tdi_id)h](jy )}(hstruct pci_dev *pdevh](j)}(hjh]hstruct}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubj)}(h h]h }(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubh)}(hhh]j)}(hpci_devh]hpci_dev}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubah}(h]h ]h"]h$]h&] refdomainjreftypej) reftargetj'modnameN classnameNj- j0 )}j3 ]j6 )}j) j'sbc.pci_tsm_bindasbuh1hhj'ubj)}(h h]h }(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubjK )}(hjN h]h*}(hj(hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jJ hj'ubj)}(hpdevh]hpdev}(hj!(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubeh}(h]h ]h"]h$]h&]noemphhhuh1jx hj'ubjy )}(hstruct kvm *kvmh](j)}(hjh]hstruct}(hj:(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6(ubj)}(h h]h }(hjG(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6(ubh)}(hhh]j)}(hkvmh]hkvm}(hjX(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjU(ubah}(h]h ]h"]h$]h&] refdomainjreftypej) reftargetjZ(modnameN classnameNj- j0 )}j3 ]j(c.pci_tsm_bindasbuh1hhj6(ubj)}(h h]h }(hjv(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6(ubjK )}(hjN h]h*}(hj(hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jJ hj6(ubj)}(hkvmh]hkvm}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6(ubeh}(h]h ]h"]h$]h&]noemphhhuh1jx hj'ubjy )}(h u32 tdi_idh](h)}(hhh]j)}(hu32h]hu32}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubah}(h]h ]h"]h$]h&] refdomainjreftypej) reftargetj(modnameN classnameNj- j0 )}j3 ]j(c.pci_tsm_bindasbuh1hhj(ubj)}(h h]h }(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubj)}(htdi_idh]htdi_id}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubeh}(h]h ]h"]h$]h&]noemphhhuh1jx hj'ubeh}(h]h ]h"]h$]h&]hhuh1jr hj'hhhj'hMKubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj'hhhj'hMKubah}(h]j~'ah ](jjeh"]h$]h&]jj)jhuh1jhj'hMKhj'hhubj)}(hhh]j)}(h"Bind **pdev** as a TDI for **kvm**h](hBind }(hj)hhhNhNubj)}(h**pdev**h]hpdev}(hj )hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)ubh as a TDI for }(hj)hhhNhNubj)}(h**kvm**h]hkvm}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)ubeh}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMKhj)hhubah}(h]h ]h"]h$]h&]uh1jhj'hhhj'hMKubeh}(h]h ](jfunctioneh"]h$]h&]j jj j;)j j;)j j juh1jhhhj\hNhNubj)}(hX**Parameters** ``struct pci_dev *pdev`` PCI device function to bind ``struct kvm *kvm`` Private memory attach context ``u32 tdi_id`` Identifier (virtual BDF) for the TDI as referenced by the TSM and DSM **Description** Returns 0 on success, or a negative error code on failure. **Context** Caller is responsible for constraining the bind lifetime to the registered state of the device. For example, pci_tsm_bind() / pci_tsm_unbind() limited to the VFIO driver bound state of the device.h](j)}(h**Parameters**h]j)}(hjE)h]h Parameters}(hjG)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjC)ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMOhj?)ubj^)}(hhh](jc)}(h5``struct pci_dev *pdev`` PCI device function to bind h](ji)}(h``struct pci_dev *pdev``h]jo)}(hjd)h]hstruct pci_dev *pdev}(hjf)hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjb)ubah}(h]h ]h"]h$]h&]uh1jhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMLhj^)ubj)}(hhh]j)}(hPCI device function to bindh]hPCI device function to bind}(hj})hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjy)hMLhjz)ubah}(h]h ]h"]h$]h&]uh1jhj^)ubeh}(h]h ]h"]h$]h&]uh1jbhjy)hMLhj[)ubjc)}(h2``struct kvm *kvm`` Private memory attach context h](ji)}(h``struct kvm *kvm``h]jo)}(hj)h]hstruct kvm *kvm}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj)ubah}(h]h ]h"]h$]h&]uh1jhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMMhj)ubj)}(hhh]j)}(hPrivate memory attach contexth]hPrivate memory attach context}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)hMMhj)ubah}(h]h ]h"]h$]h&]uh1jhj)ubeh}(h]h ]h"]h$]h&]uh1jbhj)hMMhj[)ubjc)}(hU``u32 tdi_id`` Identifier (virtual BDF) for the TDI as referenced by the TSM and DSM h](ji)}(h``u32 tdi_id``h]jo)}(hj)h]h u32 tdi_id}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj)ubah}(h]h ]h"]h$]h&]uh1jhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMNhj)ubj)}(hhh]j)}(hEIdentifier (virtual BDF) for the TDI as referenced by the TSM and DSMh]hEIdentifier (virtual BDF) for the TDI as referenced by the TSM and DSM}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)hMNhj)ubah}(h]h ]h"]h$]h&]uh1jhj)ubeh}(h]h ]h"]h$]h&]uh1jbhj)hMNhj[)ubeh}(h]h ]h"]h$]h&]uh1j]hj?)ubj)}(h**Description**h]j)}(hj*h]h Description}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMPhj?)ubj)}(h:Returns 0 on success, or a negative error code on failure.h]h:Returns 0 on success, or a negative error code on failure.}(hj'*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMOhj?)ubj)}(h **Context**h]j)}(hj8*h]hContext}(hj:*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6*ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMQhj?)ubj)}(hCaller is responsible for constraining the bind lifetime to the registered state of the device. For example, pci_tsm_bind() / pci_tsm_unbind() limited to the VFIO driver bound state of the device.h]hCaller is responsible for constraining the bind lifetime to the registered state of the device. For example, pci_tsm_bind() / pci_tsm_unbind() limited to the VFIO driver bound state of the device.}(hjN*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMRhj?)ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj\hhhNhNubjn)}(hhh]h}(h]h ]h"]h$]h&]entries](jzpci_tsm_guest_req (C function)c.pci_tsm_guest_reqhNtauh1jmhj\hhhNhNubj)}(hhh](j)}(hssize_t pci_tsm_guest_req (struct pci_dev *pdev, enum pci_tsm_req_scope scope, sockptr_t req_in, size_t in_len, sockptr_t req_out, size_t out_len, u64 *tsm_code)h]j)}(hssize_t pci_tsm_guest_req(struct pci_dev *pdev, enum pci_tsm_req_scope scope, sockptr_t req_in, size_t in_len, sockptr_t req_out, size_t out_len, u64 *tsm_code)h](h)}(hhh]j)}(hssize_th]hssize_t}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}*ubah}(h]h ]h"]h$]h&] refdomainjreftypej) reftargetj*modnameN classnameNj- j0 )}j3 ]j6 )}j) pci_tsm_guest_reqsbc.pci_tsm_guest_reqasbuh1hhjy*hhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chM{ubj)}(h h]h }(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjy*hhhj*hM{ubj)}(hpci_tsm_guest_reqh]j)}(hj*h]hpci_tsm_guest_req}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjy*hhhj*hM{ubjs )}(h(struct pci_dev *pdev, enum pci_tsm_req_scope scope, sockptr_t req_in, size_t in_len, sockptr_t req_out, size_t out_len, u64 *tsm_code)h](jy )}(hstruct pci_dev *pdevh](j)}(hjh]hstruct}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubj)}(h h]h }(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubh)}(hhh]j)}(hpci_devh]hpci_dev}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&] refdomainjreftypej) reftargetj*modnameN classnameNj- j0 )}j3 ]j*c.pci_tsm_guest_reqasbuh1hhj*ubj)}(h h]h }(hj +hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubjK )}(hjN h]h*}(hj+hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jJ hj*ubj)}(hpdevh]hpdev}(hj&+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubeh}(h]h ]h"]h$]h&]noemphhhuh1jx hj*ubjy )}(henum pci_tsm_req_scope scopeh](j)}(hj%h]henum}(hj?+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;+ubj)}(h h]h }(hjL+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;+ubh)}(hhh]j)}(hpci_tsm_req_scopeh]hpci_tsm_req_scope}(hj]+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZ+ubah}(h]h ]h"]h$]h&] refdomainjreftypej) reftargetj_+modnameN classnameNj- j0 )}j3 ]j*c.pci_tsm_guest_reqasbuh1hhj;+ubj)}(h h]h }(hj{+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;+ubj)}(hscopeh]hscope}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;+ubeh}(h]h ]h"]h$]h&]noemphhhuh1jx hj*ubjy )}(hsockptr_t req_inh](h)}(hhh]j)}(h sockptr_th]h sockptr_t}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubah}(h]h ]h"]h$]h&] refdomainjreftypej) reftargetj+modnameN classnameNj- j0 )}j3 ]j*c.pci_tsm_guest_reqasbuh1hhj+ubj)}(h h]h }(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubj)}(hreq_inh]hreq_in}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubeh}(h]h ]h"]h$]h&]noemphhhuh1jx hj*ubjy )}(h size_t in_lenh](h)}(hhh]j)}(hsize_th]hsize_t}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubah}(h]h ]h"]h$]h&] refdomainjreftypej) reftargetj+modnameN classnameNj- j0 )}j3 ]j*c.pci_tsm_guest_reqasbuh1hhj+ubj)}(h h]h }(hj ,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubj)}(hin_lenh]hin_len}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubeh}(h]h ]h"]h$]h&]noemphhhuh1jx hj*ubjy )}(hsockptr_t req_outh](h)}(hhh]j)}(h sockptr_th]h sockptr_t}(hj5,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2,ubah}(h]h ]h"]h$]h&] refdomainjreftypej) reftargetj7,modnameN classnameNj- j0 )}j3 ]j*c.pci_tsm_guest_reqasbuh1hhj.,ubj)}(h h]h }(hjS,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.,ubj)}(hreq_outh]hreq_out}(hja,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.,ubeh}(h]h ]h"]h$]h&]noemphhhuh1jx hj*ubjy )}(hsize_t out_lenh](h)}(hhh]j)}(hsize_th]hsize_t}(hj},hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjz,ubah}(h]h ]h"]h$]h&] refdomainjreftypej) reftargetj,modnameN classnameNj- j0 )}j3 ]j*c.pci_tsm_guest_reqasbuh1hhjv,ubj)}(h h]h }(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjv,ubj)}(hout_lenh]hout_len}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjv,ubeh}(h]h ]h"]h$]h&]noemphhhuh1jx hj*ubjy )}(h u64 *tsm_codeh](h)}(hhh]j)}(hu64h]hu64}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,ubah}(h]h ]h"]h$]h&] refdomainjreftypej) reftargetj,modnameN classnameNj- j0 )}j3 ]j*c.pci_tsm_guest_reqasbuh1hhj,ubj)}(h h]h }(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,ubjK )}(hjN h]h*}(hj,hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jJ hj,ubj)}(htsm_codeh]htsm_code}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,ubeh}(h]h ]h"]h$]h&]noemphhhuh1jx hj*ubeh}(h]h ]h"]h$]h&]hhuh1jr hjy*hhhj*hM{ubeh}(h]h ]h"]h$]h&]hhjuh1jjjhju*hhhj*hM{ubah}(h]jp*ah ](jjeh"]h$]h&]jj)jhuh1jhj*hM{hjr*hhubj)}(hhh]j)}(h2helper to marshal guest requests to the TSM driverh]h2helper to marshal guest requests to the TSM driver}(hj(-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chM{hj%-hhubah}(h]h ]h"]h$]h&]uh1jhjr*hhhj*hM{ubeh}(h]h ](jfunctioneh"]h$]h&]j jj j@-j j@-j j juh1jhhhj\hNhNubj)}(hXS**Parameters** ``struct pci_dev *pdev`` **pdev** representing a bound tdi ``enum pci_tsm_req_scope scope`` caller asserts this passthrough request is limited to TDISP operations ``sockptr_t req_in`` Input payload forwarded from the guest ``size_t in_len`` Length of **req_in** ``sockptr_t req_out`` Output payload buffer response to the guest ``size_t out_len`` Length of **req_out** on input, bytes filled in **req_out** on output ``u64 *tsm_code`` Optional TSM arch specific result code for the guest TSM **Description** This is a common entry point for requests triggered by userspace KVM-exit service handlers responding to TDI information or state change requests. The scope parameter limits requests to TDISP state management, or limited debug. This path is only suitable for commands and results that are the host kernel has no use, the host is only facilitating guest to TSM communication. Returns 0 on success and -error on failure and positive "residue" on success but **req_out** is filled with less then **out_len**, or **req_out** is NULL and a residue number of bytes were not consumed from **req_in**. On success or failure **tsm_code** may be populated with a TSM implementation specific result code for the guest to consume. **Context** Caller is responsible for calling this within the pci_tsm_bind() state of the TDI.h](j)}(h**Parameters**h]j)}(hjJ-h]h Parameters}(hjL-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjH-ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhjD-ubj^)}(hhh](jc)}(h;``struct pci_dev *pdev`` **pdev** representing a bound tdi h](ji)}(h``struct pci_dev *pdev``h]jo)}(hji-h]hstruct pci_dev *pdev}(hjk-hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjg-ubah}(h]h ]h"]h$]h&]uh1jhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chM|hjc-ubj)}(hhh]j)}(h!**pdev** representing a bound tdih](j)}(h**pdev**h]hpdev}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-ubh representing a bound tdi}(hj-hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhj~-hM|hj-ubah}(h]h ]h"]h$]h&]uh1jhjc-ubeh}(h]h ]h"]h$]h&]uh1jbhj~-hM|hj`-ubjc)}(hh``enum pci_tsm_req_scope scope`` caller asserts this passthrough request is limited to TDISP operations h](ji)}(h ``enum pci_tsm_req_scope scope``h]jo)}(hj-h]henum pci_tsm_req_scope scope}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj-ubah}(h]h ]h"]h$]h&]uh1jhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chM}hj-ubj)}(hhh]j)}(hFcaller asserts this passthrough request is limited to TDISP operationsh]hFcaller asserts this passthrough request is limited to TDISP operations}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-hM}hj-ubah}(h]h ]h"]h$]h&]uh1jhj-ubeh}(h]h ]h"]h$]h&]uh1jbhj-hM}hj`-ubjc)}(h<``sockptr_t req_in`` Input payload forwarded from the guest h](ji)}(h``sockptr_t req_in``h]jo)}(hj-h]hsockptr_t req_in}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj-ubah}(h]h ]h"]h$]h&]uh1jhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chM~hj-ubj)}(hhh]j)}(h&Input payload forwarded from the guesth]h&Input payload forwarded from the guest}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-hM~hj-ubah}(h]h ]h"]h$]h&]uh1jhj-ubeh}(h]h ]h"]h$]h&]uh1jbhj-hM~hj`-ubjc)}(h'``size_t in_len`` Length of **req_in** h](ji)}(h``size_t in_len``h]jo)}(hj".h]h size_t in_len}(hj$.hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj .ubah}(h]h ]h"]h$]h&]uh1jhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhj.ubj)}(hhh]j)}(hLength of **req_in**h](h Length of }(hj;.hhhNhNubj)}(h **req_in**h]hreq_in}(hjC.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;.ubeh}(h]h ]h"]h$]h&]uh1jhj7.hMhj8.ubah}(h]h ]h"]h$]h&]uh1jhj.ubeh}(h]h ]h"]h$]h&]uh1jbhj7.hMhj`-ubjc)}(hB``sockptr_t req_out`` Output payload buffer response to the guest h](ji)}(h``sockptr_t req_out``h]jo)}(hji.h]hsockptr_t req_out}(hjk.hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjg.ubah}(h]h ]h"]h$]h&]uh1jhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhjc.ubj)}(hhh]j)}(h+Output payload buffer response to the guesth]h+Output payload buffer response to the guest}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~.hMhj.ubah}(h]h ]h"]h$]h&]uh1jhjc.ubeh}(h]h ]h"]h$]h&]uh1jbhj~.hMhj`-ubjc)}(hY``size_t out_len`` Length of **req_out** on input, bytes filled in **req_out** on output h](ji)}(h``size_t out_len``h]jo)}(hj.h]hsize_t out_len}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj.ubah}(h]h ]h"]h$]h&]uh1jhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhj.ubj)}(hhh]j)}(hELength of **req_out** on input, bytes filled in **req_out** on outputh](h Length of }(hj.hhhNhNubj)}(h **req_out**h]hreq_out}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.ubh on input, bytes filled in }(hj.hhhNhNubj)}(h **req_out**h]hreq_out}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.ubh on output}(hj.hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhj.hMhj.ubah}(h]h ]h"]h$]h&]uh1jhj.ubeh}(h]h ]h"]h$]h&]uh1jbhj.hMhj`-ubjc)}(hK``u64 *tsm_code`` Optional TSM arch specific result code for the guest TSM h](ji)}(h``u64 *tsm_code``h]jo)}(hj.h]h u64 *tsm_code}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj.ubah}(h]h ]h"]h$]h&]uh1jhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhj.ubj)}(hhh]j)}(h8Optional TSM arch specific result code for the guest TSMh]h8Optional TSM arch specific result code for the guest TSM}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/hMhj/ubah}(h]h ]h"]h$]h&]uh1jhj.ubeh}(h]h ]h"]h$]h&]uh1jbhj/hMhj`-ubeh}(h]h ]h"]h$]h&]uh1j]hjD-ubj)}(h**Description**h]j)}(hj:/h]h Description}(hj is NULL and a residue number of bytes were not consumed from }(hj_/hhhNhNubj)}(h **req_in**h]hreq_in}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_/ubh. On success or failure }(hj_/hhhNhNubj)}(h **tsm_code**h]htsm_code}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_/ubhZ may be populated with a TSM implementation specific result code for the guest to consume.}(hj_/hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhjD-ubj)}(h **Context**h]j)}(hj/h]hContext}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhjD-ubj)}(hRCaller is responsible for calling this within the pci_tsm_bind() state of the TDI.h]hRCaller is responsible for calling this within the pci_tsm_bind() state of the TDI.}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhjD-ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj\hhhNhNubjn)}(hhh]h}(h]h ]h"]h$]h&]entries](jz$pci_tsm_tdi_constructor (C function)c.pci_tsm_tdi_constructorhNtauh1jmhj\hhhNhNubj)}(hhh](j)}(hevoid pci_tsm_tdi_constructor (struct pci_dev *pdev, struct pci_tdi *tdi, struct kvm *kvm, u32 tdi_id)h]j)}(hdvoid pci_tsm_tdi_constructor(struct pci_dev *pdev, struct pci_tdi *tdi, struct kvm *kvm, u32 tdi_id)h](j)}(hvoidh]hvoid}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj 0hhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMubj)}(h h]h }(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj 0hhhj0hMubj)}(hpci_tsm_tdi_constructorh]j)}(hpci_tsm_tdi_constructorh]hpci_tsm_tdi_constructor}(hj00hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,0ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj 0hhhj0hMubjs )}(hH(struct pci_dev *pdev, struct pci_tdi *tdi, struct kvm *kvm, u32 tdi_id)h](jy )}(hstruct pci_dev *pdevh](j)}(hjh]hstruct}(hjL0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjH0ubj)}(h h]h }(hjY0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjH0ubh)}(hhh]j)}(hpci_devh]hpci_dev}(hjj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjg0ubah}(h]h ]h"]h$]h&] refdomainjreftypej) reftargetjl0modnameN classnameNj- j0 )}j3 ]j6 )}j) j20sbc.pci_tsm_tdi_constructorasbuh1hhjH0ubj)}(h h]h }(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjH0ubjK )}(hjN h]h*}(hj0hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jJ hjH0ubj)}(hpdevh]hpdev}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjH0ubeh}(h]h ]h"]h$]h&]noemphhhuh1jx hjD0ubjy )}(hstruct pci_tdi *tdih](j)}(hjh]hstruct}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0ubj)}(h h]h }(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0ubh)}(hhh]j)}(hpci_tdih]hpci_tdi}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0ubah}(h]h ]h"]h$]h&] refdomainjreftypej) reftargetj0modnameN classnameNj- j0 )}j3 ]j0c.pci_tsm_tdi_constructorasbuh1hhj0ubj)}(h h]h }(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0ubjK )}(hjN h]h*}(hj1hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jJ hj0ubj)}(htdih]htdi}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0ubeh}(h]h ]h"]h$]h&]noemphhhuh1jx hjD0ubjy )}(hstruct kvm *kvmh](j)}(hjh]hstruct}(hj.1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*1ubj)}(h h]h }(hj;1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*1ubh)}(hhh]j)}(hkvmh]hkvm}(hjL1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjI1ubah}(h]h ]h"]h$]h&] refdomainjreftypej) reftargetjN1modnameN classnameNj- j0 )}j3 ]j0c.pci_tsm_tdi_constructorasbuh1hhj*1ubj)}(h h]h }(hjj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*1ubjK )}(hjN h]h*}(hjx1hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jJ hj*1ubj)}(hkvmh]hkvm}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*1ubeh}(h]h ]h"]h$]h&]noemphhhuh1jx hjD0ubjy )}(h u32 tdi_idh](h)}(hhh]j)}(hu32h]hu32}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&] refdomainjreftypej) reftargetj1modnameN classnameNj- j0 )}j3 ]j0c.pci_tsm_tdi_constructorasbuh1hhj1ubj)}(h h]h }(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubj)}(htdi_idh]htdi_id}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubeh}(h]h ]h"]h$]h&]noemphhhuh1jx hjD0ubeh}(h]h ]h"]h$]h&]hhuh1jr hj 0hhhj0hMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj0hhhj0hMubah}(h]j0ah ](jjeh"]h$]h&]jj)jhuh1jhj0hMhj0hhubj)}(hhh]j)}(h2base 'struct pci_tdi' initialization for link TSMsh]h6base ‘struct pci_tdi’ initialization for link TSMs}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhj1hhubah}(h]h ]h"]h$]h&]uh1jhj0hhhj0hMubeh}(h]h ](jfunctioneh"]h$]h&]j jj j2j j2j j juh1jhhhj\hNhNubj)}(hX**Parameters** ``struct pci_dev *pdev`` PCI device function representing the TDI ``struct pci_tdi *tdi`` context to initialize ``struct kvm *kvm`` Private memory attach context ``u32 tdi_id`` Identifier (virtual BDF) for the TDI as referenced by the TSM and DSMh](j)}(h**Parameters**h]j)}(hj2h]h Parameters}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhj2ubj^)}(hhh](jc)}(hB``struct pci_dev *pdev`` PCI device function representing the TDI h](ji)}(h``struct pci_dev *pdev``h]jo)}(hj82h]hstruct pci_dev *pdev}(hj:2hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj62ubah}(h]h ]h"]h$]h&]uh1jhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhj22ubj)}(hhh]j)}(h(PCI device function representing the TDIh]h(PCI device function representing the TDI}(hjQ2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjM2hMhjN2ubah}(h]h ]h"]h$]h&]uh1jhj22ubeh}(h]h ]h"]h$]h&]uh1jbhjM2hMhj/2ubjc)}(h.``struct pci_tdi *tdi`` context to initialize h](ji)}(h``struct pci_tdi *tdi``h]jo)}(hjq2h]hstruct pci_tdi *tdi}(hjs2hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjo2ubah}(h]h ]h"]h$]h&]uh1jhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhjk2ubj)}(hhh]j)}(hcontext to initializeh]hcontext to initialize}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2hMhj2ubah}(h]h ]h"]h$]h&]uh1jhjk2ubeh}(h]h ]h"]h$]h&]uh1jbhj2hMhj/2ubjc)}(h2``struct kvm *kvm`` Private memory attach context h](ji)}(h``struct kvm *kvm``h]jo)}(hj2h]hstruct kvm *kvm}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj2ubah}(h]h ]h"]h$]h&]uh1jhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhj2ubj)}(hhh]j)}(hPrivate memory attach contexth]hPrivate memory attach context}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2hMhj2ubah}(h]h ]h"]h$]h&]uh1jhj2ubeh}(h]h ]h"]h$]h&]uh1jbhj2hMhj/2ubjc)}(hT``u32 tdi_id`` Identifier (virtual BDF) for the TDI as referenced by the TSM and DSMh](ji)}(h``u32 tdi_id``h]jo)}(hj2h]h u32 tdi_id}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj2ubah}(h]h ]h"]h$]h&]uh1jhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhj2ubj)}(hhh]j)}(hEIdentifier (virtual BDF) for the TDI as referenced by the TSM and DSMh]hEIdentifier (virtual BDF) for the TDI as referenced by the TSM and DSM}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhj2ubah}(h]h ]h"]h$]h&]uh1jhj2ubeh}(h]h ]h"]h$]h&]uh1jbhj2hMhj/2ubeh}(h]h ]h"]h$]h&]uh1j]hj2ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj\hhhNhNubjn)}(hhh]h}(h]h ]h"]h$]h&]entries](jz%pci_tsm_link_constructor (C function)c.pci_tsm_link_constructorhNtauh1jmhj\hhhNhNubj)}(hhh](j)}(haint pci_tsm_link_constructor (struct pci_dev *pdev, struct pci_tsm *tsm, struct tsm_dev *tsm_dev)h]j)}(h`int pci_tsm_link_constructor(struct pci_dev *pdev, struct pci_tsm *tsm, struct tsm_dev *tsm_dev)h](j)}(hinth]hint}(hj=3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj93hhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMubj)}(h h]h }(hjL3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj93hhhjK3hMubj)}(hpci_tsm_link_constructorh]j)}(hpci_tsm_link_constructorh]hpci_tsm_link_constructor}(hj^3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZ3ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj93hhhjK3hMubjs )}(hD(struct pci_dev *pdev, struct pci_tsm *tsm, struct tsm_dev *tsm_dev)h](jy )}(hstruct pci_dev *pdevh](j)}(hjh]hstruct}(hjz3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjv3ubj)}(h h]h }(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjv3ubh)}(hhh]j)}(hpci_devh]hpci_dev}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubah}(h]h ]h"]h$]h&] refdomainjreftypej) reftargetj3modnameN classnameNj- j0 )}j3 ]j6 )}j) j`3sbc.pci_tsm_link_constructorasbuh1hhjv3ubj)}(h h]h }(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjv3ubjK )}(hjN h]h*}(hj3hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jJ hjv3ubj)}(hpdevh]hpdev}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjv3ubeh}(h]h ]h"]h$]h&]noemphhhuh1jx hjr3ubjy )}(hstruct pci_tsm *tsmh](j)}(hjh]hstruct}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubj)}(h h]h }(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubh)}(hhh]j)}(hpci_tsmh]hpci_tsm}(hj 4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&] refdomainjreftypej) reftargetj 4modnameN classnameNj- j0 )}j3 ]j3c.pci_tsm_link_constructorasbuh1hhj3ubj)}(h h]h }(hj(4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubjK )}(hjN h]h*}(hj64hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jJ hj3ubj)}(htsmh]htsm}(hjC4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubeh}(h]h ]h"]h$]h&]noemphhhuh1jx hjr3ubjy )}(hstruct tsm_dev *tsm_devh](j)}(hjh]hstruct}(hj\4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjX4ubj)}(h h]h }(hji4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjX4ubh)}(hhh]j)}(htsm_devh]htsm_dev}(hjz4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjw4ubah}(h]h ]h"]h$]h&] refdomainjreftypej) reftargetj|4modnameN classnameNj- j0 )}j3 ]j3c.pci_tsm_link_constructorasbuh1hhjX4ubj)}(h h]h }(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjX4ubjK )}(hjN h]h*}(hj4hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jJ hjX4ubj)}(htsm_devh]htsm_dev}(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjX4ubeh}(h]h ]h"]h$]h&]noemphhhuh1jx hjr3ubeh}(h]h ]h"]h$]h&]hhuh1jr hj93hhhjK3hMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj53hhhjK3hMubah}(h]j03ah ](jjeh"]h$]h&]jj)jhuh1jhjK3hMhj23hhubj)}(hhh]j)}(h2base 'struct pci_tsm' initialization for link TSMsh]h6base ‘struct pci_tsm’ initialization for link TSMs}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhj4hhubah}(h]h ]h"]h$]h&]uh1jhj23hhhjK3hMubeh}(h]h ](jfunctioneh"]h$]h&]j jj j4j j4j j juh1jhhhj\hNhNubj)}(h**Parameters** ``struct pci_dev *pdev`` The PCI device ``struct pci_tsm *tsm`` context to initialize ``struct tsm_dev *tsm_dev`` Platform TEE Security Manager, initiator of security operationsh](j)}(h**Parameters**h]j)}(hj4h]h Parameters}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhj4ubj^)}(hhh](jc)}(h(``struct pci_dev *pdev`` The PCI device h](ji)}(h``struct pci_dev *pdev``h]jo)}(hj5h]hstruct pci_dev *pdev}(hj 5hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj5ubah}(h]h ]h"]h$]h&]uh1jhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhj5ubj)}(hhh]j)}(hThe PCI deviceh]hThe PCI device}(hj75hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj35hMhj45ubah}(h]h ]h"]h$]h&]uh1jhj5ubeh}(h]h ]h"]h$]h&]uh1jbhj35hMhj5ubjc)}(h.``struct pci_tsm *tsm`` context to initialize h](ji)}(h``struct pci_tsm *tsm``h]jo)}(hjW5h]hstruct pci_tsm *tsm}(hjY5hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjU5ubah}(h]h ]h"]h$]h&]uh1jhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhjQ5ubj)}(hhh]j)}(hcontext to initializeh]hcontext to initialize}(hjp5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjl5hMhjm5ubah}(h]h ]h"]h$]h&]uh1jhjQ5ubeh}(h]h ]h"]h$]h&]uh1jbhjl5hMhj5ubjc)}(h[``struct tsm_dev *tsm_dev`` Platform TEE Security Manager, initiator of security operationsh](ji)}(h``struct tsm_dev *tsm_dev``h]jo)}(hj5h]hstruct tsm_dev *tsm_dev}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj5ubah}(h]h ]h"]h$]h&]uh1jhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhj5ubj)}(hhh]j)}(h?Platform TEE Security Manager, initiator of security operationsh]h?Platform TEE Security Manager, initiator of security operations}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhj5ubah}(h]h ]h"]h$]h&]uh1jhj5ubeh}(h]h ]h"]h$]h&]uh1jbhj5hMhj5ubeh}(h]h ]h"]h$]h&]uh1j]hj4ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj\hhhNhNubjn)}(hhh]h}(h]h ]h"]h$]h&]entries](jz$pci_tsm_pf0_constructor (C function)c.pci_tsm_pf0_constructorhNtauh1jmhj\hhhNhNubj)}(hhh](j)}(hdint pci_tsm_pf0_constructor (struct pci_dev *pdev, struct pci_tsm_pf0 *tsm, struct tsm_dev *tsm_dev)h]j)}(hcint pci_tsm_pf0_constructor(struct pci_dev *pdev, struct pci_tsm_pf0 *tsm, struct tsm_dev *tsm_dev)h](j)}(hinth]hint}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5hhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMubj)}(h h]h }(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5hhhj5hMubj)}(hpci_tsm_pf0_constructorh]j)}(hpci_tsm_pf0_constructorh]hpci_tsm_pf0_constructor}(hj 6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj5hhhj5hMubjs )}(hH(struct pci_dev *pdev, struct pci_tsm_pf0 *tsm, struct tsm_dev *tsm_dev)h](jy )}(hstruct pci_dev *pdevh](j)}(hjh]hstruct}(hj'6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#6ubj)}(h h]h }(hj46hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#6ubh)}(hhh]j)}(hpci_devh]hpci_dev}(hjE6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjB6ubah}(h]h ]h"]h$]h&] refdomainjreftypej) reftargetjG6modnameN classnameNj- j0 )}j3 ]j6 )}j) j 6sbc.pci_tsm_pf0_constructorasbuh1hhj#6ubj)}(h h]h }(hje6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#6ubjK )}(hjN h]h*}(hjs6hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jJ hj#6ubj)}(hpdevh]hpdev}(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#6ubeh}(h]h ]h"]h$]h&]noemphhhuh1jx hj6ubjy )}(hstruct pci_tsm_pf0 *tsmh](j)}(hjh]hstruct}(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6ubj)}(h h]h }(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6ubh)}(hhh]j)}(h pci_tsm_pf0h]h pci_tsm_pf0}(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&] refdomainjreftypej) reftargetj6modnameN classnameNj- j0 )}j3 ]ja6c.pci_tsm_pf0_constructorasbuh1hhj6ubj)}(h h]h }(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6ubjK )}(hjN h]h*}(hj6hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jJ hj6ubj)}(htsmh]htsm}(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6ubeh}(h]h ]h"]h$]h&]noemphhhuh1jx hj6ubjy )}(hstruct tsm_dev *tsm_devh](j)}(hjh]hstruct}(hj 7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7ubj)}(h h]h }(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7ubh)}(hhh]j)}(htsm_devh]htsm_dev}(hj'7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$7ubah}(h]h ]h"]h$]h&] refdomainjreftypej) reftargetj)7modnameN classnameNj- j0 )}j3 ]ja6c.pci_tsm_pf0_constructorasbuh1hhj7ubj)}(h h]h }(hjE7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7ubjK )}(hjN h]h*}(hjS7hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jJ hj7ubj)}(htsm_devh]htsm_dev}(hj`7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7ubeh}(h]h ]h"]h$]h&]noemphhhuh1jx hj6ubeh}(h]h ]h"]h$]h&]hhuh1jr hj5hhhj5hMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj5hhhj5hMubah}(h]j5ah ](jjeh"]h$]h&]jj)jhuh1jhj5hMhj5hhubj)}(hhh]j)}(h0common 'struct pci_tsm_pf0' (DSM) initializationh]h4common ‘struct pci_tsm_pf0’ (DSM) initialization}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhj7hhubah}(h]h ]h"]h$]h&]uh1jhj5hhhj5hMubeh}(h]h ](jfunctioneh"]h$]h&]j jj j7j j7j j juh1jhhhj\hNhNubj)}(hX**Parameters** ``struct pci_dev *pdev`` Physical Function 0 PCI device (as indicated by is_pci_tsm_pf0()) ``struct pci_tsm_pf0 *tsm`` context to initialize ``struct tsm_dev *tsm_dev`` Platform TEE Security Manager, initiator of security operationsh](j)}(h**Parameters**h]j)}(hj7h]h Parameters}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhj7ubj^)}(hhh](jc)}(h[``struct pci_dev *pdev`` Physical Function 0 PCI device (as indicated by is_pci_tsm_pf0()) h](ji)}(h``struct pci_dev *pdev``h]jo)}(hj7h]hstruct pci_dev *pdev}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj7ubah}(h]h ]h"]h$]h&]uh1jhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhj7ubj)}(hhh]j)}(hAPhysical Function 0 PCI device (as indicated by is_pci_tsm_pf0())h]hAPhysical Function 0 PCI device (as indicated by is_pci_tsm_pf0())}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7hMhj7ubah}(h]h ]h"]h$]h&]uh1jhj7ubeh}(h]h ]h"]h$]h&]uh1jbhj7hMhj7ubjc)}(h2``struct pci_tsm_pf0 *tsm`` context to initialize h](ji)}(h``struct pci_tsm_pf0 *tsm``h]jo)}(hj8h]hstruct pci_tsm_pf0 *tsm}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj8ubah}(h]h ]h"]h$]h&]uh1jhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhj7ubj)}(hhh]j)}(hcontext to initializeh]hcontext to initialize}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8hMhj8ubah}(h]h ]h"]h$]h&]uh1jhj7ubeh}(h]h ]h"]h$]h&]uh1jbhj8hMhj7ubjc)}(h[``struct tsm_dev *tsm_dev`` Platform TEE Security Manager, initiator of security operationsh](ji)}(h``struct tsm_dev *tsm_dev``h]jo)}(hj=8h]hstruct tsm_dev *tsm_dev}(hj?8hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhj;8ubah}(h]h ]h"]h$]h&]uh1jhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhj78ubj)}(hhh]j)}(h?Platform TEE Security Manager, initiator of security operationsh]h?Platform TEE Security Manager, initiator of security operations}(hjV8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhjS8ubah}(h]h ]h"]h$]h&]uh1jhj78ubeh}(h]h ]h"]h$]h&]uh1jbhjR8hMhj7ubeh}(h]h ]h"]h$]h&]uh1j]hj7ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj\hhhNhNubeh}(h]subsystem-interfacesah ]h"]subsystem interfacesah$]h&]uh1jGhjIhhhhhK ubeh}(h]6pci-trusted-execution-environment-security-manager-tsmah ]h"]8pci trusted execution environment security manager (tsm)ah$]h&]uh1jGhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(jLN 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_handlerj8error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}(hhhhhhj jjjj*jj9j-jHj<jWjKjfjZjujijjxjjjjjjjjjjjjjjjjj jjjj)jj8j,jGj;jVjJjejYjtjhjjwjjjjjjjjjjjjjjjjj jjj j(jj7j+jFj:jUjIjdjXjsjgjjvjjjjjjjjjjjjjjjjj jjj j'jj6j*jEj9jTjHjcjWjrjfjjujjjjjjjjjjjjjjjjjjjj j&jj5j)jDj8usubstitution_names}(amphߌaposhasthbrvbarj bsoljcentj*colonj9commajHcommatjWcopyjfcurrenjudarrjdegjdividejdollarjequalsjexcljfrac12jfrac14jfrac18jfrac34j frac38jfrac58j)frac78j8gtjGhalfjVhorbarjehyphenjtiexcljiquestjlaquojlarrjlcubjldquojlowbarjlparjlsqbjlsquoj ltjmicroj(middotj7nbspjFnotjUnumjdohmjsordfjordmjparajpercntjperiodjplusjplusmnjpoundjquestjquotj raquojrarrj'rcubj6rdquojEregjTrparjcrsqbjrrsquojsectjsemijshyjsoljsungjsup1jsup2jsup3jtimesjtradejuarrj&verbarj5yenjDurefnames}refids}nameids}(j8j8j8j8u nametypes}(j8j8uh}(j8jIj8j\j|jjjjv j{ j j jjjjj-j2jjjejjjjjjjpjujjj j j'"j,"j2$j7$j%j%j~'j'jp*ju*j0j0j03j53j5j5u 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/driver-api/pci/tsm.rst(NNNNta decorationNhhub.