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]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget&/translations/pt_BR/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*}hjsbah}(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\}hj#sbah}(h]h ]h"]bsolah$]h&]uh1hhhhK hhhhubh)}(h*.. |cent| unicode:: U+000A2 .. CENT SIGNh]h¢}hj2sbah}(h]h ]h"]centah$]h&]uh1hhhhK hhhhubh)}(h&.. |colon| unicode:: U+0003A .. COLONh]h:}hjAsbah}(h]h ]h"]colonah$]h&]uh1hhhhK hhhhubh)}(h&.. |comma| unicode:: U+0002C .. COMMAh]h,}hjPsbah}(h]h ]h"]commaah$]h&]uh1hhhhKhhhhubh)}(h... |commat| unicode:: U+00040 .. COMMERCIAL ATh]h@}hj_sbah}(h]h ]h"]commatah$]h&]uh1hhhhKhhhhubh)}(h/.. |copy| unicode:: U+000A9 .. COPYRIGHT SIGNh]h©}hjnsbah}(h]h ]h"]copyah$]h&]uh1hhhhKhhhhubh)}(h... |curren| unicode:: U+000A4 .. CURRENCY SIGNh]h¤}hj}sbah}(h]h ]h"]currenah$]h&]uh1hhhhKhhhhubh)}(h0.. |darr| unicode:: U+02193 .. DOWNWARDS ARROWh]h↓}hjsbah}(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⅜}hj"sbah}(h]h ]h"]frac38ah$]h&]uh1hhhhKhhhhubh)}(h=.. |frac58| unicode:: U+0215D .. VULGAR FRACTION FIVE EIGHTHSh]h⅝}hj1sbah}(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>}hjOsbah}(h]h ]h"]gtah$]h&]uh1hhhhKhhhhubh)}(h9.. |half| unicode:: U+000BD .. VULGAR FRACTION ONE HALFh]h½}hj^sbah}(h]h ]h"]halfah$]h&]uh1hhhhK hhhhubh)}(h/.. |horbar| unicode:: U+02015 .. HORIZONTAL BARh]h―}hjmsbah}(h]h ]h"]horbarah$]h&]uh1hhhhK!hhhhubh)}(h'.. |hyphen| unicode:: U+02010 .. HYPHENh]h‐}hj|sbah}(h]h ]h"]hyphenah$]h&]uh1hhhhK"hhhhubh)}(h:.. |iexcl| unicode:: U+000A1 .. INVERTED EXCLAMATION MARKh]h¡}hjsbah}(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µ}hj0sbah}(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 }hjNsbah}(h]h ]h"]nbspah$]h&]uh1hhhhK0hhhhubh)}(h).. |not| unicode:: U+000AC .. NOT SIGNh]h¬}hj]sbah}(h]h ]h"]notah$]h&]uh1hhhhK1hhhhubh)}(h,.. |num| unicode:: U+00023 .. NUMBER SIGNh]h#}hjlsbah}(h]h ]h"]numah$]h&]uh1hhhhK2hhhhubh)}(h).. |ohm| unicode:: U+02126 .. OHM SIGNh]hΩ}hj{sbah}(h]h ]h"]ohmah$]h&]uh1hhhhK3hhhhubh)}(h;.. |ordf| unicode:: U+000AA .. FEMININE ORDINAL INDICATORh]hª}hjsbah}(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→}hj/sbah}(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”}hjMsbah}(h]h ]h"]rdquoah$]h&]uh1hhhhKAhhhhubh)}(h0.. |reg| unicode:: U+000AE .. REGISTERED SIGNh]h®}hj\sbah}(h]h ]h"]regah$]h&]uh1hhhhKBhhhhubh)}(h2.. |rpar| unicode:: U+00029 .. RIGHT PARENTHESISh]h)}hjksbah}(h]h ]h"]rparah$]h&]uh1hhhhKChhhhubh)}(h5.. |rsqb| unicode:: U+0005D .. RIGHT SQUARE BRACKETh]h]}hjzsbah}(h]h ]h"]rsqbah$]h&]uh1hhhhKDhhhhubh)}(h<.. |rsquo| unicode:: U+02019 .. RIGHT SINGLE QUOTATION MARKh]h’}hjsbah}(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™}hjsbah}(h]h ]h"]tradeah$]h&]uh1hhhhKOhhhhubh)}(h... |uarr| unicode:: U+02191 .. UPWARDS ARROWh]h↑}hj.sbah}(h]h ]h"]uarrah$]h&]uh1hhhhKPhhhhubh)}(h... |verbar| unicode:: U+0007C .. VERTICAL LINEh]h|}hj=sbah}(h]h ]h"]verbarah$]h&]uh1hhhhKQhhhhubh)}(h*.. |yen| unicode:: U+000A5 .. YEN SIGN h]h¥}hjLsbah}(h]h ]h"]yenah$]h&]uh1hhhhKRhhhhubhsection)}(hhh](htitle)}(h8PCI Trusted Execution Environment Security Manager (TSM)h]h8PCI Trusted Execution Environment Security Manager (TSM)}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1j`hj]hhhhhKubj\)}(hhh](ja)}(hSubsystem Interfacesh]hSubsystem Interfaces}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1j`hjphhhhhK ubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](singlepci_ide_partner (C struct)c.pci_ide_partnerhNtauh1jhjphhhZ/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]jah ](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 noindexentrynocontentsentryuh1jhhhjphjhNubh 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 (inclusive) ``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}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1j-hj)ubh:}(hj)hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhKhj%ubh 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; };}hjJsbah}(h]h ]h"]h$]h&]hhuh1jHhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhK!hj%ubj)}(h **Members**h]j.)}(hj[h]hMembers}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1j-hjYubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhK,hj%ubhdefinition_list)}(hhh](hdefinition_list_item)}(h4``rid_start`` Partner Port Requester ID range start h](hterm)}(h ``rid_start``h]hliteral)}(hjh]h rid_start}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~ubah}(h]h ]h"]h$]h&]uh1j|hZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhKhjxubh 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&]uh1jhjxubeh}(h]h ]h"]h$]h&]uh1jvhjhKhjsubjw)}(h<``rid_end`` Partner Port Requester ID range end (inclusive) h](j})}(h ``rid_end``h]j)}(hjh]hrid_end}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j|hZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhKhjubj)}(hhh]j)}(h/Partner Port Requester ID range end (inclusive)h]h/Partner Port Requester ID range end (inclusive)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jvhjhKhjsubjw)}(h?``stream_index`` Selective IDE Stream Register Block selection h](j})}(h``stream_index``h]j)}(hjh]h stream_index}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j|hZ/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&]uh1jhj hKhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jvhj hKhjsubjw)}(hL``mem_assoc`` PCI bus memory address association for targeting peer partner h](j})}(h ``mem_assoc``h]j)}(hj/h]h mem_assoc}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-ubah}(h]h ]h"]h$]h&]uh1j|hZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhK hj)ubj)}(hhh]j)}(h=PCI bus memory address association for targeting peer partnerh]h=PCI bus memory address association for targeting peer partner}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDhK hjEubah}(h]h ]h"]h$]h&]uh1jhj)ubeh}(h]h ]h"]h$]h&]uh1jvhjDhK hjsubjw)}(hZ``pref_assoc`` PCI bus prefetchable memory address association for targeting peer partner h](j})}(h``pref_assoc``h]j)}(hjhh]h pref_assoc}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfubah}(h]h ]h"]h$]h&]uh1j|hZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhK"hjbubj)}(hhh]j)}(hJPCI bus prefetchable memory address association for targeting peer partnerh]hJPCI bus prefetchable memory address association for targeting peer partner}(hjhhhNhNubah}(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&]uh1jhjbubeh}(h]h ]h"]h$]h&]uh1jvhj}hK"hjsubjw)}(hw``default_stream`` Endpoint uses this stream for all upstream TLPs regardless of address and RID association registers h](j})}(h``default_stream``h]j)}(hjh]hdefault_stream}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j|hZ/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&]uh1jvhjhK$hjsubjw)}(hW``setup`` flag to track whether to run pci_ide_stream_teardown() for this partner slot h](j})}(h ``setup``h]j)}(hjh]hsetup}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j|hZ/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&]uh1jvhjhK&hjsubjw)}(hM``enable`` flag whether to run pci_ide_stream_disable() for this partner sloth](j})}(h ``enable``h]j)}(hjh]henable}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j|hZ/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}(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&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jvhj+hK&hjsubeh}(h]h ]h"]h$]h&]uh1jqhj%ubeh}(h]h ] kernelindentah"]h$]h&]uh1j#hjphhhjhNubj)}(h**Description**h]j.)}(hjYh]h Description}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1j-hjWubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhK*hjphhubj)}(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 }(hjohhhNhNubj.)}(h **mem_assoc**h]h mem_assoc}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1j-hjoubh and }(hjohhhNhNubj.)}(h**pref_assoc**h]h pref_assoc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j-hjoubh 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.}(hjohhhNhNubeh}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhK'hjphhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jpci_ide_regs (C struct)c.pci_ide_regshNtauh1jhjphhhjhNubj)}(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&]jjjj jj j j!j"uh1jhhhjphjhNubj$)}(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&]uh1j-hj 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 ubjI)}(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&]hhuh1jHhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhK?hj ubj)}(h **Members**h]j.)}(hjK h]hMembers}(hjM hhhNhNubah}(h]h ]h"]h$]h&]uh1j-hjI ubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhKJhj ubjr)}(hhh](jw)}(h(``rid1`` IDE RID Association Register 1 h](j})}(h``rid1``h]j)}(hjj h]hrid1}(hjl hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjh ubah}(h]h ]h"]h$]h&]uh1j|hZ/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&]uh1jvhj hK?hja ubjw)}(h<``nr_addr`` Number of address association blocks initializedh](j})}(h ``nr_addr``h]j)}(hj h]hnr_addr}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1j|hZ/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&]uh1jvhj+ hK?hja ubeh}(h]h ]h"]h$]h&]uh1jqhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1j#hjphhhjhNubj)}(h**Description**h]j.)}(hjY h]h Description}(hj[ hhhNhNubah}(h]h ]h"]h$]h&]uh1j-hjW ubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhKChjphhubj)}(hSee pci_ide_stream_to_regs()h]hSee pci_ide_stream_to_regs()}(hjo hhhNhNubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhK@hjphhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jpci_ide (C struct) c.pci_idehNtauh1jhjphhhjhNubj)}(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]j ah ](jjeh"]h$]h&]jj)jhuh1jhj hKEhj 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&]uh1jhj hhhj hKEubeh}(h]h ](jstructeh"]h$]h&]jjjj jj j j!j"uh1jhhhjphjhNubj$)}(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; }; **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 sysfsh](j)}(h**Definition**::h](j.)}(h**Definition**h]h Definition}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j-hj 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 ubjI)}(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; };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; };}hj sbah}(h]h ]h"]h$]h&]hhuh1jHhZ/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&]uh1j-hj% ubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhK]hj ubjr)}(hhh](jw)}(h3``pdev`` PCIe Endpoint in the pci_ide_partner pair h](j})}(h``pdev``h]j)}(hjF h]hpdev}(hjH hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjD ubah}(h]h ]h"]h$]h&]uh1j|hZ/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}(hj_ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[ hKQhj\ ubah}(h]h ]h"]h$]h&]uh1jhj@ ubeh}(h]h ]h"]h$]h&]uh1jvhj[ hKQhj= ubjw)}(h!``partner`` per-partner settings h](j})}(h ``partner``h]j)}(hj h]hpartner}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj} ubah}(h]h ]h"]h$]h&]uh1j|hZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhKRhjy ubj)}(hhh]j)}(hper-partner settingsh]hper-partner settings}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj hKRhj ubah}(h]h ]h"]h$]h&]uh1jhjy ubeh}(h]h ]h"]h$]h&]uh1jvhj hKRhj= ubjw)}(hJ``host_bridge_stream`` allocated from host bridge **ide_stream_ida** pool h](j})}(h``host_bridge_stream``h]j)}(hj h]hhost_bridge_stream}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1j|hZ/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&]uh1j-hj ubh pool}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhj hKShj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jvhj hKShj= ubjw)}(h=``stream_id`` unique Stream ID (within Partner Port pairing) h](j})}(h ``stream_id``h]j)}(hj h]h stream_id}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1j|hZ/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&]uh1jvhj hKThj= ubjw)}(h>``name`` name of the established Selective IDE Stream in sysfsh](j})}(h``name``h]j)}(hj< h]hname}(hj> hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj: ubah}(h]h ]h"]h$]h&]uh1j|hZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhKThj6 ubj)}(hhh]j)}(h5name of the established Selective IDE Stream in sysfsh]h5name of the established Selective IDE Stream in sysfs}(hjU hhhNhNubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhKUhjR ubah}(h]h ]h"]h$]h&]uh1jhj6 ubeh}(h]h ]h"]h$]h&]uh1jvhjQ hKThj= ubeh}(h]h ]h"]h$]h&]uh1jqhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1j#hjphhhjhNubj)}(h**Description**h]j.)}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j-hj} ubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.hhKXhjphhubj)}(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&]uh1j-hj 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.hhKUhjphhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j!pci_ide_stream_alloc (C function)c.pci_ide_stream_allochNtauh1jhjphhhNhNubj)}(hhh](j)}(h#h]htsm_dev}(hj@#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<#ubah}(h]h ]h"]h$]h&]uh1j|h[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKbhj8#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}(hjW#hhhNhNubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKahjT#ubah}(h]h ]h"]h$]h&]uh1jhj8#ubeh}(h]h ]h"]h$]h&]uh1jvhjS#hKbhj"ubjw)}(h>``tdi`` TDI context established by the **bind** link operationh](j})}(h``tdi``h]j)}(hjx#h]htdi}(hjz#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjv#ubah}(h]h ]h"]h$]h&]uh1j|h[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKbhjr#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&]uh1j-hj#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&]uh1jhjr#ubeh}(h]h ]h"]h$]h&]uh1jvhj#hKbhj"ubeh}(h]h ]h"]h$]h&]uh1jqhjm"ubeh}(h]h ] kernelindentah"]h$]h&]uh1j#hjphhhj hNubj)}(h**Description**h]j.)}(hj#h]h Description}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1j-hj#ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKfhjphhubj)}(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.hhKchjphhubj)}(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.hhKfhjphhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jpci_tsm_pf0 (C struct) c.pci_tsm_pf0hNtauh1jhjphhhj 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 }(hj($hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$hhhj'$hKpubj)}(h pci_tsm_pf0h]j)}(hj$h]h pci_tsm_pf0}(hj:$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6$ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj$hhhj'$hKpubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj$hhhj'$hKpubah}(h]j $ah ](jjeh"]h$]h&]jj)jhuh1jhj'$hKphj$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.hhKvhjY$hhubah}(h]h ]h"]h$]h&]uh1jhj$hhhj'$hKpubeh}(h]h ](jstructeh"]h$]h&]jjjjt$jjt$j j!j"uh1jhhhjphj 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&]uh1j-hj|$ubh:}(hj|$hhhNhNubeh}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKzhjx$ubjI)}(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&]hhuh1jHh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhK|hjx$ubj)}(h **Members**h]j.)}(hj$h]hMembers}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1j-hj$ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKhjx$ubjr)}(hhh](jw)}(h(``base_tsm`` generic core "tsm" context h](j})}(h ``base_tsm``h]j)}(hj$h]hbase_tsm}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&]uh1j|h[/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&]uh1jvhj$hKxhj$ubjw)}(h6``lock`` mutual exclustion for pci_tsm_ops invocation h](j})}(h``lock``h]j)}(hj%h]hlock}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&]uh1j|h[/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&]uh1jvhj%hKyhj$ubjw)}(h,``doe_mb`` PCIe Data Object Exchange mailboxh](j})}(h ``doe_mb``h]j)}(hj;%h]hdoe_mb}(hj=%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9%ubah}(h]h ]h"]h$]h&]uh1j|h[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKyhj5%ubj)}(hhh]j)}(h!PCIe Data Object Exchange mailboxh]h!PCIe Data Object Exchange mailbox}(hjT%hhhNhNubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKzhjQ%ubah}(h]h ]h"]h$]h&]uh1jhj5%ubeh}(h]h ]h"]h$]h&]uh1jvhjP%hKyhj$ubeh}(h]h ]h"]h$]h&]uh1jqhjx$ubeh}(h]h ] kernelindentah"]h$]h&]uh1j#hjphhhj hNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jpci_tsm_req_scope (C enum)c.pci_tsm_req_scopehNtauh1jhjphhhj 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&]jjjj%jj%j j!j"uh1jhhhjphj 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&]uh1j-hj%ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKhj%ubjr)}(hhh](jw)}(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](j})}(h``PCI_TSM_REQ_INFO``h]j)}(hj&h]hPCI_TSM_REQ_INFO}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1j|h[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKhj&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.}(hj2&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&]uh1jhj&ubeh}(h]h ]h"]h$]h&]uh1jvhj.&hKhj&ubjw)}(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](j})}(h``PCI_TSM_REQ_STATE_CHANGE``h]j)}(hjS&h]hPCI_TSM_REQ_STATE_CHANGE}(hjU&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQ&ubah}(h]h ]h"]h$]h&]uh1j|h[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKhjM&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.}(hjl&hhhNhNubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKhji&ubah}(h]h ]h"]h$]h&]uh1jhjM&ubeh}(h]h ]h"]h$]h&]uh1jvhjh&hKhj&ubjw)}(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](j})}(h``PCI_TSM_REQ_DEBUG_READ``h]j)}(hj&h]hPCI_TSM_REQ_DEBUG_READ}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1j|h[/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&]uh1jvhj&hKhj&ubjw)}(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](j})}(h``PCI_TSM_REQ_DEBUG_WRITE``h]j)}(hj&h]hPCI_TSM_REQ_DEBUG_WRITE}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1j|h[/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&]uh1jvhj&hKhj&ubeh}(h]h ]h"]h$]h&]uh1jqhj%ubeh}(h]h ] kernelindentah"]h$]h&]uh1j#hjphhhj hNubj)}(h**Description**h]j.)}(hj('h]h Description}(hj*'hhhNhNubah}(h]h ]h"]h$]h&]uh1j-hj&'ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKhjphhubj)}(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.}(hj>'hhhNhNubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.hhKhjphhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jpci_tsm_bind (C function)c.pci_tsm_bindhNtauh1jhjphhhNhNubj)}(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}(hjf'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjb'hhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMKubj)}(h h]h }(hju'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjb'hhhjt'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&]hhuh1jhjb'hhhjt'hMKubjN )}(h3(struct pci_dev *pdev, struct kvm *kvm, u32 tdi_id)h](jT )}(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 j )}j ]j )}j j'sbc.pci_tsm_bindasbuh1hhj'ubj)}(h h]h }(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubj& )}(hj) h]h*}(hj'hhhNhNubah}(h]h ]j2 ah"]h$]h&]uh1j% hj'ubj)}(hpdevh]hpdev}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubeh}(h]h ]h"]h$]h&]noemphhhuh1jS hj'ubjT )}(hstruct kvm *kvmh](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)}(hkvmh]hkvm}(hj3(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0(ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj5(modnameN classnameNj j )}j ]j'c.pci_tsm_bindasbuh1hhj(ubj)}(h h]h }(hjQ(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubj& )}(hj) h]h*}(hj_(hhhNhNubah}(h]h ]j2 ah"]h$]h&]uh1j% hj(ubj)}(hkvmh]hkvm}(hjl(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubeh}(h]h ]h"]h$]h&]noemphhhuh1jS hj'ubjT )}(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 j )}j ]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&]noemphhhuh1jS hj'ubeh}(h]h ]h"]h$]h&]hhuh1jM hjb'hhhjt'hMKubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj^'hhhjt'hMKubah}(h]jY'ah ](jjeh"]h$]h&]jj)jhuh1jhjt'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&]uh1j-hj(ubh as a TDI for }(hj(hhhNhNubj.)}(h**kvm**h]hkvm}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1j-hj(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['hhhjt'hMKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj)jj)j j!j"uh1jhhhjphNhNubj$)}(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.)}(hj )h]h Parameters}(hj")hhhNhNubah}(h]h ]h"]h$]h&]uh1j-hj)ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMOhj)ubjr)}(hhh](jw)}(h5``struct pci_dev *pdev`` PCI device function to bind h](j})}(h``struct pci_dev *pdev``h]j)}(hj?)h]hstruct pci_dev *pdev}(hjA)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=)ubah}(h]h ]h"]h$]h&]uh1j|hU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMLhj9)ubj)}(hhh]j)}(hPCI device function to bindh]hPCI device function to bind}(hjX)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjT)hMLhjU)ubah}(h]h ]h"]h$]h&]uh1jhj9)ubeh}(h]h ]h"]h$]h&]uh1jvhjT)hMLhj6)ubjw)}(h2``struct kvm *kvm`` Private memory attach context h](j})}(h``struct kvm *kvm``h]j)}(hjx)h]hstruct kvm *kvm}(hjz)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjv)ubah}(h]h ]h"]h$]h&]uh1j|hU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMMhjr)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&]uh1jhjr)ubeh}(h]h ]h"]h$]h&]uh1jvhj)hMMhj6)ubjw)}(hU``u32 tdi_id`` Identifier (virtual BDF) for the TDI as referenced by the TSM and DSM h](j})}(h``u32 tdi_id``h]j)}(hj)h]h u32 tdi_id}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&]uh1j|hU/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&]uh1jvhj)hMNhj6)ubeh}(h]h ]h"]h$]h&]uh1jqhj)ubj)}(h**Description**h]j.)}(hj)h]h Description}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1j-hj)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.)}(hj*h]hContext}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1j-hj*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.}(hj)*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&]uh1j#hjphhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jpci_tsm_guest_req (C function)c.pci_tsm_guest_reqhNtauh1jhjphhhNhNubj)}(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&]uh1jhjX*ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj]*modnameN classnameNj j )}j ]j )}j pci_tsm_guest_reqsbc.pci_tsm_guest_reqasbuh1hhjT*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&]uh1jhjT*hhhj|*hM{ubj)}(hpci_tsm_guest_reqh]j)}(hjy*h]hpci_tsm_guest_req}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjT*hhhj|*hM{ubjN )}(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](jT )}(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 j )}j ]jw*c.pci_tsm_guest_reqasbuh1hhj*ubj)}(h h]h }(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubj& )}(hj) h]h*}(hj*hhhNhNubah}(h]h ]j2 ah"]h$]h&]uh1j% hj*ubj)}(hpdevh]hpdev}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubeh}(h]h ]h"]h$]h&]noemphhhuh1jS hj*ubjT )}(henum pci_tsm_req_scope scopeh](j)}(hj%h]henum}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubj)}(h h]h }(hj'+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubh)}(hhh]j)}(hpci_tsm_req_scopeh]hpci_tsm_req_scope}(hj8+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5+ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj:+modnameN classnameNj j )}j ]jw*c.pci_tsm_guest_reqasbuh1hhj+ubj)}(h h]h }(hjV+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubj)}(hscopeh]hscope}(hjd+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubeh}(h]h ]h"]h$]h&]noemphhhuh1jS hj*ubjT )}(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 j )}j ]jw*c.pci_tsm_guest_reqasbuh1hhjy+ubj)}(h h]h }(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjy+ubj)}(hreq_inh]hreq_in}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjy+ubeh}(h]h ]h"]h$]h&]noemphhhuh1jS hj*ubjT )}(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 j )}j ]jw*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&]noemphhhuh1jS hj*ubjT )}(hsockptr_t req_outh](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 j )}j ]jw*c.pci_tsm_guest_reqasbuh1hhj ,ubj)}(h h]h }(hj.,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ,ubj)}(hreq_outh]hreq_out}(hj<,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ,ubeh}(h]h ]h"]h$]h&]noemphhhuh1jS hj*ubjT )}(hsize_t out_lenh](h)}(hhh]j)}(hsize_th]hsize_t}(hjX,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjU,ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjZ,modnameN classnameNj j )}j ]jw*c.pci_tsm_guest_reqasbuh1hhjQ,ubj)}(h h]h }(hjv,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQ,ubj)}(hout_lenh]hout_len}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQ,ubeh}(h]h ]h"]h$]h&]noemphhhuh1jS hj*ubjT )}(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 j )}j ]jw*c.pci_tsm_guest_reqasbuh1hhj,ubj)}(h h]h }(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,ubj& )}(hj) h]h*}(hj,hhhNhNubah}(h]h ]j2 ah"]h$]h&]uh1j% hj,ubj)}(htsm_codeh]htsm_code}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,ubeh}(h]h ]h"]h$]h&]noemphhhuh1jS hj*ubeh}(h]h ]h"]h$]h&]hhuh1jM hjT*hhhj|*hM{ubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjP*hhhj|*hM{ubah}(h]jK*ah ](jjeh"]h$]h&]jj)jhuh1jhj|*hM{hjM*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&]uh1jhjM*hhhj|*hM{ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj-jj-j j!j"uh1jhhhjphNhNubj$)}(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.)}(hj%-h]h Parameters}(hj'-hhhNhNubah}(h]h ]h"]h$]h&]uh1j-hj#-ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhj-ubjr)}(hhh](jw)}(h;``struct pci_dev *pdev`` **pdev** representing a bound tdi h](j})}(h``struct pci_dev *pdev``h]j)}(hjD-h]hstruct pci_dev *pdev}(hjF-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjB-ubah}(h]h ]h"]h$]h&]uh1j|hU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chM|hj>-ubj)}(hhh]j)}(h!**pdev** representing a bound tdih](j.)}(h**pdev**h]hpdev}(hja-hhhNhNubah}(h]h ]h"]h$]h&]uh1j-hj]-ubh representing a bound tdi}(hj]-hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjY-hM|hjZ-ubah}(h]h ]h"]h$]h&]uh1jhj>-ubeh}(h]h ]h"]h$]h&]uh1jvhjY-hM|hj;-ubjw)}(hh``enum pci_tsm_req_scope scope`` caller asserts this passthrough request is limited to TDISP operations h](j})}(h ``enum pci_tsm_req_scope scope``h]j)}(hj-h]henum pci_tsm_req_scope scope}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-ubah}(h]h ]h"]h$]h&]uh1j|hU/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&]uh1jvhj-hM}hj;-ubjw)}(h<``sockptr_t req_in`` Input payload forwarded from the guest h](j})}(h``sockptr_t req_in``h]j)}(hj-h]hsockptr_t req_in}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-ubah}(h]h ]h"]h$]h&]uh1j|hU/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&]uh1jvhj-hM~hj;-ubjw)}(h'``size_t in_len`` Length of **req_in** h](j})}(h``size_t in_len``h]j)}(hj-h]h size_t in_len}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-ubah}(h]h ]h"]h$]h&]uh1j|hU/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}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1j-hj.ubeh}(h]h ]h"]h$]h&]uh1jhj.hMhj.ubah}(h]h ]h"]h$]h&]uh1jhj-ubeh}(h]h ]h"]h$]h&]uh1jvhj.hMhj;-ubjw)}(hB``sockptr_t req_out`` Output payload buffer response to the guest h](j})}(h``sockptr_t req_out``h]j)}(hjD.h]hsockptr_t req_out}(hjF.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjB.ubah}(h]h ]h"]h$]h&]uh1j|hU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhj>.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&]uh1jhjY.hMhjZ.ubah}(h]h ]h"]h$]h&]uh1jhj>.ubeh}(h]h ]h"]h$]h&]uh1jvhjY.hMhj;-ubjw)}(hY``size_t out_len`` Length of **req_out** on input, bytes filled in **req_out** on output h](j})}(h``size_t out_len``h]j)}(hj}.h]hsize_t out_len}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj{.ubah}(h]h ]h"]h$]h&]uh1j|hU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhjw.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&]uh1j-hj.ubh on input, bytes filled in }(hj.hhhNhNubj.)}(h **req_out**h]hreq_out}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1j-hj.ubh on output}(hj.hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhj.hMhj.ubah}(h]h ]h"]h$]h&]uh1jhjw.ubeh}(h]h ]h"]h$]h&]uh1jvhj.hMhj;-ubjw)}(hK``u64 *tsm_code`` Optional TSM arch specific result code for the guest TSM h](j})}(h``u64 *tsm_code``h]j)}(hj.h]h u64 *tsm_code}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.ubah}(h]h ]h"]h$]h&]uh1j|hU/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&]uh1jvhj.hMhj;-ubeh}(h]h ]h"]h$]h&]uh1jqhj-ubj)}(h**Description**h]j.)}(hj/h]h Description}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1j-hj/ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhj-ubj)}(hXvThis 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.h]hXvThis 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.}(hj+/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhj-ubj)}(hXXReturns 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.h](hUReturns 0 on success and -error on failure and positive “residue” on success but }(hj:/hhhNhNubj.)}(h **req_out**h]hreq_out}(hjB/hhhNhNubah}(h]h ]h"]h$]h&]uh1j-hj:/ubh is filled with less then }(hj:/hhhNhNubj.)}(h **out_len**h]hout_len}(hjT/hhhNhNubah}(h]h ]h"]h$]h&]uh1j-hj:/ubh, or }(hj:/hhhNhNubj.)}(h **req_out**h]hreq_out}(hjf/hhhNhNubah}(h]h ]h"]h$]h&]uh1j-hj:/ubh> is NULL and a residue number of bytes were not consumed from }(hj:/hhhNhNubj.)}(h **req_in**h]hreq_in}(hjx/hhhNhNubah}(h]h ]h"]h$]h&]uh1j-hj:/ubh. On success or failure }(hj:/hhhNhNubj.)}(h **tsm_code**h]htsm_code}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1j-hj:/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.chMhj-ubj)}(h **Context**h]j.)}(hj/h]hContext}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1j-hj/ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhj-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.chMhj-ubeh}(h]h ] kernelindentah"]h$]h&]uh1j#hjphhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j$pci_tsm_tdi_constructor (C function)c.pci_tsm_tdi_constructorhNtauh1jhjphhhNhNubj)}(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}(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj/hhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMubj)}(h h]h }(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj/hhhj/hMubj)}(hpci_tsm_tdi_constructorh]j)}(hpci_tsm_tdi_constructorh]hpci_tsm_tdi_constructor}(hj 0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj/hhhj/hMubjN )}(hH(struct pci_dev *pdev, struct pci_tdi *tdi, struct kvm *kvm, u32 tdi_id)h](jT )}(hstruct pci_dev *pdevh](j)}(hjh]hstruct}(hj'0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#0ubj)}(h h]h }(hj40hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#0ubh)}(hhh]j)}(hpci_devh]hpci_dev}(hjE0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjB0ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjG0modnameN classnameNj j )}j ]j )}j j 0sbc.pci_tsm_tdi_constructorasbuh1hhj#0ubj)}(h h]h }(hje0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#0ubj& )}(hj) h]h*}(hjs0hhhNhNubah}(h]h ]j2 ah"]h$]h&]uh1j% hj#0ubj)}(hpdevh]hpdev}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#0ubeh}(h]h ]h"]h$]h&]noemphhhuh1jS hj0ubjT )}(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 j )}j ]ja0c.pci_tsm_tdi_constructorasbuh1hhj0ubj)}(h h]h }(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0ubj& )}(hj) h]h*}(hj0hhhNhNubah}(h]h ]j2 ah"]h$]h&]uh1j% hj0ubj)}(htdih]htdi}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0ubeh}(h]h ]h"]h$]h&]noemphhhuh1jS hj0ubjT )}(hstruct kvm *kvmh](j)}(hjh]hstruct}(hj 1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubj)}(h h]h }(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubh)}(hhh]j)}(hkvmh]hkvm}(hj'1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$1ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj)1modnameN classnameNj j )}j ]ja0c.pci_tsm_tdi_constructorasbuh1hhj1ubj)}(h h]h }(hjE1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubj& )}(hj) h]h*}(hjS1hhhNhNubah}(h]h ]j2 ah"]h$]h&]uh1j% hj1ubj)}(hkvmh]hkvm}(hj`1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubeh}(h]h ]h"]h$]h&]noemphhhuh1jS hj0ubjT )}(h u32 tdi_idh](h)}(hhh]j)}(hu32h]hu32}(hj|1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjy1ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj~1modnameN classnameNj j )}j ]ja0c.pci_tsm_tdi_constructorasbuh1hhju1ubj)}(h h]h }(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhju1ubj)}(htdi_idh]htdi_id}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhju1ubeh}(h]h ]h"]h$]h&]noemphhhuh1jS hj0ubeh}(h]h ]h"]h$]h&]hhuh1jM hj/hhhj/hMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj/hhhj/hMubah}(h]j/ah ](jjeh"]h$]h&]jj)jhuh1jhj/hMhj/hhubj)}(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&]uh1jhj/hhhj/hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj1jj1j j!j"uh1jhhhjphNhNubj$)}(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.)}(hj1h]h Parameters}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1j-hj1ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhj1ubjr)}(hhh](jw)}(hB``struct pci_dev *pdev`` PCI device function representing the TDI h](j})}(h``struct pci_dev *pdev``h]j)}(hj2h]hstruct pci_dev *pdev}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1j|hU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhj 2ubj)}(hhh]j)}(h(PCI device function representing the TDIh]h(PCI device function representing the TDI}(hj,2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(2hMhj)2ubah}(h]h ]h"]h$]h&]uh1jhj 2ubeh}(h]h ]h"]h$]h&]uh1jvhj(2hMhj 2ubjw)}(h.``struct pci_tdi *tdi`` context to initialize h](j})}(h``struct pci_tdi *tdi``h]j)}(hjL2h]hstruct pci_tdi *tdi}(hjN2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJ2ubah}(h]h ]h"]h$]h&]uh1j|hU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhjF2ubj)}(hhh]j)}(hcontext to initializeh]hcontext to initialize}(hje2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhja2hMhjb2ubah}(h]h ]h"]h$]h&]uh1jhjF2ubeh}(h]h ]h"]h$]h&]uh1jvhja2hMhj 2ubjw)}(h2``struct kvm *kvm`` Private memory attach context h](j})}(h``struct kvm *kvm``h]j)}(hj2h]hstruct kvm *kvm}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1j|hU/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&]uh1jvhj2hMhj 2ubjw)}(hT``u32 tdi_id`` Identifier (virtual BDF) for the TDI as referenced by the TSM and DSMh](j})}(h``u32 tdi_id``h]j)}(hj2h]h u32 tdi_id}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1j|hU/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&]uh1jvhj2hMhj 2ubeh}(h]h ]h"]h$]h&]uh1jqhj1ubeh}(h]h ] kernelindentah"]h$]h&]uh1j#hjphhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j%pci_tsm_link_constructor (C function)c.pci_tsm_link_constructorhNtauh1jhjphhhNhNubj)}(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}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3hhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMubj)}(h h]h }(hj'3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3hhhj&3hMubj)}(hpci_tsm_link_constructorh]j)}(hpci_tsm_link_constructorh]hpci_tsm_link_constructor}(hj93hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj53ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj3hhhj&3hMubjN )}(hD(struct pci_dev *pdev, struct pci_tsm *tsm, struct tsm_dev *tsm_dev)h](jT )}(hstruct pci_dev *pdevh](j)}(hjh]hstruct}(hjU3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQ3ubj)}(h h]h }(hjb3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQ3ubh)}(hhh]j)}(hpci_devh]hpci_dev}(hjs3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjp3ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetju3modnameN classnameNj j )}j ]j )}j j;3sbc.pci_tsm_link_constructorasbuh1hhjQ3ubj)}(h h]h }(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQ3ubj& )}(hj) h]h*}(hj3hhhNhNubah}(h]h ]j2 ah"]h$]h&]uh1j% hjQ3ubj)}(hpdevh]hpdev}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQ3ubeh}(h]h ]h"]h$]h&]noemphhhuh1jS hjM3ubjT )}(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}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj3modnameN classnameNj j )}j ]j3c.pci_tsm_link_constructorasbuh1hhj3ubj)}(h h]h }(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubj& )}(hj) h]h*}(hj4hhhNhNubah}(h]h ]j2 ah"]h$]h&]uh1j% hj3ubj)}(htsmh]htsm}(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubeh}(h]h ]h"]h$]h&]noemphhhuh1jS hjM3ubjT )}(hstruct tsm_dev *tsm_devh](j)}(hjh]hstruct}(hj74hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj34ubj)}(h h]h }(hjD4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj34ubh)}(hhh]j)}(htsm_devh]htsm_dev}(hjU4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjR4ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjW4modnameN classnameNj j )}j ]j3c.pci_tsm_link_constructorasbuh1hhj34ubj)}(h h]h }(hjs4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj34ubj& )}(hj) h]h*}(hj4hhhNhNubah}(h]h ]j2 ah"]h$]h&]uh1j% hj34ubj)}(htsm_devh]htsm_dev}(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj34ubeh}(h]h ]h"]h$]h&]noemphhhuh1jS hjM3ubeh}(h]h ]h"]h$]h&]hhuh1jM hj3hhhj&3hMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj3hhhj&3hMubah}(h]j 3ah ](jjeh"]h$]h&]jj)jhuh1jhj&3hMhj 3hhubj)}(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&]uh1jhj 3hhhj&3hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj4jj4j j!j"uh1jhhhjphNhNubj$)}(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}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1j-hj4ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhj4ubjr)}(hhh](jw)}(h(``struct pci_dev *pdev`` The PCI device h](j})}(h``struct pci_dev *pdev``h]j)}(hj4h]hstruct pci_dev *pdev}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]uh1j|hU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhj4ubj)}(hhh]j)}(hThe PCI deviceh]hThe PCI device}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5hMhj5ubah}(h]h ]h"]h$]h&]uh1jhj4ubeh}(h]h ]h"]h$]h&]uh1jvhj5hMhj4ubjw)}(h.``struct pci_tsm *tsm`` context to initialize h](j})}(h``struct pci_tsm *tsm``h]j)}(hj25h]hstruct pci_tsm *tsm}(hj45hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj05ubah}(h]h ]h"]h$]h&]uh1j|hU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhj,5ubj)}(hhh]j)}(hcontext to initializeh]hcontext to initialize}(hjK5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjG5hMhjH5ubah}(h]h ]h"]h$]h&]uh1jhj,5ubeh}(h]h ]h"]h$]h&]uh1jvhjG5hMhj4ubjw)}(h[``struct tsm_dev *tsm_dev`` Platform TEE Security Manager, initiator of security operationsh](j})}(h``struct tsm_dev *tsm_dev``h]j)}(hjk5h]hstruct tsm_dev *tsm_dev}(hjm5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhji5ubah}(h]h ]h"]h$]h&]uh1j|hU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhje5ubj)}(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&]uh1jhje5ubeh}(h]h ]h"]h$]h&]uh1jvhj5hMhj4ubeh}(h]h ]h"]h$]h&]uh1jqhj4ubeh}(h]h ] kernelindentah"]h$]h&]uh1j#hjphhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j$pci_tsm_pf0_constructor (C function)c.pci_tsm_pf0_constructorhNtauh1jhjphhhNhNubj)}(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}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj5hhhj5hMubjN )}(hH(struct pci_dev *pdev, struct pci_tsm_pf0 *tsm, struct tsm_dev *tsm_dev)h](jT )}(hstruct pci_dev *pdevh](j)}(hjh]hstruct}(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubj)}(h h]h }(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubh)}(hhh]j)}(hpci_devh]hpci_dev}(hj 6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj"6modnameN classnameNj j )}j ]j )}j j5sbc.pci_tsm_pf0_constructorasbuh1hhj5ubj)}(h h]h }(hj@6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubj& )}(hj) h]h*}(hjN6hhhNhNubah}(h]h ]j2 ah"]h$]h&]uh1j% hj5ubj)}(hpdevh]hpdev}(hj[6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubeh}(h]h ]h"]h$]h&]noemphhhuh1jS hj5ubjT )}(hstruct pci_tsm_pf0 *tsmh](j)}(hjh]hstruct}(hjt6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjp6ubj)}(h h]h }(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjp6ubh)}(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 j )}j ]j<6c.pci_tsm_pf0_constructorasbuh1hhjp6ubj)}(h h]h }(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjp6ubj& )}(hj) h]h*}(hj6hhhNhNubah}(h]h ]j2 ah"]h$]h&]uh1j% hjp6ubj)}(htsmh]htsm}(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjp6ubeh}(h]h ]h"]h$]h&]noemphhhuh1jS hj5ubjT )}(hstruct tsm_dev *tsm_devh](j)}(hjh]hstruct}(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6ubj)}(h h]h }(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6ubh)}(hhh]j)}(htsm_devh]htsm_dev}(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj7modnameN classnameNj j )}j ]j<6c.pci_tsm_pf0_constructorasbuh1hhj6ubj)}(h h]h }(hj 7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6ubj& )}(hj) h]h*}(hj.7hhhNhNubah}(h]h ]j2 ah"]h$]h&]uh1j% hj6ubj)}(htsm_devh]htsm_dev}(hj;7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6ubeh}(h]h ]h"]h$]h&]noemphhhuh1jS hj5ubeh}(h]h ]h"]h$]h&]hhuh1jM 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}(hje7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhjb7hhubah}(h]h ]h"]h$]h&]uh1jhj5hhhj5hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj}7jj}7j j!j"uh1jhhhjphNhNubj$)}(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&]uh1j-hj7ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhj7ubjr)}(hhh](jw)}(h[``struct pci_dev *pdev`` Physical Function 0 PCI device (as indicated by is_pci_tsm_pf0()) h](j})}(h``struct pci_dev *pdev``h]j)}(hj7h]hstruct pci_dev *pdev}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7ubah}(h]h ]h"]h$]h&]uh1j|hU/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&]uh1jvhj7hMhj7ubjw)}(h2``struct pci_tsm_pf0 *tsm`` context to initialize h](j})}(h``struct pci_tsm_pf0 *tsm``h]j)}(hj7h]hstruct pci_tsm_pf0 *tsm}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7ubah}(h]h ]h"]h$]h&]uh1j|hU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhj7ubj)}(hhh]j)}(hcontext to initializeh]hcontext to initialize}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7hMhj7ubah}(h]h ]h"]h$]h&]uh1jhj7ubeh}(h]h ]h"]h$]h&]uh1jvhj7hMhj7ubjw)}(h[``struct tsm_dev *tsm_dev`` Platform TEE Security Manager, initiator of security operationsh](j})}(h``struct tsm_dev *tsm_dev``h]j)}(hj8h]hstruct tsm_dev *tsm_dev}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1j|hU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhj8ubj)}(hhh]j)}(h?Platform TEE Security Manager, initiator of security operationsh]h?Platform TEE Security Manager, initiator of security operations}(hj18hhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.chMhj.8ubah}(h]h ]h"]h$]h&]uh1jhj8ubeh}(h]h ]h"]h$]h&]uh1jvhj-8hMhj7ubeh}(h]h ]h"]h$]h&]uh1jqhj7ubeh}(h]h ] kernelindentah"]h$]h&]uh1j#hjphhhNhNubeh}(h]subsystem-interfacesah ]h"]subsystem interfacesah$]h&]uh1j[hj]hhhhhK ubeh}(h]6pci-trusted-execution-environment-security-manager-tsmah ]h"]8pci trusted execution environment security manager (tsm)ah$]h&]uh1j[hhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(j`N generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerj8error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourcehnj _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}(hhjhjjj jj/j#j>j2jMjAj\jPjkj_jzjnjj}jjjjjjjjjjjjjjjjjjjjj.j"j=j1jLj@j[jOjjj^jyjmjj|jjjjjjjjjjjjjjjjjjjjj-j!j<j0jKj?jZjNjij]jxjljj{jjjjjjjjjjjjjjjjjjjjj,j j;j/jJj>jYjMjhj\jwjkjjzjjjjjjjjjjjjjjjjj jjjj+jj:j.jIj=jXjLusubstitution_names}(amphaposjastjbrvbarj bsolj/centj>colonjMcommaj\commatjkcopyjzcurrenjdarrjdegjdividejdollarjequalsjexcljfrac12jfrac14jfrac18jfrac34jfrac38j.frac58j=frac78jLgtj[halfjjhorbarjyhyphenjiexcljiquestjlaquojlarrjlcubjldquojlowbarjlparjlsqbjlsquojltj-microj<middotjKnbspjZnotjinumjxohmjordfjordmjparajpercntjperiodjplusjplusmnjpoundjquestjquotjraquoj,rarrj;rcubjJrdquojYregjhrparjwrsqbjrsquojsectjsemijshyjsoljsungjsup1jsup2jsup3j timesjtradej+uarrj:verbarjIyenjXurefnames}refids}nameids}(jf8jc8j^8j[8u nametypes}(jf8j^8uh}(jc8j]j[8jpjjjjj j j j jjjfjkjj jjj@jEjjjjjKjPjujzj j j"j"j $j$j%j%jY'j^'jK*jP*j/j/j 3j3j5j5u 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.