€•?�Œ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/gpu/drm-usage-stats”Œ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/gpu/drm-usage-stats”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ'/translations/it_IT/gpu/drm-usage-stats”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ'/translations/ja_JP/gpu/drm-usage-stats”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ'/translations/ko_KR/gpu/drm-usage-stats”Œ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/gpu/drm-usage-stats”Œ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/gpu/drm-usage-stats”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒtarget”“”)�”}”(hŒ.. _drm-client-usage-stats:”h]”h}”(h]”h ]”h"]”h$]”h&]”Œrefid”Œdrm-client-usage-stats”uh1hµh´Khhh²hh³ŒA/var/lib/git/docbuild/linux/Documentation/gpu/drm-usage-stats.rst”ubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒDRM client usage stats”h]”hŒDRM client usage stats”…”�”}”(hhËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÁŒid2”uh1hÉhhÆh²hh³hÃh´KubhŒ paragraph”“”)�”}”(hŒØDRM drivers can choose to export partly standardised text output via the `fops->show_fdinfo()` as part of the driver specific file operations registered in the `struct drm_driver` object registered with the DRM core.”h]”(hŒIDRM drivers can choose to export partly standardised text output via the ”…”�”}”(hhÜh²hh³Nh´NubhŒtitle_reference”“”)�”}”(hŒ`fops->show_fdinfo()`”h]”hŒfops->show_fdinfo()”…”�”}”(hhæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hähhÜubhŒB as part of the driver specific file operations registered in the ”…”�”}”(hhÜh²hh³Nh´Nubhå)�”}”(hŒ`struct drm_driver`”h]”hŒstruct drm_driver”…”�”}”(hhøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hähhÜubhŒ% object registered with the DRM core.”…”�”}”(hhÜh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´KhhÆh²hubhÛ)�”}”(hŒ|One purpose of this output is to enable writing as generic as practically feasible `top(1)` like userspace monitoring tools.”h]”(hŒSOne purpose of this output is to enable writing as generic as practically feasible ”…”�”}”(hjh²hh³Nh´Nubhå)�”}”(hŒ`top(1)`”h]”hŒtop(1)”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hähjubhŒ! like userspace monitoring tools.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´K hhÆh²hubhÛ)�”}”(hŒèGiven the differences between various DRM drivers the specification of the output is split between common and driver specific parts. Having said that, wherever possible effort should still be made to standardise as much as possible.”h]”hŒèGiven the differences between various DRM drivers the specification of the output is split between common and driver specific parts. Having said that, wherever possible effort should still be made to standardise as much as possible.”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´KhhÆh²hubhŒtopic”“”)�”}”(hŒ Contents ”h]”(hÊ)�”}”(hŒContents”h]”hŒContents”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhj@h³hÃh´KubhŒ bullet_list”“”)�”}”(hhh]”hŒ list_item”“”)�”}”(hhh]”(hÛ)�”}”(hhh]”hŒ reference”“”)�”}”(hhh]”hŒDRM client usage stats”…”�”}”(hjah²hh³Nh´Nubah}”(h]”hÙah ]”h"]”h$]”h&]”Œrefid”hÂuh1j_hj\ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhjYubjS)�”}”(hhh]”(jX)�”}”(hhh]”(hÛ)�”}”(hhh]”j`)�”}”(hhh]”hŒFile format specification”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”Œid3”ah ]”h"]”h$]”h&]”Œrefid”Œfile-format-specification”uh1j_hj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhjxubjS)�”}”(hhh]”(jX)�”}”(hhh]”hÛ)�”}”(hhh]”j`)�”}”(hhh]”hŒ Key types”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”Œid4”ah ]”h"]”h$]”h&]”Œrefid”Œ key-types”uh1j_hjšubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj”ubjX)�”}”(hhh]”hÛ)�”}”(hhh]”j`)�”}”(hhh]”hŒ Data types”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”Œid5”ah ]”h"]”h$]”h&]”Œrefid”Œ data-types”uh1j_hj¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj”ubjX)�”}”(hhh]”hÛ)�”}”(hhh]”j`)�”}”(hhh]”hŒ!Mandatory fully standardised keys”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”Œid6”ah ]”h"]”h$]”h&]”Œrefid”Œ!mandatory-fully-standardised-keys”uh1j_hjÞubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj”ubjX)�”}”(hhh]”(hÛ)�”}”(hhh]”j`)�”}”(hhh]”hŒ Optional fully standardised keys”…”�”}”(hjh²hh³Nh´Nubah}”(h]”Œid7”ah ]”h"]”h$]”h&]”Œrefid”Œ optional-fully-standardised-keys”uh1j_hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhjýubjS)�”}”(hhh]”(jX)�”}”(hhh]”hÛ)�”}”(hhh]”j`)�”}”(hhh]”hŒIdentification”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”Œid8”ah ]”h"]”h$]”h&]”Œrefid”Œidentification”uh1j_hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjubjX)�”}”(hhh]”hÛ)�”}”(hhh]”j`)�”}”(hhh]”hŒ Utilization”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”Œid9”ah ]”h"]”h$]”h&]”Œrefid”Œ utilization”uh1j_hjAubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjubjX)�”}”(hhh]”hÛ)�”}”(hhh]”j`)�”}”(hhh]”hŒMemory”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”Œid10”ah ]”h"]”h$]”h&]”Œrefid”Œmemory”uh1j_hjcubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhj`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jRhjýubeh}”(h]”h ]”h"]”h$]”h&]”uh1jWhj”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jRhjxubeh}”(h]”h ]”h"]”h$]”h&]”uh1jWhjuubjX)�”}”(hhh]”(hÛ)�”}”(hhh]”j`)�”}”(hhh]”hŒImplementation Details”…”�”}”(hj h²hh³Nh´Nubah}”(h]”Œid11”ah ]”h"]”h$]”h&]”Œrefid”Œimplementation-details”uh1j_hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhjšubjS)�”}”(hhh]”jX)�”}”(hhh]”hÛ)�”}”(hhh]”j`)�”}”(hhh]”hŒDriver specific implementations”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”Œid12”ah ]”h"]”h$]”h&]”Œrefid”Œdriver-specific-implementations”uh1j_hj¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjšubeh}”(h]”h ]”h"]”h$]”h&]”uh1jWhjuubeh}”(h]”h ]”h"]”h$]”h&]”uh1jRhjYubeh}”(h]”h ]”h"]”h$]”h&]”uh1jWhjTubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj@h²hh³Nh´Nubeh}”(h]”Œcontents”ah ]”Œcontents”ah"]”Œcontents”ah$]”h&]”uh1j>h³hÃh´KhhÆh²hubhÅ)�”}”(hhh]”(hÊ)�”}”(hŒFile format specification”h]”hŒFile format specification”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÁj‡uh1hÉhjh²hh³hÃh´KubjS)�”}”(hhh]”(jX)�”}”(hŒ;File shall contain one key value pair per one line of text.”h]”hÛ)�”}”(hjh]”hŒ;File shall contain one key value pair per one line of text.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjh²hh³hÃh´NubjX)�”}”(hŒ>Colon character (`:`) must be used to delimit keys and values.”h]”hÛ)�”}”(hj/h]”(hŒColon character (”…”�”}”(hj1h²hh³Nh´Nubhå)�”}”(hŒ`:`”h]”hŒ:”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hähj1ubhŒ*) must be used to delimit keys and values.”…”�”}”(hj1h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´Khj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjh²hh³hÃh´NubjX)�”}”(hŒ4All standardised keys shall be prefixed with `drm-`.”h]”hÛ)�”}”(hjXh]”(hŒ-All standardised keys shall be prefixed with ”…”�”}”(hjZh²hh³Nh´Nubhå)�”}”(hŒ`drm-`”h]”hŒdrm-”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hähjZubhŒ.”…”�”}”(hjZh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´KhjVubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjh²hh³hÃh´NubjX)�”}”(hŒ´Driver-specific keys shall be prefixed with `driver_name-`, where driver_name should ideally be the same as the `name` field in `struct drm_driver`, although this is not mandatory.”h]”hÛ)�”}”(hŒ´Driver-specific keys shall be prefixed with `driver_name-`, where driver_name should ideally be the same as the `name` field in `struct drm_driver`, although this is not mandatory.”h]”(hŒ,Driver-specific keys shall be prefixed with ”…”�”}”(hjƒh²hh³Nh´Nubhå)�”}”(hŒ`driver_name-`”h]”hŒ driver_name-”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hähjƒubhŒ6, where driver_name should ideally be the same as the ”…”�”}”(hjƒh²hh³Nh´Nubhå)�”}”(hŒ`name`”h]”hŒname”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hähjƒubhŒ field in ”…”�”}”(hjƒh²hh³Nh´Nubhå)�”}”(hŒ`struct drm_driver`”h]”hŒstruct drm_driver”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hähjƒubhŒ!, although this is not mandatory.”…”�”}”(hjƒh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjh²hh³hÃh´NubjX)�”}”(hŒbWhitespace between the delimiter and first non-whitespace character shall be ignored when parsing.”h]”hÛ)�”}”(hŒbWhitespace between the delimiter and first non-whitespace character shall be ignored when parsing.”h]”hŒbWhitespace between the delimiter and first non-whitespace character shall be ignored when parsing.”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´KhjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjh²hh³hÃh´NubjX)�”}”(hŒ6Keys are not allowed to contain whitespace characters.”h]”hÛ)�”}”(hjçh]”hŒ6Keys are not allowed to contain whitespace characters.”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´K hjåubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjh²hh³hÃh´NubjX)�”}”(hŒ - Unsigned integer without defining the maximum value.”h]”hÛ)�”}”(hj·h]”hŒ= - Unsigned integer without defining the maximum value.”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´K.hjµubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj²h²hh³hÃh´NubjX)�”}”(hŒP - String excluding any above defined reserved characters or whitespace.”h]”hÛ)�”}”(hjÎh]”hŒP - String excluding any above defined reserved characters or whitespace.”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´K/hjÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj²h²hh³hÃh´NubjX)�”}”(hŒ - String. ”h]”hÛ)�”}”(hŒ - String.”h]”hŒ - String.”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´K0hjãubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj²h²hh³hÃh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j1j2uh1jRh³hÃh´K.hj¡h²hubeh}”(h]”jÎah ]”h"]”Œ data types”ah$]”h&]”uh1hÄhjh²hh³hÃh´K,ubhÅ)�”}”(hhh]”(hÊ)�”}”(hŒ!Mandatory fully standardised keys”h]”hŒ!Mandatory fully standardised keys”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÁjêuh1hÉhjh²hh³hÃh´K3ubjS)�”}”(hhh]”jX)�”}”(hŒdrm-driver: ”h]”hÛ)�”}”(hŒdrm-driver: ”h]”hŒdrm-driver: ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´K5hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjh²hh³hÃh´Nubah}”(h]”h ]”h"]”h$]”h&]”j1j2uh1jRh³hÃh´K5hjh²hubhÛ)�”}”(hŒnString shall contain the name this driver registered as via the respective `struct drm_driver` data structure.”h]”(hŒKString shall contain the name this driver registered as via the respective ”…”�”}”(hj:h²hh³Nh´Nubhå)�”}”(hŒ`struct drm_driver`”h]”hŒstruct drm_driver”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hähj:ubhŒ data structure.”…”�”}”(hj:h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´K7hjh²hubeh}”(h]”jðah ]”h"]”Œ!mandatory fully standardised keys”ah$]”h&]”uh1hÄhjh²hh³hÃh´K3ubhÅ)�”}”(hhh]”(hÊ)�”}”(hŒ Optional fully standardised keys”h]”hŒ Optional fully standardised keys”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÁj uh1hÉhjah²hh³hÃh´K;ubhÅ)�”}”(hhh]”(hÊ)�”}”(hŒIdentification”h]”hŒIdentification”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÁj+uh1hÉhjrh²hh³hÃh´K>ubjS)�”}”(hhh]”jX)�”}”(hŒdrm-pdev: ”h]”hÛ)�”}”(hŒdrm-pdev: ”h]”hŒdrm-pdev: ”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´K@hj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjƒh²hh³hÃh´Nubah}”(h]”h ]”h"]”h$]”h&]”j1j2uh1jRh³hÃh´K@hjrh²hubhÛ)�”}”(hŒSFor PCI devices this should contain the PCI slot address of the device in question.”h]”hŒSFor PCI devices this should contain the PCI slot address of the device in question.”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´KBhjrh²hubjS)�”}”(hhh]”jX)�”}”(hŒdrm-client-id: ”h]”hÛ)�”}”(hŒdrm-client-id: ”h]”hŒdrm-client-id: ”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´KEhjµubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj²h²hh³hÃh´Nubah}”(h]”h ]”h"]”h$]”h&]”j1j2uh1jRh³hÃh´KEhjrh²hubhÛ)�”}”(hŒ×Unique value relating to the open DRM file descriptor used to distinguish duplicated and shared file descriptors. Conceptually the value should map 1:1 to the in kernel representation of `struct drm_file` instances.”h]”(hŒ»Unique value relating to the open DRM file descriptor used to distinguish duplicated and shared file descriptors. Conceptually the value should map 1:1 to the in kernel representation of ”…”�”}”(hjÓh²hh³Nh´Nubhå)�”}”(hŒ`struct drm_file`”h]”hŒstruct drm_file”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hähjÓubhŒ instances.”…”�”}”(hjÓh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´KGhjrh²hubhÛ)�”}”(hŒ–Uniqueness of the value shall be either globally unique, or unique within the scope of each device, in which case `drm-pdev` shall be present as well.”h]”(hŒrUniqueness of the value shall be either globally unique, or unique within the scope of each device, in which case ”…”�”}”(hjóh²hh³Nh´Nubhå)�”}”(hŒ `drm-pdev`”h]”hŒdrm-pdev”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hähjóubhŒ shall be present as well.”…”�”}”(hjóh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´KKhjrh²hubhÛ)�”}”(hŒ�Userspace should make sure to not double account any usage statistics by using the above described criteria in order to associate data to individual clients.”h]”hŒ�Userspace should make sure to not double account any usage statistics by using the above described criteria in order to associate data to individual clients.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´KNhjrh²hubjS)�”}”(hhh]”jX)�”}”(hŒdrm-client-name: ”h]”hÛ)�”}”(hŒdrm-client-name: ”h]”hŒdrm-client-name: ”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´KQhj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj!h²hh³hÃh´Nubah}”(h]”h ]”h"]”h$]”h&]”j1j2uh1jRh³hÃh´KQhjrh²hubhÛ)�”}”(hŒCString optionally set by userspace using DRM_IOCTL_SET_CLIENT_NAME.”h]”hŒCString optionally set by userspace using DRM_IOCTL_SET_CLIENT_NAME.”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´KShjrh²hubeh}”(h]”j1ah ]”h"]”Œidentification”ah$]”h&]”uh1hÄhjah²hh³hÃh´K>ubhÅ)�”}”(hhh]”(hÊ)�”}”(hŒ Utilization”h]”hŒ Utilization”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÁjMuh1hÉhjWh²hh³hÃh´KWubjS)�”}”(hhh]”jX)�”}”(hŒdrm-engine-: ns ”h]”hÛ)�”}”(hŒdrm-engine-: ns”h]”hŒdrm-engine-: ns”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´KYhjkubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjhh²hh³hÃh´Nubah}”(h]”h ]”h"]”h$]”h&]”j1j2uh1jRh³hÃh´KYhjWh²hubhÛ)�”}”(hŒ­GPUs usually contain multiple execution engines. Each shall be given a stable and unique name (keystr), with possible values documented in the driver specific documentation.”h]”hŒ­GPUs usually contain multiple execution engines. Each shall be given a stable and unique name (keystr), with possible values documented in the driver specific documentation.”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´K[hjWh²hubhÛ)�”}”(hŒValue shall be in specified time units which the respective GPU engine spent busy executing workloads belonging to this client.”h]”hŒValue shall be in specified time units which the respective GPU engine spent busy executing workloads belonging to this client.”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´K_hjWh²hubhÛ)�”}”(hX_Values are not required to be constantly monotonic if it makes the driver implementation easier, but are required to catch up with the previously reported larger value within a reasonable period. Upon observing a value lower than what was previously read, userspace is expected to stay with that larger previous value until a monotonic update is seen.”h]”hX_Values are not required to be constantly monotonic if it makes the driver implementation easier, but are required to catch up with the previously reported larger value within a reasonable period. Upon observing a value lower than what was previously read, userspace is expected to stay with that larger previous value until a monotonic update is seen.”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´KbhjWh²hubjS)�”}”(hhh]”jX)�”}”(hŒ%drm-engine-capacity-: ”h]”hÛ)�”}”(hŒ$drm-engine-capacity-: ”h]”hŒ$drm-engine-capacity-: ”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´Khhj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj³h²hh³hÃh´Nubah}”(h]”h ]”h"]”h$]”h&]”j1j2uh1jRh³hÃh´KhhjWh²hubhÛ)�”}”(hŒÜEngine identifier string must be the same as the one specified in the drm-engine- tag and shall contain a greater than zero number in case the exported engine corresponds to a group of identical hardware engines.”h]”hŒÜEngine identifier string must be the same as the one specified in the drm-engine- tag and shall contain a greater than zero number in case the exported engine corresponds to a group of identical hardware engines.”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´KjhjWh²hubhÛ)�”}”(hŒ]In the absence of this tag parser shall assume capacity of one. Zero capacity is not allowed.”h]”hŒ]In the absence of this tag parser shall assume capacity of one. Zero capacity is not allowed.”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´KnhjWh²hubjS)�”}”(hhh]”jX)�”}”(hŒdrm-cycles-: ”h]”hÛ)�”}”(hŒdrm-cycles-: ”h]”hŒdrm-cycles-: ”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´Kqhjóubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjðh²hh³hÃh´Nubah}”(h]”h ]”h"]”h$]”h&]”j1j2uh1jRh³hÃh´KqhjWh²hubhÛ)�”}”(hŒŸEngine identifier string must be the same as the one specified in the drm-engine- tag and shall contain the number of busy cycles for the given engine.”h]”hŒŸEngine identifier string must be the same as the one specified in the drm-engine- tag and shall contain the number of busy cycles for the given engine.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´KshjWh²hubhÛ)�”}”(hX_Values are not required to be constantly monotonic if it makes the driver implementation easier, but are required to catch up with the previously reported larger value within a reasonable period. Upon observing a value lower than what was previously read, userspace is expected to stay with that larger previous value until a monotonic update is seen.”h]”hX_Values are not required to be constantly monotonic if it makes the driver implementation easier, but are required to catch up with the previously reported larger value within a reasonable period. Upon observing a value lower than what was previously read, userspace is expected to stay with that larger previous value until a monotonic update is seen.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´KwhjWh²hubjS)�”}”(hhh]”jX)�”}”(hŒ"drm-total-cycles-: ”h]”hÛ)�”}”(hŒ!drm-total-cycles-: ”h]”hŒ!drm-total-cycles-: ”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´K}hj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj-h²hh³hÃh´Nubah}”(h]”h ]”h"]”h$]”h&]”j1j2uh1jRh³hÃh´K}hjWh²hubhÛ)�”}”(hŒ�Engine identifier string must be the same as the one specified in the drm-cycles- tag and shall contain the total number cycles for the given engine.”h]”hŒ�Engine identifier string must be the same as the one specified in the drm-cycles- tag and shall contain the total number cycles for the given engine.”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´KhjWh²hubhÛ)�”}”(hXThis is a timestamp in GPU unspecified unit that matches the update rate of drm-cycles-. For drivers that implement this interface, the engine utilization can be calculated entirely on the GPU clock domain, without considering the CPU sleep time between 2 samples.”h]”hXThis is a timestamp in GPU unspecified unit that matches the update rate of drm-cycles-. For drivers that implement this interface, the engine utilization can be calculated entirely on the GPU clock domain, without considering the CPU sleep time between 2 samples.”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´KƒhjWh²hubhÛ)�”}”(hŒMA driver may implement either this key or drm-maxfreq-, but not both.”h]”hŒMA driver may implement either this key or drm-maxfreq-, but not both.”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´KˆhjWh²hubjS)�”}”(hhh]”jX)�”}”(hŒ*drm-maxfreq-: [Hz|MHz|KHz] ”h]”hÛ)�”}”(hŒ)drm-maxfreq-: [Hz|MHz|KHz]”h]”hŒ)drm-maxfreq-: [Hz|MHz|KHz]”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´KŠhj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjxh²hh³hÃh´Nubah}”(h]”h ]”h"]”h$]”h&]”j1j2uh1jRh³hÃh´KŠhjWh²hubhÛ)�”}”(hX¤Engine identifier string must be the same as the one specified in the drm-engine- tag and shall contain the maximum frequency for the given engine. Taken together with drm-cycles-, this can be used to calculate percentage utilization of the engine, whereas drm-engine- only reflects time active without considering what frequency the engine is operating as a percentage of its maximum frequency.”h]”hX¤Engine identifier string must be the same as the one specified in the drm-engine- tag and shall contain the maximum frequency for the given engine. Taken together with drm-cycles-, this can be used to calculate percentage utilization of the engine, whereas drm-engine- only reflects time active without considering what frequency the engine is operating as a percentage of its maximum frequency.”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´KŒhjWh²hubhÛ)�”}”(hŒRA driver may implement either this key or drm-total-cycles-, but not both.”h]”hŒRA driver may implement either this key or drm-total-cycles-, but not both.”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´K“hjWh²hubeh}”(h]”jSah ]”h"]”Œ utilization”ah$]”h&]”uh1hÄhjah²hh³hÃh´KWubhÅ)�”}”(hhh]”(hÊ)�”}”(hŒMemory”h]”hŒMemory”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÁjouh1hÉhj¼h²hh³hÃh´K—ubhÛ)�”}”(hŒ§Each possible memory type which can be used to store buffer objects by the GPU in question shall be given a stable and unique name to be used as the "" string.”h]”hŒ«Each possible memory type which can be used to store buffer objects by the GPU in question shall be given a stable and unique name to be used as the “â€� string.”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´K™hj¼h²hubhÛ)�”}”(hŒFThe region name "memory" is reserved to refer to normal system memory.”h]”hŒJThe region name “memoryâ€� is reserved to refer to normal system memory.”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´K�hj¼h²hubhÛ)�”}”(hŒŽThe value shall reflect the amount of storage currently consumed by the buffer objects belong to this client, in the respective memory region.”h]”hŒŽThe value shall reflect the amount of storage currently consumed by the buffer objects belong to this client, in the respective memory region.”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´KŸhj¼h²hubhÛ)�”}”(hŒkDefault unit shall be bytes with optional unit specifiers of 'KiB' or 'MiB' indicating kibi- or mebi-bytes.”h]”hŒsDefault unit shall be bytes with optional unit specifiers of ‘KiB’ or ‘MiB’ indicating kibi- or mebi-bytes.”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´K¢hj¼h²hubjS)�”}”(hhh]”jX)�”}”(hŒ%drm-total-: [KiB|MiB] ”h]”hÛ)�”}”(hŒ$drm-total-: [KiB|MiB]”h]”hŒ$drm-total-: [KiB|MiB]”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´K¥hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjh²hh³hÃh´Nubah}”(h]”h ]”h"]”h$]”h&]”j1j2uh1jRh³hÃh´K¥hj¼h²hubhÛ)�”}”(hXmThe total size of all requested buffers, including both shared and private memory. The backing store for the buffers does not need to be currently instantiated to count under this category. To avoid double-counting, if a buffer has multiple regions where it can be allocated to, the implementation should consistently select a single region for accounting purposes.”h]”hXmThe total size of all requested buffers, including both shared and private memory. The backing store for the buffers does not need to be currently instantiated to count under this category. To avoid double-counting, if a buffer has multiple regions where it can be allocated to, the implementation should consistently select a single region for accounting purposes.”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´K§hj¼h²hubjS)�”}”(hhh]”jX)�”}”(hŒ&drm-shared-: [KiB|MiB] ”h]”hÛ)�”}”(hŒ%drm-shared-: [KiB|MiB]”h]”hŒ%drm-shared-: [KiB|MiB]”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´K­hj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj4h²hh³hÃh´Nubah}”(h]”h ]”h"]”h$]”h&]”j1j2uh1jRh³hÃh´K­hj¼h²hubhÛ)�”}”(hŒÂThe total size of buffers that are shared with another file (i.e., have more than one handle). The same requirement to avoid double-counting that applies to drm-total- also applies here.”h]”hŒÂThe total size of buffers that are shared with another file (i.e., have more than one handle). The same requirement to avoid double-counting that applies to drm-total- also applies here.”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´K¯hj¼h²hubjS)�”}”(hhh]”jX)�”}”(hŒ(drm-resident-: [KiB|MiB] ”h]”hÛ)�”}”(hŒ'drm-resident-: [KiB|MiB]”h]”hŒ'drm-resident-: [KiB|MiB]”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´K³hjfubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjch²hh³hÃh´Nubah}”(h]”h ]”h"]”h$]”h&]”j1j2uh1jRh³hÃh´K³hj¼h²hubhÛ)�”}”(hŒ}The total size of buffers that are resident (i.e., have their backing store present or instantiated) in the specified region.”h]”hŒ}The total size of buffers that are resident (i.e., have their backing store present or instantiated) in the specified region.”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´Kµhj¼h²hubjS)�”}”(hhh]”jX)�”}”(hŒ&drm-memory-: [KiB|MiB] ”h]”hÛ)�”}”(hŒ%drm-memory-: [KiB|MiB]”h]”hŒ%drm-memory-: [KiB|MiB]”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´K¸hj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj’h²hh³hÃh´Nubah}”(h]”h ]”h"]”h$]”h&]”j1j2uh1jRh³hÃh´K¸hj¼h²hubhÛ)�”}”(hŒ_This key is deprecated and is only printed by amdgpu; it is an alias for drm-resident-.”h]”hŒ_This key is deprecated and is only printed by amdgpu; it is an alias for drm-resident-.”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´Kºhj¼h²hubjS)�”}”(hhh]”jX)�”}”(hŒ)drm-purgeable-: [KiB|MiB] ”h]”hÛ)�”}”(hŒ(drm-purgeable-: [KiB|MiB]”h]”hŒ(drm-purgeable-: [KiB|MiB]”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´K½hjÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjÁh²hh³hÃh´Nubah}”(h]”h ]”h"]”h$]”h&]”j1j2uh1jRh³hÃh´K½hj¼h²hubhÛ)�”}”(hŒ:The total size of buffers that are resident and purgeable.”h]”hŒ:The total size of buffers that are resident and purgeable.”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´K¿hj¼h²hubhÛ)�”}”(hŒ¸For example, drivers that implement functionality similar to 'madvise' can count buffers that have instantiated backing stores but have been marked with an equivalent of MADV_DONTNEED.”h]”hŒ¼For example, drivers that implement functionality similar to ‘madvise’ can count buffers that have instantiated backing stores but have been marked with an equivalent of MADV_DONTNEED.”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´KÁhj¼h²hubjS)�”}”(hhh]”jX)�”}”(hŒ&drm-active-: [KiB|MiB] ”h]”hÛ)�”}”(hŒ%drm-active-: [KiB|MiB]”h]”hŒ%drm-active-: [KiB|MiB]”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´KÅhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjþh²hh³hÃh´Nubah}”(h]”h ]”h"]”h$]”h&]”j1j2uh1jRh³hÃh´KÅhj¼h²hubhÛ)�”}”(hŒAThe total size of buffers that are active on one or more engines.”h]”hŒAThe total size of buffers that are active on one or more engines.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´KÇhj¼h²hubhÛ)�”}”(hŒ±One practical example of this could be the presence of unsignaled fences in a GEM buffer reservation object. Therefore, the active category is a subset of the resident category.”h]”hŒ±One practical example of this could be the presence of unsignaled fences in a GEM buffer reservation object. Therefore, the active category is a subset of the resident category.”…”�”}”(hj- h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´KÉhj¼h²hubeh}”(h]”juah ]”h"]”Œmemory”ah$]”h&]”uh1hÄhjah²hh³hÃh´K—ubeh}”(h]”jah ]”h"]”Œ optional fully standardised keys”ah$]”h&]”uh1hÄhjh²hh³hÃh´K;ubeh}”(h]”j�ah ]”h"]”Œfile format specification”ah$]”h&]”uh1hÄhhÆh²hh³hÃh´KubhÅ)�”}”(hhh]”(hÊ)�”}”(hŒImplementation Details”h]”hŒImplementation Details”…”�”}”(hjS h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÁj©uh1hÉhjP h²hh³hÃh´KÎubhÛ)�”}”(hX'Drivers should use drm_show_fdinfo() in their `struct file_operations`, and implement &drm_driver.show_fdinfo if they wish to provide any stats which are not provided by drm_show_fdinfo(). But even driver specific stats should be documented above and where possible, aligned with other drivers.”h]”(hŒ.Drivers should use drm_show_fdinfo() in their ”…”�”}”(hja h²hh³Nh´Nubhå)�”}”(hŒ`struct file_operations`”h]”hŒstruct file_operations”…”�”}”(hji h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hähja ubhŒá, and implement &drm_driver.show_fdinfo if they wish to provide any stats which are not provided by drm_show_fdinfo(). But even driver specific stats should be documented above and where possible, aligned with other drivers.”…”�”}”(hja h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´KÐhjP h²hubhÅ)�”}”(hhh]”(hÊ)�”}”(hŒDriver specific implementations”h]”hŒDriver specific implementations”…”�”}”(hj„ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÁjÈuh1hÉhj� h²hh³hÃh´KÖubjS)�”}”(hhh]”(jX)�”}”(hŒ:ref:`i915-usage-stats`”h]”hÛ)�”}”(hj— h]”h)�”}”(hj— h]”hŒinline”“”)�”}”(hj— h]”hŒi915-usage-stats”…”�”}”(hj¡ h²hh³Nh´Nubah}”(h]”h ]”(Œxref”Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jŸ hjœ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œgpu/drm-usage-stats”Œ refdomain”j¬ Œreftype”Œref”Œ refexplicit”‰Œrefwarn”ˆŒ reftarget”Œi915-usage-stats”uh1hh³hÃh´KØhj™ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´KØhj• ubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj’ h²hh³hÃh´NubjX)�”}”(hŒ:ref:`panfrost-usage-stats`”h]”hÛ)�”}”(hjÎ h]”h)�”}”(hjÎ h]”j  )�”}”(hjÎ h]”hŒpanfrost-usage-stats”…”�”}”(hjÖ h²hh³Nh´Nubah}”(h]”h ]”(j« Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jŸ hjÓ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j¸ Œ refdomain”jà Œreftype”Œref”Œ refexplicit”‰Œrefwarn”ˆj¾ Œpanfrost-usage-stats”uh1hh³hÃh´KÙhjÐ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´KÙhjÌ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj’ h²hh³hÃh´NubjX)�”}”(hŒ:ref:`panthor-usage-stats`”h]”hÛ)�”}”(hj h]”h)�”}”(hj h]”j  )�”}”(hj h]”hŒpanthor-usage-stats”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”(j« Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jŸ hj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j¸ Œ refdomain”j Œreftype”Œref”Œ refexplicit”‰Œrefwarn”ˆj¾ Œpanthor-usage-stats”uh1hh³hÃh´KÚhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´KÚhjþ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj’ h²hh³hÃh´NubjX)�”}”(hŒ:ref:`xe-usage-stats`”h]”hÛ)�”}”(hj2 h]”h)�”}”(hj2 h]”j  )�”}”(hj2 h]”hŒxe-usage-stats”…”�”}”(hj: h²hh³Nh´Nubah}”(h]”h ]”(j« Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jŸ hj7 ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j¸ Œ refdomain”jD Œreftype”Œref”Œ refexplicit”‰Œrefwarn”ˆj¾ Œxe-usage-stats”uh1hh³hÃh´KÛhj4 ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´KÛhj0 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj’ h²hh³hÃh´NubjX)�”}”(hŒ:ref:`amdxdna-usage-stats`”h]”hÛ)�”}”(hjd h]”h)�”}”(hjd h]”j  )�”}”(hjd h]”hŒamdxdna-usage-stats”…”�”}”(hjl h²hh³Nh´Nubah}”(h]”h ]”(j« Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jŸ hji ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j¸ Œ refdomain”jv Œreftype”Œref”Œ refexplicit”‰Œrefwarn”ˆj¾ Œamdxdna-usage-stats”uh1hh³hÃh´KÜhjf ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚh³hÃh´KÜhjb ubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj’ h²hh³hÃh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j1Œ*”uh1jRh³hÃh´KØhj� h²hubeh}”(h]”jÎah ]”h"]”Œdriver specific implementations”ah$]”h&]”uh1hÄhjP h²hh³hÃh´KÖubeh}”(h]”j¯ah ]”h"]”Œimplementation details”ah$]”h&]”uh1hÄhhÆh²hh³hÃh´KÎubeh}”(h]”(hÂŒid1”eh ]”h"]”(Œdrm client usage stats”Œdrm-client-usage-stats”eh$]”h&]”uh1hÄhhh²hh³hÃh´KŒexpect_referenced_by_name”}”j¯ h·sŒexpect_referenced_by_id”}”hÂh·subeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÃuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hÉ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”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”hÂ]”h·asŒnameids”}”(j¯ hÂj® j« jÿjûjM j�jžj¬jjÎj^jðjF jjTj1j¹jSj? juj¦ j¯jŸ jÎuŒ nametypes”}”(j¯ ˆj® ‰jÿ‰jM ‰jž‰j‰j^‰jF ‰jT‰j¹‰j? ‰j¦ ‰jŸ ‰uh}”(hÂhÆj« hÆjûj@j�jj¬j3jÎj¡jðjjjaj1jrjSjWjuj¼j¯jP jÎj� hÙjaj‡j~j¦j�jÈj¿jêjáj jj+j"jMjDjojfj©j jÈj¿uŒ 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”“”}”jç K s…”R”Œparse_messages”]”Œtransform_messages”]”hŒsystem_message”“”)�”}”(hhh]”hÛ)�”}”(hhh]”hŒ ubaŒ transformer”NŒ include_log”]”Œ decoration”Nh²hub.