€•Œsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ&/translations/zh_CN/driver-api/pci/tsm”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ&/translations/zh_TW/driver-api/pci/tsm”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ&/translations/it_IT/driver-api/pci/tsm”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ&/translations/ja_JP/driver-api/pci/tsm”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ&/translations/ko_KR/driver-api/pci/tsm”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ&/translations/pt_BR/driver-api/pci/tsm”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ&/translations/sp_SP/driver-api/pci/tsm”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)�”}”(hŒ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³Œ@/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm.rst”h´Kubh¶)�”}”(hŒ4This data file has been placed in the public domain.”h]”hŒ4This data file has been placed in the public domain.”…”�”}”hhÈsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1hµhhh²hh³Œo/srv/docbuild/lib/venvs/build-kernel-docs/lib64/python3.9/site-packages/docutils/parsers/rst/include/isonum.txt”h´Kubh¶)�”}”(hŒ¸Derived from the Unicode character mappings available from . Processed by unicode2rstsubs.py, part of Docutils: .”h]”hŒ¸Derived from the Unicode character mappings available from . Processed by unicode2rstsubs.py, part of Docutils: .”…”�”}”hh×sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1hµhhh²hh³hÖh´KubhŒsubstitution_definition”“”)�”}”(hŒ*.. |amp| unicode:: U+00026 .. AMPERSAND”h]”hŒ&”…”�”}”hhçsbah}”(h]”h ]”h"]”Œamp”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ+.. |apos| unicode:: U+00027 .. APOSTROPHE”h]”hŒ'”…”�”}”hhösbah}”(h]”h ]”h"]”Œapos”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ).. |ast| unicode:: U+0002A .. ASTERISK”h]”hŒ*”…”�”}”hjsbah}”(h]”h ]”h"]”Œast”ah$]”h&]”uh1håh³hÖh´K hhh²hubhæ)�”}”(hŒ+.. |brvbar| unicode:: U+000A6 .. BROKEN BAR”h]”hŒ¦”…”�”}”hjsbah}”(h]”h ]”h"]”Œbrvbar”ah$]”h&]”uh1håh³hÖh´K hhh²hubhæ)�”}”(hŒ0.. |bsol| unicode:: U+0005C .. REVERSE SOLIDUS”h]”hŒ\”…”�”}”hj#sbah}”(h]”h ]”h"]”Œbsol”ah$]”h&]”uh1håh³hÖh´K hhh²hubhæ)�”}”(hŒ*.. |cent| unicode:: U+000A2 .. CENT SIGN”h]”hŒ¢”…”�”}”hj2sbah}”(h]”h ]”h"]”Œcent”ah$]”h&]”uh1håh³hÖh´K hhh²hubhæ)�”}”(hŒ&.. |colon| unicode:: U+0003A .. COLON”h]”hŒ:”…”�”}”hjAsbah}”(h]”h ]”h"]”Œcolon”ah$]”h&]”uh1håh³hÖh´K hhh²hubhæ)�”}”(hŒ&.. |comma| unicode:: U+0002C .. COMMA”h]”hŒ,”…”�”}”hjPsbah}”(h]”h ]”h"]”Œcomma”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ... |commat| unicode:: U+00040 .. COMMERCIAL AT”h]”hŒ@”…”�”}”hj_sbah}”(h]”h ]”h"]”Œcommat”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ/.. |copy| unicode:: U+000A9 .. COPYRIGHT SIGN”h]”hŒ©”…”�”}”hjnsbah}”(h]”h ]”h"]”Œcopy”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ... |curren| unicode:: U+000A4 .. CURRENCY SIGN”h]”hŒ¤”…”�”}”hj}sbah}”(h]”h ]”h"]”Œcurren”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ0.. |darr| unicode:: U+02193 .. DOWNWARDS ARROW”h]”hŒ↓”…”�”}”hjŒsbah}”(h]”h ]”h"]”Œdarr”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ,.. |deg| unicode:: U+000B0 .. DEGREE SIGN”h]”hŒ°”…”�”}”hj›sbah}”(h]”h ]”h"]”Œdeg”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ... |divide| unicode:: U+000F7 .. DIVISION SIGN”h]”hŒ÷”…”�”}”hjªsbah}”(h]”h ]”h"]”Œdivide”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ,.. |dollar| unicode:: U+00024 .. DOLLAR SIGN”h]”hŒ$”…”�”}”hj¹sbah}”(h]”h ]”h"]”Œdollar”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ,.. |equals| unicode:: U+0003D .. EQUALS SIGN”h]”hŒ=”…”�”}”hjÈsbah}”(h]”h ]”h"]”Œequals”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ1.. |excl| unicode:: U+00021 .. EXCLAMATION MARK”h]”hŒ!”…”�”}”hj×sbah}”(h]”h ]”h"]”Œexcl”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ9.. |frac12| unicode:: U+000BD .. VULGAR FRACTION ONE HALF”h]”hŒ½”…”�”}”hjæsbah}”(h]”h ]”h"]”Œfrac12”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ<.. |frac14| unicode:: U+000BC .. VULGAR FRACTION ONE QUARTER”h]”hŒ¼”…”�”}”hjõsbah}”(h]”h ]”h"]”Œfrac14”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ;.. |frac18| unicode:: U+0215B .. VULGAR FRACTION ONE EIGHTH”h]”hŒâ…›”…”�”}”hjsbah}”(h]”h ]”h"]”Œfrac18”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ?.. |frac34| unicode:: U+000BE .. VULGAR FRACTION THREE QUARTERS”h]”hŒ¾”…”�”}”hjsbah}”(h]”h ]”h"]”Œfrac34”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ>.. |frac38| unicode:: U+0215C .. VULGAR FRACTION THREE EIGHTHS”h]”hŒâ…œ”…”�”}”hj"sbah}”(h]”h ]”h"]”Œfrac38”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ=.. |frac58| unicode:: U+0215D .. VULGAR FRACTION FIVE EIGHTHS”h]”hŒâ…�”…”�”}”hj1sbah}”(h]”h ]”h"]”Œfrac58”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ>.. |frac78| unicode:: U+0215E .. VULGAR FRACTION SEVEN EIGHTHS”h]”hŒâ…ž”…”�”}”hj@sbah}”(h]”h ]”h"]”Œfrac78”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ2.. |gt| unicode:: U+0003E .. GREATER-THAN SIGN”h]”hŒ>”…”�”}”hjOsbah}”(h]”h ]”h"]”Œgt”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ9.. |half| unicode:: U+000BD .. VULGAR FRACTION ONE HALF”h]”hŒ½”…”�”}”hj^sbah}”(h]”h ]”h"]”Œhalf”ah$]”h&]”uh1håh³hÖh´K hhh²hubhæ)�”}”(hŒ/.. |horbar| unicode:: U+02015 .. HORIZONTAL BAR”h]”hŒ―”…”�”}”hjmsbah}”(h]”h ]”h"]”Œhorbar”ah$]”h&]”uh1håh³hÖh´K!hhh²hubhæ)�”}”(hŒ'.. |hyphen| unicode:: U+02010 .. HYPHEN”h]”hŒâ€�”…”�”}”hj|sbah}”(h]”h ]”h"]”Œhyphen”ah$]”h&]”uh1håh³hÖh´K"hhh²hubhæ)�”}”(hŒ:.. |iexcl| unicode:: U+000A1 .. INVERTED EXCLAMATION MARK”h]”hŒ¡”…”�”}”hj‹sbah}”(h]”h ]”h"]”Œiexcl”ah$]”h&]”uh1håh³hÖh´K#hhh²hubhæ)�”}”(hŒ7.. |iquest| unicode:: U+000BF .. INVERTED QUESTION MARK”h]”hŒ¿”…”�”}”hjšsbah}”(h]”h ]”h"]”Œiquest”ah$]”h&]”uh1håh³hÖh´K$hhh²hubhæ)�”}”(hŒJ.. |laquo| unicode:: U+000AB .. LEFT-POINTING DOUBLE ANGLE QUOTATION MARK”h]”hŒ«”…”�”}”hj©sbah}”(h]”h ]”h"]”Œlaquo”ah$]”h&]”uh1håh³hÖh´K%hhh²hubhæ)�”}”(hŒ0.. |larr| unicode:: U+02190 .. LEFTWARDS ARROW”h]”hŒâ†�”…”�”}”hj¸sbah}”(h]”h ]”h"]”Œlarr”ah$]”h&]”uh1håh³hÖh´K&hhh²hubhæ)�”}”(hŒ3.. |lcub| unicode:: U+0007B .. LEFT CURLY BRACKET”h]”hŒ{”…”�”}”hjÇsbah}”(h]”h ]”h"]”Œlcub”ah$]”h&]”uh1håh³hÖh´K'hhh²hubhæ)�”}”(hŒ;.. |ldquo| unicode:: U+0201C .. LEFT DOUBLE QUOTATION MARK”h]”hŒ“”…”�”}”hjÖsbah}”(h]”h ]”h"]”Œldquo”ah$]”h&]”uh1håh³hÖh´K(hhh²hubhæ)�”}”(hŒ).. |lowbar| unicode:: U+0005F .. LOW LINE”h]”hŒ_”…”�”}”hjåsbah}”(h]”h ]”h"]”Œlowbar”ah$]”h&]”uh1håh³hÖh´K)hhh²hubhæ)�”}”(hŒ1.. |lpar| unicode:: U+00028 .. LEFT PARENTHESIS”h]”hŒ(”…”�”}”hjôsbah}”(h]”h ]”h"]”Œlpar”ah$]”h&]”uh1håh³hÖh´K*hhh²hubhæ)�”}”(hŒ4.. |lsqb| unicode:: U+0005B .. LEFT SQUARE BRACKET”h]”hŒ[”…”�”}”hjsbah}”(h]”h ]”h"]”Œlsqb”ah$]”h&]”uh1håh³hÖh´K+hhh²hubhæ)�”}”(hŒ;.. |lsquo| unicode:: U+02018 .. LEFT SINGLE QUOTATION MARK”h]”hŒ‘”…”�”}”hjsbah}”(h]”h ]”h"]”Œlsquo”ah$]”h&]”uh1håh³hÖh´K,hhh²hubhæ)�”}”(hŒ/.. |lt| unicode:: U+0003C .. LESS-THAN SIGN”h]”hŒ<”…”�”}”hj!sbah}”(h]”h ]”h"]”Œlt”ah$]”h&]”uh1håh³hÖh´K-hhh²hubhæ)�”}”(hŒ+.. |micro| unicode:: U+000B5 .. MICRO SIGN”h]”hŒµ”…”�”}”hj0sbah}”(h]”h ]”h"]”Œmicro”ah$]”h&]”uh1håh³hÖh´K.hhh²hubhæ)�”}”(hŒ+.. |middot| unicode:: U+000B7 .. MIDDLE DOT”h]”hŒ·”…”�”}”hj?sbah}”(h]”h ]”h"]”Œmiddot”ah$]”h&]”uh1håh³hÖh´K/hhh²hubhæ)�”}”(hŒ/.. |nbsp| unicode:: U+000A0 .. NO-BREAK SPACE”h]”hŒ ”…”�”}”hjNsbah}”(h]”h ]”h"]”Œnbsp”ah$]”h&]”uh1håh³hÖh´K0hhh²hubhæ)�”}”(hŒ).. |not| unicode:: U+000AC .. NOT SIGN”h]”hŒ¬”…”�”}”hj]sbah}”(h]”h ]”h"]”Œnot”ah$]”h&]”uh1håh³hÖh´K1hhh²hubhæ)�”}”(hŒ,.. |num| unicode:: U+00023 .. NUMBER SIGN”h]”hŒ#”…”�”}”hjlsbah}”(h]”h ]”h"]”Œnum”ah$]”h&]”uh1håh³hÖh´K2hhh²hubhæ)�”}”(hŒ).. |ohm| unicode:: U+02126 .. OHM SIGN”h]”hŒΩ”…”�”}”hj{sbah}”(h]”h ]”h"]”Œohm”ah$]”h&]”uh1håh³hÖh´K3hhh²hubhæ)�”}”(hŒ;.. |ordf| unicode:: U+000AA .. FEMININE ORDINAL INDICATOR”h]”hŒª”…”�”}”hjŠsbah}”(h]”h ]”h"]”Œordf”ah$]”h&]”uh1håh³hÖh´K4hhh²hubhæ)�”}”(hŒ<.. |ordm| unicode:: U+000BA .. MASCULINE ORDINAL INDICATOR”h]”hŒº”…”�”}”hj™sbah}”(h]”h ]”h"]”Œordm”ah$]”h&]”uh1håh³hÖh´K5hhh²hubhæ)�”}”(hŒ-.. |para| unicode:: U+000B6 .. PILCROW SIGN”h]”hŒ¶”…”�”}”hj¨sbah}”(h]”h ]”h"]”Œpara”ah$]”h&]”uh1håh³hÖh´K6hhh²hubhæ)�”}”(hŒ-.. |percnt| unicode:: U+00025 .. PERCENT SIGN”h]”hŒ%”…”�”}”hj·sbah}”(h]”h ]”h"]”Œpercnt”ah$]”h&]”uh1håh³hÖh´K7hhh²hubhæ)�”}”(hŒ*.. |period| unicode:: U+0002E .. FULL STOP”h]”hŒ.”…”�”}”hjÆsbah}”(h]”h ]”h"]”Œperiod”ah$]”h&]”uh1håh³hÖh´K8hhh²hubhæ)�”}”(hŒ*.. |plus| unicode:: U+0002B .. PLUS SIGN”h]”hŒ+”…”�”}”hjÕsbah}”(h]”h ]”h"]”Œplus”ah$]”h&]”uh1håh³hÖh´K9hhh²hubhæ)�”}”(hŒ0.. |plusmn| unicode:: U+000B1 .. PLUS-MINUS SIGN”h]”hŒ±”…”�”}”hjäsbah}”(h]”h ]”h"]”Œplusmn”ah$]”h&]”uh1håh³hÖh´K:hhh²hubhæ)�”}”(hŒ+.. |pound| unicode:: U+000A3 .. POUND SIGN”h]”hŒ£”…”�”}”hjósbah}”(h]”h ]”h"]”Œpound”ah$]”h&]”uh1håh³hÖh´K;hhh²hubhæ)�”}”(hŒ... |quest| unicode:: U+0003F .. QUESTION MARK”h]”hŒ?”…”�”}”hjsbah}”(h]”h ]”h"]”Œquest”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ1.. |rarr| unicode:: U+02192 .. RIGHTWARDS ARROW”h]”hŒ→”…”�”}”hj/sbah}”(h]”h ]”h"]”Œrarr”ah$]”h&]”uh1håh³hÖh´K?hhh²hubhæ)�”}”(hŒ4.. |rcub| unicode:: U+0007D .. RIGHT CURLY BRACKET”h]”hŒ}”…”�”}”hj>sbah}”(h]”h ]”h"]”Œrcub”ah$]”h&]”uh1håh³hÖh´K@hhh²hubhæ)�”}”(hŒ<.. |rdquo| unicode:: U+0201D .. RIGHT DOUBLE QUOTATION MARK”h]”hŒâ€�”…”�”}”hjMsbah}”(h]”h ]”h"]”Œrdquo”ah$]”h&]”uh1håh³hÖh´KAhhh²hubhæ)�”}”(hŒ0.. |reg| unicode:: U+000AE .. REGISTERED SIGN”h]”hŒ®”…”�”}”hj\sbah}”(h]”h ]”h"]”Œreg”ah$]”h&]”uh1håh³hÖh´KBhhh²hubhæ)�”}”(hŒ2.. |rpar| unicode:: U+00029 .. RIGHT PARENTHESIS”h]”hŒ)”…”�”}”hjksbah}”(h]”h ]”h"]”Œrpar”ah$]”h&]”uh1håh³hÖh´KChhh²hubhæ)�”}”(hŒ5.. |rsqb| unicode:: U+0005D .. RIGHT SQUARE BRACKET”h]”hŒ]”…”�”}”hjzsbah}”(h]”h ]”h"]”Œrsqb”ah$]”h&]”uh1håh³hÖh´KDhhh²hubhæ)�”}”(hŒ<.. |rsquo| unicode:: U+02019 .. RIGHT SINGLE QUOTATION MARK”h]”hŒ’”…”�”}”hj‰sbah}”(h]”h ]”h"]”Œrsquo”ah$]”h&]”uh1håh³hÖh´KEhhh²hubhæ)�”}”(hŒ-.. |sect| unicode:: U+000A7 .. SECTION SIGN”h]”hŒ§”…”�”}”hj˜sbah}”(h]”h ]”h"]”Œsect”ah$]”h&]”uh1håh³hÖh´KFhhh²hubhæ)�”}”(hŒ*.. |semi| unicode:: U+0003B .. SEMICOLON”h]”hŒ;”…”�”}”hj§sbah}”(h]”h ]”h"]”Œsemi”ah$]”h&]”uh1håh³hÖh´KGhhh²hubhæ)�”}”(hŒ,.. |shy| unicode:: U+000AD .. SOFT HYPHEN”h]”hŒ­”…”�”}”hj¶sbah}”(h]”h ]”h"]”Œshy”ah$]”h&]”uh1håh³hÖh´KHhhh²hubhæ)�”}”(hŒ(.. |sol| unicode:: U+0002F .. SOLIDUS”h]”hŒ/”…”�”}”hjÅsbah}”(h]”h ]”h"]”Œsol”ah$]”h&]”uh1håh³hÖh´KIhhh²hubhæ)�”}”(hŒ,.. |sung| unicode:: U+0266A .. EIGHTH NOTE”h]”hŒ♪”…”�”}”hjÔsbah}”(h]”h ]”h"]”Œsung”ah$]”h&]”uh1håh³hÖh´KJhhh²hubhæ)�”}”(hŒ0.. |sup1| unicode:: U+000B9 .. SUPERSCRIPT ONE”h]”hŒ¹”…”�”}”hjãsbah}”(h]”h ]”h"]”Œsup1”ah$]”h&]”uh1håh³hÖh´KKhhh²hubhæ)�”}”(hŒ0.. |sup2| unicode:: U+000B2 .. SUPERSCRIPT TWO”h]”hŒ²”…”�”}”hjòsbah}”(h]”h ]”h"]”Œsup2”ah$]”h&]”uh1håh³hÖh´KLhhh²hubhæ)�”}”(hŒ2.. |sup3| unicode:: U+000B3 .. SUPERSCRIPT THREE”h]”hŒ³”…”�”}”hjsbah}”(h]”h ]”h"]”Œsup3”ah$]”h&]”uh1håh³hÖh´KMhhh²hubhæ)�”}”(hŒ4.. |times| unicode:: U+000D7 .. MULTIPLICATION SIGN”h]”hŒ×”…”�”}”hjsbah}”(h]”h ]”h"]”Œtimes”ah$]”h&]”uh1håh³hÖh´KNhhh²hubhæ)�”}”(hŒ0.. |trade| unicode:: U+02122 .. TRADE MARK SIGN”h]”hŒâ„¢”…”�”}”hjsbah}”(h]”h ]”h"]”Œtrade”ah$]”h&]”uh1håh³hÖh´KOhhh²hubhæ)�”}”(hŒ... |uarr| unicode:: U+02191 .. UPWARDS ARROW”h]”hŒ↑”…”�”}”hj.sbah}”(h]”h ]”h"]”Œuarr”ah$]”h&]”uh1håh³hÖh´KPhhh²hubhæ)�”}”(hŒ... |verbar| unicode:: U+0007C .. VERTICAL LINE”h]”hŒ|”…”�”}”hj=sbah}”(h]”h ]”h"]”Œverbar”ah$]”h&]”uh1håh³hÖh´KQhhh²hubhæ)�”}”(hŒ*.. |yen| unicode:: U+000A5 .. YEN SIGN ”h]”hŒÂ¥”…”�”}”hjLsbah}”(h]”h ]”h"]”Œyen”ah$]”h&]”uh1håh³hÖh´KRhhh²hubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒ8PCI Trusted Execution Environment Security Manager (TSM)”h]”hŒ8PCI Trusted Execution Environment Security Manager (TSM)”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j`hj]h²hh³hÇh´Kubj\)�”}”(hhh]”(ja)�”}”(hŒSubsystem Interfaces”h]”hŒSubsystem Interfaces”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j`hjph²hh³hÇh´K ubhŒindex”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”Œpci_ide_partner (C struct)”Œc.pci_ide_partner”hNt”auh1j�hjph²hh³Nh´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒpci_ide_partner”h]”hŒdesc_signature_line”“”)�”}”(hŒstruct pci_ide_partner”h]”(hŒdesc_sig_keyword”“”)�”}”(hŒstruct”h]”hŒstruct”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”Œk”ah"]”h$]”h&]”uh1j£hjŸh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.h”h´KubhŒdesc_sig_space”“”)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1jµhjŸh²hh³j´h´KubhŒ desc_name”“”)�”}”(hŒpci_ide_partner”h]”hŒ desc_sig_name”“”)�”}”(hj›h]”hŒpci_ide_partner”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1jÌhjÈubah}”(h]”h ]”(Œsig-name”Œdescname”eh"]”h$]”h&]”hÅhÆuh1jÆhjŸh²hh³j´h´Kubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆŒ add_permalink”ˆuh1j�Œsphinx_line_type”Œ declarator”hj™h²hh³j´h´Kubah}”(h]”j�ah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1j—h³j´h´Khj”h²hubhŒ desc_content”“”)�”}”(hhh]”hŒ paragraph”“”)�”}”(hŒ+Per port pair Selective IDE Stream settings”h]”hŒ+Per port pair Selective IDE Stream settings”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.h”h´Khjúh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jøhj”h²hh³j´h´Kubeh}”(h]”h ]”(Œc”Œstruct”eh"]”h$]”h&]”Œdomain”jŒobjtype”jŒdesctype”jŒnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1j’h²hhjph³Nh´NubhŒ 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 slot **Description** 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Œ block_quote”“”)�”}”(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; }; ”h]”(jþ)�”}”(hŒ**Definition**::”h]”(hŒstrong”“”)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hj.ubhŒ:”…”�”}”(hj.h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.h”h´Khj*ubhŒ literal_block”“”)�”}”(hXstruct 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]”hXstruct 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; };”…”�”}”hjOsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jMh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.h”h´K!hj*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j(h³jLh´Khj$ubjþ)�”}”(hŒ **Members**”h]”j3)�”}”(hjfh]”hŒMembers”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hjdubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.h”h´K,hj$ubhŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hŒ4``rid_start`` Partner Port Requester ID range start ”h]”(hŒterm”“”)�”}”(hŒ ``rid_start``”h]”hŒliteral”“”)�”}”(hj‹h]”hŒ rid_start”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.h”h´KhjƒubhŒ definition”“”)�”}”(hhh]”jþ)�”}”(hŒ%Partner Port Requester ID range start”h]”hŒ%Partner Port Requester ID range start”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j¢h´Khj¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j¢h´Khj~ubj‚)�”}”(hŒ<``rid_end`` Partner Port Requester ID range end (inclusive) ”h]”(jˆ)�”}”(hŒ ``rid_end``”h]”jŽ)�”}”(hjÈh]”hŒrid_end”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.h”h´KhjÂubj¤)�”}”(hhh]”jþ)�”}”(hŒ/Partner Port Requester ID range end (inclusive)”h]”hŒ/Partner Port Requester ID range end (inclusive)”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jÝh´KhjÞubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jÝh´Khj~ubj‚)�”}”(hŒ?``stream_index`` Selective IDE Stream Register Block selection ”h]”(jˆ)�”}”(hŒ``stream_index``”h]”jŽ)�”}”(hjh]”hŒ stream_index”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.h”h´Khjûubj¤)�”}”(hhh]”jþ)�”}”(hŒ-Selective IDE Stream Register Block selection”h]”hŒ-Selective IDE Stream Register Block selection”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jh´Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjûubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jh´Khj~ubj‚)�”}”(hŒL``mem_assoc`` PCI bus memory address association for targeting peer partner ”h]”(jˆ)�”}”(hŒ ``mem_assoc``”h]”jŽ)�”}”(hj:h]”hŒ mem_assoc”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.h”h´K hj4ubj¤)�”}”(hhh]”jþ)�”}”(hŒ=PCI bus memory address association for targeting peer partner”h]”hŒ=PCI bus memory address association for targeting peer partner”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jOh´K hjPubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jOh´K hj~ubj‚)�”}”(hŒZ``pref_assoc`` PCI bus prefetchable memory address association for targeting peer partner ”h]”(jˆ)�”}”(hŒ``pref_assoc``”h]”jŽ)�”}”(hjsh]”hŒ pref_assoc”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjqubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.h”h´K"hjmubj¤)�”}”(hhh]”jþ)�”}”(hŒJPCI bus prefetchable memory address association for targeting peer partner”h]”hŒJPCI bus prefetchable memory address association for targeting peer partner”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.h”h´K!hj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjmubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jˆh´K"hj~ubj‚)�”}”(hŒw``default_stream`` Endpoint uses this stream for all upstream TLPs regardless of address and RID association registers ”h]”(jˆ)�”}”(hŒ``default_stream``”h]”jŽ)�”}”(hj­h]”hŒdefault_stream”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.h”h´K$hj§ubj¤)�”}”(hhh]”jþ)�”}”(hŒcEndpoint uses this stream for all upstream TLPs regardless of address and RID association registers”h]”hŒcEndpoint uses this stream for all upstream TLPs regardless of address and RID association registers”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.h”h´K#hjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jÂh´K$hj~ubj‚)�”}”(hŒW``setup`` flag to track whether to run pci_ide_stream_teardown() for this partner slot ”h]”(jˆ)�”}”(hŒ ``setup``”h]”jŽ)�”}”(hjçh]”hŒsetup”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjåubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.h”h´K&hjáubj¤)�”}”(hhh]”jþ)�”}”(hŒLflag to track whether to run pci_ide_stream_teardown() for this partner slot”h]”hŒLflag to track whether to run pci_ide_stream_teardown() for this partner slot”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.h”h´K%hjýubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjáubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jüh´K&hj~ubj‚)�”}”(hŒO``enable`` flag whether to run pci_ide_stream_disable() for this partner slot ”h]”(jˆ)�”}”(hŒ ``enable``”h]”jŽ)�”}”(hj!h]”hŒenable”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.h”h´K(hjubj¤)�”}”(hhh]”jþ)�”}”(hŒBflag whether to run pci_ide_stream_disable() for this partner slot”h]”hŒBflag whether to run pci_ide_stream_disable() for this partner slot”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.h”h´K'hj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j6h´K(hj~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j|hj$ubjþ)�”}”(hŒ**Description**”h]”j3)�”}”(hj]h]”hŒ Description”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.h”h´K*hj$ubjþ)�”}”(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 ”…”�”}”(hjsh²hh³Nh´Nubj3)�”}”(hŒ **mem_assoc**”h]”hŒ mem_assoc”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hjsubhŒ and ”…”�”}”(hjsh²hh³Nh´Nubj3)�”}”(hŒ**pref_assoc**”h]”hŒ pref_assoc”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hjsubhŒÒ 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.”…”�”}”(hjsh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.h”h´K'hj$ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j"hjph²hh³Nh´Nubj‚)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŽŒpci_ide_regs (C struct)”Œc.pci_ide_regs”hNt”auh1j�hjph²hh³Nh´Nubj“)�”}”(hhh]”(j˜)�”}”(hŒ pci_ide_regs”h]”jž)�”}”(hŒstruct pci_ide_regs”h]”(j¤)�”}”(hj§h]”hŒstruct”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”j°ah"]”h$]”h&]”uh1j£hjÂh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.h”h´K/ubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhjÂh²hh³jÓh´K/ubjÇ)�”}”(hŒ pci_ide_regs”h]”jÍ)�”}”(hjÀh]”hŒ pci_ide_regs”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhjâubah}”(h]”h ]”(jßjàeh"]”h$]”h&]”hÅhÆuh1jÆhjÂh²hh³jÓh´K/ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjêˆuh1j�jëjìhj¾h²hh³jÓh´K/ubah}”(h]”j¹ah ]”(jðjñeh"]”h$]”h&]”jõˆjö)j÷huh1j—h³jÓh´K/hj»h²hubjù)�”}”(hhh]”jþ)�”}”(hŒ@Hardware register association settings for Selective IDE Streams”h]”hŒ@Hardware register association settings for Selective IDE Streams”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.h”h´K9hj h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jøhj»h²hh³jÓh´K/ubeh}”(h]”h ]”(jŒstruct”eh"]”h$]”h&]”jjjj jj j‰j ‰j!‰uh1j’h²hhjph³Nh´Nubj#)�”}”(hXC **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 initialized **Description** See pci_ide_stream_to_regs()”h]”(j))�”}”(hŒÚ**Definition**:: struct pci_ide_regs { u32 rid1; u32 rid2; struct { u32 assoc1; u32 assoc2; u32 assoc3; } addr[2]; int nr_addr; }; ”h]”(jþ)�”}”(hŒ**Definition**::”h]”(j3)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj0 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hj, ubhŒ:”…”�”}”(hj, h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.h”h´K=hj( ubjN)�”}”(hŒ³struct pci_ide_regs { u32 rid1; u32 rid2; struct { u32 assoc1; u32 assoc2; u32 assoc3; } addr[2]; int nr_addr; };”h]”hŒ³struct pci_ide_regs { u32 rid1; u32 rid2; struct { u32 assoc1; u32 assoc2; u32 assoc3; } addr[2]; int nr_addr; };”…”�”}”hjI sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jMh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.h”h´K?hj( ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j(h³jH h´K=hj$ ubjþ)�”}”(hŒ **Members**”h]”j3)�”}”(hj` h]”hŒMembers”…”�”}”(hjb h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hj^ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.h”h´KJhj$ ubj})�”}”(hhh]”(j‚)�”}”(hŒ(``rid1`` IDE RID Association Register 1 ”h]”(jˆ)�”}”(hŒ``rid1``”h]”jŽ)�”}”(hj h]”hŒrid1”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj} ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.h”h´Khj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjë ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j h´K?hjv ubj‚)�”}”(hŒ>``nr_addr`` Number of address association blocks initialized ”h]”(jˆ)�”}”(hŒ ``nr_addr``”h]”jŽ)�”}”(hj+ h]”hŒnr_addr”…”�”}”(hj- h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj) ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.h”h´KAhj% ubj¤)�”}”(hhh]”jþ)�”}”(hŒ0Number of address association blocks initialized”h]”hŒ0Number of address association blocks initialized”…”�”}”(hjD h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.h”h´K@hjA ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj% ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j@ h´KAhjv ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j|hj$ ubjþ)�”}”(hŒ**Description**”h]”j3)�”}”(hjg h]”hŒ Description”…”�”}”(hji h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hje ubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.h”h´KChj$ ubjþ)�”}”(hŒSee pci_ide_stream_to_regs()”h]”hŒSee pci_ide_stream_to_regs()”…”�”}”(hj} h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.h”h´K@hj$ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j"hjph²hh³Nh´Nubj‚)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŽŒpci_ide (C struct)”Œ c.pci_ide”hNt”auh1j�hjph²hh³Nh´Nubj“)�”}”(hhh]”(j˜)�”}”(hŒpci_ide”h]”jž)�”}”(hŒstruct pci_ide”h]”(j¤)�”}”(hj§h]”hŒstruct”…”�”}”(hj¬ h²hh³Nh´Nubah}”(h]”h ]”j°ah"]”h$]”h&]”uh1j£hj¨ h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.h”h´KEubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjº h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhj¨ h²hh³j¹ h´KEubjÇ)�”}”(hŒpci_ide”h]”jÍ)�”}”(hj¦ h]”hŒpci_ide”…”�”}”(hjÌ h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhjÈ ubah}”(h]”h ]”(jßjàeh"]”h$]”h&]”hÅhÆuh1jÆhj¨ h²hh³j¹ h´KEubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjêˆuh1j�jëjìhj¤ h²hh³j¹ h´KEubah}”(h]”jŸ ah ]”(jðjñeh"]”h$]”h&]”jõˆjö)j÷huh1j—h³j¹ h´KEhj¡ h²hubjù)�”}”(hhh]”jþ)�”}”(hŒ$PCIe Selective IDE Stream descriptor”h]”hŒ$PCIe Selective IDE Stream descriptor”…”�”}”(hjî h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.h”h´KOhjë h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jøhj¡ h²hh³j¹ h´KEubeh}”(h]”h ]”(jŒstruct”eh"]”h$]”h&]”jjjj jj j‰j ‰j!‰uh1j’h²hhjph³Nh´Nubj#)�”}”(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 sysfs **Description** Negative **stream_id** values indicate "uninitialized" on the expectation that with TSM established IDE the TSM owns the stream_id allocation.”h]”(j))�”}”(hŒÕ**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; }; ”h]”(jþ)�”}”(hŒ**Definition**::”h]”(j3)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hj ubhŒ:”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.h”h´KShj ubjN)�”}”(hŒ´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; };”h]”hŒ´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; };”…”�”}”hj/ sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jMh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.h”h´KUhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j(h³j. h´KShj ubjþ)�”}”(hŒ **Members**”h]”j3)�”}”(hjF h]”hŒMembers”…”�”}”(hjH h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hjD ubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.h”h´K]hj ubj})�”}”(hhh]”(j‚)�”}”(hŒ3``pdev`` PCIe Endpoint in the pci_ide_partner pair ”h]”(jˆ)�”}”(hŒ``pdev``”h]”jŽ)�”}”(hje h]”hŒpdev”…”�”}”(hjg h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjc ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.h”h´KQhj_ ubj¤)�”}”(hhh]”jþ)�”}”(hŒ)PCIe Endpoint in the pci_ide_partner pair”h]”hŒ)PCIe Endpoint in the pci_ide_partner pair”…”�”}”(hj~ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jz h´KQhj{ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj_ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jz h´KQhj\ ubj‚)�”}”(hŒ!``partner`` per-partner settings ”h]”(jˆ)�”}”(hŒ ``partner``”h]”jŽ)�”}”(hjž h]”hŒpartner”…”�”}”(hj  h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjœ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.h”h´KRhj˜ ubj¤)�”}”(hhh]”jþ)�”}”(hŒper-partner settings”h]”hŒper-partner settings”…”�”}”(hj· h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j³ h´KRhj´ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj˜ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j³ h´KRhj\ ubj‚)�”}”(hŒJ``host_bridge_stream`` allocated from host bridge **ide_stream_ida** pool ”h]”(jˆ)�”}”(hŒ``host_bridge_stream``”h]”jŽ)�”}”(hj× h]”hŒhost_bridge_stream”…”�”}”(hjÙ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÕ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.h”h´KShjÑ ubj¤)�”}”(hhh]”jþ)�”}”(hŒ2allocated from host bridge **ide_stream_ida** pool”h]”(hŒallocated from host bridge ”…”�”}”(hjð h²hh³Nh´Nubj3)�”}”(hŒ**ide_stream_ida**”h]”hŒide_stream_ida”…”�”}”(hjø h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hjð ubhŒ pool”…”�”}”(hjð h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jì h´KShjí ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÑ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jì h´KShj\ ubj‚)�”}”(hŒ=``stream_id`` unique Stream ID (within Partner Port pairing) ”h]”(jˆ)�”}”(hŒ ``stream_id``”h]”jŽ)�”}”(hj" h]”hŒ stream_id”…”�”}”(hj$ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.h”h´KThj ubj¤)�”}”(hhh]”jþ)�”}”(hŒ.unique Stream ID (within Partner Port pairing)”h]”hŒ.unique Stream ID (within Partner Port pairing)”…”�”}”(hj; h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j7 h´KThj8 ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j7 h´KThj\ ubj‚)�”}”(hŒ@``name`` name of the established Selective IDE Stream in sysfs ”h]”(jˆ)�”}”(hŒ``name``”h]”jŽ)�”}”(hj[ h]”hŒname”…”�”}”(hj] h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjY ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.h”h´KVhjU ubj¤)�”}”(hhh]”jþ)�”}”(hŒ5name of the established Selective IDE Stream in sysfs”h]”hŒ5name of the established Selective IDE Stream in sysfs”…”�”}”(hjt h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.h”h´KUhjq ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjU ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jp h´KVhj\ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j|hj ubjþ)�”}”(hŒ**Description**”h]”j3)�”}”(hj— h]”hŒ Description”…”�”}”(hj™ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hj• ubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.h”h´KXhj ubjþ)�”}”(hŒŽNegative **stream_id** values indicate "uninitialized" on the expectation that with TSM established IDE the TSM owns the stream_id allocation.”h]”(hŒ Negative ”…”�”}”(hj­ h²hh³Nh´Nubj3)�”}”(hŒ **stream_id**”h]”hŒ stream_id”…”�”}”(hjµ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hj­ ubhŒ| values indicate “uninitializedâ€� on the expectation that with TSM established IDE the TSM owns the stream_id allocation.”…”�”}”(hj­ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:97: ./include/linux/pci-ide.h”h´KUhj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j"hjph²hh³Nh´Nubj‚)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŽŒ!pci_ide_stream_alloc (C function)”Œc.pci_ide_stream_alloc”hNt”auh1j�hjph²hh³Nh´Nubj“)�”}”(hhh]”(j˜)�”}”(hŒjj>j‰j ‰j!‰uh1j’h²hhjph³Nh´Nubj#)�”}”(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]”j3)�”}”(hjHh]”hŒ Parameters”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hjFubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.c”h´M¡hjBubj})�”}”(hhh]”(j‚)�”}”(hŒ\``struct pci_dev *pdev`` PCIe device object for either a Root Port or Endpoint Partner Port ”h]”(jˆ)�”}”(hŒ``struct pci_dev *pdev``”h]”jŽ)�”}”(hjgh]”hŒstruct pci_dev *pdev”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjeubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.c”h´Mžhjaubj¤)�”}”(hhh]”jþ)�”}”(hŒBPCIe device object for either a Root Port or Endpoint Partner Port”h]”hŒBPCIe device object for either a Root Port or Endpoint Partner Port”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j|h´Mžhj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjaubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j|h´Mžhj^ubj‚)�”}”(hŒE``struct pci_ide *ide`` registered and setup IDE settings descriptor ”h]”(jˆ)�”}”(hŒ``struct pci_ide *ide``”h]”jŽ)�”}”(hj h]”hŒstruct pci_ide *ide”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjžubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.c”h´MŸhjšubj¤)�”}”(hhh]”jþ)�”}”(hŒ,registered and setup IDE settings descriptor”h]”hŒ,registered and setup IDE settings descriptor”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jµh´MŸhj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjšubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jµh´MŸhj^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j|hjBubjþ)�”}”(hŒ**Description**”h]”j3)�”}”(hjÛh]”hŒ Description”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.c”h´M¡hjBubjþ)�”}”(hŒLActivate the stream by writing to the Selective IDE Stream Control Register.”h]”hŒLActivate the stream by writing to the Selective IDE Stream Control Register.”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.c”h´M hjBubjþ)�”}”(hŒª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.”h]”hŒ²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.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.c”h´M¤hjBubjþ)�”}”(hŒACaller is responsible to clear the enable bit in the -ENXIO case.”h]”hŒACaller is responsible to clear the enable bit in the -ENXIO case.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.c”h´M¨hjBubjþ)�”}”(hŒ **Return**”h]”j3)�”}”(hj h]”hŒReturn”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.c”h´MªhjBubjþ)�”}”(hŒ•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]”(hŒL0 if the stream successfully entered the “secureâ€� state, and -EINVAL if ”…”�”}”(hj6h²hh³Nh´Nubj3)�”}”(hŒ**ide**”h]”hŒide”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hj6ubhŒF is invalid, and -ENXIO if the stream fails to enter the secure state.”…”�”}”(hj6h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.c”h´M¤hjBubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j"hjph²hh³Nh´Nubj‚)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŽŒ#pci_ide_stream_disable (C function)”Œc.pci_ide_stream_disable”hNt”auh1j�hjph²hh³Nh´Nubj“)�”}”(hhh]”(j˜)�”}”(hŒGvoid pci_ide_stream_disable (struct pci_dev *pdev, struct pci_ide *ide)”h]”jž)�”}”(hŒFvoid pci_ide_stream_disable(struct pci_dev *pdev, struct pci_ide *ide)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjsh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.c”h´MÅubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhjsh²hh³j…h´MÅubjÇ)�”}”(hŒpci_ide_stream_disable”h]”jÍ)�”}”(hŒpci_ide_stream_disable”h]”hŒpci_ide_stream_disable”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhj”ubah}”(h]”h ]”(jßjàeh"]”h$]”h&]”hÅhÆuh1jÆhjsh²hh³j…h´MÅubjm )�”}”(hŒ+(struct pci_dev *pdev, struct pci_ide *ide)”h]”(js )�”}”(hŒstruct pci_dev *pdev”h]”(j¤)�”}”(hj§h]”hŒstruct”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”j°ah"]”h$]”h&]”uh1j£hj°ubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhj°ubh)�”}”(hhh]”jÍ)�”}”(hŒpci_dev”h]”hŒpci_dev”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhjÏubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”j# Œ reftarget”jÔŒmodname”NŒ classname”Nj' j* )�”}”j- ]”j0 )�”}”j# jšsbŒc.pci_ide_stream_disable”†”asbuh1hhj°ubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhj°ubjE )�”}”(hjH h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jQ ah"]”h$]”h&]”uh1jD hj°ubjÍ)�”}”(hŒpdev”h]”hŒpdev”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhj°ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jr hj¬ubjs )�”}”(hŒstruct pci_ide *ide”h]”(j¤)�”}”(hj§h]”hŒstruct”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”j°ah"]”h$]”h&]”uh1j£hj"ubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhj"ubh)�”}”(hhh]”jÍ)�”}”(hŒpci_ide”h]”hŒpci_ide”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhjAubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”j# Œ reftarget”jFŒmodname”NŒ classname”Nj' j* )�”}”j- ]”jîŒc.pci_ide_stream_disable”†”asbuh1hhj"ubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhj"ubjE )�”}”(hjH h]”hŒ*”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”jQ ah"]”h$]”h&]”uh1jD hj"ubjÍ)�”}”(hŒide”h]”hŒide”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhj"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jr hj¬ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jl hjsh²hh³j…h´MÅubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjêˆuh1j�jëjìhjoh²hh³j…h´MÅubah}”(h]”jjah ]”(jðjñeh"]”h$]”h&]”jõˆjö)j÷huh1j—h³j…h´MÅhjlh²hubjù)�”}”(hhh]”jþ)�”}”(hŒdisable a Selective IDE Stream”h]”hŒdisable a Selective IDE Stream”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.c”h´MÅhj¤h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jøhjlh²hh³j…h´MÅubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jjjj¿jj¿j‰j ‰j!‰uh1j’h²hhjph³Nh´Nubj#)�”}”(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]”j3)�”}”(hjÉh]”hŒ Parameters”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hjÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.c”h´MÉhjÃubj})�”}”(hhh]”(j‚)�”}”(hŒ\``struct pci_dev *pdev`` PCIe device object for either a Root Port or Endpoint Partner Port ”h]”(jˆ)�”}”(hŒ``struct pci_dev *pdev``”h]”jŽ)�”}”(hjèh]”hŒstruct pci_dev *pdev”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjæubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.c”h´MÆhjâubj¤)�”}”(hhh]”jþ)�”}”(hŒBPCIe device object for either a Root Port or Endpoint Partner Port”h]”hŒBPCIe device object for either a Root Port or Endpoint Partner Port”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jýh´MÆhjþubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjâubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jýh´MÆhjßubj‚)�”}”(hŒE``struct pci_ide *ide`` registered and setup IDE settings descriptor ”h]”(jˆ)�”}”(hŒ``struct pci_ide *ide``”h]”jŽ)�”}”(hj!h]”hŒstruct pci_ide *ide”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.c”h´MÇhjubj¤)�”}”(hhh]”jþ)�”}”(hŒ,registered and setup IDE settings descriptor”h]”hŒ,registered and setup IDE settings descriptor”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j6h´MÇhj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j6h´MÇhjßubeh}”(h]”h ]”h"]”h$]”h&]”uh1j|hjÃubjþ)�”}”(hŒ**Description**”h]”j3)�”}”(hj\h]”hŒ Description”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hjZubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.c”h´MÉhjÃubjþ)�”}”(hŒYClear the Selective IDE Stream Control Register, but leave all other registers untouched.”h]”hŒYClear the Selective IDE Stream Control Register, but leave all other registers untouched.”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.c”h´MÈhjÃubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j"hjph²hh³Nh´Nubj‚)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŽŒ#pci_ide_set_nr_streams (C function)”Œc.pci_ide_set_nr_streams”hNt”auh1j�hjph²hh³Nh´Nubj“)�”}”(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ý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj�h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.c”h´Mubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhj�h²hh³j¯h´MubjÇ)�”}”(hŒpci_ide_set_nr_streams”h]”jÍ)�”}”(hŒpci_ide_set_nr_streams”h]”hŒpci_ide_set_nr_streams”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhj¾ubah}”(h]”h ]”(jßjàeh"]”h$]”h&]”hÅhÆuh1jÆhj�h²hh³j¯h´Mubjm )�”}”(hŒ$(struct pci_host_bridge *hb, u16 nr)”h]”(js )�”}”(hŒstruct pci_host_bridge *hb”h]”(j¤)�”}”(hj§h]”hŒstruct”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”j°ah"]”h$]”h&]”uh1j£hjÚubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhjÚubh)�”}”(hhh]”jÍ)�”}”(hŒpci_host_bridge”h]”hŒpci_host_bridge”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhjùubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”j# Œ reftarget”jþŒmodname”NŒ classname”Nj' j* )�”}”j- ]”j0 )�”}”j# jÄsbŒc.pci_ide_set_nr_streams”†”asbuh1hhjÚubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhjÚubjE )�”}”(hjH h]”hŒ*”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jQ ah"]”h$]”h&]”uh1jD hjÚubjÍ)�”}”(hŒhb”h]”hŒhb”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhjÚubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jr hjÖubjs )�”}”(hŒu16 nr”h]”(h)�”}”(hhh]”jÍ)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhjPubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”j# Œ reftarget”jUŒmodname”NŒ classname”Nj' j* )�”}”j- ]”jŒc.pci_ide_set_nr_streams”†”asbuh1hhjLubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhjLubjÍ)�”}”(hŒnr”h]”hŒnr”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhjLubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jr hjÖubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jl hj�h²hh³j¯h´Mubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjêˆuh1j�jëjìhj™h²hh³j¯h´Mubah}”(h]”j”ah ]”(jðjñeh"]”h$]”h&]”jõˆjö)j÷huh1j—h³j¯h´Mhj–h²hubjù)�”}”(hhh]”jþ)�”}”(hŒ-sets size of the pool of IDE Stream resources”h]”hŒ-sets size of the pool of IDE Stream resources”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.c”h´Mhj¦h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jøhj–h²hh³j¯h´Mubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jjjjÁjjÁj‰j ‰j!‰uh1j’h²hhjph³Nh´Nubj#)�”}”(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]”j3)�”}”(hjËh]”hŒ Parameters”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.c”h´MhjÅubj})�”}”(hhh]”(j‚)�”}”(hŒH``struct pci_host_bridge *hb`` host bridge boundary for the stream pool ”h]”(jˆ)�”}”(hŒ``struct pci_host_bridge *hb``”h]”jŽ)�”}”(hjêh]”hŒstruct pci_host_bridge *hb”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjèubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.c”h´Mhjäubj¤)�”}”(hhh]”jþ)�”}”(hŒ(host bridge boundary for the stream pool”h]”hŒ(host bridge boundary for the stream pool”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jÿh´Mhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjäubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jÿh´Mhjáubj‚)�”}”(hŒ``u16 nr`` number of streams ”h]”(jˆ)�”}”(hŒ ``u16 nr``”h]”jŽ)�”}”(hj# h]”hŒu16 nr”…”�”}”(hj% h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj! ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.c”h´Mhj ubj¤)�”}”(hhh]”jþ)�”}”(hŒnumber of streams”h]”hŒnumber of streams”…”�”}”(hj< h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j8 h´Mhj9 ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j8 h´Mhjáubeh}”(h]”h ]”h"]”h$]”h&]”uh1j|hjÅubjþ)�”}”(hŒ**Description**”h]”j3)�”}”(hj^ h]”hŒ Description”…”�”}”(hj` h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hj\ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.c”h´MhjÅubjþ)�”}”(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.”…”�”}”(hjt h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.c”h´MhjÅubjþ)�”}”(hŒž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]”hŒ¢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.”…”�”}”(hjƒ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:100: ./drivers/pci/ide.c”h´MhjÅubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j"hjph²hh³Nh´Nubj‚)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŽŒpci_tdi (C struct)”Œ c.pci_tdi”hNt”auh1j�hjph²hh³Nh´Nubj“)�”}”(hhh]”(j˜)�”}”(hŒpci_tdi”h]”jž)�”}”(hŒstruct pci_tdi”h]”(j¤)�”}”(hj§h]”hŒstruct”…”�”}”(hj² h²hh³Nh´Nubah}”(h]”h ]”j°ah"]”h$]”h&]”uh1j£hj® h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´Kubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀ h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhj® h²hh³j¿ h´KubjÇ)�”}”(hŒpci_tdi”h]”jÍ)�”}”(hj¬ h]”hŒpci_tdi”…”�”}”(hjÒ h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhjÎ ubah}”(h]”h ]”(jßjàeh"]”h$]”h&]”hÅhÆuh1jÆhj® h²hh³j¿ h´Kubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjêˆuh1j�jëjìhjª h²hh³j¿ h´Kubah}”(h]”j¥ ah ]”(jðjñeh"]”h$]”h&]”jõˆjö)j÷huh1j—h³j¿ h´Khj§ h²hubjù)�”}”(hhh]”jþ)�”}”(hŒ+Core TEE I/O Device Interface (TDI) context”h]”hŒ+Core TEE I/O Device Interface (TDI) context”…”�”}”(hjô h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´KQhjñ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jøhj§ h²hh³j¿ h´Kubeh}”(h]”h ]”(jŒstruct”eh"]”h$]”h&]”jjjj !jj !j‰j ‰j!‰uh1j’h²hhjph³Nh´Nubj#)�”}”(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 DSM”h]”(j))�”}”(hŒu**Definition**:: struct pci_tdi { struct pci_dev *pdev; struct kvm *kvm; u32 tdi_id; }; ”h]”(jþ)�”}”(hŒ**Definition**::”h]”(j3)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hj!ubhŒ:”…”�”}”(hj!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´KUhj!ubjN)�”}”(hŒXstruct pci_tdi { struct pci_dev *pdev; struct kvm *kvm; u32 tdi_id; };”h]”hŒXstruct pci_tdi { struct pci_dev *pdev; struct kvm *kvm; u32 tdi_id; };”…”�”}”hj5!sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jMh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´KWhj!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j(h³j4!h´KUhj!ubjþ)�”}”(hŒ **Members**”h]”j3)�”}”(hjL!h]”hŒMembers”…”�”}”(hjN!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hjJ!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´K]hj!ubj})�”}”(hhh]”(j‚)�”}”(hŒ4``pdev`` host side representation of guest-side TDI ”h]”(jˆ)�”}”(hŒ``pdev``”h]”jŽ)�”}”(hjk!h]”hŒpdev”…”�”}”(hjm!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hji!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´KShje!ubj¤)�”}”(hhh]”jþ)�”}”(hŒ*host side representation of guest-side TDI”h]”hŒ*host side representation of guest-side TDI”…”�”}”(hj„!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j€!h´KShj�!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hje!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j€!h´KShjb!ubj‚)�”}”(hŒ$``kvm`` TEE VM context of bound TDI ”h]”(jˆ)�”}”(hŒ``kvm``”h]”jŽ)�”}”(hj¤!h]”hŒkvm”…”�”}”(hj¦!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¢!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´KThjž!ubj¤)�”}”(hhh]”jþ)�”}”(hŒTEE VM context of bound TDI”h]”hŒTEE VM context of bound TDI”…”�”}”(hj½!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j¹!h´KThjº!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjž!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j¹!h´KThjb!ubj‚)�”}”(hŒP``tdi_id`` Identifier (virtual BDF) for the TDI as referenced by the TSM and DSM”h]”(jˆ)�”}”(hŒ ``tdi_id``”h]”jŽ)�”}”(hjÝ!h]”hŒtdi_id”…”�”}”(hjß!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÛ!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´KThj×!ubj¤)�”}”(hhh]”jþ)�”}”(hŒEIdentifier (virtual BDF) for the TDI as referenced by the TSM and DSM”h]”hŒEIdentifier (virtual BDF) for the TDI as referenced by the TSM and DSM”…”�”}”(hjö!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´KUhjó!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj×!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jò!h´KThjb!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j|hj!ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j"hjph²hh³Nh´Nubj‚)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŽŒpci_tsm (C struct)”Œ c.pci_tsm”hNt”auh1j�hjph²hh³Nh´Nubj“)�”}”(hhh]”(j˜)�”}”(hŒpci_tsm”h]”jž)�”}”(hŒstruct pci_tsm”h]”(j¤)�”}”(hj§h]”hŒstruct”…”�”}”(hj7"h²hh³Nh´Nubah}”(h]”h ]”j°ah"]”h$]”h&]”uh1j£hj3"h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´K[ubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjE"h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhj3"h²hh³jD"h´K[ubjÇ)�”}”(hŒpci_tsm”h]”jÍ)�”}”(hj1"h]”hŒpci_tsm”…”�”}”(hjW"h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhjS"ubah}”(h]”h ]”(jßjàeh"]”h$]”h&]”hÅhÆuh1jÆhj3"h²hh³jD"h´K[ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjêˆuh1j�jëjìhj/"h²hh³jD"h´K[ubah}”(h]”j*"ah ]”(jðjñeh"]”h$]”h&]”jõˆjö)j÷huh1j—h³jD"h´K[hj,"h²hubjù)�”}”(hhh]”jþ)�”}”(hŒ*Core TSM context for a given PCIe endpoint”h]”hŒ*Core TSM context for a given PCIe endpoint”…”�”}”(hjy"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´K]hjv"h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jøhj,"h²hh³jD"h´K[ubeh}”(h]”h ]”(jŒstruct”eh"]”h$]”h&]”jjjj‘"jj‘"j‰j ‰j!‰uh1j’h²hhjph³Nh´Nubj#)�”}”(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 operation **Description** This structure is wrapped by low level TSM driver data and returned by probe()/lock(), it is freed by the corresponding remove()/unlock(). For 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]”(j))�”}”(hŒ§**Definition**:: struct pci_tsm { struct pci_dev *pdev; struct pci_dev *dsm_dev; struct tsm_dev *tsm_dev; struct pci_tdi *tdi; }; ”h]”(jþ)�”}”(hŒ**Definition**::”h]”(j3)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj¡"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hj�"ubhŒ:”…”�”}”(hj�"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´Kahj™"ubjN)�”}”(hŒˆstruct pci_tsm { struct pci_dev *pdev; struct pci_dev *dsm_dev; struct tsm_dev *tsm_dev; struct pci_tdi *tdi; };”h]”hŒˆstruct 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&]”hÅhÆuh1jMh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´Kchj™"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j(h³j¹"h´Kahj•"ubjþ)�”}”(hŒ **Members**”h]”j3)�”}”(hjÑ"h]”hŒMembers”…”�”}”(hjÓ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hjÏ"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´Kjhj•"ubj})�”}”(hhh]”(j‚)�”}”(hŒL``pdev`` Back ref to device function, distinguishes type of pci_tsm context ”h]”(jˆ)�”}”(hŒ``pdev``”h]”jŽ)�”}”(hjð"h]”hŒpdev”…”�”}”(hjò"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjî"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´K_hjê"ubj¤)�”}”(hhh]”jþ)�”}”(hŒBBack ref to device function, distinguishes type of pci_tsm context”h]”hŒBBack ref to device function, distinguishes type of pci_tsm context”…”�”}”(hj #h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j#h´K_hj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjê"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j#h´K_hjç"ubj‚)�”}”(hŒH``dsm_dev`` PCI Device Security Manager for link operations on **pdev** ”h]”(jˆ)�”}”(hŒ ``dsm_dev``”h]”jŽ)�”}”(hj)#h]”hŒdsm_dev”…”�”}”(hj+#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj'#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´K`hj##ubj¤)�”}”(hhh]”jþ)�”}”(hŒ;PCI Device Security Manager for link operations on **pdev**”h]”(hŒ3PCI Device Security Manager for link operations on ”…”�”}”(hjB#h²hh³Nh´Nubj3)�”}”(hŒ**pdev**”h]”hŒpdev”…”�”}”(hjJ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hjB#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j>#h´K`hj?#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj##ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j>#h´K`hjç"ubj‚)�”}”(hŒl``tsm_dev`` PCI TEE Security Manager device for Link Confidentiality or Device Function Security operations ”h]”(jˆ)�”}”(hŒ ``tsm_dev``”h]”jŽ)�”}”(hjp#h]”hŒtsm_dev”…”�”}”(hjr#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjn#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´Kbhjj#ubj¤)�”}”(hhh]”jþ)�”}”(hŒ_PCI TEE Security Manager device for Link Confidentiality or Device Function Security operations”h]”hŒ_PCI TEE Security Manager device for Link Confidentiality or Device Function Security operations”…”�”}”(hj‰#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´Kahj†#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjj#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j…#h´Kbhjç"ubj‚)�”}”(hŒ@``tdi`` TDI context established by the **bind** link operation ”h]”(jˆ)�”}”(hŒ``tdi``”h]”jŽ)�”}”(hjª#h]”hŒtdi”…”�”}”(hj¬#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¨#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´Kdhj¤#ubj¤)�”}”(hhh]”jþ)�”}”(hŒ6TDI context established by the **bind** link operation”h]”(hŒTDI context established by the ”…”�”}”(hjÃ#h²hh³Nh´Nubj3)�”}”(hŒ**bind**”h]”hŒbind”…”�”}”(hjË#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hjÃ#ubhŒ link operation”…”�”}”(hjÃ#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´KchjÀ#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj¤#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j¿#h´Kdhjç"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j|hj•"ubjþ)�”}”(hŒ**Description**”h]”j3)�”}”(hjø#h]”hŒ Description”…”�”}”(hjú#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hjö#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´Kfhj•"ubjþ)�”}”(hŒŠThis structure is wrapped by low level TSM driver data and returned by probe()/lock(), it is freed by the corresponding remove()/unlock().”h]”hŒŠThis structure is wrapped by low level TSM driver data and returned by probe()/lock(), it is freed by the corresponding remove()/unlock().”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´Kchj•"ubjþ)�”}”(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$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´Kfhj•"ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j"hjph²hh³Nh´Nubj‚)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŽŒpci_tsm_pf0 (C struct)”Œ c.pci_tsm_pf0”hNt”auh1j�hjph²hh³Nh´Nubj“)�”}”(hhh]”(j˜)�”}”(hŒ pci_tsm_pf0”h]”jž)�”}”(hŒstruct pci_tsm_pf0”h]”(j¤)�”}”(hj§h]”hŒstruct”…”�”}”(hjL$h²hh³Nh´Nubah}”(h]”h ]”j°ah"]”h$]”h&]”uh1j£hjH$h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´Kpubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ$h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhjH$h²hh³jY$h´KpubjÇ)�”}”(hŒ pci_tsm_pf0”h]”jÍ)�”}”(hjF$h]”hŒ pci_tsm_pf0”…”�”}”(hjl$h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhjh$ubah}”(h]”h ]”(jßjàeh"]”h$]”h&]”hÅhÆuh1jÆhjH$h²hh³jY$h´Kpubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjêˆuh1j�jëjìhjD$h²hh³jY$h´Kpubah}”(h]”j?$ah ]”(jðjñeh"]”h$]”h&]”jõˆjö)j÷huh1j—h³jY$h´KphjA$h²hubjù)�”}”(hhh]”jþ)�”}”(hŒ&Physical Function 0 TDISP link context”h]”hŒ&Physical Function 0 TDISP link context”…”�”}”(hjŽ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´Kvhj‹$h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jøhjA$h²hh³jY$h´Kpubeh}”(h]”h ]”(jŒstruct”eh"]”h$]”h&]”jjjj¦$jj¦$j‰j ‰j!‰uh1j’h²hhjph³Nh´Nubj#)�”}”(hX9 **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 mailbox”h]”(j))�”}”(hŒ�**Definition**:: struct pci_tsm_pf0 { struct pci_tsm base_tsm; struct mutex lock; struct pci_doe_mb *doe_mb; }; ”h]”(jþ)�”}”(hŒ**Definition**::”h]”(j3)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj¶$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hj²$ubhŒ:”…”�”}”(hj²$h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´Kzhj®$ubjN)�”}”(hŒpstruct pci_tsm_pf0 { struct pci_tsm base_tsm; struct mutex lock; struct pci_doe_mb *doe_mb; };”h]”hŒpstruct pci_tsm_pf0 { struct pci_tsm base_tsm; struct mutex lock; struct pci_doe_mb *doe_mb; };”…”�”}”hjÏ$sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jMh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´K|hj®$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j(h³jÎ$h´Kzhjª$ubjþ)�”}”(hŒ **Members**”h]”j3)�”}”(hjæ$h]”hŒMembers”…”�”}”(hjè$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hjä$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´K‚hjª$ubj})�”}”(hhh]”(j‚)�”}”(hŒ(``base_tsm`` generic core "tsm" context ”h]”(jˆ)�”}”(hŒ ``base_tsm``”h]”jŽ)�”}”(hj%h]”hŒbase_tsm”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´Kxhjÿ$ubj¤)�”}”(hhh]”jþ)�”}”(hŒgeneric core "tsm" context”h]”hŒgeneric core “tsmâ€� context”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j%h´Kxhj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÿ$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j%h´Kxhjü$ubj‚)�”}”(hŒ6``lock`` mutual exclustion for pci_tsm_ops invocation ”h]”(jˆ)�”}”(hŒ``lock``”h]”jŽ)�”}”(hj>%h]”hŒlock”…”�”}”(hj@%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj<%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´Kyhj8%ubj¤)�”}”(hhh]”jþ)�”}”(hŒ,mutual exclustion for pci_tsm_ops invocation”h]”hŒ,mutual exclustion for pci_tsm_ops invocation”…”�”}”(hjW%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jS%h´KyhjT%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj8%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jS%h´Kyhjü$ubj‚)�”}”(hŒ,``doe_mb`` PCIe Data Object Exchange mailbox”h]”(jˆ)�”}”(hŒ ``doe_mb``”h]”jŽ)�”}”(hjw%h]”hŒdoe_mb”…”�”}”(hjy%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hju%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´Kyhjq%ubj¤)�”}”(hhh]”jþ)�”}”(hŒ!PCIe Data Object Exchange mailbox”h]”hŒ!PCIe Data Object Exchange mailbox”…”�”}”(hj�%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´Kzhj�%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjq%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jŒ%h´Kyhjü$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j|hjª$ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j"hjph²hh³Nh´Nubj‚)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŽŒpci_tsm_req_scope (C enum)”Œc.pci_tsm_req_scope”hNt”auh1j�hjph²hh³Nh´Nubj“)�”}”(hhh]”(j˜)�”}”(hŒpci_tsm_req_scope”h]”jž)�”}”(hŒenum pci_tsm_req_scope”h]”(j¤)�”}”(hŒenum”h]”hŒenum”…”�”}”(hjÑ%h²hh³Nh´Nubah}”(h]”h ]”j°ah"]”h$]”h&]”uh1j£hjÍ%h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´K€ubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjà%h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhjÍ%h²hh³jß%h´K€ubjÇ)�”}”(hŒpci_tsm_req_scope”h]”jÍ)�”}”(hjË%h]”hŒpci_tsm_req_scope”…”�”}”(hjò%h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhjî%ubah}”(h]”h ]”(jßjàeh"]”h$]”h&]”hÅhÆuh1jÆhjÍ%h²hh³jß%h´K€ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjêˆuh1j�jëjìhjÉ%h²hh³jß%h´K€ubah}”(h]”jÄ%ah ]”(jðjñeh"]”h$]”h&]”jõˆjö)j÷huh1j—h³jß%h´K€hjÆ%h²hubjù)�”}”(hhh]”jþ)�”}”(hŒ.Scope of guest requests to be validated by TSM”h]”hŒ.Scope of guest requests to be validated by TSM”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´K£hj&h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jøhjÆ%h²hh³jß%h´K€ubeh}”(h]”h ]”(jŒenum”eh"]”h$]”h&]”jjjj,&jj,&j‰j ‰j!‰uh1j’h²hhjph³Nh´Nubj#)�”}”(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. **Description** 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]”(j))�”}”(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]”j3)�”}”(hj:&h]”hŒ Constants”…”�”}”(hj<&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hj8&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´K§hj4&ubj})�”}”(hhh]”(j‚)�”}”(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Ž)�”}”(hjY&h]”hŒPCI_TSM_REQ_INFO”…”�”}”(hj[&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjW&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´K¬hjS&ubj¤)�”}”(hhh]”jþ)�”}”(hŒ±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]”hŒ±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.”…”�”}”(hjr&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´Kªhjo&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjS&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jn&h´K¬hjP&ubj‚)�”}”(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Ž)�”}”(hj“&h]”hŒPCI_TSM_REQ_STATE_CHANGE”…”�”}”(hj•&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‘&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´K³hj�&ubj¤)�”}”(hhh]”jþ)�”}”(hŒù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]”hŒù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.”…”�”}”(hj¬&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´K¯hj©&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj�&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j¨&h´K³hjP&ubj‚)�”}”(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]”hŒPCI_TSM_REQ_DEBUG_READ”…”�”}”(hjÏ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjË&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”•ƒáh´K¹hjÇ&ubj¤)�”}”(hhh]”(jþ)�”}”(hŒ'Read-only request for debug information”h]”hŒ'Read-only request for debug information”…”�”}”(hjæ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´K¶hjã&ubjþ)�”}”(hŒ„A method to facilitate TVM information retrieval outside of typical TDISP operational requirements. No device secrets are permitted.”h]”hŒ„A method to facilitate TVM information retrieval outside of typical TDISP operational requirements. No device secrets are permitted.”…”�”}”(hjõ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´K¸hjã&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÇ&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jâ&h´K¹hjP&ubj‚)�”}”(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]”hŒPCI_TSM_REQ_DEBUG_WRITE”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´KÀhj'ubj¤)�”}”(hhh]”(jþ)�”}”(hŒ'Device state changes for debug purposes”h]”hŒ'Device state changes for debug purposes”…”�”}”(hj/'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´K¼hj,'ubjþ)�”}”(hŒ¢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]”hŒ¢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.”…”�”}”(hj>'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´K¾hj,'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j+'h´KÀhjP&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j|hj4&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j(h³jO&h´K§hj0&ubjþ)�”}”(hŒ**Description**”h]”j3)�”}”(hjg'h]”hŒ Description”…”�”}”(hji'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hje'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´KÂhj0&ubjþ)�”}”(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}'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:103: ./include/linux/pci-tsm.h”h´K¤hj0&ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j"hjph²hh³Nh´Nubj‚)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŽŒpci_tsm_bind (C function)”Œc.pci_tsm_bind”hNt”auh1j�hjph²hh³Nh´Nubj“)�”}”(hhh]”(j˜)�”}”(hŒDint pci_tsm_bind (struct pci_dev *pdev, struct kvm *kvm, u32 tdi_id)”h]”jž)�”}”(hŒCint pci_tsm_bind(struct pci_dev *pdev, struct kvm *kvm, u32 tdi_id)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj¬'h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj¨'h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´MKubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»'h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhj¨'h²hh³jº'h´MKubjÇ)�”}”(hŒ pci_tsm_bind”h]”jÍ)�”}”(hŒ pci_tsm_bind”h]”hŒ pci_tsm_bind”…”�”}”(hjÍ'h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhjÉ'ubah}”(h]”h ]”(jßjàeh"]”h$]”h&]”hÅhÆuh1jÆhj¨'h²hh³jº'h´MKubjm )�”}”(hŒ3(struct pci_dev *pdev, struct kvm *kvm, u32 tdi_id)”h]”(js )�”}”(hŒstruct pci_dev *pdev”h]”(j¤)�”}”(hj§h]”hŒstruct”…”�”}”(hjé'h²hh³Nh´Nubah}”(h]”h ]”j°ah"]”h$]”h&]”uh1j£hjå'ubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjö'h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhjå'ubh)�”}”(hhh]”jÍ)�”}”(hŒpci_dev”h]”hŒpci_dev”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhj(ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”j# Œ reftarget”j (Œmodname”NŒ classname”Nj' j* )�”}”j- ]”j0 )�”}”j# jÏ'sbŒc.pci_tsm_bind”†”asbuh1hhjå'ubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'(h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhjå'ubjE )�”}”(hjH h]”hŒ*”…”�”}”(hj5(h²hh³Nh´Nubah}”(h]”h ]”jQ ah"]”h$]”h&]”uh1jD hjå'ubjÍ)�”}”(hŒpdev”h]”hŒpdev”…”�”}”(hjB(h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhjå'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jr hjá'ubjs )�”}”(hŒstruct kvm *kvm”h]”(j¤)�”}”(hj§h]”hŒstruct”…”�”}”(hj[(h²hh³Nh´Nubah}”(h]”h ]”j°ah"]”h$]”h&]”uh1j£hjW(ubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh(h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhjW(ubh)�”}”(hhh]”jÍ)�”}”(hŒkvm”h]”hŒkvm”…”�”}”(hjy(h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhjv(ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”j# Œ reftarget”j{(Œmodname”NŒ classname”Nj' j* )�”}”j- ]”j#(Œc.pci_tsm_bind”†”asbuh1hhjW(ubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—(h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhjW(ubjE )�”}”(hjH h]”hŒ*”…”�”}”(hj¥(h²hh³Nh´Nubah}”(h]”h ]”jQ ah"]”h$]”h&]”uh1jD hjW(ubjÍ)�”}”(hŒkvm”h]”hŒkvm”…”�”}”(hj²(h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhjW(ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jr hjá'ubjs )�”}”(hŒ u32 tdi_id”h]”(h)�”}”(hhh]”jÍ)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjÎ(h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhjË(ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”j# Œ reftarget”jÐ(Œmodname”NŒ classname”Nj' j* )�”}”j- ]”j#(Œc.pci_tsm_bind”†”asbuh1hhjÇ(ubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjì(h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhjÇ(ubjÍ)�”}”(hŒtdi_id”h]”hŒtdi_id”…”�”}”(hjú(h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhjÇ(ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jr hjá'ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jl hj¨'h²hh³jº'h´MKubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjêˆuh1j�jëjìhj¤'h²hh³jº'h´MKubah}”(h]”jŸ'ah ]”(jðjñeh"]”h$]”h&]”jõˆjö)j÷huh1j—h³jº'h´MKhj¡'h²hubjù)�”}”(hhh]”jþ)�”}”(hŒ"Bind **pdev** as a TDI for **kvm**”h]”(hŒBind ”…”�”}”(hj$)h²hh³Nh´Nubj3)�”}”(hŒ**pdev**”h]”hŒpdev”…”�”}”(hj,)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hj$)ubhŒ as a TDI for ”…”�”}”(hj$)h²hh³Nh´Nubj3)�”}”(hŒ**kvm**”h]”hŒkvm”…”�”}”(hj>)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hj$)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´MKhj!)h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jøhj¡'h²hh³jº'h´MKubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jjjj\)jj\)j‰j ‰j!‰uh1j’h²hhjph³Nh´Nubj#)�”}”(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]”j3)�”}”(hjf)h]”hŒ Parameters”…”�”}”(hjh)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hjd)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´MOhj`)ubj})�”}”(hhh]”(j‚)�”}”(hŒ5``struct pci_dev *pdev`` PCI device function to bind ”h]”(jˆ)�”}”(hŒ``struct pci_dev *pdev``”h]”jŽ)�”}”(hj…)h]”hŒstruct pci_dev *pdev”…”�”}”(hj‡)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjƒ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´MLhj)ubj¤)�”}”(hhh]”jþ)�”}”(hŒPCI device function to bind”h]”hŒPCI device function to bind”…”�”}”(hjž)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jš)h´MLhj›)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jš)h´MLhj|)ubj‚)�”}”(hŒ2``struct kvm *kvm`` Private memory attach context ”h]”(jˆ)�”}”(hŒ``struct kvm *kvm``”h]”jŽ)�”}”(hj¾)h]”hŒstruct kvm *kvm”…”�”}”(hjÀ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¼)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´MMhj¸)ubj¤)�”}”(hhh]”jþ)�”}”(hŒPrivate memory attach context”h]”hŒPrivate memory attach context”…”�”}”(hj×)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jÓ)h´MMhjÔ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj¸)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jÓ)h´MMhj|)ubj‚)�”}”(hŒU``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ù)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjõ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´MNhjñ)ubj¤)�”}”(hhh]”jþ)�”}”(hŒEIdentifier (virtual BDF) for the TDI as referenced by the TSM and DSM”h]”hŒEIdentifier (virtual BDF) for the TDI as referenced by the TSM and DSM”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j *h´MNhj *ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjñ)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j *h´MNhj|)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j|hj`)ubjþ)�”}”(hŒ**Description**”h]”j3)�”}”(hj2*h]”hŒ Description”…”�”}”(hj4*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hj0*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´MPhj`)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.”…”�”}”(hjH*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´MOhj`)ubjþ)�”}”(hŒ **Context**”h]”j3)�”}”(hjY*h]”hŒContext”…”�”}”(hj[*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hjW*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´MQhj`)ubjþ)�”}”(hŒÄ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]”hŒÄ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.”…”�”}”(hjo*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´MRhj`)ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j"hjph²hh³Nh´Nubj‚)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŽŒpci_tsm_guest_req (C function)”Œc.pci_tsm_guest_req”hNt”auh1j�hjph²hh³Nh´Nubj“)�”}”(hhh]”(j˜)�”}”(hŒ¡ssize_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ž)�”}”(hŒ ssize_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Í)�”}”(hŒssize_t”h]”hŒssize_t”…”�”}”(hj¡*h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhjž*ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”j# Œ reftarget”j£*Œmodname”NŒ classname”Nj' j* )�”}”j- ]”j0 )�”}”j# Œpci_tsm_guest_req”sbŒc.pci_tsm_guest_req”†”asbuh1hhjš*h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´M{ubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃ*h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhjš*h²hh³jÂ*h´M{ubjÇ)�”}”(hŒpci_tsm_guest_req”h]”jÍ)�”}”(hj¿*h]”hŒpci_tsm_guest_req”…”�”}”(hjÕ*h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhjÑ*ubah}”(h]”h ]”(jßjàeh"]”h$]”h&]”hÅhÆuh1jÆhjš*h²hh³jÂ*h´M{ubjm )�”}”(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]”(js )�”}”(hŒstruct pci_dev *pdev”h]”(j¤)�”}”(hj§h]”hŒstruct”…”�”}”(hjð*h²hh³Nh´Nubah}”(h]”h ]”j°ah"]”h$]”h&]”uh1j£hjì*ubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjý*h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhjì*ubh)�”}”(hhh]”jÍ)�”}”(hŒpci_dev”h]”hŒpci_dev”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhj +ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”j# Œ reftarget”j+Œmodname”NŒ classname”Nj' j* )�”}”j- ]”j½*Œc.pci_tsm_guest_req”†”asbuh1hhjì*ubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,+h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhjì*ubjE )�”}”(hjH h]”hŒ*”…”�”}”(hj:+h²hh³Nh´Nubah}”(h]”h ]”jQ ah"]”h$]”h&]”uh1jD hjì*ubjÍ)�”}”(hŒpdev”h]”hŒpdev”…”�”}”(hjG+h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhjì*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jr hjè*ubjs )�”}”(hŒenum pci_tsm_req_scope scope”h]”(j¤)�”}”(hjÓ%h]”hŒenum”…”�”}”(hj`+h²hh³Nh´Nubah}”(h]”h ]”j°ah"]”h$]”h&]”uh1j£hj\+ubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjm+h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhj\+ubh)�”}”(hhh]”jÍ)�”}”(hŒpci_tsm_req_scope”h]”hŒpci_tsm_req_scope”…”�”}”(hj~+h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhj{+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”j# Œ reftarget”j€+Œmodname”NŒ classname”Nj' j* )�”}”j- ]”j½*Œc.pci_tsm_guest_req”†”asbuh1hhj\+ubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœ+h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhj\+ubjÍ)�”}”(hŒscope”h]”hŒscope”…”�”}”(hjª+h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhj\+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jr hjè*ubjs )�”}”(hŒsockptr_t req_in”h]”(h)�”}”(hhh]”jÍ)�”}”(hŒ sockptr_t”h]”hŒ sockptr_t”…”�”}”(hjÆ+h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhjÃ+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”j# Œ reftarget”jÈ+Œmodname”NŒ classname”Nj' j* )�”}”j- ]”j½*Œc.pci_tsm_guest_req”†”asbuh1hhj¿+ubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjä+h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhj¿+ubjÍ)�”}”(hŒreq_in”h]”hŒreq_in”…”�”}”(hjò+h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhj¿+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jr hjè*ubjs )�”}”(hŒ size_t in_len”h]”(h)�”}”(hhh]”jÍ)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhj ,ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”j# Œ reftarget”j,Œmodname”NŒ classname”Nj' j* )�”}”j- ]”j½*Œc.pci_tsm_guest_req”†”asbuh1hhj,ubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,,h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhj,ubjÍ)�”}”(hŒin_len”h]”hŒin_len”…”�”}”(hj:,h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhj,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jr hjè*ubjs )�”}”(hŒsockptr_t req_out”h]”(h)�”}”(hhh]”jÍ)�”}”(hŒ sockptr_t”h]”hŒ sockptr_t”…”�”}”(hjV,h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhjS,ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”j# Œ reftarget”jX,Œmodname”NŒ classname”Nj' j* )�”}”j- ]”j½*Œc.pci_tsm_guest_req”†”asbuh1hhjO,ubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjt,h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhjO,ubjÍ)�”}”(hŒreq_out”h]”hŒreq_out”…”�”}”(hj‚,h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhjO,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jr hjè*ubjs )�”}”(hŒsize_t out_len”h]”(h)�”}”(hhh]”jÍ)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjž,h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhj›,ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”j# Œ reftarget”j ,Œmodname”NŒ classname”Nj' j* )�”}”j- ]”j½*Œc.pci_tsm_guest_req”†”asbuh1hhj—,ubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼,h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhj—,ubjÍ)�”}”(hŒout_len”h]”hŒout_len”…”�”}”(hjÊ,h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhj—,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jr hjè*ubjs )�”}”(hŒ u64 *tsm_code”h]”(h)�”}”(hhh]”jÍ)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjæ,h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhjã,ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”j# Œ reftarget”jè,Œmodname”NŒ classname”Nj' j* )�”}”j- ]”j½*Œc.pci_tsm_guest_req”†”asbuh1hhjß,ubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhjß,ubjE )�”}”(hjH h]”hŒ*”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”jQ ah"]”h$]”h&]”uh1jD hjß,ubjÍ)�”}”(hŒtsm_code”h]”hŒtsm_code”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhjß,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jr hjè*ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jl hjš*h²hh³jÂ*h´M{ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjêˆuh1j�jëjìhj–*h²hh³jÂ*h´M{ubah}”(h]”j‘*ah ]”(jðjñeh"]”h$]”h&]”jõˆjö)j÷huh1j—h³jÂ*h´M{hj“*h²hubjù)�”}”(hhh]”jþ)�”}”(hŒ2helper to marshal guest requests to the TSM driver”h]”hŒ2helper to marshal guest requests to the TSM driver”…”�”}”(hjI-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´M{hjF-h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jøhj“*h²hh³jÂ*h´M{ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jjjja-jja-j‰j ‰j!‰uh1j’h²hhjph³Nh´Nubj#)�”}”(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]”j3)�”}”(hjk-h]”hŒ Parameters”…”�”}”(hjm-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hji-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´Mhje-ubj})�”}”(hhh]”(j‚)�”}”(hŒ;``struct pci_dev *pdev`` **pdev** representing a bound tdi ”h]”(jˆ)�”}”(hŒ``struct pci_dev *pdev``”h]”jŽ)�”}”(hjŠ-h]”hŒstruct pci_dev *pdev”…”�”}”(hjŒ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjˆ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´M|hj„-ubj¤)�”}”(hhh]”jþ)�”}”(hŒ!**pdev** representing a bound tdi”h]”(j3)�”}”(hŒ**pdev**”h]”hŒpdev”…”�”}”(hj§-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hj£-ubhŒ representing a bound tdi”…”�”}”(hj£-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jŸ-h´M|hj -ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj„-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jŸ-h´M|hj�-ubj‚)�”}”(hŒh``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]”hŒenum pci_tsm_req_scope scope”…”�”}”(hjÓ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÏ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´M}hjË-ubj¤)�”}”(hhh]”jþ)�”}”(hŒFcaller asserts this passthrough request is limited to TDISP operations”h]”hŒFcaller asserts this passthrough request is limited to TDISP operations”…”�”}”(hjê-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jæ-h´M}hjç-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjË-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jæ-h´M}hj�-ubj‚)�”}”(hŒ<``sockptr_t req_in`` Input payload forwarded from the guest ”h]”(jˆ)�”}”(hŒ``sockptr_t req_in``”h]”jŽ)�”}”(hj .h]”hŒsockptr_t req_in”…”�”}”(hj .h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´M~hj.ubj¤)�”}”(hhh]”jþ)�”}”(hŒ&Input payload forwarded from the guest”h]”hŒ&Input payload forwarded from the guest”…”�”}”(hj#.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j.h´M~hj .ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j.h´M~hj�-ubj‚)�”}”(hŒ'``size_t in_len`` Length of **req_in** ”h]”(jˆ)�”}”(hŒ``size_t in_len``”h]”jŽ)�”}”(hjC.h]”hŒ size_t in_len”…”�”}”(hjE.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjA.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´Mhj=.ubj¤)�”}”(hhh]”jþ)�”}”(hŒLength of **req_in**”h]”(hŒ Length of ”…”�”}”(hj\.h²hh³Nh´Nubj3)�”}”(hŒ **req_in**”h]”hŒreq_in”…”�”}”(hjd.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hj\.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jX.h´MhjY.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj=.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jX.h´Mhj�-ubj‚)�”}”(hŒB``sockptr_t req_out`` Output payload buffer response to the guest ”h]”(jˆ)�”}”(hŒ``sockptr_t req_out``”h]”jŽ)�”}”(hjŠ.h]”hŒsockptr_t req_out”…”�”}”(hjŒ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjˆ.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´M€hj„.ubj¤)�”}”(hhh]”jþ)�”}”(hŒ+Output payload buffer response to the guest”h]”hŒ+Output payload buffer response to the guest”…”�”}”(hj£.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jŸ.h´M€hj .ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj„.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jŸ.h´M€hj�-ubj‚)�”}”(hŒY``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]”hŒsize_t out_len”…”�”}”(hjÅ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÁ.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´M�hj½.ubj¤)�”}”(hhh]”jþ)�”}”(hŒELength of **req_out** on input, bytes filled in **req_out** on output”h]”(hŒ Length of ”…”�”}”(hjÜ.h²hh³Nh´Nubj3)�”}”(hŒ **req_out**”h]”hŒreq_out”…”�”}”(hjä.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hjÜ.ubhŒ on input, bytes filled in ”…”�”}”(hjÜ.h²hh³Nh´Nubj3)�”}”(hŒ **req_out**”h]”hŒreq_out”…”�”}”(hjö.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hjÜ.ubhŒ on output”…”�”}”(hjÜ.h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jØ.h´M�hjÙ.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj½.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jØ.h´M�hj�-ubj‚)�”}”(hŒK``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"/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´M‚hj/ubj¤)�”}”(hhh]”jþ)�”}”(hŒ8Optional TSM arch specific result code for the guest TSM”h]”hŒ8Optional TSM arch specific result code for the guest TSM”…”�”}”(hj9/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j5/h´M‚hj6/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j5/h´M‚hj�-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j|hje-ubjþ)�”}”(hŒ**Description**”h]”j3)�”}”(hj[/h]”hŒ Description”…”�”}”(hj]/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hjY/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´M„hje-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.”…”�”}”(hjq/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´Mƒhje-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]”(hŒUReturns 0 on success and -error on failure and positive “residueâ€� on success but ”…”�”}”(hj€/h²hh³Nh´Nubj3)�”}”(hŒ **req_out**”h]”hŒreq_out”…”�”}”(hjˆ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hj€/ubhŒ is filled with less then ”…”�”}”(hj€/h²hh³Nh´Nubj3)�”}”(hŒ **out_len**”h]”hŒout_len”…”�”}”(hjš/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hj€/ubhŒ, or ”…”�”}”(hj€/h²hh³Nh´Nubj3)�”}”(hŒ **req_out**”h]”hŒreq_out”…”�”}”(hj¬/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hj€/ubhŒ> is NULL and a residue number of bytes were not consumed from ”…”�”}”(hj€/h²hh³Nh´Nubj3)�”}”(hŒ **req_in**”h]”hŒreq_in”…”�”}”(hj¾/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hj€/ubhŒ. On success or failure ”…”�”}”(hj€/h²hh³Nh´Nubj3)�”}”(hŒ **tsm_code**”h]”hŒtsm_code”…”�”}”(hjÐ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hj€/ubhŒZ may be populated with a TSM implementation specific result code for the guest to consume.”…”�”}”(hj€/h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´M‰hje-ubjþ)�”}”(hŒ **Context**”h]”j3)�”}”(hjë/h]”hŒContext”…”�”}”(hjí/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hjé/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´M�hje-ubjþ)�”}”(hŒRCaller is responsible for calling this within the pci_tsm_bind() state of the TDI.”h]”hŒRCaller is responsible for calling this within the pci_tsm_bind() state of the TDI.”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´M�hje-ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j"hjph²hh³Nh´Nubj‚)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŽŒ$pci_tsm_tdi_constructor (C function)”Œc.pci_tsm_tdi_constructor”hNt”auh1j�hjph²hh³Nh´Nubj“)�”}”(hhh]”(j˜)�”}”(hŒevoid pci_tsm_tdi_constructor (struct pci_dev *pdev, struct pci_tdi *tdi, struct kvm *kvm, u32 tdi_id)”h]”jž)�”}”(hŒdvoid pci_tsm_tdi_constructor(struct pci_dev *pdev, struct pci_tdi *tdi, struct kvm *kvm, u32 tdi_id)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj00h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj,0h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´Mºubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?0h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhj,0h²hh³j>0h´MºubjÇ)�”}”(hŒpci_tsm_tdi_constructor”h]”jÍ)�”}”(hŒpci_tsm_tdi_constructor”h]”hŒpci_tsm_tdi_constructor”…”�”}”(hjQ0h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhjM0ubah}”(h]”h ]”(jßjàeh"]”h$]”h&]”hÅhÆuh1jÆhj,0h²hh³j>0h´Mºubjm )�”}”(hŒH(struct pci_dev *pdev, struct pci_tdi *tdi, struct kvm *kvm, u32 tdi_id)”h]”(js )�”}”(hŒstruct pci_dev *pdev”h]”(j¤)�”}”(hj§h]”hŒstruct”…”�”}”(hjm0h²hh³Nh´Nubah}”(h]”h ]”j°ah"]”h$]”h&]”uh1j£hji0ubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjz0h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhji0ubh)�”}”(hhh]”jÍ)�”}”(hŒpci_dev”h]”hŒpci_dev”…”�”}”(hj‹0h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhjˆ0ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”j# Œ reftarget”j�0Œmodname”NŒ classname”Nj' j* )�”}”j- ]”j0 )�”}”j# jS0sbŒc.pci_tsm_tdi_constructor”†”asbuh1hhji0ubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«0h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhji0ubjE )�”}”(hjH h]”hŒ*”…”�”}”(hj¹0h²hh³Nh´Nubah}”(h]”h ]”jQ ah"]”h$]”h&]”uh1jD hji0ubjÍ)�”}”(hŒpdev”h]”hŒpdev”…”�”}”(hjÆ0h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhji0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jr hje0ubjs )�”}”(hŒstruct pci_tdi *tdi”h]”(j¤)�”}”(hj§h]”hŒstruct”…”�”}”(hjß0h²hh³Nh´Nubah}”(h]”h ]”j°ah"]”h$]”h&]”uh1j£hjÛ0ubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjì0h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhjÛ0ubh)�”}”(hhh]”jÍ)�”}”(hŒpci_tdi”h]”hŒpci_tdi”…”�”}”(hjý0h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhjú0ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”j# Œ reftarget”jÿ0Œmodname”NŒ classname”Nj' j* )�”}”j- ]”j§0Œc.pci_tsm_tdi_constructor”†”asbuh1hhjÛ0ubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhjÛ0ubjE )�”}”(hjH h]”hŒ*”…”�”}”(hj)1h²hh³Nh´Nubah}”(h]”h ]”jQ ah"]”h$]”h&]”uh1jD hjÛ0ubjÍ)�”}”(hŒtdi”h]”hŒtdi”…”�”}”(hj61h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhjÛ0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jr hje0ubjs )�”}”(hŒstruct kvm *kvm”h]”(j¤)�”}”(hj§h]”hŒstruct”…”�”}”(hjO1h²hh³Nh´Nubah}”(h]”h ]”j°ah"]”h$]”h&]”uh1j£hjK1ubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\1h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhjK1ubh)�”}”(hhh]”jÍ)�”}”(hŒkvm”h]”hŒkvm”…”�”}”(hjm1h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhjj1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”j# Œ reftarget”jo1Œmodname”NŒ classname”Nj' j* )�”}”j- ]”j§0Œc.pci_tsm_tdi_constructor”†”asbuh1hhjK1ubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹1h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhjK1ubjE )�”}”(hjH h]”hŒ*”…”�”}”(hj™1h²hh³Nh´Nubah}”(h]”h ]”jQ ah"]”h$]”h&]”uh1jD hjK1ubjÍ)�”}”(hŒkvm”h]”hŒkvm”…”�”}”(hj¦1h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhjK1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jr hje0ubjs )�”}”(hŒ u32 tdi_id”h]”(h)�”}”(hhh]”jÍ)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjÂ1h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhj¿1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”j# Œ reftarget”jÄ1Œmodname”NŒ classname”Nj' j* )�”}”j- ]”j§0Œc.pci_tsm_tdi_constructor”†”asbuh1hhj»1ubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjà1h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhj»1ubjÍ)�”}”(hŒtdi_id”h]”hŒtdi_id”…”�”}”(hjî1h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhj»1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jr hje0ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jl hj,0h²hh³j>0h´Mºubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjêˆuh1j�jëjìhj(0h²hh³j>0h´Mºubah}”(h]”j#0ah ]”(jðjñeh"]”h$]”h&]”jõˆjö)j÷huh1j—h³j>0h´Mºhj%0h²hubjù)�”}”(hhh]”jþ)�”}”(hŒ2base 'struct pci_tdi' initialization for link TSMs”h]”hŒ6base ‘struct pci_tdi’ initialization for link TSMs”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´Mºhj2h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jøhj%0h²hh³j>0h´Mºubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jjjj02jj02j‰j ‰j!‰uh1j’h²hhjph³Nh´Nubj#)�”}”(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 DSM”h]”(jþ)�”}”(hŒ**Parameters**”h]”j3)�”}”(hj:2h]”hŒ Parameters”…”�”}”(hj<2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hj82ubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´M¾hj42ubj})�”}”(hhh]”(j‚)�”}”(hŒB``struct pci_dev *pdev`` PCI device function representing the TDI ”h]”(jˆ)�”}”(hŒ``struct pci_dev *pdev``”h]”jŽ)�”}”(hjY2h]”hŒstruct pci_dev *pdev”…”�”}”(hj[2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjW2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´M»hjS2ubj¤)�”}”(hhh]”jþ)�”}”(hŒ(PCI device function representing the TDI”h]”hŒ(PCI device function representing the TDI”…”�”}”(hjr2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jn2h´M»hjo2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjS2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jn2h´M»hjP2ubj‚)�”}”(hŒ.``struct pci_tdi *tdi`` context to initialize ”h]”(jˆ)�”}”(hŒ``struct pci_tdi *tdi``”h]”jŽ)�”}”(hj’2h]”hŒstruct pci_tdi *tdi”…”�”}”(hj”2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´M¼hjŒ2ubj¤)�”}”(hhh]”jþ)�”}”(hŒcontext to initialize”h]”hŒcontext to initialize”…”�”}”(hj«2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j§2h´M¼hj¨2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjŒ2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j§2h´M¼hjP2ubj‚)�”}”(hŒ2``struct kvm *kvm`` Private memory attach context ”h]”(jˆ)�”}”(hŒ``struct kvm *kvm``”h]”jŽ)�”}”(hjË2h]”hŒstruct kvm *kvm”…”�”}”(hjÍ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÉ2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´M½hjÅ2ubj¤)�”}”(hhh]”jþ)�”}”(hŒPrivate memory attach context”h]”hŒPrivate memory attach context”…”�”}”(hjä2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jà2h´M½hjá2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÅ2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jà2h´M½hjP2ubj‚)�”}”(hŒT``u32 tdi_id`` Identifier (virtual BDF) for the TDI as referenced by the TSM and DSM”h]”(jˆ)�”}”(hŒ``u32 tdi_id``”h]”jŽ)�”}”(hj3h]”hŒ u32 tdi_id”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´M¿hjþ2ubj¤)�”}”(hhh]”jþ)�”}”(hŒEIdentifier (virtual BDF) for the TDI as referenced by the TSM and DSM”h]”hŒEIdentifier (virtual BDF) for the TDI as referenced by the TSM and DSM”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´M¾hj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjþ2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j3h´M¿hjP2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j|hj42ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j"hjph²hh³Nh´Nubj‚)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŽŒ%pci_tsm_link_constructor (C function)”Œc.pci_tsm_link_constructor”hNt”auh1j�hjph²hh³Nh´Nubj“)�”}”(hhh]”(j˜)�”}”(hŒaint 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ý)�”}”(hŒint”h]”hŒint”…”�”}”(hj^3h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjZ3h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´MÊubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjm3h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhjZ3h²hh³jl3h´MÊubjÇ)�”}”(hŒpci_tsm_link_constructor”h]”jÍ)�”}”(hŒpci_tsm_link_constructor”h]”hŒpci_tsm_link_constructor”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhj{3ubah}”(h]”h ]”(jßjàeh"]”h$]”h&]”hÅhÆuh1jÆhjZ3h²hh³jl3h´MÊubjm )�”}”(hŒD(struct pci_dev *pdev, struct pci_tsm *tsm, struct tsm_dev *tsm_dev)”h]”(js )�”}”(hŒstruct pci_dev *pdev”h]”(j¤)�”}”(hj§h]”hŒstruct”…”�”}”(hj›3h²hh³Nh´Nubah}”(h]”h ]”j°ah"]”h$]”h&]”uh1j£hj—3ubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨3h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhj—3ubh)�”}”(hhh]”jÍ)�”}”(hŒpci_dev”h]”hŒpci_dev”…”�”}”(hj¹3h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhj¶3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”j# Œ reftarget”j»3Œmodname”NŒ classname”Nj' j* )�”}”j- ]”j0 )�”}”j# j�3sbŒc.pci_tsm_link_constructor”†”asbuh1hhj—3ubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙ3h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhj—3ubjE )�”}”(hjH h]”hŒ*”…”�”}”(hjç3h²hh³Nh´Nubah}”(h]”h ]”jQ ah"]”h$]”h&]”uh1jD hj—3ubjÍ)�”}”(hŒpdev”h]”hŒpdev”…”�”}”(hjô3h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhj—3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jr hj“3ubjs )�”}”(hŒstruct pci_tsm *tsm”h]”(j¤)�”}”(hj§h]”hŒstruct”…”�”}”(hj 4h²hh³Nh´Nubah}”(h]”h ]”j°ah"]”h$]”h&]”uh1j£hj 4ubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhj 4ubh)�”}”(hhh]”jÍ)�”}”(hŒpci_tsm”h]”hŒpci_tsm”…”�”}”(hj+4h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhj(4ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”j# Œ reftarget”j-4Œmodname”NŒ classname”Nj' j* )�”}”j- ]”jÕ3Œc.pci_tsm_link_constructor”†”asbuh1hhj 4ubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjI4h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhj 4ubjE )�”}”(hjH h]”hŒ*”…”�”}”(hjW4h²hh³Nh´Nubah}”(h]”h ]”jQ ah"]”h$]”h&]”uh1jD hj 4ubjÍ)�”}”(hŒtsm”h]”hŒtsm”…”�”}”(hjd4h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhj 4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jr hj“3ubjs )�”}”(hŒstruct tsm_dev *tsm_dev”h]”(j¤)�”}”(hj§h]”hŒstruct”…”�”}”(hj}4h²hh³Nh´Nubah}”(h]”h ]”j°ah"]”h$]”h&]”uh1j£hjy4ubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠ4h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhjy4ubh)�”}”(hhh]”jÍ)�”}”(hŒtsm_dev”h]”hŒtsm_dev”…”�”}”(hj›4h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhj˜4ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”j# Œ reftarget”j�4Œmodname”NŒ classname”Nj' j* )�”}”j- ]”jÕ3Œc.pci_tsm_link_constructor”†”asbuh1hhjy4ubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹4h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhjy4ubjE )�”}”(hjH h]”hŒ*”…”�”}”(hjÇ4h²hh³Nh´Nubah}”(h]”h ]”jQ ah"]”h$]”h&]”uh1jD hjy4ubjÍ)�”}”(hŒtsm_dev”h]”hŒtsm_dev”…”�”}”(hjÔ4h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhjy4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jr hj“3ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jl hjZ3h²hh³jl3h´MÊubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjêˆuh1j�jëjìhjV3h²hh³jl3h´MÊubah}”(h]”jQ3ah ]”(jðjñeh"]”h$]”h&]”jõˆjö)j÷huh1j—h³jl3h´MÊhjS3h²hubjù)�”}”(hhh]”jþ)�”}”(hŒ2base 'struct pci_tsm' initialization for link TSMs”h]”hŒ6base ‘struct pci_tsm’ initialization for link TSMs”…”�”}”(hjþ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´MÊhjû4h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jøhjS3h²hh³jl3h´MÊubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jjjj5jj5j‰j ‰j!‰uh1j’h²hhjph³Nh´Nubj#)�”}”(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 operations”h]”(jþ)�”}”(hŒ**Parameters**”h]”j3)�”}”(hj 5h]”hŒ Parameters”…”�”}”(hj"5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´MÎhj5ubj})�”}”(hhh]”(j‚)�”}”(hŒ(``struct pci_dev *pdev`` The PCI device ”h]”(jˆ)�”}”(hŒ``struct pci_dev *pdev``”h]”jŽ)�”}”(hj?5h]”hŒstruct pci_dev *pdev”…”�”}”(hjA5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj=5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´MËhj95ubj¤)�”}”(hhh]”jþ)�”}”(hŒThe PCI device”h]”hŒThe PCI device”…”�”}”(hjX5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jT5h´MËhjU5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj95ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jT5h´MËhj65ubj‚)�”}”(hŒ.``struct pci_tsm *tsm`` context to initialize ”h]”(jˆ)�”}”(hŒ``struct pci_tsm *tsm``”h]”jŽ)�”}”(hjx5h]”hŒstruct pci_tsm *tsm”…”�”}”(hjz5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjv5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´MÌhjr5ubj¤)�”}”(hhh]”jþ)�”}”(hŒcontext to initialize”h]”hŒcontext to initialize”…”�”}”(hj‘5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j�5h´MÌhjŽ5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjr5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j�5h´MÌhj65ubj‚)�”}”(hŒ[``struct tsm_dev *tsm_dev`` Platform TEE Security Manager, initiator of security operations”h]”(jˆ)�”}”(hŒ``struct tsm_dev *tsm_dev``”h]”jŽ)�”}”(hj±5h]”hŒstruct tsm_dev *tsm_dev”…”�”}”(hj³5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¯5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´MÎhj«5ubj¤)�”}”(hhh]”jþ)�”}”(hŒ?Platform TEE Security Manager, initiator of security operations”h]”hŒ?Platform TEE Security Manager, initiator of security operations”…”�”}”(hjÊ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´MÍhjÇ5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj«5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jÆ5h´MÎhj65ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j|hj5ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j"hjph²hh³Nh´Nubj‚)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŽŒ$pci_tsm_pf0_constructor (C function)”Œc.pci_tsm_pf0_constructor”hNt”auh1j�hjph²hh³Nh´Nubj“)�”}”(hhh]”(j˜)�”}”(hŒdint pci_tsm_pf0_constructor (struct pci_dev *pdev, struct pci_tsm_pf0 *tsm, struct tsm_dev *tsm_dev)”h]”jž)�”}”(hŒcint pci_tsm_pf0_constructor(struct pci_dev *pdev, struct pci_tsm_pf0 *tsm, struct tsm_dev *tsm_dev)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj 6h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj6h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´Mâubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhj6h²hh³j6h´MâubjÇ)�”}”(hŒpci_tsm_pf0_constructor”h]”jÍ)�”}”(hŒpci_tsm_pf0_constructor”h]”hŒpci_tsm_pf0_constructor”…”�”}”(hj,6h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhj(6ubah}”(h]”h ]”(jßjàeh"]”h$]”h&]”hÅhÆuh1jÆhj6h²hh³j6h´Mâubjm )�”}”(hŒH(struct pci_dev *pdev, struct pci_tsm_pf0 *tsm, struct tsm_dev *tsm_dev)”h]”(js )�”}”(hŒstruct pci_dev *pdev”h]”(j¤)�”}”(hj§h]”hŒstruct”…”�”}”(hjH6h²hh³Nh´Nubah}”(h]”h ]”j°ah"]”h$]”h&]”uh1j£hjD6ubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjU6h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhjD6ubh)�”}”(hhh]”jÍ)�”}”(hŒpci_dev”h]”hŒpci_dev”…”�”}”(hjf6h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhjc6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”j# Œ reftarget”jh6Œmodname”NŒ classname”Nj' j* )�”}”j- ]”j0 )�”}”j# j.6sbŒc.pci_tsm_pf0_constructor”†”asbuh1hhjD6ubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†6h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhjD6ubjE )�”}”(hjH h]”hŒ*”…”�”}”(hj”6h²hh³Nh´Nubah}”(h]”h ]”jQ ah"]”h$]”h&]”uh1jD hjD6ubjÍ)�”}”(hŒpdev”h]”hŒpdev”…”�”}”(hj¡6h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhjD6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jr hj@6ubjs )�”}”(hŒstruct pci_tsm_pf0 *tsm”h]”(j¤)�”}”(hj§h]”hŒstruct”…”�”}”(hjº6h²hh³Nh´Nubah}”(h]”h ]”j°ah"]”h$]”h&]”uh1j£hj¶6ubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇ6h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhj¶6ubh)�”}”(hhh]”jÍ)�”}”(hŒ pci_tsm_pf0”h]”hŒ pci_tsm_pf0”…”�”}”(hjØ6h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhjÕ6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”j# Œ reftarget”jÚ6Œmodname”NŒ classname”Nj' j* )�”}”j- ]”j‚6Œc.pci_tsm_pf0_constructor”†”asbuh1hhj¶6ubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjö6h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhj¶6ubjE )�”}”(hjH h]”hŒ*”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”jQ ah"]”h$]”h&]”uh1jD hj¶6ubjÍ)�”}”(hŒtsm”h]”hŒtsm”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhj¶6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jr hj@6ubjs )�”}”(hŒstruct tsm_dev *tsm_dev”h]”(j¤)�”}”(hj§h]”hŒstruct”…”�”}”(hj*7h²hh³Nh´Nubah}”(h]”h ]”j°ah"]”h$]”h&]”uh1j£hj&7ubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj77h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhj&7ubh)�”}”(hhh]”jÍ)�”}”(hŒtsm_dev”h]”hŒtsm_dev”…”�”}”(hjH7h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhjE7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”j# Œ reftarget”jJ7Œmodname”NŒ classname”Nj' j* )�”}”j- ]”j‚6Œc.pci_tsm_pf0_constructor”†”asbuh1hhj&7ubj¶)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf7h²hh³Nh´Nubah}”(h]”h ]”jÂah"]”h$]”h&]”uh1jµhj&7ubjE )�”}”(hjH h]”hŒ*”…”�”}”(hjt7h²hh³Nh´Nubah}”(h]”h ]”jQ ah"]”h$]”h&]”uh1jD hj&7ubjÍ)�”}”(hŒtsm_dev”h]”hŒtsm_dev”…”�”}”(hj�7h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jÌhj&7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jr hj@6ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jl hj6h²hh³j6h´Mâubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjêˆuh1j�jëjìhj6h²hh³j6h´Mâubah}”(h]”jþ5ah ]”(jðjñeh"]”h$]”h&]”jõˆjö)j÷huh1j—h³j6h´Mâhj6h²hubjù)�”}”(hhh]”jþ)�”}”(hŒ0common 'struct pci_tsm_pf0' (DSM) initialization”h]”hŒ4common ‘struct pci_tsm_pf0’ (DSM) initialization”…”�”}”(hj«7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´Mâhj¨7h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jøhj6h²hh³j6h´Mâubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jjjjÃ7jjÃ7j‰j ‰j!‰uh1j’h²hhjph³Nh´Nubj#)�”}”(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 operations”h]”(jþ)�”}”(hŒ**Parameters**”h]”j3)�”}”(hjÍ7h]”hŒ Parameters”…”�”}”(hjÏ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hjË7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´MæhjÇ7ubj})�”}”(hhh]”(j‚)�”}”(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Ž)�”}”(hjì7h]”hŒstruct pci_dev *pdev”…”�”}”(hjî7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjê7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´Mãhjæ7ubj¤)�”}”(hhh]”jþ)�”}”(hŒAPhysical Function 0 PCI device (as indicated by is_pci_tsm_pf0())”h]”hŒAPhysical Function 0 PCI device (as indicated by is_pci_tsm_pf0())”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j8h´Mãhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjæ7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j8h´Mãhjã7ubj‚)�”}”(hŒ2``struct pci_tsm_pf0 *tsm`` context to initialize ”h]”(jˆ)�”}”(hŒ``struct pci_tsm_pf0 *tsm``”h]”jŽ)�”}”(hj%8h]”hŒstruct pci_tsm_pf0 *tsm”…”�”}”(hj'8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj#8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´Mähj8ubj¤)�”}”(hhh]”jþ)�”}”(hŒcontext to initialize”h]”hŒcontext to initialize”…”�”}”(hj>8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j:8h´Mähj;8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j:8h´Mähjã7ubj‚)�”}”(hŒ[``struct tsm_dev *tsm_dev`` Platform TEE Security Manager, initiator of security operations”h]”(jˆ)�”}”(hŒ``struct tsm_dev *tsm_dev``”h]”jŽ)�”}”(hj^8h]”hŒstruct tsm_dev *tsm_dev”…”�”}”(hj`8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj\8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´MæhjX8ubj¤)�”}”(hhh]”jþ)�”}”(hŒ?Platform TEE Security Manager, initiator of security operations”h]”hŒ?Platform TEE Security Manager, initiator of security operations”…”�”}”(hjw8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/tsm:106: ./drivers/pci/tsm.c”h´Måhjt8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjX8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³js8h´Mæhjã7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j|hjÇ7ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j"hjph²hh³Nh´Nubeh}”(h]”Œsubsystem-interfaces”ah ]”h"]”Œsubsystem interfaces”ah$]”h&]”uh1j[hj]h²hh³hÇh´K ubeh}”(h]”Œ6pci-trusted-execution-environment-security-manager-tsm”ah ]”h"]”Œ8pci trusted execution environment security manager (tsm)”ah$]”h&]”uh1j[hhh²hh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(j`NŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”jÒ8Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÇŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”(hóhçjhöjjj jj/j#j>j2jMjAj\jPjkj_jzjnj‰j}j˜jŒj§j›j¶jªjÅj¹jÔjÈjãj×jòjæjjõjjjjj.j"j=j1jLj@j[jOjjj^jyjmjˆj|j—j‹j¦jšjµj©jÄj¸jÓjÇjâjÖjñjåjjôjjjjj-j!j<j0jKj?jZjNjij]jxjlj‡j{j–jŠj¥j™j´j¨jÃj·jÒjÆjájÕjðjäjÿjójjjjj,j j;j/jJj>jYjMjhj\jwjkj†jzj•j‰j¤j˜j³j§jÂj¶jÑjÅjàjÔjïjãjþjòj jjjj+jj:j.jIj=jXjLuŒsubstitution_names”}”(Œamp”hóŒapos”jŒast”jŒbrvbar”j Œbsol”j/Œcent”j>Œcolon”jMŒcomma”j\Œcommat”jkŒcopy”jzŒcurren”j‰Œdarr”j˜Œdeg”j§Œdivide”j¶Œdollar”jÅŒequals”jÔŒexcl”jãŒfrac12”jòŒfrac14”jŒfrac18”jŒfrac34”jŒfrac38”j.Œfrac58”j=Œfrac78”jLŒgt”j[Œhalf”jjŒhorbar”jyŒhyphen”jˆŒiexcl”j—Œiquest”j¦Œlaquo”jµŒlarr”jÄŒlcub”jÓŒldquo”jâŒlowbar”jñŒlpar”jŒlsqb”jŒlsquo”jŒlt”j-Œmicro”j<Œmiddot”jKŒnbsp”jZŒnot”jiŒnum”jxŒohm”j‡Œordf”j–Œordm”j¥Œpara”j´Œpercnt”jÃŒperiod”jÒŒplus”jáŒplusmn”jðŒpound”jÿŒquest”jŒquot”jŒraquo”j,Œrarr”j;Œrcub”jJŒrdquo”jYŒreg”jhŒrpar”jwŒrsqb”j†Œrsquo”j•Œsect”j¤Œsemi”j³Œshy”jÂŒsol”jÑŒsung”jàŒsup1”jïŒsup2”jþŒsup3”j Œtimes”jŒtrade”j+Œuarr”j:Œverbar”jIŒyen”jXuŒrefnames”}”Œrefids”}”Œnameids”}”(j¬8j©8j¤8j¡8uŒ nametypes”}”(j¬8‰j¤8‰uh}”(j©8j]j¡8jpj�j™j¹j¾jŸ j¤ já jæ jïjôj…jŠj'j,jÌjÑj_jdj¿jÄjéjîjjjoj”j™j¥ jª j*"j/"j?$jD$jÄ%jÉ%jŸ'j¤'j‘*j–*j#0j(0jQ3jV3jþ5j6uŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ$Documentation/driver-api/pci/tsm.rst”(NNNNt”†”aŒ decoration”Nh²hub.