€•ÎäŒ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”Œ9/translations/zh_CN/driver-api/coco/measurement-registers”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ9/translations/zh_TW/driver-api/coco/measurement-registers”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ9/translations/it_IT/driver-api/coco/measurement-registers”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ9/translations/ja_JP/driver-api/coco/measurement-registers”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ9/translations/ko_KR/driver-api/coco/measurement-registers”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ9/translations/pt_BR/driver-api/coco/measurement-registers”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ9/translations/sp_SP/driver-api/coco/measurement-registers”Œ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³ŒS/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers.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ŒMeasurement Registers”h]”hŒMeasurement Registers”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j`hj]h²hh³hÇh´KubhŒindex”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”Œ#tsm_measurement_register (C struct)”Œc.tsm_measurement_register”hNt”auh1jphj]h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:94: ./include/linux/tsm-mr.h”h´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒtsm_measurement_register”h]”hŒdesc_signature_line”“”)�”}”(hŒstruct tsm_measurement_register”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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:94: ./include/linux/tsm-mr.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Œtsm_measurement_register”h]”hŒ desc_sig_name”“”)�”}”(hj‹h]”hŒtsm_measurement_register”…”�”}”(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]”jah ]”(Œ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Œ4describes an architectural measurement register (MR)”h]”hŒ4describes an architectural measurement register (MR)”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:94: ./include/linux/tsm-mr.h”h´K hjê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²hhj]h³j�h´NubhŒ container”“”)�”}”(hXõ**Definition**:: struct tsm_measurement_register { const char *mr_name; void *mr_value; u32 mr_size; u32 mr_flags; enum hash_algo mr_hash; }; **Members** ``mr_name`` name of the MR ``mr_value`` buffer containing the current value of the MR ``mr_size`` size of the MR - typically the digest size of **mr_hash** ``mr_flags`` bitwise OR of one or more flags, detailed below ``mr_hash`` optional hash identifier defined in include/uapi/linux/hash_info.h.”h]”(jî)�”}”(hŒ**Definition**::”h]”(hŒstrong”“”)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubhŒ:”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jíh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:94: ./include/linux/tsm-mr.h”h´K hjubhŒ literal_block”“”)�”}”(hŒ�struct tsm_measurement_register { const char *mr_name; void *mr_value; u32 mr_size; u32 mr_flags; enum hash_algo mr_hash; };”h]”hŒ�struct tsm_measurement_register { const char *mr_name; void *mr_value; u32 mr_size; u32 mr_flags; enum hash_algo mr_hash; };”…”�”}”hj9sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j7h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:94: ./include/linux/tsm-mr.h”h´Khjubjî)�”}”(hŒ **Members**”h]”j)�”}”(hjJh]”hŒMembers”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjHubah}”(h]”h ]”h"]”h$]”h&]”uh1jíh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:94: ./include/linux/tsm-mr.h”h´KhjubhŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hŒ``mr_name`` name of the MR ”h]”(hŒterm”“”)�”}”(hŒ ``mr_name``”h]”hŒliteral”“”)�”}”(hjoh]”hŒmr_name”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jqhjmubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:94: ./include/linux/tsm-mr.h”h´K hjgubhŒ definition”“”)�”}”(hhh]”jî)�”}”(hŒname of the MR”h]”hŒname of the MR”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíh³j†h´K hj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hjgubeh}”(h]”h ]”h"]”h$]”h&]”uh1jeh³j†h´K hjbubjf)�”}”(hŒ;``mr_value`` buffer containing the current value of the MR ”h]”(jl)�”}”(hŒ ``mr_value``”h]”jr)�”}”(hj¬h]”hŒmr_value”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jqhjªubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:94: ./include/linux/tsm-mr.h”h´K hj¦ubjˆ)�”}”(hhh]”jî)�”}”(hŒ-buffer containing the current value of the MR”h]”hŒ-buffer containing the current value of the MR”…”�”}”(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&]”uh1jeh³jÁh´K hjbubjf)�”}”(hŒF``mr_size`` size of the MR - typically the digest size of **mr_hash** ”h]”(jl)�”}”(hŒ ``mr_size``”h]”jr)�”}”(hjåh]”hŒmr_size”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jqhjãubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:94: ./include/linux/tsm-mr.h”h´Khjßubjˆ)�”}”(hhh]”jî)�”}”(hŒ9size of the MR - typically the digest size of **mr_hash**”h]”(hŒ.size of the MR - typically the digest size of ”…”�”}”(hjþh²hh³Nh´Nubj)�”}”(hŒ **mr_hash**”h]”hŒmr_hash”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjþubeh}”(h]”h ]”h"]”h$]”h&]”uh1jíh³júh´Khjûubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hjßubeh}”(h]”h ]”h"]”h$]”h&]”uh1jeh³júh´Khjbubjf)�”}”(hŒ=``mr_flags`` bitwise OR of one or more flags, detailed below ”h]”(jl)�”}”(hŒ ``mr_flags``”h]”jr)�”}”(hj,h]”hŒmr_flags”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jqhj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:94: ./include/linux/tsm-mr.h”h´Khj&ubjˆ)�”}”(hhh]”jî)�”}”(hŒ/bitwise OR of one or more flags, detailed below”h]”hŒ/bitwise OR of one or more flags, detailed below”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíh³jAh´KhjBubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hj&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jeh³jAh´Khjbubjf)�”}”(hŒO``mr_hash`` optional hash identifier defined in include/uapi/linux/hash_info.h.”h]”(jl)�”}”(hŒ ``mr_hash``”h]”jr)�”}”(hjeh]”hŒmr_hash”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jqhjcubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:94: ./include/linux/tsm-mr.h”h´Khj_ubjˆ)�”}”(hhh]”jî)�”}”(hŒCoptional hash identifier defined in include/uapi/linux/hash_info.h.”h]”hŒCoptional hash identifier defined in include/uapi/linux/hash_info.h.”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:94: ./include/linux/tsm-mr.h”h´Khj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hj_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jeh³jzh´Khjbubeh}”(h]”h ]”h"]”h$]”h&]”uh1j`hjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj]h²hh³j�h´Nubjî)�”}”(hŒ**Description**”h]”j)�”}”(hj¨h]”hŒ Description”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jíh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:94: ./include/linux/tsm-mr.h”h´Khj]h²hubjî)�”}”(hŒœA CC guest driver encloses an array of this structure in struct tsm_measurements to detail the measurement facility supported by the underlying CC hardware.”h]”hŒœA CC guest driver encloses an array of this structure in struct tsm_measurements to detail the measurement facility supported by the underlying CC hardware.”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:94: ./include/linux/tsm-mr.h”h´Khj]h²hubjî)�”}”(hŒV**mr_name** and **mr_value** must stay valid until this structure is no longer in use.”h]”(j)�”}”(hŒ **mr_name**”h]”hŒmr_name”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÍubhŒ and ”…”�”}”(hjÍh²hh³Nh´Nubj)�”}”(hŒ **mr_value**”h]”hŒmr_value”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÍubhŒ: must stay valid until this structure is no longer in use.”…”�”}”(hjÍh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jíh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:94: ./include/linux/tsm-mr.h”h´Khj]h²hubjî)�”}”(hŒB**mr_flags** is the bitwise-OR of zero or more of the flags below.”h]”(j)�”}”(hŒ **mr_flags**”h]”hŒmr_flags”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjüubhŒ6 is the bitwise-OR of zero or more of the flags below.”…”�”}”(hjüh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jíh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:94: ./include/linux/tsm-mr.h”h´Khj]h²hubhŒ bullet_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒQ``TSM_MR_F_READABLE`` - the sysfs attribute corresponding to this MR is readable.”h]”jî)�”}”(hj"h]”(jr)�”}”(hŒ``TSM_MR_F_READABLE``”h]”hŒTSM_MR_F_READABLE”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jqhj$ubhŒ< - the sysfs attribute corresponding to this MR is readable.”…”�”}”(hj$h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jíh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:94: ./include/linux/tsm-mr.h”h´Khj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubj)�”}”(hŒ¶``TSM_MR_F_WRITABLE`` - the sysfs attribute corresponding to this MR is writable. The semantics is typically to extend the MR but could vary depending on the architecture and the MR.”h]”jî)�”}”(hŒ¶``TSM_MR_F_WRITABLE`` - the sysfs attribute corresponding to this MR is writable. The semantics is typically to extend the MR but could vary depending on the architecture and the MR.”h]”(jr)�”}”(hŒ``TSM_MR_F_WRITABLE``”h]”hŒTSM_MR_F_WRITABLE”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jqhjJubhŒ¡ - the sysfs attribute corresponding to this MR is writable. The semantics is typically to extend the MR but could vary depending on the architecture and the MR.”…”�”}”(hjJh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jíh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:94: ./include/linux/tsm-mr.h”h´KhjFubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubj)�”}”(hŒŠ``TSM_MR_F_LIVE`` - this MR's value may differ from the last value written, so must be read back from the underlying CC hardware/firmware.”h]”jî)�”}”(hŒŠ``TSM_MR_F_LIVE`` - this MR's value may differ from the last value written, so must be read back from the underlying CC hardware/firmware.”h]”(jr)�”}”(hŒ``TSM_MR_F_LIVE``”h]”hŒ TSM_MR_F_LIVE”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jqhjqubhŒ{ - this MR’s value may differ from the last value written, so must be read back from the underlying CC hardware/firmware.”…”�”}”(hjqh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jíh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:94: ./include/linux/tsm-mr.h”h´Khjmubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubj)�”}”(hŒN``TSM_MR_F_RTMR`` - bitwise-OR of ``TSM_MR_F_LIVE`` and ``TSM_MR_F_WRITABLE``.”h]”jî)�”}”(hj–h]”(jr)�”}”(hŒ``TSM_MR_F_RTMR``”h]”hŒ TSM_MR_F_RTMR”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jqhj˜ubhŒ - bitwise-OR of ”…”�”}”(hj˜h²hh³Nh´Nubjr)�”}”(hŒ``TSM_MR_F_LIVE``”h]”hŒ TSM_MR_F_LIVE”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jqhj˜ubhŒ and ”…”�”}”(hj˜h²hh³Nh´Nubjr)�”}”(hŒ``TSM_MR_F_WRITABLE``”h]”hŒTSM_MR_F_WRITABLE”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jqhj˜ubhŒ.”…”�”}”(hj˜h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jíh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:94: ./include/linux/tsm-mr.h”h´Khj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubj)�”}”(hŒ€``TSM_MR_F_NOHASH`` - this MR does NOT have an associated hash algorithm. **mr_hash** will be ignored when this flag is set. ”h]”jî)�”}”(hŒ|``TSM_MR_F_NOHASH`` - this MR does NOT have an associated hash algorithm. **mr_hash** will be ignored when this flag is set.”h]”(jr)�”}”(hŒ``TSM_MR_F_NOHASH``”h]”hŒTSM_MR_F_NOHASH”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jqhjâubhŒ7 - this MR does NOT have an associated hash algorithm. ”…”�”}”(hjâh²hh³Nh´Nubj)�”}”(hŒ **mr_hash**”h]”hŒmr_hash”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjâubhŒ' will be ignored when this flag is set.”…”�”}”(hjâh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jíh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:94: ./include/linux/tsm-mr.h”h´K hjÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ*”uh1jh³j?h´Khj]h²hubjq)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j}Œtsm_measurements (C struct)”Œc.tsm_measurements”hNt”auh1jphj]h²hh³j�h´Nubjƒ)�”}”(hhh]”(jˆ)�”}”(hŒtsm_measurements”h]”jŽ)�”}”(hŒstruct tsm_measurements”h]”(j”)�”}”(hj—h]”hŒstruct”…”�”}”(hj8 h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj4 h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:94: ./include/linux/tsm-mr.h”h´K&ubj¦)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjF h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj4 h²hh³jE h´K&ubj·)�”}”(hŒtsm_measurements”h]”j½)�”}”(hj2 h]”hŒtsm_measurements”…”�”}”(hjX h²hh³Nh´Nubah}”(h]”h ]”jÈah"]”h$]”h&]”uh1j¼hjT ubah}”(h]”h ]”(jÏjÐeh"]”h$]”h&]”hÅhÆuh1j¶hj4 h²hh³jE h´K&ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjÚˆuh1j�jÛjÜhj0 h²hh³jE h´K&ubah}”(h]”j+ ah ]”(jàjáeh"]”h$]”h&]”jåˆjæ)jçhuh1j‡h³jE h´K&hj- h²hubjé)�”}”(hhh]”jî)�”}”(hŒndefines the CC architecture specific measurement facility and methods for updating measurement registers (MRs)”h]”hŒndefines the CC architecture specific measurement facility and methods for updating measurement registers (MRs)”…”�”}”(hjz h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:94: ./include/linux/tsm-mr.h”h´K7hjw h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jèhj- h²hh³jE h´K&ubeh}”(h]”h ]”(jŒstruct”eh"]”h$]”h&]”j jj j’ jj’ j‰j‰j‰uh1j‚h²hhj]h³j�h´Nubj)�”}”(hX„**Definition**:: struct tsm_measurements { const struct tsm_measurement_register *mrs; size_t nr_mrs; int (*refresh)(const struct tsm_measurements *tm); int (*write)(const struct tsm_measurements *tm, const struct tsm_measurement_register *mr, const u8 *data); }; **Members** ``mrs`` Array of MR definitions. ``nr_mrs`` Number of elements in **mrs**. ``refresh`` Callback function to load/sync all MRs from TVM hardware/firmware into the kernel cache. ``write`` Callback function to write to the MR specified by the parameter **mr**. Typically, writing to an MR extends the input buffer to that MR.”h]”(jî)�”}”(hŒ**Definition**::”h]”(j)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjž h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjš ubhŒ:”…”�”}”(hjš h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jíh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:94: ./include/linux/tsm-mr.h”h´K;hj– ubj8)�”}”(hXstruct tsm_measurements { const struct tsm_measurement_register *mrs; size_t nr_mrs; int (*refresh)(const struct tsm_measurements *tm); int (*write)(const struct tsm_measurements *tm, const struct tsm_measurement_register *mr, const u8 *data); };”h]”hXstruct tsm_measurements { const struct tsm_measurement_register *mrs; size_t nr_mrs; int (*refresh)(const struct tsm_measurements *tm); int (*write)(const struct tsm_measurements *tm, const struct tsm_measurement_register *mr, const u8 *data); };”…”�”}”hj· sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j7h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:94: ./include/linux/tsm-mr.h”h´K=hj– ubjî)�”}”(hŒ **Members**”h]”j)�”}”(hjÈ h]”hŒMembers”…”�”}”(hjÊ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÆ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jíh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:94: ./include/linux/tsm-mr.h”h´KDhj– ubja)�”}”(hhh]”(jf)�”}”(hŒ!``mrs`` Array of MR definitions. ”h]”(jl)�”}”(hŒ``mrs``”h]”jr)�”}”(hjç h]”hŒmrs”…”�”}”(hjé h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jqhjå ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:94: ./include/linux/tsm-mr.h”h´K:hjá ubjˆ)�”}”(hhh]”jî)�”}”(hŒArray of MR definitions.”h]”hŒArray of MR definitions.”…”�”}”(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&]”uh1jeh³jü h´K:hjÞ ubjf)�”}”(hŒ*``nr_mrs`` Number of elements in **mrs**. ”h]”(jl)�”}”(hŒ ``nr_mrs``”h]”jr)�”}”(hj h]”hŒnr_mrs”…”�”}”(hj" h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jqhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:94: ./include/linux/tsm-mr.h”h´K;hj ubjˆ)�”}”(hhh]”jî)�”}”(hŒNumber of elements in **mrs**.”h]”(hŒNumber of elements in ”…”�”}”(hj9 h²hh³Nh´Nubj)�”}”(hŒ**mrs**”h]”hŒmrs”…”�”}”(hjA h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj9 ubhŒ.”…”�”}”(hj9 h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jíh³j5 h´K;hj6 ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jeh³j5 h´K;hjÞ ubjf)�”}”(hŒe``refresh`` Callback function to load/sync all MRs from TVM hardware/firmware into the kernel cache. ”h]”(jl)�”}”(hŒ ``refresh``”h]”jr)�”}”(hjk h]”hŒrefresh”…”�”}”(hjm h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jqhji ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:94: ./include/linux/tsm-mr.h”h´K=hje ubjˆ)�”}”(hhh]”jî)�”}”(hŒXCallback function to load/sync all MRs from TVM hardware/firmware into the kernel cache.”h]”hŒXCallback function to load/sync all MRs from TVM hardware/firmware into the kernel cache.”…”�”}”(hj„ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:94: ./include/linux/tsm-mr.h”h´KhjŸ ubjˆ)�”}”(hhh]”jî)�”}”(hŒˆCallback function to write to the MR specified by the parameter **mr**. Typically, writing to an MR extends the input buffer to that MR.”h]”(hŒ@Callback function to write to the MR specified by the parameter ”…”�”}”(hj¾ h²hh³Nh´Nubj)�”}”(hŒ**mr**”h]”hŒmr”…”�”}”(hjÆ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¾ ubhŒB. Typically, writing to an MR extends the input buffer to that MR.”…”�”}”(hj¾ h²hh³Nh´Nubeh}”(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&]”uh1jeh³jº h´K>hjÞ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j`hj– ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj]h²hh³j�h´Nubjî)�”}”(hŒ**Description**”h]”j)�”}”(hjù h]”hŒ Description”…”�”}”(hjû h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj÷ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jíh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:94: ./include/linux/tsm-mr.h”h´KBhj]h²hubjî)�”}”(hŒîThe **refresh** callback is invoked when an MR with ``TSM_MR_F_LIVE`` set is being read and the cache is stale. It must reload all MRs with ``TSM_MR_F_LIVE`` set. The function parameter **tm** is a pointer pointing back to this structure.”h]”(hŒThe ”…”�”}”(hj h²hh³Nh´Nubj)�”}”(hŒ **refresh**”h]”hŒrefresh”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubhŒ% callback is invoked when an MR with ”…”�”}”(hj h²hh³Nh´Nubjr)�”}”(hŒ``TSM_MR_F_LIVE``”h]”hŒ TSM_MR_F_LIVE”…”�”}”(hj) h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jqhj ubhŒG set is being read and the cache is stale. It must reload all MRs with ”…”�”}”(hj h²hh³Nh´Nubjr)�”}”(hŒ``TSM_MR_F_LIVE``”h]”hŒ TSM_MR_F_LIVE”…”�”}”(hj; h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jqhj ubhŒ set. The function parameter ”…”�”}”(hj h²hh³Nh´Nubj)�”}”(hŒ**tm**”h]”hŒtm”…”�”}”(hjM h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubhŒ. is a pointer pointing back to this structure.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jíh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:94: ./include/linux/tsm-mr.h”h´K?hj]h²hubjî)�”}”(hŒuThe **write** callback is invoked whenever an MR is being written. It takes two additional parameters besides **tm**:”h]”(hŒThe ”…”�”}”(hjf h²hh³Nh´Nubj)�”}”(hŒ **write**”h]”hŒwrite”…”�”}”(hjn h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjf ubhŒa callback is invoked whenever an MR is being written. It takes two additional parameters besides ”…”�”}”(hjf h²hh³Nh´Nubj)�”}”(hŒ**tm**”h]”hŒtm”…”�”}”(hj€ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjf ubhŒ:”…”�”}”(hjf h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jíh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:94: ./include/linux/tsm-mr.h”h´KChj]h²hubj)�”}”(hhh]”(j)�”}”(hŒD**mr** - points to the MR (an element of **tm->mrs**) being written.”h]”jî)�”}”(hjž h]”(j)�”}”(hŒ**mr**”h]”hŒmr”…”�”}”(hj£ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj  ubhŒ# - points to the MR (an element of ”…”�”}”(hj  h²hh³Nh´Nubj)�”}”(hŒ **tm->mrs**”h]”hŒtm->mrs”…”�”}”(hjµ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj  ubhŒ) being written.”…”�”}”(hj  h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jíh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:94: ./include/linux/tsm-mr.h”h´KFhjœ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj™ ubj)�”}”(hŒJ**data** - contains the bytes to write and whose size is **mr->mr_size**. ”h]”jî)�”}”(hŒI**data** - contains the bytes to write and whose size is **mr->mr_size**.”h]”(j)�”}”(hŒ**data**”h]”hŒdata”…”�”}”(hjÜ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjØ ubhŒ1 - contains the bytes to write and whose size is ”…”�”}”(hjØ h²hh³Nh´Nubj)�”}”(hŒ**mr->mr_size**”h]”hŒ mr->mr_size”…”�”}”(hjî h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjØ ubhŒ.”…”�”}”(hjØ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jíh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:94: ./include/linux/tsm-mr.h”h´KGhjÔ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj™ ubeh}”(h]”h ]”h"]”h$]”h&]”j j uh1jh³jÍ h´KFhj]h²hubjî)�”}”(hŒcBoth **refresh** and **write** should return 0 on success and an appropriate error code on failure.”h]”(hŒBoth ”…”�”}”(hj h²hh³Nh´Nubj)�”}”(hŒ **refresh**”h]”hŒrefresh”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubhŒ and ”…”�”}”(hj h²hh³Nh´Nubj)�”}”(hŒ **write**”h]”hŒwrite”…”�”}”(hj- h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubhŒE should return 0 on success and an appropriate error code on failure.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jíh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:94: ./include/linux/tsm-mr.h”h´KIhj]h²hubjq)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j}Œ*tsm_mr_create_attribute_group (C function)”Œc.tsm_mr_create_attribute_group”hNt”auh1jphj]h²hh³Nh´Nubjƒ)�”}”(hhh]”(jˆ)�”}”(hŒ`const struct attribute_group * tsm_mr_create_attribute_group (const struct tsm_measurements *tm)”h]”jŽ)�”}”(hŒ^const struct attribute_group *tsm_mr_create_attribute_group(const struct tsm_measurements *tm)”h]”(j”)�”}”(hŒconst”h]”hŒconst”…”�”}”(hj_ h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj[ h²hh³Œv/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:97: ./drivers/virt/coco/guest/tsm-mr.c”h´K{ubj¦)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjn h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj[ h²hh³jm h´K{ubj”)�”}”(hj—h]”hŒstruct”…”�”}”(hj| h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj[ h²hh³jm h´K{ubj¦)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰ h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj[ h²hh³jm h´K{ubh)�”}”(hhh]”j½)�”}”(hŒattribute_group”h]”hŒattribute_group”…”�”}”(hjš h²hh³Nh´Nubah}”(h]”h ]”jÈah"]”h$]”h&]”uh1j¼hj— ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”Œ identifier”Œ reftarget”jœ Œmodname”NŒ classname”NŒ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”jµ Œ ASTIdentifier”“”)�”}”j° Œtsm_mr_create_attribute_group”sbŒc.tsm_mr_create_attribute_group”†”asbuh1hhj[ h²hh³jm h´K{ubj¦)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjà h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj[ h²hh³jm h´K{ubhŒdesc_sig_punctuation”“”)�”}”(hj h]”hŒ*”…”�”}”(hjÓ h²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1jÑ hj[ h²hh³jm h´K{ubj·)�”}”(hŒtsm_mr_create_attribute_group”h]”j½)�”}”(hjÀ h]”hŒtsm_mr_create_attribute_group”…”�”}”(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³jm h´K{ubhŒdesc_parameterlist”“”)�”}”(hŒ#(const struct tsm_measurements *tm)”h]”hŒdesc_parameter”“”)�”}”(hŒ!const struct tsm_measurements *tm”h]”(j”)�”}”(hja h]”hŒconst”…”�”}”(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 ubj”)�”}”(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Œtsm_measurements”h]”hŒtsm_measurements”…”�”}”(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.tsm_mr_create_attribute_group”†”asbuh1hhj ubj¦)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[ h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj ubjÒ )�”}”(hj h]”hŒ*”…”�”}”(hji h²hh³Nh´Nubah}”(h]”h ]”jÝ ah"]”h$]”h&]”uh1jÑ hj ubj½)�”}”(hŒtm”h]”hŒtm”…”�”}”(hjv h²hh³Nh´Nubah}”(h]”h ]”jÈah"]”h$]”h&]”uh1j¼hj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jþ hjú ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jø hj[ h²hh³jm h´K{ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjÚˆuh1j�jÛjÜhjW h²hh³jm h´K{ubah}”(h]”jR ah ]”(jàjáeh"]”h$]”h&]”jåˆjæ)jçhuh1j‡h³jm h´K{hjT h²hubjé)�”}”(hhh]”jî)�”}”(hŒ:creates an attribute group for measurement registers (MRs)”h]”hŒ:creates an attribute group for measurement registers (MRs)”…”�”}”(hj  h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíh³Œv/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:97: ./drivers/virt/coco/guest/tsm-mr.c”h´K{hj� h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jèhjT h²hh³jm h´K{ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j jj j¸ jj¸ j‰j‰j‰uh1j‚h²hhj]h³Nh´Nubj)�”}”(hXz**Parameters** ``const struct tsm_measurements *tm`` pointer to :c:type:`struct tsm_measurements ` containing the MR definitions. **Description** This function creates attributes corresponding to the MR definitions provided by **tm->mrs**. The created attributes will reference **tm** and its members. The caller must not free **tm** until after tsm_mr_free_attribute_group() is called. **Context** Process context. May sleep due to memory allocation. **Return** * On success, the pointer to a an attribute group is returned; otherwise * ``-EINVAL`` - Invalid MR definitions. * ``-ENOMEM`` - Out of memory.”h]”(jî)�”}”(hŒ**Parameters**”h]”j)�”}”(hj h]”hŒ Parameters”…”�”}”(hjÄ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÀ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jíh³Œv/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:97: ./drivers/virt/coco/guest/tsm-mr.c”h´Khj¼ ubja)�”}”(hhh]”jf)�”}”(hŒ…``const struct tsm_measurements *tm`` pointer to :c:type:`struct tsm_measurements ` containing the MR definitions. ”h]”(jl)�”}”(hŒ%``const struct tsm_measurements *tm``”h]”jr)�”}”(hjá h]”hŒ!const struct tsm_measurements *tm”…”�”}”(hjã h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jqhjß ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œv/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:97: ./drivers/virt/coco/guest/tsm-mr.c”h´K}hjÛ ubjˆ)�”}”(hhh]”jî)�”}”(hŒ^pointer to :c:type:`struct tsm_measurements ` containing the MR definitions.”h]”(hŒ pointer to ”…”�”}”(hjú h²hh³Nh´Nubh)�”}”(hŒ4:c:type:`struct tsm_measurements `”h]”jr)�”}”(hjh]”hŒstruct tsm_measurements”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(Œxref”jŒc-type”eh"]”h$]”h&]”uh1jqhjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œ%driver-api/coco/measurement-registers”Œ refdomain”jŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j´ j· )�”}”jº ]”sbŒ reftarget”Œtsm_measurements”uh1hh³jö h´K}hjú ubhŒ containing the MR definitions.”…”�”}”(hjú h²hh³Nh´Nubeh}”(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&]”uh1jeh³jö h´K}hjØ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j`hj¼ ubjî)�”}”(hŒ**Description**”h]”j)�”}”(hjEh]”hŒ Description”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjCubah}”(h]”h ]”h"]”h$]”h&]”uh1jíh³Œv/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:97: ./drivers/virt/coco/guest/tsm-mr.c”h´Khj¼ ubjî)�”}”(hŒ]This function creates attributes corresponding to the MR definitions provided by **tm->mrs**.”h]”(hŒQThis function creates attributes corresponding to the MR definitions provided by ”…”�”}”(hj[h²hh³Nh´Nubj)�”}”(hŒ **tm->mrs**”h]”hŒtm->mrs”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj[ubhŒ.”…”�”}”(hj[h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jíh³Œv/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:97: ./drivers/virt/coco/guest/tsm-mr.c”h´K~hj¼ ubjî)�”}”(hŒ’The created attributes will reference **tm** and its members. The caller must not free **tm** until after tsm_mr_free_attribute_group() is called.”h]”(hŒ&The created attributes will reference ”…”�”}”(hj|h²hh³Nh´Nubj)�”}”(hŒ**tm**”h]”hŒtm”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj|ubhŒ+ and its members. The caller must not free ”…”�”}”(hj|h²hh³Nh´Nubj)�”}”(hŒ**tm**”h]”hŒtm”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj|ubhŒ5 until after tsm_mr_free_attribute_group() is called.”…”�”}”(hj|h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jíh³Œv/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:97: ./drivers/virt/coco/guest/tsm-mr.c”h´K�hj¼ ubjî)�”}”(hŒ **Context**”h]”j)�”}”(hj±h]”hŒContext”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jíh³Œv/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:97: ./drivers/virt/coco/guest/tsm-mr.c”h´K„hj¼ ubjî)�”}”(hŒ4Process context. May sleep due to memory allocation.”h]”hŒ4Process context. May sleep due to memory allocation.”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíh³Œv/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:97: ./drivers/virt/coco/guest/tsm-mr.c”h´K…hj¼ ubjî)�”}”(hŒ **Return**”h]”j)�”}”(hjØh]”hŒReturn”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jíh³Œv/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:97: ./drivers/virt/coco/guest/tsm-mr.c”h´K‡hj¼ ubj)�”}”(hhh]”(j)�”}”(hŒFOn success, the pointer to a an attribute group is returned; otherwise”h]”jî)�”}”(hjóh]”hŒFOn success, the pointer to a an attribute group is returned; otherwise”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíh³Œv/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:97: ./drivers/virt/coco/guest/tsm-mr.c”h´K‡hjñubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjîubj)�”}”(hŒ%``-EINVAL`` - Invalid MR definitions.”h]”jî)�”}”(hj h]”(jr)�”}”(hŒ ``-EINVAL``”h]”hŒ-EINVAL”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jqhj ubhŒ - Invalid MR definitions.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jíh³Œv/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:97: ./drivers/virt/coco/guest/tsm-mr.c”h´Kˆhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjîubj)�”}”(hŒ``-ENOMEM`` - Out of memory.”h]”jî)�”}”(hj1h]”(jr)�”}”(hŒ ``-ENOMEM``”h]”hŒ-ENOMEM”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jqhj3ubhŒ - Out of memory.”…”�”}”(hj3h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jíh³Œv/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:97: ./drivers/virt/coco/guest/tsm-mr.c”h´K‰hj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjîubeh}”(h]”h ]”h"]”h$]”h&]”j j uh1jh³jh´K‡hj¼ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj]h²hh³Nh´Nubjq)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j}Œ(tsm_mr_free_attribute_group (C function)”Œc.tsm_mr_free_attribute_group”hNt”auh1jphj]h²hh³Nh´Nubjƒ)�”}”(hhh]”(jˆ)�”}”(hŒIvoid tsm_mr_free_attribute_group (const struct attribute_group *attr_grp)”h]”jŽ)�”}”(hŒHvoid tsm_mr_free_attribute_group(const struct attribute_group *attr_grp)”h]”(hŒdesc_sig_keyword_type”“”)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”Œkt”ah"]”h$]”h&]”uh1j{hjwh²hh³Œv/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:97: ./drivers/virt/coco/guest/tsm-mr.c”h´Kîubj¦)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjwh²hh³jŒh´Kîubj·)�”}”(hŒtsm_mr_free_attribute_group”h]”j½)�”}”(hŒtsm_mr_free_attribute_group”h]”hŒtsm_mr_free_attribute_group”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jÈah"]”h$]”h&]”uh1j¼hj›ubah}”(h]”h ]”(jÏjÐeh"]”h$]”h&]”hÅhÆuh1j¶hjwh²hh³jŒh´Kîubjù )�”}”(hŒ((const struct attribute_group *attr_grp)”h]”jÿ )�”}”(hŒ&const struct attribute_group *attr_grp”h]”(j”)�”}”(hja h]”hŒconst”…”�”}”(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·ubj”)�”}”(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Œattribute_group”h]”hŒattribute_group”…”�”}”(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½ )�”}”j° j¡sbŒc.tsm_mr_free_attribute_group”†”asbuh1hhj·ubj¦)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj·ubjÒ )�”}”(hj h]”hŒ*”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jÝ ah"]”h$]”h&]”uh1jÑ hj·ubj½)�”}”(hŒattr_grp”h]”hŒattr_grp”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jÈah"]”h$]”h&]”uh1j¼hj·ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jþ hj³ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jø hjwh²hh³jŒh´Kîubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjÚˆuh1j�jÛjÜhjsh²hh³jŒh´Kîubah}”(h]”jnah ]”(jàjáeh"]”h$]”h&]”jåˆjæ)jçhuh1j‡h³jŒh´Kîhjph²hubjé)�”}”(hhh]”jî)�”}”(hŒEfrees the attribute group returned by tsm_mr_create_attribute_group()”h]”hŒEfrees the attribute group returned by tsm_mr_create_attribute_group()”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíh³Œv/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:97: ./drivers/virt/coco/guest/tsm-mr.c”h´KîhjVh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jèhjph²hh³jŒh´Kîubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j jj jqjjqj‰j‰j‰uh1j‚h²hhj]h³Nh´Nubj)�”}”(hŒ—**Parameters** ``const struct attribute_group *attr_grp`` attribute group returned by tsm_mr_create_attribute_group() **Context** Process context.”h]”(jî)�”}”(hŒ**Parameters**”h]”j)�”}”(hj{h]”hŒ Parameters”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjyubah}”(h]”h ]”h"]”h$]”h&]”uh1jíh³Œv/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:97: ./drivers/virt/coco/guest/tsm-mr.c”h´Kòhjuubja)�”}”(hhh]”jf)�”}”(hŒg``const struct attribute_group *attr_grp`` attribute group returned by tsm_mr_create_attribute_group() ”h]”(jl)�”}”(hŒ*``const struct attribute_group *attr_grp``”h]”jr)�”}”(hjšh]”hŒ&const struct attribute_group *attr_grp”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jqhj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œv/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:97: ./drivers/virt/coco/guest/tsm-mr.c”h´Kðhj”ubjˆ)�”}”(hhh]”jî)�”}”(hŒ;attribute group returned by tsm_mr_create_attribute_group()”h]”hŒ;attribute group returned by tsm_mr_create_attribute_group()”…”�”}”(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&]”uh1jeh³j¯h´Kðhj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j`hjuubjî)�”}”(hŒ **Context**”h]”j)�”}”(hjÕh]”hŒContext”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jíh³Œv/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:97: ./drivers/virt/coco/guest/tsm-mr.c”h´Kòhjuubjî)�”}”(hŒProcess context.”h]”hŒProcess context.”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jíh³Œv/var/lib/git/docbuild/linux/Documentation/driver-api/coco/measurement-registers:97: ./drivers/virt/coco/guest/tsm-mr.c”h´Kòhjuubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj]h²hh³Nh´Nubeh}”(h]”Œmeasurement-registers”ah ]”h"]”Œmeasurement registers”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,Œ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”}”jjsŒ nametypes”}”j‰sh}”(jj]jj‰j+ j0 jR jW jnjsuŒ 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”]”Œ7Documentation/driver-api/coco/measurement-registers.rst”(NNNNt”†”aŒ decoration”Nh²hub.