€• Œ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/driver-uapi”Œ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/driver-uapi”Œ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/driver-uapi”Œ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/driver-uapi”Œ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/driver-uapi”Œ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/driver-uapi”Œ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/driver-uapi”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒDRM Driver uAPI”h]”hŒDRM Driver uAPI”…”�”}”(hh¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefid”Œid1”uh1hºhh·h²hh³Œ=/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi.rst”h´KubhŒtopic”“”)�”}”(hŒ Contents ”h]”(h»)�”}”(hŒContents”h]”hŒContents”…”�”}”(hhÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhhÏh³hÌh´KubhŒ bullet_list”“”)�”}”(hhh]”hŒ list_item”“”)�”}”(hhh]”(hŒ paragraph”“”)�”}”(hhh]”hŒ reference”“”)�”}”(hhh]”hŒDRM Driver uAPI”…”�”}”(hhòh²hh³Nh´Nubah}”(h]”hËah ]”h"]”h$]”h&]”Œrefid”Œdrm-driver-uapi”uh1hðhhíubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhhèubhâ)�”}”(hhh]”(hç)�”}”(hhh]”hì)�”}”(hhh]”hñ)�”}”(hhh]”hŒ drm/i915 uAPI”…”�”}”(hjh²hh³Nh´Nubah}”(h]”Œid2”ah ]”h"]”h$]”h&]”Œrefid”Œ drm-i915-uapi”uh1hðhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjubhç)�”}”(hhh]”(hì)�”}”(hhh]”hñ)�”}”(hhh]”hŒdrm/nouveau uAPI”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”Œid3”ah ]”h"]”h$]”h&]”Œrefid”Œdrm-nouveau-uapi”uh1hðhj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj,ubhâ)�”}”(hhh]”hç)�”}”(hhh]”hì)�”}”(hhh]”hñ)�”}”(hhh]”hŒVM_BIND / EXEC uAPI”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”Œid4”ah ]”h"]”h$]”h&]”Œrefid”Œvm-bind-exec-uapi”uh1hðhjNubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjKubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjHubah}”(h]”h ]”h"]”h$]”h&]”uh1háhj,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hæhjubhç)�”}”(hhh]”hì)�”}”(hhh]”hñ)�”}”(hhh]”hŒdrm/panthor uAPI”…”�”}”(hjh²hh³Nh´Nubah}”(h]”Œid5”ah ]”h"]”h$]”h&]”Œrefid”Œdrm-panthor-uapi”uh1hðhj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjyubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjubhç)�”}”(hhh]”(hì)�”}”(hhh]”hñ)�”}”(hhh]”hŒ drm/xe uAPI”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”Œid6”ah ]”h"]”h$]”h&]”Œrefid”Œ drm-xe-uapi”uh1hðhjžubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj›ubhâ)�”}”(hhh]”(hç)�”}”(hhh]”hì)�”}”(hhh]”hñ)�”}”(hhh]”hŒNode Registration”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”Œid7”ah ]”h"]”h$]”h&]”Œrefid”Œnode-registration”uh1hðhj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjºubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj·ubhç)�”}”(hhh]”hì)�”}”(hhh]”hñ)�”}”(hhh]”hŒError Classification”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”Œid8”ah ]”h"]”h$]”h&]”Œrefid”Œerror-classification”uh1hðhjßubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj·ubhç)�”}”(hhh]”hì)�”}”(hhh]”hñ)�”}”(hhh]”hŒUser Interface”…”�”}”(hjh²hh³Nh´Nubah}”(h]”Œid9”ah ]”h"]”h$]”h&]”Œrefid”Œuser-interface”uh1hðhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjþubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1háhj›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hæhjubhç)�”}”(hhh]”hì)�”}”(hhh]”hñ)�”}”(hhh]”hŒdrm/asahi uAPI”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”Œid10”ah ]”h"]”h$]”h&]”Œrefid”Œdrm-asahi-uapi”uh1hðhj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1háhhèubeh}”(h]”h ]”h"]”h$]”h&]”uh1hæhhãubah}”(h]”h ]”h"]”h$]”h&]”uh1háhhÏh²hh³Nh´Nubeh}”(h]”Œcontents”ah ]”Œcontents”ah"]”Œcontents”ah$]”h&]”uh1hÍh³hÌh´Khh·h²hubh¶)�”}”(hhh]”(h»)�”}”(hŒ drm/i915 uAPI”h]”hŒ drm/i915 uAPI”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÊjuh1hºhjih²hh³hÌh´KubhŒtarget”“”)�”}”(hŒ1.. _uevents generated by i915 on its device node:”h]”h}”(h]”h ]”h"]”h$]”h&]”hÊŒ,uevents-generated-by-i915-on-its-device-node”uh1jzh´Khjih²hh³Nubhì)�”}”(hŒ0**uevents generated by i915 on its device node**”h]”hŒstrong”“”)�”}”(hj‰h]”hŒ,uevents generated by i915 on its device node”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj‡ubah}”(h]”j†ah ]”h"]”Œ,uevents generated by i915 on its device node”ah$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Khjih²hŒexpect_referenced_by_name”}”jžj|sŒexpect_referenced_by_id”}”j†j|subhŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hXŸI915_L3_PARITY_UEVENT - Generated when the driver receives a parity mismatch event from the GPU L3 cache. Additional information supplied is ROW, BANK, SUBBANK, SLICE of the affected cacheline. Userspace should keep track of these events, and if a specific cache-line seems to have a persistent error, remap it with the L3 remapping tool supplied in intel-gpu-tools. The value supplied with the event is always 1. ”h]”(hŒterm”“”)�”}”(hŒLI915_L3_PARITY_UEVENT - Generated when the driver receives a parity mismatch”h]”hŒLI915_L3_PARITY_UEVENT - Generated when the driver receives a parity mismatch”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´K.hj­ubhŒ definition”“”)�”}”(hhh]”hì)�”}”(hXQevent from the GPU L3 cache. Additional information supplied is ROW, BANK, SUBBANK, SLICE of the affected cacheline. Userspace should keep track of these events, and if a specific cache-line seems to have a persistent error, remap it with the L3 remapping tool supplied in intel-gpu-tools. The value supplied with the event is always 1.”h]”hXQevent from the GPU L3 cache. Additional information supplied is ROW, BANK, SUBBANK, SLICE of the affected cacheline. Userspace should keep track of these events, and if a specific cache-line seems to have a persistent error, remap it with the L3 remapping tool supplied in intel-gpu-tools. The value supplied with the event is always 1.”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.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¬)�”}”(hX‡I915_ERROR_UEVENT - Generated upon error detection, currently only via hangcheck. The error detection event is a good indicator of when things began to go badly. The value supplied with the event is a 1 upon error detection, and a 0 upon reset completion, signifying no more error exists. NOTE: Disabling hangcheck or reset via module parameter will cause the related events to not be seen. ”h]”(j²)�”}”(hŒFI915_ERROR_UEVENT - Generated upon error detection, currently only via”h]”hŒFI915_ERROR_UEVENT - Generated upon error detection, currently only via”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´K5hjâubjÃ)�”}”(hhh]”hì)�”}”(hX?hangcheck. The error detection event is a good indicator of when things began to go badly. The value supplied with the event is a 1 upon error detection, and a 0 upon reset completion, signifying no more error exists. NOTE: Disabling hangcheck or reset via module parameter will cause the related events to not be seen.”h]”hX?hangcheck. The error detection event is a good indicator of when things began to go badly. The value supplied with the event is a 1 upon error detection, and a 0 upon reset completion, signifying no more error exists. NOTE: Disabling hangcheck or reset via module parameter will cause the related events to not be seen.”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´K1hjõubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjâubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jôh´K5hj¨ubj¬)�”}”(hŒÑI915_RESET_UEVENT - Event is generated just before an attempt to reset the GPU. The value supplied with the event is always 1. NOTE: Disable reset via module parameter will cause this event to not be seen. ”h]”(j²)�”}”(hŒJI915_RESET_UEVENT - Event is generated just before an attempt to reset the”h]”hŒJI915_RESET_UEVENT - Event is generated just before an attempt to reset the”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´KubhŒdesc_sig_space”“”)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1j~hjhh²hh³j}h´K>ubhŒ desc_name”“”)�”}”(hŒi915_user_extension”h]”hŒ desc_sig_name”“”)�”}”(hjdh]”hŒi915_user_extension”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1j•hj‘ubah}”(h]”h ]”(Œsig-name”Œdescname”eh"]”h$]”h&]”Œ xml:space”Œpreserve”uh1j�hjhh²hh³j}h´K>ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®Œ add_permalink”ˆuh1jfŒsphinx_line_type”Œ declarator”hjbh²hh³j}h´K>ubah}”(h]”jYah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1j`h³j}h´K>hj]h²hubhŒ desc_content”“”)�”}”(hhh]”hì)�”}”(hŒ-Base class for defining a chain of extensions”h]”hŒ-Base class for defining a chain of extensions”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´KBhjÅh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj]h²hh³j}h´K>ubeh}”(h]”h ]”(Œc”Œstruct”eh"]”h$]”h&]”Œdomain”jàŒobjtype”jáŒdesctype”jáŒnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1j[h²hhjih³Nh´NubhŒ container”“”)�”}”(hX€**Definition**:: struct i915_user_extension { __u64 next_extension; __u32 name; __u32 flags; __u32 rsvd[4]; }; **Members** ``next_extension`` Pointer to the next struct i915_user_extension, or zero if the end. ``name`` Name of the extension. Note that the name here is just some integer. Also note that the name space for this is not global for the whole driver, but rather its scope/meaning is limited to the specific piece of uAPI which has embedded the struct i915_user_extension. ``flags`` MBZ All undefined bits must be zero. ``rsvd`` MBZ Reserved for future use; must be zero.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjñubhŒ:”…”�”}”(hjñh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´KFhjíubhŒ literal_block”“”)�”}”(hŒmstruct i915_user_extension { __u64 next_extension; __u32 name; __u32 flags; __u32 rsvd[4]; };”h]”hŒmstruct i915_user_extension { __u64 next_extension; __u32 name; __u32 flags; __u32 rsvd[4]; };”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´KHhjíubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj!h]”hŒMembers”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´KOhjíubj§)�”}”(hhh]”(j¬)�”}”(hŒW``next_extension`` Pointer to the next struct i915_user_extension, or zero if the end. ”h]”(j²)�”}”(hŒ``next_extension``”h]”hŒliteral”“”)�”}”(hj@h]”hŒnext_extension”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Kihj:ubjÃ)�”}”(hhh]”hì)�”}”(hŒCPointer to the next struct i915_user_extension, or zero if the end.”h]”hŒCPointer to the next struct i915_user_extension, or zero if the end.”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jWh´KihjXubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jWh´Kihj7ubj¬)�”}”(hX``name`` Name of the extension. Note that the name here is just some integer. Also note that the name space for this is not global for the whole driver, but rather its scope/meaning is limited to the specific piece of uAPI which has embedded the struct i915_user_extension. ”h]”(j²)�”}”(hŒ``name``”h]”jC)�”}”(hj{h]”hŒname”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjyubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´KuhjuubjÃ)�”}”(hhh]”(hì)�”}”(hŒName of the extension.”h]”hŒName of the extension.”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Kohj‘ubhì)�”}”(hŒ-Note that the name here is just some integer.”h]”hŒ-Note that the name here is just some integer.”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Kqhj‘ubhì)�”}”(hŒÃAlso note that the name space for this is not global for the whole driver, but rather its scope/meaning is limited to the specific piece of uAPI which has embedded the struct i915_user_extension.”h]”hŒÃAlso note that the name space for this is not global for the whole driver, but rather its scope/meaning is limited to the specific piece of uAPI which has embedded the struct i915_user_extension.”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Kshj‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjuubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j�h´Kuhj7ubj¬)�”}”(hŒ0``flags`` MBZ All undefined bits must be zero. ”h]”(j²)�”}”(hŒ ``flags``”h]”jC)�”}”(hjÓh]”hŒflags”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´K{hjÍubjÃ)�”}”(hhh]”(hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Kyhjéubhì)�”}”(hŒ All undefined bits must be zero.”h]”hŒ All undefined bits must be zero.”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jèh´K{hjéubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÍubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jèh´K{hj7ubj¬)�”}”(hŒ4``rsvd`` MBZ Reserved for future use; must be zero.”h]”(j²)�”}”(hŒ``rsvd``”h]”jC)�”}”(hjh]”hŒrsvd”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´K€hjubjÃ)�”}”(hhh]”(hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Khj1ubhì)�”}”(hŒ&Reserved for future use; must be zero.”h]”hŒ&Reserved for future use; must be zero.”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´K�hj1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j0h´K€hj7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjíubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhjih²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjmh]”hŒ Description”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjkubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´K„hjih²hubhì)�”}”(hX5Many interfaces need to grow over time. In most cases we can simply extend the struct and have userspace pass in more data. Another option, as demonstrated by Vulkan's approach to providing extensions for forward and backward compatibility, is to use a list of optional structs to provide those extra details.”h]”hX7Many interfaces need to grow over time. In most cases we can simply extend the struct and have userspace pass in more data. Another option, as demonstrated by Vulkan’s approach to providing extensions for forward and backward compatibility, is to use a list of optional structs to provide those extra details.”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´KChjih²hubhì)�”}”(hXMThe key advantage to using an extension chain is that it allows us to redefine the interface more easily than an ever growing struct of increasing complexity, and for large parts of that interface to be entirely optional. The downside is more pointer chasing; chasing across the __user boundary with pointers encapsulated inside u64.”h]”hXMThe key advantage to using an extension chain is that it allows us to redefine the interface more easily than an ever growing struct of increasing complexity, and for large parts of that interface to be entirely optional. The downside is more pointer chasing; chasing across the __user boundary with pointers encapsulated inside u64.”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´KIhjih²hubhì)�”}”(hŒExample chaining:”h]”hŒExample chaining:”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´KOhjih²hubj)�”}”(hX)struct i915_user_extension ext3 { .next_extension = 0, // end .name = ..., }; struct i915_user_extension ext2 { .next_extension = (uintptr_t)&ext3, .name = ..., }; struct i915_user_extension ext1 { .next_extension = (uintptr_t)&ext2, .name = ..., };”h]”hX)struct i915_user_extension ext3 { .next_extension = 0, // end .name = ..., }; struct i915_user_extension ext2 { .next_extension = (uintptr_t)&ext3, .name = ..., }; struct i915_user_extension ext1 { .next_extension = (uintptr_t)&ext2, .name = ..., };”…”�”}”hj°sbah}”(h]”h ]”h"]”h$]”h&]”j­j®Œforce”‰Œlanguage”ŒC”Œhighlight_args”}”uh1jh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´KQhjih²hubhì)�”}”(hŒÆTypically the struct i915_user_extension would be embedded in some uAPI struct, and in this case we would feed it the head of the chain(i.e ext1), which would then apply all of the above extensions.”h]”hŒÆTypically the struct i915_user_extension would be embedded in some uAPI struct, and in this case we would feed it the head of the chain(i.e ext1), which would then apply all of the above extensions.”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´K`hjih²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ"drm_i915_gem_engine_class (C enum)”Œc.drm_i915_gem_engine_class”hNt”auh1jJhjih²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_i915_gem_engine_class”h]”jg)�”}”(hŒenum drm_i915_gem_engine_class”h]”(jm)�”}”(hŒenum”h]”hŒenum”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjèh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Kgubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjèh²hh³júh´Kgubj�)�”}”(hŒdrm_i915_gem_engine_class”h]”j–)�”}”(hjæh]”hŒdrm_i915_gem_engine_class”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjèh²hh³júh´Kgubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjäh²hh³júh´Kgubah}”(h]”jßah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³júh´Kghjáh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒuapi engine type enumeration”h]”hŒuapi engine type enumeration”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Kžhj,h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjáh²hh³júh´Kgubeh}”(h]”h ]”(jàŒenum”eh"]”h$]”h&]”jåjàjæjGjçjGjè‰jé‰jê‰uh1j[h²hhjih³Nh´Nubjì)�”}”(hXN**Constants** ``I915_ENGINE_CLASS_RENDER`` Render engines support instructions used for 3D, Compute (GPGPU), and programmable media workloads. These instructions fetch data and dispatch individual work items to threads that operate in parallel. The threads run small programs (called "kernels" or "shaders") on the GPU's execution units (EUs). ``I915_ENGINE_CLASS_COPY`` Copy engines (also referred to as "blitters") support instructions that move blocks of data from one location in memory to another, or that fill a specified location of memory with fixed data. Copy engines can perform pre-defined logical or bitwise operations on the source, destination, or pattern data. ``I915_ENGINE_CLASS_VIDEO`` Video engines (also referred to as "bit stream decode" (BSD) or "vdbox") support instructions that perform fixed-function media decode and encode. ``I915_ENGINE_CLASS_VIDEO_ENHANCE`` Video enhancement engines (also referred to as "vebox") support instructions related to image enhancement. ``I915_ENGINE_CLASS_COMPUTE`` Compute engines support a subset of the instructions available on render engines: compute engines support Compute (GPGPU) and programmable media workloads, but do not support the 3D pipeline. ``I915_ENGINE_CLASS_INVALID`` Placeholder value to represent an invalid engine class assignment.”h]”(hì)�”}”(hŒ **Constants**”h]”jŒ)�”}”(hjQh]”hŒ Constants”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjOubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´K¢hjKubj§)�”}”(hhh]”(j¬)�”}”(hXK``I915_ENGINE_CLASS_RENDER`` Render engines support instructions used for 3D, Compute (GPGPU), and programmable media workloads. These instructions fetch data and dispatch individual work items to threads that operate in parallel. The threads run small programs (called "kernels" or "shaders") on the GPU's execution units (EUs). ”h]”(j²)�”}”(hŒ``I915_ENGINE_CLASS_RENDER``”h]”jC)�”}”(hjph]”hŒI915_ENGINE_CLASS_RENDER”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjnubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´K©hjjubjÃ)�”}”(hhh]”hì)�”}”(hX-Render engines support instructions used for 3D, Compute (GPGPU), and programmable media workloads. These instructions fetch data and dispatch individual work items to threads that operate in parallel. The threads run small programs (called "kernels" or "shaders") on the GPU's execution units (EUs).”h]”hX7Render engines support instructions used for 3D, Compute (GPGPU), and programmable media workloads. These instructions fetch data and dispatch individual work items to threads that operate in parallel. The threads run small programs (called “kernelsâ€� or “shadersâ€�) on the GPU’s execution units (EUs).”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´K¥hj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j…h´K©hjgubj¬)�”}”(hXL``I915_ENGINE_CLASS_COPY`` Copy engines (also referred to as "blitters") support instructions that move blocks of data from one location in memory to another, or that fill a specified location of memory with fixed data. Copy engines can perform pre-defined logical or bitwise operations on the source, destination, or pattern data. ”h]”(j²)�”}”(hŒ``I915_ENGINE_CLASS_COPY``”h]”jC)�”}”(hjªh]”hŒI915_ENGINE_CLASS_COPY”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´K°hj¤ubjÃ)�”}”(hhh]”hì)�”}”(hX0Copy engines (also referred to as "blitters") support instructions that move blocks of data from one location in memory to another, or that fill a specified location of memory with fixed data. Copy engines can perform pre-defined logical or bitwise operations on the source, destination, or pattern data.”h]”hX4Copy engines (also referred to as “blittersâ€�) support instructions that move blocks of data from one location in memory to another, or that fill a specified location of memory with fixed data. Copy engines can perform pre-defined logical or bitwise operations on the source, destination, or pattern data.”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´K¬hjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j¿h´K°hjgubj¬)�”}”(hŒ¯``I915_ENGINE_CLASS_VIDEO`` Video engines (also referred to as "bit stream decode" (BSD) or "vdbox") support instructions that perform fixed-function media decode and encode. ”h]”(j²)�”}”(hŒ``I915_ENGINE_CLASS_VIDEO``”h]”jC)�”}”(hjäh]”hŒI915_ENGINE_CLASS_VIDEO”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjâubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´KµhjÞubjÃ)�”}”(hhh]”hì)�”}”(hŒ’Video engines (also referred to as "bit stream decode" (BSD) or "vdbox") support instructions that perform fixed-function media decode and encode.”h]”hŒšVideo engines (also referred to as “bit stream decodeâ€� (BSD) or “vdboxâ€�) support instructions that perform fixed-function media decode and encode.”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´K³hjúubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÞubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jùh´Kµhjgubj¬)�”}”(hŒ�``I915_ENGINE_CLASS_VIDEO_ENHANCE`` Video enhancement engines (also referred to as "vebox") support instructions related to image enhancement. ”h]”(j²)�”}”(hŒ#``I915_ENGINE_CLASS_VIDEO_ENHANCE``”h]”jC)�”}”(hjh]”hŒI915_ENGINE_CLASS_VIDEO_ENHANCE”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´K¹hjubjÃ)�”}”(hhh]”hì)�”}”(hŒjVideo enhancement engines (also referred to as "vebox") support instructions related to image enhancement.”h]”hŒnVideo enhancement engines (also referred to as “veboxâ€�) support instructions related to image enhancement.”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´K¸hj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j3h´K¹hjgubj¬)�”}”(hŒß``I915_ENGINE_CLASS_COMPUTE`` Compute engines support a subset of the instructions available on render engines: compute engines support Compute (GPGPU) and programmable media workloads, but do not support the 3D pipeline. ”h]”(j²)�”}”(hŒ``I915_ENGINE_CLASS_COMPUTE``”h]”jC)�”}”(hjXh]”hŒI915_ENGINE_CLASS_COMPUTE”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjVubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´K¾hjRubjÃ)�”}”(hhh]”hì)�”}”(hŒÀCompute engines support a subset of the instructions available on render engines: compute engines support Compute (GPGPU) and programmable media workloads, but do not support the 3D pipeline.”h]”hŒÀCompute engines support a subset of the instructions available on render engines: compute engines support Compute (GPGPU) and programmable media workloads, but do not support the 3D pipeline.”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´K¼hjnubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjRubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jmh´K¾hjgubj¬)�”}”(hŒ```I915_ENGINE_CLASS_INVALID`` Placeholder value to represent an invalid engine class assignment.”h]”(j²)�”}”(hŒ``I915_ENGINE_CLASS_INVALID``”h]”jC)�”}”(hj’h]”hŒI915_ENGINE_CLASS_INVALID”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´KÀhjŒubjÃ)�”}”(hhh]”hì)�”}”(hŒBPlaceholder value to represent an invalid engine class assignment.”h]”hŒBPlaceholder value to represent an invalid engine class assignment.”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´KÁhj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j§h´KÀhjgubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjKubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhjih²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjÕh]”hŒ Description”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´KÃhjih²hubhì)�”}”(hX-Different engines serve different roles, and there may be more than one engine serving each role. This enum provides a classification of the role of the engine, which may be used when requesting operations to be performed on a certain subset of engines, or for providing information about that group.”h]”hX-Different engines serve different roles, and there may be more than one engine serving each role. This enum provides a classification of the role of the engine, which may be used when requesting operations to be performed on a certain subset of engines, or for providing information about that group.”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´KŸhjih²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ%i915_engine_class_instance (C struct)”Œc.i915_engine_class_instance”hNt”auh1jJhjih²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒi915_engine_class_instance”h]”jg)�”}”(hŒ!struct i915_engine_class_instance”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´K¨ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjh²hh³j h´K¨ubj�)�”}”(hŒi915_engine_class_instance”h]”j–)�”}”(hj h]”hŒi915_engine_class_instance”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj/ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjh²hh³j h´K¨ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hj h²hh³j h´K¨ubah}”(h]”jah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³j h´K¨hjh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ Engine class/instance identifier”h]”hŒ Engine class/instance identifier”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´KâhjRh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjh²hh³j h´K¨ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjmjçjmjè‰jé‰jê‰uh1j[h²hhjih³Nh´Nubjì)�”}”(hXJ**Definition**:: struct i915_engine_class_instance { __u16 engine_class; #define I915_ENGINE_CLASS_INVALID_NONE -1; #define I915_ENGINE_CLASS_INVALID_VIRTUAL -2; __u16 engine_instance; }; **Members** ``engine_class`` Engine class from enum drm_i915_gem_engine_class ``engine_instance`` Engine instance.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjuubhŒ:”…”�”}”(hjuh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Kæhjqubj)�”}”(hŒ²struct i915_engine_class_instance { __u16 engine_class; #define I915_ENGINE_CLASS_INVALID_NONE -1; #define I915_ENGINE_CLASS_INVALID_VIRTUAL -2; __u16 engine_instance; };”h]”hŒ²struct i915_engine_class_instance { __u16 engine_class; #define I915_ENGINE_CLASS_INVALID_NONE -1; #define I915_ENGINE_CLASS_INVALID_VIRTUAL -2; __u16 engine_instance; };”…”�”}”hj’sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Kèhjqubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj£h]”hŒMembers”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Kïhjqubj§)�”}”(hhh]”(j¬)�”}”(hŒB``engine_class`` Engine class from enum drm_i915_gem_engine_class ”h]”(j²)�”}”(hŒ``engine_class``”h]”jC)�”}”(hjÂh]”hŒ engine_class”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Kíhj¼ubjÃ)�”}”(hhh]”hì)�”}”(hŒ0Engine class from enum drm_i915_gem_engine_class”h]”hŒ0Engine class from enum drm_i915_gem_engine_class”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ$``engine_instance`` Engine instance.”h]”(j²)�”}”(hŒ``engine_instance``”h]”jC)�”}”(hjûh]”hŒengine_instance”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjùubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´KõhjõubjÃ)�”}”(hhh]”hì)�”}”(hŒEngine instance.”h]”hŒEngine instance.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Köhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjõubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j h´Kõhj¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjqubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhjih²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hj> h]”hŒ Description”…”�”}”(hj@ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj< ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Kùhjih²hubhì)�”}”(hX@There may be more than one engine fulfilling any role within the system. Each engine of a class is given a unique instance number and therefore any engine can be specified by its class:instance tuplet. APIs that allow access to any engine in the system will use struct i915_engine_class_instance for this identification.”h]”hX@There may be more than one engine fulfilling any role within the system. Each engine of a class is given a unique instance number and therefore any engine can be specified by its class:instance tuplet. APIs that allow access to any engine in the system will use struct i915_engine_class_instance for this identification.”…”�”}”(hjT h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Kãhjih²hubj{)�”}”(hŒL.. _perf_events exposed by i915 through /sys/bus/event_sources/drivers/i915:”h]”h}”(h]”h ]”h"]”h$]”h&]”hÊŒFperf-events-exposed-by-i915-through-sys-bus-event-sources-drivers-i915”uh1jzh´K»hjih²hh³Nubhì)�”}”(hŒK**perf_events exposed by i915 through /sys/bus/event_sources/drivers/i915**”h]”jŒ)�”}”(hjp h]”hŒGperf_events exposed by i915 through /sys/bus/event_sources/drivers/i915”…”�”}”(hjr h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjn ubah}”(h]”jm ah ]”h"]”ŒGperf_events exposed by i915 through /sys/bus/event_sources/drivers/i915”ah$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Kìhjih²hj¢}”jƒ jc sj¤}”jm jc subjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_i915_getparam (C struct)”Œc.drm_i915_getparam”hNt”auh1jJhjih²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_i915_getparam”h]”jg)�”}”(hŒstruct drm_i915_getparam”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj¢ h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjž h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj° h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjž h²hh³j¯ h´Mubj�)�”}”(hŒdrm_i915_getparam”h]”j–)�”}”(hjœ h]”hŒdrm_i915_getparam”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj¾ ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjž h²hh³j¯ h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”hì)�”}”(hŒ!Driver parameter query structure.”h]”hŒ!Driver parameter query structure.”…”�”}”(hjä h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M2hjá h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj— h²hh³j¯ h´Mubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjü jçjü jè‰jé‰jê‰uh1j[h²hhjih³Nh´Nubjì)�”}”(hXN**Definition**:: struct drm_i915_getparam { __s32 param; int __user *value; }; **Members** ``param`` Driver parameter to query. ``value`` Address of memory where queried value should be put. WARNING: Using pointers instead of fixed-size u64 means we need to write compat32 code. Don't repeat this mistake.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj ubhŒ:”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M6hj ubj)�”}”(hŒEstruct drm_i915_getparam { __s32 param; int __user *value; };”h]”hŒEstruct drm_i915_getparam { __s32 param; int __user *value; };”…”�”}”hj! sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M8hj ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj2 h]”hŒMembers”…”�”}”(hj4 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj0 ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M=hj ubj§)�”}”(hhh]”(j¬)�”}”(hŒ%``param`` Driver parameter to query. ”h]”(j²)�”}”(hŒ ``param``”h]”jC)�”}”(hjQ h]”hŒparam”…”�”}”(hjS h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjO ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M6hjK ubjÃ)�”}”(hhh]”hì)�”}”(hŒDriver parameter to query.”h]”hŒDriver parameter to query.”…”�”}”(hjj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jf h´M6hjg ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjK ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jf h´M6hjH ubj¬)�”}”(hŒ²``value`` Address of memory where queried value should be put. WARNING: Using pointers instead of fixed-size u64 means we need to write compat32 code. Don't repeat this mistake.”h]”(j²)�”}”(hŒ ``value``”h]”jC)�”}”(hjŠ h]”hŒvalue”…”�”}”(hjŒ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjˆ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M<hj„ ubjÃ)�”}”(hhh]”(hì)�”}”(hŒ4Address of memory where queried value should be put.”h]”hŒ4Address of memory where queried value should be put.”…”�”}”(hj£ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M:hj  ubhì)�”}”(hŒrWARNING: Using pointers instead of fixed-size u64 means we need to write compat32 code. Don't repeat this mistake.”h]”hŒtWARNING: Using pointers instead of fixed-size u64 means we need to write compat32 code. Don’t repeat this mistake.”…”�”}”(hj² h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jŸ h´M<hj  ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj„ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jŸ h´M<hjH ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhjih²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_i915_getparam_t (C type)”Œc.drm_i915_getparam_t”hNt”auh1jJhjih²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_i915_getparam_t”h]”jg)�”}”(hŒtype drm_i915_getparam_t”h]”(jm)�”}”(hŒtype”h]”hŒtype”…”�”}”(hjò h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjî h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MCubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjî h²hh³j h´MCubj�)�”}”(hŒdrm_i915_getparam_t”h]”j–)�”}”(hjì h]”hŒdrm_i915_getparam_t”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjî h²hh³j h´MCubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjê h²hh³j h´MCubah}”(h]”jå ah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³j h´MChjç h²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ?Driver parameter query structure. See struct drm_i915_getparam.”h]”hŒ?Driver parameter query structure. See struct drm_i915_getparam.”…”�”}”(hj5 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MBhj2 h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjç h²hh³j h´MCubeh}”(h]”h ]”(jàŒtype”eh"]”h$]”h&]”jåjàjæjM jçjM jè‰jé‰jê‰uh1j[h²hhjih³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ#drm_i915_gem_mmap_offset (C struct)”Œc.drm_i915_gem_mmap_offset”hNt”auh1jJhjih²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_i915_gem_mmap_offset”h]”jg)�”}”(hŒstruct drm_i915_gem_mmap_offset”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjj h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjf h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MGubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjx h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjf h²hh³jw h´MGubj�)�”}”(hŒdrm_i915_gem_mmap_offset”h]”j–)�”}”(hjd h]”hŒdrm_i915_gem_mmap_offset”…”�”}”(hjŠ h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj† ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjf h²hh³jw h´MGubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjb h²hh³jw h´MGubah}”(h]”j] ah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jw h´MGhj_ h²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ5Retrieve an offset so we can mmap this buffer object.”h]”hŒ5Retrieve an offset so we can mmap this buffer object.”…”�”}”(hj¬ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mìhj© h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj_ h²hh³jw h´MGubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjÄ jçjÄ jè‰jé‰jê‰uh1j[h²hhjih³Nh´Nubjì)�”}”(hXh**Definition**:: struct drm_i915_gem_mmap_offset { __u32 handle; __u32 pad; __u64 offset; __u64 flags; #define I915_MMAP_OFFSET_GTT 0; #define I915_MMAP_OFFSET_WC 1; #define I915_MMAP_OFFSET_WB 2; #define I915_MMAP_OFFSET_UC 3; #define I915_MMAP_OFFSET_FIXED 4; __u64 extensions; }; **Members** ``handle`` Handle for the object being mapped. ``pad`` Must be zero ``offset`` The fake offset to use for subsequent mmap call This is a fixed-size type for 32/64 compatibility. ``flags`` Flags for extended behaviour. It is mandatory that one of the `MMAP_OFFSET` types should be included: - `I915_MMAP_OFFSET_GTT`: Use mmap with the object bound to GTT. (Write-Combined) - `I915_MMAP_OFFSET_WC`: Use Write-Combined caching. - `I915_MMAP_OFFSET_WB`: Use Write-Back caching. - `I915_MMAP_OFFSET_FIXED`: Use object placement to determine caching. On devices with local memory `I915_MMAP_OFFSET_FIXED` is the only valid type. On devices without local memory, this caching mode is invalid. As caching mode when specifying `I915_MMAP_OFFSET_FIXED`, WC or WB will be used, depending on the object placement on creation. WB will be used when the object can only exist in system memory, WC otherwise. ``extensions`` Zero-terminated chain of extensions. No current extensions defined; mbz.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjÐ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÌ ubhŒ:”…”�”}”(hjÌ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MðhjÈ ubj)�”}”(hX-struct drm_i915_gem_mmap_offset { __u32 handle; __u32 pad; __u64 offset; __u64 flags; #define I915_MMAP_OFFSET_GTT 0; #define I915_MMAP_OFFSET_WC 1; #define I915_MMAP_OFFSET_WB 2; #define I915_MMAP_OFFSET_UC 3; #define I915_MMAP_OFFSET_FIXED 4; __u64 extensions; };”h]”hX-struct drm_i915_gem_mmap_offset { __u32 handle; __u32 pad; __u64 offset; __u64 flags; #define I915_MMAP_OFFSET_GTT 0; #define I915_MMAP_OFFSET_WC 1; #define I915_MMAP_OFFSET_WB 2; #define I915_MMAP_OFFSET_UC 3; #define I915_MMAP_OFFSET_FIXED 4; __u64 extensions; };”…”�”}”hjé sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MòhjÈ ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjú h]”hŒMembers”…”�”}”(hjü h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjø ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MÿhjÈ ubj§)�”}”(hhh]”(j¬)�”}”(hŒ/``handle`` Handle for the object being mapped. ”h]”(j²)�”}”(hŒ ``handle``”h]”jC)�”}”(hj h]”hŒhandle”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M÷hj ubjÃ)�”}”(hhh]”hì)�”}”(hŒ#Handle for the object being mapped.”h]”hŒ#Handle for the object being mapped.”…”�”}”(hj2 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ``pad`` Must be zero ”h]”(j²)�”}”(hŒ``pad``”h]”jC)�”}”(hjR h]”hŒpad”…”�”}”(hjT h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjP ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MùhjL ubjÃ)�”}”(hhh]”hì)�”}”(hŒ Must be zero”h]”hŒ Must be zero”…”�”}”(hjk h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jg h´Mùhjh ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjL ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jg h´Mùhj ubj¬)�”}”(hŒo``offset`` The fake offset to use for subsequent mmap call This is a fixed-size type for 32/64 compatibility. ”h]”(j²)�”}”(hŒ ``offset``”h]”jC)�”}”(hj‹ h]”hŒoffset”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj‰ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mþhj… ubjÃ)�”}”(hhh]”(hì)�”}”(hŒ/The fake offset to use for subsequent mmap call”h]”hŒ/The fake offset to use for subsequent mmap call”…”�”}”(hj¤ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mühj¡ ubhì)�”}”(hŒ2This is a fixed-size type for 32/64 compatibility.”h]”hŒ2This is a fixed-size type for 32/64 compatibility.”…”�”}”(hj³ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j  h´Mþhj¡ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj… ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j  h´Mþhj ubj¬)�”}”(hXÏ``flags`` Flags for extended behaviour. It is mandatory that one of the `MMAP_OFFSET` types should be included: - `I915_MMAP_OFFSET_GTT`: Use mmap with the object bound to GTT. (Write-Combined) - `I915_MMAP_OFFSET_WC`: Use Write-Combined caching. - `I915_MMAP_OFFSET_WB`: Use Write-Back caching. - `I915_MMAP_OFFSET_FIXED`: Use object placement to determine caching. On devices with local memory `I915_MMAP_OFFSET_FIXED` is the only valid type. On devices without local memory, this caching mode is invalid. As caching mode when specifying `I915_MMAP_OFFSET_FIXED`, WC or WB will be used, depending on the object placement on creation. WB will be used when the object can only exist in system memory, WC otherwise. ”h]”(j²)�”}”(hŒ ``flags``”h]”jC)�”}”(hjÓ h]”hŒflags”…”�”}”(hjÕ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÑ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MhjÍ ubjÃ)�”}”(hhh]”(hì)�”}”(hŒFlags for extended behaviour.”h]”hŒFlags for extended behaviour.”…”�”}”(hjì h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mhjé ubhì)�”}”(hŒGIt is mandatory that one of the `MMAP_OFFSET` types should be included:”h]”(hŒ It is mandatory that one of the ”…”�”}”(hjû h²hh³Nh´NubhŒtitle_reference”“”)�”}”(hŒ `MMAP_OFFSET`”h]”hŒ MMAP_OFFSET”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjû ubhŒ types should be included:”…”�”}”(hjû h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mhjé ubhâ)�”}”(hhh]”(hç)�”}”(hŒO`I915_MMAP_OFFSET_GTT`: Use mmap with the object bound to GTT. (Write-Combined)”h]”hì)�”}”(hj# h]”(j )�”}”(hŒ`I915_MMAP_OFFSET_GTT`”h]”hŒI915_MMAP_OFFSET_GTT”…”�”}”(hj( h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj% ubhŒ9: Use mmap with the object bound to GTT. (Write-Combined)”…”�”}”(hj% h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mhj! ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj ubhç)�”}”(hŒ2`I915_MMAP_OFFSET_WC`: Use Write-Combined caching.”h]”hì)�”}”(hjI h]”(j )�”}”(hŒ`I915_MMAP_OFFSET_WC`”h]”hŒI915_MMAP_OFFSET_WC”…”�”}”(hjN h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjK ubhŒ: Use Write-Combined caching.”…”�”}”(hjK h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M hjG ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj ubhç)�”}”(hŒ.`I915_MMAP_OFFSET_WB`: Use Write-Back caching.”h]”hì)�”}”(hjo h]”(j )�”}”(hŒ`I915_MMAP_OFFSET_WB`”h]”hŒI915_MMAP_OFFSET_WB”…”�”}”(hjt h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjq ubhŒ: Use Write-Back caching.”…”�”}”(hjq h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M hjm ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj ubhç)�”}”(hŒE`I915_MMAP_OFFSET_FIXED`: Use object placement to determine caching. ”h]”hì)�”}”(hŒD`I915_MMAP_OFFSET_FIXED`: Use object placement to determine caching.”h]”(j )�”}”(hŒ`I915_MMAP_OFFSET_FIXED`”h]”hŒI915_MMAP_OFFSET_FIXED”…”�”}”(hj› h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj— ubhŒ,: Use object placement to determine caching.”…”�”}”(hj— h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M hj“ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj ubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1háh³j@ h´Mhjé ubhì)�”}”(hŒŒOn devices with local memory `I915_MMAP_OFFSET_FIXED` is the only valid type. On devices without local memory, this caching mode is invalid.”h]”(hŒOn devices with local memory ”…”�”}”(hj h²hh³Nh´Nubj )�”}”(hŒ`I915_MMAP_OFFSET_FIXED`”h]”hŒI915_MMAP_OFFSET_FIXED”…”�”}”(hjÊ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubhŒW is the only valid type. On devices without local memory, this caching mode is invalid.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M hjé ubhì)�”}”(hŒÎAs caching mode when specifying `I915_MMAP_OFFSET_FIXED`, WC or WB will be used, depending on the object placement on creation. WB will be used when the object can only exist in system memory, WC otherwise.”h]”(hŒ As caching mode when specifying ”…”�”}”(hjã h²hh³Nh´Nubj )�”}”(hŒ`I915_MMAP_OFFSET_FIXED`”h]”hŒI915_MMAP_OFFSET_FIXED”…”�”}”(hjë h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjã ubhŒ–, WC or WB will be used, depending on the object placement on creation. WB will be used when the object can only exist in system memory, WC otherwise.”…”�”}”(hjã h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mhjé ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÍ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jè h´Mhj ubj¬)�”}”(hŒX``extensions`` Zero-terminated chain of extensions. No current extensions defined; mbz.”h]”(j²)�”}”(hŒ``extensions``”h]”jC)�”}”(hjh]”hŒ extensions”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MhjubjÃ)�”}”(hhh]”(hì)�”}”(hŒ$Zero-terminated chain of extensions.”h]”hŒ$Zero-terminated chain of extensions.”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mhj,ubhì)�”}”(hŒ#No current extensions defined; mbz.”h]”hŒ#No current extensions defined; mbz.”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mhj,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j+h´Mhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjÈ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhjih²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjhh]”hŒ Description”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjfubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M"hjih²hubhì)�”}”(hŒ©This struct is passed as argument to the `DRM_IOCTL_I915_GEM_MMAP_OFFSET` ioctl, and is used to retrieve the fake offset to mmap an object specified by :c:type:`handle`.”h]”(hŒ)This struct is passed as argument to the ”…”�”}”(hj~h²hh³Nh´Nubj )�”}”(hŒ `DRM_IOCTL_I915_GEM_MMAP_OFFSET`”h]”hŒDRM_IOCTL_I915_GEM_MMAP_OFFSET”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj~ubhŒO ioctl, and is used to retrieve the fake offset to mmap an object specified by ”…”�”}”(hj~h²hh³Nh´Nubh)�”}”(hŒ:c:type:`handle`”h]”jC)�”}”(hjšh]”hŒhandle”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”(Œxref”jàŒc-type”eh"]”h$]”h&]”uh1jBhj˜ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œgpu/driver-uapi”Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰Œ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”sbŒ reftarget”Œhandle”uh1hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Míhj~ubhŒ.”…”�”}”(hj~h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÂh´Míhjih²hubhì)�”}”(hŒúThe legacy way of using `DRM_IOCTL_I915_GEM_MMAP` is removed on gen12+. `DRM_IOCTL_I915_GEM_MMAP_GTT` is an older supported alias to this struct, but will behave as setting the :c:type:`extensions` to 0, and :c:type:`flags` to `I915_MMAP_OFFSET_GTT`.”h]”(hŒThe legacy way of using ”…”�”}”(hjÍh²hh³Nh´Nubj )�”}”(hŒ`DRM_IOCTL_I915_GEM_MMAP`”h]”hŒDRM_IOCTL_I915_GEM_MMAP”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÍubhŒ is removed on gen12+. ”…”�”}”(hjÍh²hh³Nh´Nubj )�”}”(hŒ`DRM_IOCTL_I915_GEM_MMAP_GTT`”h]”hŒDRM_IOCTL_I915_GEM_MMAP_GTT”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÍubhŒL is an older supported alias to this struct, but will behave as setting the ”…”�”}”(hjÍh²hh³Nh´Nubh)�”}”(hŒ:c:type:`extensions`”h]”jC)�”}”(hjûh]”hŒ extensions”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjùubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒ extensions”uh1hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MðhjÍubhŒ to 0, and ”…”�”}”(hjÍh²hh³Nh´Nubh)�”}”(hŒ:c:type:`flags`”h]”jC)�”}”(hjh]”hŒflags”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒflags”uh1hh³jh´MðhjÍubhŒ to ”…”�”}”(hjÍh²hh³Nh´Nubj )�”}”(hŒ`I915_MMAP_OFFSET_GTT`”h]”hŒI915_MMAP_OFFSET_GTT”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÍubhŒ.”…”�”}”(hjÍh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jh´Mðhjih²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ"drm_i915_gem_set_domain (C struct)”Œc.drm_i915_gem_set_domain”hNt”auh1jJhjih²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_i915_gem_set_domain”h]”jg)�”}”(hŒstruct drm_i915_gem_set_domain”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjmh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M÷ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjmh²hh³j~h´M÷ubj�)�”}”(hŒdrm_i915_gem_set_domain”h]”j–)�”}”(hjkh]”hŒdrm_i915_gem_set_domain”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj�ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjmh²hh³j~h´M÷ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjih²hh³j~h´M÷ubah}”(h]”jdah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³j~h´M÷hjfh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒdAdjust the objects write or read domain, in preparation for accessing the pages via some CPU domain.”h]”hŒdAdjust the objects write or read domain, in preparation for accessing the pages via some CPU domain.”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M$hj°h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjfh²hh³j~h´M÷ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjËjçjËjè‰jé‰jê‰uh1j[h²hhjih³Nh´Nubjì)�”}”(hXo**Definition**:: struct drm_i915_gem_set_domain { __u32 handle; __u32 read_domains; __u32 write_domain; }; **Members** ``handle`` Handle for the object. ``read_domains`` New read domains. ``write_domain`` New write domain. Note that having something in the write domain implies it's in the read domain, and only that read domain.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÓubhŒ:”…”�”}”(hjÓh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M(hjÏubj)�”}”(hŒestruct drm_i915_gem_set_domain { __u32 handle; __u32 read_domains; __u32 write_domain; };”h]”hŒestruct drm_i915_gem_set_domain { __u32 handle; __u32 read_domains; __u32 write_domain; };”…”�”}”hjðsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M*hjÏubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjh]”hŒMembers”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÿubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M0hjÏubj§)�”}”(hhh]”(j¬)�”}”(hŒ"``handle`` Handle for the object. ”h]”(j²)�”}”(hŒ ``handle``”•’h]”jC)�”}”(hj h]”hŒhandle”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MKhjubjÃ)�”}”(hhh]”hì)�”}”(hŒHandle for the object.”h]”hŒHandle for the object.”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j5h´MKhj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j5h´MKhjubj¬)�”}”(hŒ#``read_domains`` New read domains. ”h]”(j²)�”}”(hŒ``read_domains``”h]”jC)�”}”(hjYh]”hŒ read_domains”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjWubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MNhjSubjÃ)�”}”(hhh]”hì)�”}”(hŒNew read domains.”h]”hŒNew read domains.”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jnh´MNhjoubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjSubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jnh´MNhjubj¬)�”}”(hŒŽ``write_domain`` New write domain. Note that having something in the write domain implies it's in the read domain, and only that read domain.”h]”(j²)�”}”(hŒ``write_domain``”h]”jC)�”}”(hj’h]”hŒ write_domain”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MThjŒubjÃ)�”}”(hhh]”(hì)�”}”(hŒNew write domain.”h]”hŒNew write domain.”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MRhj¨ubhì)�”}”(hŒjNote that having something in the write domain implies it's in the read domain, and only that read domain.”h]”hŒlNote that having something in the write domain implies it’s in the read domain, and only that read domain.”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j§h´MThj¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j§h´MThjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjÏubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhjih²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjãh]”hŒ Description”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjáubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MXhjih²hubhì)�”}”(hŒªSpecifying a new write or read domain will flush the object out of the previous domain(if required), before then updating the objects domain tracking with the new domain.”h]”hŒªSpecifying a new write or read domain will flush the object out of the previous domain(if required), before then updating the objects domain tracking with the new domain.”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M%hjih²hubhì)�”}”(hŒVNote this might involve waiting for the object first if it is still active on the GPU.”h]”hŒVNote this might involve waiting for the object first if it is still active on the GPU.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M)hjih²hubhì)�”}”(hŒ;Supported values for **read_domains** and **write_domain**:”h]”(hŒSupported values for ”…”�”}”(hjh²hh³Nh´NubjŒ)�”}”(hŒ**read_domains**”h]”hŒ read_domains”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjubhŒ and ”…”�”}”(hjh²hh³Nh´NubjŒ)�”}”(hŒ**write_domain**”h]”hŒ write_domain”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjubhŒ:”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M,hjih²hubhŒ block_quote”“”)�”}”(hŒ�- I915_GEM_DOMAIN_WC: Uncached write-combined domain - I915_GEM_DOMAIN_CPU: CPU cache domain - I915_GEM_DOMAIN_GTT: Mappable aperture domain ”h]”hâ)�”}”(hhh]”(hç)�”}”(hŒ2I915_GEM_DOMAIN_WC: Uncached write-combined domain”h]”hì)�”}”(hjUh]”hŒ2I915_GEM_DOMAIN_WC: Uncached write-combined domain”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M.hjSubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjPubhç)�”}”(hŒ%I915_GEM_DOMAIN_CPU: CPU cache domain”h]”hì)�”}”(hjmh]”hŒ%I915_GEM_DOMAIN_CPU: CPU cache domain”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M/hjkubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjPubhç)�”}”(hŒ.I915_GEM_DOMAIN_GTT: Mappable aperture domain ”h]”hì)�”}”(hŒ-I915_GEM_DOMAIN_GTT: Mappable aperture domain”h]”hŒ-I915_GEM_DOMAIN_GTT: Mappable aperture domain”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M0hjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjPubeh}”(h]”h ]”h"]”h$]”h&]”jÀ jÁ uh1háh³jdh´M.hjLubah}”(h]”h ]”h"]”h$]”h&]”uh1jJh³jdh´M.hjih²hubhì)�”}”(hŒAll other domains are rejected.”h]”hŒAll other domains are rejected.”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M2hjih²hubhì)�”}”(hXINote that for discrete, starting from DG1, this is no longer supported, and is instead rejected. On such platforms the CPU domain is effectively static, where we also only support a single :c:type:`drm_i915_gem_mmap_offset` cache mode, which can't be set explicitly and instead depends on the object placements, as per the below.”h]”(hŒ½Note that for discrete, starting from DG1, this is no longer supported, and is instead rejected. On such platforms the CPU domain is effectively static, where we also only support a single ”…”�”}”(hj·h²hh³Nh´Nubh)�”}”(hŒ":c:type:`drm_i915_gem_mmap_offset`”h]”jC)�”}”(hjÁh]”hŒdrm_i915_gem_mmap_offset”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj¿ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒdrm_i915_gem_mmap_offset”uh1hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M4hj·ubhŒl cache mode, which can’t be set explicitly and instead depends on the object placements, as per the below.”…”�”}”(hj·h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÞh´M4hjih²hubhì)�”}”(hŒ*Implicit caching rules, starting from DG1:”h]”hŒ*Implicit caching rules, starting from DG1:”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M:hjih²hubjK)�”}”(hXH- If any of the object placements (see :c:type:`drm_i915_gem_create_ext_memory_regions`) contain I915_MEMORY_CLASS_DEVICE then the object will be allocated and mapped as write-combined only. - Everything else is always allocated and mapped as write-back, with the guarantee that everything is also coherent with the GPU. ”h]”hâ)�”}”(hhh]”(hç)�”}”(hŒ½If any of the object placements (see :c:type:`drm_i915_gem_create_ext_memory_regions`) contain I915_MEMORY_CLASS_DEVICE then the object will be allocated and mapped as write-combined only. ”h]”hì)�”}”(hŒ¼If any of the object placements (see :c:type:`drm_i915_gem_create_ext_memory_regions`) contain I915_MEMORY_CLASS_DEVICE then the object will be allocated and mapped as write-combined only.”h]”(hŒ%If any of the object placements (see ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ0:c:type:`drm_i915_gem_create_ext_memory_regions`”h]”jC)�”}”(hj h]”hŒ&drm_i915_gem_create_ext_memory_regions”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒ&drm_i915_gem_create_ext_memory_regions”uh1hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M<hjubhŒg) contain I915_MEMORY_CLASS_DEVICE then the object will be allocated and mapped as write-combined only.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j*h´M<hjÿubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjüubhç)�”}”(hŒ€Everything else is always allocated and mapped as write-back, with the guarantee that everything is also coherent with the GPU. ”h]”hì)�”}”(hŒEverything else is always allocated and mapped as write-back, with the guarantee that everything is also coherent with the GPU.”h]”hŒEverything else is always allocated and mapped as write-back, with the guarantee that everything is also coherent with the GPU.”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M@hj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjüubeh}”(h]”h ]”h"]”h$]”h&]”jÀ jÁ uh1háh³j*h´M<hjøubah}”(h]”h ]”h"]”h$]”h&]”uh1jJh³j*h´M<hjih²hubhì)�”}”(hŒÕNote that this is likely to change in the future again, where we might need more flexibility on future devices, so making this all explicit as part of a new :c:type:`drm_i915_gem_create_ext` extension is probable.”h]”(hŒ�Note that this is likely to change in the future again, where we might need more flexibility on future devices, so making this all explicit as part of a new ”…”�”}”(hj`h²hh³Nh´Nubh)�”}”(hŒ!:c:type:`drm_i915_gem_create_ext`”h]”jC)�”}”(hjjh]”hŒdrm_i915_gem_create_ext”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjhubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒdrm_i915_gem_create_ext”uh1hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MChj`ubhŒ extension is probable.”…”�”}”(hj`h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j‡h´MChjih²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ"drm_i915_gem_exec_fence (C struct)”Œc.drm_i915_gem_exec_fence”hNt”auh1jJhjih²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_i915_gem_exec_fence”h]”jg)�”}”(hŒstruct drm_i915_gem_exec_fence”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj§h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MJubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hj§h²hh³j¸h´MJubj�)�”}”(hŒdrm_i915_gem_exec_fence”h]”j–)�”}”(hj¥h]”hŒdrm_i915_gem_exec_fence”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjÇubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj§h²hh³j¸h´MJubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hj£h²hh³j¸h´MJubah}”(h]”jžah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³j¸h´MJhj h²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ/An input or output fence for the execbuf ioctl.”h]”hŒ/An input or output fence for the execbuf ioctl.”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M'hjêh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj h²hh³j¸h´MJubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjjçjjè‰jé‰jê‰uh1j[h²hhjih³Nh´Nubjì)�”}”(hX**Definition**:: struct drm_i915_gem_exec_fence { __u32 handle; __u32 flags; #define I915_EXEC_FENCE_WAIT (1<<0); #define I915_EXEC_FENCE_SIGNAL (1<<1); #define __I915_EXEC_FENCE_UNKNOWN_FLAGS (-(I915_EXEC_FENCE_SIGNAL << 1)); }; **Members** ``handle`` User's handle for a drm_syncobj to wait on or signal. ``flags`` Supported flags are: I915_EXEC_FENCE_WAIT: Wait for the input fence before request submission. I915_EXEC_FENCE_SIGNAL: Return request completion fence as output”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj ubhŒ:”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M+hj ubj)�”}”(hŒðstruct drm_i915_gem_exec_fence { __u32 handle; __u32 flags; #define I915_EXEC_FENCE_WAIT (1<<0); #define I915_EXEC_FENCE_SIGNAL (1<<1); #define __I915_EXEC_FENCE_UNKNOWN_FLAGS (-(I915_EXEC_FENCE_SIGNAL << 1)); };”h]”hŒðstruct drm_i915_gem_exec_fence { __u32 handle; __u32 flags; #define I915_EXEC_FENCE_WAIT (1<<0); #define I915_EXEC_FENCE_SIGNAL (1<<1); #define __I915_EXEC_FENCE_UNKNOWN_FLAGS (-(I915_EXEC_FENCE_SIGNAL << 1)); };”…”�”}”hj*sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M-hj ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj;h]”hŒMembers”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M5hj ubj§)�”}”(hhh]”(j¬)�”}”(hŒA``handle`` User's handle for a drm_syncobj to wait on or signal. ”h]”(j²)�”}”(hŒ ``handle``”h]”jC)�”}”(hjZh]”hŒhandle”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjXubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M1hjTubjÃ)�”}”(hhh]”hì)�”}”(hŒ5User's handle for a drm_syncobj to wait on or signal.”h]”hŒ7User’s handle for a drm_syncobj to wait on or signal.”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³joh´M1hjpubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjTubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³joh´M1hjQubj¬)�”}”(hŒ¬``flags`` Supported flags are: I915_EXEC_FENCE_WAIT: Wait for the input fence before request submission. I915_EXEC_FENCE_SIGNAL: Return request completion fence as output”h]”(j²)�”}”(hŒ ``flags``”h]”jC)�”}”(hj“h]”hŒflags”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M:hj�ubjÃ)�”}”(hhh]”(hì)�”}”(hŒSupported flags are:”h]”hŒSupported flags are:”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M5hj©ubhì)�”}”(hŒII915_EXEC_FENCE_WAIT: Wait for the input fence before request submission.”h]”hŒII915_EXEC_FENCE_WAIT: Wait for the input fence before request submission.”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M7hj©ubhì)�”}”(hŒAI915_EXEC_FENCE_SIGNAL: Return request completion fence as output”h]”hŒAI915_EXEC_FENCE_SIGNAL: Return request completion fence as output”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¨h´M:hj©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j¨h´M:hjQubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhjih²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjóh]”hŒ Description”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjñubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M>hjih²hubhì)�”}”(hŒBThe request will wait for input fence to signal before submission.”h]”hŒBThe request will wait for input fence to signal before submission.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M(hjih²hubhì)�”}”(hŒOThe returned output fence will be signaled after the completion of the request.”h]”hŒOThe returned output fence will be signaled after the completion of the request.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M*hjih²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ6drm_i915_gem_execbuffer_ext_timeline_fences (C struct)”Œ-c.drm_i915_gem_execbuffer_ext_timeline_fences”hNt”auh1jJhjih²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒ+drm_i915_gem_execbuffer_ext_timeline_fences”h]”jg)�”}”(hŒ2struct drm_i915_gem_execbuffer_ext_timeline_fences”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj<h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M0ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hj<h²hh³jMh´M0ubj�)�”}”(hŒ+drm_i915_gem_execbuffer_ext_timeline_fences”h]”j–)�”}”(hj:h]”hŒ+drm_i915_gem_execbuffer_ext_timeline_fences”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj\ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj<h²hh³jMh´M0ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hj8h²hh³jMh´M0ubah}”(h]”j3ah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jMh´M0hj5h²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ"Timeline fences for execbuf ioctl.”h]”hŒ"Timeline fences for execbuf ioctl.”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MChjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj5h²hh³jMh´M0ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjšjçjšjè‰jé‰jê‰uh1j[h²hhjih³Nh´Nubjì)�”}”(hXß**Definition**:: struct drm_i915_gem_execbuffer_ext_timeline_fences { #define DRM_I915_GEM_EXECBUFFER_EXT_TIMELINE_FENCES 0; struct i915_user_extension base; __u64 fence_count; __u64 handles_ptr; __u64 values_ptr; }; **Members** ``base`` Extension link. See struct i915_user_extension. ``fence_count`` Number of elements in the **handles_ptr** & **value_ptr** arrays. ``handles_ptr`` Pointer to an array of struct drm_i915_gem_exec_fence of length **fence_count**. ``values_ptr`` Pointer to an array of u64 values of length **fence_count**. Values must be 0 for a binary drm_syncobj. A Value of 0 for a timeline drm_syncobj is invalid as it turns a drm_syncobj into a binary one.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj¢ubhŒ:”…”�”}”(hj¢h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MGhjžubj)�”}”(hŒ×struct drm_i915_gem_execbuffer_ext_timeline_fences { #define DRM_I915_GEM_EXECBUFFER_EXT_TIMELINE_FENCES 0; struct i915_user_extension base; __u64 fence_count; __u64 handles_ptr; __u64 values_ptr; };”h]”hŒ×struct drm_i915_gem_execbuffer_ext_timeline_fences { #define DRM_I915_GEM_EXECBUFFER_EXT_TIMELINE_FENCES 0; struct i915_user_extension base; __u64 fence_count; __u64 handles_ptr; __u64 values_ptr; };”…”�”}”hj¿sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MIhjžubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjÐh]”hŒMembers”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MQhjžubj§)�”}”(hhh]”(j¬)�”}”(hŒ9``base`` Extension link. See struct i915_user_extension. ”h]”(j²)�”}”(hŒ``base``”h]”jC)�”}”(hjïh]”hŒbase”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjíubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MMhjéubjÃ)�”}”(hhh]”hì)�”}”(hŒ/Extension link. See struct i915_user_extension.”h]”hŒ/Extension link. See struct i915_user_extension.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jh´MMhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjéubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jh´MMhjæubj¬)�”}”(hŒR``fence_count`` Number of elements in the **handles_ptr** & **value_ptr** arrays. ”h]”(j²)�”}”(hŒ``fence_count``”h]”jC)�”}”(hj(h]”hŒ fence_count”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MRhj"ubjÃ)�”}”(hhh]”hì)�”}”(hŒANumber of elements in the **handles_ptr** & **value_ptr** arrays.”h]”(hŒNumber of elements in the ”…”�”}”(hjAh²hh³Nh´NubjŒ)�”}”(hŒ**handles_ptr**”h]”hŒ handles_ptr”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjAubhŒ & ”…”�”}”(hjAh²hh³Nh´NubjŒ)�”}”(hŒ **value_ptr**”h]”hŒ value_ptr”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjAubhŒ arrays.”…”�”}”(hjAh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MQhj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j=h´MRhjæubj¬)�”}”(hŒa``handles_ptr`` Pointer to an array of struct drm_i915_gem_exec_fence of length **fence_count**. ”h]”(j²)�”}”(hŒ``handles_ptr``”h]”jC)�”}”(hj†h]”hŒ handles_ptr”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MXhj€ubjÃ)�”}”(hhh]”hì)�”}”(hŒPPointer to an array of struct drm_i915_gem_exec_fence of length **fence_count**.”h]”(hŒ@Pointer to an array of struct drm_i915_gem_exec_fence of length ”…”�”}”(hjŸh²hh³Nh´NubjŒ)�”}”(hŒ**fence_count**”h]”hŒ fence_count”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjŸubhŒ.”…”�”}”(hjŸh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MWhjœubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j›h´MXhjæubj¬)�”}”(hŒÖ``values_ptr`` Pointer to an array of u64 values of length **fence_count**. Values must be 0 for a binary drm_syncobj. A Value of 0 for a timeline drm_syncobj is invalid as it turns a drm_syncobj into a binary one.”h]”(j²)�”}”(hŒ``values_ptr``”h]”jC)�”}”(hjÒh]”hŒ values_ptr”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M`hjÌubjÃ)�”}”(hhh]”hì)�”}”(hŒÇPointer to an array of u64 values of length **fence_count**. Values must be 0 for a binary drm_syncobj. A Value of 0 for a timeline drm_syncobj is invalid as it turns a drm_syncobj into a binary one.”h]”(hŒ,Pointer to an array of u64 values of length ”…”�”}”(hjëh²hh³Nh´NubjŒ)�”}”(hŒ**fence_count**”h]”hŒ fence_count”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjëubhŒŒ. Values must be 0 for a binary drm_syncobj. A Value of 0 for a timeline drm_syncobj is invalid as it turns a drm_syncobj into a binary one.”…”�”}”(hjëh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”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¦hjžubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhjih²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hj'h]”hŒ Description”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mdhjih²hubhì)�”}”(hŒÃThis structure describes an array of drm_syncobj and associated points for timeline variants of drm_syncobj. It is invalid to append this structure to the execbuf if I915_EXEC_FENCE_ARRAY is set.”h]”hŒÃThis structure describes an array of drm_syncobj and associated points for timeline variants of drm_syncobj. It is invalid to append this structure to the execbuf if I915_EXEC_FENCE_ARRAY is set.”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MDhjih²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ#drm_i915_gem_execbuffer2 (C struct)”Œc.drm_i915_gem_execbuffer2”hNt”auh1jJhjih²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_i915_gem_execbuffer2”h]”jg)�”}”(hŒstruct drm_i915_gem_execbuffer2”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjah²hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MKubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjah²hh³jrh´MKubj�)�”}”(hŒdrm_i915_gem_execbuffer2”h]”j–)�”}”(hj_h]”hŒdrm_i915_gem_execbuffer2”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj�ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjah²hh³jrh´MKubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hj]h²hh³jrh´MKubah}”(h]”jXah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jrh´MKhjZh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ-Structure for DRM_I915_GEM_EXECBUFFER2 ioctl.”h]”hŒ-Structure for DRM_I915_GEM_EXECBUFFER2 ioctl.”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mfhj¤h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjZh²hh³jrh´MKubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj¿jçj¿jè‰jé‰jê‰uh1j[h²hhjih³Nh´Nubjì)�”}”(hX **Definition**:: struct drm_i915_gem_execbuffer2 { __u64 buffers_ptr; __u32 buffer_count; __u32 batch_start_offset; __u32 batch_len; __u32 DR1; __u32 DR4; __u32 num_cliprects; __u64 cliprects_ptr; __u64 flags; #define I915_EXEC_RING_MASK (0x3f); #define I915_EXEC_DEFAULT (0<<0); #define I915_EXEC_RENDER (1<<0); #define I915_EXEC_BSD (2<<0); #define I915_EXEC_BLT (3<<0); #define I915_EXEC_VEBOX (4<<0); #define I915_EXEC_CONSTANTS_MASK (3<<6); #define I915_EXEC_CONSTANTS_REL_GENERAL (0<<6) ; #define I915_EXEC_CONSTANTS_ABSOLUTE (1<<6); #define I915_EXEC_CONSTANTS_REL_SURFACE (2<<6) ; #define I915_EXEC_GEN7_SOL_RESET (1<<8); #define I915_EXEC_SECURE (1<<9); #define I915_EXEC_IS_PINNED (1<<10); #define I915_EXEC_NO_RELOC (1<<11); #define I915_EXEC_HANDLE_LUT (1<<12); #define I915_EXEC_BSD_SHIFT (13); #define I915_EXEC_BSD_MASK (3 << I915_EXEC_BSD_SHIFT); #define I915_EXEC_BSD_DEFAULT (0 << I915_EXEC_BSD_SHIFT); #define I915_EXEC_BSD_RING1 (1 << I915_EXEC_BSD_SHIFT); #define I915_EXEC_BSD_RING2 (2 << I915_EXEC_BSD_SHIFT); #define I915_EXEC_RESOURCE_STREAMER (1<<15); #define I915_EXEC_FENCE_IN (1<<16); #define I915_EXEC_FENCE_OUT (1<<17); #define I915_EXEC_BATCH_FIRST (1<<18); #define I915_EXEC_FENCE_ARRAY (1<<19); #define I915_EXEC_FENCE_SUBMIT (1 << 20); #define I915_EXEC_USE_EXTENSIONS (1 << 21); #define __I915_EXEC_UNKNOWN_FLAGS (-(I915_EXEC_USE_EXTENSIONS << 1)); __u64 rsvd1; __u64 rsvd2; }; **Members** ``buffers_ptr`` Pointer to a list of gem_exec_object2 structs ``buffer_count`` Number of elements in **buffers_ptr** array ``batch_start_offset`` Offset in the batchbuffer to start execution from. ``batch_len`` Length in bytes of the batch buffer, starting from the **batch_start_offset**. If 0, length is assumed to be the batch buffer object size. ``DR1`` deprecated ``DR4`` deprecated ``num_cliprects`` See **cliprects_ptr** ``cliprects_ptr`` Kernel clipping was a DRI1 misfeature. It is invalid to use this field if I915_EXEC_FENCE_ARRAY or I915_EXEC_USE_EXTENSIONS flags are not set. If I915_EXEC_FENCE_ARRAY is set, then this is a pointer to an array of :c:type:`drm_i915_gem_exec_fence` and **num_cliprects** is the length of the array. If I915_EXEC_USE_EXTENSIONS is set, then this is a pointer to a single :c:type:`i915_user_extension` and num_cliprects is 0. ``flags`` Execbuf flags ``rsvd1`` Context id ``rsvd2`` in and out sync_file file descriptors. When I915_EXEC_FENCE_IN or I915_EXEC_FENCE_SUBMIT flag is set, the lower 32 bits of this field will have the in sync_file fd (input). When I915_EXEC_FENCE_OUT flag is set, the upper 32 bits of this field will have the out sync_file fd (output).”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÇubhŒ:”…”�”}”(hjÇh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MjhjÃubj)�”}”(hX˜struct drm_i915_gem_execbuffer2 { __u64 buffers_ptr; __u32 buffer_count; __u32 batch_start_offset; __u32 batch_len; __u32 DR1; __u32 DR4; __u32 num_cliprects; __u64 cliprects_ptr; __u64 flags; #define I915_EXEC_RING_MASK (0x3f); #define I915_EXEC_DEFAULT (0<<0); #define I915_EXEC_RENDER (1<<0); #define I915_EXEC_BSD (2<<0); #define I915_EXEC_BLT (3<<0); #define I915_EXEC_VEBOX (4<<0); #define I915_EXEC_CONSTANTS_MASK (3<<6); #define I915_EXEC_CONSTANTS_REL_GENERAL (0<<6) ; #define I915_EXEC_CONSTANTS_ABSOLUTE (1<<6); #define I915_EXEC_CONSTANTS_REL_SURFACE (2<<6) ; #define I915_EXEC_GEN7_SOL_RESET (1<<8); #define I915_EXEC_SECURE (1<<9); #define I915_EXEC_IS_PINNED (1<<10); #define I915_EXEC_NO_RELOC (1<<11); #define I915_EXEC_HANDLE_LUT (1<<12); #define I915_EXEC_BSD_SHIFT (13); #define I915_EXEC_BSD_MASK (3 << I915_EXEC_BSD_SHIFT); #define I915_EXEC_BSD_DEFAULT (0 << I915_EXEC_BSD_SHIFT); #define I915_EXEC_BSD_RING1 (1 << I915_EXEC_BSD_SHIFT); #define I915_EXEC_BSD_RING2 (2 << I915_EXEC_BSD_SHIFT); #define I915_EXEC_RESOURCE_STREAMER (1<<15); #define I915_EXEC_FENCE_IN (1<<16); #define I915_EXEC_FENCE_OUT (1<<17); #define I915_EXEC_BATCH_FIRST (1<<18); #define I915_EXEC_FENCE_ARRAY (1<<19); #define I915_EXEC_FENCE_SUBMIT (1 << 20); #define I915_EXEC_USE_EXTENSIONS (1 << 21); #define __I915_EXEC_UNKNOWN_FLAGS (-(I915_EXEC_USE_EXTENSIONS << 1)); __u64 rsvd1; __u64 rsvd2; };”h]”hX˜struct drm_i915_gem_execbuffer2 { __u64 buffers_ptr; __u32 buffer_count; __u32 batch_start_offset; __u32 batch_len; __u32 DR1; __u32 DR4; __u32 num_cliprects; __u64 cliprects_ptr; __u64 flags; #define I915_EXEC_RING_MASK (0x3f); #define I915_EXEC_DEFAULT (0<<0); #define I915_EXEC_RENDER (1<<0); #define I915_EXEC_BSD (2<<0); #define I915_EXEC_BLT (3<<0); #define I915_EXEC_VEBOX (4<<0); #define I915_EXEC_CONSTANTS_MASK (3<<6); #define I915_EXEC_CONSTANTS_REL_GENERAL (0<<6) ; #define I915_EXEC_CONSTANTS_ABSOLUTE (1<<6); #define I915_EXEC_CONSTANTS_REL_SURFACE (2<<6) ; #define I915_EXEC_GEN7_SOL_RESET (1<<8); #define I915_EXEC_SECURE (1<<9); #define I915_EXEC_IS_PINNED (1<<10); #define I915_EXEC_NO_RELOC (1<<11); #define I915_EXEC_HANDLE_LUT (1<<12); #define I915_EXEC_BSD_SHIFT (13); #define I915_EXEC_BSD_MASK (3 << I915_EXEC_BSD_SHIFT); #define I915_EXEC_BSD_DEFAULT (0 << I915_EXEC_BSD_SHIFT); #define I915_EXEC_BSD_RING1 (1 << I915_EXEC_BSD_SHIFT); #define I915_EXEC_BSD_RING2 (2 << I915_EXEC_BSD_SHIFT); #define I915_EXEC_RESOURCE_STREAMER (1<<15); #define I915_EXEC_FENCE_IN (1<<16); #define I915_EXEC_FENCE_OUT (1<<17); #define I915_EXEC_BATCH_FIRST (1<<18); #define I915_EXEC_FENCE_ARRAY (1<<19); #define I915_EXEC_FENCE_SUBMIT (1 << 20); #define I915_EXEC_USE_EXTENSIONS (1 << 21); #define __I915_EXEC_UNKNOWN_FLAGS (-(I915_EXEC_USE_EXTENSIONS << 1)); __u64 rsvd1; __u64 rsvd2; };”…”�”}”hjäsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MlhjÃubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjõh]”hŒMembers”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjóubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M–hjÃubj§)�”}”(hhh]”(j¬)�”}”(hŒ>``buffers_ptr`` Pointer to a list of gem_exec_object2 structs ”h]”(j²)�”}”(hŒ``buffers_ptr``”h]”jC)�”}”(hjh]”hŒ buffers_ptr”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MkhjubjÃ)�”}”(hhh]”hì)�”}”(hŒ-Pointer to a list of gem_exec_object2 structs”h]”hŒ-Pointer to a list of gem_exec_object2 structs”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j)h´Mkhj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j)h´Mkhj ubj¬)�”}”(hŒ=``buffer_count`` Number of elements in **buffers_ptr** array ”h]”(j²)�”}”(hŒ``buffer_count``”h]”jC)�”}”(hjMh]”hŒ buffer_count”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjKubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MnhjGubjÃ)�”}”(hhh]”hì)�”}”(hŒ+Number of elements in **buffers_ptr** array”h]”(hŒNumber of elements in ”…”�”}”(hjfh²hh³Nh´NubjŒ)�”}”(hŒ**buffers_ptr**”h]”hŒ buffers_ptr”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjfubhŒ array”…”�”}”(hjfh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jbh´Mnhjcubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjGubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jbh´Mnhj ubj¬)�”}”(hŒJ``batch_start_offset`` Offset in the batchbuffer to start execution from. ”h]”(j²)�”}”(hŒ``batch_start_offset``”h]”jC)�”}”(hj˜h]”hŒbatch_start_offset”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mshj’ubjÃ)�”}”(hhh]”hì)�”}”(hŒ2Offset in the batchbuffer to start execution from.”h]”hŒ2Offset in the batchbuffer to start execution from.”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mrhj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j­h´Mshj ubj¬)�”}”(hŒ™``batch_len`` Length in bytes of the batch buffer, starting from the **batch_start_offset**. If 0, length is assumed to be the batch buffer object size. ”h]”(j²)�”}”(hŒ ``batch_len``”h]”jC)�”}”(hjÒh]”hŒ batch_len”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MzhjÌubjÃ)�”}”(hhh]”hì)�”}”(hŒŠLength in bytes of the batch buffer, starting from the **batch_start_offset**. If 0, length is assumed to be the batch buffer object size.”h]”(hŒ7Length in bytes of the batch buffer, starting from the ”…”�”}”(hjëh²hh³Nh´NubjŒ)�”}”(hŒ**batch_start_offset**”h]”hŒbatch_start_offset”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjëubhŒ=. If 0, length is assumed to be the batch buffer object size.”…”�”}”(hjëh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mxhjèubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÌubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jçh´Mzhj ubj¬)�”}”(hŒ``DR1`` deprecated ”h]”(j²)�”}”(hŒ``DR1``”h]”jC)�”}”(hjh]”hŒDR1”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M~hjubjÃ)�”}”(hhh]”hì)�”}”(hŒ deprecated”h]”hŒ deprecated”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j3h´M~hj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j3h´M~hj ubj¬)�”}”(hŒ``DR4`` deprecated ”h]”(j²)�”}”(hŒ``DR4``”h]”jC)�”}”(hjWh]”hŒDR4”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjUubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M�hjQubjÃ)�”}”(hhh]”hì)�”}”(hŒ deprecated”h]”hŒ deprecated”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jlh´M�hjmubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjQubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jlh´M�hj ubj¬)�”}”(hŒ(``num_cliprects`` See **cliprects_ptr** ”h]”(j²)�”}”(hŒ``num_cliprects``”h]”jC)�”}”(hj�h]”hŒ num_cliprects”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M„hjŠubjÃ)�”}”(hhh]”hì)�”}”(hŒSee **cliprects_ptr**”h]”(hŒSee ”…”�”}”(hj©h²hh³Nh´NubjŒ)�”}”(hŒ**cliprects_ptr**”h]”hŒ cliprects_ptr”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hë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¬)�”}”(hX¼``cliprects_ptr`` Kernel clipping was a DRI1 misfeature. It is invalid to use this field if I915_EXEC_FENCE_ARRAY or I915_EXEC_USE_EXTENSIONS flags are not set. If I915_EXEC_FENCE_ARRAY is set, then this is a pointer to an array of :c:type:`drm_i915_gem_exec_fence` and **num_cliprects** is the length of the array. If I915_EXEC_USE_EXTENSIONS is set, then this is a pointer to a single :c:type:`i915_user_extension` and num_cliprects is 0. ”h]”(j²)�”}”(hŒ``cliprects_ptr``”h]”jC)�”}”(hj×h]”hŒ cliprects_ptr”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M’hjÑubjÃ)�”}”(hhh]”(hì)�”}”(hŒ&Kernel clipping was a DRI1 misfeature.”h]”hŒ&Kernel clipping was a DRI1 misfeature.”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mˆhjíubhì)�”}”(hŒgIt is invalid to use this field if I915_EXEC_FENCE_ARRAY or I915_EXEC_USE_EXTENSIONS flags are not set.”h]”hŒgIt is invalid to use this field if I915_EXEC_FENCE_ARRAY or I915_EXEC_USE_EXTENSIONS flags are not set.”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MŠhjíubhì)�”}”(hŒšIf I915_EXEC_FENCE_ARRAY is set, then this is a pointer to an array of :c:type:`drm_i915_gem_exec_fence` and **num_cliprects** is the length of the array.”h]”(hŒGIf I915_EXEC_FENCE_ARRAY is set, then this is a pointer to an array of ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ!:c:type:`drm_i915_gem_exec_fence`”h]”jC)�”}”(hjh]”hŒdrm_i915_gem_exec_fence”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒdrm_i915_gem_exec_fence”uh1hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M�hjubhŒ and ”…”�”}”(hjh²hh³Nh´NubjŒ)�”}”(hŒ**num_cliprects**”h]”hŒ num_cliprects”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjubhŒ is the length of the array.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j5h´M�hjíubhì)�”}”(hŒ|If I915_EXEC_USE_EXTENSIONS is set, then this is a pointer to a single :c:type:`i915_user_extension` and num_cliprects is 0.”h]”(hŒGIf I915_EXEC_USE_EXTENSIONS is set, then this is a pointer to a single ”…”�”}”(hjRh²hh³Nh´Nubh)�”}”(hŒ:c:type:`i915_user_extension`”h]”jC)�”}”(hj\h]”hŒi915_user_extension”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjZubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒi915_user_extension”uh1hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M‘hjRubhŒ and num_cliprects is 0.”…”�”}”(hjRh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jyh´M‘hjíubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÑubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jìh´M’hj ubj¬)�”}”(hŒ``flags`` Execbuf flags ”h]”(j²)�”}”(hŒ ``flags``”h]”jC)�”}”(hj–h]”hŒflags”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M–hj�ubjÃ)�”}”(hhh]”hì)�”}”(hŒ Execbuf flags”h]”hŒ Execbuf flags”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ``rsvd1`` Context id ”h]”(j²)�”}”(hŒ ``rsvd1``”h]”jC)�”}”(hjÏh]”hŒrsvd1”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MhjÉubjÃ)�”}”(hhh]”hì)�”}”(hŒ Context id”h]”hŒ Context id”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jäh´Mhjåubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÉubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jäh´Mhj ubj¬)�”}”(hX'``rsvd2`` in and out sync_file file descriptors. When I915_EXEC_FENCE_IN or I915_EXEC_FENCE_SUBMIT flag is set, the lower 32 bits of this field will have the in sync_file fd (input). When I915_EXEC_FENCE_OUT flag is set, the upper 32 bits of this field will have the out sync_file fd (output).”h]”(j²)�”}”(hŒ ``rsvd2``”h]”jC)�”}”(hjh]”hŒrsvd2”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MhjubjÃ)�”}”(hhh]”(hì)�”}”(hŒ&in and out sync_file file descriptors.”h]”hŒ&in and out sync_file file descriptors.”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mhjubhì)�”}”(hŒ…When I915_EXEC_FENCE_IN or I915_EXEC_FENCE_SUBMIT flag is set, the lower 32 bits of this field will have the in sync_file fd (input).”h]”hŒ…When I915_EXEC_FENCE_IN or I915_EXEC_FENCE_SUBMIT flag is set, the lower 32 bits of this field will have the in sync_file fd (input).”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mhjubhì)�”}”(hŒnWhen I915_EXEC_FENCE_OUT flag is set, the upper 32 bits of this field will have the out sync_file fd (output).”h]”hŒnWhen I915_EXEC_FENCE_OUT flag is set, the upper 32 bits of this field will have the out sync_file fd (output).”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jh´Mhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jh´Mhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjÃubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhjih²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_i915_gem_caching (C struct)”Œc.drm_i915_gem_caching”hNt”auh1jJhjih²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_i915_gem_caching”h]”jg)�”}”(hŒstruct drm_i915_gem_caching”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj{h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”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Œdrm_i915_gem_caching”h]”j–)�”}”(hjyh]”hŒdrm_i915_gem_caching”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj›ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj{h²hh³jŒh´M!ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjwh²hh³jŒh´M!ubah}”(h]”jrah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jŒh´M!hjth²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ/Set or get the caching for given object handle.”h]”hŒ/Set or get the caching for given object handle.”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mlhj¾h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjth²hh³jŒh´M!ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjÙjçjÙjè‰jé‰jê‰uh1j[h²hhjih³Nh´Nubjì)�”}”(hXÅ**Definition**:: struct drm_i915_gem_caching { __u32 handle; #define I915_CACHING_NONE 0; #define I915_CACHING_CACHED 1; #define I915_CACHING_DISPLAY 2; __u32 caching; }; **Members** ``handle`` Handle of the buffer to set/get the caching level. ``caching`` The GTT caching level to apply or possible return value. The supported **caching** values: I915_CACHING_NONE: GPU access is not coherent with CPU caches. Default for machines without an LLC. This means manual flushing might be needed, if we want GPU access to be coherent. I915_CACHING_CACHED: GPU access is coherent with CPU caches and furthermore the data is cached in last-level caches shared between CPU cores and the GPU GT. I915_CACHING_DISPLAY: Special GPU caching mode which is coherent with the scanout engines. Transparently falls back to I915_CACHING_NONE on platforms where no special cache mode (like write-through or gfdt flushing) is available. The kernel automatically sets this mode when using a buffer as a scanout target. Userspace can manually set this mode to avoid a costly stall and clflush in the hotpath of drawing the first frame.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjáubhŒ:”…”�”}”(hjáh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MphjÝubj)�”}”(hŒÆstruct drm_i915_gem_caching { __u32 handle; #define I915_CACHING_NONE 0; #define I915_CACHING_CACHED 1; #define I915_CACHING_DISPLAY 2; __u32 caching; };”h]”hŒÆstruct drm_i915_gem_caching { __u32 handle; #define I915_CACHING_NONE 0; #define I915_CACHING_CACHED 1; #define I915_CACHING_DISPLAY 2; __u32 caching; };”…”�”}”hjþsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MrhjÝubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjh]”hŒMembers”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MzhjÝubj§)�”}”(hhh]”(j¬)�”}”(hŒ>``handle`` Handle of the buffer to set/get the caching level. ”h]”(j²)�”}”(hŒ ``handle``”h]”jC)�”}”(hj.h]”hŒhandle”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M•hj(ubjÃ)�”}”(hhh]”hì)�”}”(hŒ2Handle of the buffer to set/get the caching level.”h]”hŒ2Handle of the buffer to set/get the caching level.”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jCh´M•hjDubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jCh´M•hj%ubj¬)�”}”(hXm``caching`` The GTT caching level to apply or possible return value. The supported **caching** values: I915_CACHING_NONE: GPU access is not coherent with CPU caches. Default for machines without an LLC. This means manual flushing might be needed, if we want GPU access to be coherent. I915_CACHING_CACHED: GPU access is coherent with CPU caches and furthermore the data is cached in last-level caches shared between CPU cores and the GPU GT. I915_CACHING_DISPLAY: Special GPU caching mode which is coherent with the scanout engines. Transparently falls back to I915_CACHING_NONE on platforms where no special cache mode (like write-through or gfdt flushing) is available. The kernel automatically sets this mode when using a buffer as a scanout target. Userspace can manually set this mode to avoid a costly stall and clflush in the hotpath of drawing the first frame.”h]”(j²)�”}”(hŒ ``caching``”h]”jC)�”}”(hjgh]”hŒcaching”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjeubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M°hjaubjÃ)�”}”(hhh]”(hì)�”}”(hŒ8The GTT caching level to apply or possible return value.”h]”hŒ8The GTT caching level to apply or possible return value.”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mšhj}ubhì)�”}”(hŒ!The supported **caching** values:”h]”(hŒThe supported ”…”�”}”(hj�h²hh³Nh´NubjŒ)�”}”(hŒ **caching**”h]”hŒcaching”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj�ubhŒ values:”…”�”}”(hj�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mœhj}ubhì)�”}”(hŒI915_CACHING_NONE:”h]”hŒI915_CACHING_NONE:”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mžhj}ubhì)�”}”(hŒ£GPU access is not coherent with CPU caches. Default for machines without an LLC. This means manual flushing might be needed, if we want GPU access to be coherent.”h]”hŒ£GPU access is not coherent with CPU caches. Default for machines without an LLC. This means manual flushing might be needed, if we want GPU access to be coherent.”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M hj}ubhì)�”}”(hŒI915_CACHING_CACHED:”h]”hŒI915_CACHING_CACHED:”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M¤hj}ubhì)�”}”(hŒ‡GPU access is coherent with CPU caches and furthermore the data is cached in last-level caches shared between CPU cores and the GPU GT.”h]”hŒ‡GPU access is coherent with CPU caches and furthermore the data is cached in last-level caches shared between CPU cores and the GPU GT.”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M¦hj}ubhì)�”}”(hŒI915_CACHING_DISPLAY:”h]”hŒI915_CACHING_DISPLAY:”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M©hj}ubhì)�”}”(hX•Special GPU caching mode which is coherent with the scanout engines. Transparently falls back to I915_CACHING_NONE on platforms where no special cache mode (like write-through or gfdt flushing) is available. The kernel automatically sets this mode when using a buffer as a scanout target. Userspace can manually set this mode to avoid a costly stall and clflush in the hotpath of drawing the first frame.”h]”hX•Special GPU caching mode which is coherent with the scanout engines. Transparently falls back to I915_CACHING_NONE on platforms where no special cache mode (like write-through or gfdt flushing) is available. The kernel automatically sets this mode when using a buffer as a scanout target. Userspace can manually set this mode to avoid a costly stall and clflush in the hotpath of drawing the first frame.”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M«hj}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjaubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j|h´M°hj%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjÝubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhjih²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hj%h]”hŒ Description”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M´hjih²hubhì)�”}”(hX?Allow userspace to control the GTT caching bits for a given object when the object is later mapped through the ppGTT(or GGTT on older platforms lacking ppGTT support, or if the object is used for scanout). Note that this might require unbinding the object from the GTT first, if its current caching value doesn't match.”h]”hXAAllow userspace to control the GTT caching bits for a given object when the object is later mapped through the ppGTT(or GGTT on older platforms lacking ppGTT support, or if the object is used for scanout). Note that this might require unbinding the object from the GTT first, if its current caching value doesn’t match.”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mmhjih²hubhì)�”}”(hXÕNote that this all changes on discrete platforms, starting from DG1, the set/get caching is no longer supported, and is now rejected. Instead the CPU caching attributes(WB vs WC) will become an immutable creation time property for the object, along with the GTT caching level. For now we don't expose any new uAPI for this, instead on DG1 this is all implicit, although this largely shouldn't matter since DG1 is coherent by default(without any way of controlling it).”h]”hXÙNote that this all changes on discrete platforms, starting from DG1, the set/get caching is no longer supported, and is now rejected. Instead the CPU caching attributes(WB vs WC) will become an immutable creation time property for the object, along with the GTT caching level. For now we don’t expose any new uAPI for this, instead on DG1 this is all implicit, although this largely shouldn’t matter since DG1 is coherent by default(without any way of controlling it).”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mshjih²hubhì)�”}”(hŒ*Implicit caching rules, starting from DG1:”h]”hŒ*Implicit caching rules, starting from DG1:”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M{hjih²hubjK)�”}”(hXH- If any of the object placements (see :c:type:`drm_i915_gem_create_ext_memory_regions`) contain I915_MEMORY_CLASS_DEVICE then the object will be allocated and mapped as write-combined only. - Everything else is always allocated and mapped as write-back, with the guarantee that everything is also coherent with the GPU. ”h]”hâ)�”}”(hhh]”(hç)�”}”(hŒ½If any of the object placements (see :c:type:`drm_i915_gem_create_ext_memory_regions`) contain I915_MEMORY_CLASS_DEVICE then the object will be allocated and mapped as write-combined only. ”h]”hì)�”}”(hŒ¼If any of the object placements (see :c:type:`drm_i915_gem_create_ext_memory_regions`) contain I915_MEMORY_CLASS_DEVICE then the object will be allocated and mapped as write-combined only.”h]”(hŒ%If any of the object placements (see ”…”�”}”(hjsh²hh³Nh´Nubh)�”}”(hŒ0:c:type:`drm_i915_gem_create_ext_memory_regions`”h]”jC)�”}”(hj}h]”hŒ&drm_i915_gem_create_ext_memory_regions”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj{ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒ&drm_i915_gem_create_ext_memory_regions”uh1hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M}hjsubhŒg) contain I915_MEMORY_CLASS_DEVICE then the object will be allocated and mapped as write-combined only.”…”�”}”(hjsh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jšh´M}hjoubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjlubhç)�”}”(hŒ€Everything else is always allocated and mapped as write-back, with the guarantee that everything is also coherent with the GPU. ”h]”hì)�”}”(hŒEverything else is always allocated and mapped as write-back, with the guarantee that everything is also coherent with the GPU.”h]”hŒEverything else is always allocated and mapped as write-back, with the guarantee that everything is also coherent with the GPU.”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M�hj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjlubeh}”(h]”h ]”h"]”h$]”h&]”jÀ jÁ uh1háh³jšh´M}hjhubah}”(h]”h ]”h"]”h$]”h&]”uh1jJh³jšh´M}hjih²hubhì)�”}”(hŒÕNote that this is likely to change in the future again, where we might need more flexibility on future devices, so making this all explicit as part of a new :c:type:`drm_i915_gem_create_ext` extension is probable.”h]”(hŒ�Note that this is likely to change in the future again, where we might need more flexibility on future devices, so making this all explicit as part of a new ”…”�”}”(hjÐh²hh³Nh´Nubh)�”}”(hŒ!:c:type:`drm_i915_gem_create_ext`”h]”jC)�”}”(hjÚh]”hŒdrm_i915_gem_create_ext”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjØubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒdrm_i915_gem_create_ext”uh1hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M„hjÐubhŒ extension is probable.”…”�”}”(hjÐh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j÷h´M„hjih²hubhì)�”}”(hXÑSide note: Part of the reason for this is that changing the at-allocation-time CPU caching attributes for the pages might be required(and is expensive) if we need to then CPU map the pages later with different caching attributes. This inconsistent caching behaviour, while supported on x86, is not universally supported on other architectures. So for simplicity we opt for setting everything at creation time, whilst also making it immutable, on discrete platforms.”h]”hXÑSide note: Part of the reason for this is that changing the at-allocation-time CPU caching attributes for the pages might be required(and is expensive) if we need to then CPU map the pages later with different caching attributes. This inconsistent caching behaviour, while supported on x86, is not universally supported on other architectures. So for simplicity we opt for setting everything at creation time, whilst also making it immutable, on discrete platforms.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mˆhjih²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ*drm_i915_gem_context_create_ext (C struct)”Œ!c.drm_i915_gem_context_create_ext”hNt”auh1jJhjih²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_i915_gem_context_create_ext”h]”jg)�”}”(hŒ&struct drm_i915_gem_context_create_ext”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj&h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M“ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hj&h²hh³j7h´M“ubj�)�”}”(hŒdrm_i915_gem_context_create_ext”h]”j–)�”}”(hj$h]”hŒdrm_i915_gem_context_create_ext”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjFubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj&h²hh³j7h´M“ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hj"h²hh³j7h´M“ubah}”(h]”jah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³j7h´M“hjh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ Structure for creating contexts.”h]”hŒ Structure for creating contexts.”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M›hjih²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjh²hh³j7h´M“ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj„jçj„jè‰jé‰jê‰uh1j[h²hhjih³Nh´Nubjì)�”}”(hX“**Definition**:: struct drm_i915_gem_context_create_ext { __u32 ctx_id; __u32 flags; #define I915_CONTEXT_CREATE_FLAGS_USE_EXTENSIONS (1u << 0); #define I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE (1u << 1); #define I915_CONTEXT_CREATE_FLAGS_UNKNOWN (-(I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE << 1)); __u64 extensions; #define I915_CONTEXT_CREATE_EXT_SETPARAM 0; #define I915_CONTEXT_CREATE_EXT_CLONE 1; }; **Members** ``ctx_id`` Id of the created context (output) ``flags`` Supported flags are: I915_CONTEXT_CREATE_FLAGS_USE_EXTENSIONS: Extensions may be appended to this structure and driver must check for those. See **extensions**. I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE Created context will have single timeline. ``extensions`` Zero-terminated chain of extensions. I915_CONTEXT_CREATE_EXT_SETPARAM: Context parameter to set or query during context creation. See struct drm_i915_gem_context_create_ext_setparam. I915_CONTEXT_CREATE_EXT_CLONE: This extension has been removed. On the off chance someone somewhere has attempted to use it, never re-use this extension number.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjŒubhŒ:”…”�”}”(hjŒh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MŸhjˆubj)�”}”(hX¦struct drm_i915_gem_context_create_ext { __u32 ctx_id; __u32 flags; #define I915_CONTEXT_CREATE_FLAGS_USE_EXTENSIONS (1u << 0); #define I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE (1u << 1); #define I915_CONTEXT_CREATE_FLAGS_UNKNOWN (-(I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE << 1)); __u64 extensions; #define I915_CONTEXT_CREATE_EXT_SETPARAM 0; #define I915_CONTEXT_CREATE_EXT_CLONE 1; };”•¦h]”hX¦struct drm_i915_gem_context_create_ext { __u32 ctx_id; __u32 flags; #define I915_CONTEXT_CREATE_FLAGS_USE_EXTENSIONS (1u << 0); #define I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE (1u << 1); #define I915_CONTEXT_CREATE_FLAGS_UNKNOWN (-(I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE << 1)); __u64 extensions; #define I915_CONTEXT_CREATE_EXT_SETPARAM 0; #define I915_CONTEXT_CREATE_EXT_CLONE 1; };”…”�”}”hj©sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M¡hjˆubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjºh]”hŒMembers”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M¬hjˆubj§)�”}”(hhh]”(j¬)�”}”(hŒ.``ctx_id`` Id of the created context (output) ”h]”(j²)�”}”(hŒ ``ctx_id``”h]”jC)�”}”(hjÙh]”hŒctx_id”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MŸhjÓubjÃ)�”}”(hhh]”hì)�”}”(hŒ"Id of the created context (output)”h]”hŒ"Id of the created context (output)”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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¬)�”}”(hX``flags`` Supported flags are: I915_CONTEXT_CREATE_FLAGS_USE_EXTENSIONS: Extensions may be appended to this structure and driver must check for those. See **extensions**. I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE Created context will have single timeline. ”h]”(j²)�”}”(hŒ ``flags``”h]”jC)�”}”(hjh]”hŒflags”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M¬hj ubjÃ)�”}”(hhh]”(hì)�”}”(hŒSupported flags are:”h]”hŒSupported flags are:”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M£hj(ubhì)�”}”(hŒ)I915_CONTEXT_CREATE_FLAGS_USE_EXTENSIONS:”h]”hŒ)I915_CONTEXT_CREATE_FLAGS_USE_EXTENSIONS:”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M¥hj(ubhì)�”}”(hŒaExtensions may be appended to this structure and driver must check for those. See **extensions**.”h]”(hŒRExtensions may be appended to this structure and driver must check for those. See ”…”�”}”(hjIh²hh³Nh´NubjŒ)�”}”(hŒ**extensions**”h]”hŒ extensions”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjIubhŒ.”…”�”}”(hjIh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M§hj(ubhì)�”}”(hŒ)I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE”h]”hŒ)I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mªhj(ubhì)�”}”(hŒ*Created context will have single timeline.”h]”hŒ*Created context will have single timeline.”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j'h´M¬hj(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j'h´M¬hjÐubj¬)�”}”(hXh``extensions`` Zero-terminated chain of extensions. I915_CONTEXT_CREATE_EXT_SETPARAM: Context parameter to set or query during context creation. See struct drm_i915_gem_context_create_ext_setparam. I915_CONTEXT_CREATE_EXT_CLONE: This extension has been removed. On the off chance someone somewhere has attempted to use it, never re-use this extension number.”h]”(j²)�”}”(hŒ``extensions``”h]”jC)�”}”(hj™h]”hŒ extensions”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M¼hj“ubjÃ)�”}”(hhh]”(hì)�”}”(hŒ$Zero-terminated chain of extensions.”h]”hŒ$Zero-terminated chain of extensions.”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mµhj¯ubhì)�”}”(hŒ‘I915_CONTEXT_CREATE_EXT_SETPARAM: Context parameter to set or query during context creation. See struct drm_i915_gem_context_create_ext_setparam.”h]”hŒ‘I915_CONTEXT_CREATE_EXT_SETPARAM: Context parameter to set or query during context creation. See struct drm_i915_gem_context_create_ext_setparam.”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M·hj¯ubhì)�”}”(hŒ I915_CONTEXT_CREATE_EXT_CLONE: This extension has been removed. On the off chance someone somewhere has attempted to use it, never re-use this extension number.”h]”hŒ I915_CONTEXT_CREATE_EXT_CLONE: This extension has been removed. On the off chance someone somewhere has attempted to use it, never re-use this extension number.”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M»hj¯ubeh}”(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¦hjˆubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhjih²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ%drm_i915_gem_context_param (C struct)”Œc.drm_i915_gem_context_param”hNt”auh1jJhjih²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_i915_gem_context_param”h]”jg)�”}”(hŒ!struct drm_i915_gem_context_param”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MÃubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hj h²hh³jh´MÃubj�)�”}”(hŒdrm_i915_gem_context_param”h]”j–)�”}”(hj h]”hŒdrm_i915_gem_context_param”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj-ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj h²hh³jh´MÃubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hj h²hh³jh´MÃubah}”(h]”jah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jh´MÃhjh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ"Context parameter to set or query.”h]”hŒ"Context parameter to set or query.”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MÄhjPh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjh²hh³jh´MÃubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjkjçjkjè‰jé‰jê‰uh1j[h²hhjih³Nh´Nubjì)�”}”(hX¾**Definition**:: struct drm_i915_gem_context_param { __u32 ctx_id; __u32 size; __u64 param; #define I915_CONTEXT_PARAM_BAN_PERIOD 0x1; #define I915_CONTEXT_PARAM_NO_ZEROMAP 0x2; #define I915_CONTEXT_PARAM_GTT_SIZE 0x3; #define I915_CONTEXT_PARAM_NO_ERROR_CAPTURE 0x4; #define I915_CONTEXT_PARAM_BANNABLE 0x5; #define I915_CONTEXT_PARAM_PRIORITY 0x6; #define I915_CONTEXT_MAX_USER_PRIORITY 1023 ; #define I915_CONTEXT_DEFAULT_PRIORITY 0; #define I915_CONTEXT_MIN_USER_PRIORITY -1023 ; #define I915_CONTEXT_PARAM_SSEU 0x7; #define I915_CONTEXT_PARAM_RECOVERABLE 0x8; #define I915_CONTEXT_PARAM_VM 0x9; #define I915_CONTEXT_PARAM_ENGINES 0xa; #define I915_CONTEXT_PARAM_PERSISTENCE 0xb; #define I915_CONTEXT_PARAM_RINGSIZE 0xc; #define I915_CONTEXT_PARAM_PROTECTED_CONTENT 0xd; #define I915_CONTEXT_PARAM_LOW_LATENCY 0xe; #define I915_CONTEXT_PARAM_CONTEXT_IMAGE 0xf; __u64 value; }; **Members** ``ctx_id`` Context id ``size`` Size of the parameter **value** ``param`` Parameter to set or query ``value`` Context parameter value to be set or queried”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjsubhŒ:”…”�”}”(hjsh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MÈhjoubj)�”}”(hXÉstruct drm_i915_gem_context_param { __u32 ctx_id; __u32 size; __u64 param; #define I915_CONTEXT_PARAM_BAN_PERIOD 0x1; #define I915_CONTEXT_PARAM_NO_ZEROMAP 0x2; #define I915_CONTEXT_PARAM_GTT_SIZE 0x3; #define I915_CONTEXT_PARAM_NO_ERROR_CAPTURE 0x4; #define I915_CONTEXT_PARAM_BANNABLE 0x5; #define I915_CONTEXT_PARAM_PRIORITY 0x6; #define I915_CONTEXT_MAX_USER_PRIORITY 1023 ; #define I915_CONTEXT_DEFAULT_PRIORITY 0; #define I915_CONTEXT_MIN_USER_PRIORITY -1023 ; #define I915_CONTEXT_PARAM_SSEU 0x7; #define I915_CONTEXT_PARAM_RECOVERABLE 0x8; #define I915_CONTEXT_PARAM_VM 0x9; #define I915_CONTEXT_PARAM_ENGINES 0xa; #define I915_CONTEXT_PARAM_PERSISTENCE 0xb; #define I915_CONTEXT_PARAM_RINGSIZE 0xc; #define I915_CONTEXT_PARAM_PROTECTED_CONTENT 0xd; #define I915_CONTEXT_PARAM_LOW_LATENCY 0xe; #define I915_CONTEXT_PARAM_CONTEXT_IMAGE 0xf; __u64 value; };”h]”hXÉstruct drm_i915_gem_context_param { __u32 ctx_id; __u32 size; __u64 param; #define I915_CONTEXT_PARAM_BAN_PERIOD 0x1; #define I915_CONTEXT_PARAM_NO_ZEROMAP 0x2; #define I915_CONTEXT_PARAM_GTT_SIZE 0x3; #define I915_CONTEXT_PARAM_NO_ERROR_CAPTURE 0x4; #define I915_CONTEXT_PARAM_BANNABLE 0x5; #define I915_CONTEXT_PARAM_PRIORITY 0x6; #define I915_CONTEXT_MAX_USER_PRIORITY 1023 ; #define I915_CONTEXT_DEFAULT_PRIORITY 0; #define I915_CONTEXT_MIN_USER_PRIORITY -1023 ; #define I915_CONTEXT_PARAM_SSEU 0x7; #define I915_CONTEXT_PARAM_RECOVERABLE 0x8; #define I915_CONTEXT_PARAM_VM 0x9; #define I915_CONTEXT_PARAM_ENGINES 0xa; #define I915_CONTEXT_PARAM_PERSISTENCE 0xb; #define I915_CONTEXT_PARAM_RINGSIZE 0xc; #define I915_CONTEXT_PARAM_PROTECTED_CONTENT 0xd; #define I915_CONTEXT_PARAM_LOW_LATENCY 0xe; #define I915_CONTEXT_PARAM_CONTEXT_IMAGE 0xf; __u64 value; };”…”�”}”hj�sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MÊhjoubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj¡h]”hŒMembers”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mãhjoubj§)�”}”(hhh]”(j¬)�”}”(hŒ``ctx_id`` Context id ”h]”(j²)�”}”(hŒ ``ctx_id``”h]”jC)�”}”(hjÀh]”hŒctx_id”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MÈhjºubjÃ)�”}”(hhh]”hì)�”}”(hŒ Context id”h]”hŒ Context id”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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`` Size of the parameter **value** ”h]”(j²)�”}”(hŒ``size``”h]”jC)�”}”(hjùh]”hŒsize”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MËhjóubjÃ)�”}”(hhh]”hì)�”}”(hŒSize of the parameter **value**”h]”(hŒSize of the parameter ”…”�”}”(hj h²hh³Nh´NubjŒ)�”}”(hŒ **value**”h]”hŒvalue”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ$``param`` Parameter to set or query ”h]”(j²)�”}”(hŒ ``param``”h]”jC)�”}”(hj@ h]”hŒparam”…”�”}”(hjB h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj> ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MÎhj: ubjÃ)�”}”(hhh]”hì)�”}”(hŒParameter to set or query”h]”hŒParameter to set or query”…”�”}”(hjY h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jU h´MÎhjV ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj: ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jU h´MÎhj·ubj¬)�”}”(hŒ6``value`` Context parameter value to be set or queried”h]”(j²)�”}”(hŒ ``value``”h]”jC)�”}”(hjy h]”hŒvalue”…”�”}”(hj{ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjw ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M�hjs ubjÃ)�”}”(hhh]”hì)�”}”(hŒ,Context parameter value to be set or queried”h]”hŒ,Context parameter value to be set or queried”…”�”}”(hj’ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M‚hj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjs ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jŽ h´M�hj·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjoubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhjih²hh³Nh´Nubj{)�”}”(hŒ.. _Virtual Engine uAPI:”h]”h}”(h]”h ]”h"]”h$]”h&]”hÊŒvirtual-engine-uapi”uh1jzh´Mðhjih²hh³Nubhì)�”}”(hŒ**Virtual Engine uAPI**”h]”jŒ)�”}”(hjÇ h]”hŒVirtual Engine uAPI”…”�”}”(hjÉ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÅ ubah}”(h]”jÄ ah ]”h"]”Œvirtual engine uapi”ah$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mˆhjih²hj¢}”jÚ jº sj¤}”jÄ jº subhì)�”}”(hŒ»Virtual engine is a concept where userspace is able to configure a set of physical engines, submit a batch buffer, and let the driver execute it on any engine from the set as it sees fit.”h]”hŒ»Virtual engine is a concept where userspace is able to configure a set of physical engines, submit a batch buffer, and let the driver execute it on any engine from the set as it sees fit.”…”�”}”(hjà h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MÁhjih²hubhì)�”}”(hŒ—This is primarily useful on parts which have multiple instances of a same class engine, like for example GT3+ Skylake parts with their two VCS engines.”h]”hŒ—This is primarily useful on parts which have multiple instances of a same class engine, like for example GT3+ Skylake parts with their two VCS engines.”…”�”}”(hjï h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MÅhjih²hubhì)�”}”(hXÀFor instance userspace can enumerate all engines of a certain class using the previously described `Engine Discovery uAPI`_. After that userspace can create a GEM context with a placeholder slot for the virtual engine (using `I915_ENGINE_CLASS_INVALID` and `I915_ENGINE_CLASS_INVALID_NONE` for class and instance respectively) and finally using the `I915_CONTEXT_ENGINES_EXT_LOAD_BALANCE` extension place a virtual engine in the same reserved slot.”h]”(hŒcFor instance userspace can enumerate all engines of a certain class using the previously described ”…”�”}”(hjþ h²hh³Nh´Nubhñ)�”}”(hŒ`Engine Discovery uAPI`_”h]”hŒEngine Discovery uAPI”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒEngine Discovery uAPI”hÊŒengine-discovery-uapi”uh1hðhjþ Œresolved”KubhŒf. After that userspace can create a GEM context with a placeholder slot for the virtual engine (using ”…”�”}”(hjþ h²hh³Nh´Nubj )�”}”(hŒ`I915_ENGINE_CLASS_INVALID`”h]”hŒI915_ENGINE_CLASS_INVALID”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjþ ubhŒ and ”…”�”}”(hjþ h²hh³Nh´Nubj )�”}”(hŒ `I915_ENGINE_CLASS_INVALID_NONE`”h]”hŒI915_ENGINE_CLASS_INVALID_NONE”…”�”}”(hj.!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjþ ubhŒ< for class and instance respectively) and finally using the ”…”�”}”(hjþ h²hh³Nh´Nubj )�”}”(hŒ'`I915_CONTEXT_ENGINES_EXT_LOAD_BALANCE`”h]”hŒ%I915_CONTEXT_ENGINES_EXT_LOAD_BALANCE”…”�”}”(hj@!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjþ ubhŒ< extension place a virtual engine in the same reserved slot.”…”�”}”(hjþ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MÈhjih²hubhì)�”}”(hŒIExample of creating a virtual engine and submitting a batch buffer to it:”h]”hŒIExample of creating a virtual engine and submitting a batch buffer to it:”…”�”}”(hjY!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MÐhjih²hubj)�”}”(hX(I915_DEFINE_CONTEXT_ENGINES_LOAD_BALANCE(virtual, 2) = { .base.name = I915_CONTEXT_ENGINES_EXT_LOAD_BALANCE, .engine_index = 0, // Place this virtual engine into engine map slot 0 .num_siblings = 2, .engines = { { I915_ENGINE_CLASS_VIDEO, 0 }, { I915_ENGINE_CLASS_VIDEO, 1 }, }, }; I915_DEFINE_CONTEXT_PARAM_ENGINES(engines, 1) = { .engines = { { I915_ENGINE_CLASS_INVALID, I915_ENGINE_CLASS_INVALID_NONE } }, .extensions = to_user_pointer(&virtual), // Chains after load_balance extension }; struct drm_i915_gem_context_create_ext_setparam p_engines = { .base = { .name = I915_CONTEXT_CREATE_EXT_SETPARAM, }, .param = { .param = I915_CONTEXT_PARAM_ENGINES, .value = to_user_pointer(&engines), .size = sizeof(engines), }, }; struct drm_i915_gem_context_create_ext create = { .flags = I915_CONTEXT_CREATE_FLAGS_USE_EXTENSIONS, .extensions = to_user_pointer(&p_engines); }; ctx_id = gem_context_create_ext(drm_fd, &create); // Now we have created a GEM context with its engine map containing a // single virtual engine. Submissions to this slot can go either to // vcs0 or vcs1, depending on the load balancing algorithm used inside // the driver. The load balancing is dynamic from one batch buffer to // another and transparent to userspace. ... execbuf.rsvd1 = ctx_id; execbuf.flags = 0; // Submits to index 0 which is the virtual engine gem_execbuf(drm_fd, &execbuf);”h]”hX(I915_DEFINE_CONTEXT_ENGINES_LOAD_BALANCE(virtual, 2) = { .base.name = I915_CONTEXT_ENGINES_EXT_LOAD_BALANCE, .engine_index = 0, // Place this virtual engine into engine map slot 0 .num_siblings = 2, .engines = { { I915_ENGINE_CLASS_VIDEO, 0 }, { I915_ENGINE_CLASS_VIDEO, 1 }, }, }; I915_DEFINE_CONTEXT_PARAM_ENGINES(engines, 1) = { .engines = { { I915_ENGINE_CLASS_INVALID, I915_ENGINE_CLASS_INVALID_NONE } }, .extensions = to_user_pointer(&virtual), // Chains after load_balance extension }; struct drm_i915_gem_context_create_ext_setparam p_engines = { .base = { .name = I915_CONTEXT_CREATE_EXT_SETPARAM, }, .param = { .param = I915_CONTEXT_PARAM_ENGINES, .value = to_user_pointer(&engines), .size = sizeof(engines), }, }; struct drm_i915_gem_context_create_ext create = { .flags = I915_CONTEXT_CREATE_FLAGS_USE_EXTENSIONS, .extensions = to_user_pointer(&p_engines); }; ctx_id = gem_context_create_ext(drm_fd, &create); // Now we have created a GEM context with its engine map containing a // single virtual engine. Submissions to this slot can go either to // vcs0 or vcs1, depending on the load balancing algorithm used inside // the driver. The load balancing is dynamic from one batch buffer to // another and transparent to userspace. ... execbuf.rsvd1 = ctx_id; execbuf.flags = 0; // Submits to index 0 which is the virtual engine gem_execbuf(drm_fd, &execbuf);”…”�”}”hjh!sbah}”(h]”h ]”h"]”h$]”h&]”j­j®j¾‰j¿jÀjÁ}”uh1jh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MÒhjih²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ/i915_context_engines_parallel_submit (C struct)”Œ&c.i915_context_engines_parallel_submit”hNt”auh1jJhjih²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒ$i915_context_engines_parallel_submit”h]”jg)�”}”(hŒ+struct i915_context_engines_parallel_submit”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj‘!h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj�!h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”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Œ$i915_context_engines_parallel_submit”h]”j–)�”}”(hj‹!h]”hŒ$i915_context_engines_parallel_submit”…”�”}”(hj±!h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj­!ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj�!h²hh³jž!h´Mÿubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”hì)�”}”(hŒ)Configure engine for parallel submission.”h]”hŒ)Configure engine for parallel submission.”…”�”}”(hjÓ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´ML hjÐ!h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj†!h²hh³jž!h´Mÿubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjë!jçjë!jè‰jé‰jê‰uh1j[h²hhjih³Nh´Nubjì)�”}”(hX¯**Definition**:: struct i915_context_engines_parallel_submit { struct i915_user_extension base; __u16 engine_index; __u16 width; __u16 num_siblings; __u16 mbz16; __u64 flags; __u64 mbz64[3]; struct i915_engine_class_instance engines[]; }; **Members** ``base`` base user extension. ``engine_index`` slot for parallel engine ``width`` number of contexts per parallel engine or in other words the number of batches in each submission ``num_siblings`` number of siblings per context or in other words the number of possible placements for each submission ``mbz16`` reserved for future use; must be zero ``flags`` all undefined flags must be zero, currently not defined flags ``mbz64`` reserved for future use; must be zero ``engines`` 2-d array of engine instances to configure parallel engine length = width (i) * num_siblings (j) index = j + i * num_siblings”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj÷!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjó!ubhŒ:”…”�”}”(hjó!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MP hjï!ubj)�”}”(hŒýstruct i915_context_engines_parallel_submit { struct i915_user_extension base; __u16 engine_index; __u16 width; __u16 num_siblings; __u16 mbz16; __u64 flags; __u64 mbz64[3]; struct i915_engine_class_instance engines[]; };”h]”hŒýstruct i915_context_engines_parallel_submit { struct i915_user_extension base; __u16 engine_index; __u16 width; __u16 num_siblings; __u16 mbz16; __u64 flags; __u64 mbz64[3]; struct i915_engine_class_instance engines[]; };”…”�”}”hj"sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MR hjï!ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj!"h]”hŒMembers”…”�”}”(hj#"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M] hjï!ubj§)�”}”(hhh]”(j¬)�”}”(hŒ``base`` base user extension. ”h]”(j²)�”}”(hŒ``base``”h]”jC)�”}”(hj@"h]”hŒbase”…”�”}”(hjB"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj>"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M” hj:"ubjÃ)�”}”(hhh]”hì)�”}”(hŒbase user extension.”h]”hŒbase user extension.”…”�”}”(hjY"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jU"h´M” hjV"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj:"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jU"h´M” hj7"ubj¬)�”}”(hŒ*``engine_index`` slot for parallel engine ”h]”(j²)�”}”(hŒ``engine_index``”h]”jC)�”}”(hjy"h]”hŒ engine_index”…”�”}”(hj{"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjw"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M™ hjs"ubjÃ)�”}”(hhh]”hì)�”}”(hŒslot for parallel engine”h]”hŒslot for parallel engine”…”�”}”(hj’"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jŽ"h´M™ hj�"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjs"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jŽ"h´M™ hj7"ubj¬)�”}”(hŒl``width`` number of contexts per parallel engine or in other words the number of batches in each submission ”h]”(j²)�”}”(hŒ ``width``”h]”jC)�”}”(hj²"h]”hŒwidth”…”�”}”(hj´"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj°"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MŸ hj¬"ubjÃ)�”}”(hhh]”hì)�”}”(hŒanumber of contexts per parallel engine or in other words the number of batches in each submission”h]”hŒanumber of contexts per parallel engine or in other words the number of batches in each submission”…”�”}”(hjË"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mž hjÈ"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj¬"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÇ"h´MŸ hj7"ubj¬)�”}”(hŒx``num_siblings`` number of siblings per context or in other words the number of possible placements for each submission ”h]”(j²)�”}”(hŒ``num_siblings``”h]”jC)�”}”(hjì"h]”hŒ num_siblings”…”�”}”(hjî"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjê"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M¥ hjæ"ubjÃ)�”}”(hhh]”hì)�”}”(hŒfnumber of siblings per context or in other words the number of possible placements for each submission”h]”hŒfnumber of siblings per context or in other words the number of possible placements for each submission”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M¤ hj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjæ"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j#h´M¥ hj7"ubj¬)�”}”(hŒ0``mbz16`` reserved for future use; must be zero ”h]”(j²)�”}”(hŒ ``mbz16``”h]”jC)�”}”(hj&#h]”hŒmbz16”…”�”}”(hj(#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj$#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mª hj #ubjÃ)�”}”(hhh]”hì)�”}”(hŒ%reserved for future use; must be zero”h]”hŒ%reserved for future use; must be zero”…”�”}”(hj?#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j;#h´Mª hj<#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj #ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j;#h´Mª hj7"ubj¬)�”}”(hŒH``flags`` all undefined flags must be zero, currently not defined flags ”h]”(j²)�”}”(hŒ ``flags``”h]”jC)�”}”(hj_#h]”hŒflags”…”�”}”(hja#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj]#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M¯ hjY#ubjÃ)�”}”(hhh]”hì)�”}”(hŒ=all undefined flags must be zero, currently not defined flags”h]”hŒ=all undefined flags must be zero, currently not defined flags”…”�”}”(hjx#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jt#h´M¯ hju#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjY#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jt#h´M¯ hj7"ubj¬)�”}”(hŒ0``mbz64`` reserved for future use; must be zero ”h]”(j²)�”}”(hŒ ``mbz64``”h]”jC)�”}”(hj˜#h]”hŒmbz64”…”�”}”(hjš#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj–#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M´ hj’#ubjÃ)�”}”(hhh]”hì)�”}”(hŒ%reserved for future use; must be zero”h]”hŒ%reserved for future use; must be zero”…”�”}”(hj±#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j­#h´M´ hj®#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj’#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j­#h´M´ hj7"ubj¬)�”}”(hŒŠ``engines`` 2-d array of engine instances to configure parallel engine length = width (i) * num_siblings (j) index = j + i * num_siblings”h]”(j²)�”}”(hŒ ``engines``”h]”jC)�”}”(hjÑ#h]”hŒengines”…”�”}”(hjÓ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÏ#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M» hjË#ubjÃ)�”}”(hhh]”(hì)�”}”(hŒ:2-d array of engine instances to configure parallel engine”h]”hŒ:2-d array of engine instances to configure parallel engine”…”�”}”(hjê#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M¹ hjç#ubhì)�”}”(hŒBlength = width (i) * num_siblings (j) index = j + i * num_siblings”h]”hŒBlength = width (i) * num_siblings (j) index = j + i * num_siblings”…”�”}”(hjù#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jæ#h´M» hjç#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjË#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jæ#h´M» hj7"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjï!ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhjih²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hj"$h]”hŒ Description”…”�”}”(hj$$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj $ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M¿ hjih²hubhì)�”}”(hXOSetup a slot in the context engine map to allow multiple BBs to be submitted in a single execbuf IOCTL. Those BBs will then be scheduled to run on the GPU in parallel. Multiple hardware contexts are created internally in the i915 to run these BBs. Once a slot is configured for N BBs only N BBs can be submitted in each execbuf IOCTL and this is implicit behavior e.g. The user doesn't tell the execbuf IOCTL there are N BBs, the execbuf IOCTL knows how many BBs there are based on the slot's configuration. The N BBs are the last N buffer objects or first N if I915_EXEC_BATCH_FIRST is set.”h]”hXSSetup a slot in the context engine map to allow multiple BBs to be submitted in a single execbuf IOCTL. Those BBs will then be scheduled to run on the GPU in parallel. Multiple hardware contexts are created internally in the i915 to run these BBs. Once a slot is configured for N BBs only N BBs can be submitted in each execbuf IOCTL and this is implicit behavior e.g. The user doesn’t tell the execbuf IOCTL there are N BBs, the execbuf IOCTL knows how many BBs there are based on the slot’s configuration. The N BBs are the last N buffer objects or first N if I915_EXEC_BATCH_FIRST is set.”…”�”}”(hj8$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MM hjih²hubhì)�”}”(hX9The default placement behavior is to create implicit bonds between each context if each context maps to more than 1 physical engine (e.g. context is a virtual engine). Also we only allow contexts of same engine class and these contexts must be in logically contiguous order. Examples of the placement behavior are described below. Lastly, the default is to not allow BBs to be preempted mid-batch. Rather insert coordinated preemption points on all hardware contexts between each set of BBs. Flags could be added in the future to change both of these default behaviors.”h]”hX9The default placement behavior is to create implicit bonds between each context if each context maps to more than 1 physical engine (e.g. context is a virtual engine). Also we only allow contexts of same engine class and these contexts must be in logically contiguous order. Examples of the placement behavior are described below. Lastly, the default is to not allow BBs to be preempted mid-batch. Rather insert coordinated preemption points on all hardware contexts between each set of BBs. Flags could be added in the future to change both of these default behaviors.”…”�”}”(hjG$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MV hjih²hubhì)�”}”(hŒõReturns -EINVAL if hardware context placement configuration is invalid or if the placement configuration isn't supported on the platform / submission interface. Returns -ENODEV if extension isn't supported on the platform / submission interface.”h]”hŒùReturns -EINVAL if hardware context placement configuration is invalid or if the placement configuration isn’t supported on the platform / submission interface. Returns -ENODEV if extension isn’t supported on the platform / submission interface.”…”�”}”(hjV$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M_ hjih²hubj)�”}”(hX3Examples syntax: CS[X] = generic engine of same class, logical instance X INVALID = I915_ENGINE_CLASS_INVALID, I915_ENGINE_CLASS_INVALID_NONE Example 1 pseudo code: set_engines(INVALID) set_parallel(engine_index=0, width=2, num_siblings=1, engines=CS[0],CS[1]) Results in the following valid placement: CS[0], CS[1] Example 2 pseudo code: set_engines(INVALID) set_parallel(engine_index=0, width=2, num_siblings=2, engines=CS[0],CS[2],CS[1],CS[3]) Results in the following valid placements: CS[0], CS[1] CS[2], CS[3] This can be thought of as two virtual engines, each containing two engines thereby making a 2D array. However, there are bonds tying the entries together and placing restrictions on how they can be scheduled. Specifically, the scheduler can choose only vertical columns from the 2D array. That is, CS[0] is bonded to CS[1] and CS[2] to CS[3]. So if the scheduler wants to submit to CS[0], it must also choose CS[1] and vice versa. Same for CS[2] requires also using CS[3]. VE[0] = CS[0], CS[2] VE[1] = CS[1], CS[3] Example 3 pseudo code: set_engines(INVALID) set_parallel(engine_index=0, width=2, num_siblings=2, engines=CS[0],CS[1],CS[1],CS[3]) Results in the following valid and invalid placements: CS[0], CS[1] CS[1], CS[3] - Not logically contiguous, return -EINVAL”h]”hX3Examples syntax: CS[X] = generic engine of same class, logical instance X INVALID = I915_ENGINE_CLASS_INVALID, I915_ENGINE_CLASS_INVALID_NONE Example 1 pseudo code: set_engines(INVALID) set_parallel(engine_index=0, width=2, num_siblings=1, engines=CS[0],CS[1]) Results in the following valid placement: CS[0], CS[1] Example 2 pseudo code: set_engines(INVALID) set_parallel(engine_index=0, width=2, num_siblings=2, engines=CS[0],CS[2],CS[1],CS[3]) Results in the following valid placements: CS[0], CS[1] CS[2], CS[3] This can be thought of as two virtual engines, each containing two engines thereby making a 2D array. However, there are bonds tying the entries together and placing restrictions on how they can be scheduled. Specifically, the scheduler can choose only vertical columns from the 2D array. That is, CS[0] is bonded to CS[1] and CS[2] to CS[3]. So if the scheduler wants to submit to CS[0], it must also choose CS[1] and vice versa. Same for CS[2] requires also using CS[3]. VE[0] = CS[0], CS[2] VE[1] = CS[1], CS[3] Example 3 pseudo code: set_engines(INVALID) set_parallel(engine_index=0, width=2, num_siblings=2, engines=CS[0],CS[1],CS[1],CS[3]) Results in the following valid and invalid placements: CS[0], CS[1] CS[1], CS[3] - Not logically contiguous, return -EINVAL”…”�”}”hje$sbah}”(h]”h ]”h"]”h$]”h&]”j­j®j¾‰j¿Œnone”jÁ}”uh1jh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Me hjih²hubj{)�”}”(hŒ.. _Context Engine Map uAPI:”h]”h}”(h]”h ]”h"]”h$]”h&]”hÊŒcontext-engine-map-uapi”uh1jzh´Mªhjih²hh³Nubhì)�”}”(hŒ**Context Engine Map uAPI**”h]”jŒ)�”}”(hjƒ$h]”hŒContext Engine Map uAPI”…”�”}”(hj…$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj�$ubah}”(h]”j€$ah ]”h"]”Œcontext engine map uapi”ah$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M’ hjih²hj¢}”j–$jv$sj¤}”j€$jv$subhì)�”}”(hŒ×Context engine map is a new way of addressing engines when submitting batch- buffers, replacing the existing way of using identifiers like `I915_EXEC_BLT` inside the flags field of `struct drm_i915_gem_execbuffer2`.”h]”(hŒ‹Context engine map is a new way of addressing engines when submitting batch- buffers, replacing the existing way of using identifiers like ”…”�”}”(hjœ$h²hh³Nh´Nubj )�”}”(hŒ`I915_EXEC_BLT`”h]”hŒ I915_EXEC_BLT”…”�”}”(hj¤$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjœ$ubhŒ inside the flags field of ”…”�”}”(hjœ$h²hh³Nh´Nubj )�”}”(hŒ!`struct drm_i915_gem_execbuffer2`”h]”hŒstruct drm_i915_gem_execbuffer2”…”�”}”(hj¶$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjœ$ubhŒ.”…”�”}”(hjœ$h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MÍ hjih²hubhì)�”}”(hŒÞTo use it created GEM contexts need to be configured with a list of engines the user is intending to submit to. This is accomplished using the `I915_CONTEXT_PARAM_ENGINES` parameter and `struct i915_context_param_engines`.”h]”(hŒ�To use it created GEM contexts need to be configured with a list of engines the user is intending to submit to. This is accomplished using the ”…”�”}”(hjÏ$h²hh³Nh´Nubj )�”}”(hŒ`I915_CONTEXT_PARAM_ENGINES`”h]”hŒI915_CONTEXT_PARAM_ENGINES”…”�”}”(hj×$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÏ$ubhŒ parameter and ”…”�”}”(hjÏ$h²hh³Nh´Nubj )�”}”(hŒ#`struct i915_context_param_engines`”h]”hŒ!struct i915_context_param_engines”…”�”}”(hjé$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÏ$ubhŒ.”…”�”}”(hjÏ$h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MÑ hjih²hubhì)�”}”(hŒ[For such contexts the `I915_EXEC_RING_MASK` field becomes an index into the configured map.”h]”(hŒFor such contexts the ”…”�”}”(hj%h²hh³Nh´Nubj )�”}”(hŒ`I915_EXEC_RING_MASK`”h]”hŒI915_EXEC_RING_MASK”…”�”}”(hj %h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj%ubhŒ0 field becomes an index into the configured map.”…”�”}”(hj%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MÖ hjih²hubhì)�”}”(hŒ;Example of creating such context and submitting against it:”h]”hŒ;Example of creating such context and submitting against it:”…”�”}”(hj#%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MÙ hjih²hubj)�”}”(hX}I915_DEFINE_CONTEXT_PARAM_ENGINES(engines, 2) = { .engines = { { I915_ENGINE_CLASS_RENDER, 0 }, { I915_ENGINE_CLASS_COPY, 0 } } }; struct drm_i915_gem_context_create_ext_setparam p_engines = { .base = { .name = I915_CONTEXT_CREATE_EXT_SETPARAM, }, .param = { .param = I915_CONTEXT_PARAM_ENGINES, .value = to_user_pointer(&engines), .size = sizeof(engines), }, }; struct drm_i915_gem_context_create_ext create = { .flags = I915_CONTEXT_CREATE_FLAGS_USE_EXTENSIONS, .extensions = to_user_pointer(&p_engines); }; ctx_id = gem_context_create_ext(drm_fd, &create); // We have now created a GEM context with two engines in the map: // Index 0 points to rcs0 while index 1 points to bcs0. Other engines // will not be accessible from this context. ... execbuf.rsvd1 = ctx_id; execbuf.flags = 0; // Submits to index 0, which is rcs0 for this context gem_execbuf(drm_fd, &execbuf); ... execbuf.rsvd1 = ctx_id; execbuf.flags = 1; // Submits to index 0, which is bcs0 for this context gem_execbuf(drm_fd, &execbuf);”h]”hX}I915_DEFINE_CONTEXT_PARAM_ENGINES(engines, 2) = { .engines = { { I915_ENGINE_CLASS_RENDER, 0 }, { I915_ENGINE_CLASS_COPY, 0 } } }; struct drm_i915_gem_context_create_ext_setparam p_engines = { .base = { .name = I915_CONTEXT_CREATE_EXT_SETPARAM, }, .param = { .param = I915_CONTEXT_PARAM_ENGINES, .value = to_user_pointer(&engines), .size = sizeof(engines), }, }; struct drm_i915_gem_context_create_ext create = { .flags = I915_CONTEXT_CREATE_FLAGS_USE_EXTENSIONS, .extensions = to_user_pointer(&p_engines); }; ctx_id = gem_context_create_ext(drm_fd, &create); // We have now created a GEM context with two engines in the map: // Index 0 points to rcs0 while index 1 points to bcs0. Other engines // will not be accessible from this context. ... execbuf.rsvd1 = ctx_id; execbuf.flags = 0; // Submits to index 0, which is rcs0 for this context gem_execbuf(drm_fd, &execbuf); ... execbuf.rsvd1 = ctx_id; execbuf.flags = 1; // Submits to index 0, which is bcs0 for this context gem_execbuf(drm_fd, &execbuf);”…”�”}”hj2%sbah}”(h]”h ]”h"]”h$]”h&]”j­j®j¾‰j¿jÀjÁ}”uh1jh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MÛ hjih²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ3drm_i915_gem_context_create_ext_setparam (C struct)”Œ*c.drm_i915_gem_context_create_ext_setparam”hNt”auh1jJhjih²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒ(drm_i915_gem_context_create_ext_setparam”h]”jg)�”}”(hŒ/struct drm_i915_gem_context_create_ext_setparam”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj[%h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjW%h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hji%h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjW%h²hh³jh%h´M ubj�)�”}”(hŒ(drm_i915_gem_context_create_ext_setparam”h]”j–)�”}”(hjU%h]”hŒ(drm_i915_gem_context_create_ext_setparam”…”�”}”(hj{%h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjw%ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjW%h²hh³jh%h´M ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjS%h²hh³jh%h´M ubah}”(h]”jN%ah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jh%h´M hjP%h²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ:Context parameter to set or query during context creation.”h]”hŒ:Context parameter to set or query during context creation.”…”�”}”(hj�%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M# hjš%h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjP%h²hh³jh%h´M ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjµ%jçjµ%jè‰jé‰jê‰uh1j[h²hhjih³Nh´Nubjì)�”}”(hXB**Definition**:: struct drm_i915_gem_context_create_ext_setparam { struct i915_user_extension base; struct drm_i915_gem_context_param param; }; **Members** ``base`` Extension link. See struct i915_user_extension. ``param`` Context parameter to set or query. See struct drm_i915_gem_context_param.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjÁ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj½%ubhŒ:”…”�”}”(hj½%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M' hj¹%ubj)�”}”(hŒ†struct drm_i915_gem_context_create_ext_setparam { struct i915_user_extension base; struct drm_i915_gem_context_param param; };”h]”hŒ†struct drm_i915_gem_context_create_ext_setparam { struct i915_user_extension base; struct drm_i915_gem_context_param param; };”…”�”}”hjÚ%sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M) hj¹%ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjë%h]”hŒMembers”…”�”}”(hjí%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjé%ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M. hj¹%ubj§)�”}”(hhh]”(j¬)�”}”(hŒ9``base`` Extension link. See struct i915_user_extension. ”h]”(j²)�”}”(hŒ``base``”h]”jC)�”}”(hj &h]”hŒbase”…”�”}”(hj &h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M( hj&ubjÃ)�”}”(hhh]”hì)�”}”(hŒ/Extension link. See struct i915_user_extension.”h]”hŒ/Extension link. See struct i915_user_extension.”…”�”}”(hj#&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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ŒS``param`` Context parameter to set or query. See struct drm_i915_gem_context_param.”h]”(j²)�”}”(hŒ ``param``”h]”jC)�”}”(hjC&h]”hŒparam”…”�”}”(hjE&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjA&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M, hj=&ubjÃ)�”}”(hhh]”hì)�”}”(hŒIContext parameter to set or query. See struct drm_i915_gem_context_param.”h]”hŒIContext parameter to set or query. See struct drm_i915_gem_context_param.”…”�”}”(hj\&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jX&h´M, hjY&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj=&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jX&h´M, hj&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj¹%ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhjih²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ"drm_i915_gem_vm_control (C struct)”Œc.drm_i915_gem_vm_control”hNt”auh1jJhjih²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_i915_gem_vm_control”h]”jg)�”}”(hŒstruct drm_i915_gem_vm_control”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjœ&h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj˜&h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M3 ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjª&h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hj˜&h²hh³j©&h´M3 ubj�)�”}”(hŒdrm_i915_gem_vm_control”h]”j–)�”}”(hj–&h]”hŒdrm_i915_gem_vm_control”…”�”}”(hj¼&h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj¸&ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj˜&h²hh³j©&h´M3 ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hj”&h²hh³j©&h´M3 ubah}”(h]”j�&ah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³j©&h´M3 hj‘&h²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ"Structure to create or destroy VM.”h]”hŒ"Structure to create or destroy VM.”…”�”}”(hjÞ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M7 hjÛ&h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj‘&h²hh³j©&h´M3 ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjö&jçjö&jè‰jé‰jê‰uh1j[h²hhjih³Nh´Nubjì)�”}”(hX&**Definition**:: struct drm_i915_gem_vm_control { __u64 extensions; __u32 flags; __u32 vm_id; }; **Members** ``extensions`` Zero-terminated chain of extensions. ``flags`` reserved for future usage, currently MBZ ``vm_id`` Id of the VM created or to be destroyed”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjþ&ubhŒ:”…”�”}”(hjþ&h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M; hjú&ubj)�”}”(hŒ[struct drm_i915_gem_vm_control { __u64 extensions; __u32 flags; __u32 vm_id; };”h]”hŒ[struct drm_i915_gem_vm_control { __u64 extensions; __u32 flags; __u32 vm_id; };”…”�”}”hj'sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M= hjú&ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj,'h]”hŒMembers”…”�”}”(hj.'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj*'ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MC hjú&ubj§)�”}”(hhh]”(j¬)�”}”(hŒ4``extensions`` Zero-terminated chain of extensions. ”h]”(j²)�”}”(hŒ``extensions``”h]”jC)�”}”(hjK'h]”hŒ extensions”…”�”}”(hjM'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjI'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MM hjE'ubjÃ)�”}”(hhh]”hì)�”}”(hŒ$Zero-terminated chain of extensions.”h]”hŒ$Zero-terminated chain of extensions.”…”�”}”(hjd'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j`'h´MM hja'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjE'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j`'h´MM hjB'ubj¬)�”}”(hŒ3``flags`` reserved for future usage, currently MBZ ”h]”(j²)�”}”(hŒ ``flags``”h]”jC)�”}”(hj„'h]”hŒflags”…”�”}”(hj†'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj‚'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MP hj~'ubjÃ)�”}”(hhh]”hì)�”}”(hŒ(reserved for future usage, currently MBZ”h]”hŒ(reserved for future usage, currently MBZ”…”�”}”(hj�'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j™'h´MP hjš'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj~'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j™'h´MP hjB'ubj¬)�”}”(hŒ1``vm_id`` Id of the VM created or to be destroyed”h]”(j²)�”}”(hŒ ``vm_id``”h]”jC)�”}”(hj½'h]”hŒvm_id”…”�”}”(hj¿'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj»'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MR hj·'ubjÃ)�”}”(hhh]”hì)�”}”(hŒ'Id of the VM created or to be destroyed”h]”hŒ'Id of the VM created or to be destroyed”…”�”}”(hjÖ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MS hjÓ'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj·'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÒ'h´MR hjB'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjú&ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhjih²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hj(h]”hŒ Description”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjþ'ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MV hjih²hubhì)�”}”(hŒDRM_I915_GEM_VM_CREATE -”h]”hŒDRM_I915_GEM_VM_CREATE -”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M8 hjih²hubhì)�”}”(hŒºCreate a new virtual memory address space (ppGTT) for use within a context on the same file. Extensions can be provided to configure exactly how the address space is setup upon creation.”h]”hŒºCreate a new virtual memory address space (ppGTT) for use within a context on the same file. Extensions can be provided to configure exactly how the address space is setup upon creation.”…”�”}”(hj%(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M: hjih²hubhì)�”}”(hŒiThe id of new VM (bound to the fd) for use with I915_CONTEXT_PARAM_VM is returned in the outparam **id**.”h]”(hŒbThe id of new VM (bound to the fd) for use with I915_CONTEXT_PARAM_VM is returned in the outparam ”…”�”}”(hj4(h²hh³Nh´NubjŒ)�”}”(hŒ**id**”h]”hŒid”…”�”}”(hj<(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj4(ubhŒ.”…”�”}”(hj4(h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M> hjih²hubhì)�”}”(hŒ˜An extension chain maybe provided, starting with **extensions**, and terminated by the **next_extension** being 0. Currently, no extensions are defined.”h]”(hŒ1An extension chain maybe provided, starting with ”…”�”}”(hjU(h²hh³Nh´NubjŒ)�”}”(hŒ**extensions**”h]”hŒ extensions”…”�”}”(hj](h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjU(ubhŒ, and terminated by the ”…”�”}”(hjU(h²hh³Nh´NubjŒ)�”}”(hŒ**next_extension**”h]”hŒnext_extension”…”�”}”(hjo(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjU(ubhŒ/ being 0. Currently, no extensions are defined.”…”�”}”(hjU(h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MA hjih²hubhì)�”}”(hŒDRM_I915_GEM_VM_DESTROY -”h]”hŒDRM_I915_GEM_VM_DESTROY -”…”�”}”(hjˆ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MD hjih²hubhì)�”}”(hŒ)ubj)�”}”(hŒàstruct drm_i915_gem_userptr { __u64 user_ptr; __u64 user_size; __u32 flags; #define I915_USERPTR_READ_ONLY 0x1; #define I915_USERPTR_PROBE 0x2; #define I915_USERPTR_UNSYNCHRONIZED 0x80000000; __u32 handle; };”h]”hŒàstruct drm_i915_gem_userptr { __u64 user_ptr; __u64 user_size; __u32 flags; #define I915_USERPTR_READ_ONLY 0x1; #define I915_USERPTR_PROBE 0x2; #define I915_USERPTR_UNSYNCHRONIZED 0x80000000; __u32 handle; };”…”�”}”hj_)sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M� hj>)ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjp)h]”hŒMembers”…”�”}”(hjr)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjn)ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M— hj>)ubj§)�”}”(hhh]”(j¬)�”}”(hŒU``user_ptr`` The pointer to the allocated memory. Needs to be aligned to PAGE_SIZE. ”h]”(j²)�”}”(hŒ ``user_ptr``”h]”jC)�”}”(hj�)h]”hŒuser_ptr”…”�”}”(hj‘)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj�)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M‘ hj‰)ubjÃ)�”}”(hhh]”(hì)�”}”(hŒ$The pointer to the allocated memory.”h]”hŒ$The pointer to the allocated memory.”…”�”}”(hj¨)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M� hj¥)ubhì)�”}”(hŒ!Needs to be aligned to PAGE_SIZE.”h]”hŒ!Needs to be aligned to PAGE_SIZE.”…”�”}”(hj·)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¤)h´M‘ hj¥)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj‰)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j¤)h´M‘ hj†)ubj¬)�”}”(hŒ±``user_size`` The size in bytes for the allocated memory. This will also become the object size. Needs to be aligned to PAGE_SIZE, and should be at least PAGE_SIZE, or larger. ”h]”(j²)�”}”(hŒ ``user_size``”h]”jC)�”}”(hj×)h]”hŒ user_size”…”�”}”(hjÙ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÕ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mš hjÑ)ubjÃ)�”}”(hhh]”(hì)�”}”(hŒRThe size in bytes for the allocated memory. This will also become the object size.”h]”hŒRThe size in bytes for the allocated memory. This will also become the object size.”…”�”}”(hjð)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M– hjí)ubhì)�”}”(hŒNNeeds to be aligned to PAGE_SIZE, and should be at least PAGE_SIZE, or larger.”h]”hŒNNeeds to be aligned to PAGE_SIZE, and should be at least PAGE_SIZE, or larger.”…”�”}”(hjÿ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M™ hjí)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÑ)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jì)h´Mš hj†)ubj¬)�”}”(hXv``flags`` Supported flags: I915_USERPTR_READ_ONLY: Mark the object as readonly, this also means GPU access can only be readonly. This is only supported on HW which supports readonly access through the GTT. If the HW can't support readonly access, an error is returned. I915_USERPTR_PROBE: Probe the provided **user_ptr** range and validate that the **user_ptr** is indeed pointing to normal memory and that the range is also valid. For example if some garbage address is given to the kernel, then this should complain. Returns -EFAULT if the probe failed. Note that this doesn't populate the backing pages, and also doesn't guarantee that the object will remain valid when the object is eventually used. The kernel supports this feature if I915_PARAM_HAS_USERPTR_PROBE returns a non-zero value. I915_USERPTR_UNSYNCHRONIZED: NOT USED. Setting this flag will result in an error. ”h]”(j²)�”}”(hŒ ``flags``”h]”jC)�”}”(hj *h]”hŒflags”…”�”}”(hj"*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M¼ hj*ubjÃ)�”}”(hhh]”(hì)�”}”(hŒSupported flags:”h]”hŒSupported flags:”…”�”}”(hj9*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M¡ hj6*ubhì)�”}”(hŒI915_USERPTR_READ_ONLY:”h]”hŒI915_USERPTR_READ_ONLY:”…”�”}”(hjH*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M£ hj6*ubhì)�”}”(hŒÙMark the object as readonly, this also means GPU access can only be readonly. This is only supported on HW which supports readonly access through the GTT. If the HW can't support readonly access, an error is returned.”h]”hŒÛMark the object as readonly, this also means GPU access can only be readonly. This is only supported on HW which supports readonly access through the GTT. If the HW can’t support readonly access, an error is returned.”…”�”}”(hjW*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M¥ hj6*ubhì)�”}”(hŒI915_USERPTR_PROBE:”h]”hŒI915_USERPTR_PROBE:”…”�”}”(hjf*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mª hj6*ubhì)�”}”(hŒåProbe the provided **user_ptr** range and validate that the **user_ptr** is indeed pointing to normal memory and that the range is also valid. For example if some garbage address is given to the kernel, then this should complain.”•h]”(hŒProbe the provided ”…”�”}”(hju*h²hh³Nh´NubjŒ)�”}”(hŒ **user_ptr**”h]”hŒuser_ptr”…”�”}”(hj}*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hju*ubhŒ range and validate that the ”…”�”}”(hju*h²hh³Nh´NubjŒ)�”}”(hŒ **user_ptr**”h]”hŒuser_ptr”…”�”}”(hj�*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hju*ubhŒ� is indeed pointing to normal memory and that the range is also valid. For example if some garbage address is given to the kernel, then this should complain.”…”�”}”(hju*h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M¬ hj6*ubhì)�”}”(hŒ$Returns -EFAULT if the probe failed.”h]”hŒ$Returns -EFAULT if the probe failed.”…”�”}”(hj¨*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M± hj6*ubhì)�”}”(hŒ“Note that this doesn't populate the backing pages, and also doesn't guarantee that the object will remain valid when the object is eventually used.”h]”hŒ—Note that this doesn’t populate the backing pages, and also doesn’t guarantee that the object will remain valid when the object is eventually used.”…”�”}”(hj·*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M³ hj6*ubhì)�”}”(hŒZThe kernel supports this feature if I915_PARAM_HAS_USERPTR_PROBE returns a non-zero value.”h]”hŒZThe kernel supports this feature if I915_PARAM_HAS_USERPTR_PROBE returns a non-zero value.”…”�”}”(hjÆ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M· hj6*ubhì)�”}”(hŒI915_USERPTR_UNSYNCHRONIZED:”h]”hŒI915_USERPTR_UNSYNCHRONIZED:”…”�”}”(hjÕ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mº hj6*ubhì)�”}”(hŒ4NOT USED. Setting this flag will result in an error.”h]”hŒ4NOT USED. Setting this flag will result in an error.”…”�”}”(hjä*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j5*h´M¼ hj6*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j5*h´M¼ hj†)ubj¬)�”}”(hŒG``handle`` Returned handle for the object. Object handles are nonzero.”h]”(j²)�”}”(hŒ ``handle``”h]”jC)�”}”(hj+h]”hŒhandle”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MÆ hjþ*ubjÃ)�”}”(hhh]”(hì)�”}”(hŒReturned handle for the object.”h]”hŒReturned handle for the object.”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MÅ hj+ubhì)�”}”(hŒObject handles are nonzero.”h]”hŒObject handles are nonzero.”…”�”}”(hj,+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MÇ hj+ubeh}”(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¦hj>)ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhjih²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjV+h]”hŒ Description”…”�”}”(hjX+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjT+ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MÊ hjih²hubhì)�”}”(hŒ\Userptr objects have several restrictions on what ioctls can be used with the object handle.”h]”hŒ\Userptr objects have several restrictions on what ioctls can be used with the object handle.”…”�”}”(hjl+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mˆ hjih²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ"drm_i915_perf_oa_config (C struct)”Œc.drm_i915_perf_oa_config”hNt”auh1jJhjih²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_i915_perf_oa_config”h]”jg)�”}”(hŒstruct drm_i915_perf_oa_config”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj”+h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj�+h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”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Œdrm_i915_perf_oa_config”h]”j–)�”}”(hjŽ+h]”hŒdrm_i915_perf_oa_config”…”�”}”(hj´+h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj°+ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj�+h²hh³j¡+h´MŽ ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”h}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj‰+h²hh³j¡+h´MŽ ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjß+jçjß+jè‰jé‰jê‰uh1j[h²hhjih³Nh´Nubjì)�”}”(hX**Definition**:: struct drm_i915_perf_oa_config { char uuid[36]; __u32 n_mux_regs; __u32 n_boolean_regs; __u32 n_flex_regs; __u64 mux_regs_ptr; __u64 boolean_regs_ptr; __u64 flex_regs_ptr; }; **Members** ``uuid`` String formatted like "%\08x-%\04x-%\04x-%\04x-%\012x" ``n_mux_regs`` Number of mux regs in :c:type:`mux_regs_ptr`. ``n_boolean_regs`` Number of boolean regs in :c:type:`boolean_regs_ptr`. ``n_flex_regs`` Number of flex regs in :c:type:`flex_regs_ptr`. ``mux_regs_ptr`` Pointer to tuples of u32 values (register address, value) for mux registers. Expected length of buffer is (2 * sizeof(u32) * :c:type:`n_mux_regs`). ``boolean_regs_ptr`` Pointer to tuples of u32 values (register address, value) for mux registers. Expected length of buffer is (2 * sizeof(u32) * :c:type:`n_boolean_regs`). ``flex_regs_ptr`` Pointer to tuples of u32 values (register address, value) for mux registers. Expected length of buffer is (2 * sizeof(u32) * :c:type:`n_flex_regs`).”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjë+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjç+ubhŒ:”…”�”}”(hjç+h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M² hjã+ubj)�”}”(hŒÊstruct drm_i915_perf_oa_config { char uuid[36]; __u32 n_mux_regs; __u32 n_boolean_regs; __u32 n_flex_regs; __u64 mux_regs_ptr; __u64 boolean_regs_ptr; __u64 flex_regs_ptr; };”h]”hŒÊstruct drm_i915_perf_oa_config { char uuid[36]; __u32 n_mux_regs; __u32 n_boolean_regs; __u32 n_flex_regs; __u64 mux_regs_ptr; __u64 boolean_regs_ptr; __u64 flex_regs_ptr; };”…”�”}”hj,sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M´ hjã+ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj,h]”hŒMembers”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M¾ hjã+ubj§)�”}”(hhh]”(j¬)�”}”(hŒ@``uuid`` String formatted like "%\08x-%\04x-%\04x-%\04x-%\012x" ”h]”(j²)�”}”(hŒ``uuid``”h]”jC)�”}”(hj4,h]”hŒuuid”…”�”}”(hj6,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj2,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mµ hj.,ubjÃ)�”}”(hhh]”hì)�”}”(hŒ6String formatted like "%\08x-%\04x-%\04x-%\04x-%\012x"”h]”hŒ:String formatted like “%08x-%04x-%04x-%04x-%012xâ€�”…”�”}”(hjM,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jI,h´Mµ hjJ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj.,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jI,h´Mµ hj+,ubj¬)�”}”(hŒ=``n_mux_regs`` Number of mux regs in :c:type:`mux_regs_ptr`. ”h]”(j²)�”}”(hŒ``n_mux_regs``”h]”jC)�”}”(hjm,h]”hŒ n_mux_regs”…”�”}”(hjo,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjk,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M¼ hjg,ubjÃ)�”}”(hhh]”hì)�”}”(hŒ-Number of mux regs in :c:type:`mux_regs_ptr`.”h]”(hŒNumber of mux regs in ”…”�”}”(hj†,h²hh³Nh´Nubh)�”}”(hŒ:c:type:`mux_regs_ptr`”h]”jC)�”}”(hj�,h]”hŒ mux_regs_ptr”…”�”}”(hj’,h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjŽ,ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒ mux_regs_ptr”uh1hh³j‚,h´M¼ hj†,ubhŒ.”…”�”}”(hj†,h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j‚,h´M¼ hjƒ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjg,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j‚,h´M¼ hj+,ubj¬)�”}”(hŒI``n_boolean_regs`` Number of boolean regs in :c:type:`boolean_regs_ptr`. ”h]”(j²)�”}”(hŒ``n_boolean_regs``”h]”jC)�”}”(hjÉ,h]”hŒn_boolean_regs”…”�”}”(hjË,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÇ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mà hjÃ,ubjÃ)�”}”(hhh]”hì)�”}”(hŒ5Number of boolean regs in :c:type:`boolean_regs_ptr`.”h]”(hŒNumber of boolean regs in ”…”�”}”(hjâ,h²hh³Nh´Nubh)�”}”(hŒ:c:type:`boolean_regs_ptr`”h]”jC)�”}”(hjì,h]”hŒboolean_regs_ptr”…”�”}”(hjî,h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjê,ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒboolean_regs_ptr”uh1hh³jÞ,h´Mà hjâ,ubhŒ.”…”�”}”(hjâ,h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ@``n_flex_regs`` Number of flex regs in :c:type:`flex_regs_ptr`. ”h]”(j²)�”}”(hŒ``n_flex_regs``”h]”jC)�”}”(hj%-h]”hŒ n_flex_regs”…”�”}”(hj'-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj#-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MÊ hj-ubjÃ)�”}”(hhh]”hì)�”}”(hŒ/Number of flex regs in :c:type:`flex_regs_ptr`.”h]”(hŒNumber of flex regs in ”…”�”}”(hj>-h²hh³Nh´Nubh)�”}”(hŒ:c:type:`flex_regs_ptr`”h]”jC)�”}”(hjH-h]”hŒ flex_regs_ptr”…”�”}”(hjJ-h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjF-ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒ flex_regs_ptr”uh1hh³j:-h´MÊ hj>-ubhŒ.”…”�”}”(hj>-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ¦``mux_regs_ptr`` Pointer to tuples of u32 values (register address, value) for mux registers. Expected length of buffer is (2 * sizeof(u32) * :c:type:`n_mux_regs`). ”h]”(j²)�”}”(hŒ``mux_regs_ptr``”h]”jC)�”}”(hj�-h]”hŒ mux_regs_ptr”…”�”}”(hjƒ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MÓ hj{-ubjÃ)�”}”(hhh]”hì)�”}”(hŒ”Pointer to tuples of u32 values (register address, value) for mux registers. Expected length of buffer is (2 * sizeof(u32) * :c:type:`n_mux_regs`).”h]”(hŒ~Pointer to tuples of u32 values (register address, value) for mux registers. Expected length of buffer is (2 * sizeof(u32) * ”…”�”}”(hjš-h²hh³Nh´Nubh)�”}”(hŒ:c:type:`n_mux_regs`”h]”jC)�”}”(hj¤-h]”hŒ n_mux_regs”…”�”}”(hj¦-h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj¢-ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒ n_mux_regs”uh1hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MÑ hjš-ubhŒ).”…”�”}”(hjš-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ®``boolean_regs_ptr`` Pointer to tuples of u32 values (register address, value) for mux registers. Expected length of buffer is (2 * sizeof(u32) * :c:type:`n_boolean_regs`). ”h]”(j²)�”}”(hŒ``boolean_regs_ptr``”h]”jC)�”}”(hjÞ-h]”hŒboolean_regs_ptr”…”�”}”(hjà-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÜ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MÜ hjØ-ubjÃ)�”}”(hhh]”hì)�”}”(hŒ˜Pointer to tuples of u32 values (register address, value) for mux registers. Expected length of buffer is (2 * sizeof(u32) * :c:type:`n_boolean_regs`).”h]”(hŒ~Pointer to tuples of u32 values (register address, value) for mux registers. Expected length of buffer is (2 * sizeof(u32) * ”…”�”}”(hj÷-h²hh³Nh´Nubh)�”}”(hŒ:c:type:`n_boolean_regs`”h]”jC)�”}”(hj.h]”hŒn_boolean_regs”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjÿ-ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒn_boolean_regs”uh1hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MÚ hj÷-ubhŒ).”…”�”}”(hj÷-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ§``flex_regs_ptr`` Pointer to tuples of u32 values (register address, value) for mux registers. Expected length of buffer is (2 * sizeof(u32) * :c:type:`n_flex_regs`).”h]”(j²)�”}”(hŒ``flex_regs_ptr``”h]”jC)�”}”(hj;.h]”hŒ flex_regs_ptr”…”�”}”(hj=.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj9.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mä hj5.ubjÃ)�”}”(hhh]”hì)�”}”(hŒ•Pointer to tuples of u32 values (register address, value) for mux registers. Expected length of buffer is (2 * sizeof(u32) * :c:type:`n_flex_regs`).”h]”(hŒ~Pointer to tuples of u32 values (register address, value) for mux registers. Expected length of buffer is (2 * sizeof(u32) * ”…”�”}”(hjT.h²hh³Nh´Nubh)�”}”(hŒ:c:type:`n_flex_regs`”h]”jC)�”}”(hj^.h]”hŒ n_flex_regs”…”�”}”(hj`.h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj\.ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒ n_flex_regs”uh1hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mã hjT.ubhŒ).”…”�”}”(hjT.h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j{.h´Mã hjQ.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj5.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jP.h´Mä hj+,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjã+ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhjih²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hj¡.h]”hŒ Description”…”�”}”(hj£.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjŸ.ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mè hjih²hubhì)�”}”(hŒ?Structure to upload perf dynamic configuration into the kernel.”h]”hŒ?Structure to upload perf dynamic configuration into the kernel.”…”�”}”(hj·.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M¯ hjih²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_i915_query_item (C struct)”Œc.drm_i915_query_item”hNt”auh1jJhjih²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_i915_query_item”h]”jg)�”}”(hŒstruct drm_i915_query_item”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjß.h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjÛ.h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”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Œdrm_i915_query_item”h]”j–)�”}”(hjÙ.h]”hŒdrm_i915_query_item”…”�”}”(hjÿ.h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjû.ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjÛ.h²hh³jì.h´M´ ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”hì)�”}”(hŒ.An individual query for the kernel to process.”h]”hŒ.An individual query for the kernel to process.”…”�”}”(hj!/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mì hj/h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÔ.h²hh³jì.h´M´ ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj9/jçj9/jè‰jé‰jê‰uh1j[h²hhjih³Nh´Nubjì)�”}”(hX“**Definition**:: struct drm_i915_query_item { __u64 query_id; #define DRM_I915_QUERY_TOPOLOGY_INFO 1; #define DRM_I915_QUERY_ENGINE_INFO 2; #define DRM_I915_QUERY_PERF_CONFIG 3; #define DRM_I915_QUERY_MEMORY_REGIONS 4; #define DRM_I915_QUERY_HWCONFIG_BLOB 5; #define DRM_I915_QUERY_GEOMETRY_SUBSLICES 6; #define DRM_I915_QUERY_GUC_SUBMISSION_VERSION 7; __s32 length; __u32 flags; #define DRM_I915_QUERY_PERF_CONFIG_LIST 1; #define DRM_I915_QUERY_PERF_CONFIG_DATA_FOR_UUID 2; #define DRM_I915_QUERY_PERF_CONFIG_DATA_FOR_ID 3; __u64 data_ptr; }; **Members** ``query_id`` The id for this query. Currently accepted query IDs are: - ``DRM_I915_QUERY_TOPOLOGY_INFO`` (see struct drm_i915_query_topology_info) - ``DRM_I915_QUERY_ENGINE_INFO`` (see struct drm_i915_engine_info) - ``DRM_I915_QUERY_PERF_CONFIG`` (see struct drm_i915_query_perf_config) - ``DRM_I915_QUERY_MEMORY_REGIONS`` (see struct drm_i915_query_memory_regions) - ``DRM_I915_QUERY_HWCONFIG_BLOB`` (see `GuC HWCONFIG blob uAPI`) - ``DRM_I915_QUERY_GEOMETRY_SUBSLICES`` (see struct drm_i915_query_topology_info) - ``DRM_I915_QUERY_GUC_SUBMISSION_VERSION`` (see struct drm_i915_query_guc_submission_version) ``length`` When set to zero by userspace, this is filled with the size of the data to be written at the **data_ptr** pointer. The kernel sets this value to a negative value to signal an error on a particular query item. ``flags`` When :c:type:`query_id` == ``DRM_I915_QUERY_TOPOLOGY_INFO``, must be 0. When :c:type:`query_id` == ``DRM_I915_QUERY_PERF_CONFIG``, must be one of the following: - ``DRM_I915_QUERY_PERF_CONFIG_LIST`` - ``DRM_I915_QUERY_PERF_CONFIG_DATA_FOR_UUID`` - ``DRM_I915_QUERY_PERF_CONFIG_FOR_UUID`` When :c:type:`query_id` == ``DRM_I915_QUERY_GEOMETRY_SUBSLICES`` must contain a struct i915_engine_class_instance that references a render engine. ``data_ptr`` Data will be written at the location pointed by **data_ptr** when the value of **length** matches the length of the data to be written by the kernel.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjE/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjA/ubhŒ:”…”�”}”(hjA/h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mð hj=/ubj)�”}”(hXkstruct drm_i915_query_item { __u64 query_id; #define DRM_I915_QUERY_TOPOLOGY_INFO 1; #define DRM_I915_QUERY_ENGINE_INFO 2; #define DRM_I915_QUERY_PERF_CONFIG 3; #define DRM_I915_QUERY_MEMORY_REGIONS 4; #define DRM_I915_QUERY_HWCONFIG_BLOB 5; #define DRM_I915_QUERY_GEOMETRY_SUBSLICES 6; #define DRM_I915_QUERY_GUC_SUBMISSION_VERSION 7; __s32 length; __u32 flags; #define DRM_I915_QUERY_PERF_CONFIG_LIST 1; #define DRM_I915_QUERY_PERF_CONFIG_DATA_FOR_UUID 2; #define DRM_I915_QUERY_PERF_CONFIG_DATA_FOR_ID 3; __u64 data_ptr; };”h]”hXkstruct drm_i915_query_item { __u64 query_id; #define DRM_I915_QUERY_TOPOLOGY_INFO 1; #define DRM_I915_QUERY_ENGINE_INFO 2; #define DRM_I915_QUERY_PERF_CONFIG 3; #define DRM_I915_QUERY_MEMORY_REGIONS 4; #define DRM_I915_QUERY_HWCONFIG_BLOB 5; #define DRM_I915_QUERY_GEOMETRY_SUBSLICES 6; #define DRM_I915_QUERY_GUC_SUBMISSION_VERSION 7; __s32 length; __u32 flags; #define DRM_I915_QUERY_PERF_CONFIG_LIST 1; #define DRM_I915_QUERY_PERF_CONFIG_DATA_FOR_UUID 2; #define DRM_I915_QUERY_PERF_CONFIG_DATA_FOR_ID 3; __u64 data_ptr; };”…”�”}”hj^/sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mò hj=/ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjo/h]”hŒMembers”…”�”}”(hjq/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjm/ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M hj=/ubj§)�”}”(hhh]”(j¬)�”}”(hXi``query_id`` The id for this query. Currently accepted query IDs are: - ``DRM_I915_QUERY_TOPOLOGY_INFO`` (see struct drm_i915_query_topology_info) - ``DRM_I915_QUERY_ENGINE_INFO`` (see struct drm_i915_engine_info) - ``DRM_I915_QUERY_PERF_CONFIG`` (see struct drm_i915_query_perf_config) - ``DRM_I915_QUERY_MEMORY_REGIONS`` (see struct drm_i915_query_memory_regions) - ``DRM_I915_QUERY_HWCONFIG_BLOB`` (see `GuC HWCONFIG blob uAPI`) - ``DRM_I915_QUERY_GEOMETRY_SUBSLICES`` (see struct drm_i915_query_topology_info) - ``DRM_I915_QUERY_GUC_SUBMISSION_VERSION`` (see struct drm_i915_query_guc_submission_version) ”h]”(j²)�”}”(hŒ ``query_id``”h]”jC)�”}”(hjŽ/h]”hŒquery_id”…”�”}”(hj�/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjŒ/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mû hjˆ/ubjÃ)�”}”(hhh]”j§)�”}”(hhh]”j¬)�”}”(hXUThe id for this query. Currently accepted query IDs are: - ``DRM_I915_QUERY_TOPOLOGY_INFO`` (see struct drm_i915_query_topology_info) - ``DRM_I915_QUERY_ENGINE_INFO`` (see struct drm_i915_engine_info) - ``DRM_I915_QUERY_PERF_CONFIG`` (see struct drm_i915_query_perf_config) - ``DRM_I915_QUERY_MEMORY_REGIONS`` (see struct drm_i915_query_memory_regions) - ``DRM_I915_QUERY_HWCONFIG_BLOB`` (see `GuC HWCONFIG blob uAPI`) - ``DRM_I915_QUERY_GEOMETRY_SUBSLICES`` (see struct drm_i915_query_topology_info) - ``DRM_I915_QUERY_GUC_SUBMISSION_VERSION`` (see struct drm_i915_query_guc_submission_version) ”h]”(j²)�”}”(hŒ9The id for this query. Currently accepted query IDs are:”h]”hŒ9The id for this query. Currently accepted query IDs are:”…”�”}”(hj®/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³j£/h´Mû hjª/ubjÃ)�”}”(hhh]”hâ)�”}”(hhh]”(hç)�”}”(hŒJ``DRM_I915_QUERY_TOPOLOGY_INFO`` (see struct drm_i915_query_topology_info)”h]”hì)�”}”(hjÄ/h]”(jC)�”}”(hŒ ``DRM_I915_QUERY_TOPOLOGY_INFO``”h]”hŒDRM_I915_QUERY_TOPOLOGY_INFO”…”�”}”(hjÉ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÆ/ubhŒ* (see struct drm_i915_query_topology_info)”…”�”}”(hjÆ/h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mõ hjÂ/ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj¿/ubhç)�”}”(hŒ@``DRM_I915_QUERY_ENGINE_INFO`` (see struct drm_i915_engine_info)”h]”hì)�”}”(hjê/h]”(jC)�”}”(hŒ``DRM_I915_QUERY_ENGINE_INFO``”h]”hŒDRM_I915_QUERY_ENGINE_INFO”…”�”}”(hjï/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjì/ubhŒ" (see struct drm_i915_engine_info)”…”�”}”(hjì/h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mö hjè/ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj¿/ubhç)�”}”(hŒF``DRM_I915_QUERY_PERF_CONFIG`` (see struct drm_i915_query_perf_config)”h]”hì)�”}”(hj0h]”(jC)�”}”(hŒ``DRM_I915_QUERY_PERF_CONFIG``”h]”hŒDRM_I915_QUERY_PERF_CONFIG”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj0ubhŒ( (see struct drm_i915_query_perf_config)”…”�”}”(hj0h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M÷ hj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj¿/ubhç)�”}”(hŒL``DRM_I915_QUERY_MEMORY_REGIONS`` (see struct drm_i915_query_memory_regions)”h]”hì)�”}”(hj60h]”(jC)�”}”(hŒ!``DRM_I915_QUERY_MEMORY_REGIONS``”h]”hŒDRM_I915_QUERY_MEMORY_REGIONS”…”�”}”(hj;0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj80ubhŒ+ (see struct drm_i915_query_memory_regions)”…”�”}”(hj80h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mø hj40ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj¿/ubhç)�”}”(hŒ?``DRM_I915_QUERY_HWCONFIG_BLOB`` (see `GuC HWCONFIG blob uAPI`)”h]”hì)�”}”(hj\0h]”(jC)�”}”(hŒ ``DRM_I915_QUERY_HWCONFIG_BLOB``”h]”hŒDRM_I915_QUERY_HWCONFIG_BLOB”…”�”}”(hja0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj^0ubhŒ (see ”…”�”}”(hj^0h²hh³Nh´Nubj )�”}”(hŒ`GuC HWCONFIG blob uAPI`”h]”hŒGuC HWCONFIG blob uAPI”…”�”}”(hjs0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj^0ubhŒ)”…”�”}”(hj^0h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mù hjZ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj¿/ubhç)�”}”(hŒO``DRM_I915_QUERY_GEOMETRY_SUBSLICES`` (see struct drm_i915_query_topology_info)”h]”hì)�”}”(hj”0h]”(jC)�”}”(hŒ%``DRM_I915_QUERY_GEOMETRY_SUBSLICES``”h]”hŒ!DRM_I915_QUERY_GEOMETRY_SUBSLICES”…”�”}”(hj™0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj–0ubhŒ* (see struct drm_i915_query_topology_info)”…”�”}”(hj–0h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mú hj’0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj¿/ubhç)�”}”(hŒ]``DRM_I915_QUERY_GUC_SUBMISSION_VERSION`` (see struct drm_i915_query_guc_submission_version) ”h]”hì)�”}”(hŒ\``DRM_I915_QUERY_GUC_SUBMISSION_VERSION`` (see struct drm_i915_query_guc_submission_version)”h]”(jC)�”}”(hŒ)``DRM_I915_QUERY_GUC_SUBMISSION_VERSION``”h]”hŒ%DRM_I915_QUERY_GUC_SUBMISSION_VERSION”…”�”}”(hjÀ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj¼0ubhŒ3 (see struct drm_i915_query_guc_submission_version)”…”�”}”(hj¼0h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j£/h´Mû hj¸0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj¿/ubeh}”(h]”h ]”h"]”h$]”h&]”jÀ jÁ uh1há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§/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj¤/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjˆ/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j£/h´Mû hj…/ubj¬)�”}”(hŒÜ``length`` When set to zero by userspace, this is filled with the size of the data to be written at the **data_ptr** pointer. The kernel sets this value to a negative value to signal an error on a particular query item. ”h]”(j²)�”}”(hŒ ``length``”h]”jC)�”}”(hj1h]”hŒlength”…”�”}”(hj 1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M hj1ubjÃ)�”}”(hhh]”hì)�”}”(hŒÐWhen set to zero by userspace, this is filled with the size of the data to be written at the **data_ptr** pointer. The kernel sets this value to a negative value to signal an error on a particular query item.”h]”(hŒ]When set to zero by userspace, this is filled with the size of the data to be written at the ”…”�”}”(hj!1h²hh³Nh´NubjŒ)�”}”(hŒ **data_ptr**”h]”hŒdata_ptr”…”�”}”(hj)1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj!1ubhŒg pointer. The kernel sets this value to a negative value to signal an error on a particular query item.”…”�”}”(hj!1h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M hj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j1h´M hj…/ubj¬)�”}”(hXÏ``flags`` When :c:type:`query_id` == ``DRM_I915_QUERY_TOPOLOGY_INFO``, must be 0. When :c:type:`query_id` == ``DRM_I915_QUERY_PERF_CONFIG``, must be one of the following: - ``DRM_I915_QUERY_PERF_CONFIG_LIST`` - ``DRM_I915_QUERY_PERF_CONFIG_DATA_FOR_UUID`` - ``DRM_I915_QUERY_PERF_CONFIG_FOR_UUID`` When :c:type:`query_id` == ``DRM_I915_QUERY_GEOMETRY_SUBSLICES`` must contain a struct i915_engine_class_instance that references a render engine. ”h]”(j²)�”}”(hŒ ``flags``”h]”jC)�”}”(hjT1h]”hŒflags”…”�”}”(hjV1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjR1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M hjN1ubjÃ)�”}”(hhh]”(hì)�”}”(hŒGWhen :c:type:`query_id` == ``DRM_I915_QUERY_TOPOLOGY_INFO``, must be 0.”h]”(hŒWhen ”…”�”}”(hjm1h²hh³Nh´Nubh)�”}”(hŒ:c:type:`query_id`”h]”jC)�”}”(hjw1h]”hŒquery_id”…”�”}”(hjy1h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhju1ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒquery_id”uh1hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M hjm1ubhŒ == ”…”�”}”(hjm1h²hh³Nh´NubjC)�”}”(hŒ ``DRM_I915_QUERY_TOPOLOGY_INFO``”h]”hŒDRM_I915_QUERY_TOPOLOGY_INFO”…”�”}”(hj™1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjm1ubhŒ , must be 0.”…”�”}”(hjm1h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j”1h´M hjj1ubhì)�”}”(hŒXWhen :c:type:`query_id` == ``DRM_I915_QUERY_PERF_CONFIG``, must be one of the following:”h]”(hŒWhen ”…”�”}”(hj±1h²hh³Nh´Nubh)�”}”(hŒ:c:type:`query_id`”h]”jC)�”}”(hj»1h]”hŒquery_id”…”�”}”(hj½1h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj¹1ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒquery_id”uh1hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M hj±1ubhŒ == ”…”�”}”(hj±1h²hh³Nh´NubjC)�”}”(hŒ``DRM_I915_QUERY_PERF_CONFIG``”h]”hŒDRM_I915_QUERY_PERF_CONFIG”…”�”}”(hjÝ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj±1ubhŒ, must be one of the following:”…”�”}”(hj±1h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jØ1h´M hjj1ubjK)�”}”(hŒ- ``DRM_I915_QUERY_PERF_CONFIG_LIST`` - ``DRM_I915_QUERY_PERF_CONFIG_DATA_FOR_UUID`` - ``DRM_I915_QUERY_PERF_CONFIG_FOR_UUID`` ”h]”hâ)�”}”(hhh]”(hç)�”}”(hŒ#``DRM_I915_QUERY_PERF_CONFIG_LIST``”h]”hì)�”}”(hjþ1h]”jC)�”}”(hjþ1h]”hŒDRM_I915_QUERY_PERF_CONFIG_LIST”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M hjü1ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjù1ubhç)�”}”(hŒ,``DRM_I915_QUERY_PERF_CONFIG_DATA_FOR_UUID``”h]”hì)�”}”(hj2h]”jC)�”}”(hj2h]”hŒ(DRM_I915_QUERY_PERF_CONFIG_DATA_FOR_UUID”…”�”}”(hj$2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj!2ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M hj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjù1ubhç)�”}”(hŒ(``DRM_I915_QUERY_PERF_CONFIG_FOR_UUID`` ”h]”hì)�”}”(hŒ'``DRM_I915_QUERY_PERF_CONFIG_FOR_UUID``”h]”jC)�”}”(hjD2h]”hŒ#DRM_I915_QUERY_PERF_CONFIG_FOR_UUID”…”�”}”(hjF2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjB2ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M hj>2ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjù1ubeh}”(h]”h ]”h"]”h$]”h&]”jÀ jÁ uh1háh³j2h´M hjõ1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJh³j2h´M hjj1ubhì)�”}”(hŒ’When :c:type:`query_id` == ``DRM_I915_QUERY_GEOMETRY_SUBSLICES`` must contain a struct i915_engine_class_instance that references a render engine.”h]”(hŒWhen ”…”�”}”(hjl2h²hh³Nh´Nubh)�”}”(hŒ:c:type:`query_id`”h]”jC)�”}”(hjv2h]”hŒquery_id”…”�”}”(hjx2h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjt2ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒquery_id”uh1hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M hjl2ubhŒ == ”…”�”}”(hjl2h²hh³Nh´NubjC)�”}”(hŒ%``DRM_I915_QUERY_GEOMETRY_SUBSLICES``”h]”hŒ!DRM_I915_QUERY_GEOMETRY_SUBSLICES”…”�”}”(hj˜2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjl2ubhŒR must contain a struct i915_engine_class_instance that references a render engine.”…”�”}”(hjl2h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j“2h´M hjj1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjN1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³ji1h´M hj…/ubj¬)�”}”(hŒ¢``data_ptr`` Data will be written at the location pointed by **data_ptr** when the value of **length** matches the length of the data to be written by the kernel.”h]”(j²)�”}”(hŒ ``data_ptr``”h]”jC)�”}”(hjÂ2h]”hŒdata_ptr”…”�”}”(hjÄ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÀ2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M) hj¼2ubjÃ)�”}”(hhh]”hì)�”}”(hŒ•Data will be written at the location pointed by **data_ptr** when the value of **length** matches the length of the data to be written by the kernel.”h]”(hŒ0Data will be written at the location pointed by ”…”�”}”(hjÛ2h²hh³Nh´NubjŒ)�”}”(hŒ **data_ptr**”h]”hŒdata_ptr”…”�”}”(hjã2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÛ2ubhŒ when the value of ”…”�”}”(hjÛ2h²hh³Nh´NubjŒ)�”}”(hŒ **length**”h]”hŒlength”…”�”}”(hjõ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÛ2ubhŒ< matches the length of the data to be written by the kernel.”…”�”}”(hjÛ2h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M( hjØ2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj¼2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j×2h´M) hj…/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj=/ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhjih²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hj)3h]”hŒ Description”…”�”}”(hj+3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj'3ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M- hjih²hubhì)�”}”(hŒ‚The behaviour is determined by the **query_id**. Note that exactly what **data_ptr** is also depends on the specific **query_id**.”h]”(hŒ#The behaviour is determined by the ”…”�”}”(hj?3h²hh³Nh´NubjŒ)�”}”(hŒ **query_id**”h]”hŒquery_id”…”�”}”(hjG3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj?3ubhŒ. Note that exactly what ”…”�”}”(hj?3h²hh³Nh´NubjŒ)�”}”(hŒ **data_ptr**”h]”hŒdata_ptr”…”�”}”(hjY3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj?3ubhŒ! is also depends on the specific ”…”�”}”(hj?3h²hh³Nh´NubjŒ)�”}”(hŒ **query_id**”h]”hŒquery_id”…”�”}”(hjk3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj?3ubhŒ.”…”�”}”(hj?3h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mí hjih²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_i915_query (C struct)”Œc.drm_i915_query”hNt”auh1jJhjih²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_i915_query”h]”jg)�”}”(hŒstruct drm_i915_query”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj�3h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj™3h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mó ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«3h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hj™3h²hh³jª3h´Mó ubj�)�”}”(hŒdrm_i915_query”h]”j–)�”}”(hj—3h]”hŒdrm_i915_query”…”�”}”(hj½3h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj¹3ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj™3h²hh³jª3h´Mó ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hj•3h²hh³jª3h´Mó ubah}”(h]”j�3ah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jª3h´Mó hj’3h²hubjÄ)�”}”(hhh]”hì)�”}”(hŒISupply an array of struct drm_i915_query_item for the kernel to fill out.”h]”hŒISupply an array of struct drm_i915_query_item for the kernel to fill out.”…”�”}”(hjß3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M1 hjÜ3h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj’3h²hh³jª3h´Mó ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj÷3jçj÷3jè‰jé‰jê‰uh1j[h²hhjih³Nh´Nubjì)�”}”(hXl**Definition**:: struct drm_i915_query { __u32 num_items; __u32 flags; __u64 items_ptr; }; **Members** ``num_items`` The number of elements in the **items_ptr** array ``flags`` Unused for now. Must be cleared to zero. ``items_ptr`` Pointer to an array of struct drm_i915_query_item. The number of array elements is **num_items**.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÿ3ubhŒ:”…”�”}”(hjÿ3h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M5 hjû3ubj)�”}”(hŒUstruct drm_i915_query { __u32 num_items; __u32 flags; __u64 items_ptr; };”h]”hŒUstruct drm_i915_query { __u32 num_items; __u32 flags; __u64 items_ptr; };”…”�”}”hj4sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M7 hjû3ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj-4h]”hŒMembers”…”�”}”(hj/4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj+4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M= hjû3ubj§)�”}”(hhh]”(j¬)�”}”(hŒ@``num_items`` The number of elements in the **items_ptr** array ”h]”(j²)�”}”(hŒ ``num_items``”h]”jC)�”}”(hjL4h]”hŒ num_items”…”�”}”(hjN4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjJ4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MI hjF4ubjÃ)�”}”(hhh]”hì)�”}”(hŒ1The number of elements in the **items_ptr** array”h]”(hŒThe number of elements in the ”…”�”}”(hje4h²hh³Nh´NubjŒ)�”}”(hŒ **items_ptr**”h]”hŒ items_ptr”…”�”}”(hjm4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hje4ubhŒ array”…”�”}”(hje4h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ja4h´MI hjb4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjF4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³ja4h´MI hjC4ubj¬)�”}”(hŒ3``flags`` Unused for now. Must be cleared to zero. ”h]”(j²)�”}”(hŒ ``flags``”h]”jC)�”}”(hj—4h]”hŒflags”…”�”}”(hj™4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj•4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MM hj‘4ubjÃ)�”}”(hhh]”hì)�”}”(hŒ(Unused for now. Must be cleared to zero.”h]”hŒ(Unused for now. Must be cleared to zero.”…”�”}”(hj°4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¬4h´MM hj­4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj‘4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j¬4h´MM hjC4ubj¬)�”}”(hŒo``items_ptr`` Pointer to an array of struct drm_i915_query_item. The number of array elements is **num_items**.”h]”(j²)�”}”(hŒ ``items_ptr``”h]”jC)�”}”(hjÐ4h]”hŒ items_ptr”…”�”}”(hjÒ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÎ4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MR hjÊ4ubjÃ)�”}”(hhh]”hì)�”}”(hŒaPointer to an array of struct drm_i915_query_item. The number of array elements is **num_items**.”h]”(hŒSPointer to an array of struct drm_i915_query_item. The number of array elements is ”…”�”}”(hjé4h²hh³Nh´NubjŒ)�”}”(hŒ **num_items**”h]”hŒ num_items”…”�”}”(hjñ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjé4ubhŒ.”…”�”}”(hjé4h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jå4h´MR hjæ4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÊ4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jå4h´MR hjC4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjû3ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhjih²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hj$5h]”hŒ Description”…”�”}”(hj&5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj"5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MV hjih²hubhì)�”}”(hŒ`Note that this is generally a two step process for each struct drm_i915_query_item in the array:”h]”hŒ`Note that this is generally a two step process for each struct drm_i915_query_item in the array:”…”�”}”(hj:5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M2 hjih²hubhŒenumerated_list”“”)�”}”(hhh]”(hç)�”}”(hX4Call the DRM_IOCTL_I915_QUERY, giving it our array of struct drm_i915_query_item, with :c:type:`drm_i915_query_item.length ` set to zero. The kernel will then fill in the size, in bytes, which tells userspace how memory it needs to allocate for the blob(say for an array of properties). ”h]”hì)�”}”(hX3Call the DRM_IOCTL_I915_QUERY, giving it our array of struct drm_i915_query_item, with :c:type:`drm_i915_query_item.length ` set to zero. The kernel will then fill in the size, in bytes, which tells userspace how memory it needs to allocate for the blob(say for an array of properties).”h]”(hŒWCall the DRM_IOCTL_I915_QUERY, giving it our array of struct drm_i915_query_item, with ”…”�”}”(hjR5h²hh³Nh´Nubh)�”}”(hŒ::c:type:`drm_i915_query_item.length `”h]”jC)�”}”(hj\5h]”hŒdrm_i915_query_item.length”…”�”}”(hj^5h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjZ5ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒdrm_i915_query_item”uh1hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M5 hjR5ubhŒ¢ set to zero. The kernel will then fill in the size, in bytes, which tells userspace how memory it needs to allocate for the blob(say for an array of properties).”…”�”}”(hjR5h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jy5h´M5 hjN5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjK5ubhç)�”}”(hXPNext we call DRM_IOCTL_I915_QUERY again, this time with the :c:type:`drm_i915_query_item.data_ptr ` equal to our newly allocated blob. Note that the :c:type:`drm_i915_query_item.length ` should still be the same as what the kernel previously set. At this point the kernel can fill in the blob. ”h]”hì)�”}”(hXONext we call DRM_IOCTL_I915_QUERY again, this time with the :c:type:`drm_i915_query_item.data_ptr ` equal to our newly allocated blob. Note that the :c:type:`drm_i915_query_item.length ` should still be the same as what the kernel previously set. At this point the kernel can fill in the blob.”h]”(hŒ`”h]”jC)�”}”(hj˜5h]”hŒdrm_i915_query_item.data_ptr”…”�”}”(hjš5h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj–5ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒdrm_i915_query_item”uh1hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M: hjŽ5ubhŒ2 equal to our newly allocated blob. Note that the ”…”�”}”(hjŽ5h²hh³Nh´Nubh)�”}”(hŒ::c:type:`drm_i915_query_item.length `”h]”jC)�”}”(hj¼5h]”hŒdrm_i915_query_item.length”…”�”}”(hj¾5h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjº5ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒdrm_i915_query_item”uh1hh³jµ5h´M: hjŽ5ubhŒk should still be the same as what the kernel previously set. At this point the kernel can fill in the blob.”…”�”}”(hjŽ5h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jµ5h´M: hjŠ5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjK5ubeh}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œarabic”Œprefix”hŒsuffix”Œ.”uh1jI5hjih²hh³Nh´Nubhì)�”}”(hŒïNote that for some query items it can make sense for userspace to just pass in a buffer/blob equal to or larger than the required size. In this case only a single ioctl call is needed. For some smaller query items this can work quite well.”h]”hŒïNote that for some query items it can make sense for userspace to just pass in a buffer/blob equal to or larger than the required size. In this case only a single ioctl call is needed. For some smaller query items this can work quite well.”…”�”}”(hjô5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M? hjih²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ'drm_i915_query_topology_info (C struct)”Œc.drm_i915_query_topology_info”hNt”auh1jJhjih²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_i915_query_topology_info”h]”jg)�”}”(hŒ#struct drm_i915_query_topology_info”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj6h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MG ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*6h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hj6h²hh³j)6h´MG ubj�)�”}”(hŒdrm_i915_query_topology_info”h]”j–)�”}”(hj6h]”hŒdrm_i915_query_topology_info”…”�”}”(hj<6h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj86ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj6h²hh³j)6h´MG ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hj6h²hh³j)6h´MG ubah}”(h]”j6ah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³j)6h´MG hj6h²hubjÄ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj6h²hh³j)6h´MG ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjg6jçjg6jè‰jé‰jê‰uh1j[h²hhjih³Nh´Nubjì)�”}”(hX? **Definition**:: struct drm_i915_query_topology_info { __u16 flags; __u16 max_slices; __u16 max_subslices; __u16 max_eus_per_subslice; __u16 subslice_offset; __u16 subslice_stride; __u16 eu_offset; __u16 eu_stride; __u8 data[]; }; **Members** ``flags`` Unused for now. Must be cleared to zero. ``max_slices`` The number of bits used to express the slice mask. ``max_subslices`` The number of bits used to express the subslice mask. ``max_eus_per_subslice`` The number of bits in the EU mask that correspond to a single subslice's EUs. ``subslice_offset`` Offset in data[] at which the subslice masks are stored. ``subslice_stride`` Stride at which each of the subslice masks for each slice are stored. ``eu_offset`` Offset in data[] at which the EU masks are stored. ``eu_stride`` Stride at which each of the EU masks for each subslice are stored. ``data`` Contains 3 pieces of information : - The slice mask with one bit per slice telling whether a slice is available. The availability of slice X can be queried with the following formula : .. code:: c (data[X / 8] >> (X % 8)) & 1 Starting with Xe_HP platforms, Intel hardware no longer has traditional slices so i915 will always report a single slice (hardcoded slicemask = 0x1) which contains all of the platform's subslices. I.e., the mask here does not reflect any of the newer hardware concepts such as "gslices" or "cslices" since userspace is capable of inferring those from the subslice mask. - The subslice mask for each slice with one bit per subslice telling whether a subslice is available. Starting with Gen12 we use the term "subslice" to refer to what the hardware documentation describes as a "dual-subslices." The availability of subslice Y in slice X can be queried with the following formula : .. code:: c (data[subslice_offset + X * subslice_stride + Y / 8] >> (Y % 8)) & 1 - The EU mask for each subslice in each slice, with one bit per EU telling whether an EU is available. The availability of EU Z in subslice Y in slice X can be queried with the following formula : .. code:: c (data[eu_offset + (X * max_subslices + Y) * eu_stride + Z / 8 ] >> (Z % 8)) & 1”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjs6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjo6ubhŒ:”…”�”}”(hjo6h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M^ hjk6ubj)�”}”(hŒùstruct drm_i915_query_topology_info { __u16 flags; __u16 max_slices; __u16 max_subslices; __u16 max_eus_per_subslice; __u16 subslice_offset; __u16 subslice_stride; __u16 eu_offset; __u16 eu_stride; __u8 data[]; };”h]”hŒùstruct drm_i915_query_topology_info { __u16 flags; __u16 max_slices; __u16 max_subslices; __u16 max_eus_per_subslice; __u16 subslice_offset; __u16 subslice_stride; __u16 eu_offset; __u16 eu_stride; __u8 data[]; };”…”�”}”hjŒ6sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M` hjk6ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj�6h]”hŒMembers”…”�”}”(hjŸ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj›6ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Ml hjk6ubj§)�”}”(hhh]”(j¬)�”}”(hŒ3``flags`` Unused for now. Must be cleared to zero. ”h]”(j²)�”}”(hŒ ``flags``”h]”jC)�”}”(hj¼6h]”hŒflags”…”�”}”(hj¾6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjº6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mb hj¶6ubjÃ)�”}”(hhh]”hì)�”}”(hŒ(Unused for now. Must be cleared to zero.”h]”hŒ(Unused for now. Must be cleared to zero.”…”�”}”(hjÕ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÑ6h´Mb hjÒ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj¶6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÑ6h´Mb hj³6ubj¬)�”}”(hŒB``max_slices`` The number of bits used to express the slice mask. ”h]”(j²)�”}”(hŒ``max_slices``”h]”jC)�”}”(hjõ6h]”hŒ max_slices”…”�”}”(hj÷6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjó6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mi hjï6ubjÃ)�”}”(hhh]”hì)�”}”(hŒ2The number of bits used to express the slice mask.”h]”hŒ2The number of bits used to express the slice mask.”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j 7h´Mi hj 7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjï6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j 7h´Mi hj³6ubj¬)�”}”(hŒH``max_subslices`` The number of bits used to express the subslice mask. ”h]”(j²)�”}”(hŒ``max_subslices``”h]”jC)�”}”(hj.7h]”hŒ max_subslices”…”�”}”(hj07h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj,7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mp hj(7ubjÃ)�”}”(hhh]”hì)�”}”(hŒ5The number of bits used to express the subslice mask.”h]”hŒ5The number of bits used to express the subslice mask.”…”�”}”(hjG7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jC7h´Mp hjD7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj(7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jC7h´Mp hj³6ubj¬)�”}”(hŒg``max_eus_per_subslice`` The number of bits in the EU mask that correspond to a single subslice's EUs. ”h]”(j²)�”}”(hŒ``max_eus_per_subslice``”h]”jC)�”}”(hjg7h]”hŒmax_eus_per_subslice”…”�”}”(hji7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhje7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mx hja7ubjÃ)�”}”(hhh]”hì)�”}”(hŒMThe number of bits in the EU mask that correspond to a single subslice's EUs.”h]”hŒOThe number of bits in the EU mask that correspond to a single subslice’s EUs.”…”�”}”(hj€7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mw hj}7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhja7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j|7h´Mx hj³6ubj¬)�”}”(hŒM``subslice_offset`` Offset in data[] at which the subslice masks are stored. ”h]”(j²)�”}”(hŒ``subslice_offset``”h]”jC)�”}”(hj¡7h]”hŒsubslice_offset”…”�”}”(hj£7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjŸ7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M hj›7ubjÃ)�”}”(hhh]”hì)�”}”(hŒ8Offset in data[] at which the subslice masks are stored.”h]”hŒ8Offset in data[] at which the subslice masks are stored.”…”�”}”(hjº7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¶7h´M hj·7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj›7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j¶7h´M hj³6ubj¬)�”}”(hŒZ``subslice_stride`` Stride at which each of the subslice masks for each slice are stored. ”h]”(j²)�”}”(hŒ``subslice_stride``”h]”jC)�”}”(hjÚ7h]”hŒsubslice_stride”…”�”}”(hjÜ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjØ7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M‡ hjÔ7ubjÃ)�”}”(hhh]”hì)�”}”(hŒEStride at which each of the subslice masks for each slice are stored.”h]”hŒEStride at which each of the subslice masks for each slice are stored.”…”�”}”(hjó7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M† hjð7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÔ7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jï7h´M‡ hj³6ubj¬)�”}”(hŒA``eu_offset`` Offset in data[] at which the EU masks are stored. ”h]”(j²)�”}”(hŒ ``eu_offset``”h]”jC)�”}”(hj8h]”hŒ eu_offset”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MŽ hj8ubjÃ)�”}”(hhh]”hì)�”}”(hŒ2Offset in data[] at which the EU masks are stored.”h]”hŒ2Offset in data[] at which the EU masks are stored.”…”�”}”(hj-8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j)8h´MŽ hj*8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j)8h´MŽ hj³6ubj¬)�”}”(hŒQ``eu_stride`` Stride at which each of the EU masks for each subslice are stored. ”h]”(j²)�”}”(hŒ ``eu_stride``”h]”jC)�”}”(hjM8h]”hŒ eu_stride”…”�”}”(hjO8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjK8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M• hjG8ubjÃ)�”}”(hhh]”hì)�”}”(hŒBStride at which each of the EU masks for each subslice are stored.”h]”hŒBStride at which each of the EU masks for each subslice are stored.”…”�”}”(hjf8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jb8h´M• hjc8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjG8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jb8h´M• hj³6ubj¬)�”}”(hX```data`` Contains 3 pieces of information : - The slice mask with one bit per slice telling whether a slice is available. The availability of slice X can be queried with the following formula : .. code:: c (data[X / 8] >> (X % 8)) & 1 Starting with Xe_HP platforms, Intel hardware no longer has traditional slices so i915 will always report a single slice (hardcoded slicemask = 0x1) which contains all of the platform's subslices. I.e., the mask here does not reflect any of the newer hardware concepts such as "gslices" or "cslices" since userspace is capable of inferring those from the subslice mask. - The subslice mask for each slice with one bit per subslice telling whether a subslice is available. Starting with Gen12 we use the term "subslice" to refer to what the hardware documentation describes as a "dual-subslices." The availability of subslice Y in slice X can be queried with the following formula : .. code:: c (data[subslice_offset + X * subslice_stride + Y / 8] >> (Y % 8)) & 1 - The EU mask for each subslice in each slice, with one bit per EU telling whether an EU is available. The availability of EU Z in subslice Y in slice X can be queried with the following formula : .. code:: c (data[eu_offset + (X * max_subslices + Y) * eu_stride + Z / 8 ] >> (Z % 8)) & 1”h]”(j²)�”}”(hŒ``data``”h]”jC)�”}”(hj†8h]”hŒdata”…”�”}”(hjˆ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj„8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M¿ hj€8ubjÃ)�”}”(hhh]”(hì)�”}”(hŒ"Contains 3 pieces of information :”h]”hŒ"Contains 3 pieces of information :”…”�”}”(hjŸ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mœ hjœ8ubhâ)�”}”(hhh]”(hç)�”}”(hX6The slice mask with one bit per slice telling whether a slice is available. The availability of slice X can be queried with the following formula : .. code:: c (data[X / 8] >> (X % 8)) & 1 Starting with Xe_HP platforms, Intel hardware no longer has traditional slices so i915 will always report a single slice (hardcoded slicemask = 0x1) which contains all of the platform's subslices. I.e., the mask here does not reflect any of the newer hardware concepts such as "gslices" or "cslices" since userspace is capable of inferring those from the subslice mask. ”h]”(hì)�”}”(hŒ“The slice mask with one bit per slice telling whether a slice is available. The availability of slice X can be queried with the following formula :”h]”hŒ“The slice mask with one bit per slice telling whether a slice is available. The availability of slice X can be queried with the following formula :”…”�”}”(hjµ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mž hj±8ubj)�”}”(hŒ(data[X / 8] >> (X % 8)) & 1”h]”hŒ(data[X / 8] >> (X % 8)) & 1”…”�”}”hjÄ8sbah}”(h]”h ]”h"]”h$]”h&]”Œforce”‰Œhighlight_args”}”j­j®j¿jàuh1jh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M¢ hj±8ubhì)�”}”(hXrStarting with Xe_HP platforms, Intel hardware no longer has traditional slices so i915 will always report a single slice (hardcoded slicemask = 0x1) which contains all of the platform's subslices. I.e., the mask here does not reflect any of the newer hardware concepts such as "gslices" or "cslices" since userspace is capable of inferring those from the subslice mask.”h]”hX|Starting with Xe_HP platforms, Intel hardware no longer has traditional slices so i915 will always report a single slice (hardcoded slicemask = 0x1) which contains all of the platform’s subslices. I.e., the mask here does not reflect any of the newer hardware concepts such as “gslicesâ€� or “cslicesâ€� since userspace is capable of inferring those from the subslice mask.”…”�”}”(hjÖ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M¦ hj±8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hæhj®8ubhç)�”}”(hXŽThe subslice mask for each slice with one bit per subslice telling whether a subslice is available. Starting with Gen12 we use the term "subslice" to refer to what the hardware documentation describes as a "dual-subslices." The availability of subslice Y in slice X can be queried with the following formula : .. code:: c (data[subslice_offset + X * subslice_stride + Y / 8] >> (Y % 8)) & 1 ”h]”(hì)�”}”(hX7The subslice mask for each slice with one bit per subslice telling whether a subslice is available. Starting with Gen12 we use the term "subslice" to refer to what the hardware documentation describes as a "dual-subslices." The availability of subslice Y in slice X can be queried with the following formula :”h]”hX?The subslice mask for each slice with one bit per subslice telling whether a subslice is available. Starting with Gen12 we use the term “subsliceâ€� to refer to what the hardware documentation describes as a “dual-subslices.â€� The availability of subslice Y in slice X can be queried with the following formula :”…”�”}”(hjï8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M­ hjë8ubj)�”}”(hŒD(data[subslice_offset + X * subslice_stride + Y / 8] >> (Y % 8)) & 1”h]”hŒD(data[subslice_offset + X * subslice_stride + Y / 8] >> (Y % 8)) & 1”…”�”}”hjþ8sbah}”(h]”h ]”h"]”h$]”h&]”Œforce”‰Œhighlight_args”}”j­j®j¿jàuh1jh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M³ hjë8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hæhj®8ubhç)�”}”(hX9The EU mask for each subslice in each slice, with one bit per EU telling whether an EU is available. The availability of EU Z in subslice Y in slice X can be queried with the following formula : .. code:: c (data[eu_offset + (X * max_subslices + Y) * eu_stride + Z / 8 ] >> (Z % 8)) & 1”h]”(hì)�”}”(hŒÂThe EU mask for each subslice in each slice, with one bit per EU telling whether an EU is available. The availability of EU Z in subslice Y in slice X can be queried with the following formula :”h]”hŒÂThe EU mask for each subslice in each slice, with one bit per EU telling whether an EU is available. The availability of EU Z in subslice Y in slice X can be queried with the following formula :”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M· hj9ubj)�”}”(hŒ\(data[eu_offset + (X * max_subslices + Y) * eu_stride + Z / 8 ] >> (Z % 8)) & 1”h]”hŒ\(data[eu_offset + (X * max_subslices + Y) * eu_stride + Z / 8 ] >> (Z % 8)) & 1”…”�”}”hj)9sbah}”(h]”h ]”h"]”h$]”h&]”Œforce”‰Œhighlight_args”}”j­j®j¿jàuh1jh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M» hj9ubeh}”(h]”h •]”h"]”h$]”h&]”uh1hæhj®8ubeh}”(h]”h ]”h"]”h$]”h&]”jÀ jÁ uh1háh³jÃ8h´Mž hjœ8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj€8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j›8h´M¿ hj³6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjk6ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhjih²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjb9h]”hŒ Description”…”�”}”(hjd9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj`9ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mà hjih²hubhì)�”}”(hŒSDescribes slice/subslice/EU information queried by ``DRM_I915_QUERY_TOPOLOGY_INFO``”h]”(hŒ3Describes slice/subslice/EU information queried by ”…”�”}”(hjx9h²hh³Nh´NubjC)�”}”(hŒ ``DRM_I915_QUERY_TOPOLOGY_INFO``”h]”hŒDRM_I915_QUERY_TOPOLOGY_INFO”…”�”}”(hj€9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjx9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M[ hjih²hubj{)�”}”(hŒ.. _Engine Discovery uAPI:”h]”h}”(h]”h ]”h"]”h$]”h&]”hÊj!uh1jzh´Mˆhjih²hh³NŒ referenced”Kubhì)�”}”(hŒ**Engine Discovery uAPI**”h]”jŒ)�”}”(hj¢9h]”hŒEngine Discovery uAPI”…”�”}”(hj¤9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj 9ubah}”(h]”j!ah ]”h"]”Œengine discovery uapi”ah$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Ma hjih²hj¢}”jµ9j•9sj¤}”j!j•9sjŸ9Kubhì)�”}”(hŒòEngine discovery uAPI is a way of enumerating physical engines present in a GPU associated with an open i915 DRM file descriptor. This supersedes the old way of using `DRM_IOCTL_I915_GETPARAM` and engine identifiers like `I915_PARAM_HAS_BLT`.”h]”(hŒ§Engine discovery uAPI is a way of enumerating physical engines present in a GPU associated with an open i915 DRM file descriptor. This supersedes the old way of using ”…”�”}”(hj»9h²hh³Nh´Nubj )�”}”(hŒ`DRM_IOCTL_I915_GETPARAM`”h]”hŒDRM_IOCTL_I915_GETPARAM”…”�”}”(hjÃ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj»9ubhŒ and engine identifiers like ”…”�”}”(hj»9h²hh³Nh´Nubj )�”}”(hŒ`I915_PARAM_HAS_BLT`”h]”hŒI915_PARAM_HAS_BLT”…”�”}”(hjÕ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj»9ubhŒ.”…”�”}”(hj»9h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MÇ hjih²hubhì)�”}”(hŒßThe need for this interface came starting with Icelake and newer GPUs, which started to establish a pattern of having multiple engines of a same class, where not all instances were always completely functionally equivalent.”h]”hŒßThe need for this interface came starting with Icelake and newer GPUs, which started to establish a pattern of having multiple engines of a same class, where not all instances were always completely functionally equivalent.”…”�”}”(hjî9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MÌ hjih²hubhì)�”}”(hŒqEntry point for this uapi is `DRM_IOCTL_I915_QUERY` with the `DRM_I915_QUERY_ENGINE_INFO` as the queried item id.”h]”(hŒEntry point for this uapi is ”…”�”}”(hjý9h²hh³Nh´Nubj )�”}”(hŒ`DRM_IOCTL_I915_QUERY`”h]”hŒDRM_IOCTL_I915_QUERY”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjý9ubhŒ with the ”…”�”}”(hjý9h²hh³Nh´Nubj )�”}”(hŒ`DRM_I915_QUERY_ENGINE_INFO`”h]”hŒDRM_I915_QUERY_ENGINE_INFO”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjý9ubhŒ as the queried item id.”…”�”}”(hjý9h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MÐ hjih²hubhì)�”}”(hŒ(Example for getting the list of engines:”h]”hŒ(Example for getting the list of engines:”…”�”}”(hj0:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MÓ hjih²hubj)�”}”(hXÿstruct drm_i915_query_engine_info *info; struct drm_i915_query_item item = { .query_id = DRM_I915_QUERY_ENGINE_INFO; }; struct drm_i915_query query = { .num_items = 1, .items_ptr = (uintptr_t)&item, }; int err, i; // First query the size of the blob we need, this needs to be large // enough to hold our array of engines. The kernel will fill out the // item.length for us, which is the number of bytes we need. // // Alternatively a large buffer can be allocated straightaway enabling // querying in one pass, in which case item.length should contain the // length of the provided buffer. err = ioctl(fd, DRM_IOCTL_I915_QUERY, &query); if (err) ... info = calloc(1, item.length); // Now that we allocated the required number of bytes, we call the ioctl // again, this time with the data_ptr pointing to our newly allocated // blob, which the kernel can then populate with info on all engines. item.data_ptr = (uintptr_t)&info; err = ioctl(fd, DRM_IOCTL_I915_QUERY, &query); if (err) ... // We can now access each engine in the array for (i = 0; i < info->num_engines; i++) { struct drm_i915_engine_info einfo = info->engines[i]; u16 class = einfo.engine.class; u16 instance = einfo.engine.instance; .... } free(info);”h]”hXÿstruct drm_i915_query_engine_info *info; struct drm_i915_query_item item = { .query_id = DRM_I915_QUERY_ENGINE_INFO; }; struct drm_i915_query query = { .num_items = 1, .items_ptr = (uintptr_t)&item, }; int err, i; // First query the size of the blob we need, this needs to be large // enough to hold our array of engines. The kernel will fill out the // item.length for us, which is the number of bytes we need. // // Alternatively a large buffer can be allocated straightaway enabling // querying in one pass, in which case item.length should contain the // length of the provided buffer. err = ioctl(fd, DRM_IOCTL_I915_QUERY, &query); if (err) ... info = calloc(1, item.length); // Now that we allocated the required number of bytes, we call the ioctl // again, this time with the data_ptr pointing to our newly allocated // blob, which the kernel can then populate with info on all engines. item.data_ptr = (uintptr_t)&info; err = ioctl(fd, DRM_IOCTL_I915_QUERY, &query); if (err) ... // We can now access each engine in the array for (i = 0; i < info->num_engines; i++) { struct drm_i915_engine_info einfo = info->engines[i]; u16 class = einfo.engine.class; u16 instance = einfo.engine.instance; .... } free(info);”…”�”}”hj?:sbah}”(h]”h ]”h"]”h$]”h&]”j­j®j¾‰j¿jÀjÁ}”uh1jh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MÕ hjih²hubhì)�”}”(hŒÇEach of the enumerated engines, apart from being defined by its class and instance (see `struct i915_engine_class_instance`), also can have flags and capabilities defined as documented in i915_drm.h.”h]”(hŒXEach of the enumerated engines, apart from being defined by its class and instance (see ”…”�”}”(hjO:h²hh³Nh´Nubj )�”}”(hŒ#`struct i915_engine_class_instance`”h]”hŒ!struct i915_engine_class_instance”…”�”}”(hjW:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjO:ubhŒL), also can have flags and capabilities defined as documented in i915_drm.h.”…”�”}”(hjO:h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mþ hjih²hubhì)�”}”(hŒ{For instance video engines which support HEVC encoding will have the `I915_VIDEO_CLASS_CAPABILITY_HEVC` capability bit set.”h]”(hŒEFor instance video engines which support HEVC encoding will have the ”…”�”}”(hjp:h²hh³Nh´Nubj )�”}”(hŒ"`I915_VIDEO_CLASS_CAPABILITY_HEVC`”h]”hŒ I915_VIDEO_CLASS_CAPABILITY_HEVC”…”�”}”(hjx:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjp:ubhŒ capability bit set.”…”�”}”(hjp:h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M hjih²hubhì)�”}”(hŒ«Engine discovery only fully comes to its own when combined with the new way of addressing engines when submitting batch buffers using contexts with engine maps configured.”h]”hŒ«Engine discovery only fully comes to its own when combined with the new way of addressing engines when submitting batch buffers using contexts with engine maps configured.”…”�”}”(hj‘:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M hjih²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_i915_engine_info (C struct)”Œc.drm_i915_engine_info”hNt”auh1jJhjih²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_i915_engine_info”h]”jg)�”}”(hŒstruct drm_i915_engine_info”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj¹:h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjµ:h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”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Œdrm_i915_engine_info”h]”j–)�”}”(hj³:h]”hŒdrm_i915_engine_info”…”�”}”(hjÙ:h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjÕ:ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjµ:h²hh³jÆ:h´M ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”h}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj®:h²hh³jÆ:h´M ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj;jçj;jè‰jé‰jê‰uh1j[h²hhjih³Nh´Nubjì)�”}”(hXÊ**Definition**:: struct drm_i915_engine_info { struct i915_engine_class_instance engine; __u32 rsvd0; __u64 flags; #define I915_ENGINE_INFO_HAS_LOGICAL_INSTANCE (1 << 0); __u64 capabilities; #define I915_VIDEO_CLASS_CAPABILITY_HEVC (1 << 0); #define I915_VIDEO_AND_ENHANCE_CLASS_CAPABILITY_SFC (1 << 1); __u16 logical_instance; __u16 rsvd1[3]; __u64 rsvd2[3]; }; **Members** ``engine`` Engine class and instance. ``rsvd0`` Reserved field. ``flags`` Engine flags. ``capabilities`` Capabilities of this engine. ``logical_instance`` Logical instance of engine ``rsvd1`` Reserved fields. ``rsvd2`` Reserved fields.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj ;ubhŒ:”…”�”}”(hj ;h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M hj;ubj)�”}”(hX’struct drm_i915_engine_info { struct i915_engine_class_instance engine; __u32 rsvd0; __u64 flags; #define I915_ENGINE_INFO_HAS_LOGICAL_INSTANCE (1 << 0); __u64 capabilities; #define I915_VIDEO_CLASS_CAPABILITY_HEVC (1 << 0); #define I915_VIDEO_AND_ENHANCE_CLASS_CAPABILITY_SFC (1 << 1); __u16 logical_instance; __u16 rsvd1[3]; __u64 rsvd2[3]; };”h]”hX’struct drm_i915_engine_info { struct i915_engine_class_instance engine; __u32 rsvd0; __u64 flags; #define I915_ENGINE_INFO_HAS_LOGICAL_INSTANCE (1 << 0); __u64 capabilities; #define I915_VIDEO_CLASS_CAPABILITY_HEVC (1 << 0); #define I915_VIDEO_AND_ENHANCE_CLASS_CAPABILITY_SFC (1 << 1); __u16 logical_instance; __u16 rsvd1[3]; __u64 rsvd2[3]; };”…”�”}”hj);sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M hj;ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj:;h]”hŒMembers”…”�”}”(hj<;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj8;ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M hj;ubj§)�”}”(hhh]”(j¬)�”}”(hŒ&``engine`` Engine class and instance. ”h]”(j²)�”}”(hŒ ``engine``”h]”jC)�”}”(hjY;h]”hŒengine”…”�”}”(hj[;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjW;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M hjS;ubjÃ)�”}”(hhh]”hì)�”}”(hŒEngine class and instance.”h]”hŒEngine class and instance.”…”�”}”(hjr;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jn;h´M hjo;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjS;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jn;h´M hjP;ubj¬)�”}”(hŒ``rsvd0`` Reserved field. ”h]”(j²)�”}”(hŒ ``rsvd0``”h]”jC)�”}”(hj’;h]”hŒrsvd0”…”�”}”(hj”;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj�;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M hjŒ;ubjÃ)�”}”(hhh]”hì)�”}”(hŒReserved field.”h]”hŒReserved field.”…”�”}”(hj«;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j§;h´M hj¨;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjŒ;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j§;h´M hjP;ubj¬)�”}”(hŒ``flags`` Engine flags. ”h]”(j²)�”}”(hŒ ``flags``”h]”jC)�”}”(hjË;h]”hŒflags”…”�”}”(hjÍ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÉ;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M hjÅ;ubjÃ)�”}”(hhh]”hì)�”}”(hŒ Engine flags.”h]”hŒ Engine flags.”…”�”}”(hjä;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jà;h´M hjá;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÅ;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jà;h´M hjP;ubj¬)�”}”(hŒ.``capabilities`` Capabilities of this engine. ”h]”(j²)�”}”(hŒ``capabilities``”h]”jC)�”}”(hj<h]”hŒ capabilities”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M hjþ;ubjÃ)�”}”(hhh]”hì)�”}”(hŒCapabilities of this engine.”h]”hŒCapabilities of this engine.”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j<h´M hj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjþ;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j<h´M hjP;ubj¬)�”}”(hŒ0``logical_instance`` Logical instance of engine ”h]”(j²)�”}”(hŒ``logical_instance``”h]”jC)�”}”(hj=<h]”hŒlogical_instance”…”�”}”(hj?<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj;<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M" hj7<ubjÃ)�”}”(hhh]”hì)�”}”(hŒLogical instance of engine”h]”hŒLogical instance of engine”…”�”}”(hjV<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jR<h´M" hjS<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj7<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jR<h´M" hjP;ubj¬)�”}”(hŒ``rsvd1`` Reserved fields. ”h]”(j²)�”}”(hŒ ``rsvd1``”h]”jC)�”}”(hjv<h]”hŒrsvd1”…”�”}”(hjx<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjt<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M% hjp<ubjÃ)�”}”(hhh]”hì)�”}”(hŒReserved fields.”h]”hŒReserved fields.”…”�”}”(hj�<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j‹<h´M% hjŒ<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjp<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j‹<h´M% hjP;ubj¬)�”}”(hŒ``rsvd2`` Reserved fields.”h]”(j²)�”}”(hŒ ``rsvd2``”h]”jC)�”}”(hj¯<h]”hŒrsvd2”…”�”}”(hj±<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj­<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M& hj©<ubjÃ)�”}”(hhh]”hì)�”}”(hŒReserved fields.”h]”hŒReserved fields.”…”�”}”(hjÈ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M' hjÅ<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj©<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÄ<h´M& hjP;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj;ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhjih²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjò<h]”hŒ Description”…”�”}”(hjô<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjð<ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M* hjih²hubhì)�”}”(hŒADescribes one engine and its capabilities as known to the driver.”h]”hŒADescribes one engine and its capabilities as known to the driver.”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M hjih²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ%drm_i915_query_engine_info (C struct)”Œc.drm_i915_query_engine_info”hNt”auh1jJhjih²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_i915_query_engine_info”h]”jg)�”}”(hŒ!struct drm_i915_query_engine_info”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj0=h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj,=h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”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Œdrm_i915_query_engine_info”h]”j–)�”}”(hj*=h]”hŒdrm_i915_query_engine_info”…”�”}”(hjP=h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjL=ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj,=h²hh³j==h´M ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”h}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj%=h²hh³j==h´M ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj{=jçj{=jè‰jé‰jê‰uh1j[h²hhjih³Nh´Nubjì)�”}”(hX;**Definition**:: struct drm_i915_query_engine_info { __u32 num_engines; __u32 rsvd[3]; struct drm_i915_engine_info engines[]; }; **Members** ``num_engines`` Number of struct drm_i915_engine_info structs following. ``rsvd`` MBZ ``engines`` Marker for drm_i915_engine_info structures.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj‡=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjƒ=ubhŒ:”…”�”}”(hjƒ=h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M/ hj=ubj)�”}”(hŒ{struct drm_i915_query_engine_info { __u32 num_engines; __u32 rsvd[3]; struct drm_i915_engine_info engines[]; };”h]”hŒ{struct drm_i915_query_engine_info { __u32 num_engines; __u32 rsvd[3]; struct drm_i915_engine_info engines[]; };”…”�”}”hj =sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M1 hj=ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj±=h]”hŒMembers”…”�”}”(hj³=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj¯=ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M7 hj=ubj§)�”}”(hhh]”(j¬)�”}”(hŒI``num_engines`` Number of struct drm_i915_engine_info structs following. ”h]”(j²)�”}”(hŒ``num_engines``”h]”jC)�”}”(hjÐ=h]”hŒ num_engines”…”�”}”(hjÒ=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÎ=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M2 hjÊ=ubjÃ)�”}”(hhh]”hì)�”}”(hŒ8Number of struct drm_i915_engine_info structs following.”h]”hŒ8Number of struct drm_i915_engine_info structs following.”…”�”}”(hjé=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jå=h´M2 hjæ=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÊ=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jå=h´M2 hjÇ=ubj¬)�”}”(hŒ ``rsvd`` MBZ ”h]”(j²)�”}”(hŒ``rsvd``”h]”jC)�”}”(hj >h]”hŒrsvd”…”�”}”(hj >h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M5 hj>ubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hj">h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j>h´M5 hj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j>h´M5 hjÇ=ubj¬)�”}”(hŒ7``engines`` Marker for drm_i915_engine_info structures.”h]”(j²)�”}”(hŒ ``engines``”h]”jC)�”}”(hjB>h]”hŒengines”…”�”}”(hjD>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj@>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M7 hj<>ubjÃ)�”}”(hhh]”hì)�”}”(hŒ+Marker for drm_i915_engine_info structures.”h]”hŒ+Marker for drm_i915_engine_info structures.”…”�”}”(hj[>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M8 hjX>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj<>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jW>h´M7 hjÇ=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj=ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhjih²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hj…>h]”hŒ Description”…”�”}”(hj‡>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjƒ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M; hjih²hubhì)�”}”(hŒ~Engine info query enumerates all engines known to the driver by filling in an array of struct drm_i915_engine_info structures.”h]”hŒ~Engine info query enumerates all engines known to the driver by filling in an array of struct drm_i915_engine_info structures.”…”�”}”(hj›>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M, hjih²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ%drm_i915_query_perf_config (C struct)”Œc.drm_i915_query_perf_config”hNt”auh1jJhjih²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_i915_query_perf_config”h]”jg)�”}”(hŒ!struct drm_i915_query_perf_config”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjÃ>h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj¿>h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M2 ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑ>h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hj¿>h²hh³jÐ>h´M2 ubj�)�”}”(hŒdrm_i915_query_perf_config”h]”j–)�”}”(hj½>h]”hŒdrm_i915_query_perf_config”…”�”}”(hjã>h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjß>ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj¿>h²hh³jÐ>h´M2 ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hj»>h²hh³jÐ>h´M2 ubah}”(h]”j¶>ah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jÐ>h´M2 hj¸>h²hubjÄ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj¸>h²hh³jÐ>h´M2 ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj?jçj?jè‰jé‰jê‰uh1j[h²hhjih³Nh´Nubjì)�”}”(hX**Definition**:: struct drm_i915_query_perf_config { union { __u64 n_configs; __u64 config; char uuid[36]; }; __u32 flags; __u8 data[]; }; **Members** ``{unnamed_union}`` anonymous ``n_configs`` When :c:type:`drm_i915_query_item.flags ` == ``DRM_I915_QUERY_PERF_CONFIG_LIST``, i915 sets this fields to the number of configurations available. ``config`` When :c:type:`drm_i915_query_item.flags ` == ``DRM_I915_QUERY_PERF_CONFIG_DATA_FOR_ID``, i915 will use the value in this field as configuration identifier to decide what data to write into config_ptr. ``uuid`` When :c:type:`drm_i915_query_item.flags ` == ``DRM_I915_QUERY_PERF_CONFIG_DATA_FOR_UUID``, i915 will use the value in this field as configuration identifier to decide what data to write into config_ptr. String formatted like "``08x-````04x-````04x-````04x-````012x``" ``flags`` Unused for now. Must be cleared to zero. ``data`` When :c:type:`drm_i915_query_item.flags ` == ``DRM_I915_QUERY_PERF_CONFIG_LIST``, i915 will write an array of __u64 of configuration identifiers. When :c:type:`drm_i915_query_item.flags ` == ``DRM_I915_QUERY_PERF_CONFIG_DATA``, i915 will write a struct drm_i915_perf_oa_config. If the following fields of struct drm_i915_perf_oa_config are not set to 0, i915 will write into the associated pointers the values of submitted when the configuration was created : - :c:type:`drm_i915_perf_oa_config.n_mux_regs ` - :c:type:`drm_i915_perf_oa_config.n_boolean_regs ` - :c:type:`drm_i915_perf_oa_config.n_flex_regs `”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj?ubhŒ:”…”�”}”(hj?h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M@ hj?ubj)�”}”(hŒ¡struct drm_i915_query_perf_config { union { __u64 n_configs; __u64 config; char uuid[36]; }; __u32 flags; __u8 data[]; };”h]”hŒ¡struct drm_i915_query_perf_config { union { __u64 n_configs; __u64 config; char uuid[36]; }; __u32 flags; __u8 data[]; };”…”�”}”hj3?sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MB hj?ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjD?h]”hŒMembers”…”�”}”(hjF?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjB?ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´ML hj?ubj§)�”}”(hhh]”(j¬)�”}”(hŒ``{unnamed_union}`` anonymous ”h]”(j²)�”}”(hŒ``{unnamed_union}``”h]”jC)�”}”(hjc?h]”hŒ{unnamed_union}”…”�”}”(hje?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhja?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Khj]?ubjÃ)�”}”(hhh]”hì)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hj|?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jx?h´Khjy?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj]?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jx?h´KhjZ?ubj¬)�”}”(hŒ¶``n_configs`` When :c:type:`drm_i915_query_item.flags ` == ``DRM_I915_QUERY_PERF_CONFIG_LIST``, i915 sets this fields to the number of configurations available. ”h]”(j²)�”}”(hŒ ``n_configs``”h]”jC)�”}”(hjœ?h]”hŒ n_configs”…”�”}”(hjž?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjš?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MG hj–?ubjÃ)�”}”(hhh]”hì)�”}”(hŒ§When :c:type:`drm_i915_query_item.flags ` == ``DRM_I915_QUERY_PERF_CONFIG_LIST``, i915 sets this fields to the number of configurations available.”h]”(hŒWhen ”…”�”}”(hjµ?h²hh³Nh´Nubh)�”}”(hŒ9:c:type:`drm_i915_query_item.flags `”h]”jC)�”}”(hj¿?h]”hŒdrm_i915_query_item.flags”…”�”}”(hjÁ?h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj½?ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒdrm_i915_query_item”uh1hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´ME hjµ?ubhŒ == ”…”�”}”(hjµ?h²hh³Nh´NubjC)�”}”(hŒ#``DRM_I915_QUERY_PERF_CONFIG_LIST``”h]”hŒDRM_I915_QUERY_PERF_CONFIG_LIST”…”�”}”(hjá?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjµ?ubhŒB, i915 sets this fields to the number of configurations available.”…”�”}”(hjµ?h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÜ?h´ME hj²?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj–?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j±?h´MG hjZ?ubj¬)�”}”(hŒé``config`` When :c:type:`drm_i915_query_item.flags ` == ``DRM_I915_QUERY_PERF_CONFIG_DATA_FOR_ID``, i915 will use the value in this field as configuration identifier to decide what data to write into config_ptr. ”h]”(j²)�”}”(hŒ ``config``”h]”jC)�”}”(hj @h]”hŒconfig”…”�”}”(hj @h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj @ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MQ hj@ubjÃ)�”}”(hhh]”hì)�”}”(hŒÝWhen :c:type:`drm_i915_query_item.flags ` == ``DRM_I915_QUERY_PERF_CONFIG_DATA_FOR_ID``, i915 will use the value in this field as configuration identifier to decide what data to write into config_ptr.”h]”(hŒWhen ”…”�”}”(hj$@h²hh³Nh´Nubh)�”}”(hŒ9:c:type:`drm_i915_query_item.flags `”h]”jC)�”}”(hj.@h]”hŒdrm_i915_query_item.flags”…”�”}”(hj0@h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj,@ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒdrm_i915_query_item”uh1hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MN hj$@ubhŒ == ”…”�”}”(hj$@h²hh³Nh´NubjC)�”}”(hŒ*``DRM_I915_QUERY_PERF_CONFIG_DATA_FOR_ID``”h]”hŒ&DRM_I915_QUERY_PERF_CONFIG_DATA_FOR_ID”…”�”}”(hjP@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj$@ubhŒq, i915 will use the value in this field as configuration identifier to decide what data to write into config_ptr.”…”�”}”(hj$@h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jK@h´MN hj!@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j @h´MQ hjZ?ubj¬)�”}”(hX+``uuid`` When :c:type:`drm_i915_query_item.flags ` == ``DRM_I915_QUERY_PERF_CONFIG_DATA_FOR_UUID``, i915 will use the value in this field as configuration identifier to decide what data to write into config_ptr. String formatted like "``08x-````04x-````04x-````04x-````012x``" ”h]”(j²)�”}”(hŒ``uuid``”h]”jC)�”}”(hjz@h]”hŒuuid”…”�”}”(hj|@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjx@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M] hjt@ubjÃ)�”}”(hhh]”(hì)�”}”(hŒßWhen :c:type:`drm_i915_query_item.flags ` == ``DRM_I915_QUERY_PERF_CONFIG_DATA_FOR_UUID``, i915 will use the value in this field as configuration identifier to decide what data to write into config_ptr.”h]”(hŒWhen ”…”�”}”(hj“@h²hh³Nh´Nubh)�”}”(hŒ9:c:type:`drm_i915_query_item.flags `”h]”jC)�”}”(hj�@h]”hŒdrm_i915_query_item.flags”…”�”}”(hjŸ@h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj›@ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒdrm_i915_query_item”uh1hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MX hj“@ubhŒ == ”…”�”}”(hj“@h²hh³Nh´NubjC)�”}”(hŒ,``DRM_I915_QUERY_PERF_CONFIG_DATA_FOR_UUID``”h]”hŒ(DRM_I915_QUERY_PERF_CONFIG_DATA_FOR_UUID”…”�”}”(hj¿@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj“@ubhŒq, i915 will use the value in this field as configuration identifier to decide what data to write into config_ptr.”…”�”}”(hj“@h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jº@h´MX hj�@ubhì)�”}”(hŒ@String formatted like "``08x-````04x-````04x-````04x-````012x``"”h]”(hŒString formatted like “”…”�”}”(hj×@h²hh³Nh´NubjC)�”}”(hŒ(``08x-````04x-````04x-````04x-````012x``”h]”hŒ$08x-````04x-````04x-````04x-````012x”…”�”}”(hjß@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj×@ubhŒâ€�”…”�”}”(hj×@h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j�@h´M] hj�@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjt@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j�@h´M] hjZ?ubj¬)�”}”(hŒ3``flags`` Unused for now. Must be cleared to zero. ”h]”(j²)�”}”(hŒ ``flags``”h]”jC)�”}”(hj Ah]”hŒflags”…”�”}”(hj Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjAubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Me hjAubjÃ)�”}”(hhh]”hì)�”}”(hŒ(Unused for now. Must be cleared to zero.”h]”hŒ(Unused for now. Must be cleared to zero.”…”�”}”(hj"Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jAh´Me hjAubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jAh´Me hjZ?ubj¬)�”}”(hXã``data`` When :c:type:`drm_i915_query_item.flags ` == ``DRM_I915_QUERY_PERF_CONFIG_LIST``, i915 will write an array of __u64 of configuration identifiers. When :c:type:`drm_i915_query_item.flags ` == ``DRM_I915_QUERY_PERF_CONFIG_DATA``, i915 will write a struct drm_i915_perf_oa_config. If the following fields of struct drm_i915_perf_oa_config are not set to 0, i915 will write into the associated pointers the values of submitted when the configuration was created : - :c:type:`drm_i915_perf_oa_config.n_mux_regs ` - :c:type:`drm_i915_perf_oa_config.n_boolean_regs ` - :c:type:`drm_i915_perf_oa_config.n_flex_regs `”h]”(j²)�”}”(hŒ``data``”h]”jC)�”}”(hjBAh]”hŒdata”…”�”}”(hjDAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj@Aubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mv hj` == ``DRM_I915_QUERY_PERF_CONFIG_LIST``, i915 will write an array of __u64 of configuration identifiers.”h]”(hŒWhen ”…”�”}”(hj[Ah²hh³Nh´Nubh)�”}”(hŒ9:c:type:`drm_i915_query_item.flags `”h]”jC)�”}”(hjeAh]”hŒdrm_i915_query_item.flags”…”�”}”(hjgAh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjcAubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒdrm_i915_query_item”uh1hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Ml hj[AubhŒ == ”…”�”}”(hj[Ah²hh³Nh´NubjC)�”}”(hŒ#``DRM_I915_QUERY_PERF_CONFIG_LIST``”h]”hŒDRM_I915_QUERY_PERF_CONFIG_LIST”…”�”}”(hj‡Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj[AubhŒA, i915 will write an array of __u64 of configuration identifiers.”…”�”}”(hj[Ah²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j‚Ah´Ml hjXAubhì)�”}”(hXNWhen :c:type:`drm_i915_query_item.flags ` == ``DRM_I915_QUERY_PERF_CONFIG_DATA``, i915 will write a struct drm_i915_perf_oa_config. If the following fields of struct drm_i915_perf_oa_config are not set to 0, i915 will write into the associated pointers the values of submitted when the configuration was created :”h]”(hŒWhen ”…”�”}”(hjŸAh²hh³Nh´Nubh)�”}”(hŒ9:c:type:`drm_i915_query_item.flags `”h]”jC)�”}”(hj©Ah]”hŒdrm_i915_query_item.flags”…”�”}”(hj«Ah²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj§Aubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒdrm_i915_query_item”uh1hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mo hjŸAubhŒ == ”…”�”}”(hjŸAh²hh³Nh´NubjC)�”}”(hŒ#``DRM_I915_QUERY_PERF_CONFIG_DATA``”h]”hŒDRM_I915_QUERY_PERF_CONFIG_DATA”…”�”}”(hjËAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjŸAubhŒé, i915 will write a struct drm_i915_perf_oa_config. If the following fields of struct drm_i915_perf_oa_config are not set to 0, i915 will write into the associated pointers the values of submitted when the configuration was created :”…”�”}”(hjŸAh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÆAh´Mo hjXAubjK)�”}”(hŒß- :c:type:`drm_i915_perf_oa_config.n_mux_regs ` - :c:type:`drm_i915_perf_oa_config.n_boolean_regs ` - :c:type:`drm_i915_perf_oa_config.n_flex_regs `”h]”hâ)�”}”(hhh]”(hç)�”}”(hŒF:c:type:`drm_i915_perf_oa_config.n_mux_regs `”h]”hì)�”}”(hjìAh]”h)�”}”(hjìAh]”jC)�”}”(hjìAh]”hŒ"drm_i915_perf_oa_config.n_mux_regs”…”�”}”(hjôAh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjñAubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒdrm_i915_perf_oa_config”uh1hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mu hjîAubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jBh´Mu hjêAubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjçAubhç)�”}”(hŒJ:c:type:`drm_i915_perf_oa_config.n_boolean_regs `”h]”hì)�”}”(hjBh]”h)�”}”(hjBh]”jC)�”}”(hjBh]”hŒ&drm_i915_perf_oa_config.n_boolean_regs”…”�”}”(hj&Bh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj#Bubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒdrm_i915_perf_oa_config”uh1hh³jWAh´Mv hj Bubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jWAh´Mv hjBubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjçAubhç)�”}”(hŒG:c:type:`drm_i915_perf_oa_config.n_flex_regs `”h]”hì)�”}”(hjOBh]”h)�”}”(hjOBh]”jC)�”}”(hjOBh]”hŒ#drm_i915_perf_oa_config.n_flex_regs”…”�”}”(hjWBh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjTBubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒdrm_i915_perf_oa_config”uh1hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mw hjQBubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jrBh´Mw hjMBubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjçAubeh}”(h]”h ]”h"]”h$]”h&]”jÀ jÁ uh1háh³jBh´Mu hjãAubah}”(h]”h ]”h"]”h$]”h&]”uh1jJh³jBh´Mu hjXAubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjDh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj:Dubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjDh²hh³j+Dh´M� ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjDh²hh³j+Dh´M� ubah}”(h]”jDah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³j+Dh´M� hjDh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ!Identify particular memory region”h]”hŒ!Identify particular memory region”…”�”}”(hj`Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mˆ hj]Dh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjDh²hh³j+Dh´M� ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjxDjçjxDjè‰jé‰jê‰uh1j[h²hhjih³Nh´Nubjì)�”}”(hŒå**Definition**:: struct drm_i915_gem_memory_class_instance { __u16 memory_class; __u16 memory_instance; }; **Members** ``memory_class`` See enum drm_i915_gem_memory_class ``memory_instance`` Which instance”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj„Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj€DubhŒ:”…”�”}”(hj€Dh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MŒ hj|Dubj)�”}”(hŒastruct drm_i915_gem_memory_class_instance { __u16 memory_class; __u16 memory_instance; };”h]”hŒastruct drm_i915_gem_memory_class_instance { __u16 memory_class; __u16 memory_instance; };”…”�”}”hj�Dsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MŽ hj|Dubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj®Dh]”hŒMembers”…”�”}”(hj°Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj¬Dubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M“ hj|Dubj§)�”}”(hhh]”(j¬)�”}”(hŒ4``memory_class`` See enum drm_i915_gem_memory_class ”h]”(j²)�”}”(hŒ``memory_class``”h]”jC)�”}”(hjÍDh]”hŒ memory_class”…”�”}”(hjÏDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjËDubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MŒ hjÇDubjÃ)�”}”(hhh]”hì)�”}”(hŒ"See enum drm_i915_gem_memory_class”h]”hŒ"See enum drm_i915_gem_memory_class”…”�”}”(hjæDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jâDh´MŒ hjãDubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÇDubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jâDh´MŒ hjÄDubj¬)�”}”(hŒ"``memory_instance`` Which instance”h]”(j²)�”}”(hŒ``memory_instance``”h]”jC)�”}”(hjEh]”hŒmemory_instance”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjEubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MŽ hjEubjÃ)�”}”(hhh]”hì)�”}”(hŒWhich instance”h]”hŒWhich instance”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M� hjEubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjEubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jEh´MŽ hjÄDubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj|Dubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhjih²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ&drm_i915_memory_region_info (C struct)”Œc.drm_i915_memory_region_info”hNt”auh1jJhjih²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_i915_memory_region_info”h]”jg)�”}”(hŒ"struct drm_i915_memory_region_info”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj`Eh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj\Eh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M• ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnEh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hj\Eh²hh³jmEh´M• ubj�)�”}”(hŒdrm_i915_memory_region_info”h]”j–)�”}”(hjZEh]”hŒdrm_i915_memory_region_info”…”�”}”(hj€Eh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj|Eubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj\Eh²hh³jmEh´M• ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjXEh²hh³jmEh´M• ubah}”(h]”jSEah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jmEh´M• hjUEh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ,Describes one region as known to the driver.”h]”hŒ,Describes one region as known to the driver.”…”�”}”(hj¢Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M“ hjŸEh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjUEh²hh³jmEh´M• ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjºEjçjºEjè‰jé‰jê‰uh1j[h²hhjih³Nh´Nubjì)�”}”(hXÝ **Definition**:: struct drm_i915_memory_region_info { struct drm_i915_gem_memory_class_instance region; __u32 rsvd0; __u64 probed_size; __u64 unallocated_size; union { __u64 rsvd1[8]; struct { __u64 probed_cpu_visible_size; __u64 unallocated_cpu_visible_size; }; }; }; **Members** ``region`` The class:instance pair encoding ``rsvd0`` MBZ ``probed_size`` Memory probed by the driver Note that it should not be possible to ever encounter a zero value here, also note that no current region type will ever return -1 here. Although for future region types, this might be a possibility. The same applies to the other size fields. ``unallocated_size`` Estimate of memory remaining Requires CAP_PERFMON or CAP_SYS_ADMIN to get reliable accounting. Without this (or if this is an older kernel) the value here will always equal the **probed_size**. Note this is only currently tracked for I915_MEMORY_CLASS_DEVICE regions (for other types the value here will always equal the **probed_size**). ``{unnamed_union}`` anonymous ``rsvd1`` MBZ ``{unnamed_struct}`` anonymous ``probed_cpu_visible_size`` Memory probed by the driver that is CPU accessible. This will be always be <= **probed_size**, and the remainder (if there is any) will not be CPU accessible. On systems without small BAR, the **probed_size** will always equal the **probed_cpu_visible_size**, since all of it will be CPU accessible. Note this is only tracked for I915_MEMORY_CLASS_DEVICE regions (for other types the value here will always equal the **probed_size**). Note that if the value returned here is zero, then this must be an old kernel which lacks the relevant small-bar uAPI support (including I915_GEM_CREATE_EXT_FLAG_NEEDS_CPU_ACCESS), but on such systems we should never actually end up with a small BAR configuration, assuming we are able to load the kernel module. Hence it should be safe to treat this the same as when **probed_cpu_visible_size** == **probed_size**. ``unallocated_cpu_visible_size`` Estimate of CPU visible memory remaining. Note this is only tracked for I915_MEMORY_CLASS_DEVICE regions (for other types the value here will always equal the **probed_cpu_visible_size**). Requires CAP_PERFMON or CAP_SYS_ADMIN to get reliable accounting. Without this the value here will always equal the **probed_cpu_visible_size**. Note this is only currently tracked for I915_MEMORY_CLASS_DEVICE regions (for other types the value here will also always equal the **probed_cpu_visible_size**). If this is an older kernel the value here will be zero, see also **probed_cpu_visible_size**.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjÆEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÂEubhŒ:”…”�”}”(hjÂEh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M— hj¾Eubj)�”}”(hXCstruct drm_i915_memory_region_info { struct drm_i915_gem_memory_class_instance region; __u32 rsvd0; __u64 probed_size; __u64 unallocated_size; union { __u64 rsvd1[8]; struct { __u64 probed_cpu_visible_size; __u64 unallocated_cpu_visible_size; }; }; };”h]”hXCstruct drm_i915_memory_region_info { struct drm_i915_gem_memory_class_instance region; __u32 rsvd0; __u64 probed_size; __u64 unallocated_size; union { __u64 rsvd1[8]; struct { __u64 probed_cpu_visible_size; __u64 unallocated_cpu_visible_size; }; }; };”…”�”}”hjßEsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M™ hj¾Eubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjðEh]”hŒMembers”…”�”}”(hjòEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjîEubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M§ hj¾Eubj§)�”}”(hhh]”(j¬)�”}”(hŒ,``region`` The class:instance pair encoding ”h]”(j²)�”}”(hŒ ``region``”h]”jC)�”}”(hjFh]”hŒregion”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj Fubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mœ hj FubjÃ)�”}”(hhh]”hì)�”}”(hŒ The class:instance pair encoding”h]”hŒ The class:instance pair encoding”…”�”}”(hj(Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j$Fh´Mœ hj%Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj Fubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j$Fh´Mœ hjFubj¬)�”}”(hŒ``rsvd0`` MBZ ”h]”(j²)�”}”(hŒ ``rsvd0``”h]”jC)�”}”(hjHFh]”hŒrsvd0”…”�”}”(hjJFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjFFubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MŸ hjBFubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hjaFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j]Fh´MŸ hj^Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjBFubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j]Fh´MŸ hjFubj¬)�”}”(hX ``probed_size`` Memory probed by the driver Note that it should not be possible to ever encounter a zero value here, also note that no current region type will ever return -1 here. Although for future region types, this might be a possibility. The same applies to the other size fields. ”h]”(j²)�”}”(hŒ``probed_size``”h]”jC)�”}”(hj�Fh]”hŒ probed_size”…”�”}”(hjƒFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjFubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M¨ hj{FubjÃ)�”}”(hhh]”(hì)�”}”(hŒMemory probed by the driver”h]”hŒMemory probed by the driver”…”�”}”(hjšFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M£ hj—Fubhì)�”}”(hŒòNote that it should not be possible to ever encounter a zero value here, also note that no current region type will ever return -1 here. Although for future region types, this might be a possibility. The same applies to the other size fields.”h]”hŒòNote that it should not be possible to ever encounter a zero value here, also note that no current region type will ever return -1 here. Although for future region types, this might be a possibility. The same applies to the other size fields.”…”�”}”(hj©Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M¥ hj—Fubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj{Fubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j–Fh´M¨ hjFubj¬)�”}”(hXi``unallocated_size`` Estimate of memory remaining Requires CAP_PERFMON or CAP_SYS_ADMIN to get reliable accounting. Without this (or if this is an older kernel) the value here will always equal the **probed_size**. Note this is only currently tracked for I915_MEMORY_CLASS_DEVICE regions (for other types the value here will always equal the **probed_size**). ”h]”(j²)�”}”(hŒ``unallocated_size``”h]”jC)�”}”(hjÊFh]”hŒunallocated_size”…”�”}”(hjÌFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÈFubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M³ hjÄFubjÃ)�”}”(hhh]”(hì)�”}”(hŒEstimate of memory remaining”h]”hŒEstimate of memory remaining”…”�”}”(hjãFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M­ hjàFubhì)�”}”(hX5Requires CAP_PERFMON or CAP_SYS_ADMIN to get reliable accounting. Without this (or if this is an older kernel) the value here will always equal the **probed_size**. Note this is only currently tracked for I915_MEMORY_CLASS_DEVICE regions (for other types the value here will always equal the **probed_size**).”h]”(hŒ”Requires CAP_PERFMON or CAP_SYS_ADMIN to get reliable accounting. Without this (or if this is an older kernel) the value here will always equal the ”…”�”}”(hjòFh²hh³Nh´NubjŒ)�”}”(hŒ**probed_size**”h]”hŒ probed_size”…”�”}”(hjúFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjòFubhŒ�. Note this is only currently tracked for I915_MEMORY_CLASS_DEVICE regions (for other types the value here will always equal the ”…”�”}”(hjòFh²hh³Nh´NubjŒ)�”}”(hŒ**probed_size**”h]”hŒ probed_size”…”�”}”(hj Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjòFubhŒ).”…”�”}”(hjòFh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M¯ hjàFubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÄFubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jßFh´M³ hjFubj¬)�”}”(hŒ``{unnamed_union}`` anonymous ”h]”(j²)�”}”(hŒ``{unnamed_union}``”h]”jC)�”}”(hj7Gh]”hŒ{unnamed_union}”…”�”}”(hj9Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj5Gubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Khj1GubjÃ)�”}”(hhh]”hì)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hjPGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jLGh´KhjMGubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj1Gubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jLGh´KhjFubj¬)�”}”(hŒ``rsvd1`` MBZ ”h]”(j²)�”}”(hŒ ``rsvd1``”h]”jC)�”}”(hjpGh]”hŒrsvd1”…”�”}”(hjrGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjnGubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M¸ hjjGubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hj‰Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j…Gh´M¸ hj†Gubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjjGubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j…Gh´M¸ hjFubj¬)�”}”(hŒ``{unnamed_struct}`` anonymous ”h]”(j²)�”}”(hŒ``{unnamed_struct}``”h]”jC)�”}”(hj©Gh]”hŒ{unnamed_struct}”…”�”}”(hj«Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj§Gubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Khj£GubjÃ)�”}”(hhh]”hì)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hjÂGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¾Gh´Khj¿Gubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj£Gubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j¾Gh´KhjFubj¬)�”}”(hXs``probed_cpu_visible_size`` Memory probed by the driver that is CPU accessible. This will be always be <= **probed_size**, and the remainder (if there is any) will not be CPU accessible. On systems without small BAR, the **probed_size** will always equal the **probed_cpu_visible_size**, since all of it will be CPU accessible. Note this is only tracked for I915_MEMORY_CLASS_DEVICE regions (for other types the value here will always equal the **probed_size**). Note that if the value returned here is zero, then this must be an old kernel which lacks the relevant small-bar uAPI support (including I915_GEM_CREATE_EXT_FLAG_NEEDS_CPU_ACCESS), but on such systems we should never actually end up with a small BAR configuration, assuming we are able to load the kernel module. Hence it should be safe to treat this the same as when **probed_cpu_visible_size** == **probed_size**. ”h]”(j²)�”}”(hŒ``probed_cpu_visible_size``”h]”jC)�”}”(hjâGh]”hŒprobed_cpu_visible_size”…”�”}”(hjäGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjàGubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MÓ hjÜGubjÃ)�”}”(hhh]”(hì)�”}”(hŒ3Memory probed by the driver that is CPU accessible.”h]”hŒ3Memory probed by the driver that is CPU accessible.”…”�”}”(hjûGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M¼ hjøGubhì)�”}”(hŒjThis will be always be <= **probed_size**, and the remainder (if there is any) will not be CPU accessible.”h]”(hŒThis will be always be <= ”…”�”}”(hj Hh²hh³Nh´NubjŒ)�”}”(hŒ**probed_size**”h]”hŒ probed_size”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj HubhŒA, and the remainder (if there is any) will not be CPU accessible.”…”�”}”(hj Hh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M¿ hjøGubhì)�”}”(hŒŒOn systems without small BAR, the **probed_size** will always equal the **probed_cpu_visible_size**, since all of it will be CPU accessible.”h]”(hŒ"On systems without small BAR, the ”…”�”}”(hj+Hh²hh³Nh´NubjŒ)�”}”(hŒ**probed_size**”h]”hŒ probed_size”…”�”}”(hj3Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj+HubhŒ will always equal the ”…”�”}”(hj+Hh²hh³Nh´NubjŒ)�”}”(hŒ**probed_cpu_visible_size**”h]”hŒprobed_cpu_visible_size”…”�”}”(hjEHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj+HubhŒ), since all of it will be CPU accessible.”…”�”}”(hj+Hh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mà hjøGubhì)�”}”(hŒ†Note this is only tracked for I915_MEMORY_CLASS_DEVICE regions (for other types the value here will always equal the **probed_size**).”h]”(hŒuNote this is only tracked for I915_MEMORY_CLASS_DEVICE regions (for other types the value here will always equal the ”…”�”}”(hj^Hh²hh³Nh´NubjŒ)�”}”(hŒ**probed_size**”h]”hŒ probed_size”…”�”}”(hjfHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj^HubhŒ).”…”�”}”(hj^Hh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MÇ hjøGubhì)�”}”(hXŸNote that if the value returned here is zero, then this must be an old kernel which lacks the relevant small-bar uAPI support (including I915_GEM_CREATE_EXT_FLAG_NEEDS_CPU_ACCESS), but on such systems we should never actually end up with a small BAR configuration, assuming we are able to load the kernel module. Hence it should be safe to treat this the same as when **probed_cpu_visible_size** == **probed_size**.”h]”(hXpNote that if the value returned here is zero, then this must be an old kernel which lacks the relevant small-bar uAPI support (including I915_GEM_CREATE_EXT_FLAG_NEEDS_CPU_ACCESS), but on such systems we should never actually end up with a small BAR configuration, assuming we are able to load the kernel module. Hence it should be safe to treat this the same as when ”…”�”}”(hjHh²hh³Nh´NubjŒ)�”}”(hŒ**probed_cpu_visible_size**”h]”hŒprobed_cpu_visible_size”…”�”}”(hj‡Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjHubhŒ == ”…”�”}”(hjHh²hh³Nh´NubjŒ)�”}”(hŒ**probed_size**”h]”hŒ probed_size”…”�”}”(hj™Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjHubhŒ.”…”�”}”(hjHh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MË hjøGubeh}”(h]”h ]”h"]”h$]”h&]”u•h1jÂhjÜGubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j÷Gh´MÓ hjFubj¬)�”}”(hXr``unallocated_cpu_visible_size`` Estimate of CPU visible memory remaining. Note this is only tracked for I915_MEMORY_CLASS_DEVICE regions (for other types the value here will always equal the **probed_cpu_visible_size**). Requires CAP_PERFMON or CAP_SYS_ADMIN to get reliable accounting. Without this the value here will always equal the **probed_cpu_visible_size**. Note this is only currently tracked for I915_MEMORY_CLASS_DEVICE regions (for other types the value here will also always equal the **probed_cpu_visible_size**). If this is an older kernel the value here will be zero, see also **probed_cpu_visible_size**.”h]”(j²)�”}”(hŒ ``unallocated_cpu_visible_size``”h]”jC)�”}”(hjÄHh]”hŒunallocated_cpu_visible_size”…”�”}”(hjÆHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÂHubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mç hj¾HubjÃ)�”}”(hhh]”(hì)�”}”(hŒ)Estimate of CPU visible memory remaining.”h]”hŒ)Estimate of CPU visible memory remaining.”…”�”}”(hjÝHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MØ hjÚHubhì)�”}”(hŒ’Note this is only tracked for I915_MEMORY_CLASS_DEVICE regions (for other types the value here will always equal the **probed_cpu_visible_size**).”h]”(hŒuNote this is only tracked for I915_MEMORY_CLASS_DEVICE regions (for other types the value here will always equal the ”…”�”}”(hjìHh²hh³Nh´NubjŒ)�”}”(hŒ**probed_cpu_visible_size**”h]”hŒprobed_cpu_visible_size”…”�”}”(hjôHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjìHubhŒ).”…”�”}”(hjìHh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MÛ hjÚHubhì)�”}”(hX3Requires CAP_PERFMON or CAP_SYS_ADMIN to get reliable accounting. Without this the value here will always equal the **probed_cpu_visible_size**. Note this is only currently tracked for I915_MEMORY_CLASS_DEVICE regions (for other types the value here will also always equal the **probed_cpu_visible_size**).”h]”(hŒuRequires CAP_PERFMON or CAP_SYS_ADMIN to get reliable accounting. Without this the value here will always equal the ”…”�”}”(hj Ih²hh³Nh´NubjŒ)�”}”(hŒ**probed_cpu_visible_size**”h]”hŒprobed_cpu_visible_size”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj IubhŒ†. Note this is only currently tracked for I915_MEMORY_CLASS_DEVICE regions (for other types the value here will also always equal the ”…”�”}”(hj Ih²hh³Nh´NubjŒ)�”}”(hŒ**probed_cpu_visible_size**”h]”hŒprobed_cpu_visible_size”…”�”}”(hj'Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj IubhŒ).”…”�”}”(hj Ih²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mà hjÚHubhì)�”}”(hŒ]If this is an older kernel the value here will be zero, see also **probed_cpu_visible_size**.”h]”(hŒAIf this is an older kernel the value here will be zero, see also ”…”�”}”(hj@Ih²hh³Nh´NubjŒ)�”}”(hŒ**probed_cpu_visible_size**”h]”hŒprobed_cpu_visible_size”…”�”}”(hjHIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj@IubhŒ.”…”�”}”(hj@Ih²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÙHh´Mç hjÚHubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj¾Hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÙHh´Mç hjFubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj¾Eubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhjih²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hj{Ih]”hŒ Description”…”�”}”(hj}Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjyIubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Më hjih²hubhì)�”}”(hŒÞNote this is using both struct drm_i915_query_item and struct drm_i915_query. For this new query we are adding the new query id DRM_I915_QUERY_MEMORY_REGIONS at :c:type:`drm_i915_query_item.query_id `.”h]”(hŒ¡Note this is using both struct drm_i915_query_item and struct drm_i915_query. For this new query we are adding the new query id DRM_I915_QUERY_MEMORY_REGIONS at ”…”�”}”(hj‘Ih²hh³Nh´Nubh)�”}”(hŒ<:c:type:`drm_i915_query_item.query_id `”h]”jC)�”}”(hj›Ih]”hŒdrm_i915_query_item.query_id”…”�”}”(hj�Ih²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj™Iubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒdrm_i915_query_item”uh1hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M” hj‘IubhŒ.”…”�”}”(hj‘Ih²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¸Ih´M” hjih²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ(drm_i915_query_memory_regions (C struct)”Œc.drm_i915_query_memory_regions”hNt”auh1jJhjih²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_i915_query_memory_regions”h]”jg)�”}”(hŒ$struct drm_i915_query_memory_regions”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjÜIh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjØIh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M› ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêIh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjØIh²hh³jéIh´M› ubj�)�”}”(hŒdrm_i915_query_memory_regions”h]”j–)�”}”(hjÖIh]”hŒdrm_i915_query_memory_regions”…”�”}”(hjüIh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjøIubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjØIh²hh³jéIh´M› ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjÔIh²hh³jéIh´M› ubah}”(h]”jÏIah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jéIh´M› hjÑIh²hubjÄ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÑIh²hh³jéIh´M› ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj'Jjçj'Jjè‰jé‰jê‰uh1j[h²hhjih³Nh´Nubjì)�”}”(hX**Definition**:: struct drm_i915_query_memory_regions { __u32 num_regions; __u32 rsvd[3]; struct drm_i915_memory_region_info regions[]; }; **Members** ``num_regions`` Number of supported regions ``rsvd`` MBZ ``regions`` Info about each supported region”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj3Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj/JubhŒ:”…”�”}”(hj/Jh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mó hj+Jubj)�”}”(hŒ…struct drm_i915_query_memory_regions { __u32 num_regions; __u32 rsvd[3]; struct drm_i915_memory_region_info regions[]; };”h]”hŒ…struct drm_i915_query_memory_regions { __u32 num_regions; __u32 rsvd[3]; struct drm_i915_memory_region_info regions[]; };”…”�”}”hjLJsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mõ hj+Jubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj]Jh]”hŒMembers”…”�”}”(hj_Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj[Jubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mû hj+Jubj§)�”}”(hhh]”(j¬)�”}”(hŒ,``num_regions`` Number of supported regions ”h]”(j²)�”}”(hŒ``num_regions``”h]”jC)�”}”(hj|Jh]”hŒ num_regions”…”�”}”(hj~Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjzJubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MhjvJubjÃ)�”}”(hhh]”hì)�”}”(hŒNumber of supported regions”h]”hŒNumber of supported regions”…”�”}”(hj•Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j‘Jh´Mhj’Jubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjvJubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j‘Jh´MhjsJubj¬)�”}”(hŒ ``rsvd`` MBZ ”h]”(j²)�”}”(hŒ``rsvd``”h]”jC)�”}”(hjµJh]”hŒrsvd”…”�”}”(hj·Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj³Jubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M!hj¯JubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hjÎJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÊJh´M!hjËJubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj¯Jubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÊJh´M!hjsJubj¬)�”}”(hŒ,``regions`` Info about each supported region”h]”(j²)�”}”(hŒ ``regions``”h]”jC)�”}”(hjîJh]”hŒregions”…”�”}”(hjðJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjìJubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M#hjèJubjÃ)�”}”(hhh]”hì)�”}”(hŒ Info about each supported region”h]”hŒ Info about each supported region”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M$hjKubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjèJubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jKh´M#hjsJubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj+Jubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhjih²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hj1Kh]”hŒ Description”…”�”}”(hj3Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj/Kubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M'hjih²hubhì)�”}”(hŒ‰The region info query enumerates all regions known to the driver by filling in an array of struct drm_i915_memory_region_info structures.”h]”hŒ‰The region info query enumerates all regions known to the driver by filling in an array of struct drm_i915_memory_region_info structures.”…”�”}”(hjGKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mð hjih²hubhì)�”}”(hŒ2Example for getting the list of supported regions:”h]”hŒ2Example for getting the list of supported regions:”…”�”}”(hjVKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mó hjih²hubj)�”}”(hXVstruct drm_i915_query_memory_regions *info; struct drm_i915_query_item item = { .query_id = DRM_I915_QUERY_MEMORY_REGIONS; }; struct drm_i915_query query = { .num_items = 1, .items_ptr = (uintptr_t)&item, }; int err, i; // First query the size of the blob we need, this needs to be large // enough to hold our array of regions. The kernel will fill out the // item.length for us, which is the number of bytes we need. err = ioctl(fd, DRM_IOCTL_I915_QUERY, &query); if (err) ... info = calloc(1, item.length); // Now that we allocated the required number of bytes, we call the ioctl // again, this time with the data_ptr pointing to our newly allocated // blob, which the kernel can then populate with the all the region info. item.data_ptr = (uintptr_t)&info, err = ioctl(fd, DRM_IOCTL_I915_QUERY, &query); if (err) ... // We can now access each region in the array for (i = 0; i < info->num_regions; i++) { struct drm_i915_memory_region_info mr = info->regions[i]; u16 class = mr.region.class; u16 instance = mr.region.instance; .... } free(info);”h]”hXVstruct drm_i915_query_memory_regions *info; struct drm_i915_query_item item = { .query_id = DRM_I915_QUERY_MEMORY_REGIONS; }; struct drm_i915_query query = { .num_items = 1, .items_ptr = (uintptr_t)&item, }; int err, i; // First query the size of the blob we need, this needs to be large // enough to hold our array of regions. The kernel will fill out the // item.length for us, which is the number of bytes we need. err = ioctl(fd, DRM_IOCTL_I915_QUERY, &query); if (err) ... info = calloc(1, item.length); // Now that we allocated the required number of bytes, we call the ioctl // again, this time with the data_ptr pointing to our newly allocated // blob, which the kernel can then populate with the all the region info. item.data_ptr = (uintptr_t)&info, err = ioctl(fd, DRM_IOCTL_I915_QUERY, &query); if (err) ... // We can now access each region in the array for (i = 0; i < info->num_regions; i++) { struct drm_i915_memory_region_info mr = info->regions[i]; u16 class = mr.region.class; u16 instance = mr.region.instance; .... } free(info);”…”�”}”hjeKsbah}”(h]”h ]”h"]”h$]”h&]”j­j®j¾‰j¿jÀjÁ}”uh1jh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mõ hjih²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ0drm_i915_query_guc_submission_version (C struct)”Œ'c.drm_i915_query_guc_submission_version”hNt”auh1jJhjih²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒ%drm_i915_query_guc_submission_version”h]”jg)�”}”(hŒ,struct drm_i915_query_guc_submission_version”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjŽKh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjŠKh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœKh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjŠKh²hh³j›Kh´Mubj�)�”}”(hŒ%drm_i915_query_guc_submission_version”h]”j–)�”}”(hjˆKh]”hŒ%drm_i915_query_guc_submission_version”…”�”}”(hj®Kh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjªKubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjŠKh²hh³j›Kh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hj†Kh²hh³j›Kh´Mubah}”(h]”j�Kah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³j›Kh´MhjƒKh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ&query GuC submission interface version”h]”hŒ&query GuC submission interface version”…”�”}”(hjÐKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M(hjÍKh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjƒKh²hh³j›Kh´Mubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjèKjçjèKjè‰jé‰jê‰uh1j[h²hhjih³Nh´Nubjì)�”}”(hX7**Definition**:: struct drm_i915_query_guc_submission_version { __u32 branch; __u32 major; __u32 minor; __u32 patch; }; **Members** ``branch`` Firmware branch version. ``major`` Firmware major version. ``minor`` Firmware minor version. ``patch`` Firmware patch version.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjôKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjðKubhŒ:”…”�”}”(hjðKh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M,hjìKubj)�”}”(hŒvstruct drm_i915_query_guc_submission_version { __u32 branch; __u32 major; __u32 minor; __u32 patch; };”h]”hŒvstruct drm_i915_query_guc_submission_version { __u32 branch; __u32 major; __u32 minor; __u32 patch; };”…”�”}”hj Lsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M.hjìKubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjLh]”hŒMembers”…”�”}”(hj Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjLubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M5hjìKubj§)�”}”(hhh]”(j¬)�”}”(hŒ$``branch`` Firmware branch version. ”h]”(j²)�”}”(hŒ ``branch``”h]”jC)�”}”(hj=Lh]”hŒbranch”…”�”}”(hj?Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj;Lubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M,hj7LubjÃ)�”}”(hhh]”hì)�”}”(hŒFirmware branch version.”h]”hŒFirmware branch version.”…”�”}”(hjVLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jRLh´M,hjSLubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj7Lubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jRLh´M,hj4Lubj¬)�”}”(hŒ"``major`` Firmware major version. ”h]”(j²)�”}”(hŒ ``major``”h]”jC)�”}”(hjvLh]”hŒmajor”…”�”}”(hjxLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjtLubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M.hjpLubjÃ)�”}”(hhh]”hì)�”}”(hŒFirmware major version.”h]”hŒFirmware major version.”…”�”}”(hj�Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j‹Lh´M.hjŒLubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjpLubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j‹Lh´M.hj4Lubj¬)�”}”(hŒ"``minor`` Firmware minor version. ”h]”(j²)�”}”(hŒ ``minor``”h]”jC)�”}”(hj¯Lh]”hŒminor”…”�”}”(hj±Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj­Lubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M0hj©LubjÃ)�”}”(hhh]”hì)�”}”(hŒFirmware minor version.”h]”hŒFirmware minor version.”…”�”}”(hjÈLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÄLh´M0hjÅLubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj©Lubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÄLh´M0hj4Lubj¬)�”}”(hŒ!``patch`` Firmware patch version.”h]”(j²)�”}”(hŒ ``patch``”h]”jC)�”}”(hjèLh]”hŒpatch”…”�”}”(hjêLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjæLubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M1hjâLubjÃ)�”}”(hhh]”hì)�”}”(hŒFirmware patch version.”h]”hŒFirmware patch version.”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M2hjþLubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjâLubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jýLh´M1hj4Lubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjìKubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhjih²hh³Nh´Nubj{)�”}”(hŒ.. _GuC HWCONFIG blob uAPI:”h]”h}”(h]”h ]”h"]”h$]”h&]”hÊŒguc-hwconfig-blob-uapi”uh1jzh´Mmhjih²hh³Nubhì)�”}”(hŒ**GuC HWCONFIG blob uAPI**”h]”jŒ)�”}”(hj6Mh]”hŒGuC HWCONFIG blob uAPI”…”�”}”(hj8Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj4Mubah}”(h]”j3Mah ]”h"]”Œguc hwconfig blob uapi”ah$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M8hjih²hj¢}”jIMj)Msj¤}”j3Mj)Msubhì)�”}”(hŒ†The GuC produces a blob with information about the current device. i915 reads this blob from GuC and makes it available via this uAPI.”h]”hŒ†The GuC produces a blob with information about the current device. i915 reads this blob from GuC and makes it available via this uAPI.”…”�”}”(hjOMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M6hjih²hubhì)�”}”(hŒ_The format and meaning of the blob content are documented in the Programmer's Reference Manual.”h]”hŒaThe format and meaning of the blob content are documented in the Programmer’s Reference Manual.”…”�”}”(hj^Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M9hjih²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ"drm_i915_gem_create_ext (C struct)”Œc.drm_i915_gem_create_ext”hNt”auh1jJhjih²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_i915_gem_create_ext”h]”jg)�”}”(hŒstruct drm_i915_gem_create_ext”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj†Mh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj‚Mh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M?ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”Mh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hj‚Mh²hh³j“Mh´M?ubj�)�”}”(hŒdrm_i915_gem_create_ext”h]”j–)�”}”(hj€Mh]”hŒdrm_i915_gem_create_ext”…”�”}”(hj¦Mh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj¢Mubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj‚Mh²hh³j“Mh´M?ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hj~Mh²hh³j“Mh´M?ubah}”(h]”jyMah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³j“Mh´M?hj{Mh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ]Existing gem_create behaviour, with added extension support using struct i915_user_extension.”h]”hŒ]Existing gem_create behaviour, with added extension support using struct i915_user_extension.”…”�”}”(hjÈMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M@hjÅMh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj{Mh²hh³j“Mh´M?ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjàMjçjàMjè‰jé‰jê‰uh1j[h²hhjih³Nh´Nubjì)�”}”(hXé**Definition**:: struct drm_i915_gem_create_ext { __u64 size; __u32 handle; #define I915_GEM_CREATE_EXT_FLAG_NEEDS_CPU_ACCESS (1 << 0); __u32 flags; #define I915_GEM_CREATE_EXT_MEMORY_REGIONS 0; #define I915_GEM_CREATE_EXT_PROTECTED_CONTENT 1; #define I915_GEM_CREATE_EXT_SET_PAT 2; __u64 extensions; }; **Members** ``size`` Requested size for the object. The (page-aligned) allocated size for the object will be returned. On platforms like DG2/ATS the kernel will always use 64K or larger pages for I915_MEMORY_CLASS_DEVICE. The kernel also requires a minimum of 64K GTT alignment for such objects. NOTE: Previously the ABI here required a minimum GTT alignment of 2M on DG2/ATS, due to how the hardware implemented 64K GTT page support, where we had the following complications: 1) The entire PDE (which covers a 2MB virtual address range), must contain only 64K PTEs, i.e mixing 4K and 64K PTEs in the same PDE is forbidden by the hardware. 2) We still need to support 4K PTEs for I915_MEMORY_CLASS_SYSTEM objects. However on actual production HW this was completely changed to now allow setting a TLB hint at the PTE level (see PS64), which is a lot more flexible than the above. With this the 2M restriction was dropped where we now only require 64K. ``handle`` Returned handle for the object. Object handles are nonzero. ``flags`` Optional flags. Supported values: I915_GEM_CREATE_EXT_FLAG_NEEDS_CPU_ACCESS - Signal to the kernel that the object will need to be accessed via the CPU. Only valid when placing objects in I915_MEMORY_CLASS_DEVICE, and only strictly required on configurations where some subset of the device memory is directly visible/mappable through the CPU (which we also call small BAR), like on some DG2+ systems. Note that this is quite undesirable, but due to various factors like the client CPU, BIOS etc it's something we can expect to see in the wild. See :c:type:`drm_i915_memory_region_info.probed_cpu_visible_size ` for how to determine if this system applies. Note that one of the placements MUST be I915_MEMORY_CLASS_SYSTEM, to ensure the kernel can always spill the allocation to system memory, if the object can't be allocated in the mappable part of I915_MEMORY_CLASS_DEVICE. Also note that since the kernel only supports flat-CCS on objects that can *only* be placed in I915_MEMORY_CLASS_DEVICE, we therefore don't support I915_GEM_CREATE_EXT_FLAG_NEEDS_CPU_ACCESS together with flat-CCS. Without this hint, the kernel will assume that non-mappable I915_MEMORY_CLASS_DEVICE is preferred for this object. Note that the kernel can still migrate the object to the mappable part, as a last resort, if userspace ever CPU faults this object, but this might be expensive, and so ideally should be avoided. On older kernels which lack the relevant small-bar uAPI support (see also :c:type:`drm_i915_memory_region_info.probed_cpu_visible_size `), usage of the flag will result in an error, but it should NEVER be possible to end up with a small BAR configuration, assuming we can also successfully load the i915 kernel module. In such cases the entire I915_MEMORY_CLASS_DEVICE region will be CPU accessible, and as such there are zero restrictions on where the object can be placed. ``extensions`` The chain of extensions to apply to this object. This will be useful in the future when we need to support several different extensions, and we need to apply more than one when creating the object. See struct i915_user_extension. If we don't supply any extensions then we get the same old gem_create behaviour. For I915_GEM_CREATE_EXT_MEMORY_REGIONS usage see struct drm_i915_gem_create_ext_memory_regions. For I915_GEM_CREATE_EXT_PROTECTED_CONTENT usage see struct drm_i915_gem_create_ext_protected_content. For I915_GEM_CREATE_EXT_SET_PAT usage see struct drm_i915_gem_create_ext_set_pat.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjìMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjèMubhŒ:”…”�”}”(hjèMh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MDhjäMubj)�”}”(hX.struct drm_i915_gem_create_ext { __u64 size; __u32 handle; #define I915_GEM_CREATE_EXT_FLAG_NEEDS_CPU_ACCESS (1 << 0); __u32 flags; #define I915_GEM_CREATE_EXT_MEMORY_REGIONS 0; #define I915_GEM_CREATE_EXT_PROTECTED_CONTENT 1; #define I915_GEM_CREATE_EXT_SET_PAT 2; __u64 extensions; };”h]”hX.struct drm_i915_gem_create_ext { __u64 size; __u32 handle; #define I915_GEM_CREATE_EXT_FLAG_NEEDS_CPU_ACCESS (1 << 0); __u32 flags; #define I915_GEM_CREATE_EXT_MEMORY_REGIONS 0; #define I915_GEM_CREATE_EXT_PROTECTED_CONTENT 1; #define I915_GEM_CREATE_EXT_SET_PAT 2; __u64 extensions; };”…”�”}”hjNsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MFhjäMubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjNh]”hŒMembers”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjNubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MQhjäMubj§)�”}”(hhh]”(j¬)�”}”(hX¼``size`` Requested size for the object. The (page-aligned) allocated size for the object will be returned. On platforms like DG2/ATS the kernel will always use 64K or larger pages for I915_MEMORY_CLASS_DEVICE. The kernel also requires a minimum of 64K GTT alignment for such objects. NOTE: Previously the ABI here required a minimum GTT alignment of 2M on DG2/ATS, due to how the hardware implemented 64K GTT page support, where we had the following complications: 1) The entire PDE (which covers a 2MB virtual address range), must contain only 64K PTEs, i.e mixing 4K and 64K PTEs in the same PDE is forbidden by the hardware. 2) We still need to support 4K PTEs for I915_MEMORY_CLASS_SYSTEM objects. However on actual production HW this was completely changed to now allow setting a TLB hint at the PTE level (see PS64), which is a lot more flexible than the above. With this the 2M restriction was dropped where we now only require 64K. ”h]”(j²)�”}”(hŒ``size``”h]”jC)�”}”(hj5Nh]”hŒsize”…”�”}”(hj7Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj3Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mbhj/NubjÃ)�”}”(hhh]”(hì)�”}”(hŒRequested size for the object.”h]”hŒRequested size for the object.”…”�”}”(hjNNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MLhjKNubhì)�”}”(hŒBThe (page-aligned) allocated size for the object will be returned.”h]”hŒBThe (page-aligned) allocated size for the object will be returned.”…”�”}”(hj]Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MNhjKNubhì)�”}”(hŒ°On platforms like DG2/ATS the kernel will always use 64K or larger pages for I915_MEMORY_CLASS_DEVICE. The kernel also requires a minimum of 64K GTT alignment for such objects.”h]”hŒ°On platforms like DG2/ATS the kernel will always use 64K or larger pages for I915_MEMORY_CLASS_DEVICE. The kernel also requires a minimum of 64K GTT alignment for such objects.”…”�”}”(hjlNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MPhjKNubhì)�”}”(hŒ´NOTE: Previously the ABI here required a minimum GTT alignment of 2M on DG2/ATS, due to how the hardware implemented 64K GTT page support, where we had the following complications:”h]”hŒ´NOTE: Previously the ABI here required a minimum GTT alignment of 2M on DG2/ATS, due to how the hardware implemented 64K GTT page support, where we had the following complications:”…”�”}”(hj{Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MThjKNubjK)�”}”(hŒî1) The entire PDE (which covers a 2MB virtual address range), must contain only 64K PTEs, i.e mixing 4K and 64K PTEs in the same PDE is forbidden by the hardware. 2) We still need to support 4K PTEs for I915_MEMORY_CLASS_SYSTEM objects. ”h]”(hì)�”}”(hŒ¢1) The entire PDE (which covers a 2MB virtual address range), must contain only 64K PTEs, i.e mixing 4K and 64K PTEs in the same PDE is forbidden by the hardware.”h]”hŒ¢1) The entire PDE (which covers a 2MB virtual address range), must contain only 64K PTEs, i.e mixing 4K and 64K PTEs in the same PDE is forbidden by the hardware.”…”�”}”(hjŽNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MXhjŠNubhì)�”}”(hŒI2) We still need to support 4K PTEs for I915_MEMORY_CLASS_SYSTEM objects.”h]”hŒI2) We still need to support 4K PTEs for I915_MEMORY_CLASS_SYSTEM objects.”…”�”}”(hj�Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M\hjŠNubeh}”(h]”h ]”h"]”h$]”h&]”uh1jJh³jœNh´MXhjKNubhì)�”}”(hŒíHowever on actual production HW this was completely changed to now allow setting a TLB hint at the PTE level (see PS64), which is a lot more flexible than the above. With this the 2M restriction was dropped where we now only require 64K.”h]”hŒíHowever on actual production HW this was completely changed to now allow setting a TLB hint at the PTE level (see PS64), which is a lot more flexible than the above. With this the 2M restriction was dropped where we now only require 64K.”…”�”}”(hj²Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M_hjKNubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj/Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jJNh´Mbhj,Nubj¬)�”}”(hŒH``handle`` Returned handle for the object. Object handles are nonzero. ”h]”(j²)�”}”(hŒ ``handle``”h]”jC)�”}”(hjÓNh]”hŒhandle”…”�”}”(hjÕNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÑNubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MihjÍNubjÃ)�”}”(hhh]”(hì)�”}”(hŒReturned handle for the object.”h]”hŒReturned handle for the object.”…”�”}”(hjìNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MghjéNubhì)�”}”(hŒObject handles are nonzero.”h]”hŒObject handles are nonzero.”…”�”}”(hjûNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jèNh´MihjéNubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÍNubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jèNh´Mihj,Nubj¬)�”}”(hXŸ``flags`` Optional flags. Supported values: I915_GEM_CREATE_EXT_FLAG_NEEDS_CPU_ACCESS - Signal to the kernel that the object will need to be accessed via the CPU. Only valid when placing objects in I915_MEMORY_CLASS_DEVICE, and only strictly required on configurations where some subset of the device memory is directly visible/mappable through the CPU (which we also call small BAR), like on some DG2+ systems. Note that this is quite undesirable, but due to various factors like the client CPU, BIOS etc it's something we can expect to see in the wild. See :c:type:`drm_i915_memory_region_info.probed_cpu_visible_size ` for how to determine if this system applies. Note that one of the placements MUST be I915_MEMORY_CLASS_SYSTEM, to ensure the kernel can always spill the allocation to system memory, if the object can't be allocated in the mappable part of I915_MEMORY_CLASS_DEVICE. Also note that since the kernel only supports flat-CCS on objects that can *only* be placed in I915_MEMORY_CLASS_DEVICE, we therefore don't support I915_GEM_CREATE_EXT_FLAG_NEEDS_CPU_ACCESS together with flat-CCS. Without this hint, the kernel will assume that non-mappable I915_MEMORY_CLASS_DEVICE is preferred for this object. Note that the kernel can still migrate the object to the mappable part, as a last resort, if userspace ever CPU faults this object, but this might be expensive, and so ideally should be avoided. On older kernels which lack the relevant small-bar uAPI support (see also :c:type:`drm_i915_memory_region_info.probed_cpu_visible_size `), usage of the flag will result in an error, but it should NEVER be possible to end up with a small BAR configuration, assuming we can also successfully load the i915 kernel module. In such cases the entire I915_MEMORY_CLASS_DEVICE region will be CPU accessible, and as such there are zero restrictions on where the object can be placed. ”h]”(j²)�”}”(hŒ ``flags``”h]”jC)�”}”(hjOh]”hŒflags”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjOubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M”hjOubjÃ)�”}”(hhh]”(hì)�”}”(hŒOptional flags.”h]”hŒOptional flags.”…”�”}”(hj4Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mnhj1Oubhì)�”}”(hŒSupported values:”h]”hŒSupported values:”…”�”}”(hjCOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mphj1Oubhì)�”}”(hŒvI915_GEM_CREATE_EXT_FLAG_NEEDS_CPU_ACCESS - Signal to the kernel that the object will need to be accessed via the CPU.”h]”hŒvI915_GEM_CREATE_EXT_FLAG_NEEDS_CPU_ACCESS - Signal to the kernel that the object will need to be accessed via the CPU.”…”�”}”(hjROh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mrhj1Oubhì)�”}”(hXOnly valid when placing objects in I915_MEMORY_CLASS_DEVICE, and only strictly required on configurations where some subset of the device memory is directly visible/mappable through the CPU (which we also call small BAR), like on some DG2+ systems. Note that this is quite undesirable, but due to various factors like the client CPU, BIOS etc it's something we can expect to see in the wild. See :c:type:`drm_i915_memory_region_info.probed_cpu_visible_size ` for how to determine if this system applies.”h]”(hXŽOnly valid when placing objects in I915_MEMORY_CLASS_DEVICE, and only strictly required on configurations where some subset of the device memory is directly visible/mappable through the CPU (which we also call small BAR), like on some DG2+ systems. Note that this is quite undesirable, but due to various factors like the client CPU, BIOS etc it’s something we can expect to see in the wild. See ”…”�”}”(hjaOh²hh³Nh´Nubh)�”}”(hŒ[:c:type:`drm_i915_memory_region_info.probed_cpu_visible_size `”h]”jC)�”}”(hjkOh]”hŒ3drm_i915_memory_region_info.probed_cpu_visible_size”…”�”}”(hjmOh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjiOubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒdrm_i915_memory_region_info”uh1hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MuhjaOubhŒ- for how to determine if this system applies.”…”�”}”(hjaOh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jˆOh´Muhj1Oubhì)�”}”(hŒÛNote that one of the placements MUST be I915_MEMORY_CLASS_SYSTEM, to ensure the kernel can always spill the allocation to system memory, if the object can't be allocated in the mappable part of I915_MEMORY_CLASS_DEVICE.”h]”hŒÝNote that one of the placements MUST be I915_MEMORY_CLASS_SYSTEM, to ensure the kernel can always spill the allocation to system memory, if the object can’t be allocated in the mappable part of I915_MEMORY_CLASS_DEVICE.”…”�”}”(hj“Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M~hj1Oubhì)�”}”(hŒÕAlso note that since the kernel only supports flat-CCS on objects that can *only* be placed in I915_MEMORY_CLASS_DEVICE, we therefore don't support I915_GEM_CREATE_EXT_FLAG_NEEDS_CPU_ACCESS together with flat-CCS.”h]”(hŒKAlso note that since the kernel only supports flat-CCS on objects that can ”…”�”}”(hj¢Oh²hh³Nh´NubhŒemphasis”“”)�”}”(hŒ*only*”h]”hŒonly”…”�”}”(hj¬Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jªOhj¢OubhŒ† be placed in I915_MEMORY_CLASS_DEVICE, we therefore don’t support I915_GEM_CREATE_EXT_FLAG_NEEDS_CPU_ACCESS together with flat-CCS.”…”�”}”(hj¢Oh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mƒhj1Oubhì)�”}”(hX5Without this hint, the kernel will assume that non-mappable I915_MEMORY_CLASS_DEVICE is preferred for this object. Note that the kernel can still migrate the object to the mappable part, as a last resort, if userspace ever CPU faults this object, but this might be expensive, and so ideally should be avoided.”h]”hX5Without this hint, the kernel will assume that non-mappable I915_MEMORY_CLASS_DEVICE is preferred for this object. Note that the kernel can still migrate the object to the mappable part, as a last resort, if userspace ever CPU faults this object, but this might be expensive, and so ideally should be avoided.”…”�”}”(hjÅOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mˆhj1Oubhì)�”}”(hX÷On older kernels which lack the relevant small-bar uAPI support (see also :c:type:`drm_i915_memory_region_info.probed_cpu_visible_size `), usage of the flag will result in an error, but it should NEVER be possible to end up with a small BAR configuration, assuming we can also successfully load the i915 kernel module. In such cases the entire I915_MEMORY_CLASS_DEVICE region will be CPU accessible, and as such there are zero restrictions on where the object can be placed.”h]”(hŒJOn older kernels which lack the relevant small-bar uAPI support (see also ”…”�”}”(hjÔOh²hh³Nh´Nubh)�”}”(hŒ[:c:type:`drm_i915_memory_region_info.probed_cpu_visible_size `”h]”jC)�”}”(hjÞOh]”hŒ3drm_i915_memory_region_info.probed_cpu_visible_size”…”�”}”(hjàOh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjÜOubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒdrm_i915_memory_region_info”uh1hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MŽhjÔOubhXR), usage of the flag will result in an error, but it should NEVER be possible to end up with a small BAR configuration, assuming we can also successfully load the i915 kernel module. In such cases the entire I915_MEMORY_CLASS_DEVICE region will be CPU accessible, and as such there are zero restrictions on where the object can be placed.”…”�”}”(hjÔOh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jûOh´MŽhj1Oubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjOubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j0Oh´M”hj,Nubj¬)�”}”(hXb``extensions`` The chain of extensions to apply to this object. This will be useful in the future when we need to support several different extensions, and we need to apply more than one when creating the object. See struct i915_user_extension. If we don't supply any extensions then we get the same old gem_create behaviour. For I915_GEM_CREATE_EXT_MEMORY_REGIONS usage see struct drm_i915_gem_create_ext_memory_regions. For I915_GEM_CREATE_EXT_PROTECTED_CONTENT usage see struct drm_i915_gem_create_ext_protected_content. For I915_GEM_CREATE_EXT_SET_PAT usage see struct drm_i915_gem_create_ext_set_pat.”h]”(j²)�”}”(hŒ``extensions``”h]”jC)�”}”(hjPh]”hŒ extensions”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjPubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M©hjPubjÃ)�”}”(hhh]”(hì)�”}”(hŒ0The chain of extensions to apply to this object.”h]”hŒ0The chain of extensions to apply to this object.”…”�”}”(hj1Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mšhj.Pubhì)�”}”(hŒ´This will be useful in the future when we need to support several different extensions, and we need to apply more than one when creating the object. See struct i915_user_extension.”h]”hŒ´This will be useful in the future when we need to support several different extensions, and we need to apply more than one when creating the object. See struct i915_user_extension.”…”�”}”(hj@Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mœhj.Pubhì)�”}”(hŒPIf we don't supply any extensions then we get the same old gem_create behaviour.”h]”hŒRIf we don’t supply any extensions then we get the same old gem_create behaviour.”…”�”}”(hjOPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M hj.Pubhì)�”}”(hŒ_For I915_GEM_CREATE_EXT_MEMORY_REGIONS usage see struct drm_i915_gem_create_ext_memory_regions.”h]”hŒ_For I915_GEM_CREATE_EXT_MEMORY_REGIONS usage see struct drm_i915_gem_create_ext_memory_regions.”…”�”}”(hj^Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M£hj.Pubhì)�”}”(hŒeFor I915_GEM_CREATE_EXT_PROTECTED_CONTENT usage see struct drm_i915_gem_create_ext_protected_content.”h]”hŒeFor I915_GEM_CREATE_EXT_PROTECTED_CONTENT usage see struct drm_i915_gem_create_ext_protected_content.”…”�”}”(hjmPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M¦hj.Pubhì)�”}”(hŒQFor I915_GEM_CREATE_EXT_SET_PAT usage see struct drm_i915_gem_create_ext_set_pat.”h]”hŒQFor I915_GEM_CREATE_EXT_SET_PAT usage see struct drm_i915_gem_create_ext_set_pat.”…”�”}”(hj|Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j-Ph´M©hj.Pubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjPubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j-Ph´M©hj,Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjäMubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhjih²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hj¥Ph]”hŒ Description”…”�”}”(hj§Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj£Pubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M­hjih²hubhì)�”}”(hXcNote that new buffer flags should be added here, at least for the stuff that is immutable. Previously we would have two ioctls, one to create the object with gem_create, and another to apply various parameters, however this creates some ambiguity for the params which are considered immutable. Also in general we're phasing out the various SET/GET ioctls.”h]”hXeNote that new buffer flags should be added here, at least for the stuff that is immutable. Previously we would have two ioctls, one to create the object with gem_create, and another to apply various parameters, however this creates some ambiguity for the params which are considered immutable. Also in general we’re phasing out the various SET/GET ioctls.”…”�”}”(hj»Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MAhjih²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ1drm_i915_gem_create_ext_memory_regions (C struct)”Œ(c.drm_i915_gem_create_ext_memory_regions”hNt”auh1jJhjih²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒ&drm_i915_gem_create_ext_memory_regions”h]”jg)�”}”(hŒ-struct drm_i915_gem_create_ext_memory_regions”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjãPh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjßPh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MJubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñPh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjßPh²hh³jðPh´MJubj�)�”}”(hŒ&drm_i915_gem_create_ext_memory_regions”h]”j–)�”}”(hjÝPh]”hŒ&drm_i915_gem_create_ext_memory_regions”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjÿPubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjßPh²hh³jðPh´MJubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjÛPh²hh³jðPh´MJubah}”(h]”jÖPah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jðPh´MJhjØPh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ1The I915_GEM_CREATE_EXT_MEMORY_REGIONS extension.”h]”hŒ1The I915_GEM_CREATE_EXT_MEMORY_REGIONS extension.”…”�”}”(hj%Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M²hj"Qh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjØPh²hh³jðPh´MJubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj=Qjçj=Qjè‰jé‰jê‰uh1j[h²hhjih³Nh´Nubjì)�”}”(hX­**Definition**:: struct drm_i915_gem_create_ext_memory_regions { struct i915_user_extension base; __u32 pad; __u32 num_regions; __u64 regions; }; **Members** ``base`` Extension link. See struct i915_user_extension. ``pad`` MBZ ``num_regions`` Number of elements in the **regions** array. ``regions`` The regions/placements array. An array of struct drm_i915_gem_memory_class_instance.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjIQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjEQubhŒ:”…”�”}”(hjEQh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M¶hjAQubj)�”}”(hŒ�struct drm_i915_gem_create_ext_memory_regions { struct i915_user_extension base; __u32 pad; __u32 num_regions; __u64 regions; };”h]”hŒ�struct drm_i915_gem_create_ext_memory_regions { struct i915_user_extension base; __u32 pad; __u32 num_regions; __u64 regions; };”…”�”}”hjbQsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M¸hjAQubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjsQh]”hŒMembers”…”�”}”(hjuQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjqQubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M¿hjAQubj§)�”}”(hhh]”(j¬)�”}”(hŒ9``base`` Extension link. See struct i915_user_extension. ”h]”(j²)�”}”(hŒ``base``”h]”jC)�”}”(hj’Qh]”hŒbase”…”�”}”(hj”Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj�Qubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MéhjŒQubjÃ)�”}”(hhh]”hì)�”}”(hŒ/Extension link. See struct i915_user_extension.”h]”hŒ/Extension link. See struct i915_user_extension.”…”�”}”(hj«Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j§Qh´Méhj¨Qubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjŒQubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j§Qh´Méhj‰Qubj¬)�”}”(hŒ ``pad`` MBZ ”h]”(j²)�”}”(hŒ``pad``”h]”jC)�”}”(hjËQh]”hŒpad”…”�”}”(hjÍQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÉQubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MìhjÅQubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hjäQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jàQh´MìhjáQubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÅQubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jàQh´Mìhj‰Qubj¬)�”}”(hŒ=``num_regions`` Number of elements in the **regions** array. ”h]”(j²)�”}”(hŒ``num_regions``”h]”jC)�”}”(hjRh]”hŒ num_regions”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjRubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MîhjþQubjÃ)�”}”(hhh]”hì)�”}”(hŒ,Number of elements in the **regions** array.”h]”(hŒNumber of elements in the ”…”�”}”(hjRh²hh³Nh´NubjŒ)�”}”(hŒ **regions**”h]”hŒregions”…”�”}”(hj%Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjRubhŒ array.”…”�”}”(hjRh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jRh´MîhjRubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjþQubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jRh´Mîhj‰Qubj¬)�”}”(hŒa``regions`` The regions/placements array. An array of struct drm_i915_gem_memory_class_instance.”h]”(j²)�”}”(hŒ ``regions``”h]”jC)�”}”(hjORh]”hŒregions”…”�”}”(hjQRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjMRubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MòhjIRubjÃ)�”}”(hhh]”(hì)�”}”(hŒThe regions/placements array.”h]”hŒThe regions/placements array.”…”�”}”(hjhRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MñhjeRubhì)�”}”(hŒ6An array of struct drm_i915_gem_memory_class_instance.”h]”hŒ6An array of struct drm_i915_gem_memory_class_instance.”…”�”}”(hjwRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MóhjeRubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjIRubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jdRh´Mòhj‰Qubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjAQubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhjih²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hj¡Rh]”hŒ Description”…”�”}”(hj£Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjŸRubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Möhjih²hubhì)�”}”(hŒƒSet the object with the desired set of placements/regions in priority order. Each entry must be unique and supported by the device.”h]”hŒƒSet the object with the desired set of placements/regions in priority order. Each entry must be unique and supported by the device.”…”�”}”(hj·Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M³hjih²hubhì)�”}”(hXThis is provided as an array of struct drm_i915_gem_memory_class_instance, or an equivalent layout of class:instance pair encodings. See struct drm_i915_query_memory_regions and DRM_I915_QUERY_MEMORY_REGIONS for how to query the supported regions for a device.”h]”hXThis is provided as an array of struct drm_i915_gem_memory_class_instance, or an equivalent layout of class:instance pair encodings. See struct drm_i915_query_memory_regions and DRM_I915_QUERY_MEMORY_REGIONS for how to query the supported regions for a device.”…”�”}”(hjÆRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M¶hjih²hubhì)�”}”(hŒtAs an example, on discrete devices, if we wish to set the placement as device local-memory we can do something like:”h]”hŒtAs an example, on discrete devices, if we wish to set the placement as device local-memory we can do something like:”…”�”}”(hjÕRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M»hjih²hubj)�”}”(hXstruct drm_i915_gem_memory_class_instance region_lmem = { .memory_class = I915_MEMORY_CLASS_DEVICE, .memory_instance = 0, }; struct drm_i915_gem_create_ext_memory_regions regions = { .base = { .name = I915_GEM_CREATE_EXT_MEMORY_REGIONS }, .regions = (uintptr_t)®ion_lmem, .num_regions = 1, }; struct drm_i915_gem_create_ext create_ext = { .size = 16 * PAGE_SIZE, .extensions = (uintptr_t)®ions, }; int err = ioctl(fd, DRM_IOCTL_I915_GEM_CREATE_EXT, &create_ext); if (err) ...”h]”hXstruct drm_i915_gem_memory_class_instance region_lmem = { .memory_class = I915_MEMORY_CLASS_DEVICE, .memory_instance = 0, }; struct drm_i915_gem_create_ext_memory_regions regions = { .base = { .name = I915_GEM_CREATE_EXT_MEMORY_REGIONS }, .regions = (uintptr_t)®ion_lmem, .num_regions = 1, }; struct drm_i915_gem_create_ext create_ext = { .size = 16 * PAGE_SIZE, .extensions = (uintptr_t)®ions, }; int err = ioctl(fd, DRM_IOCTL_I915_GEM_CREATE_EXT, &create_ext); if (err) ...”…”�”}”hjäRsbah}”(h]”h ]”h"]”h$]”h&]”j­j®j¾‰j¿jÀjÁ}”uh1jh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M¾hjih²hubhì)�”}”(hX At which point we get the object handle in :c:type:`drm_i915_gem_create_ext.handle `, along with the final object size in :c:type:`drm_i915_gem_create_ext.size `, which should account for any rounding up, if required.”h]”(hŒ+At which point we get the object handle in ”…”�”}”(hjôRh²hh³Nh´Nubh)�”}”(hŒB:c:type:`drm_i915_gem_create_ext.handle `”h]”jC)�”}”(hjþRh]”hŒdrm_i915_gem_create_ext.handle”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjüRubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒdrm_i915_gem_create_ext”uh1hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MÑhjôRubhŒ&, along with the final object size in ”…”�”}”(hjôRh²hh³Nh´Nubh)�”}”(hŒ@:c:type:`drm_i915_gem_create_ext.size `”h]”jC)�”}”(hj"Sh]”hŒdrm_i915_gem_create_ext.size”…”�”}”(hj$Sh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj Subah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒdrm_i915_gem_create_ext”uh1hh³jSh´MÑhjôRubhŒ8, which should account for any rounding up, if required.”…”�”}”(hjôRh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jSh´MÑhjih²hubhì)�”}”(hX4Note that userspace has no means of knowing the current backing region for objects where **num_regions** is larger than one. The kernel will only ensure that the priority order of the **regions** array is honoured, either when initially placing the object, or when moving memory around due to memory pressure”h]”(hŒYNote that userspace has no means of knowing the current backing region for objects where ”…”�”}”(hjISh²hh³Nh´NubjŒ)�”}”(hŒ**num_regions**”h]”hŒ num_regions”…”�”}”(hjQSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjISubhŒP is larger than one. The kernel will only ensure that the priority order of the ”…”�”}”(hjISh²hh³Nh´NubjŒ)�”}”(hŒ **regions**”h]”hŒregions”…”�”}”(hjcSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjISubhŒq array is honoured, either when initially placing the object, or when moving memory around due to memory pressure”…”�”}”(hjISh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MÕhjih²hubhì)�”}”(hX”On Flat-CCS capable HW, compression is supported for the objects residing in I915_MEMORY_CLASS_DEVICE. When such objects (compressed) have other memory class in **regions** and migrated (by i915, due to memory constraints) to the non I915_MEMORY_CLASS_DEVICE region, then i915 needs to decompress the content. But i915 doesn't have the required information to decompress the userspace compressed objects.”h]”(hŒ¡On Flat-CCS capable HW, compression is supported for the objects residing in I915_MEMORY_CLASS_DEVICE. When such objects (compressed) have other memory class in ”…”�”}”(hj|Sh²hh³Nh´NubjŒ)�”}”(hŒ **regions**”h]”hŒregions”…”�”}”(hj„Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj|SubhŒê and migrated (by i915, due to memory constraints) to the non I915_MEMORY_CLASS_DEVICE region, then i915 needs to decompress the content. But i915 doesn’t have the required information to decompress the userspace compressed objects.”…”�”}”(hj|Sh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MÛhjih²hubhì)�”}”(hŒdSo i915 supports Flat-CCS, on the objects which can reside only on I915_MEMORY_CLASS_DEVICE regions.”h]”hŒdSo i915 supports Flat-CCS, on the objects which can reside only on I915_MEMORY_CLASS_DEVICE regions.”…”�”}”(hj�Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mâhjih²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ4drm_i915_gem_create_ext_protected_content (C struct)”Œ+c.drm_i915_gem_create_ext_protected_content”hNt”auh1jJhjih²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒ)drm_i915_gem_create_ext_protected_content”h]”jg)�”}”(hŒ0struct drm_i915_gem_create_ext_protected_content”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjÅSh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjÁSh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mèubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓSh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjÁSh²hh³jÒSh´Mèubj�)�”}”(hŒ)drm_i915_gem_create_ext_protected_content”h]”j–)�”}”(hj¿Sh]”hŒ)drm_i915_gem_create_ext_protected_content”…”�”}”(hjåSh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjáSubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjÁSh²hh³jÒSh´Mèubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hj½Sh²hh³jÒSh´Mèubah}”(h]”j¸Sah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jÒSh´MèhjºSh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ2The I915_OBJECT_PARAM_PROTECTED_CONTENT extension.”h]”hŒ2The I915_OBJECT_PARAM_PROTECTED_CONTENT extension.”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MøhjTh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjºSh²hh³jÒSh´Mèubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjTjçjTjè‰jé‰jê‰uh1j[h²hhjih³Nh´Nubjì)�”}”(hX**Definition**:: struct drm_i915_gem_create_ext_protected_content { struct i915_user_extension base; __u32 flags; }; **Members** ``base`` Extension link. See struct i915_user_extension. ``flags`` reserved for future usage, currently MBZ”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj+Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj'TubhŒ:”…”�”}”(hj'Th²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mühj#Tubj)�”}”(hŒkstruct drm_i915_gem_create_ext_protected_content { struct i915_user_extension base; __u32 flags; };”h]”hŒkstruct drm_i915_gem_create_ext_protected_content { struct i915_user_extension base; __u32 flags; };”…”�”}”hjDTsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mþhj#Tubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjUTh]”hŒMembers”…”�”}”(hjWTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjSTubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mhj#Tubj§)�”}”(hhh]”(j¬)�”}”(hŒ9``base`` Extension link. See struct i915_user_extension. ”h]”(j²)�”}”(hŒ``base``”h]”jC)�”}”(hjtTh]”hŒbase”…”�”}”(hjvTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjrTubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MhjnTubjÃ)�”}”(hhh]”hì)�”}”(hŒ/Extension link. See struct i915_user_extension.”h]”hŒ/Extension link. See struct i915_user_extension.”…”�”}”(hj�Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j‰Th´MhjŠTubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjnTubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j‰Th´MhjkTubj¬)�”}”(hŒ2``flags`` reserved for future usage, currently MBZ”h]”(j²)�”}”(hŒ ``flags``”h]”jC)�”}”(hj­Th]”hŒflags”…”�”}”(hj¯Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj«Tubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mhj§TubjÃ)�”}”(hhh]”hì)�”}”(hŒ(reserved for future usage, currently MBZ”h]”hŒ(reserved for future usage, currently MBZ”…”�”}”(hjÆTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MhjÃTubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj§Tubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÂTh´MhjkTubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj#Tubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhjih²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjðTh]”hŒ Description”…”�”}”(hjòTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjîTubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M hjih²hubhì)�”}”(hX€If this extension is provided, buffer contents are expected to be protected by PXP encryption and require decryption for scan out and processing. This is only possible on platforms that have PXP enabled, on all other scenarios using this extension will cause the ioctl to fail and return -ENODEV. The flags parameter is reserved for future expansion and must currently be set to zero.”h]”hX€If this extension is provided, buffer contents are expected to be protected by PXP encryption and require decryption for scan out and processing. This is only possible on platforms that have PXP enabled, on all other scenarios using this extension will cause the ioctl to fail and return -ENODEV. The flags parameter is reserved for future expansion and must currently be set to zero.”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mùhjih²hubhì)�”}”(hŒHThe buffer contents are considered invalid after a PXP session teardown.”h]”hŒHThe buffer contents are considered invalid after a PXP session teardown.”…”�”•/}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mhjih²hubhì)�”}”(hXThe encryption is guaranteed to be processed correctly only if the object is submitted with a context created using the I915_CONTEXT_PARAM_PROTECTED_CONTENT flag. This will also enable extra checks at submission time on the validity of the objects involved.”h]”hXThe encryption is guaranteed to be processed correctly only if the object is submitted with a context created using the I915_CONTEXT_PARAM_PROTECTED_CONTENT flag. This will also enable extra checks at submission time on the validity of the objects involved.”…”�”}”(hj$Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mhjih²hubhì)�”}”(hŒ8Below is an example on how to create a protected object:”h]”hŒ8Below is an example on how to create a protected object:”…”�”}”(hj3Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mhjih²hubj)�”}”(hXhstruct drm_i915_gem_create_ext_protected_content protected_ext = { .base = { .name = I915_GEM_CREATE_EXT_PROTECTED_CONTENT }, .flags = 0, }; struct drm_i915_gem_create_ext create_ext = { .size = PAGE_SIZE, .extensions = (uintptr_t)&protected_ext, }; int err = ioctl(fd, DRM_IOCTL_I915_GEM_CREATE_EXT, &create_ext); if (err) ...”h]”hXhstruct drm_i915_gem_create_ext_protected_content protected_ext = { .base = { .name = I915_GEM_CREATE_EXT_PROTECTED_CONTENT }, .flags = 0, }; struct drm_i915_gem_create_ext create_ext = { .size = PAGE_SIZE, .extensions = (uintptr_t)&protected_ext, }; int err = ioctl(fd, DRM_IOCTL_I915_GEM_CREATE_EXT, &create_ext); if (err) ...”…”�”}”hjBUsbah}”(h]”h ]”h"]”h$]”h&]”j­j®j¾‰j¿jÀjÁ}”uh1jh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M hjih²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ*drm_i915_gem_create_ext_set_pat (C struct)”Œ!c.drm_i915_gem_create_ext_set_pat”hNt”auh1jJhjih²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_i915_gem_create_ext_set_pat”h]”jg)�”}”(hŒ&struct drm_i915_gem_create_ext_set_pat”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjkUh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjgUh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´Mubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyUh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjgUh²hh³jxUh´Mubj�)�”}”(hŒdrm_i915_gem_create_ext_set_pat”h]”j–)�”}”(hjeUh]”hŒdrm_i915_gem_create_ext_set_pat”…”�”}”(hj‹Uh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj‡Uubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjgUh²hh³jxUh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjcUh²hh³jxUh´Mubah}”(h]”j^Uah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jxUh´Mhj`Uh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ*The I915_GEM_CREATE_EXT_SET_PAT extension.”h]”hŒ*The I915_GEM_CREATE_EXT_SET_PAT extension.”…”�”}”(hj­Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M!hjªUh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj`Uh²hh³jxUh´Mubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjÅUjçjÅUjè‰jé‰jê‰uh1j[h²hhjih³Nh´Nubjì)�”}”(hXä**Definition**:: struct drm_i915_gem_create_ext_set_pat { struct i915_user_extension base; __u32 pat_index; __u32 rsvd; }; **Members** ``base`` Extension link. See struct i915_user_extension. ``pat_index`` PAT index to be set PAT index is a bit field in Page Table Entry to control caching behaviors for GPU accesses. The definition of PAT index is platform dependent and can be found in hardware specifications, ``rsvd`` reserved for future use”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjÑUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÍUubhŒ:”…”�”}”(hjÍUh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M%hjÉUubj)�”}”(hŒustruct drm_i915_gem_create_ext_set_pat { struct i915_user_extension base; __u32 pat_index; __u32 rsvd; };”h]”hŒustruct drm_i915_gem_create_ext_set_pat { struct i915_user_extension base; __u32 pat_index; __u32 rsvd; };”…”�”}”hjêUsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M'hjÉUubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjûUh]”hŒMembers”…”�”}”(hjýUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjùUubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M-hjÉUubj§)�”}”(hhh]”(j¬)�”}”(hŒ9``base`` Extension link. See struct i915_user_extension. ”h]”(j²)�”}”(hŒ``base``”h]”jC)�”}”(hjVh]”hŒbase”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjVubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M9hjVubjÃ)�”}”(hhh]”hì)�”}”(hŒ/Extension link. See struct i915_user_extension.”h]”hŒ/Extension link. See struct i915_user_extension.”…”�”}”(hj3Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j/Vh´M9hj0Vubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjVubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j/Vh´M9hjVubj¬)�”}”(hŒÝ``pat_index`` PAT index to be set PAT index is a bit field in Page Table Entry to control caching behaviors for GPU accesses. The definition of PAT index is platform dependent and can be found in hardware specifications, ”h]”(j²)�”}”(hŒ ``pat_index``”h]”jC)�”}”(hjSVh]”hŒ pat_index”…”�”}”(hjUVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjQVubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M?hjMVubjÃ)�”}”(hhh]”hì)�”}”(hŒÎPAT index to be set PAT index is a bit field in Page Table Entry to control caching behaviors for GPU accesses. The definition of PAT index is platform dependent and can be found in hardware specifications,”h]”hŒÎPAT index to be set PAT index is a bit field in Page Table Entry to control caching behaviors for GPU accesses. The definition of PAT index is platform dependent and can be found in hardware specifications,”…”�”}”(hjlVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M<hjiVubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjMVubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jhVh´M?hjVubj¬)�”}”(hŒ ``rsvd`` reserved for future use”h]”(j²)�”}”(hŒ``rsvd``”h]”jC)�”}”(hj�Vh]”hŒrsvd”…”�”}”(hj�Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj‹Vubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MAhj‡VubjÃ)�”}”(hhh]”hì)�”}”(hŒreserved for future use”h]”hŒreserved for future use”…”�”}”(hj¦Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MBhj£Vubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj‡Vubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j¢Vh´MAhjVubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjÉUubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhjih²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjÐVh]”hŒ Description”…”�”}”(hjÒVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÎVubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´MEhjih²hubhì)�”}”(hŒhIf this extension is provided, the specified caching policy (PAT index) is applied to the buffer object.”h]”hŒhIf this extension is provided, the specified caching policy (PAT index) is applied to the buffer object.”…”�”}”(hjæVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M"hjih²hubhì)�”}”(hŒLBelow is an example on how to create an object with specific caching policy:”h]”hŒLBelow is an example on how to create an object with specific caching policy:”…”�”}”(hjõVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M%hjih²hubj)�”}”(hXTstruct drm_i915_gem_create_ext_set_pat set_pat_ext = { .base = { .name = I915_GEM_CREATE_EXT_SET_PAT }, .pat_index = 0, }; struct drm_i915_gem_create_ext create_ext = { .size = PAGE_SIZE, .extensions = (uintptr_t)&set_pat_ext, }; int err = ioctl(fd, DRM_IOCTL_I915_GEM_CREATE_EXT, &create_ext); if (err) ...”h]”hXTstruct drm_i915_gem_create_ext_set_pat set_pat_ext = { .base = { .name = I915_GEM_CREATE_EXT_SET_PAT }, .pat_index = 0, }; struct drm_i915_gem_create_ext create_ext = { .size = PAGE_SIZE, .extensions = (uintptr_t)&set_pat_ext, }; int err = ioctl(fd, DRM_IOCTL_I915_GEM_CREATE_EXT, &create_ext); if (err) ...”…”�”}”hjWsbah}”(h]”h ]”h"]”h$]”h&]”j­j®j¾‰j¿jÀjÁ}”uh1jh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:10: ./include/uapi/drm/i915_drm.h”h´M'hjih²hubeh}”(h]”jah ]”h"]”Œ drm/i915 uapi”ah$]”h&]”uh1hµhh·h²hh³hÌh´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒdrm/nouveau uAPI”h]”hŒdrm/nouveau uAPI”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÊj;uh1hºhjWh²hh³hÌh´K ubh¶)�”}”(hhh]”(h»)�”}”(hŒVM_BIND / EXEC uAPI”h]”hŒVM_BIND / EXEC uAPI”…”�”}”(hj/Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÊjZuh1hºhj,Wh²hh³hÌh´Kubhì)�”}”(hŒvNouveau's VM_BIND / EXEC UAPI consists of three ioctls: DRM_NOUVEAU_VM_INIT, DRM_NOUVEAU_VM_BIND and DRM_NOUVEAU_EXEC.”h]”hŒxNouveau’s VM_BIND / EXEC UAPI consists of three ioctls: DRM_NOUVEAU_VM_INIT, DRM_NOUVEAU_VM_BIND and DRM_NOUVEAU_EXEC.”…”�”}”(hj=Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œf/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:18: ./drivers/gpu/drm/nouveau/nouveau_exec.c”h´Khj,Wh²hubhì)�”}”(hŒÍIn order to use the UAPI firstly a user client must initialize the VA space using the DRM_NOUVEAU_VM_INIT ioctl specifying which region of the VA space should be managed by the kernel and which by the UMD.”h]”hŒÍIn order to use the UAPI firstly a user client must initialize the VA space using the DRM_NOUVEAU_VM_INIT ioctl specifying which region of the VA space should be managed by the kernel and which by the UMD.”…”�”}”(hjLWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œf/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:18: ./drivers/gpu/drm/nouveau/nouveau_exec.c”h´Khj,Wh²hubhì)�”}”(hXDThe DRM_NOUVEAU_VM_BIND ioctl provides clients an interface to manage the userspace-managable portion of the VA space. It provides operations to map and unmap memory. Mappings may be flagged as sparse. Sparse mappings are not backed by a GEM object and the kernel will ignore GEM handles provided alongside a sparse mapping.”h]”hXDThe DRM_NOUVEAU_VM_BIND ioctl provides clients an interface to manage the userspace-managable portion of the VA space. It provides operations to map and unmap memory. Mappings may be flagged as sparse. Sparse mappings are not backed by a GEM object and the kernel will ignore GEM handles provided alongside a sparse mapping.”…”�”}”(hj[Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œf/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:18: ./drivers/gpu/drm/nouveau/nouveau_exec.c”h´Khj,Wh²hubhì)�”}”(hXBUserspace may request memory backed mappings either within or outside of the bounds (but not crossing those bounds) of a previously mapped sparse mapping. Subsequently requested memory backed mappings within a sparse mapping will take precedence over the corresponding range of the sparse mapping. If such memory backed mappings are unmapped the kernel will make sure that the corresponding sparse mapping will take their place again. Requests to unmap a sparse mapping that still contains memory backed mappings will result in those memory backed mappings being unmapped first.”h]”hXBUserspace may request memory backed mappings either within or outside of the bounds (but not crossing those bounds) of a previously mapped sparse mapping. Subsequently requested memory backed mappings within a sparse mapping will take precedence over the corresponding range of the sparse mapping. If such memory backed mappings are unmapped the kernel will make sure that the corresponding sparse mapping will take their place again. Requests to unmap a sparse mapping that still contains memory backed mappings will result in those memory backed mappings being unmapped first.”…”�”}”(hjjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œf/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:18: ./drivers/gpu/drm/nouveau/nouveau_exec.c”h´Khj,Wh²hubhì)�”}”(hX­Unmap requests are not bound to the range of existing mappings and can even overlap the bounds of sparse mappings. For such a request the kernel will make sure to unmap all memory backed mappings within the given range, splitting up memory backed mappings which are only partially contained within the given range. Unmap requests with the sparse flag set must match the range of a previously mapped sparse mapping exactly though.”h]”hX­Unmap requests are not bound to the range of existing mappings and can even overlap the bounds of sparse mappings. For such a request the kernel will make sure to unmap all memory backed mappings within the given range, splitting up memory backed mappings which are only partially contained within the given range. Unmap requests with the sparse flag set must match the range of a previously mapped sparse mapping exactly though.”…”�”}”(hjyWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œf/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:18: ./drivers/gpu/drm/nouveau/nouveau_exec.c”h´K&hj,Wh²hubhì)�”}”(hŒßWhile the kernel generally permits arbitrary sequences and ranges of memory backed mappings being mapped and unmapped, either within a single or multiple VM_BIND ioctl calls, there are some restrictions for sparse mappings.”h]”hŒßWhile the kernel generally permits arbitrary sequences and ranges of memory backed mappings being mapped and unmapped, either within a single or multiple VM_BIND ioctl calls, there are some restrictions for sparse mappings.”…”�”}”(hjˆWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œf/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:18: ./drivers/gpu/drm/nouveau/nouveau_exec.c”h´K-hj,Wh²hubj§)�”}”(hhh]”j¬)�”}”(hXxThe kernel does not permit to: - unmap non-existent sparse mappings - unmap a sparse mapping and map a new sparse mapping overlapping the range of the previously unmapped sparse mapping within the same VM_BIND ioctl - unmap a sparse mapping and map new memory backed mappings overlapping the range of the previously unmapped sparse mapping within the same VM_BIND ioctl ”h]”(j²)�”}”(hŒThe kernel does not permit to:”h]”hŒThe kernel does not permit to:”…”�”}”(hjžWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œf/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:18: ./drivers/gpu/drm/nouveau/nouveau_exec.c”h´K7hjšWubjÃ)�”}”(hhh]”hâ)�”}”(hhh]”(hç)�”}”(hŒ"unmap non-existent sparse mappings”h]”hì)�”}”(hjµWh]”hŒ"unmap non-existent sparse mappings”…”�”}”(hj·Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œf/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:18: ./drivers/gpu/drm/nouveau/nouveau_exec.c”h´K2hj³Wubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj°Wubhç)�”}”(hŒ‘unmap a sparse mapping and map a new sparse mapping overlapping the range of the previously unmapped sparse mapping within the same VM_BIND ioctl”h]”hì)�”}”(hŒ‘unmap a sparse mapping and map a new sparse mapping overlapping the range of the previously unmapped sparse mapping within the same VM_BIND ioctl”h]”hŒ‘unmap a sparse mapping and map a new sparse mapping overlapping the range of the previously unmapped sparse mapping within the same VM_BIND ioctl”…”�”}”(hjÏWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œf/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:18: ./drivers/gpu/drm/nouveau/nouveau_exec.c”h´K3hjËWubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj°Wubhç)�”}”(hŒ˜unmap a sparse mapping and map new memory backed mappings overlapping the range of the previously unmapped sparse mapping within the same VM_BIND ioctl ”h]”hì)�”}”(hŒ—unmap a sparse mapping and map new memory backed mappings overlapping the range of the previously unmapped sparse mapping within the same VM_BIND ioctl”h]”hŒ—unmap a sparse mapping and map new memory backed mappings overlapping the range of the previously unmapped sparse mapping within the same VM_BIND ioctl”…”�”}”(hjèWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œf/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:18: ./drivers/gpu/drm/nouveau/nouveau_exec.c”h´K5hjäWubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj°Wubeh}”(h]”h ]”h"]”h$]”h&]”jÀ jÁ uh1háh³jÄWh´K2hj­Wubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjšWubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j¬Wh´K7hj—Wubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj,Wh²hh³Œf/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:18: ./drivers/gpu/drm/nouveau/nouveau_exec.c”h´Nubhì)�”}”(hX›When using the VM_BIND ioctl to request the kernel to map memory to a given virtual address in the GPU's VA space there is no guarantee that the actual mappings are created in the GPU's MMU. If the given memory is swapped out at the time the bind operation is executed the kernel will stash the mapping details into it's internal allocator and create the actual MMU mappings once the memory is swapped back in. While this is transparent for userspace, it is guaranteed that all the backing memory is swapped back in and all the memory mappings, as requested by userspace previously, are actually mapped once the DRM_NOUVEAU_EXEC ioctl is called to submit an exec job.”h]”hX¡When using the VM_BIND ioctl to request the kernel to map memory to a given virtual address in the GPU’s VA space there is no guarantee that the actual mappings are created in the GPU’s MMU. If the given memory is swapped out at the time the bind operation is executed the kernel will stash the mapping details into it’s internal allocator and create the actual MMU mappings once the memory is swapped back in. While this is transparent for userspace, it is guaranteed that all the backing memory is swapped back in and all the memory mappings, as requested by userspace previously, are actually mapped once the DRM_NOUVEAU_EXEC ioctl is called to submit an exec job.”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œf/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:18: ./drivers/gpu/drm/nouveau/nouveau_exec.c”h´K9hj,Wh²hubhì)�”}”(hXŸA VM_BIND job can be executed either synchronously or asynchronously. If executed asynchronously, userspace may provide a list of syncobjs this job will wait for and/or a list of syncobj the kernel will signal once the VM_BIND job finished execution. If executed synchronously the ioctl will block until the bind job is finished. For synchronous jobs the kernel will not permit any syncobjs submitted to the kernel.”h]”hXŸA VM_BIND job can be executed either synchronously or asynchronously. If executed asynchronously, userspace may provide a list of syncobjs this job will wait for and/or a list of syncobj the kernel will signal once the VM_BIND job finished execution. If executed synchronously the ioctl will block until the bind job is finished. For synchronous jobs the kernel will not permit any syncobjs submitted to the kernel.”…”�”}”(hj%Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œf/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:18: ./drivers/gpu/drm/nouveau/nouveau_exec.c”h´KChj,Wh²hubhì)�”}”(hŒÆTo execute a push buffer the UAPI provides the DRM_NOUVEAU_EXEC ioctl. EXEC jobs are always executed asynchronously, and, equal to VM_BIND jobs, provide the option to synchronize them with syncobjs.”h]”hŒÆTo execute a push buffer the UAPI provides the DRM_NOUVEAU_EXEC ioctl. EXEC jobs are always executed asynchronously, and, equal to VM_BIND jobs, provide the option to synchronize them with syncobjs.”…”�”}”(hj4Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œf/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:18: ./drivers/gpu/drm/nouveau/nouveau_exec.c”h´KJhj,Wh²hubhì)�”}”(hŒOBesides that, EXEC jobs can be scheduled for a specified channel to execute on.”h]”hŒOBesides that, EXEC jobs can be scheduled for a specified channel to execute on.”…”�”}”(hjCXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œf/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:18: ./drivers/gpu/drm/nouveau/nouveau_exec.c”h´KNhj,Wh²hubhì)�”}”(hX$Since VM_BIND jobs update the GPU's VA space on job submit, EXEC jobs do have an up to date view of the VA space. However, the actual mappings might still be pending. Hence, EXEC jobs require to have the particular fences - of the corresponding VM_BIND jobs they depend on - attached to them.”h]”hX&Since VM_BIND jobs update the GPU’s VA space on job submit, EXEC jobs do have an up to date view of the VA space. However, the actual mappings might still be pending. Hence, EXEC jobs require to have the particular fences - of the corresponding VM_BIND jobs they depend on - attached to them.”…”�”}”(hjRXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œf/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:18: ./drivers/gpu/drm/nouveau/nouveau_exec.c”h´KPhj,Wh²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_nouveau_sync (C struct)”Œc.drm_nouveau_sync”hNt”auh1jJhj,Wh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_nouveau_sync”h]”jg)�”}”(hŒstruct drm_nouveau_sync”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjzXh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjvXh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´Kubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆXh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjvXh²hh³j‡Xh´Kubj�)�”}”(hŒdrm_nouveau_sync”h]”j–)�”}”(hjtXh]”hŒdrm_nouveau_sync”…”�”}”(hjšXh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj–Xubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjvXh²hh³j‡Xh´Kubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjrXh²hh³j‡Xh´Kubah}”(h]”jmXah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³j‡Xh´KhjoXh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ sync object”h]”hŒ sync object”…”�”}”(hj¼Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´Káhj¹Xh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjoXh²hh³j‡Xh´Kubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjÔXjçjÔXjè‰jé‰jê‰uh1j[h²hhj,Wh³Nh´Nubjì)�”}”(hX!**Definition**:: struct drm_nouveau_sync { __u32 flags; #define DRM_NOUVEAU_SYNC_SYNCOBJ 0x0; #define DRM_NOUVEAU_SYNC_TIMELINE_SYNCOBJ 0x1; #define DRM_NOUVEAU_SYNC_TYPE_MASK 0xf; __u32 handle; __u64 timeline_value; }; **Members** ``flags`` the flags for a sync object The first 8 bits are used to determine the type of the sync object. ``handle`` the handle of the sync object ``timeline_value`` The timeline point of the sync object in case the syncobj is of type DRM_NOUVEAU_SYNC_TIMELINE_SYNCOBJ.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjàXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÜXubhŒ:”…”�”}”(hjÜXh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´KåhjØXubj)�”}”(hŒÖstruct drm_nouveau_sync { __u32 flags; #define DRM_NOUVEAU_SYNC_SYNCOBJ 0x0; #define DRM_NOUVEAU_SYNC_TIMELINE_SYNCOBJ 0x1; #define DRM_NOUVEAU_SYNC_TYPE_MASK 0xf; __u32 handle; __u64 timeline_value; };”h]”hŒÖstruct drm_nouveau_sync { __u32 flags; #define DRM_NOUVEAU_SYNC_SYNCOBJ 0x0; #define DRM_NOUVEAU_SYNC_TIMELINE_SYNCOBJ 0x1; #define DRM_NOUVEAU_SYNC_TYPE_MASK 0xf; __u32 handle; __u64 timeline_value; };”…”�”}”hjùXsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´KçhjØXubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj Yh]”hŒMembers”…”�”}”(hj Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjYubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´KðhjØXubj§)�”}”(hhh]”(j¬)�”}”(hŒk``flags`` the flags for a sync object The first 8 bits are used to determine the type of the sync object. ”h]”(j²)�”}”(hŒ ``flags``”h]”jC)�”}”(hj)Yh]”hŒflags”…”�”}”(hj+Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj'Yubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´Këhj#YubjÃ)�”}”(hhh]”(hì)�”}”(hŒthe flags for a sync object”h]”hŒthe flags for a sync object”…”�”}”(hjBYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´Kéhj?Yubhì)�”}”(hŒCThe first 8 bits are used to determine the type of the sync object.”h]”hŒCThe first 8 bits are used to determine the type of the sync object.”…”�”}”(hjQYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j>Yh´Këhj?Yubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj#Yubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j>Yh´Këhj Yubj¬)�”}”(hŒ)``handle`` the handle of the sync object ”h]”(j²)�”}”(hŒ ``handle``”h]”jC)�”}”(hjqYh]”hŒhandle”…”�”}”(hjsYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjoYubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´KòhjkYubjÃ)�”}”(hhh]”hì)�”}”(hŒthe handle of the sync object”h]”hŒthe handle of the sync object”…”�”}”(hjŠYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j†Yh´Kòhj‡Yubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjkYubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j†Yh´Kòhj Yubj¬)�”}”(hŒz``timeline_value`` The timeline point of the sync object in case the syncobj is of type DRM_NOUVEAU_SYNC_TIMELINE_SYNCOBJ.”h]”(j²)�”}”(hŒ``timeline_value``”h]”jC)�”}”(hjªYh]”hŒtimeline_value”…”�”}”(hj¬Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj¨Yubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´Köhj¤YubjÃ)�”}”(hhh]”hì)�”}”(hŒgThe timeline point of the sync object in case the syncobj is of type DRM_NOUVEAU_SYNC_TIMELINE_SYNCOBJ.”h]”hŒgThe timeline point of the sync object in case the syncobj is of type DRM_NOUVEAU_SYNC_TIMELINE_SYNCOBJ.”…”�”}”(hjÃYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¿Yh´KöhjÀYubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj¤Yubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j¿Yh´Köhj Yubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjØXubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj,Wh²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjìYh]”hŒ Description”…”�”}”(hjîYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjêYubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´Kúhj,Wh²hubhì)�”}”(hŒuThis structure serves as synchronization mechanism for (potentially) asynchronous operations such as EXEC or VM_BIND.”h]”hŒuThis structure serves as synchronization mechanism for (potentially) asynchronous operations such as EXEC or VM_BIND.”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´Kâhj,Wh²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_nouveau_vm_init (C struct)”Œc.drm_nouveau_vm_init”hNt”auh1jJhj,Wh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_nouveau_vm_init”h]”jg)�”}”(hŒstruct drm_nouveau_vm_init”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj*Zh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj&Zh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´Kèubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8Zh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hj&Zh²hh³j7Zh´Kèubj�)�”}”(hŒdrm_nouveau_vm_init”h]”j–)�”}”(hj$Zh]”hŒdrm_nouveau_vm_init”…”�”}”(hjJZh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjFZubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj&Zh²hh³j7Zh´Kèubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hj"Zh²hh³j7Zh´Kèubah}”(h]”jZah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³j7Zh´KèhjZh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒGPU VA space init structure”h]”hŒGPU VA space init structure”…”�”}”(hjlZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´KþhjiZh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjZh²hh³j7Zh´Kèubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj„Zjçj„Zjè‰jé‰jê‰uh1j[h²hhj,Wh³Nh´Nubjì)�”}”(hX&**Definition**:: struct drm_nouveau_vm_init { __u64 kernel_managed_addr; __u64 kernel_managed_size; }; **Members** ``kernel_managed_addr`` start address of the kernel managed VA space region ``kernel_managed_size`` size of the kernel managed VA space region in bytes”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj�Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjŒZubhŒ:”…”�”}”(hjŒZh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´MhjˆZubj)�”}”(hŒ]struct drm_nouveau_vm_init { __u64 kernel_managed_addr; __u64 kernel_managed_size; };”h]”hŒ]struct drm_nouveau_vm_init { __u64 kernel_managed_addr; __u64 kernel_managed_size; };”…”�”}”hj©Zsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´MhjˆZubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjºZh]”hŒMembers”…”�”}”(hj¼Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj¸Zubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´M hjˆZubj§)�”}”(hhh]”(j¬)�”}”(hŒL``kernel_managed_addr`` start address of the kernel managed VA space region ”h]”(j²)�”}”(hŒ``kernel_managed_addr``”h]”jC)�”}”(hjÙZh]”hŒkernel_managed_addr”…”�”}”(hjÛZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj×Zubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´M hjÓZubjÃ)�”}”(hhh]”hì)�”}”(hŒ3start address of the kernel managed VA space region”h]”hŒ3start address of the kernel managed VA space region”…”�”}”(hjòZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´M hjïZubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÓZubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jîZh´M hjÐZubj¬)�”}”(hŒK``kernel_managed_size`` size of the kernel managed VA space region in bytes”h]”(j²)�”}”(hŒ``kernel_managed_size``”h]”jC)�”}”(hj[h]”hŒkernel_managed_size”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´Mhj [ubjÃ)�”}”(hhh]”hì)�”}”(hŒ3size of the kernel managed VA space region in bytes”h]”hŒ3size of the kernel managed VA space region in bytes”…”�”}”(hj,[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j([h´Mhj)[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj [ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j([h´MhjÐZubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjˆZubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj,Wh²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjU[h]”hŒ Description”…”�”}”(hjW[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjS[ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´Mhj,Wh²hubhì)�”}”(hŒ˜Used to initialize the GPU's VA space for a user client, telling the kernel which portion of the VA space is managed by the UMD and kernel respectively.”h]”hŒšUsed to initialize the GPU’s VA space for a user client, telling the kernel which portion of the VA space is managed by the UMD and kernel respectively.”…”�”}”(hjk[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´Kÿhj,Wh²hubhì)�”}”(hŒ£For the UMD to use the VM_BIND uAPI, this must be called before any BOs or channels are created; if called afterwards DRM_IOCTL_NOUVEAU_VM_INIT fails with -ENOSYS.”h]”hŒ£For the UMD to use the VM_BIND uAPI, this must be called before any BOs or channels are created; if called afterwards DRM_IOCTL_NOUVEAU_VM_INIT fails with -ENOSYS.”…”�”}”(hjz[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´Mhj,Wh²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ!drm_nouveau_vm_bind_op (C struct)”Œc.drm_nouveau_vm_bind_op”hNt”auh1jJhj,Wh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_nouveau_vm_bind_op”h]”jg)�”}”(hŒstruct drm_nouveau_vm_bind_op”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj¢[h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjž[h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”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Œdrm_nouveau_vm_bind_op”h]”j–)�”}”(hjœ[h]”hŒdrm_nouveau_vm_bind_op”…”�”}”(hjÂ[h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj¾[ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjž[h²hh³j¯[h´M ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”hì)�”}”(hŒVM_BIND operation”h]”hŒVM_BIND operation”…”�”}”(hjä[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´Mhjá[h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj—[h²hh³j¯[h´M ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjü[jçjü[jè‰jé‰jê‰uh1j[h²hhj,Wh³Nh´Nubjì)�”}”(hX’**Definition**:: struct drm_nouveau_vm_bind_op { __u32 op; #define DRM_NOUVEAU_VM_BIND_OP_MAP 0x0; #define DRM_NOUVEAU_VM_BIND_OP_UNMAP 0x1; __u32 flags; #define DRM_NOUVEAU_VM_BIND_SPARSE (1 << 8); __u32 handle; __u32 pad; __u64 addr; __u64 bo_offset; __u64 range; }; **Members** ``op`` the operation type Supported values: ``DRM_NOUVEAU_VM_BIND_OP_MAP`` - Map a GEM object to the GPU's VA space. Optionally, the :c:type:`DRM_NOUVEAU_VM_BIND_SPARSE` flag can be passed to instruct the kernel to create sparse mappings for the given range. ``DRM_NOUVEAU_VM_BIND_OP_UNMAP`` - Unmap an existing mapping in the GPU's VA space. If the region the mapping is located in is a sparse region, new sparse mappings are created where the unmapped (memory backed) mapping was mapped previously. To remove a sparse region the :c:type:`DRM_NOUVEAU_VM_BIND_SPARSE` must be set. ``flags`` the flags for a :c:type:`drm_nouveau_vm_bind_op` Supported values: ``DRM_NOUVEAU_VM_BIND_SPARSE`` - Indicates that an allocated VA space region should be sparse. ``handle`` the handle of the DRM GEM object to map ``pad`` 32 bit padding, should be 0 ``addr`` the address the VA space region or (memory backed) mapping should be mapped to ``bo_offset`` the offset within the BO backing the mapping ``range`` the size of the requested mapping in bytes”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj\ubhŒ:”…”�”}”(hj\h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´Mhj\ubj)�”}”(hXstruct drm_nouveau_vm_bind_op { __u32 op; #define DRM_NOUVEAU_VM_BIND_OP_MAP 0x0; #define DRM_NOUVEAU_VM_BIND_OP_UNMAP 0x1; __u32 flags; #define DRM_NOUVEAU_VM_BIND_SPARSE (1 << 8); __u32 handle; __u32 pad; __u64 addr; __u64 bo_offset; __u64 range; };”h]”hXstruct drm_nouveau_vm_bind_op { __u32 op; #define DRM_NOUVEAU_VM_BIND_OP_MAP 0x0; #define DRM_NOUVEAU_VM_BIND_OP_UNMAP 0x1; __u32 flags; #define DRM_NOUVEAU_VM_BIND_SPARSE (1 << 8); __u32 handle; __u32 pad; __u64 addr; __u64 bo_offset; __u64 range; };”…”�”}”hj!\sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´Mhj\ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj2\h]”hŒMembers”…”�”}”(hj4\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj0\ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´M(hj\ubj§)�”}”(hhh]”(j¬)�”}”(hXH``op`` the operation type Supported values: ``DRM_NOUVEAU_VM_BIND_OP_MAP`` - Map a GEM object to the GPU's VA space. Optionally, the :c:type:`DRM_NOUVEAU_VM_BIND_SPARSE` flag can be passed to instruct the kernel to create sparse mappings for the given range. ``DRM_NOUVEAU_VM_BIND_OP_UNMAP`` - Unmap an existing mapping in the GPU's VA space. If the region the mapping is located in is a sparse region, new sparse mappings are created where the unmapped (memory backed) mapping was mapped previously. To remove a sparse region the :c:type:`DRM_NOUVEAU_VM_BIND_SPARSE` must be set. ”h]”(j²)�”}”(hŒ``op``”h]”jC)�”}”(hjQ\h]”hŒop”…”�”}”(hjS\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjO\ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´M*hjK\ubjÃ)�”}”(hhh]”(hì)�”}”(hŒthe operation type”h]”hŒthe operation type”…”�”}”(hjj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´Mhjg\ubhì)�”}”(hŒSupported values:”h]”hŒSupported values:”…”�”}”(hjy\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´Mhjg\ubhì)�”}”(hŒÖ``DRM_NOUVEAU_VM_BIND_OP_MAP`` - Map a GEM object to the GPU's VA space. Optionally, the :c:type:`DRM_NOUVEAU_VM_BIND_SPARSE` flag can be passed to instruct the kernel to create sparse mappings for the given range.”h]”(jC)�”}”(hŒ``DRM_NOUVEAU_VM_BIND_OP_MAP``”h]”hŒDRM_NOUVEAU_VM_BIND_OP_MAP”…”�”}”(hjŒ\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjˆ\ubhŒ= - Map a GEM object to the GPU’s VA space. Optionally, the ”…”�”}”(hjˆ\h²hh³Nh´Nubh)�”}”(hŒ$:c:type:`DRM_NOUVEAU_VM_BIND_SPARSE`”h]”jC)�”}”(hj \h]”hŒDRM_NOUVEAU_VM_BIND_SPARSE”…”�”}”(hj¢\h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjž\ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒDRM_NOUVEAU_VM_BIND_SPARSE”uh1hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´M!hjˆ\ubhŒY flag can be passed to instruct the kernel to create sparse mappings for the given range.”…”�”}”(hjˆ\h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j½\h´M!hjg\ubhì)�”}”(hXA``DRM_NOUVEAU_VM_BIND_OP_UNMAP`` - Unmap an existing mapping in the GPU's VA space. If the region the mapping is located in is a sparse region, new sparse mappings are created where the unmapped (memory backed) mapping was mapped previously. To remove a sparse region the :c:type:`DRM_NOUVEAU_VM_BIND_SPARSE` must be set.”h]”(jC)�”}”(hŒ ``DRM_NOUVEAU_VM_BIND_OP_UNMAP``”h]”hŒDRM_NOUVEAU_VM_BIND_OP_UNMAP”…”�”}”(hjÌ\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÈ\ubhŒò - Unmap an existing mapping in the GPU’s VA space. If the region the mapping is located in is a sparse region, new sparse mappings are created where the unmapped (memory backed) mapping was mapped previously. To remove a sparse region the ”…”�”}”(hjÈ\h²hh³Nh´Nubh)�”}”(hŒ$:c:type:`DRM_NOUVEAU_VM_BIND_SPARSE`”h]”jC)�”}”(hjà\h]”hŒDRM_NOUVEAU_VM_BIND_SPARSE”…”�”}”(hjâ\h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjÞ\ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒDRM_NOUVEAU_VM_BIND_SPARSE”uh1hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´M&hjÈ\ubhŒ must be set.”…”�”}”(hjÈ\h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jý\h´M&hjg\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjK\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jf\h´M*hjH\ubj¬)�”}”(hŒ®``flags`` the flags for a :c:type:`drm_nouveau_vm_bind_op` Supported values: ``DRM_NOUVEAU_VM_BIND_SPARSE`` - Indicates that an allocated VA space region should be sparse. ”h]”(j²)�”}”(hŒ ``flags``”h]”jC)�”}”(hj]h]”hŒflags”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´M5hj]ubjÃ)�”}”(hhh]”(hì)�”}”(hŒ0the flags for a :c:type:`drm_nouveau_vm_bind_op`”h]”(hŒthe flags for a ”…”�”}”(hj3]h²hh³Nh´Nubh)�”}”(hŒ :c:type:`drm_nouveau_vm_bind_op`”h]”jC)�”}”(hj=]h]”hŒdrm_nouveau_vm_bind_op”…”�”}”(hj?]h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj;]ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒdrm_nouveau_vm_bind_op”uh1hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´M0hj3]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jZ]h´M0hj0]ubhì)�”}”(hŒSupported values:”h]”hŒSupported values:”…”�”}”(hja]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´M2hj0]ubhì)�”}”(hŒ^``DRM_NOUVEAU_VM_BIND_SPARSE`` - Indicates that an allocated VA space region should be sparse.”h]”(jC)�”}”(hŒ``DRM_NOUVEAU_VM_BIND_SPARSE``”h]”hŒDRM_NOUVEAU_VM_BIND_SPARSE”…”�”}”(hjt]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjp]ubhŒ@ - Indicates that an allocated VA space region should be sparse.”…”�”}”(hjp]h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´M4hj0]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j/]h´M5hjH\ubj¬)�”}”(hŒ3``handle`` the handle of the DRM GEM object to map ”h]”(j²)�”}”(hŒ ``handle``”h]”jC)�”}”(hjŸ]h]”hŒhandle”…”�”}”(hj¡]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj�]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´M:hj™]ubjÃ)�”}”(hhh]”hì)�”}”(hŒ'the handle of the DRM GEM object to map”h]”hŒ'the handle of the DRM GEM object to map”…”�”}”(hj¸]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j´]h´M:hjµ]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj™]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j´]h´M:hjH\ubj¬)�”}”(hŒ$``pad`` 32 bit padding, should be 0 ”h]”(j²)�”}”(hŒ``pad``”h]”jC)�”}”(hjØ]h]”hŒpad”…”�”}”(hjÚ]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÖ]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´M>hjÒ]ubjÃ)�”}”(hhh]”hì)�”}”(hŒ32 bit padding, should be 0”h]”hŒ32 bit padding, should be 0”…”�”}”(hjñ]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jí]h´M>hjî]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÒ]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jí]h´M>hjH\ubj¬)�”}”(hŒX``addr`` the address the VA space region or (memory backed) mapping should be mapped to ”h]”(j²)�”}”(hŒ``addr``”h]”jC)�”}”(hj^h]”hŒaddr”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´MBhj ^ubjÃ)�”}”(hhh]”hì)�”}”(hŒNthe address the VA space region or (memory backed) mapping should be mapped to”h]”hŒNthe address the VA space region or (memory backed) mapping should be mapped to”…”�”}”(hj*^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j&^h´MBhj'^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj ^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j&^h´MBhjH\ubj¬)�”}”(hŒ;``bo_offset`` the offset within the BO backing the mapping ”h]”(j²)�”}”(hŒ ``bo_offset``”h]”jC)�”}”(hjJ^h]”hŒ bo_offset”…”�”}”(hjL^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjH^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´MHhjD^ubjÃ)�”}”(hhh]”hì)�”}”(hŒ,the offset within the BO backing the mapping”h]”hŒ,the offset within the BO backing the mapping”…”�”}”(hjc^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j_^h´MHhj`^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjD^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j_^h´MHhjH\ubj¬)�”}”(hŒ4``range`` the size of the requested mapping in bytes”h]”(j²)�”}”(hŒ ``range``”h]”jC)�”}”(hjƒ^h]”hŒrange”…”�”}”(hj…^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj�^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´MKhj}^ubjÃ)�”}”(hhh]”hì)�”}”(hŒ*the size of the requested mapping in bytes”h]”hŒ*the size of the requested mapping in bytes”…”�”}”(hjœ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´MLhj™^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj}^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j˜^h´MKhjH\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj\ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj,Wh²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjÆ^h]”hŒ Description”…”�”}”(hjÈ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÄ^ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´MOhj,Wh²hubhì)�”}”(hŒšThis structure represents a single VM_BIND operation. UMDs should pass an array of this structure via struct drm_nouveau_vm_bind's :c:type:`op_ptr` field.”h]”(hŒ…This structure represents a single VM_BIND operation. UMDs should pass an array of this structure via struct drm_nouveau_vm_bind’s ”…”�”}”(hjÜ^h²hh³Nh´Nubh)�”}”(hŒ:c:type:`op_ptr`”h]”jC)�”}”(hjæ^h]”hŒop_ptr”…”�”}”(hjè^h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjä^ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒop_ptr”uh1hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´MhjÜ^ubhŒ field.”…”�”}”(hjÜ^h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j_h´Mhj,Wh²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_nouveau_vm_bind (C struct)”Œc.drm_nouveau_vm_bind”hNt”auh1jJhj,Wh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_nouveau_vm_bind”h]”jg)�”}”(hŒstruct drm_nouveau_vm_bind”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj'_h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj#_h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´Mubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5_h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hj#_h²hh³j4_h´Mubj�)�”}”(hŒdrm_nouveau_vm_bind”h]”j–)�”}”(hj!_h]”hŒdrm_nouveau_vm_bind”…”�”}”(hjG_h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjC_ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj#_h²hh³j4_h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hj_h²hh³j4_h´Mubah}”(h]”j_ah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³j4_h´Mhj_h²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ'structure for DRM_IOCTL_NOUVEAU_VM_BIND”h]”hŒ'structure for DRM_IOCTL_NOUVEAU_VM_BIND”…”�”}”(hji_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´MQhjf_h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj_h²hh³j4_h´Mubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj�_jçj�_jè‰jé‰jê‰uh1j[h²hhj,Wh³Nh´Nubjì)�”}”(hX***Definition**:: struct drm_nouveau_vm_bind { __u32 op_count; __u32 flags; #define DRM_NOUVEAU_VM_BIND_RUN_ASYNC 0x1; __u32 wait_count; __u32 sig_count; __u64 wait_ptr; __u64 sig_ptr; __u64 op_ptr; }; **Members** ``op_count`` the number of :c:type:`drm_nouveau_vm_bind_op` ``flags`` the flags for a :c:type:`drm_nouveau_vm_bind` ioctl Supported values: ``DRM_NOUVEAU_VM_BIND_RUN_ASYNC`` - Indicates that the given VM_BIND operation should be executed asynchronously by the kernel. If this flag is not supplied the kernel executes the associated operations synchronously and doesn't accept any :c:type:`drm_nouveau_sync` objects. ``wait_count`` the number of wait :c:type:`drm_nouveau_syncs` ``sig_count`` the number of :c:type:`drm_nouveau_syncs` to signal when finished ``wait_ptr`` pointer to :c:type:`drm_nouveau_syncs` to wait for ``sig_ptr`` pointer to :c:type:`drm_nouveau_syncs` to signal when finished ``op_ptr`` pointer to the :c:type:`drm_nouveau_vm_bind_ops` to execute”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj�_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj‰_ubhŒ:”…”�”}”(hj‰_h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´MUhj…_ubj)�”}”(hŒÓstruct drm_nouveau_vm_bind { __u32 op_count; __u32 flags; #define DRM_NOUVEAU_VM_BIND_RUN_ASYNC 0x1; __u32 wait_count; __u32 sig_count; __u64 wait_ptr; __u64 sig_ptr; __u64 op_ptr; };”h]”hŒÓstruct drm_nouveau_vm_bind { __u32 op_count; __u32 flags; #define DRM_NOUVEAU_VM_BIND_RUN_ASYNC 0x1; __u32 wait_count; __u32 sig_count; __u64 wait_ptr; __u64 sig_ptr; __u64 op_ptr; };”…”�”}”hj¦_sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´MWhj…_ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj·_h]”hŒMembers”…”�”}”(hj¹_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjµ_ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´Mbhj…_ubj§)�”}”(hhh]”(j¬)�”}”(hŒ<``op_count`` the number of :c:type:`drm_nouveau_vm_bind_op` ”h]”(j²)�”}”(hŒ ``op_count``”h]”jC)�”}”(hjÖ_h]”hŒop_count”…”�”}”(hjØ_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÔ_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´MVhjÐ_ubjÃ)�”}”(hhh]”hì)�”}”(hŒ.the number of :c:type:`drm_nouveau_vm_bind_op`”h]”(hŒthe number of ”…”�”}”(hjï_h²hh³Nh´Nubh)�”}”(hŒ :c:type:`drm_nouveau_vm_bind_op`”h]”jC)�”}”(hjù_h]”hŒdrm_nouveau_vm_bind_op”…”�”}”(hjû_h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj÷_ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒdrm_nouveau_vm_bind_op”uh1hh³jë_h´MVhjï_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jë_h´MVhjì_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÐ_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jë_h´MVhjÍ_ubj¬)�”}”(hXg``flags`` the flags for a :c:type:`drm_nouveau_vm_bind` ioctl Supported values: ``DRM_NOUVEAU_VM_BIND_RUN_ASYNC`` - Indicates that the given VM_BIND operation should be executed asynchronously by the kernel. If this flag is not supplied the kernel executes the associated operations synchronously and doesn't accept any :c:type:`drm_nouveau_sync` objects. ”h]”(j²)�”}”(hŒ ``flags``”h]”jC)�”}”(hj.`h]”hŒflags”…”�”}”(hj0`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj,`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´Mchj(`ubjÃ)�”}”(hhh]”(hì)�”}”(hŒ3the flags for a :c:type:`drm_nouveau_vm_bind` ioctl”h]”(hŒthe flags for a ”…”�”}”(hjG`h²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_nouveau_vm_bind`”h]”jC)�”}”(hjQ`h]”hŒdrm_nouveau_vm_bind”…”�”}”(hjS`h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjO`ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒdrm_nouveau_vm_bind”uh1hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´MZhjG`ubhŒ ioctl”…”�”}”(hjG`h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jn`h´MZhjD`ubhì)�”}”(hŒSupported values:”h]”hŒSupported values:”…”�”}”(hjy`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´M\hjD`ubhì)�”}”(hŒ``DRM_NOUVEAU_VM_BIND_RUN_ASYNC`` - Indicates that the given VM_BIND operation should be executed asynchronously by the kernel.”h]”(jC)�”}”(hŒ!``DRM_NOUVEAU_VM_BIND_RUN_ASYNC``”h]”hŒDRM_NOUVEAU_VM_BIND_RUN_ASYNC”…”�”}”(hjŒ`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjˆ`ubhŒ^ - Indicates that the given VM_BIND operation should be executed asynchronously by the kernel.”…”�”}”(hjˆ`h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´M^hjD`ubhì)�”}”(hŒ“If this flag is not supplied the kernel executes the associated operations synchronously and doesn't accept any :c:type:`drm_nouveau_sync` objects.”h]”(hŒrIf this flag is not supplied the kernel executes the associated operations synchronously and doesn’t accept any ”…”�”}”(hj¥`h²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_nouveau_sync`”h]”jC)�”}”(hj¯`h]”hŒdrm_nouveau_sync”…”�”}”(hj±`h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj­`ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒdrm_nouveau_sync”uh1hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´Mahj¥`ubhŒ objects.”…”�”}”(hj¥`h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÌ`h´MahjD`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj(`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jC`h´MchjÍ_ubj¬)�”}”(hŒ>``wait_count`` the number of wait :c:type:`drm_nouveau_syncs` ”h]”(j²)�”}”(hŒ``wait_count``”h]”jC)�”}”(hjé`h]”hŒ wait_count”…”�”}”(hjë`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjç`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´Mhhjã`ubjÃ)�”}”(hhh]”hì)�”}”(hŒ.the number of wait :c:type:`drm_nouveau_syncs`”h]”(hŒthe number of wait ”…”�”}”(hjah²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_nouveau_syncs`”h]”jC)�”}”(hj ah]”hŒdrm_nouveau_syncs”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj aubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒdrm_nouveau_syncs”uh1hh³jþ`h´Mhhjaubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jþ`h´Mhhjÿ`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjã`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jþ`h´MhhjÍ_ubj¬)�”}”(hŒP``sig_count`` the number of :c:type:`drm_nouveau_syncs` to signal when finished ”h]”(j²)�”}”(hŒ ``sig_count``”h]”jC)�”}”(hjAah]”hŒ sig_count”…”�”}”(hjCah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj?aubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´Mlhj;aubjÃ)�”}”(hhh]”hì)�”}”(hŒAthe number of :c:type:`drm_nouveau_syncs` to signal when finished”h]”(hŒthe number of ”…”�”}”(hjZah²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_nouveau_syncs`”h]”jC)�”}”(hjdah]”hŒdrm_nouveau_syncs”…”�”}”(hjfah²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjbaubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒdrm_nouveau_syncs”uh1hh³jVah´MlhjZaubhŒ to signal when finished”…”�”}”(hjZah²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jVah´MlhjWaubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj;aubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jVah´MlhjÍ_ubj¬)�”}”(hŒ@``wait_ptr`` pointer to :c:type:`drm_nouveau_syncs` to wait for ”h]”(j²)�”}”(hŒ ``wait_ptr``”h]”jC)�”}”(hj�ah]”hŒwait_ptr”…”�”}”(hjŸah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj›aubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´Mphj—aubjÃ)�”}”(hhh]”hì)�”}”(hŒ2pointer to :c:type:`drm_nouveau_syncs` to wait for”h]”(hŒ pointer to ”…”�”}”(hj¶ah²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_nouveau_syncs`”h]”jC)�”}”(hjÀah]”hŒdrm_nouveau_syncs”…”�”}”(hjÂah²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj¾aubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒdrm_nouveau_syncs”uh1hh³j²ah´Mphj¶aubhŒ to wait for”…”�”}”(hj¶ah²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j²ah´Mphj³aubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj—aubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j²ah´MphjÍ_ubj¬)�”}”(hŒK``sig_ptr`` pointer to :c:type:`drm_nouveau_syncs` to signal when finished ”h]”(j²)�”}”(hŒ ``sig_ptr``”h]”jC)�”}”(hjùah]”hŒsig_ptr”…”�”}”(hjûah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj÷aubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´MthjóaubjÃ)�”}”(hhh]”hì)�”}”(hŒ>pointer to :c:type:`drm_nouveau_syncs` to signal when finished”h]”(hŒ pointer to ”…”�”}”(hjbh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_nouveau_syncs`”h]”jC)�”}”(hjbh]”hŒdrm_nouveau_syncs”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjbubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒdrm_nouveau_syncs”uh1hh³jbh´MthjbubhŒ to signal when finished”…”�”}”(hjbh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jbh´Mthjbubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjóaubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jbh´MthjÍ_ubj¬)�”}”(hŒF``op_ptr`` pointer to the :c:type:`drm_nouveau_vm_bind_ops` to execute”h]”(j²)�”}”(hŒ ``op_ptr``”h]”jC)�”}”(hjUbh]”hŒop_ptr”…”�”}”(hjWbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjSbubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´MwhjObubjÃ)�”}”(hhh]”hì)�”}”(hŒ;pointer to the :c:type:`drm_nouveau_vm_bind_ops` to execute”h]”(hŒpointer to the ”…”�”}”(hjnbh²hh³Nh´Nubh)�”}”(hŒ!:c:type:`drm_nouveau_vm_bind_ops`”h]”jC)�”}”(hjxbh]”hŒdrm_nouveau_vm_bind_ops”…”�”}”(hjzbh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjvbubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒdrm_nouveau_vm_bind_ops”uh1hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´MxhjnbubhŒ to execute”…”�”}”(hjnbh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j•bh´Mxhjkbubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjObubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jjbh´MwhjÍ_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj…_ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj,Wh²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ drm_nouveau_exec_push (C struct)”Œc.drm_nouveau_exec_push”hNt”auh1jJhj,Wh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_nouveau_exec_push”h]”jg)�”}”(hŒstruct drm_nouveau_exec_push”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjÒbh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjÎbh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´M~ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjàbh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjÎbh²hh³jßbh´M~ubj�)�”}”(hŒdrm_nouveau_exec_push”h]”j–)�”}”(hjÌbh]”hŒdrm_nouveau_exec_push”…”�”}”(hjòbh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjîbubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjÎbh²hh³jßbh´M~ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjÊbh²hh³jßbh´M~ubah}”(h]”jÅbah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jßbh´M~hjÇbh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒEXEC push operation”h]”hŒEXEC push operation”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´M}hjch²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÇbh²hh³jßbh´M~ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj,cjçj,cjè‰jé‰jê‰uh1j[h²hhj,Wh³Nh´Nubjì)�”}”(hXM**Definition**:: struct drm_nouveau_exec_push { __u64 va; __u32 va_len; __u32 flags; #define DRM_NOUVEAU_EXEC_PUSH_NO_PREFETCH 0x1; }; **Members** ``va`` the virtual address of the push buffer mapping ``va_len`` the length of the push buffer mapping ``flags`` the flags for this push buffer mapping”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj8ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj4cubhŒ:”…”�”}”(hj4ch²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´M�hj0cubj)�”}”(hŒ�struct drm_nouveau_exec_push { __u64 va; __u32 va_len; __u32 flags; #define DRM_NOUVEAU_EXEC_PUSH_NO_PREFETCH 0x1; };”h]”hŒ�struct drm_nouveau_exec_push { __u64 va; __u32 va_len; __u32 flags; #define DRM_NOUVEAU_EXEC_PUSH_NO_PREFETCH 0x1; };”…”�”}”hjQcsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´Mƒhj0cubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjbch]”hŒMembers”…”�”}”(hjdch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj`cubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´MŠhj0cubj§)�”}”(hhh]”(j¬)�”}”(hŒ6``va`` the virtual address of the push buffer mapping ”•h]”(j²)�”}”(hŒ``va``”h]”jC)�”}”(hj�ch]”hŒva”…”�”}”(hjƒch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjcubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´M…hj{cubjÃ)�”}”(hhh]”hì)�”}”(hŒ.the virtual address of the push buffer mapping”h]”hŒ.the virtual address of the push buffer mapping”…”�”}”(hjšch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j–ch´M…hj—cubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj{cubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j–ch´M…hjxcubj¬)�”}”(hŒ1``va_len`` the length of the push buffer mapping ”h]”(j²)�”}”(hŒ ``va_len``”h]”jC)�”}”(hjºch]”hŒva_len”…”�”}”(hj¼ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj¸cubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´M‰hj´cubjÃ)�”}”(hhh]”hì)�”}”(hŒ%the length of the push buffer mapping”h]”hŒ%the length of the push buffer mapping”…”�”}”(hjÓch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÏch´M‰hjÐcubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj´cubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÏch´M‰hjxcubj¬)�”}”(hŒ0``flags`` the flags for this push buffer mapping”h]”(j²)�”}”(hŒ ``flags``”h]”jC)�”}”(hjóch]”hŒflags”…”�”}”(hjõch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjñcubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´MŒhjícubjÃ)�”}”(hhh]”hì)�”}”(hŒ&the flags for this push buffer mapping”h]”hŒ&the flags for this push buffer mapping”…”�”}”(hj dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´M�hj dubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjícubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jdh´MŒhjxcubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj0cubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj,Wh²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hj6dh]”hŒ Description”…”�”}”(hj8dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj4dubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´M�hj,Wh²hubhì)�”}”(hŒ›This structure represents a single EXEC push operation. UMDs should pass an array of this structure via struct drm_nouveau_exec's :c:type:`push_ptr` field.”h]”(hŒ„This structure represents a single EXEC push operation. UMDs should pass an array of this structure via struct drm_nouveau_exec’s ”…”�”}”(hjLdh²hh³Nh´Nubh)�”}”(hŒ:c:type:`push_ptr`”h]”jC)�”}”(hjVdh]”hŒpush_ptr”…”�”}”(hjXdh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjTdubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒpush_ptr”uh1hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´M~hjLdubhŒ field.”…”�”}”(hjLdh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jsdh´M~hj,Wh²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_nouveau_exec (C struct)”Œc.drm_nouveau_exec”hNt”auh1jJhj,Wh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_nouveau_exec”h]”jg)�”}”(hŒstruct drm_nouveau_exec”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj—dh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj“dh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´M„ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥dh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hj“dh²hh³j¤dh´M„ubj�)�”}”(hŒdrm_nouveau_exec”h]”j–)�”}”(hj‘dh]”hŒdrm_nouveau_exec”…”�”}”(hj·dh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj³dubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj“dh²hh³j¤dh´M„ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hj�dh²hh³j¤dh´M„ubah}”(h]”jŠdah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³j¤dh´M„hjŒdh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ$structure for DRM_IOCTL_NOUVEAU_EXEC”h]”hŒ$structure for DRM_IOCTL_NOUVEAU_EXEC”…”�”}”(hjÙdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´M“hjÖdh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjŒdh²hh³j¤dh´M„ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjñdjçjñdjè‰jé‰jê‰uh1j[h²hhj,Wh³Nh´Nubjì)�”}”(hX½**Definition**:: struct drm_nouveau_exec { __u32 channel; __u32 push_count; __u32 wait_count; __u32 sig_count; __u64 wait_ptr; __u64 sig_ptr; __u64 push_ptr; }; **Members** ``channel`` the channel to execute the push buffer in ``push_count`` the number of :c:type:`drm_nouveau_exec_push` ops ``wait_count`` the number of wait :c:type:`drm_nouveau_syncs` ``sig_count`` the number of :c:type:`drm_nouveau_syncs` to signal when finished ``wait_ptr`` pointer to :c:type:`drm_nouveau_syncs` to wait for ``sig_ptr`` pointer to :c:type:`drm_nouveau_syncs` to signal when finished ``push_ptr`` pointer to :c:type:`drm_nouveau_exec_push` ops”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjýdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjùdubhŒ:”…”�”}”(hjùdh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´M—hjõdubj)�”}”(hŒ«struct drm_nouveau_exec { __u32 channel; __u32 push_count; __u32 wait_count; __u32 sig_count; __u64 wait_ptr; __u64 sig_ptr; __u64 push_ptr; };”h]”hŒ«struct drm_nouveau_exec { __u32 channel; __u32 push_count; __u32 wait_count; __u32 sig_count; __u64 wait_ptr; __u64 sig_ptr; __u64 push_ptr; };”…”�”}”hjesbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´M™hjõdubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj'eh]”hŒMembers”…”�”}”(hj)eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj%eubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´M£hjõdubj§)�”}”(hhh]”(j¬)�”}”(hŒ6``channel`` the channel to execute the push buffer in ”h]”(j²)�”}”(hŒ ``channel``”h]”jC)�”}”(hjFeh]”hŒchannel”…”�”}”(hjHeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjDeubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´M˜hj@eubjÃ)�”}”(hhh]”hì)�”}”(hŒ)the channel to execute the push buffer in”h]”hŒ)the channel to execute the push buffer in”…”�”}”(hj_eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j[eh´M˜hj\eubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj@eubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j[eh´M˜hj=eubj¬)�”}”(hŒA``push_count`` the number of :c:type:`drm_nouveau_exec_push` ops ”h]”(j²)�”}”(hŒ``push_count``”h]”jC)�”}”(hjeh]”hŒ push_count”…”�”}”(hj�eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj}eubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´MœhjyeubjÃ)�”}”(hhh]”hì)�”}”(hŒ1the number of :c:type:`drm_nouveau_exec_push` ops”h]”(hŒthe number of ”…”�”}”(hj˜eh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_nouveau_exec_push`”h]”jC)�”}”(hj¢eh]”hŒdrm_nouveau_exec_push”…”�”}”(hj¤eh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj eubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒdrm_nouveau_exec_push”uh1hh³j”eh´Mœhj˜eubhŒ ops”…”�”}”(hj˜eh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j”eh´Mœhj•eubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjyeubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j”eh´Mœhj=eubj¬)�”}”(hŒ>``wait_count`` the number of wait :c:type:`drm_nouveau_syncs` ”h]”(j²)�”}”(hŒ``wait_count``”h]”jC)�”}”(hjÛeh]”hŒ wait_count”…”�”}”(hjÝeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÙeubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´M hjÕeubjÃ)�”}”(hhh]”hì)�”}”(hŒ.the number of wait :c:type:`drm_nouveau_syncs`”h]”(hŒthe number of wait ”…”�”}”(hjôeh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_nouveau_syncs`”h]”jC)�”}”(hjþeh]”hŒdrm_nouveau_syncs”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjüeubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒdrm_nouveau_syncs”uh1hh³jðeh´M hjôeubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jðeh´M hjñeubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÕeubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jðeh´M hj=eubj¬)�”}”(hŒP``sig_count`` the number of :c:type:`drm_nouveau_syncs` to signal when finished ”h]”(j²)�”}”(hŒ ``sig_count``”h]”jC)�”}”(hj3fh]”hŒ sig_count”…”�”}”(hj5fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj1fubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´M¤hj-fubjÃ)�”}”(hhh]”hì)�”}”(hŒAthe number of :c:type:`drm_nouveau_syncs` to signal when finished”h]”(hŒthe number of ”…”�”}”(hjLfh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_nouveau_syncs`”h]”jC)�”}”(hjVfh]”hŒdrm_nouveau_syncs”…”�”}”(hjXfh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjTfubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒdrm_nouveau_syncs”uh1hh³jHfh´M¤hjLfubhŒ to signal when finished”…”�”}”(hjLfh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jHfh´M¤hjIfubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj-fubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jHfh´M¤hj=eubj¬)�”}”(hŒ@``wait_ptr`` pointer to :c:type:`drm_nouveau_syncs` to wait for ”h]”(j²)�”}”(hŒ ``wait_ptr``”h]”jC)�”}”(hj�fh]”hŒwait_ptr”…”�”}”(hj‘fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj�fubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´M¨hj‰fubjÃ)�”}”(hhh]”hì)�”}”(hŒ2pointer to :c:type:`drm_nouveau_syncs` to wait for”h]”(hŒ pointer to ”…”�”}”(hj¨fh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_nouveau_syncs`”h]”jC)�”}”(hj²fh]”hŒdrm_nouveau_syncs”…”�”}”(hj´fh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj°fubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒdrm_nouveau_syncs”uh1hh³j¤fh´M¨hj¨fubhŒ to wait for”…”�”}”(hj¨fh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¤fh´M¨hj¥fubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj‰fubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j¤fh´M¨hj=eubj¬)�”}”(hŒK``sig_ptr`` pointer to :c:type:`drm_nouveau_syncs` to signal when finished ”h]”(j²)�”}”(hŒ ``sig_ptr``”h]”jC)�”}”(hjëfh]”hŒsig_ptr”…”�”}”(hjífh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjéfubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´M¬hjåfubjÃ)�”}”(hhh]”hì)�”}”(hŒ>pointer to :c:type:`drm_nouveau_syncs` to signal when finished”h]”(hŒ pointer to ”…”�”}”(hjgh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_nouveau_syncs`”h]”jC)�”}”(hjgh]”hŒdrm_nouveau_syncs”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj gubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒdrm_nouveau_syncs”uh1hh³jgh´M¬hjgubhŒ to signal when finished”…”�”}”(hjgh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jgh´M¬hjgubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjåfubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jgh´M¬hj=eubj¬)�”}”(hŒ;``push_ptr`` pointer to :c:type:`drm_nouveau_exec_push` ops”h]”(j²)�”}”(hŒ ``push_ptr``”h]”jC)�”}”(hjGgh]”hŒpush_ptr”…”�”}”(hjIgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjEgubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´M¯hjAgubjÃ)�”}”(hhh]”hì)�”}”(hŒ.pointer to :c:type:`drm_nouveau_exec_push` ops”h]”(hŒ pointer to ”…”�”}”(hj`gh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_nouveau_exec_push`”h]”jC)�”}”(hjjgh]”hŒdrm_nouveau_exec_push”…”�”}”(hjlgh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjhgubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒdrm_nouveau_exec_push”uh1hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:21: ./include/uapi/drm/nouveau_drm.h”h´M°hj`gubhŒ ops”…”�”}”(hj`gh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j‡gh´M°hj]gubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjAgubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j\gh´M¯hj=eubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjõdubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj,Wh²hh³Nh´Nubeh}”(h]”j`ah ]”h"]”Œvm_bind / exec uapi”ah$]”h&]”uh1hµhjWh²hh³hÌh´Kubeh}”(h]”jAah ]”h"]”Œdrm/nouveau uapi”ah$]”h&]”uh1hµhh·h²hh³hÌh´K ubh¶)�”}”(hhh]”(h»)�”}”(hŒdrm/panthor uAPI”h]”hŒdrm/panthor uAPI”…”�”}”(hj¼gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÊjˆuh1hºhj¹gh²hh³hÌh´Kubj{)�”}”(hŒ.. _Introduction:”h]”h}”(h]”h ]”h"]”h$]”h&]”hÊŒ introduction”uh1jzh´Khj¹gh²hh³Nubhì)�”}”(hŒ**Introduction**”h]”jŒ)�”}”(hj×gh]”hŒ Introduction”…”�”}”(hjÙgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÕgubah}”(h]”jÔgah ]”h"]”Œ introduction”ah$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Khj¹gh²hj¢}”jêgjÊgsj¤}”jÔgjÊgsubhì)�”}”(hŒ0This documentation describes the Panthor IOCTLs.”h]”hŒ0This documentation describes the Panthor IOCTLs.”…”�”}”(hjðgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´K hj¹gh²hubhì)�”}”(hŒEJust a few generic rules about the data passed to the Panthor IOCTLs:”h]”hŒEJust a few generic rules about the data passed to the Panthor IOCTLs:”…”�”}”(hjÿgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Khj¹gh²hubhâ)�”}”(hhh]”(hç)�”}”(hŒsStructures must be aligned on 64-bit/8-byte. If the object is not naturally aligned, a padding field must be added.”h]”hì)�”}”(hŒsStructures must be aligned on 64-bit/8-byte. If the object is not naturally aligned, a padding field must be added.”h]”hŒsStructures must be aligned on 64-bit/8-byte. If the object is not naturally aligned, a padding field must be added.”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Khjhubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjhubhç)�”}”(hŒXFields must be explicitly aligned to their natural type alignment with pad[0..N] fields.”h]”hì)�”}”(hŒXFields must be explicitly aligned to their natural type alignment with pad[0..N] fields.”h]”hŒXFields must be explicitly aligned to their natural type alignment with pad[0..N] fields.”…”�”}”(hj.hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Khj*hubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjhubhç)�”}”(hŒNAll padding fields will be checked by the driver to make sure they are zeroed.”h]”hì)�”}”(hŒNAll padding fields will be checked by the driver to make sure they are zeroed.”h]”hŒNAll padding fields will be checked by the driver to make sure they are zeroed.”…”�”}”(hjGhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´KhjChubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjhubhç)�”}”(hŒ-Flags can be added, but not removed/replaced.”h]”hì)�”}”(hj^hh]”hŒ-Flags can be added, but not removed/replaced.”…”�”}”(hj`hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Khj\hubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjhubhç)�”}”(hX9New fields can be added to the main structures (the structures directly passed to the ioctl). Those fields can be added at the end of the structure, or replace existing padding fields. Any new field being added must preserve the behavior that existed before those fields were added when a value of zero is passed.”h]”hì)�”}”(hX9New fields can be added to the main structures (the structures directly passed to the ioctl). Those fields can be added at the end of the structure, or replace existing padding fields. Any new field being added must preserve the behavior that existed before those fields were added when a value of zero is passed.”h]”hX9New fields can be added to the main structures (the structures directly passed to the ioctl). Those fields can be added at the end of the structure, or replace existing padding fields. Any new field being added must preserve the behavior that existed before those fields were added when a value of zero is passed.”…”�”}”(hjxhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Khjthubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjhubhç)�”}”(hŒîNew fields can be added to indirect objects (objects pointed by the main structure), iff those objects are passed a size to reflect the size known by the userspace driver (see drm_panthor_obj_array::stride or drm_panthor_dev_query::size).”h]”hì)�”}”(hŒîNew fields can be added to indirect objects (objects pointed by the main structure), iff those objects are passed a size to reflect the size known by the userspace driver (see drm_panthor_obj_array::stride or drm_panthor_dev_query::size).”h]”hŒîNew fields can be added to indirect objects (objects pointed by the main structure), iff those objects are passed a size to reflect the size known by the userspace driver (see drm_panthor_obj_array::stride or drm_panthor_dev_query::size).”…”�”}”(hj‘hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Khj�hubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjhubhç)�”}”(hŒ‹If the kernel driver is too old to know some fields, those will be ignored if zero, and otherwise rejected (and so will be zero on output).”h]”hì)�”}”(hŒ‹If the kernel driver is too old to know some fields, those will be ignored if zero, and otherwise rejected (and so will be zero on output).”h]”hŒ‹If the kernel driver is too old to know some fields, those will be ignored if zero, and otherwise rejected (and so will be zero on output).”…”�”}”(hjªhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´K!hj¦hubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjhubhç)�”}”(hŒ~If userspace is too old to know some fields, those will be zeroed (input) before the structure is parsed by the kernel driver.”h]”hì)�”}”(hŒ~If userspace is too old to know some fields, those will be zeroed (input) before the structure is parsed by the kernel driver.”h]”hŒ~If userspace is too old to know some fields, those will be zeroed (input) before the structure is parsed by the kernel driver.”…”�”}”(hjÃhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´K#hj¿hubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjhubhç)�”}”(hŒžEach new flag/field addition must come with a driver version update so the userspace driver doesn't have to trial and error to know which flags are supported.”h]”hì)�”}”(hŒžEach new flag/field addition must come with a driver version update so the userspace driver doesn't have to trial and error to know which flags are supported.”h]”hŒ Each new flag/field addition must come with a driver version update so the userspace driver doesn’t have to trial and error to know which flags are supported.”…”�”}”(hjÜhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´K%hjØhubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjhubhç)�”}”(hŒ`Structures should not contain unions, as this would defeat the extensibility of such structures.”h]”hì)�”}”(hŒ`Structures should not contain unions, as this would defeat the extensibility of such structures.”h]”hŒ`Structures should not contain unions, as this would defeat the extensibility of such structures.”…”�”}”(hjõhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´K(hjñhubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjhubhç)�”}”(hŒrIOCTLs can't be removed or replaced. New IOCTL IDs should be placed at the end of the drm_panthor_ioctl_id enum. ”h]”hì)�”}”(hŒpIOCTLs can't be removed or replaced. New IOCTL IDs should be placed at the end of the drm_panthor_ioctl_id enum.”h]”hŒrIOCTLs can’t be removed or replaced. New IOCTL IDs should be placed at the end of the drm_panthor_ioctl_id enum.”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´K*hj iubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjhubeh}”(h]”h ]”h"]”h$]”h&]”jÀ jÁ uh1háh³j#hh´Khj¹gh²hubj{)�”}”(hŒ'.. _MMIO regions exposed to userspace.:”h]”h}”(h]”h ]”h"]”h$]”h&]”hÊŒ!mmio-regions-exposed-to-userspace”uh1jzh´K&hj¹gh²hh³Nubhì)�”}”(hŒ&**MMIO regions exposed to userspace.**”h]”jŒ)�”}”(hj6ih]”hŒ"MMIO regions exposed to userspace.”…”�”}”(hj8ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj4iubah}”(h]”j3iah ]”h"]”Œ"mmio regions exposed to userspace.”ah$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´K0hj¹gh²hj¢}”jIij)isj¤}”j3ij)isubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ&DRM_PANTHOR_USER_MMIO_OFFSET (C macro)”Œc.DRM_PANTHOR_USER_MMIO_OFFSET”hNt”auh1jJhj¹gh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒDRM_PANTHOR_USER_MMIO_OFFSET”h]”jg)�”}”(hŒDRM_PANTHOR_USER_MMIO_OFFSET”h]”j�)�”}”(hŒDRM_PANTHOR_USER_MMIO_OFFSET”h]”j–)�”}”(hjbih]”hŒDRM_PANTHOR_USER_MMIO_OFFSET”…”�”}”(hjlih²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjhiubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjdih²hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´K1ubah}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hj`ih²hh³jih´K1ubah}”(h]”j[iah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jih´K1hj]ih²hubjÄ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj]ih²hh³jih´K1ubeh}”(h]”h ]”(jàŒmacro”eh"]”h$]”h&]”jåjàjæj˜ijçj˜ijè‰jé‰jê‰uh1j[h²hhj¹gh³Nh´Nubhì)�”}”(hXFile offset for all MMIO regions being exposed to userspace. Don't use this value directly, use DRM_PANTHOR_USER__OFFSET values instead. pgoffset passed to mmap2() is an unsigned long, which forces us to use a different offset on 32-bit and 64-bit systems.”h]”hXFile offset for all MMIO regions being exposed to userspace. Don’t use this value directly, use DRM_PANTHOR_USER__OFFSET values instead. pgoffset passed to mmap2() is an unsigned long, which forces us to use a different offset on 32-bit and 64-bit systems.”…”�”}”(hjœih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´K3hj¹gh²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ/DRM_PANTHOR_USER_FLUSH_ID_MMIO_OFFSET (C macro)”Œ'c.DRM_PANTHOR_USER_FLUSH_ID_MMIO_OFFSET”hNt”auh1jJhj¹gh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒ%DRM_PANTHOR_USER_FLUSH_ID_MMIO_OFFSET”h]”jg)�”}”(hŒ%DRM_PANTHOR_USER_FLUSH_ID_MMIO_OFFSET”h]”j�)�”}”(hŒ%DRM_PANTHOR_USER_FLUSH_ID_MMIO_OFFSET”h]”j–)�”}”(hj¾ih]”hŒ%DRM_PANTHOR_USER_FLUSH_ID_MMIO_OFFSET”…”�”}”(hjÈih²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjÄiubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjÀih²hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´K8ubah}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hj¼ih²hh³jÛih´K8ubah}”(h]”j·iah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jÛih´K8hj¹ih²hubjÄ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj¹ih²hh³jÛih´K8ubeh}”(h]”h ]”(jàŒmacro”eh"]”h$]”h&]”jåjàjæjôijçjôijè‰jé‰jê‰uh1j[h²hhj¹gh³Nh´Nubhì)�”}”(hXÈFile offset for the LATEST_FLUSH_ID register. The Userspace driver controls GPU cache flushing through CS instructions, but the flush reduction mechanism requires a flush_id. This flush_id could be queried with an ioctl, but Arm provides a well-isolated register page containing only this read-only register, so let's expose this page through a static mmap offset and allow direct mapping of this MMIO region so we can avoid the user <-> kernel round-trip.”h]”hXÊFile offset for the LATEST_FLUSH_ID register. The Userspace driver controls GPU cache flushing through CS instructions, but the flush reduction mechanism requires a flush_id. This flush_id could be queried with an ioctl, but Arm provides a well-isolated register page containing only this read-only register, so let’s expose this page through a static mmap offset and allow direct mapping of this MMIO region so we can avoid the user <-> kernel round-trip.”…”�”}”(hjøih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´K:hj¹gh²hubj{)�”}”(hŒ.. _IOCTL IDs:”h]”h}”(h]”h ]”h"]”h$]”h&]”hÊŒ ioctl-ids”uh1jzh´K> 28); #define DRM_PANTHOR_ARCH_MINOR(x) (((x) >> 24) & 0xf); #define DRM_PANTHOR_ARCH_REV(x) (((x) >> 20) & 0xf); #define DRM_PANTHOR_PRODUCT_MAJOR(x) (((x) >> 16) & 0xf); #define DRM_PANTHOR_VERSION_MAJOR(x) (((x) >> 12) & 0xf); #define DRM_PANTHOR_VERSION_MINOR(x) (((x) >> 4) & 0xff); #define DRM_PANTHOR_VERSION_STATUS(x) ((x) & 0xf); __u32 gpu_rev; __u32 csf_id; #define DRM_PANTHOR_CSHW_MAJOR(x) (((x) >> 26) & 0x3f); #define DRM_PANTHOR_CSHW_MINOR(x) (((x) >> 20) & 0x3f); #define DRM_PANTHOR_CSHW_REV(x) (((x) >> 16) & 0xf); #define DRM_PANTHOR_MCU_MAJOR(x) (((x) >> 10) & 0x3f); #define DRM_PANTHOR_MCU_MINOR(x) (((x) >> 4) & 0x3f); #define DRM_PANTHOR_MCU_REV(x) ((x) & 0xf); __u32 l2_features; __u32 tiler_features; __u32 mem_features; __u32 mmu_features; #define DRM_PANTHOR_MMU_VA_BITS(x) ((x) & 0xff); __u32 thread_features; __u32 max_threads; __u32 thread_max_workgroup_size; __u32 thread_max_barrier_size; __u32 coherency_features; __u32 texture_features[4]; __u32 as_present; __u32 selected_coherency; __u64 shader_present; __u64 l2_present; __u64 tiler_present; __u32 core_features; __u32 pad; __u64 gpu_features; }; **Members** ``gpu_id`` GPU ID. ``gpu_rev`` GPU revision. ``csf_id`` Command stream frontend ID. ``l2_features`` L2-cache features. ``tiler_features`` Tiler features. ``mem_features`` Memory features. ``mmu_features`` MMU features. ``thread_features`` Thread features. ``max_threads`` Maximum number of threads. ``thread_max_workgroup_size`` Maximum workgroup size. ``thread_max_barrier_size`` Maximum number of threads that can wait simultaneously on a barrier. ``coherency_features`` Coherency features. Combination of drm_panthor_gpu_coherency flags. Note that this is just what the coherency protocols supported by the GPU, but the actual coherency in place depends on the SoC integration and is reflected by drm_panthor_gpu_info::selected_coherency. ``texture_features`` Texture features. ``as_present`` Bitmask encoding the number of address-space exposed by the MMU. ``selected_coherency`` Coherency selected for this device. One of drm_panthor_gpu_coherency. ``shader_present`` Bitmask encoding the shader cores exposed by the GPU. ``l2_present`` Bitmask encoding the L2 caches exposed by the GPU. ``tiler_present`` Bitmask encoding the tiler units exposed by the GPU. ``core_features`` Used to discriminate core variants when they exist. ``pad`` MBZ. ``gpu_features`` Bitmask describing supported GPU-wide features”h]”(hì)�”}”(hŒ**Definition**::”•h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjgth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjctubhŒ:”…”�”}”(hjcth²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mhj_tubj)�”}”(hXÖstruct drm_panthor_gpu_info { __u32 gpu_id; #define DRM_PANTHOR_ARCH_MAJOR(x) ((x) >> 28); #define DRM_PANTHOR_ARCH_MINOR(x) (((x) >> 24) & 0xf); #define DRM_PANTHOR_ARCH_REV(x) (((x) >> 20) & 0xf); #define DRM_PANTHOR_PRODUCT_MAJOR(x) (((x) >> 16) & 0xf); #define DRM_PANTHOR_VERSION_MAJOR(x) (((x) >> 12) & 0xf); #define DRM_PANTHOR_VERSION_MINOR(x) (((x) >> 4) & 0xff); #define DRM_PANTHOR_VERSION_STATUS(x) ((x) & 0xf); __u32 gpu_rev; __u32 csf_id; #define DRM_PANTHOR_CSHW_MAJOR(x) (((x) >> 26) & 0x3f); #define DRM_PANTHOR_CSHW_MINOR(x) (((x) >> 20) & 0x3f); #define DRM_PANTHOR_CSHW_REV(x) (((x) >> 16) & 0xf); #define DRM_PANTHOR_MCU_MAJOR(x) (((x) >> 10) & 0x3f); #define DRM_PANTHOR_MCU_MINOR(x) (((x) >> 4) & 0x3f); #define DRM_PANTHOR_MCU_REV(x) ((x) & 0xf); __u32 l2_features; __u32 tiler_features; __u32 mem_features; __u32 mmu_features; #define DRM_PANTHOR_MMU_VA_BITS(x) ((x) & 0xff); __u32 thread_features; __u32 max_threads; __u32 thread_max_workgroup_size; __u32 thread_max_barrier_size; __u32 coherency_features; __u32 texture_features[4]; __u32 as_present; __u32 selected_coherency; __u64 shader_present; __u64 l2_present; __u64 tiler_present; __u32 core_features; __u32 pad; __u64 gpu_features; };”h]”hXÖstruct drm_panthor_gpu_info { __u32 gpu_id; #define DRM_PANTHOR_ARCH_MAJOR(x) ((x) >> 28); #define DRM_PANTHOR_ARCH_MINOR(x) (((x) >> 24) & 0xf); #define DRM_PANTHOR_ARCH_REV(x) (((x) >> 20) & 0xf); #define DRM_PANTHOR_PRODUCT_MAJOR(x) (((x) >> 16) & 0xf); #define DRM_PANTHOR_VERSION_MAJOR(x) (((x) >> 12) & 0xf); #define DRM_PANTHOR_VERSION_MINOR(x) (((x) >> 4) & 0xff); #define DRM_PANTHOR_VERSION_STATUS(x) ((x) & 0xf); __u32 gpu_rev; __u32 csf_id; #define DRM_PANTHOR_CSHW_MAJOR(x) (((x) >> 26) & 0x3f); #define DRM_PANTHOR_CSHW_MINOR(x) (((x) >> 20) & 0x3f); #define DRM_PANTHOR_CSHW_REV(x) (((x) >> 16) & 0xf); #define DRM_PANTHOR_MCU_MAJOR(x) (((x) >> 10) & 0x3f); #define DRM_PANTHOR_MCU_MINOR(x) (((x) >> 4) & 0x3f); #define DRM_PANTHOR_MCU_REV(x) ((x) & 0xf); __u32 l2_features; __u32 tiler_features; __u32 mem_features; __u32 mmu_features; #define DRM_PANTHOR_MMU_VA_BITS(x) ((x) & 0xff); __u32 thread_features; __u32 max_threads; __u32 thread_max_workgroup_size; __u32 thread_max_barrier_size; __u32 coherency_features; __u32 texture_features[4]; __u32 as_present; __u32 selected_coherency; __u64 shader_present; __u64 l2_present; __u64 tiler_present; __u32 core_features; __u32 pad; __u64 gpu_features; };”…”�”}”hj€tsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M hj_tubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj‘th]”hŒMembers”…”�”}”(hj“th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj�tubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MFhj_tubj§)�”}”(hhh]”(j¬)�”}”(hŒ``gpu_id`` GPU ID. ”h]”(j²)�”}”(hŒ ``gpu_id``”h]”jC)�”}”(hj°th]”hŒgpu_id”…”�”}”(hj²th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj®tubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M hjªtubjÃ)�”}”(hhh]”hì)�”}”(hŒGPU ID.”h]”hŒGPU ID.”…”�”}”(hjÉth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÅth´M hjÆtubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjªtubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÅth´M hj§tubj¬)�”}”(hŒ``gpu_rev`` GPU revision. ”h]”(j²)�”}”(hŒ ``gpu_rev``”h]”jC)�”}”(hjéth]”hŒgpu_rev”…”�”}”(hjëth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjçtubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M*hjãtubjÃ)�”}”(hhh]”hì)�”}”(hŒ GPU revision.”h]”hŒ GPU revision.”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jþth´M*hjÿtubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjãtubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jþth´M*hj§tubj¬)�”}”(hŒ'``csf_id`` Command stream frontend ID. ”h]”(j²)�”}”(hŒ ``csf_id``”h]”jC)�”}”(hj"uh]”hŒcsf_id”…”�”}”(hj$uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj uubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M-hjuubjÃ)�”}”(hhh]”hì)�”}”(hŒCommand stream frontend ID.”h]”hŒCommand stream frontend ID.”…”�”}”(hj;uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j7uh´M-hj8uubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjuubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j7uh´M-hj§tubj¬)�”}”(hŒ#``l2_features`` L2-cache features. ”h]”(j²)�”}”(hŒ``l2_features``”h]”jC)�”}”(hj[uh]”hŒ l2_features”…”�”}”(hj]uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjYuubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M6hjUuubjÃ)�”}”(hhh]”hì)�”}”(hŒL2-cache features.”h]”hŒL2-cache features.”…”�”}”(hjtuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jpuh´M6hjquubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjUuubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jpuh´M6hj§tubj¬)�”}”(hŒ#``tiler_features`` Tiler features. ”h]”(j²)�”}”(hŒ``tiler_features``”h]”jC)�”}”(hj”uh]”hŒtiler_features”…”�”}”(hj–uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj’uubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M9hjŽuubjÃ)�”}”(hhh]”hì)�”}”(hŒTiler features.”h]”hŒTiler features.”…”�”}”(hj­uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j©uh´M9hjªuubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjŽuubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j©uh´M9hj§tubj¬)�”}”(hŒ"``mem_features`` Memory features. ”h]”(j²)�”}”(hŒ``mem_features``”h]”jC)�”}”(hjÍuh]”hŒ mem_features”…”�”}”(hjÏuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjËuubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M<hjÇuubjÃ)�”}”(hhh]”hì)�”}”(hŒMemory features.”h]”hŒMemory features.”…”�”}”(hjæuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jâuh´M<hjãuubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÇuubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jâuh´M<hj§tubj¬)�”}”(hŒ``mmu_features`` MMU features. ”h]”(j²)�”}”(hŒ``mmu_features``”h]”jC)�”}”(hjvh]”hŒ mmu_features”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjvubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M?hjvubjÃ)�”}”(hhh]”hì)�”}”(hŒ MMU features.”h]”hŒ MMU features.”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jvh´M?hjvubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjvubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jvh´M?hj§tubj¬)�”}”(hŒ%``thread_features`` Thread features. ”h]”(j²)�”}”(hŒ``thread_features``”h]”jC)�”}”(hj?vh]”hŒthread_features”…”�”}”(hjAvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj=vubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MChj9vubjÃ)�”}”(hhh]”hì)�”}”(hŒThread features.”h]”hŒThread features.”…”�”}”(hjXvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jTvh´MChjUvubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj9vubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jTvh´MChj§tubj¬)�”}”(hŒ+``max_threads`` Maximum number of threads. ”h]”(j²)�”}”(hŒ``max_threads``”h]”jC)�”}”(hjxvh]”hŒ max_threads”…”�”}”(hjzvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjvvubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MFhjrvubjÃ)�”}”(hhh]”hì)�”}”(hŒMaximum number of threads.”h]”hŒMaximum number of threads.”…”�”}”(hj‘vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j�vh´MFhjŽvubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjrvubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j�vh´MFhj§tubj¬)�”}”(hŒ6``thread_max_workgroup_size`` Maximum workgroup size. ”h]”(j²)�”}”(hŒ``thread_max_workgroup_size``”h]”jC)�”}”(hj±vh]”hŒthread_max_workgroup_size”…”�”}”(hj³vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj¯vubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MIhj«vubjÃ)�”}”(hhh]”hì)�”}”(hŒMaximum workgroup size.”h]”hŒMaximum workgroup size.”…”�”}”(hjÊvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÆvh´MIhjÇvubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj«vubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÆvh´MIhj§tubj¬)�”}”(hŒa``thread_max_barrier_size`` Maximum number of threads that can wait simultaneously on a barrier. ”h]”(j²)�”}”(hŒ``thread_max_barrier_size``”h]”jC)�”}”(hjêvh]”hŒthread_max_barrier_size”…”�”}”(hjìvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjèvubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MNhjävubjÃ)�”}”(hhh]”hì)�”}”(hŒDMaximum number of threads that can wait simultaneously on a barrier.”h]”hŒDMaximum number of threads that can wait simultaneously on a barrier.”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MMhjwubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjävubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÿvh´MNhj§tubj¬)�”}”(hX&``coherency_features`` Coherency features. Combination of drm_panthor_gpu_coherency flags. Note that this is just what the coherency protocols supported by the GPU, but the actual coherency in place depends on the SoC integration and is reflected by drm_panthor_gpu_info::selected_coherency. ”h]”(j²)�”}”(hŒ``coherency_features``”h]”jC)�”}”(hj$wh]”hŒcoherency_features”…”�”}”(hj&wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj"wubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MZhjwubjÃ)�”}”(hhh]”(hì)�”}”(hŒCoherency features.”h]”hŒCoherency features.”…”�”}”(hj=wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MShj:wubhì)�”}”(hŒ/Combination of drm_panthor_gpu_coherency flags.”h]”hŒ/Combination of drm_panthor_gpu_coherency flags.”…”�”}”(hjLwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MUhj:wubhì)�”}”(hŒÈNote that this is just what the coherency protocols supported by the GPU, but the actual coherency in place depends on the SoC integration and is reflected by drm_panthor_gpu_info::selected_coherency.”h]”hŒÈNote that this is just what the coherency protocols supported by the GPU, but the actual coherency in place depends on the SoC integration and is reflected by drm_panthor_gpu_info::selected_coherency.”…”�”}”(hj[wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MWhj:wubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjwubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j9wh´MZhj§tubj¬)�”}”(hŒ'``texture_features`` Texture features. ”h]”(j²)�”}”(hŒ``texture_features``”h]”jC)�”}”(hj|wh]”hŒtexture_features”…”�”}”(hj~wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjzwubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M^hjvwubjÃ)�”}”(hhh]”hì)�”}”(hŒTexture features.”h]”hŒTexture features.”…”�”}”(hj•wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j‘wh´M^hj’wubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjvwubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j‘wh´M^hj§tubj¬)�”}”(hŒP``as_present`` Bitmask encoding the number of address-space exposed by the MMU. ”h]”(j²)�”}”(hŒ``as_present``”h]”jC)�”}”(hjµwh]”hŒ as_present”…”�”}”(hj·wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj³wubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mahj¯wubjÃ)�”}”(hhh]”hì)�”}”(hŒ@Bitmask encoding the number of address-space exposed by the MMU.”h]”hŒ@Bitmask encoding the number of address-space exposed by the MMU.”…”�”}”(hjÎwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÊwh´MahjËwubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj¯wubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÊwh´Mahj§tubj¬)�”}”(hŒ^``selected_coherency`` Coherency selected for this device. One of drm_panthor_gpu_coherency. ”h]”(j²)�”}”(hŒ``selected_coherency``”h]”jC)�”}”(hjîwh]”hŒselected_coherency”…”�”}”(hjðwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjìwubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MghjèwubjÃ)�”}”(hhh]”(hì)�”}”(hŒ#Coherency selected for this device.”h]”hŒ#Coherency selected for this device.”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mehjxubhì)�”}”(hŒ!One of drm_panthor_gpu_coherency.”h]”hŒ!One of drm_panthor_gpu_coherency.”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jxh´Mghjxubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjèwubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jxh´Mghj§tubj¬)�”}”(hŒI``shader_present`` Bitmask encoding the shader cores exposed by the GPU. ”h]”(j²)�”}”(hŒ``shader_present``”h]”jC)�”}”(hj6xh]”hŒshader_present”…”�”}”(hj8xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj4xubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mkhj0xubjÃ)�”}”(hhh]”hì)�”}”(hŒ5Bitmask encoding the shader cores exposed by the GPU.”h]”hŒ5Bitmask encoding the shader cores exposed by the GPU.”…”�”}”(hjOxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jKxh´MkhjLxubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj0xubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jKxh´Mkhj§tubj¬)�”}”(hŒB``l2_present`` Bitmask encoding the L2 caches exposed by the GPU. ”h]”(j²)�”}”(hŒ``l2_present``”h]”jC)�”}”(hjoxh]”hŒ l2_present”…”�”}”(hjqxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjmxubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MnhjixubjÃ)�”}”(hhh]”hì)�”}”(hŒ2Bitmask encoding the L2 caches exposed by the GPU.”h]”hŒ2Bitmask encoding the L2 caches exposed by the GPU.”…”�”}”(hjˆxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j„xh´Mnhj…xubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjixubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j„xh´Mnhj§tubj¬)�”}”(hŒG``tiler_present`` Bitmask encoding the tiler units exposed by the GPU. ”h]”(j²)�”}”(hŒ``tiler_present``”h]”jC)�”}”(hj¨xh]”hŒ tiler_present”…”�”}”(hjªxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj¦xubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mqhj¢xubjÃ)�”}”(hhh]”hì)�”}”(hŒ4Bitmask encoding the tiler units exposed by the GPU.”h]”hŒ4Bitmask encoding the tiler units exposed by the GPU.”…”�”}”(hjÁxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j½xh´Mqhj¾xubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj¢xubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j½xh´Mqhj§tubj¬)�”}”(hŒF``core_features`` Used to discriminate core variants when they exist. ”h]”(j²)�”}”(hŒ``core_features``”h]”jC)�”}”(hjáxh]”hŒ core_features”…”�”}”(hjãxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjßxubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MthjÛxubjÃ)�”}”(hhh]”hì)�”}”(hŒ3Used to discriminate core variants when they exist.”h]”hŒ3Used to discriminate core variants when they exist.”…”�”}”(hjúxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jöxh´Mthj÷xubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÛxubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jöxh´Mthj§tubj¬)�”}”(hŒ ``pad`` MBZ. ”h]”(j²)�”}”(hŒ``pad``”h]”jC)�”}”(hjyh]”hŒpad”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjyubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MwhjyubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ.”h]”hŒMBZ.”…”�”}”(hj3yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j/yh´Mwhj0yubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjyubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j/yh´Mwhj§tubj¬)�”}”(hŒ?``gpu_features`` Bitmask describing supported GPU-wide features”h]”(j²)�”}”(hŒ``gpu_features``”h]”jC)�”}”(hjSyh]”hŒ gpu_features”…”�”}”(hjUyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjQyubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MyhjMyubjÃ)�”}”(hhh]”hì)�”}”(hŒ.Bitmask describing supported GPU-wide features”h]”hŒ.Bitmask describing supported GPU-wide features”…”�”}”(hjlyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mzhjiyubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjMyubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jhyh´Myhj§tubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj_tubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj¹gh²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hj–yh]”hŒ Description”…”�”}”(hj˜yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj”yubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M}hj¹gh²hubhì)�”}”(hŒAStructure grouping all queryable information relating to the GPU.”h]”hŒAStructure grouping all queryable information relating to the GPU.”…”�”}”(hj¬yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mhj¹gh²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ drm_panthor_csif_info (C struct)”Œc.drm_panthor_csif_info”hNt”auh1jJhj¹gh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_panthor_csif_info”h]”jg)�”}”(hŒstruct drm_panthor_csif_info”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjÔyh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjÐyh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâyh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjÐyh²hh³jáyh´M ubj�)�”}”(hŒdrm_panthor_csif_info”h]”j–)�”}”(hjÎyh]”hŒdrm_panthor_csif_info”…”�”}”(hjôyh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjðyubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjÐyh²hh³jáyh´M ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjÌyh²hh³jáyh´M ubah}”(h]”jÇyah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jáyh´M hjÉyh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ$Command stream interface information”h]”hŒ$Command stream interface information”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M~hjzh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÉyh²hh³jáyh´M ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj.zjçj.zjè‰jé‰jê‰uh1j[h²hhj¹gh³Nh´Nubjì)�”}”(hXu**Definition**:: struct drm_panthor_csif_info { __u32 csg_slot_count; __u32 cs_slot_count; __u32 cs_reg_count; __u32 scoreboard_slot_count; __u32 unpreserved_cs_reg_count; __u32 pad; }; **Members** ``csg_slot_count`` Number of command stream group slots exposed by the firmware. ``cs_slot_count`` Number of command stream slots per group. ``cs_reg_count`` Number of command stream registers. ``scoreboard_slot_count`` Number of scoreboard slots. ``unpreserved_cs_reg_count`` Number of command stream registers reserved by the kernel driver to call a userspace command stream. All registers can be used by a userspace command stream, but the [cs_slot_count - unpreserved_cs_reg_count .. cs_slot_count] registers are used by the kernel when DRM_PANTHOR_IOCTL_GROUP_SUBMIT is called. ``pad`` Padding field, set to zero.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj:zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj6zubhŒ:”…”�”}”(hj6zh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M‚hj2zubj)�”}”(hŒÀstruct drm_panthor_csif_info { __u32 csg_slot_count; __u32 cs_slot_count; __u32 cs_reg_count; __u32 scoreboard_slot_count; __u32 unpreserved_cs_reg_count; __u32 pad; };”h]”hŒÀstruct drm_panthor_csif_info { __u32 csg_slot_count; __u32 cs_slot_count; __u32 cs_reg_count; __u32 scoreboard_slot_count; __u32 unpreserved_cs_reg_count; __u32 pad; };”…”�”}”hjSzsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M„hj2zubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjdzh]”hŒMembers”…”�”}”(hjfzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjbzubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M�hj2zubj§)�”}”(hhh]”(j¬)�”}”(hŒQ``csg_slot_count`` Number of command stream group slots exposed by the firmware. ”h]”(j²)�”}”(hŒ``csg_slot_count``”h]”jC)�”}”(hjƒzh]”hŒcsg_slot_count”…”�”}”(hj…zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj�zubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M„hj}zubjÃ)�”}”(hhh]”hì)�”}”(hŒ=Number of command stream group slots exposed by the firmware.”h]”hŒ=Number of command stream group slots exposed by the firmware.”…”�”}”(hjœzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j˜zh´M„hj™zubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj}zubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j˜zh´M„hjzzubj¬)�”}”(hŒ<``cs_slot_count`` Number of command stream slots per group. ”h]”(j²)�”}”(hŒ``cs_slot_count``”h]”jC)�”}”(hj¼zh]”hŒ cs_slot_count”…”�”}”(hj¾zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjºzubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M‡hj¶zubjÃ)�”}”(hhh]”hì)�”}”(hŒ)Number of command stream slots per group.”h]”hŒ)Number of command stream slots per group.”…”�”}”(hjÕzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÑzh´M‡hjÒzubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj¶zubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÑzh´M‡hjzzubj¬)�”}”(hŒ5``cs_reg_count`` Number of command stream registers. ”h]”(j²)�”}”(hŒ``cs_reg_count``”h]”jC)�”}”(hjõzh]”hŒ cs_reg_count”…”�”}”(hj÷zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjózubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MŠhjïzubjÃ)�”}”(hhh]”hì)�”}”(hŒ#Number of command stream registers.”h]”hŒ#Number of command stream registers.”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j {h´MŠhj {ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjïzubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j {h´MŠhjzzubj¬)�”}”(hŒ6``scoreboard_slot_count`` Number of scoreboard slots. ”h]”(j²)�”}”(hŒ``scoreboard_slot_count``”h]”jC)�”}”(hj.{h]”hŒscoreboard_slot_count”…”�”}”(hj0{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj,{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M�hj({ubjÃ)�”}”(hhh]”hì)�”}”(hŒNumber of scoreboard slots.”h]”hŒNumber of scoreboard slots.”…”�”}”(hjG{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jC{h´M�hjD{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj({ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jC{h´M�hjzzubj¬)�”}”(hXP``unpreserved_cs_reg_count`` Number of command stream registers reserved by the kernel driver to call a userspace command stream. All registers can be used by a userspace command stream, but the [cs_slot_count - unpreserved_cs_reg_count .. cs_slot_count] registers are used by the kernel when DRM_PANTHOR_IOCTL_GROUP_SUBMIT is called. ”h]”(j²)�”}”(hŒ``unpreserved_cs_reg_count``”h]”jC)�”}”(hjg{h]”hŒunpreserved_cs_reg_count”…”�”}”(hji{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhje{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M–hja{ubjÃ)�”}”(hhh]”(hì)�”}”(hŒdNumber of command stream registers reserved by the kernel driver to call a userspace command stream.”h]”hŒdNumber of command stream registers reserved by the kernel driver to call a userspace command stream.”…”�”}”(hj€{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M‘hj}{ubhì)�”}”(hŒÌAll registers can be used by a userspace command stream, but the [cs_slot_count - unpreserved_cs_reg_count .. cs_slot_count] registers are used by the kernel when DRM_PANTHOR_IOCTL_GROUP_SUBMIT is called.”h]”hŒÌAll registers can be used by a userspace command stream, but the [cs_slot_count - unpreserved_cs_reg_count .. cs_slot_count] registers are used by the kernel when DRM_PANTHOR_IOCTL_GROUP_SUBMIT is called.”…”�”}”(hj�{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M”hj}{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhja{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j|{h´M–hjzzubj¬)�”}”(hŒ#``pad`` Padding field, set to zero.”h]”(j²)�”}”(hŒ``pad``”h]”jC)�”}”(hj°{h]”hŒpad”…”�”}”(hj²{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj®{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mšhjª{ubjÃ)�”}”(hhh]”hì)�”}”(hŒPadding field, set to zero.”h]”hŒPadding field, set to zero.”…”�”}”(hjÉ{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M›hjÆ{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjª{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÅ{h´Mšhjzzubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj2zubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj¹gh²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjó{h]”hŒ Description”…”�”}”(hjõ{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjñ{ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mžhj¹gh²hubhì)�”}”(hŒVStructure grouping all queryable information relating to the command stream interface.”h]”hŒVStructure grouping all queryable information relating to the command stream interface.”…”�”}”(hj |h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mhj¹gh²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ)drm_panthor_timestamp_info_flags (C enum)”Œ"c.drm_panthor_timestamp_info_flags”hNt”auh1jJhj¹gh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒ drm_panthor_timestamp_info_flags”h]”jg)�”}”(hŒ%enum drm_panthor_timestamp_info_flags”h]”(jm)�”}”(hjîh]”hŒenum”…”�”}”(hj1|h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj-|h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”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Œ drm_panthor_timestamp_info_flags”h]”j–)�”}”(hj+|h]”hŒ drm_panthor_timestamp_info_flags”…”�”}”(hjQ|h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjM|ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj-|h²hh³j>|h´M„ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”hì)�”}”(hŒ drm_panthor_timestamp_info.flags”h]”hŒ drm_panthor_timestamp_info.flags”…”�”}”(hjs|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M hjp|h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj&|h²hh³j>|h´M„ubeh}”(h]”h ]”(jàŒenum”eh"]”h$]”h&]”jåjàjæj‹|jçj‹|jè‰jé‰jê‰uh1j[h²hhj¹gh³Nh´Nubjì)�”}”(hXr**Constants** ``DRM_PANTHOR_TIMESTAMP_GPU`` Query GPU time. ``DRM_PANTHOR_TIMESTAMP_CPU_NONE`` Don't query CPU time. ``DRM_PANTHOR_TIMESTAMP_CPU_MONOTONIC`` Query CPU time using CLOCK_MONOTONIC. ``DRM_PANTHOR_TIMESTAMP_CPU_MONOTONIC_RAW`` Query CPU time using CLOCK_MONOTONIC_RAW. ``DRM_PANTHOR_TIMESTAMP_CPU_TYPE_MASK`` Space reserved for CPU clock type. ``DRM_PANTHOR_TIMESTAMP_GPU_OFFSET`` Query GPU offset. ``DRM_PANTHOR_TIMESTAMP_GPU_CYCLE_COUNT`` Query GPU cycle count. ``DRM_PANTHOR_TIMESTAMP_FREQ`` Query timestamp frequency. ``DRM_PANTHOR_TIMESTAMP_DURATION`` Return duration of time query.”h]”(hì)�”}”(hŒ **Constants**”h]”jŒ)�”}”(hj•|h]”hŒ Constants”…”�”}”(hj—|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj“|ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M¤hj�|ubj§)�”}”(hhh]”(j¬)�”}”(hŒ.``DRM_PANTHOR_TIMESTAMP_GPU`` Query GPU time. ”h]”(j²)�”}”(hŒ``DRM_PANTHOR_TIMESTAMP_GPU``”h]”jC)�”}”(hj´|h]”hŒDRM_PANTHOR_TIMESTAMP_GPU”…”�”}”(hj¶|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj²|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M§hj®|ubjÃ)�”}”(hhh]”hì)�”}”(hŒQuery GPU time.”h]”hŒQuery GPU time.”…”�”}”(hjÍ|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ9``DRM_PANTHOR_TIMESTAMP_CPU_NONE`` Don't query CPU time. ”h]”(j²)�”}”(hŒ"``DRM_PANTHOR_TIMESTAMP_CPU_NONE``”h]”jC)�”}”(hjí|h]”hŒDRM_PANTHOR_TIMESTAMP_CPU_NONE”…”�”}”(hjï|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjë|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mªhjç|ubjÃ)�”}”(hhh]”hì)�”}”(hŒDon't query CPU time.”h]”hŒDon’t query CPU time.”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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ŒN``DRM_PANTHOR_TIMESTAMP_CPU_MONOTONIC`` Query CPU time using CLOCK_MONOTONIC. ”h]”(j²)�”}”(hŒ'``DRM_PANTHOR_TIMESTAMP_CPU_MONOTONIC``”h]”jC)�”}”(hj&}h]”hŒ#DRM_PANTHOR_TIMESTAMP_CPU_MONOTONIC”…”�”}”(hj(}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj$}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M­hj }ubjÃ)�”}”(hhh]”hì)�”}”(hŒ%Query CPU time using CLOCK_MONOTONIC.”h]”hŒ%Query CPU time using CLOCK_MONOTONIC.”…”�”}”(hj?}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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ŒV``DRM_PANTHOR_TIMESTAMP_CPU_MONOTONIC_RAW`` Query CPU time using CLOCK_MONOTONIC_RAW. ”h]”(j²)�”}”(hŒ+``DRM_PANTHOR_TIMESTAMP_CPU_MONOTONIC_RAW``”h]”jC)�”}”(hj_}h]”hŒ'DRM_PANTHOR_TIMESTAMP_CPU_MONOTONIC_RAW”…”�”}”(hja}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj]}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M°hjY}ubjÃ)�”}”(hhh]”hì)�”}”(hŒ)Query CPU time using CLOCK_MONOTONIC_RAW.”h]”hŒ)Query CPU time using CLOCK_MONOTONIC_RAW.”…”�”}”(hjx}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jt}h´M°hju}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjY}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jt}h´M°hj«|ubj¬)�”}”(hŒK``DRM_PANTHOR_TIMESTAMP_CPU_TYPE_MASK`` Space reserved for CPU clock type. ”h]”(j²)�”}”(hŒ'``DRM_PANTHOR_TIMESTAMP_CPU_TYPE_MASK``”h]”jC)�”}”(hj˜}h]”hŒ#DRM_PANTHOR_TIMESTAMP_CPU_TYPE_MASK”…”�”}”(hjš}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj–}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M³hj’}ubjÃ)�”}”(hhh]”hì)�”}”(hŒ"Space reserved for CPU clock type.”h]”hŒ"Space reserved for CPU clock type.”…”�”}”(hj±}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ7``DRM_PANTHOR_TIMESTAMP_GPU_OFFSET`` Query GPU offset. ”h]”(j²)�”}”(hŒ$``DRM_PANTHOR_TIMESTAMP_GPU_OFFSET``”h]”jC)�”}”(hjÑ}h]”hŒ DRM_PANTHOR_TIMESTAMP_GPU_OFFSET”…”�”}”(hjÓ}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÏ}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M¶hjË}ubjÃ)�”}”(hhh]”hì)�”}”(hŒQuery GPU offset.”h]”hŒQuery GPU offset.”…”�”}”(hjê}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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ŒA``DRM_PANTHOR_TIMESTAMP_GPU_CYCLE_COUNT`` Query GPU cycle count. ”h]”(j²)�”}”(hŒ)``DRM_PANTHOR_TIMESTAMP_GPU_CYCLE_COUNT``”h]”jC)�”}”(hj ~h]”hŒ%DRM_PANTHOR_TIMESTAMP_GPU_CYCLE_COUNT”…”�”}”(hj ~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M¹hj~ubjÃ)�”}”(hhh]”hì)�”}”(hŒQuery GPU cycle count.”h]”hŒQuery GPU cycle count.”…”�”}”(hj#~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ:``DRM_PANTHOR_TIMESTAMP_FREQ`` Query timestamp frequency. ”h]”(j²)�”}”(hŒ``DRM_PANTHOR_TIMESTAMP_FREQ``”h]”jC)�”}”(hjC~h]”hŒDRM_PANTHOR_TIMESTAMP_FREQ”…”�”}”(hjE~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjA~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M¼hj=~ubjÃ)�”}”(hhh]”hì)�”}”(hŒQuery timestamp frequency.”h]”hŒQuery timestamp frequency.”…”�”}”(hj\~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jX~h´M¼hjY~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj=~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jX~h´M¼hj«|ubj¬)�”}”(hŒA``DRM_PANTHOR_TIMESTAMP_DURATION`` Return duration of time query.”h]”(j²)�”}”(hŒ"``DRM_PANTHOR_TIMESTAMP_DURATION``”h]”jC)�”}”(hj|~h]”hŒDRM_PANTHOR_TIMESTAMP_DURATION”…”�”}”(hj~~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjz~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M¾hjv~ubjÃ)�”}”(hhh]”hì)�”}”(hŒReturn duration of time query.”h]”hŒReturn duration of time query.”…”�”}”(hj•~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M¿hj’~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjv~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j‘~h´M¾hj«|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj�|ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj¹gh²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ%drm_panthor_timestamp_info (C struct)”Œc.drm_panthor_timestamp_info”hNt”auh1jJhj¹gh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_panthor_timestamp_info”h]”jg)�”}”(hŒ!struct drm_panthor_timestamp_info”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjÖ~h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjÒ~h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”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Œdrm_panthor_timestamp_info”h]”j–)�”}”(hjÐ~h]”hŒdrm_panthor_timestamp_info”…”�”}”(hjö~h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjò~ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjÒ~h²hh³jã~h´MÄubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”hì)�”}”(hŒTimestamp information”h]”hŒTimestamp information”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÀhjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjË~h²hh³jã~h´MÄubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj0jçj0jè‰jé‰jê‰uh1j[h²hhj¹gh³Nh´Nubjì)�”}”(hXI**Definition**:: struct drm_panthor_timestamp_info { __u64 timestamp_frequency; __u64 current_timestamp; __u64 timestamp_offset; __u32 flags; __u32 duration_nsec; __u64 cycle_count; __u64 cpu_timestamp_sec; __u64 cpu_timestamp_nsec; }; **Members** ``timestamp_frequency`` The frequency of the timestamp timer or 0 if unknown. ``current_timestamp`` The current GPU timestamp. ``timestamp_offset`` The offset of the GPU timestamp timer. ``flags`` Bitmask of drm_panthor_timestamp_info_flags. If set to 0, then it is interpreted as: DRM_PANTHOR_TIMESTAMP_GPU | DRM_PANTHOR_TIMESTAMP_GPU_OFFSET | DRM_PANTHOR_TIMESTAMP_FREQ Note: these flags are exclusive to each other (only one can be used): - DRM_PANTHOR_TIMESTAMP_CPU_NONE - DRM_PANTHOR_TIMESTAMP_CPU_MONOTONIC - DRM_PANTHOR_TIMESTAMP_CPU_MONOTONIC_RAW ``duration_nsec`` Duration of time query. ``cycle_count`` Value of GPU_CYCLE_COUNT. ``cpu_timestamp_sec`` Seconds part of CPU timestamp. ``cpu_timestamp_nsec`` Nanseconds part of CPU timestamp.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj8ubhŒ:”…”�”}”(hj8h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÄhj4ubj)�”}”(hŒústruct drm_panthor_timestamp_info { __u64 timestamp_frequency; __u64 current_timestamp; __u64 timestamp_offset; __u32 flags; __u32 duration_nsec; __u64 cycle_count; __u64 cpu_timestamp_sec; __u64 cpu_timestamp_nsec; };”h]”hŒústruct drm_panthor_timestamp_info { __u64 timestamp_frequency; __u64 current_timestamp; __u64 timestamp_offset; __u32 flags; __u32 duration_nsec; __u64 cycle_count; __u64 cpu_timestamp_sec; __u64 cpu_timestamp_nsec; };”…”�”}”hjUsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÆhj4ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjfh]”hŒMembers”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjdubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÑhj4ubj§)�”}”(hhh]”(j¬)�”}”(hŒN``timestamp_frequency`` The frequency of the timestamp timer or 0 if unknown. ”h]”(j²)�”}”(hŒ``timestamp_frequency``”h]”jC)�”}”(hj…h]”hŒtimestamp_frequency”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÈhjubjÃ)�”}”(hhh]”hì)�”}”(hŒ5The frequency of the timestamp timer or 0 if unknown.”h]”hŒ5The frequency of the timestamp timer or 0 if unknown.”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÇhj›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jšh´MÈhj|ubj¬)�”}”(hŒ1``current_timestamp`` The current GPU timestamp. ”h]”(j²)�”}”(hŒ``current_timestamp``”h]”jC)�”}”(hj¿h]”hŒcurrent_timestamp”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÌhj¹ubjÃ)�”}”(hhh]”hì)�”}”(hŒThe current GPU timestamp.”h]”hŒThe current GPU timestamp.”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ<``timestamp_offset`` The offset of the GPU timestamp timer. ”h]”(j²)�”}”(hŒ``timestamp_offset``”h]”jC)�”}”(hjøh]”hŒtimestamp_offset”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjöubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÏhjòubjÃ)�”}”(hhh]”hì)�”}”(hŒ&The offset of the GPU timestamp timer.”h]”hŒ&The offset of the GPU timestamp timer.”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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¬)�”}”(hXu``flags`` Bitmask of drm_panthor_timestamp_info_flags. If set to 0, then it is interpreted as: DRM_PANTHOR_TIMESTAMP_GPU | DRM_PANTHOR_TIMESTAMP_GPU_OFFSET | DRM_PANTHOR_TIMESTAMP_FREQ Note: these flags are exclusive to each other (only one can be used): - DRM_PANTHOR_TIMESTAMP_CPU_NONE - DRM_PANTHOR_TIMESTAMP_CPU_MONOTONIC - DRM_PANTHOR_TIMESTAMP_CPU_MONOTONIC_RAW ”h]”(j²)�”}”(hŒ ``flags``”h]”jC)�”}”(hj1€h]”hŒflags”…”�”}”(hj3€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj/€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÝhj+€ubjÃ)�”}”(hhh]”(hì)�”}”(hŒ,Bitmask of drm_panthor_timestamp_info_flags.”h]”hŒ,Bitmask of drm_panthor_timestamp_info_flags.”…”�”}”(hjJ€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÓhjG€ubj§)�”}”(hhh]”j¬)�”}”(hŒ‚If set to 0, then it is interpreted as: DRM_PANTHOR_TIMESTAMP_GPU | DRM_PANTHOR_TIMESTAMP_GPU_OFFSET | DRM_PANTHOR_TIMESTAMP_FREQ ”h]”(j²)�”}”(hŒ'If set to 0, then it is interpreted as:”h]”hŒ'If set to 0, then it is interpreted as:”…”�”}”(hj`€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MØhj\€ubjÃ)�”}”(hhh]”hì)�”}”(hŒYDRM_PANTHOR_TIMESTAMP_GPU | DRM_PANTHOR_TIMESTAMP_GPU_OFFSET | DRM_PANTHOR_TIMESTAMP_FREQ”h]”hŒYDRM_PANTHOR_TIMESTAMP_GPU | DRM_PANTHOR_TIMESTAMP_GPU_OFFSET | DRM_PANTHOR_TIMESTAMP_FREQ”…”�”}”(hjr€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÖhjo€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj\€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jn€h´MØhjY€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjG€ubhì)�”}”(hŒ¶Note: these flags are exclusive to each other (only one can be used): - DRM_PANTHOR_TIMESTAMP_CPU_NONE - DRM_PANTHOR_TIMESTAMP_CPU_MONOTONIC - DRM_PANTHOR_TIMESTAMP_CPU_MONOTONIC_RAW”h]”hŒ¶Note: these flags are exclusive to each other (only one can be used): - DRM_PANTHOR_TIMESTAMP_CPU_NONE - DRM_PANTHOR_TIMESTAMP_CPU_MONOTONIC - DRM_PANTHOR_TIMESTAMP_CPU_MONOTONIC_RAW”…”�”}”(hj“€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÚhjG€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj+€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jF€h´MÝhj|ubj¬)�”}”(hŒ*``duration_nsec`` Duration of time query. ”h]”(j²)�”}”(hŒ``duration_nsec``”h]”jC)�”}”(hj´€h]”hŒ duration_nsec”…”�”}”(hj¶€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj²€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Máhj®€ubjÃ)�”}”(hhh]”hì)�”}”(hŒDuration of time query.”h]”hŒDuration of time query.”…”�”}”(hjÍ€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ*``cycle_count`` Value of GPU_CYCLE_COUNT. ”h]”(j²)�”}”(hŒ``cycle_count``”h]”jC)�”}”(hjí€h]”hŒ cycle_count”…”�”}”(hjï€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjë€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mähjç€ubjÃ)�”}”(hhh]”hì)�”}”(hŒValue of GPU_CYCLE_COUNT.”h]”hŒValue of GPU_CYCLE_COUNT.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ5``cpu_timestamp_sec`` Seconds part of CPU timestamp. ”h]”(j²)�”}”(hŒ``cpu_timestamp_sec``”h]”jC)�”}”(hj&�h]”hŒcpu_timestamp_sec”…”�”}”(hj(�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj$�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mçhj �ubjÃ)�”}”(hhh]”hì)�”}”(hŒSeconds part of CPU timestamp.”h]”hŒSeconds part of CPU timestamp.”…”�”}”(hj?�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ8``cpu_timestamp_nsec`` Nanseconds part of CPU timestamp.”h]”(j²)�”}”(hŒ``cpu_timestamp_nsec``”h]”jC)�”}”(hj_�h]”hŒcpu_timestamp_nsec”…”�”}”(hja�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj]�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MéhjY�ubjÃ)�”}”(hhh]”hì)�”}”(hŒ!Nanseconds part of CPU timestamp.”h]”hŒ!Nanseconds part of CPU timestamp.”…”�”}”(hjx�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mêhju�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjY�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jt�h´Méhj|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj4ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj¹gh²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hj¢�h]”hŒ Description”…”�”}”(hj¤�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj �ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Míhj¹gh²hubhì)�”}”(hŒKStructure grouping all queryable information relating to the GPU timestamp.”h]”hŒKStructure grouping all queryable information relating to the GPU timestamp.”…”�”}”(hj¸�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÁhj¹gh²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_panthor_mmu_info (C struct)”Œc.drm_panthor_mmu_info”hNt”auh1jJhj¹gh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_panthor_mmu_info”h]”jg)�”}”(hŒstruct drm_panthor_mmu_info”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjà�h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjÜ�h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”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Œdrm_panthor_mmu_info”h]”j–)�”}”(hjÚ�h]”hŒdrm_panthor_mmu_info”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjü�ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjÜ�h²hh³jí�h´MÆubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”hì)�”}”(hŒMMU information”h]”hŒMMU information”…”�”}”(hj"‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mîhj‚h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÕ�h²hh³jí�h´MÆubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj:‚jçj:‚jè‰jé‰jê‰uh1j[h²hhj¹gh³Nh´Nubjì)�”}”(hŒŒ**Definition**:: struct drm_panthor_mmu_info { __u64 page_size_bitmap; }; **Members** ``page_size_bitmap`` Allowed page sizes”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjF‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjB‚ubhŒ:”…”�”}”(hjB‚h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mòhj>‚ubj)�”}”(hŒ‚ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjp‚h]”hŒMembers”…”�”}”(hjr‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjn‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Møhj>‚ubj§)�”}”(hhh]”j¬)�”}”(hŒ'``page_size_bitmap`` Allowed page sizes”h]”(j²)�”}”(hŒ``page_size_bitmap``”h]”jC)�”}”(hj�‚h]”hŒpage_size_bitmap”…”�”}”(hj‘‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj�‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Móhj‰‚ubjÃ)�”}”(hhh]”hì)�”}”(hŒAllowed page sizes”h]”hŒAllowed page sizes”…”�”}”(hj¨‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Môhj¥‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj‰‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j¤‚h´Móhj†‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj>‚ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj¹gh²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjÒ‚h]”hŒ Description”…”�”}”(hjÔ‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjЂubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M÷hj¹gh²hubhì)�”}”(hŒAStructure grouping all queryable information relating to the MMU.”h]”hŒAStructure grouping all queryable information relating to the MMU.”…”�”}”(hjè‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mïhj¹gh²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ,drm_panthor_group_priorities_info (C struct)”Œ#c.drm_panthor_group_priorities_info”hNt”auh1jJhj¹gh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒ!drm_panthor_group_priorities_info”h]”jg)�”}”(hŒ(struct drm_panthor_group_priorities_info”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj ƒh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”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Œ!drm_panthor_group_priorities_info”h]”j–)�”}”(hj ƒh]”hŒ!drm_panthor_group_priorities_info”…”�”}”(hj0ƒh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj,ƒubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj ƒh²hh³jƒh´Môubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”hì)�”}”(hŒGroup priorities information”h]”hŒGroup priorities information”…”�”}”(hjRƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MøhjOƒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjƒh²hh³jƒh´Môubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjjƒjçjjƒjè‰jé‰jê‰uh1j[h²hhj¹gh³Nh´Nubjì)�”}”(hX"**Definition**:: struct drm_panthor_group_priorities_info { __u8 allowed_mask; __u8 pad[3]; }; **Members** ``allowed_mask`` Bitmask of the allowed group priorities. Each bit represents a variant of the enum drm_panthor_group_priority. ``pad`` Padding fields, MBZ.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjvƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjrƒubhŒ:”…”�”}”(hjrƒh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mühjnƒubj)�”}”(hŒUstruct drm_panthor_group_priorities_info { __u8 allowed_mask; __u8 pad[3]; };”h]”hŒUstruct drm_panthor_group_priorities_info { __u8 allowed_mask; __u8 pad[3]; };”…”�”}”hj�ƒsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mþhjnƒubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj ƒh]”hŒMembers”…”�”}”(hj¢ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjžƒubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mhjnƒubj§)�”}”(hhh]”(j¬)�”}”(hŒ�``allowed_mask`` Bitmask of the allowed group priorities. Each bit represents a variant of the enum drm_panthor_group_priority. ”h]”(j²)�”}”(hŒ``allowed_mask``”h]”jC)�”}”(hj¿ƒh]”hŒ allowed_mask”…”�”}”(hjÁƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj½ƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mhj¹ƒubjÃ)�”}”(hhh]”(hì)�”}”(hŒ(Bitmask of the allowed group priorities.”h]”hŒ(Bitmask of the allowed group priorities.”…”�”}”(hj؃h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÿhjÕƒubhì)�”}”(hŒEEach bit represents a variant of the enum drm_panthor_group_priority.”h]”hŒEEach bit represents a variant of the enum drm_panthor_group_priority.”…”�”}”(hjçƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÔƒh´MhjÕƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj¹ƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÔƒh´Mhj¶ƒubj¬)�”}”(hŒ``pad`` Padding fields, MBZ.”h]”(j²)�”}”(hŒ``pad``”h]”jC)�”}”(hj„h]”hŒpad”…”�”}”(hj „h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mhj„ubjÃ)�”}”(hhh]”hì)�”}”(hŒPadding fields, MBZ.”h]”hŒPadding fields, MBZ.”…”�”}”(hj „h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mhj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j„h´Mhj¶ƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjnƒubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj¹gh²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjJ„h]”hŒ Description”…”�”}”(hjL„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjH„ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mhj¹gh²hubhì)�”}”(hŒVStructure grouping all queryable information relating to the allowed group priorities.”h]”hŒVStructure grouping all queryable information relating to the allowed group priorities.”…”�”}”(hj`„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mùhj¹gh²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ drm_panthor_dev_query (C struct)”Œc.drm_panthor_dev_query”hNt”auh1jJhj¹gh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_panthor_dev_query”h]”jg)�”}”(hŒstruct drm_panthor_dev_query”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjˆ„h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj„„h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”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Œdrm_panthor_dev_query”h]”j–)�”}”(hj‚„h]”hŒdrm_panthor_dev_query”…”�”}”(hj¨„h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj¤„ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj„„h²hh³j•„h´Mþubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”hì)�”}”(hŒ/Arguments passed to DRM_PANTHOR_IOCTL_DEV_QUERY”h]”hŒ/Arguments passed to DRM_PANTHOR_IOCTL_DEV_QUERY”…”�”}”(hjÊ„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M hjÇ„h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj}„h²hh³j•„h´Mþubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjâ„jçjâ„jè‰jé‰jê‰uh1j[h²hhj¹gh³Nh´Nubjì)�”}”(hX**Definition**:: struct drm_panthor_dev_query { __u32 type; __u32 size; __u64 pointer; }; **Members** ``type`` the query type (see drm_panthor_dev_query_type). ``size`` size of the type being queried. If pointer is NULL, size is updated by the driver to provide the output structure size. If pointer is not NULL, the driver will only copy min(size, actual_structure_size) bytes to the pointer, and update the size accordingly. This allows us to extend query types without breaking userspace. ``pointer`` user pointer to a query type struct. Pointer can be NULL, in which case, nothing is copied, but the actual structure size is returned. If not NULL, it must point to a location that's large enough to hold size bytes.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjî„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjê„ubhŒ:”…”�”}”(hjê„h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M hjæ„ubj)�”}”(hŒTstruct drm_panthor_dev_query { __u32 type; __u32 size; __u64 pointer; };”h]”hŒTstruct drm_panthor_dev_query { __u32 type; __u32 size; __u64 pointer; };”…”�”}”hj…sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mhjæ„ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj…h]”hŒMembers”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mhjæ„ubj§)�”}”(hhh]”(j¬)�”}”(hŒ:``type`` the query type (see drm_panthor_dev_query_type). ”h]”(j²)�”}”(hŒ``type``”h]”jC)�”}”(hj7…h]”hŒtype”…”�”}”(hj9…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj5…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M hj1…ubjÃ)�”}”(hhh]”hì)�”}”(hŒ0the query type (see drm_panthor_dev_query_type).”h]”hŒ0the query type (see drm_panthor_dev_query_type).”…”�”}”(hjP…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jL…h´M hjM…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj1…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jL…h´M hj.…ubj¬)�”}”(hXM``size`` size of the type being queried. If pointer is NULL, size is updated by the driver to provide the output structure size. If pointer is not NULL, the driver will only copy min(size, actual_structure_size) bytes to the pointer, and update the size accordingly. This allows us to extend query types without breaking userspace. ”h]”(j²)�”}”(hŒ``size``”h]”jC)�”}”(hjp…h]”hŒsize”…”�”}”(hjr…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjn…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mhjj…ubjÃ)�”}”(hhh]”(hì)�”}”(hŒsize of the type being queried.”h]”hŒsize of the type being queried.”…”�”}”(hj‰…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mhj†…ubhì)�”}”(hX"If pointer is NULL, size is updated by the driver to provide the output structure size. If pointer is not NULL, the driver will only copy min(size, actual_structure_size) bytes to the pointer, and update the size accordingly. This allows us to extend query types without breaking userspace.”h]”hX"If pointer is NULL, size is updated by the driver to provide the output structure size. If pointer is not NULL, the driver will only copy min(size, actual_structure_size) bytes to the pointer, and update the size accordingly. This allows us to extend query types without breaking userspace.”…”�”}”(hj˜…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mhj†…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjj…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j……h´Mhj.…ubj¬)�”}”(hŒä``pointer`` user pointer to a query type struct. Pointer can be NULL, in which case, nothing is copied, but the actual structure size is returned. If not NULL, it must point to a location that's large enough to hold size bytes.”h]”(j²)�”}”(hŒ ``pointer``”h]”jC)�”}”(hj¹…h]”hŒpointer”…”�”•:}”(hj»…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj·…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mhj³…ubjÃ)�”}”(hhh]”(hì)�”}”(hŒ$user pointer to a query type struct.”h]”hŒ$user pointer to a query type struct.”…”�”}”(hjÒ…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MhjÏ…ubhì)�”}”(hŒ²Pointer can be NULL, in which case, nothing is copied, but the actual structure size is returned. If not NULL, it must point to a location that's large enough to hold size bytes.”h]”hŒ´Pointer can be NULL, in which case, nothing is copied, but the actual structure size is returned. If not NULL, it must point to a location that’s large enough to hold size bytes.”…”�”}”(hjá…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MhjÏ…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj³…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÎ…h´Mhj.…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjæ„ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj¹gh²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ drm_panthor_vm_create (C struct)”Œc.drm_panthor_vm_create”hNt”auh1jJhj¹gh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_panthor_vm_create”h]”jg)�”}”(hŒstruct drm_panthor_vm_create”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj"†h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj†h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M&ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0†h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hj†h²hh³j/†h´M&ubj�)�”}”(hŒdrm_panthor_vm_create”h]”j–)�”}”(hj†h]”hŒdrm_panthor_vm_create”…”�”}”(hjB†h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj>†ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj†h²hh³j/†h´M&ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”hì)�”}”(hŒ/Arguments passed to DRM_PANTHOR_IOCTL_VM_CREATE”h]”hŒ/Arguments passed to DRM_PANTHOR_IOCTL_VM_CREATE”…”�”}”(hjd†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M%hja†h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj†h²hh³j/†h´M&ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj|†jçj|†jè‰jé‰jê‰uh1j[h²hhj¹gh³Nh´Nubjì)�”}”(hX¢**Definition**:: struct drm_panthor_vm_create { __u32 flags; __u32 id; __u64 user_va_range; }; **Members** ``flags`` VM flags, MBZ. ``id`` Returned VM ID. ``user_va_range`` Size of the VA space reserved for user objects. The kernel will pick the remaining space to map kernel-only objects to the VM (heap chunks, heap context, ring buffers, kernel synchronization objects, ...). If the space left for kernel objects is too small, kernel object allocation will fail further down the road. One can use drm_panthor_gpu_info::mmu_features to extract the total virtual address range, and chose a user_va_range that leaves some space to the kernel. If user_va_range is zero, the kernel will pick a sensible value based on TASK_SIZE and the virtual range supported by the GPU MMU (the kernel/user split should leave enough VA space for userspace processes to support SVM, while still allowing the kernel to map some amount of kernel objects in the kernel VA range). The value chosen by the driver will be returned in **user_va_range**. User VA space always starts at 0x0, kernel VA space is always placed after the user VA range.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjˆ†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj„†ubhŒ:”…”�”}”(hj„†h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M)hj€†ubj)�”}”(hŒYstruct drm_panthor_vm_create { __u32 flags; __u32 id; __u64 user_va_range; };”h]”hŒYstruct drm_panthor_vm_create { __u32 flags; __u32 id; __u64 user_va_range; };”…”�”}”hj¡†sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M+hj€†ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj²†h]”hŒMembers”…”�”}”(hj´†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj°†ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M1hj€†ubj§)�”}”(hhh]”(j¬)�”}”(hŒ``flags`` VM flags, MBZ. ”h]”(j²)�”}”(hŒ ``flags``”h]”jC)�”}”(hjцh]”hŒflags”…”�”}”(hjÓ†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjφubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M)hjˆubjÃ)�”}”(hhh]”hì)�”}”(hŒVM flags, MBZ.”h]”hŒVM flags, MBZ.”…”�”}”(hjê†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ``id`` Returned VM ID. ”h]”(j²)�”}”(hŒ``id``”h]”jC)�”}”(hj ‡h]”hŒid”…”�”}”(hj ‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M,hj‡ubjÃ)�”}”(hhh]”hì)�”}”(hŒReturned VM ID.”h]”hŒReturned VM ID.”…”�”}”(hj#‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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¬)�”}”(hXÊ``user_va_range`` Size of the VA space reserved for user objects. The kernel will pick the remaining space to map kernel-only objects to the VM (heap chunks, heap context, ring buffers, kernel synchronization objects, ...). If the space left for kernel objects is too small, kernel object allocation will fail further down the road. One can use drm_panthor_gpu_info::mmu_features to extract the total virtual address range, and chose a user_va_range that leaves some space to the kernel. If user_va_range is zero, the kernel will pick a sensible value based on TASK_SIZE and the virtual range supported by the GPU MMU (the kernel/user split should leave enough VA space for userspace processes to support SVM, while still allowing the kernel to map some amount of kernel objects in the kernel VA range). The value chosen by the driver will be returned in **user_va_range**. User VA space always starts at 0x0, kernel VA space is always placed after the user VA range.”h]”(j²)�”}”(hŒ``user_va_range``”h]”jC)�”}”(hjC‡h]”hŒ user_va_range”…”�”}”(hjE‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjA‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M@hj=‡ubjÃ)�”}”(hhh]”(hì)�”}”(hŒ/Size of the VA space reserved for user objects.”h]”hŒ/Size of the VA space reserved for user objects.”…”�”}”(hj\‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M0hjY‡ubhì)�”}”(hX¥The kernel will pick the remaining space to map kernel-only objects to the VM (heap chunks, heap context, ring buffers, kernel synchronization objects, ...). If the space left for kernel objects is too small, kernel object allocation will fail further down the road. One can use drm_panthor_gpu_info::mmu_features to extract the total virtual address range, and chose a user_va_range that leaves some space to the kernel.”h]”hX¥The kernel will pick the remaining space to map kernel-only objects to the VM (heap chunks, heap context, ring buffers, kernel synchronization objects, ...). If the space left for kernel objects is too small, kernel object allocation will fail further down the road. One can use drm_panthor_gpu_info::mmu_features to extract the total virtual address range, and chose a user_va_range that leaves some space to the kernel.”…”�”}”(hjk‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M2hjY‡ubhì)�”}”(hX�If user_va_range is zero, the kernel will pick a sensible value based on TASK_SIZE and the virtual range supported by the GPU MMU (the kernel/user split should leave enough VA space for userspace processes to support SVM, while still allowing the kernel to map some amount of kernel objects in the kernel VA range). The value chosen by the driver will be returned in **user_va_range**.”h]”(hXoIf user_va_range is zero, the kernel will pick a sensible value based on TASK_SIZE and the virtual range supported by the GPU MMU (the kernel/user split should leave enough VA space for userspace processes to support SVM, while still allowing the kernel to map some amount of kernel objects in the kernel VA range). The value chosen by the driver will be returned in ”…”�”}”(hjz‡h²hh³Nh´NubjŒ)�”}”(hŒ**user_va_range**”h]”hŒ user_va_range”…”�”}”(hj‚‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjz‡ubhŒ.”…”�”}”(hjz‡h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M9hjY‡ubhì)�”}”(hŒ]User VA space always starts at 0x0, kernel VA space is always placed after the user VA range.”h]”hŒ]User VA space always starts at 0x0, kernel VA space is always placed after the user VA range.”…”�”}”(hj›‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jX‡h´M@hjY‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj=‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jX‡h´M@hjȆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj€†ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj¹gh²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ!drm_panthor_vm_destroy (C struct)”Œc.drm_panthor_vm_destroy”hNt”auh1jJhj¹gh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_panthor_vm_destroy”h]”jg)�”}”(hŒstruct drm_panthor_vm_destroy”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjÛ‡h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjׇh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MGubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjé‡h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjׇh²hh³jè‡h´MGubj�)�”}”(hŒdrm_panthor_vm_destroy”h]”j–)�”}”(hjÕ‡h]”hŒdrm_panthor_vm_destroy”…”�”}”(hjû‡h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj÷‡ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjׇh²hh³jè‡h´MGubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjÓ‡h²hh³jè‡h´MGubah}”(h]”j·ah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jè‡h´MGhjЇh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ0Arguments passed to DRM_PANTHOR_IOCTL_VM_DESTROY”h]”hŒ0Arguments passed to DRM_PANTHOR_IOCTL_VM_DESTROY”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MFhjˆh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjЇh²hh³jè‡h´MGubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj5ˆjçj5ˆjè‰jé‰jê‰uh1j[h²hhj¹gh³Nh´Nubjì)�”}”(hŒ™**Definition**:: struct drm_panthor_vm_destroy { __u32 id; __u32 pad; }; **Members** ``id`` ID of the VM to destroy. ``pad`` MBZ.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjAˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj=ˆubhŒ:”…”�”}”(hj=ˆh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MJhj9ˆubj)�”}”(hŒ?struct drm_panthor_vm_destroy { __u32 id; __u32 pad; };”h]”hŒ?struct drm_panthor_vm_destroy { __u32 id; __u32 pad; };”…”�”}”hjZˆsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MLhj9ˆubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjkˆh]”hŒMembers”…”�”}”(hjmˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjiˆubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MQhj9ˆubj§)�”}”(hhh]”(j¬)�”}”(hŒ ``id`` ID of the VM to destroy. ”h]”(j²)�”}”(hŒ``id``”h]”jC)�”}”(hjŠˆh]”hŒid”…”�”}”(hjŒˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjˆˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MJhj„ˆubjÃ)�”}”(hhh]”hì)�”}”(hŒID of the VM to destroy.”h]”hŒID of the VM to destroy.”…”�”}”(hj£ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jŸˆh´MJhj ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj„ˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jŸˆh´MJhj�ˆubj¬)�”}”(hŒ ``pad`` MBZ.”h]”(j²)�”}”(hŒ``pad``”h]”jC)�”}”(hjÈh]”hŒpad”…”�”}”(hjňh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÁˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MLhj½ˆubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ.”h]”hŒMBZ.”…”�”}”(hj܈h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MMhjÙˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj½ˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j؈h´MLhj�ˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj9ˆubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj¹gh²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ%drm_panthor_vm_bind_op_flags (C enum)”Œc.drm_panthor_vm_bind_op_flags”hNt”auh1jJhj¹gh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_panthor_vm_bind_op_flags”h]”jg)�”}”(hŒ!enum drm_panthor_vm_bind_op_flags”h]”(jm)�”}”(hjîh]”hŒenum”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj‰h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MSubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+‰h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hj‰h²hh³j*‰h´MSubj�)�”}”(hŒdrm_panthor_vm_bind_op_flags”h]”j–)�”}”(hj‰h]”hŒdrm_panthor_vm_bind_op_flags”…”�”}”(hj=‰h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj9‰ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj‰h²hh³j*‰h´MSubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hj‰h²hh³j*‰h´MSubah}”(h]”j‰ah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³j*‰h´MShj‰h²hubjÄ)�”}”(hhh]”hì)�”}”(hŒVM bind operation flags”h]”hŒVM bind operation flags”…”�”}”(hj_‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MQhj\‰h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj‰h²hh³j*‰h´MSubeh}”(h]”h ]”(jàŒenum”eh"]”h$]”h&]”jåjàjæjw‰jçjw‰jè‰jé‰jê‰uh1j[h²hhj¹gh³Nh´Nubjì)�”}”(hX/**Constants** ``DRM_PANTHOR_VM_BIND_OP_MAP_READONLY`` Map the memory read-only. Only valid with DRM_PANTHOR_VM_BIND_OP_TYPE_MAP. ``DRM_PANTHOR_VM_BIND_OP_MAP_NOEXEC`` Map the memory not-executable. Only valid with DRM_PANTHOR_VM_BIND_OP_TYPE_MAP. ``DRM_PANTHOR_VM_BIND_OP_MAP_UNCACHED`` Map the memory uncached. Only valid with DRM_PANTHOR_VM_BIND_OP_TYPE_MAP. ``DRM_PANTHOR_VM_BIND_OP_MAP_SPARSE`` Sparsely map a virtual memory range Only valid with DRM_PANTHOR_VM_BIND_OP_TYPE_MAP. When this flag is set, the whole vm_bind range is mapped over a dummy object in a cyclic fashion, and all GPU reads from addresses in the range return undefined values. This flag being set means drm_panthor_vm_bind_op::bo_offset and drm_panthor_vm_bind_op::bo_handle must both be set to 0. DRM_PANTHOR_VM_BIND_OP_MAP_NOEXEC must also be set. ``DRM_PANTHOR_VM_BIND_OP_TYPE_MASK`` Mask used to determine the type of operation. ``DRM_PANTHOR_VM_BIND_OP_TYPE_MAP`` Map operation. ``DRM_PANTHOR_VM_BIND_OP_TYPE_UNMAP`` Unmap operation. ``DRM_PANTHOR_VM_BIND_OP_TYPE_SYNC_ONLY`` No VM operation. Just serves as a synchronization point on a VM queue. Only valid if ``DRM_PANTHOR_VM_BIND_ASYNC`` is set in drm_panthor_vm_bind::flags, and drm_panthor_vm_bind_op::syncs contains at least one element.”h]”(hì)�”}”(hŒ **Constants**”h]”jŒ)�”}”(hj�‰h]”hŒ Constants”…”�”}”(hjƒ‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MUhj{‰ubj§)�”}”(hhh]”(j¬)�”}”(hŒt``DRM_PANTHOR_VM_BIND_OP_MAP_READONLY`` Map the memory read-only. Only valid with DRM_PANTHOR_VM_BIND_OP_TYPE_MAP. ”h]”(j²)�”}”(hŒ'``DRM_PANTHOR_VM_BIND_OP_MAP_READONLY``”h]”jC)�”}”(hj ‰h]”hŒ#DRM_PANTHOR_VM_BIND_OP_MAP_READONLY”…”�”}”(hj¢‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjž‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MZhjš‰ubjÃ)�”}”(hhh]”(hì)�”}”(hŒMap the memory read-only.”h]”hŒMap the memory read-only.”…”�”}”(hj¹‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MXhj¶‰ubhì)�”}”(hŒ0Only valid with DRM_PANTHOR_VM_BIND_OP_TYPE_MAP.”h]”hŒ0Only valid with DRM_PANTHOR_VM_BIND_OP_TYPE_MAP.”…”�”}”(hjȉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jµ‰h´MZhj¶‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjš‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jµ‰h´MZhj—‰ubj¬)�”}”(hŒw``DRM_PANTHOR_VM_BIND_OP_MAP_NOEXEC`` Map the memory not-executable. Only valid with DRM_PANTHOR_VM_BIND_OP_TYPE_MAP. ”h]”(j²)�”}”(hŒ%``DRM_PANTHOR_VM_BIND_OP_MAP_NOEXEC``”h]”jC)�”}”(hjè‰h]”hŒ!DRM_PANTHOR_VM_BIND_OP_MAP_NOEXEC”…”�”}”(hjê‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjæ‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M_hjâ‰ubjÃ)�”}”(hhh]”(hì)�”}”(hŒMap the memory not-executable.”h]”hŒMap the memory not-executable.”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M]hjþ‰ubhì)�”}”(hŒ0Only valid with DRM_PANTHOR_VM_BIND_OP_TYPE_MAP.”h]”hŒ0Only valid with DRM_PANTHOR_VM_BIND_OP_TYPE_MAP.”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jý‰h´M_hjþ‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjâ‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jý‰h´M_hj—‰ubj¬)�”}”(hŒs``DRM_PANTHOR_VM_BIND_OP_MAP_UNCACHED`` Map the memory uncached. Only valid with DRM_PANTHOR_VM_BIND_OP_TYPE_MAP. ”h]”(j²)�”}”(hŒ'``DRM_PANTHOR_VM_BIND_OP_MAP_UNCACHED``”h]”jC)�”}”(hj0Šh]”hŒ#DRM_PANTHOR_VM_BIND_OP_MAP_UNCACHED”…”�”}”(hj2Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj.Šubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mdhj*ŠubjÃ)�”}”(hhh]”(hì)�”}”(hŒMap the memory uncached.”h]”hŒMap the memory uncached.”…”�”}”(hjIŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MbhjFŠubhì)�”}”(hŒ0Only valid with DRM_PANTHOR_VM_BIND_OP_TYPE_MAP.”h]”hŒ0Only valid with DRM_PANTHOR_VM_BIND_OP_TYPE_MAP.”…”�”}”(hjXŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jEŠh´MdhjFŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj*Šubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jEŠh´Mdhj—‰ubj¬)�”}”(hXÓ``DRM_PANTHOR_VM_BIND_OP_MAP_SPARSE`` Sparsely map a virtual memory range Only valid with DRM_PANTHOR_VM_BIND_OP_TYPE_MAP. When this flag is set, the whole vm_bind range is mapped over a dummy object in a cyclic fashion, and all GPU reads from addresses in the range return undefined values. This flag being set means drm_panthor_vm_bind_op::bo_offset and drm_panthor_vm_bind_op::bo_handle must both be set to 0. DRM_PANTHOR_VM_BIND_OP_MAP_NOEXEC must also be set. ”h]”(j²)�”}”(hŒ%``DRM_PANTHOR_VM_BIND_OP_MAP_SPARSE``”h]”jC)�”}”(hjxŠh]”hŒ!DRM_PANTHOR_VM_BIND_OP_MAP_SPARSE”…”�”}”(hjzŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjvŠubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MnhjrŠubjÃ)�”}”(hhh]”(hì)�”}”(hŒ#Sparsely map a virtual memory range”h]”hŒ#Sparsely map a virtual memory range”…”�”}”(hj‘Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MghjŽŠubhì)�”}”(hŒ0Only valid with DRM_PANTHOR_VM_BIND_OP_TYPE_MAP.”h]”hŒ0Only valid with DRM_PANTHOR_VM_BIND_OP_TYPE_MAP.”…”�”}”(hj Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MihjŽŠubhì)�”}”(hXUWhen this flag is set, the whole vm_bind range is mapped over a dummy object in a cyclic fashion, and all GPU reads from addresses in the range return undefined values. This flag being set means drm_panthor_vm_bind_op::bo_offset and drm_panthor_vm_bind_op::bo_handle must both be set to 0. DRM_PANTHOR_VM_BIND_OP_MAP_NOEXEC must also be set.”h]”hXUWhen this flag is set, the whole vm_bind range is mapped over a dummy object in a cyclic fashion, and all GPU reads from addresses in the range return undefined values. This flag being set means drm_panthor_vm_bind_op::bo_offset and drm_panthor_vm_bind_op::bo_handle must both be set to 0. DRM_PANTHOR_VM_BIND_OP_MAP_NOEXEC must also be set.”…”�”}”(hj¯Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MkhjŽŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjrŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j�Šh´Mnhj—‰ubj¬)�”}”(hŒS``DRM_PANTHOR_VM_BIND_OP_TYPE_MASK`` Mask used to determine the type of operation. ”h]”(j²)�”}”(hŒ$``DRM_PANTHOR_VM_BIND_OP_TYPE_MASK``”h]”jC)�”}”(hjЊh]”hŒ DRM_PANTHOR_VM_BIND_OP_TYPE_MASK”…”�”}”(hjÒŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjΊubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MqhjÊŠubjÃ)�”}”(hhh]”hì)�”}”(hŒ-Mask used to determine the type of operation.”h]”hŒ-Mask used to determine the type of operation.”…”�”}”(hjéŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jåŠh´MqhjæŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÊŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jåŠh´Mqhj—‰ubj¬)�”}”(hŒ3``DRM_PANTHOR_VM_BIND_OP_TYPE_MAP`` Map operation. ”h]”(j²)�”}”(hŒ#``DRM_PANTHOR_VM_BIND_OP_TYPE_MAP``”h]”jC)�”}”(hj ‹h]”hŒDRM_PANTHOR_VM_BIND_OP_TYPE_MAP”…”�”}”(hj ‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mthj‹ubjÃ)�”}”(hhh]”hì)�”}”(hŒMap operation.”h]”hŒMap operation.”…”�”}”(hj"‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j‹h´Mthj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j‹h´Mthj—‰ubj¬)�”}”(hŒ7``DRM_PANTHOR_VM_BIND_OP_TYPE_UNMAP`` Unmap operation. ”h]”(j²)�”}”(hŒ%``DRM_PANTHOR_VM_BIND_OP_TYPE_UNMAP``”h]”jC)�”}”(hjB‹h]”hŒ!DRM_PANTHOR_VM_BIND_OP_TYPE_UNMAP”…”�”}”(hjD‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj@‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mwhj<‹ubjÃ)�”}”(hhh]”hì)�”}”(hŒUnmap operation.”h]”hŒUnmap operation.”…”�”}”(hj[‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jW‹h´MwhjX‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj<‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jW‹h´Mwhj—‰ubj¬)�”}”(hX``DRM_PANTHOR_VM_BIND_OP_TYPE_SYNC_ONLY`` No VM operation. Just serves as a synchronization point on a VM queue. Only valid if ``DRM_PANTHOR_VM_BIND_ASYNC`` is set in drm_panthor_vm_bind::flags, and drm_panthor_vm_bind_op::syncs contains at least one element.”h]”(j²)�”}”(hŒ)``DRM_PANTHOR_VM_BIND_OP_TYPE_SYNC_ONLY``”h]”jC)�”}”(hj{‹h]”hŒ%DRM_PANTHOR_VM_BIND_OP_TYPE_SYNC_ONLY”…”�”}”(hj}‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjy‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M~hju‹ubjÃ)�”}”(hhh]”(hì)�”}”(hŒNo VM operation.”h]”hŒNo VM operation.”…”�”}”(hj”‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mzhj‘‹ubhì)�”}”(hŒ5Just serves as a synchronization point on a VM queue.”h]”hŒ5Just serves as a synchronization point on a VM queue.”…”�”}”(hj£‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M|hj‘‹ubhì)�”}”(hŒ’Only valid if ``DRM_PANTHOR_VM_BIND_ASYNC`` is set in drm_panthor_vm_bind::flags, and drm_panthor_vm_bind_op::syncs contains at least one element.”h]”(hŒOnly valid if ”…”�”}”(hj²‹h²hh³Nh´NubjC)�”}”(hŒ``DRM_PANTHOR_VM_BIND_ASYNC``”h]”hŒDRM_PANTHOR_VM_BIND_ASYNC”…”�”}”(hjº‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj²‹ubhŒg is set in drm_panthor_vm_bind::flags, and drm_panthor_vm_bind_op::syncs contains at least one element.”…”�”}”(hj²‹h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j�‹h´M~hj‘‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhju‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j�‹h´M~hj—‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj{‰ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj¹gh²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ!drm_panthor_vm_bind_op (C struct)”Œc.drm_panthor_vm_bind_op”hNt”auh1jJhj¹gh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_panthor_vm_bind_op”h]”jg)�”}”(hŒstruct drm_panthor_vm_bind_op”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjŒh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”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Œdrm_panthor_vm_bind_op”h]”j–)�”}”(hjþ‹h]”hŒdrm_panthor_vm_bind_op”…”�”}”(hj$Œh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj Œubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjŒh²hh³jŒh´M„ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”hì)�”}”(hŒVM bind operation”h]”hŒVM bind operation”…”�”}”(hjFŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MŒhjCŒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjù‹h²hh³jŒh´M„ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj^Œjçj^Œjè‰jé‰jê‰uh1j[h²hhj¹gh³Nh´Nubjì)�”}”(hX`**Definition**:: struct drm_panthor_vm_bind_op { __u32 flags; __u32 bo_handle; __u64 bo_offset; __u64 va; __u64 size; struct drm_panthor_obj_array syncs; }; **Members** ``flags`` Combination of drm_panthor_vm_bind_op_flags flags. ``bo_handle`` Handle of the buffer object to map. MBZ for unmap or sync-only operations. ``bo_offset`` Buffer object offset. MBZ for unmap or sync-only operations. ``va`` Virtual address to map/unmap. MBZ for sync-only operations. ``size`` Size to map/unmap. MBZ for sync-only operations. ``syncs`` Array of struct drm_panthor_sync_op synchronization operations. This array must be empty if ``DRM_PANTHOR_VM_BIND_ASYNC`` is not set on the drm_panthor_vm_bind object containing this VM bind operation. This array shall not be empty for sync-only operations.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjfŒubhŒ:”…”�”}”(hjfŒh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M�hjbŒubj)�”}”(hŒ£struct drm_panthor_vm_bind_op { __u32 flags; __u32 bo_handle; __u64 bo_offset; __u64 va; __u64 size; struct drm_panthor_obj_array syncs; };”h]”hŒ£struct drm_panthor_vm_bind_op { __u32 flags; __u32 bo_handle; __u64 bo_offset; __u64 va; __u64 size; struct drm_panthor_obj_array syncs; };”…”�”}”hjƒŒsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M’hjbŒubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj”Œh]”hŒMembers”…”�”}”(hj–Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj’Œubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M›hjbŒubj§)�”}”(hhh]”(j¬)�”}”(hŒ=``flags`` Combination of drm_panthor_vm_bind_op_flags flags. ”h]”(j²)�”}”(hŒ ``flags``”h]”jC)�”}”(hj³Œh]”hŒflags”…”�”}”(hjµŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj±Œubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M�hj­ŒubjÃ)�”}”(hhh]”hì)�”}”(hŒ2Combination of drm_panthor_vm_bind_op_flags flags.”h]”hŒ2Combination of drm_panthor_vm_bind_op_flags flags.”…”�”}”(hjÌŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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``bo_handle`` Handle of the buffer object to map. MBZ for unmap or sync-only operations. ”h]”(j²)�”}”(hŒ ``bo_handle``”h]”jC)�”}”(hjìŒh]”hŒ bo_handle”…”�”}”(hjîŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjêŒubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M•hjæŒubjÃ)�”}”(hhh]”hì)�”}”(hŒJHandle of the buffer object to map. MBZ for unmap or sync-only operations.”h]”hŒJHandle of the buffer object to map. MBZ for unmap or sync-only operations.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”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``bo_offset`` Buffer object offset. MBZ for unmap or sync-only operations. ”h]”(j²)�”}”(hŒ ``bo_offset``”h]”jC)�”}”(hj&�h]”hŒ bo_offset”…”�”}”(hj(�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj$�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M›hj �ubjÃ)�”}”(hhh]”hì)�”}”(hŒ**Definition**:: struct drm_panthor_vm_bind { __u32 vm_id; __u32 flags; struct drm_panthor_obj_array ops; }; **Members** ``vm_id`` VM targeted by the bind request. ``flags`` Combination of drm_panthor_vm_bind_flags flags. ``ops`` Array of struct drm_panthor_vm_bind_op bind operations.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjœ�ubhŒ:”…”�”}”(hjœ�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÆhj˜�ubj)�”}”(hŒgstruct drm_panthor_vm_bind { __u32 vm_id; __u32 flags; struct drm_panthor_obj_array ops; };”h]”hŒgstruct drm_panthor_vm_bind { __u32 vm_id; __u32 flags; struct drm_panthor_obj_array ops; };”…”�”}”hj¹�sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÈhj˜�ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjÊ�h]”hŒMembers”…”�”}”(hjÌ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÈ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÎhj˜�ubj§)�”}”(hhh]”(j¬)�”}”(hŒ+``vm_id`` VM targeted by the bind request. ”h]”(j²)�”}”(hŒ ``vm_id``”h]”jC)�”}”(hjé�h]”hŒvm_id”…”�”}”(hjë�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjç�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÆhjã�ubjÃ)�”}”(hhh]”hì)�”}”(hŒ VM targeted by the bind request.”h]”hŒ VM targeted by the bind request.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ:``flags`` Combination of drm_panthor_vm_bind_flags flags. ”h]”(j²)�”}”(hŒ ``flags``”h]”jC)�”}”(hj"�h]”hŒflags”…”�”}”(hj$�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj �ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÉhj�ubjÃ)�”}”(hhh]”hì)�”}”(hŒ/Combination of drm_panthor_vm_bind_flags flags.”h]”hŒ/Combination of drm_panthor_vm_bind_flags flags.”…”�”}”(hj;�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j7�h´MÉhj8�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j7�h´MÉhjà�ubj¬)�”}”(hŒ?``ops`` Array of struct drm_panthor_vm_bind_op bind operations.”h]”(j²)�”}”(hŒ``ops``”h]”jC)�”}”(hj[�h]”hŒops”…”�”}”(hj]�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjY�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MËhjU�ubjÃ)�”}”(hhh]”hì)�”}”(hŒ7Array of struct drm_panthor_vm_bind_op bind operations.”h]”hŒ7Array of struct drm_panthor_vm_bind_op bind operations.”…”�”}”(hjt�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÌhjq�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjU�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jp�h´MËhjà�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj˜�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj¹gh²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_panthor_vm_state (C enum)”Œc.drm_panthor_vm_state”hNt”auh1jJhj¹gh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_panthor_vm_state”h]”jg)�”}”(hŒenum drm_panthor_vm_state”h]”(jm)�”}”(hjîh]”hŒenum”…”�”}”(hjµ�h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj±�h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”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Œdrm_panthor_vm_state”h]”j–)�”}”(hj¯�h]”hŒdrm_panthor_vm_state”…”�”}”(hjÕ�h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjÑ�ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj±�h²hh³jÂ�h´MÒubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”hì)�”}”(hŒ VM states.”h]”hŒ VM states.”…”�”}”(hj÷�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÐhjô�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjª�h²hh³jÂ�h´MÒubeh}”(h]”h ]”(jàŒenum”eh"]”h$]”h&]”jåjàjæj‘jçj‘jè‰jé‰jê‰uh1j[h²hhj¹gh³Nh´Nubjì)�”}”(hX**Constants** ``DRM_PANTHOR_VM_STATE_USABLE`` VM is usable. New VM operations will be accepted on this VM. ``DRM_PANTHOR_VM_STATE_UNUSABLE`` VM is unusable. Something put the VM in an unusable state (like an asynchronous VM_BIND request failing for any reason). Once the VM is in this state, all new MAP operations will be rejected, and any GPU job targeting this VM will fail. UNMAP operations are still accepted. The only way to recover from an unusable VM is to create a new VM, and destroy the old one.”h]”(hì)�”}”(hŒ **Constants**”h]”jŒ)�”}”(hj‘h]”hŒ Constants”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÔhj‘ubj§)�”}”(hhh]”(j¬)�”}”(hŒ^``DRM_PANTHOR_VM_STATE_USABLE`` VM is usable. New VM operations will be accepted on this VM. ”h]”(j²)�”}”(hŒ``DRM_PANTHOR_VM_STATE_USABLE``”h]”jC)�”}”(hj8‘h]”hŒDRM_PANTHOR_VM_STATE_USABLE”…”�”}”(hj:‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj6‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÙhj2‘ubjÃ)�”}”(hhh]”(hì)�”}”(hŒ VM is usable.”h]”hŒ VM is usable.”…”�”}”(hjQ‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M×hjN‘ubhì)�”}”(hŒ.New VM operations will be accepted on this VM.”h]”hŒ.New VM operations will be accepted on this VM.”…”�”}”(hj`‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jM‘h´MÙhjN‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj2‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jM‘h´MÙhj/‘ubj¬)�”}”(hX’``DRM_PANTHOR_VM_STATE_UNUSABLE`` VM is unusable. Something put the VM in an unusable state (like an asynchronous VM_BIND request failing for any reason). Once the VM is in this state, all new MAP operations will be rejected, and any GPU job targeting this VM will fail. UNMAP operations are still accepted. The only way to recover from an unusable VM is to create a new VM, and destroy the old one.”h]”(j²)�”}”(hŒ!``DRM_PANTHOR_VM_STATE_UNUSABLE``”h]”jC)�”}”(hj€‘h]”hŒDRM_PANTHOR_VM_STATE_UNUSABLE”…”�”}”(hj‚‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj~‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Måhjz‘ubjÃ)�”}”(hhh]”(hì)�”}”(hŒVM is unusable.”h]”hŒVM is unusable.”…”�”}”(hj™‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÜhj–‘ubhì)�”}”(hŒhSomething put the VM in an unusable state (like an asynchronous VM_BIND request failing for any reason).”h]”hŒhSomething put the VM in an unusable state (like an asynchronous VM_BIND request failing for any reason).”…”�”}”(hj¨‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÞhj–‘ubhì)�”}”(hŒ˜Once the VM is in this state, all new MAP operations will be rejected, and any GPU job targeting this VM will fail. UNMAP operations are still accepted.”h]”hŒ˜Once the VM is in this state, all new MAP operations will be rejected, and any GPU job targeting this VM will fail. UNMAP operations are still accepted.”…”�”}”(hj·‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Máhj–‘ubhì)�”}”(hŒ[The only way to recover from an unusable VM is to create a new VM, and destroy the old one.”h]”hŒ[The only way to recover from an unusable VM is to create a new VM, and destroy the old one.”…”�”}”(hjÆ‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j•‘h´Måhj–‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjz‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j•‘h´Måhj/‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj‘ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj¹gh²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ#drm_panthor_vm_get_state (C struct)”Œc.drm_panthor_vm_get_state”hNt”auh1jJhj¹gh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_panthor_vm_get_state”h]”jg)�”}”(hŒstruct drm_panthor_vm_get_state”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj’h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”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Œdrm_panthor_vm_get_state”h]”j–)�”}”(hj’h]”hŒdrm_panthor_vm_get_state”…”�”}”(hj&’h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj"’ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj’h²hh³j’h´Mëubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”hì)�”}”(hŒ Get VM state.”h]”hŒ Get VM state.”…”�”}”(hjH’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MëhjE’h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjû‘h²hh³j’h´Mëubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj`’jçj`’jè‰jé‰jê‰uh1j[h²hhj¹gh³Nh´Nubjì)�”}”(hX**Definition**:: struct drm_panthor_vm_get_state { __u32 vm_id; __u32 state; }; **Members** ``vm_id`` VM targeted by the get_state request. ``state`` state returned by the driver. Must be one of the enum drm_panthor_vm_state values.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjl’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjh’ubhŒ:”…”�”}”(hjh’h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mïhjd’ubj)�”}”(hŒFstruct drm_panthor_vm_get_state { __u32 vm_id; __u32 state; };”h]”hŒFstruct drm_panthor_vm_get_state { __u32 vm_id; __u32 state; };”…”�”}”hj…’sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mñhjd’ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj–’h]”hŒMembers”…”�”}”(hj˜’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj”’ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Möhjd’ubj§)�”}”(hhh]”(j¬)�”}”(hŒ0``vm_id`` VM targeted by the get_state request. ”h]”(j²)�”}”(hŒ ``vm_id``”h]”jC)�”}”(hjµ’h]”hŒvm_id”…”�”}”(hj·’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj³’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mïhj¯’ubjÃ)�”}”(hhh]”hì)�”}”(hŒ%VM targeted by the get_state request.”h]”hŒ%VM targeted by the get_state request.”…”�”}”(hjÎ’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ]``state`` state returned by the driver. Must be one of the enum drm_panthor_vm_state values.”h]”(j²)�”}”(hŒ ``state``”h]”jC)�”}”(hjî’h]”hŒstate”…”�”}”(hjð’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjì’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Môhjè’ubjÃ)�”}”(hhh]”(hì)�”}”(hŒstate returned by the driver.”h]”hŒstate returned by the driver.”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Móhj“ubhì)�”}”(hŒ4Must be one of the enum drm_panthor_vm_state values.”h]”hŒ4Must be one of the enum drm_panthor_vm_state values.”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mõhj“ubeh}”(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¦hjd’ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj¹gh²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_panthor_bo_flags (C enum)”Œc.drm_panthor_bo_flags”hNt”auh1jJhj¹gh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_panthor_bo_flags”h]”jg)�”}”(hŒenum drm_panthor_bo_flags”h]”(jm)�”}”(hjîh]”hŒenum”…”�”}”(hjW“h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjS“h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mûubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hje“h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjS“h²hh³jd“h´Mûubj�)�”}”(hŒdrm_panthor_bo_flags”h]”j–)�”}”(hjQ“h]”hŒdrm_panthor_bo_flags”…”�”}”(hjw“h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjs“ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjS“h²hh³jd“h´Mûubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjO“h²hh³jd“h´Mûubah}”(h]”jJ“ah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jd“h´MûhjL“h²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ-Buffer object flags, passed at creation time.”h]”hŒ-Buffer object flags, passed at creation time.”…”�”}”(hj™“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Múhj–“h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjL“h²hh³jd“h´Mûubeh}”(h]”h ]”(jàŒenum”eh"]”h$]”h&]”jåjàjæj±“jçj±“jè‰jé‰jê‰uh1j[h²hhj¹gh³Nh´Nubjì)�”}”(hXp**Constants** ``DRM_PANTHOR_BO_NO_MMAP`` The buffer object will never be CPU-mapped in userspace. ``DRM_PANTHOR_BO_WB_MMAP`` Force "Write-Back Cacheable" CPU mapping. CPU map the buffer object in userspace by forcing the "Write-Back Cacheable" cacheability attribute. The mapping otherwise uses the "Non-Cacheable" attribute if the GPU is not IO coherent.”h]”(hì)�”}”(hŒ **Constants**”h]”jŒ)�”}”(hj»“h]”hŒ Constants”…”�”}”(hj½“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj¹“ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mþhjµ“ubj§)�”}”(hhh]”(j¬)�”}”(hŒT``DRM_PANTHOR_BO_NO_MMAP`` The buffer object will never be CPU-mapped in userspace. ”h]”(j²)�”}”(hŒ``DRM_PANTHOR_BO_NO_MMAP``”h]”jC)�”}”(hjÚ“h]”hŒDRM_PANTHOR_BO_NO_MMAP”…”�”}”(hjÜ“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjØ“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MhjÔ“ubjÃ)�”}”(hhh]”hì)�”}”(hŒ8The buffer object will never be CPU-mapped in userspace.”h]”hŒ8The buffer object will never be CPU-mapped in userspace.”…”�”}”(hjó“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jï“h´Mhjð“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÔ“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jï“h´MhjÑ“ubj¬)�”}”(hX``DRM_PANTHOR_BO_WB_MMAP`` Force "Write-Back Cacheable" CPU mapping. CPU map the buffer object in userspace by forcing the "Write-Back Cacheable" cacheability attribute. The mapping otherwise uses the "Non-Cacheable" attribute if the GPU is not IO coherent.”h]”(j²)�”}”(hŒ``DRM_PANTHOR_BO_WB_MMAP``”h]”jC)�”}”(hj”h]”hŒDRM_PANTHOR_BO_WB_MMAP”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mhj ”ubjÃ)�”}”(hhh]”(hì)�”}”(hŒ)Force "Write-Back Cacheable" CPU mapping.”h]”hŒ-Force “Write-Back Cacheableâ€� CPU mapping.”…”�”}”(hj,”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mhj)”ubhì)�”}”(hŒ¼CPU map the buffer object in userspace by forcing the "Write-Back Cacheable" cacheability attribute. The mapping otherwise uses the "Non-Cacheable" attribute if the GPU is not IO coherent.”h]”hŒÄCPU map the buffer object in userspace by forcing the “Write-Back Cacheableâ€� cacheability attribute. The mapping otherwise uses the “Non-Cacheableâ€� attribute if the GPU is not IO coherent.”…”�”}”(hj;”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mhj)”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj ”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j(”h´MhjÑ“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjµ“ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj¹gh²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ drm_panthor_bo_create (C struct)”Œc.drm_panthor_bo_create”hNt”auh1jJhj¹gh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_panthor_bo_create”h]”jg)�”}”(hŒstruct drm_panthor_bo_create”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj|”h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjx”h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠ”h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjx”h²hh³j‰”h´M ubj�)�”}”(hŒdrm_panthor_bo_create”h]”j–)�”}”(hjv”h]”hŒdrm_panthor_bo_create”…”�”}”(hjœ”h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj˜”ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjx”h²hh³j‰”h´M ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjt”h²hh³j‰”h´M ubah}”(h]”jo”ah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³j‰”h´M hjq”h²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ0Arguments passed to DRM_IOCTL_PANTHOR_BO_CREATE.”h]”hŒ0Arguments passed to DRM_IOCTL_PANTHOR_BO_CREATE.”…”�”}”(hj¾”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M hj»”h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjq”h²hh³j‰”h´M ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjÖ”jçjÖ”jè‰jé‰jê‰uh1j[h²hhj¹gh³Nh´Nubjì)�”}”(hX´**Definition**:: struct drm_panthor_bo_create { __u64 size; __u32 flags; __u32 exclusive_vm_id; __u32 handle; __u32 pad; }; **Members** ``size`` Requested size for the object The (page-aligned) allocated size for the object will be returned. ``flags`` Flags. Must be a combination of drm_panthor_bo_flags flags. ``exclusive_vm_id`` Exclusive VM this buffer object will be mapped to. If not zero, the field must refer to a valid VM ID, and implies that: - the buffer object will only ever be bound to that VM - cannot be exported as a PRIME fd ``handle`` Returned handle for the object. Object handles are nonzero. ``pad`` MBZ.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjâ”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÞ”ubhŒ:”…”�”}”(hjÞ”h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MhjÚ”ubj)�”}”(hŒ~struct drm_panthor_bo_create { __u64 size; __u32 flags; __u32 exclusive_vm_id; __u32 handle; __u32 pad; };”h]”hŒ~struct drm_panthor_bo_create { __u64 size; __u32 flags; __u32 exclusive_vm_id; __u32 handle; __u32 pad; };”…”�”}”hjû”sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MhjÚ”ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj •h]”hŒMembers”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj •ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MhjÚ”ubj§)�”}”(hhh]”(j¬)�”}”(hŒk``size`` Requested size for the object The (page-aligned) allocated size for the object will be returned. ”h]”(j²)�”}”(hŒ``size``”h]”jC)�”}”(hj+•h]”hŒsize”…”�”}”(hj-•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj)•ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mhj%•ubjÃ)�”}”(hhh]”(hì)�”}”(hŒRequested size for the object”h]”hŒRequested size for the object”…”�”}”(hjD•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MhjA•ubhì)�”}”(hŒBThe (page-aligned) allocated size for the object will be returned.”h]”hŒBThe (page-aligned) allocated size for the object will be returned.”…”�”}”(hjS•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j@•h´MhjA•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj%•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j@•h´Mhj"•ubj¬)�”}”(hŒF``flags`` Flags. Must be a combination of drm_panthor_bo_flags flags. ”h]”(j²)�”}”(hŒ ``flags``”h]”jC)�”}”(hjs•h]”hŒflags”…”�”}”(hju•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjq•ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mhjm•ubjÃ)�”}”(hhh]”hì)�”}”(hŒ;Flags. Must be a combination of drm_panthor_bo_flags flags.”h]”hŒ;Flags. Must be a combination of drm_panthor_bo_flags flags.”…”�”}”(hjŒ•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jˆ•h´Mhj‰•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjm•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jˆ•h´Mhj"•ubj¬)�”}”(hŒê``exclusive_vm_id`` Exclusive VM this buffer object will be mapped to. If not zero, the field must refer to a valid VM ID, and implies that: - the buffer object will only ever be bound to that VM - cannot be exported as a PRIME fd ”h]”(j²)�”}”(hŒ``exclusive_vm_id``”h]”jC)�”}”(hj¬•h]”hŒexclusive_vm_id”…”�”}”(hj®•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjª•ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M hj¦•ubjÃ)�”}”(hhh]”(hì)�”}”(hŒ2Exclusive VM this buffer object will be mapped to.”h]”hŒ2Exclusive VM this buffer object will be mapped to.”…”�”}”(hjÅ•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mhj•ubj§)�”}”(hhh]”j¬)�”}”(hŒ If not zero, the field must refer to a valid VM ID, and implies that: - the buffer object will only ever be bound to that VM - cannot be exported as a PRIME fd ”h]”(j²)�”}”(hŒEIf not zero, the field must refer to a valid VM ID, and implies that:”h]”hŒEIf not zero, the field must refer to a valid VM ID, and implies that:”…”�”}”(hjÛ•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³jÁ•h´M hjוubjÃ)�”}”(hhh]”hâ)�”}”(hhh]”(hç)�”}”(hŒ4the buffer object will only ever be bound to that VM”h]”hì)�”}”(hjñ•h]”hŒ4the buffer object will only ever be bound to that VM”…”�”}”(hjó•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”•;h´Mhjï•ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjì•ubhç)�”}”(hŒ!cannot be exported as a PRIME fd ”h]”hì)�”}”(hŒ cannot be exported as a PRIME fd”h]”hŒ cannot be exported as a PRIME fd”…”�”}”(hj –h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÁ•h´M hj–ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjì•ubeh}”(h]”h ]”h"]”h$]”h&]”jÀ jÁ uh1háh³j–h´Mhjé•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjוubeh}”(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Âhj¦•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÁ•h´M hj"•ubj¬)�”}”(hŒH``handle`` Returned handle for the object. Object handles are nonzero. ”h]”(j²)�”}”(hŒ ``handle``”h]”jC)�”}”(hjI–h]”hŒhandle”…”�”}”(hjK–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjG–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M'hjC–ubjÃ)�”}”(hhh]”(hì)�”}”(hŒReturned handle for the object.”h]”hŒReturned handle for the object.”…”�”}”(hjb–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M%hj_–ubhì)�”}”(hŒObject handles are nonzero.”h]”hŒObject handles are nonzero.”…”�”}”(hjq–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j^–h´M'hj_–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjC–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j^–h´M'hj"•ubj¬)�”}”(hŒ ``pad`` MBZ.”h]”(j²)�”}”(hŒ``pad``”h]”jC)�”}”(hj‘–h]”hŒpad”…”�”}”(hj“–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj�–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M*hj‹–ubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ.”h]”hŒMBZ.”…”�”}”(hjª–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”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¦hjÚ”ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj¹gh²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ%drm_panthor_bo_mmap_offset (C struct)”Œc.drm_panthor_bo_mmap_offset”hNt”auh1jJhj¹gh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_panthor_bo_mmap_offset”h]”jg)�”}”(hŒ!struct drm_panthor_bo_mmap_offset”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjë–h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjç–h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M1ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjù–h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjç–h²hh³jø–h´M1ubj�)�”}”(hŒdrm_panthor_bo_mmap_offset”h]”j–)�”}”(hjå–h]”hŒdrm_panthor_bo_mmap_offset”…”�”}”(hj —h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj—ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjç–h²hh³jø–h´M1ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjã–h²hh³jø–h´M1ubah}”(h]”jÞ–ah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jø–h´M1hjà–h²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ5Arguments passed to DRM_IOCTL_PANTHOR_BO_MMAP_OFFSET.”h]”hŒ5Arguments passed to DRM_IOCTL_PANTHOR_BO_MMAP_OFFSET.”…”�”}”(hj-—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M/hj*—h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjà–h²hh³jø–h´M1ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjE—jçjE—jè‰jé‰jê‰uh1j[h²hhj¹gh³Nh´Nubjì)�”}”(hX**Definition**:: struct drm_panthor_bo_mmap_offset { __u32 handle; __u32 pad; __u64 offset; }; **Members** ``handle`` Handle of the object we want an mmap offset for. ``pad`` MBZ. ``offset`` The fake offset to use for subsequent mmap calls.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjQ—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjM—ubhŒ:”…”�”}”(hjM—h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M3hjI—ubj)�”}”(hŒYstruct drm_panthor_bo_mmap_offset { __u32 handle; __u32 pad; __u64 offset; };”h]”hŒYstruct drm_panthor_bo_mmap_offset { __u32 handle; __u32 pad; __u64 offset; };”…”�”}”hjj—sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M5hjI—ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj{—h]”hŒMembers”…”�”}”(hj}—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjy—ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M;hjI—ubj§)�”}”(hhh]”(j¬)�”}”(hŒ<``handle`` Handle of the object we want an mmap offset for. ”h]”(j²)�”}”(hŒ ``handle``”h]”jC)�”}”(hjš—h]”hŒhandle”…”�”}”(hjœ—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj˜—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M3hj”—ubjÃ)�”}”(hhh]”hì)�”}”(hŒ0Handle of the object we want an mmap offset for.”h]”hŒ0Handle of the object we want an mmap offset for.”…”�”}”(hj³—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¯—h´M3hj°—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj”—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j¯—h´M3hj‘—ubj¬)�”}”(hŒ ``pad`` MBZ. ”h]”(j²)�”}”(hŒ``pad``”h]”jC)�”}”(hjÓ—h]”hŒpad”…”�”}”(hjÕ—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÑ—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M6hjÍ—ubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ.”h]”hŒMBZ.”…”�”}”(hjì—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jè—h´M6hjé—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÍ—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jè—h´M6hj‘—ubj¬)�”}”(hŒ<``offset`` The fake offset to use for subsequent mmap calls.”h]”(j²)�”}”(hŒ ``offset``”h]”jC)�”}”(hj ˜h]”hŒoffset”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj ˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M8hj˜ubjÃ)�”}”(hhh]”hì)�”}”(hŒ1The fake offset to use for subsequent mmap calls.”h]”hŒ1The fake offset to use for subsequent mmap calls.”…”�”}”(hj%˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M9hj"˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j!˜h´M8hj‘—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjI—ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj¹gh²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ#drm_panthor_queue_create (C struct)”Œc.drm_panthor_queue_create”hNt”auh1jJhj¹gh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_panthor_queue_create”h]”jg)�”}”(hŒstruct drm_panthor_queue_create”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjf˜h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjb˜h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M?ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjt˜h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjb˜h²hh³js˜h´M?ubj�)�”}”(hŒdrm_panthor_queue_create”h]”j–)�”}”(hj`˜h]”hŒdrm_panthor_queue_create”…”�”}”(hj†˜h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj‚˜ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjb˜h²hh³js˜h´M?ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hj^˜h²hh³js˜h´M?ubah}”(h]”jY˜ah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³js˜h´M?hj[˜h²hubjÄ)�”}”(hhh]”hì)�”}”(hŒQueue creation arguments.”h]”hŒQueue creation arguments.”…”�”}”(hj¨˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M=hj¥˜h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj[˜h²hh³js˜h´M?ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjÀ˜jçjÀ˜jè‰jé‰jê‰uh1j[h²hhj¹gh³Nh´Nubjì)�”}”(hXc**Definition**:: struct drm_panthor_queue_create { __u8 priority; __u8 pad[3]; __u32 ringbuf_size; }; **Members** ``priority`` Defines the priority of queues inside a group. Goes from 0 to 15, 15 being the highest priority. ``pad`` Padding fields, MBZ. ``ringbuf_size`` Size of the ring buffer to allocate to this queue.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj̘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjȘubhŒ:”…”�”}”(hjȘh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MAhjĘubj)�”}”(hŒ`struct drm_panthor_queue_create { __u8 priority; __u8 pad[3]; __u32 ringbuf_size; };”h]”hŒ`struct drm_panthor_queue_create { __u8 priority; __u8 pad[3]; __u32 ringbuf_size; };”…”�”}”hjå˜sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MChjĘubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjö˜h]”hŒMembers”…”�”}”(hjø˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjô˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MIhjĘubj§)�”}”(hhh]”(j¬)�”}”(hŒn``priority`` Defines the priority of queues inside a group. Goes from 0 to 15, 15 being the highest priority. ”h]”(j²)�”}”(hŒ ``priority``”h]”jC)�”}”(hj™h]”hŒpriority”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MChj™ubjÃ)�”}”(hhh]”hì)�”}”(hŒ`Defines the priority of queues inside a group. Goes from 0 to 15, 15 being the highest priority.”h]”hŒ`Defines the priority of queues inside a group. Goes from 0 to 15, 15 being the highest priority.”…”�”}”(hj.™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MBhj+™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j*™h´MChj ™ubj¬)�”}”(hŒ``pad`` Padding fields, MBZ. ”h]”(j²)�”}”(hŒ``pad``”h]”jC)�”}”(hjO™h]”hŒpad”…”�”}”(hjQ™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjM™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MGhjI™ubjÃ)�”}”(hhh]”hì)�”}”(hŒPadding fields, MBZ.”h]”hŒPadding fields, MBZ.”…”�”}”(hjh™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jd™h´MGhje™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjI™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jd™h´MGhj ™ubj¬)�”}”(hŒC``ringbuf_size`` Size of the ring buffer to allocate to this queue.”h]”(j²)�”}”(hŒ``ringbuf_size``”h]”jC)�”}”(hjˆ™h]”hŒ ringbuf_size”…”�”}”(hjŠ™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj†™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MIhj‚™ubjÃ)�”}”(hhh]”hì)�”}”(hŒ2Size of the ring buffer to allocate to this queue.”h]”hŒ2Size of the ring buffer to allocate to this queue.”…”�”}”(hj¡™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MJhjž™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj‚™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j�™h´MIhj ™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjĘubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj¹gh²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ#drm_panthor_group_priority (C enum)”Œc.drm_panthor_group_priority”hNt”auh1jJhj¹gh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_panthor_group_priority”h]”jg)�”}”(hŒenum drm_panthor_group_priority”h]”(jm)�”}”(hjîh]”hŒenum”…”�”}”(hjâ™h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjÞ™h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MPubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjð™h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjÞ™h²hh³jï™h´MPubj�)�”}”(hŒdrm_panthor_group_priority”h]”j–)�”}”(hjÜ™h]”hŒdrm_panthor_group_priority”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjþ™ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjÞ™h²hh³jï™h´MPubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjÚ™h²hh³jï™h´MPubah}”(h]”jÕ™ah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jï™h´MPhj×™h²hubjÄ)�”}”(hhh]”hì)�”}”(hŒScheduling group priority”h]”hŒScheduling group priority”…”�”}”(hj$šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MNhj!šh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj×™h²hh³jï™h´MPubeh}”(h]”h ]”(jàŒenum”eh"]”h$]”h&]”jåjàjæj<šjçj<šjè‰jé‰jê‰uh1j[h²hhj¹gh³Nh´Nubjì)�”}”(hXG**Constants** ``PANTHOR_GROUP_PRIORITY_LOW`` Low priority group. ``PANTHOR_GROUP_PRIORITY_MEDIUM`` Medium priority group. ``PANTHOR_GROUP_PRIORITY_HIGH`` High priority group. Requires CAP_SYS_NICE or DRM_MASTER. ``PANTHOR_GROUP_PRIORITY_REALTIME`` Realtime priority group. Requires CAP_SYS_NICE or DRM_MASTER.”h]”(hì)�”}”(hŒ **Constants**”h]”jŒ)�”}”(hjFšh]”hŒ Constants”…”�”}”(hjHšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjDšubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MRhj@šubj§)�”}”(hhh]”(j¬)�”}”(hŒ3``PANTHOR_GROUP_PRIORITY_LOW`` Low priority group. ”h]”(j²)�”}”(hŒ``PANTHOR_GROUP_PRIORITY_LOW``”h]”jC)�”}”(hješh]”hŒPANTHOR_GROUP_PRIORITY_LOW”…”�”}”(hjgšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjcšubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MUhj_šubjÃ)�”}”(hhh]”hì)�”}”(hŒLow priority group.”h]”hŒLow priority group.”…”�”}”(hj~šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jzšh´MUhj{šubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj_šubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jzšh´MUhj\šubj¬)�”}”(hŒ9``PANTHOR_GROUP_PRIORITY_MEDIUM`` Medium priority group. ”h]”(j²)�”}”(hŒ!``PANTHOR_GROUP_PRIORITY_MEDIUM``”h]”jC)�”}”(hjžšh]”hŒPANTHOR_GROUP_PRIORITY_MEDIUM”…”�”}”(hj šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjœšubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MXhj˜šubjÃ)�”}”(hhh]”hì)�”}”(hŒMedium priority group.”h]”hŒMedium priority group.”…”�”}”(hj·šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j³šh´MXhj´šubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj˜šubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j³šh´MXhj\šubj¬)�”}”(hŒ[``PANTHOR_GROUP_PRIORITY_HIGH`` High priority group. Requires CAP_SYS_NICE or DRM_MASTER. ”h]”(j²)�”}”(hŒ``PANTHOR_GROUP_PRIORITY_HIGH``”h]”jC)�”}”(hjךh]”hŒPANTHOR_GROUP_PRIORITY_HIGH”…”�”}”(hjÙšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÕšubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M]hjÑšubjÃ)�”}”(hhh]”(hì)�”}”(hŒHigh priority group.”h]”hŒHigh priority group.”…”�”}”(hjðšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M[hjíšubhì)�”}”(hŒ$Requires CAP_SYS_NICE or DRM_MASTER.”h]”hŒ$Requires CAP_SYS_NICE or DRM_MASTER.”…”�”}”(hjÿšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jìšh´M]hjíšubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÑšubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jìšh´M]hj\šubj¬)�”}”(hŒb``PANTHOR_GROUP_PRIORITY_REALTIME`` Realtime priority group. Requires CAP_SYS_NICE or DRM_MASTER.”h]”(j²)�”}”(hŒ#``PANTHOR_GROUP_PRIORITY_REALTIME``”h]”jC)�”}”(hj›h]”hŒPANTHOR_GROUP_PRIORITY_REALTIME”…”�”}”(hj!›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mahj›ubjÃ)�”}”(hhh]”(hì)�”}”(hŒRealtime priority group.”h]”hŒRealtime priority group.”…”�”}”(hj8›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M`hj5›ubhì)�”}”(hŒ$Requires CAP_SYS_NICE or DRM_MASTER.”h]”hŒ$Requires CAP_SYS_NICE or DRM_MASTER.”…”�”}”(hjG›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mbhj5›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j4›h´Mahj\šubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj@šubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj¹gh²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ#drm_panthor_group_create (C struct)”Œc.drm_panthor_group_create”hNt”auh1jJhj¹gh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_panthor_group_create”h]”jg)�”}”(hŒstruct drm_panthor_group_create”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjˆ›h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj„›h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mgubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–›h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hj„›h²hh³j•›h´Mgubj�)�”}”(hŒdrm_panthor_group_create”h]”j–)�”}”(hj‚›h]”hŒdrm_panthor_group_create”…”�”}”(hj¨›h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj¤›ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj„›h²hh³j•›h´Mgubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hj€›h²hh³j•›h´Mgubah}”(h]”j{›ah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³j•›h´Mghj}›h²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ2Arguments passed to DRM_IOCTL_PANTHOR_GROUP_CREATE”h]”hŒ2Arguments passed to DRM_IOCTL_PANTHOR_GROUP_CREATE”…”�”}”(hjÊ›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MghjÇ›h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj}›h²hh³j•›h´Mgubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjâ›jçjâ›jè‰jé‰jê‰uh1j[h²hhj¹gh³Nh´Nubjì)�”}”(hXß**Definition**:: struct drm_panthor_group_create { struct drm_panthor_obj_array queues; __u8 max_compute_cores; __u8 max_fragment_cores; __u8 max_tiler_cores; __u8 priority; __u32 pad; __u64 compute_core_mask; __u64 fragment_core_mask; __u64 tiler_core_mask; __u32 vm_id; __u32 group_handle; }; **Members** ``queues`` Array of drm_panthor_queue_create elements. ``max_compute_cores`` Maximum number of cores that can be used by compute jobs across CS queues bound to this group. Must be less or equal to the number of bits set in **compute_core_mask**. ``max_fragment_cores`` Maximum number of cores that can be used by fragment jobs across CS queues bound to this group. Must be less or equal to the number of bits set in **fragment_core_mask**. ``max_tiler_cores`` Maximum number of tilers that can be used by tiler jobs across CS queues bound to this group. Must be less or equal to the number of bits set in **tiler_core_mask**. ``priority`` Group priority (see enum drm_panthor_group_priority). ``pad`` Padding field, MBZ. ``compute_core_mask`` Mask encoding cores that can be used for compute jobs. This field must have at least **max_compute_cores** bits set. The bits set here should also be set in drm_panthor_gpu_info::shader_present. ``fragment_core_mask`` Mask encoding cores that can be used for fragment jobs. This field must have at least **max_fragment_cores** bits set. The bits set here should also be set in drm_panthor_gpu_info::shader_present. ``tiler_core_mask`` Mask encoding cores that can be used for tiler jobs. This field must have at least **max_tiler_cores** bits set. The bits set here should also be set in drm_panthor_gpu_info::tiler_present. ``vm_id`` VM ID to bind this group to. All submission to queues bound to this group will use this VM. ``group_handle`` Returned group handle. Passed back when submitting jobs or destroying a group.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjî›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjê›ubhŒ:”…”�”}”(hjê›h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mkhjæ›ubj)�”}”(hXAstruct drm_panthor_group_create { struct drm_panthor_obj_array queues; __u8 max_compute_cores; __u8 max_fragment_cores; __u8 max_tiler_cores; __u8 priority; __u32 pad; __u64 compute_core_mask; __u64 fragment_core_mask; __u64 tiler_core_mask; __u32 vm_id; __u32 group_handle; };”h]”hXAstruct drm_panthor_group_create { struct drm_panthor_obj_array queues; __u8 max_compute_cores; __u8 max_fragment_cores; __u8 max_tiler_cores; __u8 priority; __u32 pad; __u64 compute_core_mask; __u64 fragment_core_mask; __u64 tiler_core_mask; __u32 vm_id; __u32 group_handle; };”…”�”}”hjœsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mmhjæ›ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjœh]”hŒMembers”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjœubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M{hjæ›ubj§)�”}”(hhh]”(j¬)�”}”(hŒ7``queues`` Array of drm_panthor_queue_create elements. ”h]”(j²)�”}”(hŒ ``queues``”h]”jC)�”}”(hj7œh]”hŒqueues”…”�”}”(hj9œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj5œubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mkhj1œubjÃ)�”}”(hhh]”hì)�”}”(hŒ+Array of drm_panthor_queue_create elements.”h]”hŒ+Array of drm_panthor_queue_create elements.”…”�”}”(hjPœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jLœh´MkhjMœubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj1œubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jLœh´Mkhj.œubj¬)�”}”(hŒÀ``max_compute_cores`` Maximum number of cores that can be used by compute jobs across CS queues bound to this group. Must be less or equal to the number of bits set in **compute_core_mask**. ”h]”(j²)�”}”(hŒ``max_compute_cores``”h]”jC)�”}”(hjpœh]”hŒmax_compute_cores”…”�”}”(hjrœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjnœubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MrhjjœubjÃ)�”}”(hhh]”(hì)�”}”(hŒ^Maximum number of cores that can be used by compute jobs across CS queues bound to this group.”h]”hŒ^Maximum number of cores that can be used by compute jobs across CS queues bound to this group.”…”�”}”(hj‰œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mohj†œubhì)�”}”(hŒIMust be less or equal to the number of bits set in **compute_core_mask**.”h]”(hŒ3Must be less or equal to the number of bits set in ”…”�”}”(hj˜œh²hh³Nh´NubjŒ)�”}”(hŒ**compute_core_mask**”h]”hŒcompute_core_mask”…”�”}”(hj œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj˜œubhŒ.”…”�”}”(hj˜œh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j…œh´Mrhj†œubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjjœubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j…œh´Mrhj.œubj¬)�”}”(hŒÃ``max_fragment_cores`` Maximum number of cores that can be used by fragment jobs across CS queues bound to this group. Must be less or equal to the number of bits set in **fragment_core_mask**. ”h]”(j²)�”}”(hŒ``max_fragment_cores``”h]”jC)�”}”(hjÊœh]”hŒmax_fragment_cores”…”�”}”(hjÌœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÈœubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MzhjÄœubjÃ)�”}”(hhh]”(hì)�”}”(hŒ_Maximum number of cores that can be used by fragment jobs across CS queues bound to this group.”h]”hŒ_Maximum number of cores that can be used by fragment jobs across CS queues bound to this group.”…”�”}”(hjãœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mwhjàœubhì)�”}”(hŒJMust be less or equal to the number of bits set in **fragment_core_mask**.”h]”(hŒ3Must be less or equal to the number of bits set in ”…”�”}”(hjòœh²hh³Nh´NubjŒ)�”}”(hŒ**fragment_core_mask**”h]”hŒfragment_core_mask”…”�”}”(hjúœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjòœubhŒ.”…”�”}”(hjòœh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jßœh´Mzhjàœubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÄœubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jßœh´Mzhj.œubj¬)�”}”(hŒ»``max_tiler_cores`` Maximum number of tilers that can be used by tiler jobs across CS queues bound to this group. Must be less or equal to the number of bits set in **tiler_core_mask**. ”h]”(j²)�”}”(hŒ``max_tiler_cores``”h]”jC)�”}”(hj$�h]”hŒmax_tiler_cores”…”�”}”(hj&�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj"�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M‚hj�ubjÃ)�”}”(hhh]”(hì)�”}”(hŒ]Maximum number of tilers that can be used by tiler jobs across CS queues bound to this group.”h]”hŒ]Maximum number of tilers that can be used by tiler jobs across CS queues bound to this group.”…”�”}”(hj=�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mhj:�ubhì)�”}”(hŒGMust be less or equal to the number of bits set in **tiler_core_mask**.”h]”(hŒ3Must be less or equal to the number of bits set in ”…”�”}”(hjL�h²hh³Nh´NubjŒ)�”}”(hŒ**tiler_core_mask**”h]”hŒtiler_core_mask”…”�”}”(hjT�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjL�ubhŒ.”…”�”}”(hjL�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j9�h´M‚hj:�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j9�h´M‚hj.œubj¬)�”}”(hŒC``priority`` Group priority (see enum drm_panthor_group_priority). ”h]”(j²)�”}”(hŒ ``priority``”h]”jC)�”}”(hj~�h]”hŒpriority”…”�”}”(hj€�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj|�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M†hjx�ubjÃ)�”}”(hhh]”hì)�”}”(hŒ5Group priority (see enum drm_panthor_group_priority).”h]”hŒ5Group priority (see enum drm_panthor_group_priority).”…”�”}”(hj—�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j“�h´M†hj”�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjx�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j“�h´M†hj.œubj¬)�”}”(hŒ``pad`` Padding field, MBZ. ”h]”(j²)�”}”(hŒ``pad``”h]”jC)�”}”(hj·�h]”hŒpad”…”�”}”(hj¹�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjµ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M‰hj±�ubjÃ)�”}”(hhh]”hì)�”}”(hŒPadding field, MBZ.”h]”hŒPadding field, MBZ.”…”�”}”(hjÐ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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ŒÛ``compute_core_mask`` Mask encoding cores that can be used for compute jobs. This field must have at least **max_compute_cores** bits set. The bits set here should also be set in drm_panthor_gpu_info::shader_present. ”h]”(j²)�”}”(hŒ``compute_core_mask``”h]”jC)�”}”(hjð�h]”hŒcompute_core_mask”…”�”}”(hjò�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjî�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M‘hjê�ubjÃ)�”}”(hhh]”(hì)�”}”(hŒ6Mask encoding cores that can be used for compute jobs.”h]”hŒ6Mask encoding cores that can be used for compute jobs.”…”�”}”(hj žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M�hjžubhì)�”}”(hŒ=This field must have at least **max_compute_cores** bits set.”h]”(hŒThis field must have at least ”…”�”}”(hjžh²hh³Nh´NubjŒ)�”}”(hŒ**max_compute_cores**”h]”hŒmax_compute_cores”…”�”}”(hj žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjžubhŒ bits set.”…”�”}”(hjžh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M�hjžubhì)�”}”(hŒMThe bits set here should also be set in drm_panthor_gpu_info::shader_present.”h]”hŒMThe bits set here should also be set in drm_panthor_gpu_info::shader_present.”…”�”}”(hj9žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jžh´M‘hjžubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjê�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jžh´M‘hj.œubj¬)�”}”(hŒÞ``fragment_core_mask`` Mask encoding cores that can be used for fragment jobs. This field must have at least **max_fragment_cores** bits set. The bits set here should also be set in drm_panthor_gpu_info::shader_present. ”h]”(j²)�”}”(hŒ``fragment_core_mask``”h]”jC)�”}”(hjYžh]”hŒfragment_core_mask”…”�”}”(hj[žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjWžubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MšhjSžubjÃ)�”}”(hhh]”(hì)�”}”(hŒ7Mask encoding cores that can be used for fragment jobs.”h]”hŒ7Mask encoding cores that can be used for fragment jobs.”…”�”}”(hjržh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M–hjožubhì)�”}”(hŒ>This field must have at least **max_fragment_cores** bits set.”h]”(hŒThis field must have at least ”…”�”}”(hj�žh²hh³Nh´NubjŒ)�”}”(hŒ**max_fragment_cores**”h]”hŒmax_fragment_cores”…”�”}”(hj‰žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj�žubhŒ bits set.”…”�”}”(hj�žh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M˜hjožubhì)�”}”(hŒMThe bits set here should also be set in drm_panthor_gpu_info::shader_present.”h]”hŒMThe bits set here should also be set in drm_panthor_gpu_info::shader_present.”…”�”}”(hj¢žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jnžh´Mšhjožubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjSžubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jnžh´Mšhj.œubj¬)�”}”(hŒÔ``tiler_core_mask`` Mask encoding cores that can be used for tiler jobs. This field must have at least **max_tiler_cores** bits set. The bits set here should also be set in drm_panthor_gpu_info::tiler_present. ”h]”(j²)�”}”(hŒ``tiler_core_mask``”h]”jC)�”}”(hjžh]”hŒtiler_core_mask”…”�”}”(hjÄžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÀžubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M£hj¼žubjÃ)�”}”(hhh]”(hì)�”}”(hŒ4Mask encoding cores that can be used for tiler jobs.”h]”hŒ4Mask encoding cores that can be used for tiler jobs.”…”�”}”(hjÛžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MŸhjØžubhì)�”}”(hŒ;This field must have at least **max_tiler_cores** bits set.”h]”(hŒThis field must have at least ”…”�”}”(hjêžh²hh³Nh´NubjŒ)�”}”(hŒ**max_tiler_cores**”h]”hŒmax_tiler_cores”…”�”}”(hjòžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjêžubhŒ bits set.”…”�”}”(hjêžh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M¡hjØžubhì)�”}”(hŒLThe bits set here should also be set in drm_panthor_gpu_info::tiler_present.”h]”hŒLThe bits set here should also be set in drm_panthor_gpu_info::tiler_present.”…”�”}”(hj Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jמh´M£hjØžubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj¼žubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jמh´M£hj.œubj¬)�”}”(hŒg``vm_id`` VM ID to bind this group to. All submission to queues bound to this group will use this VM. ”h]”(j²)�”}”(hŒ ``vm_id``”h]”jC)�”}”(hj+Ÿh]”hŒvm_id”…”�”}”(hj-Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj)Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mªhj%ŸubjÃ)�”}”(hhh]”(hì)�”}”(hŒVM ID to bind this group to.”h]”hŒVM ID to bind this group to.”…”�”}”(hjDŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M¨hjAŸubhì)�”}”(hŒ>All submission to queues bound to this group will use this VM.”h]”hŒ>All submission to queues bound to this group will use this VM.”…”�”}”(hjSŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j@Ÿh´MªhjAŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj%Ÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j@Ÿh´Mªhj.œubj¬)�”}”(hŒ_``group_handle`` Returned group handle. Passed back when submitting jobs or destroying a group.”h]”(j²)�”}”(hŒ``group_handle``”h]”jC)�”}”(hjsŸh]”hŒ group_handle”…”�”}”(hjuŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjqŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M¯hjmŸubjÃ)�”}”(hhh]”hì)�”}”(hŒNReturned group handle. Passed back when submitting jobs or destroying a group.”h]”hŒNReturned group handle. Passed back when submitting jobs or destroying a group.”…”�”}”(hjŒŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jˆŸh´M¯hj‰Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjmŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jˆŸh´M¯hj.œubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjæ›ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj¹gh²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ$drm_panthor_group_destroy (C struct)”Œc.drm_panthor_group_destroy”hNt”auh1jJhj¹gh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_panthor_group_destroy”h]”jg)�”}”(hŒ struct drm_panthor_group_destroy”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjÌŸh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjÈŸh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”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Œdrm_panthor_group_destroy”h]”j–)�”}”(hjÆŸh]”hŒdrm_panthor_group_destroy”…”�”}”(hjìŸh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjèŸubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjÈŸh²hh³jÙŸh´M¶ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”hì)�”}”(hŒ3Arguments passed to DRM_IOCTL_PANTHOR_GROUP_DESTROY”h]”hŒ3Arguments passed to DRM_IOCTL_PANTHOR_GROUP_DESTROY”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mµhj  h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÁŸh²hh³jÙŸh´M¶ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj& jçj& jè‰jé‰jê‰uh1j[h²hhj¹gh³Nh´Nubjì)�”}”(hŒ·**Definition**:: struct drm_panthor_group_destroy { __u32 group_handle; __u32 pad; }; **Members** ``group_handle`` Group to destroy ``pad`` Padding field, MBZ.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj2 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj. ubhŒ:”…”�”}”(hj. h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M¹hj* ubj)�”}”(hŒLstruct drm_panthor_group_destroy { __u32 group_handle; __u32 pad; };”h]”hŒLstruct drm_panthor_group_destroy { __u32 group_handle; __u32 pad; };”…”�”}”hjK sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M»hj* ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj\ h]”hŒMembers”…”�”}”(hj^ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjZ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÀhj* ubj§)�”}”(hhh]”(j¬)�”}”(hŒ"``group_handle`` Group to destroy ”h]”(j²)�”}”(hŒ``group_handle``”h]”jC)�”}”(hj{ h]”hŒ group_handle”…”�”}”(hj} h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjy ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M¹hju ubjÃ)�”}”(hhh]”hì)�”}”(hŒGroup to destroy”h]”hŒGroup to destroy”…”�”}”(hj” h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j� h´M¹hj‘ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhju ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j� h´M¹hjr ubj¬)�”}”(hŒ``pad`` Padding field, MBZ.”h]”(j²)�”}”(hŒ``pad``”h]”jC)�”}”(hj´ h]”hŒpad”…”�”}”(hj¶ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj² ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M»hj® ubjÃ)�”}”(hhh]”hì)�”}”(hŒPadding field, MBZ.”h]”hŒPadding field, MBZ.”…”�”}”(hjÍ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M¼hjÊ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj® ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÉ h´M»hjr ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj* ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj¹gh²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ#drm_panthor_queue_submit (C struct)”Œc.drm_panthor_queue_submit”hNt”auh1jJhj¹gh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_panthor_queue_submit”h]”jg)�”}”(hŒstruct drm_panthor_queue_submit”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj ¡h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”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Œdrm_panthor_queue_submit”h]”j–)�”}”(hj¡h]”hŒdrm_panthor_queue_submit”…”�”}”(hj.¡h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj*¡ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj ¡h²hh³j¡h´MÂubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”hì)�”}”(hŒJob submission arguments.”h]”hŒJob submission arguments.”…”�”}”(hjP¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÀhjM¡h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj¡h²hh³j¡h´MÂubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjh¡jçjh¡jè‰jé‰jê‰uh1j[h²hhj¹gh³Nh´Nubjì)�”}”(hX€**Definition**:: struct drm_panthor_queue_submit { __u32 queue_index; __u32 stream_size; __u64 stream_addr; __u32 latest_flush; __u32 pad; struct drm_panthor_obj_array syncs; }; **Members** ``queue_index`` Index of the queue inside a group. ``stream_size`` Size of the command stream to execute. Must be 64-bit/8-byte aligned (the size of a CS instruction) Can be zero if stream_addr is zero too. When the stream size is zero, the queue submit serves as a synchronization point. ``stream_addr`` GPU address of the command stream to execute. Must be aligned on 64-byte. Can be zero is stream_size is zero too. ``latest_flush`` FLUSH_ID read at the time the stream was built. This allows cache flush elimination for the automatic flush+invalidate(all) done at submission time, which is needed to ensure the GPU doesn't get garbage when reading the indirect command stream buffers. If you want the cache flush to happen unconditionally, pass a zero here. Ignored when stream_size is zero. ``pad`` MBZ. ``syncs`` Array of struct drm_panthor_sync_op sync operations.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjt¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjp¡ubhŒ:”…”�”}”(hjp¡h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÄhjl¡ubj)�”}”(hŒ¸struct drm_panthor_queue_submit { __u32 queue_index; __u32 stream_size; __u64 stream_addr; __u32 latest_flush; __u32 pad; struct drm_panthor_obj_array syncs; };”h]”hŒ¸struct drm_panthor_queue_submit { __u32 queue_index; __u32 stream_size; __u64 stream_addr; __u32 latest_flush; __u32 pad; struct drm_panthor_obj_array syncs; };”…”�”}”hj�¡sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÆhjl¡ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjž¡h]”hŒMembers”…”�”}”(hj ¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjœ¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÏhjl¡ubj§)�”}”(hhh]”(j¬)�”}”(hŒ3``queue_index`` Index of the queue inside a group. ”h]”(j²)�”}”(hŒ``queue_index``”h]”jC)�”}”(hj½¡h]”hŒ queue_index”…”�”}”(hj¿¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj»¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÈhj·¡ubjÃ)�”}”(hhh]”hì)�”}”(hŒ"Index of the queue inside a group.”h]”hŒ"Index of the queue inside a group.”…”�”}”(hjÖ¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œñ``stream_size`` Size of the command stream to execute. Must be 64-bit/8-byte aligned (the size of a CS instruction) Can be zero if stream_addr is zero too. When the stream size is zero, the queue submit serves as a synchronization point. ”h]”(j²)�”}”(hŒ``stream_size``”h]”jC)�”}”(hjö¡h]”hŒ stream_size”…”�”}”(hjø¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjô¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÓhjð¡ubjÃ)�”}”(hhh]”(hì)�”}”(hŒ&Size of the command stream to execute.”h]”hŒ&Size of the command stream to execute.”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÌhj ¢ubhì)�”}”(hŒ``syncs`` Array of struct drm_panthor_sync_op sync operations.”h]”(j²)�”}”(hŒ ``syncs``”h]”jC)�”}”(hjD£h]”hŒsyncs”…”�”}”(hjF£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjB£ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mïhj>£ubjÃ)�”}”(hhh]”hì)�”}”(hŒ4Array of struct drm_panthor_sync_op sync operations.”h]”hŒ4Array of struct drm_panthor_sync_op sync operations.”…”�”}”(hj]£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MðhjZ£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj>£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jY£h´Mïhj´¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjl¡ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj¹gh²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hj‡£h]”hŒ Description”…”�”}”(hj‰£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj…£ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Móhj¹gh²hubhì)�”}”(hŒÖThis is describing the userspace command stream to call from the kernel command stream ring-buffer. Queue submission is always part of a group submission, taking one or more jobs to submit to the underlying queues.”h]”hŒÖThis is describing the userspace command stream to call from the kernel command stream ring-buffer. Queue submission is always part of a group submission, taking one or more jobs to submit to the underlying queues.”…”�”}”(hj�£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÁhj¹gh²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ#drm_panthor_group_submit (C struct)”Œc.drm_panthor_group_submit”hNt”auh1jJhj¹gh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_panthor_group_submit”h]”jg)�”}”(hŒstruct drm_panthor_group_submit”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjÅ£h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjÁ£h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”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Œdrm_panthor_group_submit”h]”j–)�”}”(hj¿£h]”hŒdrm_panthor_group_submit”…”�”}”(hjå£h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjá£ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjÁ£h²hh³jÒ£h´MÈubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”hì)�”}”(hŒ2Arguments passed to DRM_IOCTL_PANTHOR_GROUP_SUBMIT”h]”hŒ2Arguments passed to DRM_IOCTL_PANTHOR_GROUP_SUBMIT”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Môhj¤h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjº£h²hh³jÒ£h´MÈubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj¤jçj¤jè‰jé‰jê‰uh1j[h²hhj¹gh³Nh´Nubjì)�”}”(hX.**Definition**:: struct drm_panthor_group_submit { __u32 group_handle; __u32 pad; struct drm_panthor_obj_array queue_submits; }; **Members** ``group_handle`` Handle of the group to queue jobs to. ``pad`` MBZ. ``queue_submits`` Array of drm_panthor_queue_submit objects.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj+¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj'¤ubhŒ:”…”�”}”(hj'¤h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Møhj#¤ubj)�”}”(hŒ{struct drm_panthor_group_submit { __u32 group_handle; __u32 pad; struct drm_panthor_obj_array queue_submits; };”h]”hŒ{struct drm_panthor_group_submit { __u32 group_handle; __u32 pad; struct drm_panthor_obj_array queue_submits; };”…”�”}”hjD¤sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Múhj#¤ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjU¤h]”hŒMembers”…”�”}”(hjW¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjS¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mhj#¤ubj§)�”}”(hhh]”(j¬)�”}”(hŒ7``group_handle`` Handle of the group to queue jobs to. ”h]”(j²)�”}”(hŒ``group_handle``”h]”jC)�”}”(hjt¤h]”hŒ group_handle”…”�”}”(hjv¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjr¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Møhjn¤ubjÃ)�”}”(hhh]”hì)�”}”(hŒ%Handle of the group to queue jobs to.”h]”hŒ%Handle of the group to queue jobs to.”…”�”}”(hj�¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j‰¤h´MøhjФubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjn¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j‰¤h´Møhjk¤ubj¬)�”}”(hŒ ``pad`` MBZ. ”h]”(j²)�”}”(hŒ``pad``”h]”jC)�”}”(hj­¤h]”hŒpad”…”�”}”(hj¯¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj«¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mûhj§¤ubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ.”h]”hŒMBZ.”…”�”}”(hjƤh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¤h´Mûhjäubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj§¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j¤h´Mûhjk¤ubj¬)�”}”(hŒ<``queue_submits`` Array of drm_panthor_queue_submit objects.”h]”(j²)�”}”(hŒ``queue_submits``”h]”jC)�”}”(hjæ¤h]”hŒ queue_submits”…”�”}”(hjè¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjä¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mýhjà¤ubjÃ)�”}”(hhh]”hì)�”}”(hŒ*Array of drm_panthor_queue_submit objects.”h]”hŒ*Array of drm_panthor_queue_submit objects.”…”�”}”(hjÿ¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mþhjü¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjà¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jû¤h´Mýhjk¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj#¤ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj¹gh²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ&drm_panthor_group_state_flags (C enum)”Œc.drm_panthor_group_state_flags”hNt”auh1jJhj¹gh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_panthor_group_state_flags”h]”jg)�”}”(hŒ"enum drm_panthor_group_state_flags”h]”(jm)�”}”(hjîh]”hŒenum”…”�”}”(hj@¥h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj<¥h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjN¥h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hj<¥h²hh³jM¥h´Mubj�)�”}”(hŒdrm_panthor_group_state_flags”h]”j–)�”}”(hj:¥h]”hŒdrm_panthor_group_state_flags”…”�”}”(hj`¥h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj\¥ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj<¥h²hh³jM¥h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hj8¥h²hh³jM¥h´Mubah}”(h]”j3¥ah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jM¥h´Mhj5¥h²hubjÄ)�”}”(hhh]”hì)�”}”(hŒGroup state flags”h]”hŒGroup state flags”…”�”}”(hj‚¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mhj¥h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj5¥h²hh³jM¥h´Mubeh}”(h]”h ]”(jàŒenum”eh"]”h$]”h&]”jåjàjæjš¥jçjš¥jè‰jé‰jê‰uh1j[h²hhj¹gh³Nh´Nubjì)�”}”(hX**Constants** ``DRM_PANTHOR_GROUP_STATE_TIMEDOUT`` Group had unfinished jobs. When a group ends up with this flag set, no jobs can be submitted to its queues. ``DRM_PANTHOR_GROUP_STATE_FATAL_FAULT`` Group had fatal faults. When a group ends up with this flag set, no jobs can be submitted to its queues. ``DRM_PANTHOR_GROUP_STATE_INNOCENT`` Group was killed during a reset caused by other groups. This flag can only be set if DRM_PANTHOR_GROUP_STATE_TIMEDOUT is set and DRM_PANTHOR_GROUP_STATE_FATAL_FAULT is not.”h]”(hì)�”}”(hŒ **Constants**”h]”jŒ)�”}”(hj¤¥h]”hŒ Constants”…”�”}”(hj¦¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj¢¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mhjž¥ubj§)�”}”(hhh]”(j¬)�”}”(hŒ’``DRM_PANTHOR_GROUP_STATE_TIMEDOUT`` Group had unfinished jobs. When a group ends up with this flag set, no jobs can be submitted to its queues. ”h]”(j²)�”}”(hŒ$``DRM_PANTHOR_GROUP_STATE_TIMEDOUT``”h]”jC)�”}”(hjÃ¥h]”hŒ DRM_PANTHOR_GROUP_STATE_TIMEDOUT”…”�”}”(hjÅ¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÁ¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M hj½¥ubjÃ)�”}”(hhh]”(hì)�”}”(hŒGroup had unfinished jobs.”h]”hŒGroup had unfinished jobs.”…”�”}”(hjÜ¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M hjÙ¥ubhì)�”}”(hŒPWhen a group ends up with this flag set, no jobs can be submitted to its queues.”h]”hŒPWhen a group ends up with this flag set, no jobs can be submitted to its queues.”…”�”}”(hjë¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jØ¥h´M hjÙ¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj½¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jØ¥h´M hjº¥ubj¬)�”}”(hŒ’``DRM_PANTHOR_GROUP_STATE_FATAL_FAULT`` Group had fatal faults. When a group ends up with this flag set, no jobs can be submitted to its queues. ”h]”(j²)�”}”(hŒ'``DRM_PANTHOR_GROUP_STATE_FATAL_FAULT``”h]”jC)�”}”(hj ¦h]”hŒ#DRM_PANTHOR_GROUP_STATE_FATAL_FAULT”…”�”}”(hj ¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj ¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mhj¦ubjÃ)�”}”(hhh]”(hì)�”}”(hŒGroup had fatal faults.”h]”hŒGroup had fatal faults.”…”�”}”(hj$¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mhj!¦ubhì)�”}”(hŒPWhen a group ends up with this flag set, no jobs can be submitted to its queues.”h]”hŒPWhen a group ends up with this flag set, no jobs can be submitted to its queues.”…”�”}”(hj3¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j ¦h´Mhj!¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j ¦h´Mhjº¥ubj¬)�”}”(hŒÒ``DRM_PANTHOR_GROUP_STATE_INNOCENT`` Group was killed during a reset caused by other groups. This flag can only be set if DRM_PANTHOR_GROUP_STATE_TIMEDOUT is set and DRM_PANTHOR_GROUP_STATE_FATAL_FAULT is not.”h]”(j²)�”}”(hŒ$``DRM_PANTHOR_GROUP_STATE_INNOCENT``”h]”jC)�”}”(hjS¦h]”hŒ DRM_PANTHOR_GROUP_STATE_INNOCENT”…”�”}”(hjU¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjQ¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MhjM¦ubjÃ)�”}”(hhh]”(hì)�”}”(hŒ7Group was killed during a reset caused by other groups.”h]”hŒ7Group was killed during a reset caused by other groups.”…”�”}”(hjl¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mhji¦ubhì)�”}”(hŒtThis flag can only be set if DRM_PANTHOR_GROUP_STATE_TIMEDOUT is set and DRM_PANTHOR_GROUP_STATE_FATAL_FAULT is not.”h]”hŒtThis flag can only be set if DRM_PANTHOR_GROUP_STATE_TIMEDOUT is set and DRM_PANTHOR_GROUP_STATE_FATAL_FAULT is not.”…”�”}”(hj{¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jh¦h´Mhji¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjM¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jh¦h´Mhjº¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjž¥ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj¹gh²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ&drm_panthor_group_get_state (C struct)”Œc.drm_panthor_group_get_state”hNt”auh1jJhj¹gh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_panthor_group_get_state”h]”jg)�”}”(hŒ"struct drm_panthor_group_get_state”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj»¦h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj·¦h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjɦh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hj·¦h²hh³jȦh´Mubj�)�”}”(hŒdrm_panthor_group_get_state”h]”j–)�”}”(hjµ¦h]”hŒdrm_panthor_group_get_state”…”�”}”(hjÛ¦h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjצubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj·¦h²hh³jȦh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”hì)�”}”(hŒ5Arguments passed to DRM_IOCTL_PANTHOR_GROUP_GET_STATE”h]”hŒ5Arguments passed to DRM_IOCTL_PANTHOR_GROUP_GET_STATE”…”�”}”(hjý¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mhjú¦h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj°¦h²hh³jȦh´Mubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj§jçj§jè‰jé‰jê‰uh1j[h²hhj¹gh³Nh´Nubjì)�”}”(hX‚**Definition**:: struct drm_panthor_group_get_state { __u32 group_handle; __u32 state; __u32 fatal_queues; __u32 pad; }; **Members** ``group_handle`` Handle of the group to query state on ``state`` Combination of DRM_PANTHOR_GROUP_STATE_* flags encoding the group state. ``fatal_queues`` Bitmask of queues that faced fatal faults. ``pad`` MBZ”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj!§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj§ubhŒ:”…”�”}”(hj§h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M"hj§ubj)�”}”(hŒwstruct drm_panthor_group_get_state { __u32 group_handle; __u32 state; __u32 fatal_queues; __u32 pad; };”•h]”hŒwstruct drm_panthor_group_get_state { __u32 group_handle; __u32 state; __u32 fatal_queues; __u32 pad; };”…”�”}”hj:§sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M$hj§ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjK§h]”hŒMembers”…”�”}”(hjM§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjI§ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M+hj§ubj§)�”}”(hhh]”(j¬)�”}”(hŒ7``group_handle`` Handle of the group to query state on ”h]”(j²)�”}”(hŒ``group_handle``”h]”jC)�”}”(hjj§h]”hŒ group_handle”…”�”}”(hjl§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjh§ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M%hjd§ubjÃ)�”}”(hhh]”hì)�”}”(hŒ%Handle of the group to query state on”h]”hŒ%Handle of the group to query state on”…”�”}”(hjƒ§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j§h´M%hj€§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjd§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j§h´M%hja§ubj¬)�”}”(hŒS``state`` Combination of DRM_PANTHOR_GROUP_STATE_* flags encoding the group state. ”h]”(j²)�”}”(hŒ ``state``”h]”jC)�”}”(hj£§h]”hŒstate”…”�”}”(hj¥§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj¡§ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M*hj�§ubjÃ)�”}”(hhh]”hì)�”}”(hŒHCombination of DRM_PANTHOR_GROUP_STATE_* flags encoding the group state.”h]”hŒHCombination of DRM_PANTHOR_GROUP_STATE_* flags encoding the group state.”…”�”}”(hj¼§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M)hj¹§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj�§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j¸§h´M*hja§ubj¬)�”}”(hŒ<``fatal_queues`` Bitmask of queues that faced fatal faults. ”h]”(j²)�”}”(hŒ``fatal_queues``”h]”jC)�”}”(hjݧh]”hŒ fatal_queues”…”�”}”(hjß§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÛ§ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M.hj×§ubjÃ)�”}”(hhh]”hì)�”}”(hŒ*Bitmask of queues that faced fatal faults.”h]”hŒ*Bitmask of queues that faced fatal faults.”…”�”}”(hjö§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jò§h´M.hjó§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj×§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jò§h´M.hja§ubj¬)�”}”(hŒ ``pad`` MBZ”h]”(j²)�”}”(hŒ``pad``”h]”jC)�”}”(hj¨h]”hŒpad”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M0hj¨ubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hj/¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M1hj,¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j+¨h´M0hja§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj§ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj¹gh²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjY¨h]”hŒ Description”…”�”}”(hj[¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjW¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M4hj¹gh²hubhì)�”}”(hŒbUsed to query the state of a group and decide whether a new group should be created to replace it.”h]”hŒbUsed to query the state of a group and decide whether a new group should be created to replace it.”…”�”}”(hjo¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mhj¹gh²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ(drm_panthor_tiler_heap_create (C struct)”Œc.drm_panthor_tiler_heap_create”hNt”auh1jJhj¹gh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_panthor_tiler_heap_create”h]”jg)�”}”(hŒ$struct drm_panthor_tiler_heap_create”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj—¨h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj“¨h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”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Œdrm_panthor_tiler_heap_create”h]”j–)�”}”(hj‘¨h]”hŒdrm_panthor_tiler_heap_create”…”�”}”(hj·¨h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj³¨ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj“¨h²hh³j¤¨h´M%ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”hì)�”}”(hŒ7Arguments passed to DRM_IOCTL_PANTHOR_TILER_HEAP_CREATE”h]”hŒ7Arguments passed to DRM_IOCTL_PANTHOR_TILER_HEAP_CREATE”…”�”}”(hjÙ¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M5hjÖ¨h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjŒ¨h²hh³j¤¨h´M%ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjñ¨jçjñ¨jè‰jé‰jê‰uh1j[h²hhj¹gh³Nh´Nubjì)�”}”(hXp**Definition**:: struct drm_panthor_tiler_heap_create { __u32 vm_id; __u32 initial_chunk_count; __u32 chunk_size; __u32 max_chunks; __u32 target_in_flight; __u32 handle; __u64 tiler_heap_ctx_gpu_va; __u64 first_heap_chunk_gpu_va; }; **Members** ``vm_id`` VM ID the tiler heap should be mapped to ``initial_chunk_count`` Initial number of chunks to allocate. Must be at least one. ``chunk_size`` Chunk size. Must be page-aligned and lie in the [128k:8M] range. ``max_chunks`` Maximum number of chunks that can be allocated. Must be at least **initial_chunk_count**. ``target_in_flight`` Maximum number of in-flight render passes. If the heap has more than tiler jobs in-flight, the FW will wait for render passes to finish before queuing new tiler jobs. ``handle`` Returned heap handle. Passed back to DESTROY_TILER_HEAP. ``tiler_heap_ctx_gpu_va`` Returned heap GPU virtual address returned ``first_heap_chunk_gpu_va`` First heap chunk. The tiler heap is formed of heap chunks forming a single-link list. This is the first element in the list.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjý¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjù¨ubhŒ:”…”�”}”(hjù¨h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M9hjõ¨ubj)�”}”(hŒ÷struct drm_panthor_tiler_heap_create { __u32 vm_id; __u32 initial_chunk_count; __u32 chunk_size; __u32 max_chunks; __u32 target_in_flight; __u32 handle; __u64 tiler_heap_ctx_gpu_va; __u64 first_heap_chunk_gpu_va; };”h]”hŒ÷struct drm_panthor_tiler_heap_create { __u32 vm_id; __u32 initial_chunk_count; __u32 chunk_size; __u32 max_chunks; __u32 target_in_flight; __u32 handle; __u64 tiler_heap_ctx_gpu_va; __u64 first_heap_chunk_gpu_va; };”…”�”}”hj©sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M;hjõ¨ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj'©h]”hŒMembers”…”�”}”(hj)©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj%©ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MFhjõ¨ubj§)�”}”(hhh]”(j¬)�”}”(hŒ3``vm_id`` VM ID the tiler heap should be mapped to ”h]”(j²)�”}”(hŒ ``vm_id``”h]”jC)�”}”(hjF©h]”hŒvm_id”…”�”}”(hjH©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjD©ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M9hj@©ubjÃ)�”}”(hhh]”hì)�”}”(hŒ(VM ID the tiler heap should be mapped to”h]”hŒ(VM ID the tiler heap should be mapped to”…”�”}”(hj_©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j[©h´M9hj\©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj@©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j[©h´M9hj=©ubj¬)�”}”(hŒT``initial_chunk_count`` Initial number of chunks to allocate. Must be at least one. ”h]”(j²)�”}”(hŒ``initial_chunk_count``”h]”jC)�”}”(hj©h]”hŒinitial_chunk_count”…”�”}”(hj�©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj}©ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M<hjy©ubjÃ)�”}”(hhh]”hì)�”}”(hŒ;Initial number of chunks to allocate. Must be at least one.”h]”hŒ;Initial number of chunks to allocate. Must be at least one.”…”�”}”(hj˜©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j”©h´M<hj•©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjy©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j”©h´M<hj=©ubj¬)�”}”(hŒQ``chunk_size`` Chunk size. Must be page-aligned and lie in the [128k:8M] range. ”h]”(j²)�”}”(hŒ``chunk_size``”h]”jC)�”}”(hj¸©h]”hŒ chunk_size”…”�”}”(hjº©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj¶©ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MBhj²©ubjÃ)�”}”(hhh]”(hì)�”}”(hŒ Chunk size.”h]”hŒ Chunk size.”…”�”}”(hjÑ©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M@hjΩubhì)�”}”(hŒ4Must be page-aligned and lie in the [128k:8M] range.”h]”hŒ4Must be page-aligned and lie in the [128k:8M] range.”…”�”}”(hjà©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÍ©h´MBhjΩubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj²©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÍ©h´MBhj=©ubj¬)�”}”(hŒj``max_chunks`` Maximum number of chunks that can be allocated. Must be at least **initial_chunk_count**. ”h]”(j²)�”}”(hŒ``max_chunks``”h]”jC)�”}”(hjªh]”hŒ max_chunks”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjþ©ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MIhjú©ubjÃ)�”}”(hhh]”(hì)�”}”(hŒ/Maximum number of chunks that can be allocated.”h]”hŒ/Maximum number of chunks that can be allocated.”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MGhjªubhì)�”}”(hŒ)Must be at least **initial_chunk_count**.”h]”(hŒMust be at least ”…”�”}”(hj(ªh²hh³Nh´NubjŒ)�”}”(hŒ**initial_chunk_count**”h]”hŒinitial_chunk_count”…”�”}”(hj0ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj(ªubhŒ.”…”�”}”(hj(ªh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jªh´MIhjªubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjú©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jªh´MIhj=©ubj¬)�”}”(hŒ½``target_in_flight`` Maximum number of in-flight render passes. If the heap has more than tiler jobs in-flight, the FW will wait for render passes to finish before queuing new tiler jobs. ”h]”(j²)�”}”(hŒ``target_in_flight``”h]”jC)�”}”(hjZªh]”hŒtarget_in_flight”…”�”}”(hj\ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjXªubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MQhjTªubjÃ)�”}”(hhh]”(hì)�”}”(hŒ*Maximum number of in-flight render passes.”h]”hŒ*Maximum number of in-flight render passes.”…”�”}”(hjsªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MNhjpªubhì)�”}”(hŒ{If the heap has more than tiler jobs in-flight, the FW will wait for render passes to finish before queuing new tiler jobs.”h]”hŒ{If the heap has more than tiler jobs in-flight, the FW will wait for render passes to finish before queuing new tiler jobs.”…”�”}”(hj‚ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MPhjpªubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjTªubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³joªh´MQhj=©ubj¬)�”}”(hŒD``handle`` Returned heap handle. Passed back to DESTROY_TILER_HEAP. ”h]”(j²)�”}”(hŒ ``handle``”h]”jC)�”}”(hj£ªh]”hŒhandle”…”�”}”(hj¥ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj¡ªubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MUhj�ªubjÃ)�”}”(hhh]”hì)�”}”(hŒ8Returned heap handle. Passed back to DESTROY_TILER_HEAP.”h]”hŒ8Returned heap handle. Passed back to DESTROY_TILER_HEAP.”…”�”}”(hj¼ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¸ªh´MUhj¹ªubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj�ªubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j¸ªh´MUhj=©ubj¬)�”}”(hŒE``tiler_heap_ctx_gpu_va`` Returned heap GPU virtual address returned ”h]”(j²)�”}”(hŒ``tiler_heap_ctx_gpu_va``”h]”jC)�”}”(hjܪh]”hŒtiler_heap_ctx_gpu_va”…”�”}”(hjÞªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÚªubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MXhjÖªubjÃ)�”}”(hhh]”hì)�”}”(hŒ*Returned heap GPU virtual address returned”h]”hŒ*Returned heap GPU virtual address returned”…”�”}”(hjõªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jñªh´MXhjòªubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÖªubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jñªh´MXhj=©ubj¬)�”}”(hŒ™``first_heap_chunk_gpu_va`` First heap chunk. The tiler heap is formed of heap chunks forming a single-link list. This is the first element in the list.”h]”(j²)�”}”(hŒ``first_heap_chunk_gpu_va``”h]”jC)�”}”(hj«h]”hŒfirst_heap_chunk_gpu_va”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M^hj«ubjÃ)�”}”(hhh]”(hì)�”}”(hŒFirst heap chunk.”h]”hŒFirst heap chunk.”…”�”}”(hj.«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M\hj+«ubhì)�”}”(hŒjThe tiler heap is formed of heap chunks forming a single-link list. This is the first element in the list.”h]”hŒjThe tiler heap is formed of heap chunks forming a single-link list. This is the first element in the list.”…”�”}”(hj=«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j*«h´M^hj+«ubeh}”(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¦hjõ¨ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj¹gh²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ)drm_panthor_tiler_heap_destroy (C struct)”Œ c.drm_panthor_tiler_heap_destroy”hNt”auh1jJhj¹gh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_panthor_tiler_heap_destroy”h]”jg)�”}”(hŒ%struct drm_panthor_tiler_heap_destroy”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj}«h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjy«h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Meubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹«h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjy«h²hh³jŠ«h´Meubj�)�”}”(hŒdrm_panthor_tiler_heap_destroy”h]”j–)�”}”(hjw«h]”hŒdrm_panthor_tiler_heap_destroy”…”�”}”(hj�«h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj™«ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjy«h²hh³jŠ«h´Meubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hju«h²hh³jŠ«h´Meubah}”(h]”jp«ah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jŠ«h´Mehjr«h²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ8Arguments passed to DRM_IOCTL_PANTHOR_TILER_HEAP_DESTROY”h]”hŒ8Arguments passed to DRM_IOCTL_PANTHOR_TILER_HEAP_DESTROY”…”�”}”(hj¿«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mdhj¼«h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjr«h²hh³jŠ«h´Meubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj׫jçj׫jè‰jé‰jê‰uh1j[h²hhj¹gh³Nh´Nubjì)�”}”(hX**Definition**:: struct drm_panthor_tiler_heap_destroy { __u32 handle; __u32 pad; }; **Members** ``handle`` Handle of the tiler heap to destroy. Must be a valid heap handle returned by DRM_IOCTL_PANTHOR_TILER_HEAP_CREATE. ``pad`` Padding field, MBZ.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjã«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjß«ubhŒ:”…”�”}”(hjß«h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MhhjÛ«ubj)�”}”(hŒKstruct drm_panthor_tiler_heap_destroy { __u32 handle; __u32 pad; };”h]”hŒKstruct drm_panthor_tiler_heap_destroy { __u32 handle; __u32 pad; };”…”�”}”hjü«sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MjhjÛ«ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj ¬h]”hŒMembers”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj ¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MohjÛ«ubj§)�”}”(hhh]”(j¬)�”}”(hŒ~``handle`` Handle of the tiler heap to destroy. Must be a valid heap handle returned by DRM_IOCTL_PANTHOR_TILER_HEAP_CREATE. ”h]”(j²)�”}”(hŒ ``handle``”h]”jC)�”}”(hj,¬h]”hŒhandle”…”�”}”(hj.¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj*¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mkhj&¬ubjÃ)�”}”(hhh]”(hì)�”}”(hŒ$Handle of the tiler heap to destroy.”h]”hŒ$Handle of the tiler heap to destroy.”…”�”}”(hjE¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MihjB¬ubhì)�”}”(hŒLMust be a valid heap handle returned by DRM_IOCTL_PANTHOR_TILER_HEAP_CREATE.”h]”hŒLMust be a valid heap handle returned by DRM_IOCTL_PANTHOR_TILER_HEAP_CREATE.”…”�”}”(hjT¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jA¬h´MkhjB¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj&¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jA¬h´Mkhj#¬ubj¬)�”}”(hŒ``pad`` Padding field, MBZ.”h]”(j²)�”}”(hŒ``pad``”h]”jC)�”}”(hjt¬h]”hŒpad”…”�”}”(hjv¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjr¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mnhjn¬ubjÃ)�”}”(hhh]”hì)�”}”(hŒPadding field, MBZ.”h]”hŒPadding field, MBZ.”…”�”}”(hj�¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MohjЬubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjn¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j‰¬h´Mnhj#¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjÛ«ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj¹gh²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ#drm_panthor_bo_set_label (C struct)”Œc.drm_panthor_bo_set_label”hNt”auh1jJhj¹gh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_panthor_bo_set_label”h]”jg)�”}”(hŒstruct drm_panthor_bo_set_label”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjάh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjʬh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Muubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjܬh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjʬh²hh³jÛ¬h´Muubj�)�”}”(hŒdrm_panthor_bo_set_label”h]”j–)�”}”(hjȬh]”hŒdrm_panthor_bo_set_label”…”�”}”(hjî¬h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjê¬ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjʬh²hh³jÛ¬h´Muubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjƬh²hh³jÛ¬h´Muubah}”(h]”jÁ¬ah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jÛ¬h´Muhjìh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ2Arguments passed to DRM_IOCTL_PANTHOR_BO_SET_LABEL”h]”hŒ2Arguments passed to DRM_IOCTL_PANTHOR_BO_SET_LABEL”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mshj ­h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjìh²hh³jÛ¬h´Muubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj(­jçj(­jè‰jé‰jê‰uh1j[h²hhj¹gh³Nh´Nubjì)�”}”(hX**Definition**:: struct drm_panthor_bo_set_label { __u32 handle; __u32 pad; __u64 label; }; **Members** ``handle`` Handle of the buffer object to label. ``pad`` MBZ. ``label`` User pointer to a NUL-terminated string Length cannot be greater than 4096”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj4­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj0­ubhŒ:”…”�”}”(hj0­h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mwhj,­ubj)�”}”(hŒVstruct drm_panthor_bo_set_label { __u32 handle; __u32 pad; __u64 label; };”h]”hŒVstruct drm_panthor_bo_set_label { __u32 handle; __u32 pad; __u64 label; };”…”�”}”hjM­sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Myhj,­ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj^­h]”hŒMembers”…”�”}”(hj`­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj\­ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mhj,­ubj§)�”}”(hhh]”(j¬)�”}”(hŒ1``handle`` Handle of the buffer object to label. ”h]”(j²)�”}”(hŒ ``handle``”h]”jC)�”}”(hj}­h]”hŒhandle”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj{­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mwhjw­ubjÃ)�”}”(hhh]”hì)�”}”(hŒ%Handle of the buffer object to label.”h]”hŒ%Handle of the buffer object to label.”…”�”}”(hj–­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j’­h´Mwhj“­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjw­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j’­h´Mwhjt­ubj¬)�”}”(hŒ ``pad`` MBZ. ”h]”(j²)�”}”(hŒ``pad``”h]”jC)�”}”(hj¶­h]”hŒpad”…”�”}”(hj¸­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj´­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mzhj°­ubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ.”h]”hŒMBZ.”…”�”}”(hjÏ­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jË­h´MzhjÌ­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj°­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jË­h´Mzhjt­ubj¬)�”}”(hŒU``label`` User pointer to a NUL-terminated string Length cannot be greater than 4096”h]”(j²)�”}”(hŒ ``label``”h]”jC)�”}”(hjï­h]”hŒlabel”…”�”}”(hjñ­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjí­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mhjé­ubjÃ)�”}”(hhh]”(hì)�”}”(hŒ'User pointer to a NUL-terminated string”h]”hŒ'User pointer to a NUL-terminated string”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M~hj®ubhì)�”}”(hŒ"Length cannot be greater than 4096”h]”hŒ"Length cannot be greater than 4096”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M€hj®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjé­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j®h´Mhjt­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj,­ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj¹gh²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ+drm_panthor_set_user_mmio_offset (C struct)”Œ"c.drm_panthor_set_user_mmio_offset”hNt”auh1jJhj¹gh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒ drm_panthor_set_user_mmio_offset”h]”jg)�”}”(hŒ'struct drm_panthor_set_user_mmio_offset”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjX®h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjT®h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M†ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf®h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjT®h²hh³je®h´M†ubj�)�”}”(hŒ drm_panthor_set_user_mmio_offset”h]”j–)�”}”(hjR®h]”hŒ drm_panthor_set_user_mmio_offset”…”�”}”(hjx®h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjt®ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjT®h²hh³je®h´M†ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjP®h²hh³je®h´M†ubah}”(h]”jK®ah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³je®h´M†hjM®h²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ:Arguments passed to DRM_IOCTL_PANTHOR_SET_USER_MMIO_OFFSET”h]”hŒ:Arguments passed to DRM_IOCTL_PANTHOR_SET_USER_MMIO_OFFSET”…”�”}”(hjš®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M…hj—®h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjM®h²hh³je®h´M†ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj²®jçj²®jè‰jé‰jê‰uh1j[h²hhj¹gh³Nh´Nubjì)�”}”(hX¡**Definition**:: struct drm_panthor_set_user_mmio_offset { __u64 offset; }; **Members** ``offset`` User MMIO offset to use. Must be either DRM_PANTHOR_USER_MMIO_OFFSET_32BIT or DRM_PANTHOR_USER_MMIO_OFFSET_64BIT. Use DRM_PANTHOR_USER_MMIO_OFFSET (which selects OFFSET_32BIT or OFFSET_64BIT based on the size of an unsigned long) unless you have a very good reason to overrule this decision.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj¾®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjº®ubhŒ:”…”�”}”(hjº®h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M‰hj¶®ubj)�”}”(hŒ>struct drm_panthor_set_user_mmio_offset { __u64 offset; };”h]”hŒ>struct drm_panthor_set_user_mmio_offset { __u64 offset; };”…”�”}”hj×®sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M‹hj¶®ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjè®h]”hŒMembers”…”�”}”(hjê®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjæ®ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M�hj¶®ubj§)�”}”(hhh]”j¬)�”}”(hX0``offset`` User MMIO offset to use. Must be either DRM_PANTHOR_USER_MMIO_OFFSET_32BIT or DRM_PANTHOR_USER_MMIO_OFFSET_64BIT. Use DRM_PANTHOR_USER_MMIO_OFFSET (which selects OFFSET_32BIT or OFFSET_64BIT based on the size of an unsigned long) unless you have a very good reason to overrule this decision.”h]”(j²)�”}”(hŒ ``offset``”h]”jC)�”}”(hj¯h]”hŒoffset”…”�”}”(hj ¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M•hj¯ubjÃ)�”}”(hhh]”(hì)�”}”(hŒUser MMIO offset to use.”h]”hŒUser MMIO offset to use.”…”�”}”(hj ¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M�hj¯ubhì)�”}”(hŒXMust be either DRM_PANTHOR_USER_MMIO_OFFSET_32BIT or DRM_PANTHOR_USER_MMIO_OFFSET_64BIT.”h]”hŒXMust be either DRM_PANTHOR_USER_MMIO_OFFSET_32BIT or DRM_PANTHOR_USER_MMIO_OFFSET_64BIT.”…”�”}”(hj/¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M‘hj¯ubhì)�”}”(hŒ±Use DRM_PANTHOR_USER_MMIO_OFFSET (which selects OFFSET_32BIT or OFFSET_64BIT based on the size of an unsigned long) unless you have a very good reason to overrule this decision.”h]”hŒ±Use DRM_PANTHOR_USER_MMIO_OFFSET (which selects OFFSET_32BIT or OFFSET_64BIT based on the size of an unsigned long) unless you have a very good reason to overrule this decision.”…”�”}”(hj>¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M”hj¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j¯h´M•hjþ®ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj¶®ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj¹gh²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjh¯h]”hŒ Description”…”�”}”(hjj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjf¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M™hj¹gh²hubhì)�”}”(hŒµThis ioctl is only really useful if you want to support userspace CPU emulation environments where the size of an unsigned long differs between the host and the guest architectures.”h]”hŒµThis ioctl is only really useful if you want to support userspace CPU emulation environments where the size of an unsigned long differs between the host and the guest architectures.”…”�”}”(hj~¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M†hj¹gh²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ$drm_panthor_bo_sync_op_type (C enum)”Œc.drm_panthor_bo_sync_op_type”hNt”auh1jJhj¹gh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_panthor_bo_sync_op_type”h]”jg)�”}”(hŒ enum drm_panthor_bo_sync_op_type”h]”(jm)�”}”(hjîh]”hŒenum”…”�”}”(hj¦¯h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj¢¯h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”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Œdrm_panthor_bo_sync_op_type”h]”j–)�”}”(hj ¯h]”hŒdrm_panthor_bo_sync_op_type”…”�”}”(hjƯh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj¯ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj¢¯h²hh³j³¯h´M�ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”hì)�”}”(hŒ BO sync type”h]”hŒ BO sync type”…”�”}”(hjè¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M›hjå¯h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj›¯h²hh³j³¯h´M�ubeh}”(h]”h ]”(jàŒenum”eh"]”h$]”h&]”jåjàjæj°jçj°jè‰jé‰jê‰uh1j[h²hhj¹gh³Nh´Nubjì)�”}”(hŒ¥**Constants** ``DRM_PANTHOR_BO_SYNC_CPU_CACHE_FLUSH`` Flush CPU caches. ``DRM_PANTHOR_BO_SYNC_CPU_CACHE_FLUSH_AND_INVALIDATE`` Flush and invalidate CPU caches.”h]”(hì)�”}”(hŒ **Constants**”h]”jŒ)�”}”(hj °h]”hŒ Constants”…”�”}”(hj °h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MŸhj°ubj§)�”}”(hhh]”(j¬)�”}”(hŒ:``DRM_PANTHOR_BO_SYNC_CPU_CACHE_FLUSH`` Flush CPU caches. ”h]”(j²)�”}”(hŒ'``DRM_PANTHOR_BO_SYNC_CPU_CACHE_FLUSH``”h]”jC)�”}”(hj)°h]”hŒ#DRM_PANTHOR_BO_SYNC_CPU_CACHE_FLUSH”…”�”}”(hj+°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj'°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M¢hj#°ubjÃ)�”}”(hhh]”hì)�”}”(hŒFlush CPU caches.”h]”hŒFlush CPU caches.”…”�”}”(hjB°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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ŒW``DRM_PANTHOR_BO_SYNC_CPU_CACHE_FLUSH_AND_INVALIDATE`` Flush and invalidate CPU caches.”h]”(j²)�”}”(hŒ6``DRM_PANTHOR_BO_SYNC_CPU_CACHE_FLUSH_AND_INVALIDATE``”h]”jC)�”}”(hjb°h]”hŒ2DRM_PANTHOR_BO_SYNC_CPU_CACHE_FLUSH_AND_INVALIDATE”…”�”}”(hjd°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj`°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M¤hj\°ubjÃ)�”}”(hhh]”hì)�”}”(hŒ Flush and invalidate CPU caches.”h]”hŒ Flush and invalidate CPU caches.”…”�”}”(hj{°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M¥hjx°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj\°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jw°h´M¤hj °ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj°ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj¹gh²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ!drm_panthor_bo_sync_op (C struct)”Œc.drm_panthor_bo_sync_op”hNt”auh1jJhj¹gh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_panthor_bo_sync_op”h]”jg)�”}”(hŒstruct drm_panthor_bo_sync_op”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj¼°h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj¸°h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”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Œdrm_panthor_bo_sync_op”h]”j–)�”}”(hj¶°h]”hŒdrm_panthor_bo_sync_op”…”�”}”(hjܰh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjذubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj¸°h²hh³jɰh´Mªubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”hì)�”}”(hŒBO map sync op”h]”hŒBO map sync op”…”�”}”(hjþ°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M¦hjû°h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj±°h²hh³jɰh´Mªubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj±jçj±jè‰jé‰jê‰uh1j[h²hhj¹gh³Nh´Nubjì)�”}”(hXß**Definition**:: struct drm_panthor_bo_sync_op { __u32 handle; __u32 type; __u64 offset; __u64 size; }; **Members** ``handle`` Handle of the buffer object to sync. ``type`` Type of operation. ``offset`` Offset into the BO at which the sync range starts. This will be rounded down to the nearest cache line as needed. ``size`` Size of the range to sync **size** + **offset** will be rounded up to the nearest cache line as needed.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj"±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj±ubhŒ:”…”�”}”(hj±h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mªhj±ubj)�”}”(hŒfstruct drm_panthor_bo_sync_op { __u32 handle; __u32 type; __u64 offset; __u64 size; };”h]”hŒfstruct drm_panthor_bo_sync_op { __u32 handle; __u32 type; __u64 offset; __u64 size; };”…”�”}”hj;±sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M¬hj±ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjL±h]”hŒMembers”…”�”}”(hjN±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjJ±ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M³hj±ubj§)�”}”(hhh]”(j¬)�”}”(hŒ0``handle`` Handle of the buffer object to sync. ”h]”(j²)�”}”(hŒ ``handle``”h]”jC)�”}”(hjk±h]”hŒhandle”…”�”}”(hjm±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhji±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mªhje±ubjÃ)�”}”(hhh]”hì)�”}”(hŒ$Handle of the buffer object to sync.”h]”hŒ$Handle of the buffer object to sync.”…”�”}”(hj„±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j€±h´Mªhj�±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhje±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j€±h´Mªhjb±ubj¬)�”}”(hŒ``type`` Type of operation. ”h]”(j²)�”}”(hŒ``type``”h]”jC)�”}”(hj¤±h]”hŒtype”…”�”}”(hj¦±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj¢±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M­hjž±ubjÃ)�”}”(hhh]”hì)�”}”(hŒType of operation.”h]”hŒType of operation.”…”�”}”(hj½±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¹±h´M­hjº±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjž±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j¹±h´M­hjb±ubj¬)�”}”(hŒ~``offset`` Offset into the BO at which the sync range starts. This will be rounded down to the nearest cache line as needed. ”h]”(j²)�”}”(hŒ ``offset``”h]”jC)�”}”(hjݱh]”hŒoffset”…”�”}”(hjß±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÛ±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M³hj×±ubjÃ)�”}”(hhh]”(hì)�”}”(hŒ2Offset into the BO at which the sync range starts.”h]”hŒ2Offset into the BO at which the sync range starts.”…”�”}”(hjö±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M±hjó±ubhì)�”}”(hŒ>This will be rounded down to the nearest cache line as needed.”h]”hŒ>This will be rounded down to the nearest cache line as needed.”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jò±h´M³hjó±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj×±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jò±h´M³hjb±ubj¬)�”}”(hŒq``size`` Size of the range to sync **size** + **offset** will be rounded up to the nearest cache line as needed.”h]”(j²)�”}”(hŒ``size``”h]”jC)�”}”(hj%²h]”hŒsize”…”�”}”(hj'²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj#²ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mºhj²ubjÃ)�”}”(hhh]”(hì)�”}”(hŒSize of the range to sync”h]”hŒSize of the range to sync”…”�”}”(hj>²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M¸hj;²ubhì)�”}”(hŒM**size** + **offset** will be rounded up to the nearest cache line as needed.”h]”(jŒ)�”}”(hŒ**size**”h]”hŒsize”…”�”}”(hjQ²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjM²ubhŒ + ”…”�”}”(hjM²h²hh³Nh´NubjŒ)�”}”(hŒ **offset**”h]”hŒoffset”…”�”}”(hjc²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjM²ubhŒ8 will be rounded up to the nearest cache line as needed.”…”�”}”(hjM²h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j:²h´Mºhj;²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j:²h´Mºhjb±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj±ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj¹gh²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_panthor_bo_sync (C struct)”Œc.drm_panthor_bo_sync”hNt”auh1jJhj¹gh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_panthor_bo_sync”h]”jg)�”}”(hŒstruct drm_panthor_bo_sync”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj­²h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj©²h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”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Œdrm_panthor_bo_sync”h]”j–)�”}”(hj§²h]”hŒdrm_panthor_bo_sync”…”�”}”(hjͲh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjɲubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj©²h²hh³jº²h´MÁubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”hì)�”}”(hŒBO map sync request”h]”hŒBO map sync request”…”�”}”(hjï²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÀhjì²h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj¢²h²hh³jº²h´MÁubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj³jçj³jè‰jé‰jê‰uh1j[h²hhj¹gh³Nh´Nubjì)�”}”(hŒ­**Definition**:: struct drm_panthor_bo_sync { struct drm_panthor_obj_array ops; }; **Members** ``ops`` Array of struct drm_panthor_bo_sync_op sync operations.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj³ubhŒ:”…”�”}”(hj³h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÄhj ³ubj)�”}”(hŒEstruct drm_panthor_bo_sync { struct drm_panthor_obj_array ops; };”h]”hŒEstruct drm_panthor_bo_sync { struct drm_panthor_obj_array ops; };”…”�”}”hj,³sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÆhj ³ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj=³h]”hŒMembers”…”�”}”(hj?³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj;³ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÊhj ³ubj§)�”}”(hhh]”j¬)�”}”(hŒ?``ops`` Array of struct drm_panthor_bo_sync_op sync operations.”h]”(j²)�”}”(hŒ``ops``”h]”jC)�”}”(hj\³h]”hŒops”…”�”}”(hj^³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjZ³ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÄhjV³ubjÃ)�”}”(hhh]”hì)�”}”(hŒ7Array of struct drm_panthor_bo_sync_op sync operations.”h]”hŒ7Array of struct drm_panthor_bo_sync_op sync operations.”…”�”}”(hju³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÅhjr³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjV³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jq³h´MÄhjS³ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj ³ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj¹gh²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ#drm_panthor_bo_extra_flags (C enum)”Œc.drm_panthor_bo_extra_flags”hNt”auh1jJhj¹gh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_panthor_bo_extra_flags”h]”jg)�”}”(hŒenum drm_panthor_bo_extra_flags”h]”(jm)�”}”(hjîh]”hŒenum”…”�”}”(hj¶³h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj²³h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MËubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjijh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hj²³h²hh³jóh´MËubj�)�”}”(hŒdrm_panthor_bo_extra_flags”h]”j–)�”}”(hj°³h]”hŒdrm_panthor_bo_extra_flags”…”�”}”(hjÖ³h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjÒ³ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj²³h²hh³jóh´MËubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”hì)�”}”(hŒ0Set of flags returned on a BO_QUERY_INFO request”h]”hŒ0Set of flags returned on a BO_QUERY_INFO request”…”�”}”(hjø³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÊhjõ³h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj«³h²hh³jóh´MËubeh}”(h]”h ]”(jàŒenum”eh"]”h$]”h&]”jåjàjæj´jçj´jè‰jé‰jê‰uh1j[h²hhj¹gh³Nh´Nubjì)�”}”(hXã**Constants** ``DRM_PANTHOR_BO_IS_IMPORTED`` BO has been imported from an external driver. Note that imported dma-buf handles are not flagged as imported if they where exported by panthor. Only buffers that are coming from other drivers (dma heaps, other GPUs, display controllers, V4L, ...). It's also important to note that all imported BOs are mapped cached and can't be considered IO-coherent even if the GPU is. This means they require explicit syncs that must go through the DRM_PANTHOR_BO_SYNC ioctl (userland cache maintenance is not allowed in that case, because extra operations might be needed to make changes visible to the CPU/device, like buffer migration when the exporter is a GPU with its own VRAM).”h]”(hì)�”}”(hŒ **Constants**”h]”jŒ)�”}”(hj´h]”hŒ Constants”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÎhj´ubj§)�”}”(hhh]”j¬)�”}”(hXÀ``DRM_PANTHOR_BO_IS_IMPORTED`` BO has been imported from an external driver. Note that imported dma-buf handles are not flagged as imported if they where exported by panthor. Only buffers that are coming from other drivers (dma heaps, other GPUs, display controllers, V4L, ...). It's also important to note that all imported BOs are mapped cached and can't be considered IO-coherent even if the GPU is. This means they require explicit syncs that must go through the DRM_PANTHOR_BO_SYNC ioctl (userland cache maintenance is not allowed in that case, because extra operations might be needed to make changes visible to the CPU/device, like buffer migration when the exporter is a GPU with its own VRAM).”h]”(j²)�”}”(hŒ``DRM_PANTHOR_BO_IS_IMPORTED``”h]”jC)�”}”(hj9´h]”hŒDRM_PANTHOR_BO_IS_IMPORTED”…”�”}”(hj;´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj7´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÛhj3´ubjÃ)�”}”(hhh]”(hì)�”}”(hŒ-BO has been imported from an external driver.”h]”hŒ-BO has been imported from an external driver.”…”�”}”(hjR´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÑhjO´ubhì)�”}”(hŒÉNote that imported dma-buf handles are not flagged as imported if they where exported by panthor. Only buffers that are coming from other drivers (dma heaps, other GPUs, display controllers, V4L, ...).”h]”hŒÉNote that imported dma-buf handles are not flagged as imported if they where exported by panthor. Only buffers that are coming from other drivers (dma heaps, other GPUs, display controllers, V4L, ...).”…”�”}”(hja´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÓhjO´ubhì)�”}”(hX§It's also important to note that all imported BOs are mapped cached and can't be considered IO-coherent even if the GPU is. This means they require explicit syncs that must go through the DRM_PANTHOR_BO_SYNC ioctl (userland cache maintenance is not allowed in that case, because extra operations might be needed to make changes visible to the CPU/device, like buffer migration when the exporter is a GPU with its own VRAM).”h]”hX«It’s also important to note that all imported BOs are mapped cached and can’t be considered IO-coherent even if the GPU is. This means they require explicit syncs that must go through the DRM_PANTHOR_BO_SYNC ioctl (userland cache maintenance is not allowed in that case, because extra operations might be needed to make changes visible to the CPU/device, like buffer migration when the exporter is a GPU with its own VRAM).”…”�”}”(hjp´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´M×hjO´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj3´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jN´h´MÛhj0´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj´ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj¹gh²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjš´h]”hŒ Description”…”�”}”(hjœ´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj˜´ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MÞhj¹gh²hubhì)�”}”(hŒ«Those are flags reflecting BO properties that are not directly coming from the flags passed are creation time, or information on BOs that were imported from other drivers.”h]”hŒ«Those are flags reflecting BO properties that are not directly coming from the flags passed are creation time, or information on BOs that were imported from other drivers.”…”�”}”(hj°´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MËhj¹gh²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ$drm_panthor_bo_query_info (C struct)”Œc.drm_panthor_bo_query_info”hNt”auh1jJhj¹gh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_panthor_bo_query_info”h]”jg)�”}”(hŒ struct drm_panthor_bo_query_info”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjØ´h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjÔ´h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”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Œdrm_panthor_bo_query_info”h]”j–)�”}”(hjÒ´h]”hŒdrm_panthor_bo_query_info”…”�”}”(hjø´h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjô´ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjÔ´h²hh³jå´h´MÑubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”hì)�”}”(hŒ Query BO info”h]”hŒ Query BO info”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mâhjµh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÍ´h²hh³jå´h´MÑubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj2µjçj2µjè‰jé‰jê‰uh1j[h²hhj¹gh³Nh´Nubjì)�”}”(hXë**Definition**:: struct drm_panthor_bo_query_info { __u32 handle; __u32 extra_flags; __u32 create_flags; __u32 pad; }; **Members** ``handle`` Handle of the buffer object to query flags on. ``extra_flags`` Combination of enum drm_panthor_bo_extra_flags flags. ``create_flags`` Flags passed at creation time. Combination of enum drm_panthor_bo_flags flags. Will be zero if the buffer comes from a different driver. ``pad`` Will be zero on return.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj>µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj:µubhŒ:”…”�”}”(hj:µh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mæhj6µubj)�”}”(hŒustruct drm_panthor_bo_query_info { __u32 handle; __u32 extra_flags; __u32 create_flags; __u32 pad; };”h]”hŒustruct drm_panthor_bo_query_info { __u32 handle; __u32 extra_flags; __u32 create_flags; __u32 pad; };”…”�”}”hjWµsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mèhj6µubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjhµh]”hŒMembers”…”�”}”(hjjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjfµubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mïhj6µubj§)�”}”(hhh]”(j¬)�”}”(hŒ:``handle`` Handle of the buffer object to query flags on. ”h]”(j²)�”}”(hŒ ``handle``”h]”jC)�”}”(hj‡µh]”hŒhandle”…”�”}”(hj‰µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj…µubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mæhj�µubjÃ)�”}”(hhh]”hì)�”}”(hŒ.Handle of the buffer object to query flags on.”h]”hŒ.Handle of the buffer object to query flags on.”…”�”}”(hj µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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ŒF``extra_flags`` Combination of enum drm_panthor_bo_extra_flags flags. ”h]”(j²)�”}”(hŒ``extra_flags``”h]”jC)�”}”(hjÀµh]”hŒ extra_flags”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj¾µubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MêhjºµubjÃ)�”}”(hhh]”hì)�”}”(hŒ5Combination of enum drm_panthor_bo_extra_flags flags.”h]”hŒ5Combination of enum drm_panthor_bo_extra_flags flags.”…”�”}”(hjÙµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ›``create_flags`` Flags passed at creation time. Combination of enum drm_panthor_bo_flags flags. Will be zero if the buffer comes from a different driver. ”h]”(j²)�”}”(hŒ``create_flags``”h]”jC)�”}”(hjùµh]”hŒ create_flags”…”�”}”(hjûµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj÷µubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MòhjóµubjÃ)�”}”(hhh]”(hì)�”}”(hŒFlags passed at creation time.”h]”hŒFlags passed at creation time.”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mïhj¶ubhì)�”}”(hŒiCombination of enum drm_panthor_bo_flags flags. Will be zero if the buffer comes from a different driver.”h]”hŒiCombination of enum drm_panthor_bo_flags flags. Will be zero if the buffer comes from a different driver.”…”�”}”(hj!¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mñhj¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjóµubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j¶h´Mòhj~µubj¬)�”}”(hŒ``pad`` Will be zero on return.”h]”(j²)�”}”(hŒ``pad``”h]”jC)�”}”(hjB¶h]”hŒpad”…”�”}”(hjD¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj@¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mõhj<¶ubjÃ)�”}”(hhh]”hì)�”}”(hŒWill be zero on return.”h]”hŒWill be zero on return.”…”�”}”(hj[¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MöhjX¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj<¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jW¶h´Mõhj~µubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj6µubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj¹gh²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒDRM_IOCTL_PANTHOR (C macro)”Œc.DRM_IOCTL_PANTHOR”hNt”auh1jJhj¹gh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒDRM_IOCTL_PANTHOR”h]”jg)�”}”(hŒDRM_IOCTL_PANTHOR”h]”j�)�”}”(hŒDRM_IOCTL_PANTHOR”h]”j–)�”}”(hj–¶h]”hŒDRM_IOCTL_PANTHOR”…”�”}”(hj ¶h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjœ¶ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj˜¶h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Múubah}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”h}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj‘¶h²hh³j³¶h´Múubeh}”(h]”h ]”(jàŒmacro”eh"]”h$]”h&]”jåjàjæj̶jçj̶jè‰jé‰jê‰uh1j[h²hhj¹gh³Nh´Nubhì)�”}”(hŒ.``DRM_IOCTL_PANTHOR (__access, __id, __type)``”h]”jC)�”}”(hjÒ¶h]”hŒ*DRM_IOCTL_PANTHOR (__access, __id, __type)”…”�”}”(hjÔ¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjжubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mühj¹gh²hubjK)�”}”(hŒBuild a Panthor IOCTL number ”h]”hì)�”}”(hŒBuild a Panthor IOCTL number”h]”hŒBuild a Panthor IOCTL number”…”�”}”(hjì¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Múhjè¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJh³jú¶h´Múhj¹gh²hubjì)�”}”(hXJ**Parameters** ``__access`` Access type. Must be R, W or RW. ``__id`` One of the DRM_PANTHOR_xxx id. ``__type`` Suffix of the type being passed to the IOCTL. **Description** Don't use this macro directly, use the DRM_IOCTL_PANTHOR_xxx values instead. **Return** An IOCTL number to be passed to ioctl() from userspace.”h]”(hì)�”}”(hŒ**Parameters**”h]”jŒ)�”}”(hj·h]”hŒ Parameters”…”�”}”(hj ·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mþhj·ubj§)�”}”(hhh]”(j¬)�”}”(hŒ.``__access`` Access type. Must be R, W or RW. ”h]”(j²)�”}”(hŒ ``__access``”h]”jC)�”}”(hj&·h]”hŒ__access”…”�”}”(hj(·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj$·ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mûhj ·ubjÃ)�”}”(hhh]”hì)�”}”(hŒ Access type. Must be R, W or RW.”h]”hŒ Access type. Must be R, W or RW.”…”�”}”(hj?·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ(``__id`` One of the DRM_PANTHOR_xxx id. ”h]”(j²)�”}”(hŒ``__id``”h]”jC)�”}”(hj_·h]”hŒ__id”…”�”}”(hja·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj]·ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´MühjY·ubjÃ)�”}”(hhh]”hì)�”}”(hŒOne of the DRM_PANTHOR_xxx id.”h]”hŒOne of the DRM_PANTHOR_xxx id.”…”�”}”(hjx·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jt·h´Mühju·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjY·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jt·h´Mühj·ubj¬)�”}”(hŒ9``__type`` Suffix of the type being passed to the IOCTL. ”h]”(j²)�”}”(hŒ ``__type``”h]”jC)�”}”(hj˜·h]”hŒ__type”…”�”}”(hjš·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj–·ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mýhj’·ubjÃ)�”}”(hhh]”hì)�”}”(hŒ-Suffix of the type being passed to the IOCTL.”h]”hŒ-Suffix of the type being passed to the IOCTL.”…”�”}”(hj±·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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¦hj·ubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjÓ·h]”hŒ Description”…”�”}”(hjÕ·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÑ·ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mÿhj·ubhì)�”}”(hŒLDon't use this macro directly, use the DRM_IOCTL_PANTHOR_xxx values instead.”h]”hŒNDon’t use this macro directly, use the DRM_IOCTL_PANTHOR_xxx values instead.”…”�”}”(hjé·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mþhj·ubhì)�”}”(hŒ **Return**”h]”jŒ)�”}”(hjú·h]”hŒReturn”…”�”}”(hjü·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjø·ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mhj·ubhì)�”}”(hŒ7An IOCTL number to be passed to ioctl() from userspace.”h]”hŒ7An IOCTL number to be passed to ioctl() from userspace.”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:26: ./include/uapi/drm/panthor_drm.h”h´Mhj·ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj¹gh²hh³Nh´Nubeh}”(h]”jŽah ]”h"]”Œdrm/panthor uapi”ah$]”h&]”uh1hµhh·h²hh³hÌh´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒ drm/xe uAPI”h]”hŒ drm/xe uAPI”…”�”}”(hj0¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÊjªuh1hºhj-¸h²hh³hÌh´Kubj{)�”}”(hŒ.. _Xe Device Block Diagram:”h]”h}”(h]”h ]”h"]”h$]”h&]”hÊŒxe-device-block-diagram”uh1jzh´Khj-¸h²hh³Nubhì)�”}”(hŒ**Xe Device Block Diagram**”h]”jŒ)�”}”(hjK¸h]”hŒXe Device Block Diagram”…”�”}”(hjM¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjI¸ubah}”(h]”jH¸ah ]”h"]”Œxe device block diagram”ah$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Khj-¸h²hj¢}”j^¸j>¸sj¤}”jH¸j>¸subhì)�”}”(hXThe diagram below represents a high-level simplification of a discrete GPU supported by the Xe driver. It shows some device components which are necessary to understand this API, as well as how their relations to each other. This diagram does not represent real hardware::”h]”hXThe diagram below represents a high-level simplification of a discrete GPU supported by the Xe driver. It shows some device components which are necessary to understand this API, as well as how their relations to each other. This diagram does not represent real hardware:”…”�”}”(hjd¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Khj-¸h²hubj)�”}”(hXØ┌──────────────────────────────────────────────────────────────────â”� │ ┌──────────────────────────────────────────────────â”� ┌─────────â”� │ │ │ ┌───────────────────────â”� ┌─────â”� │ │ ┌─────â”� │ │ │ │ │ VRAM0 ├───┤ ... │ │ │ │VRAM1│ │ │ │ │ └───────────┬───────────┘ └─GT1─┘ │ │ └──┬──┘ │ │ │ │ ┌──────────────────┴───────────────────────────â”� │ │ ┌──┴──â”� │ │ │ │ │ ┌─────────────────────â”� ┌─────────────────â”� │ │ │ │ │ │ │ │ │ │ │ ┌──â”� ┌──â”� ┌──â”� ┌──â”� │ │ ┌─────â”� ┌─────â”� │ │ │ │ │ │ │ │ │ │ │ │ │EU│ │EU│ │EU│ │EU│ │ │ │RCS0 │ │BCS0 │ │ │ │ │ │ │ │ │ │ │ │ │ └──┘ └──┘ └──┘ └──┘ │ │ └─────┘ └─────┘ │ │ │ │ │ │ │ │ │ │ │ │ ┌──â”� ┌──â”� ┌──â”� ┌──â”� │ │ ┌─────â”� ┌─────â”� │ │ │ │ │ │ │ │ │ │ │ │ │EU│ │EU│ │EU│ │EU│ │ │ │VCS0 │ │VCS1 │ │ │ │ │ │ │ │ │ │ │ │ │ └──┘ └──┘ └──┘ └──┘ │ │ └─────┘ └─────┘ │ │ │ │ │ │ │ │ │ │ │ │ ┌──â”� ┌──â”� ┌──â”� ┌──â”� │ │ ┌─────â”� ┌─────â”� │ │ │ │ │ │ │ │ │ │ │ │ │EU│ │EU│ │EU│ │EU│ │ │ │VECS0│ │VECS1│ │ │ │ │ │ ... │ │ │ │ │ │ │ └──┘ └──┘ └──┘ └──┘ │ │ └─────┘ └─────┘ │ │ │ │ │ │ │ │ │ │ │ │ ┌──â”� ┌──â”� ┌──â”� ┌──â”� │ │ ┌─────â”� ┌─────â”� │ │ │ │ │ │ │ │ │ │ │ │ │EU│ │EU│ │EU│ │EU│ │ │ │CCS0 │ │CCS1 │ │ │ │ │ │ │ │ │ │ │ │ │ └──┘ └──┘ └──┘ └──┘ │ │ └─────┘ └─────┘ │ │ │ │ │ │ │ │ │ │ │ └─────────DSS─────────┘ │ ┌─────â”� ┌─────â”� │ │ │ │ │ │ │ │ │ │ │ │ │CCS2 │ │CCS3 │ │ │ │ │ │ │ │ │ │ │ │ ┌─────â”� ┌─────â”� ┌─────â”� │ └─────┘ └─────┘ │ │ │ │ │ │ │ │ │ │ │ │ ... │ │ ... │ │ ... │ │ │ │ │ │ │ │ │ │ │ │ │ └─DSS─┘ └─DSS─┘ └─DSS─┘ └─────Engines─────┘ │ │ │ │ │ │ │ │ │ └───────────────────────────GT0────────────────┘ │ │ └─GT2─┘ │ │ │ └────────────────────────────Tile0─────────────────┘ └─ Tile1──┘ │ └─────────────────────────────Device0───────┬──────────────────────┘ │ ───────────────────────┴────────── PCI bus”• h]”hXØ┌──────────────────────────────────────────────────────────────────â”� │ ┌──────────────────────────────────────────────────â”� ┌─────────â”� │ │ │ ┌───────────────────────â”� ┌─────â”� │ │ ┌─────â”� │ │ │ │ │ VRAM0 ├───┤ ... │ │ │ │VRAM1│ │ │ │ │ └───────────┬───────────┘ └─GT1─┘ │ │ └──┬──┘ │ │ │ │ ┌──────────────────┴───────────────────────────â”� │ │ ┌──┴──â”� │ │ │ │ │ ┌─────────────────────â”� ┌─────────────────â”� │ │ │ │ │ │ │ │ │ │ │ ┌──â”� ┌──â”� ┌──â”� ┌──â”� │ │ ┌─────â”� ┌─────â”� │ │ │ │ │ │ │ │ │ │ │ │ │EU│ │EU│ │EU│ │EU│ │ │ │RCS0 │ │BCS0 │ │ │ │ │ │ │ │ │ │ │ │ │ └──┘ └──┘ └──┘ └──┘ │ │ └─────┘ └─────┘ │ │ │ │ │ │ │ │ │ │ │ │ ┌──â”� ┌──â”� ┌──â”� ┌──â”� │ │ ┌─────â”� ┌─────â”� │ │ │ │ │ │ │ │ │ │ │ │ │EU│ │EU│ │EU│ │EU│ │ │ │VCS0 │ │VCS1 │ │ │ │ │ │ │ │ │ │ │ │ │ └──┘ └──┘ └──┘ └──┘ │ │ └─────┘ └─────┘ │ │ │ │ │ │ │ │ │ │ │ │ ┌──â”� ┌──â”� ┌──â”� ┌──â”� │ │ ┌─────â”� ┌─────â”� │ │ │ │ │ │ │ │ │ │ │ │ │EU│ │EU│ │EU│ │EU│ │ │ │VECS0│ │VECS1│ │ │ │ │ │ ... │ │ │ │ │ │ │ └──┘ └──┘ └──┘ └──┘ │ │ └─────┘ └─────┘ │ │ │ │ │ │ │ │ │ │ │ │ ┌──â”� ┌──â”� ┌──â”� ┌──â”� │ │ ┌─────â”� ┌─────â”� │ │ │ │ │ │ │ │ │ │ │ │ │EU│ │EU│ │EU│ │EU│ │ │ │CCS0 │ │CCS1 │ │ │ │ │ │ │ │ │ │ │ │ │ └──┘ └──┘ └──┘ └──┘ │ │ └─────┘ └─────┘ │ │ │ │ │ │ │ │ │ │ │ └─────────DSS─────────┘ │ ┌─────â”� ┌─────â”� │ │ │ │ │ │ │ │ │ │ │ │ │CCS2 │ │CCS3 │ │ │ │ │ │ │ │ │ │ │ │ ┌─────â”� ┌─────â”� ┌─────â”� │ └─────┘ └─────┘ │ │ │ │ │ │ │ │ │ │ │ │ ... │ │ ... │ │ ... │ │ │ │ │ │ │ │ │ │ │ │ │ └─DSS─┘ └─DSS─┘ └─DSS─┘ └─────Engines─────┘ │ │ │ │ │ │ │ │ │ └───────────────────────────GT0────────────────┘ │ │ └─GT2─┘ │ │ │ └────────────────────────────Tile0─────────────────┘ └─ Tile1──┘ │ └─────────────────────────────Device0───────┬──────────────────────┘ │ ───────────────────────┴────────── PCI bus”…”�”}”hjs¸sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Khj-¸h²hubj{)�”}”(hŒ.. _Xe uAPI Overview:”h]”h}”(h]”h ]”h"]”h$]”h&]”hÊŒxe-uapi-overview”uh1jzh´K)hj-¸h²hh³Nubhì)�”}”(hŒ**Xe uAPI Overview**”h]”jŒ)�”}”(hj�¸h]”hŒXe uAPI Overview”…”�”}”(hj‘¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj�¸ubah}”(h]”jŒ¸ah ]”h"]”Œxe uapi overview”ah$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´K@hj-¸h²hj¢}”j¢¸j‚¸sj¤}”jŒ¸j‚¸subhì)�”}”(hŒªThis section aims to describe the Xe's IOCTL entries, its structs, and other Xe related uAPI such as uevents and PMU (Platform Monitoring Unit) related entries and usage.”h]”hŒ¬This section aims to describe the Xe’s IOCTL entries, its structs, and other Xe related uAPI such as uevents and PMU (Platform Monitoring Unit) related entries and usage.”…”�”}”(hj¨¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´KAhj-¸h²hubj§)�”}”(hhh]”j¬)�”}”(hX—List of supported IOCTLs: - :c:type:`DRM_IOCTL_XE_DEVICE_QUERY` - :c:type:`DRM_IOCTL_XE_GEM_CREATE` - :c:type:`DRM_IOCTL_XE_GEM_MMAP_OFFSET` - :c:type:`DRM_IOCTL_XE_VM_CREATE` - :c:type:`DRM_IOCTL_XE_VM_DESTROY` - :c:type:`DRM_IOCTL_XE_VM_BIND` - :c:type:`DRM_IOCTL_XE_EXEC_QUEUE_CREATE` - :c:type:`DRM_IOCTL_XE_EXEC_QUEUE_DESTROY` - :c:type:`DRM_IOCTL_XE_EXEC_QUEUE_GET_PROPERTY` - :c:type:`DRM_IOCTL_XE_EXEC` - :c:type:`DRM_IOCTL_XE_WAIT_USER_FENCE` - :c:type:`DRM_IOCTL_XE_OBSERVATION` - :c:type:`DRM_IOCTL_XE_MADVISE` - :c:type:`DRM_IOCTL_XE_VM_QUERY_MEM_RANGE_ATTRS` - :c:type:`DRM_IOCTL_XE_EXEC_QUEUE_SET_PROPERTY` - :c:type:`DRM_IOCTL_XE_VM_GET_PROPERTY` ”h]”(j²)�”}”(hŒList of supported IOCTLs:”h]”hŒList of supported IOCTLs:”…”�”}”(hj¾¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´KVhjº¸ubjÃ)�”}”(hhh]”hâ)�”}”(hhh]”(hç)�”}”(hŒ#:c:type:`DRM_IOCTL_XE_DEVICE_QUERY`”h]”hì)�”}”(hjÕ¸h]”h)�”}”(hjÕ¸h]”jC)�”}”(hjÕ¸h]”hŒDRM_IOCTL_XE_DEVICE_QUERY”…”�”}”(hjݸh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjÚ¸ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒDRM_IOCTL_XE_DEVICE_QUERY”uh1hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´KFhj׸ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jø¸h´KFhjÓ¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjиubhç)�”}”(hŒ!:c:type:`DRM_IOCTL_XE_GEM_CREATE`”h]”hì)�”}”(hj¹h]”h)�”}”(hj¹h]”jC)�”}”(hj¹h]”hŒDRM_IOCTL_XE_GEM_CREATE”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj ¹ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒDRM_IOCTL_XE_GEM_CREATE”uh1hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´KGhj ¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j*¹h´KGhj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjиubhç)�”}”(hŒ&:c:type:`DRM_IOCTL_XE_GEM_MMAP_OFFSET`”h]”hì)�”}”(hj9¹h]”h)�”}”(hj9¹h]”jC)�”}”(hj9¹h]”hŒDRM_IOCTL_XE_GEM_MMAP_OFFSET”…”�”}”(hjA¹h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj>¹ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒDRM_IOCTL_XE_GEM_MMAP_OFFSET”uh1hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´KHhj;¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j\¹h´KHhj7¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjиubhç)�”}”(hŒ :c:type:`DRM_IOCTL_XE_VM_CREATE`”h]”hì)�”}”(hjk¹h]”h)�”}”(hjk¹h]”jC)�”}”(hjk¹h]”hŒDRM_IOCTL_XE_VM_CREATE”…”�”}”(hjs¹h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjp¹ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒDRM_IOCTL_XE_VM_CREATE”uh1hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´KIhjm¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j޹h´KIhji¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjиubhç)�”}”(hŒ!:c:type:`DRM_IOCTL_XE_VM_DESTROY`”h]”hì)�”}”(hj�¹h]”h)�”}”(hj�¹h]”jC)�”}”(hj�¹h]”hŒDRM_IOCTL_XE_VM_DESTROY”…”�”}”(hj¥¹h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj¢¹ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒDRM_IOCTL_XE_VM_DESTROY”uh1hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´KJhjŸ¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÀ¹h´KJhj›¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjиubhç)�”}”(hŒ:c:type:`DRM_IOCTL_XE_VM_BIND`”h]”hì)�”}”(hjϹh]”h)�”}”(hjϹh]”jC)�”}”(hjϹh]”hŒDRM_IOCTL_XE_VM_BIND”…”�”}”(hj×¹h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjÔ¹ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒDRM_IOCTL_XE_VM_BIND”uh1hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´KKhjѹubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jò¹h´KKhj͹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjиubhç)�”}”(hŒ(:c:type:`DRM_IOCTL_XE_EXEC_QUEUE_CREATE`”h]”hì)�”}”(hjºh]”h)�”}”(hjºh]”jC)�”}”(hjºh]”hŒDRM_IOCTL_XE_EXEC_QUEUE_CREATE”…”�”}”(hj ºh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjºubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒDRM_IOCTL_XE_EXEC_QUEUE_CREATE”uh1hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´KLhjºubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j$ºh´KLhjÿ¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjиubhç)�”}”(hŒ):c:type:`DRM_IOCTL_XE_EXEC_QUEUE_DESTROY`”h]”hì)�”}”(hj3ºh]”h)�”}”(hj3ºh]”jC)�”}”(hj3ºh]”hŒDRM_IOCTL_XE_EXEC_QUEUE_DESTROY”…”�”}”(hj;ºh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj8ºubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒDRM_IOCTL_XE_EXEC_QUEUE_DESTROY”uh1hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´KMhj5ºubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jVºh´KMhj1ºubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjиubhç)�”}”(hŒ.:c:type:`DRM_IOCTL_XE_EXEC_QUEUE_GET_PROPERTY`”h]”hì)�”}”(hjeºh]”h)�”}”(hjeºh]”jC)�”}”(hjeºh]”hŒ$DRM_IOCTL_XE_EXEC_QUEUE_GET_PROPERTY”…”�”}”(hjmºh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjjºubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒ$DRM_IOCTL_XE_EXEC_QUEUE_GET_PROPERTY”uh1hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´KNhjgºubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jˆºh´KNhjcºubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjиubhç)�”}”(hŒ:c:type:`DRM_IOCTL_XE_EXEC`”h]”hì)�”}”(hj—ºh]”h)�”}”(hj—ºh]”jC)�”}”(hj—ºh]”hŒDRM_IOCTL_XE_EXEC”…”�”}”(hjŸºh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjœºubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒDRM_IOCTL_XE_EXEC”uh1hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´KOhj™ºubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jººh´KOhj•ºubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjиubhç)�”}”(hŒ&:c:type:`DRM_IOCTL_XE_WAIT_USER_FENCE`”h]”hì)�”}”(hjɺh]”h)�”}”(hjɺh]”jC)�”}”(hjɺh]”hŒDRM_IOCTL_XE_WAIT_USER_FENCE”…”�”}”(hjѺh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjκubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒDRM_IOCTL_XE_WAIT_USER_FENCE”uh1hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´KPhj˺ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jìºh´KPhjǺubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjиubhç)�”}”(hŒ":c:type:`DRM_IOCTL_XE_OBSERVATION`”h]”hì)�”}”(hjûºh]”h)�”}”(hjûºh]”jC)�”}”(hjûºh]”hŒDRM_IOCTL_XE_OBSERVATION”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj»ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒDRM_IOCTL_XE_OBSERVATION”uh1hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´KQhjýºubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j»h´KQhjùºubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjиubhç)�”}”(hŒ:c:type:`DRM_IOCTL_XE_MADVISE`”h]”hì)�”}”(hj-»h]”h)�”}”(hj-»h]”jC)�”}”(hj-»h]”hŒDRM_IOCTL_XE_MADVISE”…”�”}”(hj5»h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj2»ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒDRM_IOCTL_XE_MADVISE”uh1hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´KRhj/»ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jP»h´KRhj+»ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjиubhç)�”}”(hŒ/:c:type:`DRM_IOCTL_XE_VM_QUERY_MEM_RANGE_ATTRS`”h]”hì)�”}”(hj_»h]”h)�”}”(hj_»h]”jC)�”}”(hj_»h]”hŒ%DRM_IOCTL_XE_VM_QUERY_MEM_RANGE_ATTRS”…”�”}”(hjg»h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjd»ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒ%DRM_IOCTL_XE_VM_QUERY_MEM_RANGE_ATTRS”uh1hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´KShja»ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j‚»h´KShj]»ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjиubhç)�”}”(hŒ.:c:type:`DRM_IOCTL_XE_EXEC_QUEUE_SET_PROPERTY`”h]”hì)�”}”(hj‘»h]”h)�”}”(hj‘»h]”jC)�”}”(hj‘»h]”hŒ$DRM_IOCTL_XE_EXEC_QUEUE_SET_PROPERTY”…”�”}”(hj™»h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj–»ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒ$DRM_IOCTL_XE_EXEC_QUEUE_SET_PROPERTY”uh1hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´KThj“»ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j´»h´KThj�»ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjиubhç)�”}”(hŒ(:c:type:`DRM_IOCTL_XE_VM_GET_PROPERTY` ”h]”hì)�”}”(hŒ&:c:type:`DRM_IOCTL_XE_VM_GET_PROPERTY`”h]”h)�”}”(hjÇ»h]”jC)�”}”(hjÇ»h]”hŒDRM_IOCTL_XE_VM_GET_PROPERTY”…”�”}”(hjÌ»h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjÉ»ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒDRM_IOCTL_XE_VM_GET_PROPERTY”uh1hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´KUhjÅ»ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jç»h´KUhjÁ»ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjиubeh}”(h]”h ]”h"]”h$]”h&]”jÀ jÁ uh1háh³jø¸h´KFhj͸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjº¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j̸h´KVhj·¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj-¸h²hh³Nh´Nubj{)�”}”(hŒ.. _Xe IOCTL Extensions:”h]”h}”(h]”h ]”h"]”h$]”h&]”hÊŒxe-ioctl-extensions”uh1jzh´KDhj-¸h²hh³Nubhì)�”}”(hŒ**Xe IOCTL Extensions**”h]”jŒ)�”}”(hj¼h]”hŒXe IOCTL Extensions”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj¼ubah}”(h]”j¼ah ]”h"]”Œxe ioctl extensions”ah$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´KZhj-¸h²hj¢}”j,¼j ¼sj¤}”j¼j ¼subhì)�”}”(hŒoBefore detailing the IOCTLs and its structs, it is important to highlight that every IOCTL in Xe is extensible.”h]”hŒoBefore detailing the IOCTLs and its structs, it is important to highlight that every IOCTL in Xe is extensible.”…”�”}”(hj2¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´K†hj-¸h²hubhì)�”}”(hX5Many interfaces need to grow over time. In most cases we can simply extend the struct and have userspace pass in more data. Another option, as demonstrated by Vulkan's approach to providing extensions for forward and backward compatibility, is to use a list of optional structs to provide those extra details.”h]”hX7Many interfaces need to grow over time. In most cases we can simply extend the struct and have userspace pass in more data. Another option, as demonstrated by Vulkan’s approach to providing extensions for forward and backward compatibility, is to use a list of optional structs to provide those extra details.”…”�”}”(hjA¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´K‰hj-¸h²hubhì)�”}”(hXMThe key advantage to using an extension chain is that it allows us to redefine the interface more easily than an ever growing struct of increasing complexity, and for large parts of that interface to be entirely optional. The downside is more pointer chasing; chasing across the __user boundary with pointers encapsulated inside u64.”h]”hXMThe key advantage to using an extension chain is that it allows us to redefine the interface more easily than an ever growing struct of increasing complexity, and for large parts of that interface to be entirely optional. The downside is more pointer chasing; chasing across the __user boundary with pointers encapsulated inside u64.”…”�”}”(hjP¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´K�hj-¸h²hubhì)�”}”(hŒExample chaining:”h]”hŒExample chaining:”…”�”}”(hj_¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´K•hj-¸h²hubj)�”}”(hX/struct drm_xe_user_extension ext3 { .next_extension = 0, // end .name = ..., }; struct drm_xe_user_extension ext2 { .next_extension = (uintptr_t)&ext3, .name = ..., }; struct drm_xe_user_extension ext1 { .next_extension = (uintptr_t)&ext2, .name = ..., };”h]”hX/struct drm_xe_user_extension ext3 { .next_extension = 0, // end .name = ..., }; struct drm_xe_user_extension ext2 { .next_extension = (uintptr_t)&ext3, .name = ..., }; struct drm_xe_user_extension ext1 { .next_extension = (uintptr_t)&ext2, .name = ..., };”…”�”}”hjn¼sbah}”(h]”h ]”h"]”h$]”h&]”j­j®j¾‰j¿jÀjÁ}”uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´K—hj-¸h²hubhì)�”}”(hŒÈTypically the struct drm_xe_user_extension would be embedded in some uAPI struct, and in this case we would feed it the head of the chain(i.e ext1), which would then apply all of the above extensions.”h]”hŒÈTypically the struct drm_xe_user_extension would be embedded in some uAPI struct, and in this case we would feed it the head of the chain(i.e ext1), which would then apply all of the above extensions.”…”�”}”(hj~¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´K¦hj-¸h²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ drm_xe_user_extension (C struct)”Œc.drm_xe_user_extension”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_user_extension”h]”jg)�”}”(hŒstruct drm_xe_user_extension”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj¦¼h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj¢¼h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.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Œdrm_xe_user_extension”h]”j–)�”}”(hj ¼h]”hŒdrm_xe_user_extension”…”�”}”(hjƼh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj¼ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj¢¼h²hh³j³¼h´K­ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”hì)�”}”(hŒ-Base class for defining a chain of extensions”h]”hŒ-Base class for defining a chain of extensions”…”�”}”(hjè¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´K®hjå¼h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj›¼h²hh³j³¼h´K­ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj½jçj½jè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hX3**Definition**:: struct drm_xe_user_extension { __u64 next_extension; __u32 name; __u32 pad; }; **Members** ``next_extension`` Pointer to the next struct drm_xe_user_extension, or zero if the end. ``name`` Name of the extension. Note that the name here is just some integer. Also note that the name space for this is not global for the whole driver, but rather its scope/meaning is limited to the specific piece of uAPI which has embedded the struct drm_xe_user_extension. ``pad`` MBZ All undefined bits must be zero.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj ½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj½ubhŒ:”…”�”}”(hj½h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´K²hj½ubj)�”}”(hŒZstruct drm_xe_user_extension { __u64 next_extension; __u32 name; __u32 pad; };”h]”hŒZstruct drm_xe_user_extension { __u64 next_extension; __u32 name; __u32 pad; };”…”�”}”hj%½sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´K´hj½ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj6½h]”hŒMembers”…”�”}”(hj8½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj4½ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Kºhj½ubj§)�”}”(hhh]”(j¬)�”}”(hŒY``next_extension`` Pointer to the next struct drm_xe_user_extension, or zero if the end. ”h]”(j²)�”}”(hŒ``next_extension``”h]”jC)�”}”(hjU½h]”hŒnext_extension”…”�”}”(hjW½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjS½ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´K³hjO½ubjÃ)�”}”(hhh]”hì)�”}”(hŒEPointer to the next struct drm_xe_user_extension, or zero if the end.”h]”hŒEPointer to the next struct drm_xe_user_extension, or zero if the end.”…”�”}”(hjn½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jj½h´K³hjk½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjO½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jj½h´K³hjL½ubj¬)�”}”(hX``name`` Name of the extension. Note that the name here is just some integer. Also note that the name space for this is not global for the whole driver, but rather its scope/meaning is limited to the specific piece of uAPI which has embedded the struct drm_xe_user_extension. ”h]”(j²)�”}”(hŒ``name``”h]”jC)�”}”(hj޽h]”hŒname”…”�”}”(hj�½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjŒ½ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´KÀhjˆ½ubjÃ)�”}”(hhh]”(hì)�”}”(hŒName of the extension.”h]”hŒName of the extension.”…”�”}”(hj§½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Kºhj¤½ubhì)�”}”(hŒ-Note that the name here is just some integer.”h]”hŒ-Note that the name here is just some integer.”…”�”}”(hj¶½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´K¼hj¤½ubhì)�”}”(hŒÅAlso note that the name space for this is not global for the whole driver, but rather its scope/meaning is limited to the specific piece of uAPI which has embedded the struct drm_xe_user_extension.”h]”hŒÅAlso note that the name space for this is not global for the whole driver, but rather its scope/meaning is limited to the specific piece of uAPI which has embedded the struct drm_xe_user_extension.”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´K¾hj¤½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjˆ½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j£½h´KÀhjL½ubj¬)�”}”(hŒ-``pad`` MBZ All undefined bits must be zero.”h]”(j²)�”}”(hŒ``pad``”h]”jC)�”}”(hjæ½h]”hŒpad”…”�”}”(hjè½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjä½ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´KÆhjà½ubjÃ)�”}”(hhh]”(hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hjÿ½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´KÅhjü½ubhì)�”}”(hŒ All undefined bits must be zero.”h]”hŒ All undefined bits must be zero.”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´KÇhjü½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjà½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jû½h´KÆhjL½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj½ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ"drm_xe_ext_set_property (C struct)”Œc.drm_xe_ext_set_property”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_ext_set_property”h]”jg)�”}”(hŒstruct drm_xe_ext_set_property”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjO¾h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjK¾h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´KÍubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]¾h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjK¾h²hh³j\¾h´KÍubj�)�”}”(hŒdrm_xe_ext_set_property”h]”j–)�”}”(hjI¾h]”hŒdrm_xe_ext_set_property”…”�”}”(hjo¾h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjk¾ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjK¾h²hh³j\¾h´KÍubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjG¾h²hh³j\¾h´KÍubah}”(h]”jB¾ah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³j\¾h´KÍhjD¾h²hubjÄ)�”}”(hhh]”hì)�”}”(hŒGeneric set property extension”h]”hŒGeneric set property extension”…”�”}”(hj‘¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´KÌhj޾h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjD¾h²hh³j\¾h´KÍubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj©¾jçj©¾jè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hX¸**Definition**:: struct drm_xe_ext_set_property { struct drm_xe_user_extension base; __u32 property; __u32 pad; union { __u64 value; __u64 ptr; }; __u64 reserved[2]; }; **Members** ``base`` base user extension ``property`` property to set ``pad`` MBZ ``{unnamed_union}`` anonymous ``value`` property value ``ptr`` pointer to user value ``reserved`` Reserved”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjµ¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj±¾ubhŒ:”…”�”}”(hj±¾h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´KÐhj­¾ubj)�”}”(hŒ¿struct drm_xe_ext_set_property { struct drm_xe_user_extension base; __u32 property; __u32 pad; union { __u64 value; __u64 ptr; }; __u64 reserved[2]; };”h]”hŒ¿struct drm_xe_ext_set_property { struct drm_xe_user_extension base; __u32 property; __u32 pad; union { __u64 value; __u64 ptr; }; __u64 reserved[2]; };”…”�”}”hjξsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´KÒhj­¾ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjß¾h]”hŒMembers”…”�”}”(hjá¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjݾubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´KÝhj­¾ubj§)�”}”(hhh]”(j¬)�”}”(hŒ``base`` base user extension ”h]”(j²)�”}”(hŒ``base``”h]”jC)�”}”(hjþ¾h]”hŒbase”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjü¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´KÓhjø¾ubjÃ)�”}”(hhh]”hì)�”}”(hŒbase user extension”h]”hŒbase user extension”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ``property`` property to set ”h]”(j²)�”}”(hŒ ``property``”h]”jC)�”}”(hj7¿h]”hŒproperty”…”�”}”(hj9¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj5¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´KÖhj1¿ubjÃ)�”}”(hhh]”hì)�”}”(hŒproperty to set”h]”hŒproperty to set”…”�”}”(hjP¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jL¿h´KÖhjM¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj1¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jL¿h´KÖhjõ¾ubj¬)�”}”(hŒ ``pad`` MBZ ”h]”(j²)�”}”(hŒ``pad``”h]”jC)�”}”(hjp¿h]”hŒpad”…”�”}”(hjr¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjn¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´KÙhjj¿ubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hj‰¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j…¿h´KÙhj†¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjj¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j…¿h´KÙhjõ¾ubj¬)�”}”(hŒ``{unnamed_union}`` anonymous ”h]”(j²)�”}”(hŒ``{unnamed_union}``”h]”jC)�”}”(hj©¿h]”hŒ{unnamed_union}”…”�”}”(hj«¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj§¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Khj£¿ubjÃ)�”}”(hhh]”hì)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ``value`` property value ”h]”(j²)�”}”(hŒ ``value``”h]”jC)�”}”(hjâ¿h]”hŒvalue”…”�”}”(hjä¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjà¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´KÝhjÜ¿ubjÃ)�”}”(hhh]”hì)�”}”(hŒproperty value”h]”hŒproperty value”…”�”}”(hjû¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ``ptr`` pointer to user value ”h]”(j²)�”}”(hŒ``ptr``”h]”jC)�”}”(hjÀh]”hŒptr”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´KßhjÀubjÃ)�”}”(hhh]”hì)�”}”(hŒpointer to user value”h]”hŒpointer to user value”…”�”}”(hj4Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j0Àh´Kßhj1Àubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÀubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j0Àh´Kßhjõ¾ubj¬)�”}”(hŒ``reserved`` Reserved”h]”(j²)�”}”(hŒ ``reserved``”h]”jC)�”}”(hjTÀh]”hŒreserved”…”�”}”(hjVÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjRÀubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´KâhjNÀubjÃ)�”}”(hhh]”hì)�”}”(hŒReserved”h]”hŒReserved”…”�”}”(hjmÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´KãhjjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjNÀubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jiÀh´Kâhjõ¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj­¾ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hj—Àh]”hŒ Description”…”�”}”(hj™Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj•Àubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Kæhj-¸h²hubhì)�”}”(hŒ`A generic struct that allows any of the Xe's IOCTL to be extended with a set_property operation.”h]”hŒbA generic struct that allows any of the Xe’s IOCTL to be extended with a set_property operation.”…”�”}”(hj­Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´KÍhj-¸h²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ'drm_xe_engine_class_instance (C struct)”Œc.drm_xe_engine_class_instance”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_engine_class_instance”h]”jg)�”}”(hŒ#struct drm_xe_engine_class_instance”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjÕÀh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjÑÀh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.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Œdrm_xe_engine_class_instance”h]”j–)�”}”(hjÏÀh]”hŒdrm_xe_engine_class_instance”…”�”}”(hjõÀh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjñÀubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjÑÀh²hh³jâÀh´KÓubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”hì)�”}”(hŒinstance of an engine class”h]”hŒinstance of an engine class”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´KçhjÁh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÊÀh²hh³jâÀh´KÓubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj/Ájçj/Ájè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hXy**Definition**:: struct drm_xe_engine_class_instance { #define DRM_XE_ENGINE_CLASS_RENDER 0; #define DRM_XE_ENGINE_CLASS_COPY 1; #define DRM_XE_ENGINE_CLASS_VIDEO_DECODE 2; #define DRM_XE_ENGINE_CLASS_VIDEO_ENHANCE 3; #define DRM_XE_ENGINE_CLASS_COMPUTE 4; #define DRM_XE_ENGINE_CLASS_VM_BIND 5; __u16 engine_class; __u16 engine_instance; __u16 gt_id; __u16 pad; }; **Members** ``engine_class`` engine class id ``engine_instance`` engine instance id ``gt_id`` Unique ID of this GT within the PCI Device ``pad`` MBZ”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj;Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj7ÁubhŒ:”…”�”}”(hj7Áh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Këhj3Áubj)�”}”(hX­struct drm_xe_engine_class_instance { #define DRM_XE_ENGINE_CLASS_RENDER 0; #define DRM_XE_ENGINE_CLASS_COPY 1; #define DRM_XE_ENGINE_CLASS_VIDEO_DECODE 2; #define DRM_XE_ENGINE_CLASS_VIDEO_ENHANCE 3; #define DRM_XE_ENGINE_CLASS_COMPUTE 4; #define DRM_XE_ENGINE_CLASS_VM_BIND 5; __u16 engine_class; __u16 engine_instance; __u16 gt_id; __u16 pad; };”h]”hX­struct drm_xe_engine_class_instance { #define DRM_XE_ENGINE_CLASS_RENDER 0; #define DRM_XE_ENGINE_CLASS_COPY 1; #define DRM_XE_ENGINE_CLASS_VIDEO_DECODE 2; #define DRM_XE_ENGINE_CLASS_VIDEO_ENHANCE 3; #define DRM_XE_ENGINE_CLASS_COMPUTE 4; #define DRM_XE_ENGINE_CLASS_VM_BIND 5; __u16 engine_class; __u16 engine_instance; __u16 gt_id; __u16 pad; };”…”�”}”hjTÁsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Kíhj3Áubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjeÁh]”hŒMembers”…”�”}”(hjgÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjcÁubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Kúhj3Áubj§)�”}”(hhh]”(j¬)�”}”(hŒ!``engine_class`` engine class id ”h]”(j²)�”}”(hŒ``engine_class``”h]”jC)�”}”(hj„Áh]”hŒ engine_class”…”�”}”(hj†Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj‚Áubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Kÿhj~ÁubjÃ)�”}”(hhh]”hì)�”}”(hŒengine class id”h]”hŒengine class id”…”�”}”(hj�Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ'``engine_instance`` engine instance id ”h]”(j²)�”}”(hŒ``engine_instance``”h]”jC)�”}”(hj½Áh]”hŒengine_instance”…”�”}”(hj¿Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj»Áubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhj·ÁubjÃ)�”}”(hhh]”hì)�”}”(hŒengine instance id”h]”hŒengine instance id”…”�”}”(hjÖÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ5``gt_id`` Unique ID of this GT within the PCI Device ”h]”(j²)�”}”(hŒ ``gt_id``”h]”jC)�”}”(hjöÁh]”hŒgt_id”…”�”}”(hjøÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjôÁubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MhjðÁubjÃ)�”}”(hhh]”hì)�”}”(hŒ*Unique ID of this GT within the PCI Device”h]”hŒ*Unique ID of this GT within the PCI Device”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ ``pad`` MBZ”h]”(j²)�”}”(hŒ``pad``”h]”jC)�”}”(hj/Âh]”hŒpad”…”�”}”(hj1Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj-Âubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhj)ÂubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hjHÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MhjEÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj)Âubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jDÂh´Mhj{Áubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj3Áubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjrÂh]”hŒ Description”…”�”}”(hjtÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjpÂubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhj-¸h²hubhì)�”}”(hXIt is returned as part of the :c:type:`struct drm_xe_engine `, but it also is used as the input of engine selection for both :c:type:`struct drm_xe_exec_queue_create ` and :c:type:`struct drm_xe_query_engine_cycles `”h]”(hŒIt is returned as part of the ”…”�”}”(hjˆÂh²hh³Nh´Nubh)�”}”(hŒ.:c:type:`struct drm_xe_engine `”h]”jC)�”}”(hj’Âh]”hŒstruct drm_xe_engine”…”�”}”(hj”Âh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj�Âubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒ drm_xe_engine”uh1hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´KèhjˆÂubhŒ@, but it also is used as the input of engine selection for both ”…”�”}”(hjˆÂh²hh³Nh´Nubh)�”}”(hŒD:c:type:`struct drm_xe_exec_queue_create `”h]”jC)�”}”(hj¶Âh]”hŒstruct drm_xe_exec_queue_create”…”�”}”(hj¸Âh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj´Âubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒdrm_xe_exec_queue_create”uh1hh³j¯Âh´KèhjˆÂubhŒ and ”…”�”}”(hjˆÂh²hh³Nh´Nubh)�”}”(hŒH:c:type:`struct drm_xe_query_engine_cycles `”h]”jC)�”}”(hjÙÂh]”hŒ!struct drm_xe_query_engine_cycles”…”�”}”(hjÛÂh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj×Âubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒdrm_xe_query_engine_cycles”uh1hh³j¯Âh´KèhjˆÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¯Âh´Kèhj-¸h²hubj§)�”}”(hhh]”j¬)�”}”(hXiThe **engine_class** can be: - ``DRM_XE_ENGINE_CLASS_RENDER`` - ``DRM_XE_ENGINE_CLASS_COPY`` - ``DRM_XE_ENGINE_CLASS_VIDEO_DECODE`` - ``DRM_XE_ENGINE_CLASS_VIDEO_ENHANCE`` - ``DRM_XE_ENGINE_CLASS_COMPUTE`` - ``DRM_XE_ENGINE_CLASS_VM_BIND`` - Kernel only classes (not actual hardware engine class). Used for creating ordered queues of VM bind operations. ”h]”(j²)�”}”(hŒThe **engine_class** can be:”h]”(hŒThe ”…”�”}”(hjÃh²hh³Nh´NubjŒ)�”}”(hŒ**engine_class**”h]”hŒ engine_class”…”�”}”(hj Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÃubhŒ can be:”…”�”}”(hjÃh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´K÷hjÿÂubjÃ)�”}”(hhh]”hâ)�”}”(hhh]”(hç)�”}”(hŒ``DRM_XE_ENGINE_CLASS_RENDER``”h]”hì)�”}”(hj,Ãh]”jC)�”}”(hj,Ãh]”hŒDRM_XE_ENGINE_CLASS_RENDER”…”�”}”(hj1Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj.Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Kíhj*Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj'Ãubhç)�”}”(hŒ``DRM_XE_ENGINE_CLASS_COPY``”h]”hì)�”}”(hjMÃh]”jC)�”}”(hjMÃh]”hŒDRM_XE_ENGINE_CLASS_COPY”…”�”}”(hjRÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjOÃubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´KîhjKÃubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj'Ãubhç)�”}”(hŒ$``DRM_XE_ENGINE_CLASS_VIDEO_DECODE``”h]”hì)�”}”(hjnÃh]”jC)�”}”(hjnÃh]”hŒ DRM_XE_ENGINE_CLASS_VIDEO_DECODE”…”�”}”(hjsÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjpÃubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´KïhjlÃubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj'Ãubhç)�”}”(hŒ%``DRM_XE_ENGINE_CLASS_VIDEO_ENHANCE``”h]”hì)�”}”(hj�Ãh]”jC)�”}”(hj�Ãh]”hŒ!DRM_XE_ENGINE_CLASS_VIDEO_ENHANCE”…”�”}”(hj”Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj‘Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Kðhj�Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj'Ãubhç)�”}”(hŒ``DRM_XE_ENGINE_CLASS_COMPUTE``”h]”hì)�”}”(hj°Ãh]”jC)�”}”(hj°Ãh]”hŒDRM_XE_ENGINE_CLASS_COMPUTE”…”�”}”(hjµÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj²Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Kñhj®Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj'Ãubhç)�”}”(hŒ•``DRM_XE_ENGINE_CLASS_VM_BIND`` - Kernel only classes (not actual hardware engine class). Used for creating ordered queues of VM bind operations. ”h]”hì)�”}”(hŒ‘``DRM_XE_ENGINE_CLASS_VM_BIND`` - Kernel only classes (not actual hardware engine class). Used for creating ordered queues of VM bind operations.”h]”(jC)�”}”(hŒ``DRM_XE_ENGINE_CLASS_VM_BIND``”h]”hŒDRM_XE_ENGINE_CLASS_VM_BIND”…”�”}”(hj×Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÓÃubhŒr - Kernel only classes (not actual hardware engine class). Used for creating ordered queues of VM bind operations.”…”�”}”(hjÓÃh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´KòhjÏÃubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj'Ãubeh}”(h]”h ]”h"]”h$]”h&]”jÀ jÁ uh1háh³jDÃh´Kíhj$Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÿÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j#Ãh´K÷hjüÂubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj-¸h²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_xe_engine (C struct)”Œc.drm_xe_engine”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒ drm_xe_engine”h]”jg)�”}”(hŒstruct drm_xe_engine”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj'Äh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj#Äh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Kùubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5Äh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hj#Äh²hh³j4Äh´Kùubj�)�”}”(hŒ drm_xe_engine”h]”j–)�”}”(hj!Äh]”hŒ drm_xe_engine”…”�”}”(hjGÄh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjCÄubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj#Äh²hh³j4Äh´Kùubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjÄh²hh³j4Äh´Kùubah}”(h]”jÄah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³j4Äh´KùhjÄh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒdescribe hardware engine”h]”hŒdescribe hardware engine”…”�”}”(hjiÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M hjfÄh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÄh²hh³j4Äh´Kùubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj�Äjçj�Äjè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hX**Definition**:: struct drm_xe_engine { struct drm_xe_engine_class_instance instance; __u64 reserved[3]; }; **Members** ``instance`` The :c:type:`struct drm_xe_engine_class_instance ` ``reserved`` Reserved”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj�Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj‰ÄubhŒ:”…”�”}”(hj‰Äh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M hj…Äubj)�”}”(hŒbstruct drm_xe_engine { struct drm_xe_engine_class_instance instance; __u64 reserved[3]; };”h]”hŒbstruct drm_xe_engine { struct drm_xe_engine_class_instance instance; __u64 reserved[3]; };”…”�”}”hj¦Äsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhj…Äubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj·Äh]”hŒMembers”…”�”}”(hj¹Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjµÄubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhj…Äubj§)�”}”(hhh]”(j¬)�”}”(hŒ^``instance`` The :c:type:`struct drm_xe_engine_class_instance ` ”h]”(j²)�”}”(hŒ ``instance``”h]”jC)�”}”(hjÖÄh]”hŒinstance”…”�”}”(hjØÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÔÄubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M hjÐÄubjÃ)�”}”(hhh]”hì)�”}”(hŒPThe :c:type:`struct drm_xe_engine_class_instance `”h]”(hŒThe ”…”�”}”(hjïÄh²hh³Nh´Nubh)�”}”(hŒL:c:type:`struct drm_xe_engine_class_instance `”h]”jC)�”}”(hjùÄh]”hŒ#struct drm_xe_engine_class_instance”…”�”}”(hjûÄh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj÷Äubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒdrm_xe_engine_class_instance”uh1hh³jëÄh´M hjïÄubeh}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ``reserved`` Reserved”h]”(j²)�”}”(hŒ ``reserved``”h]”jC)�”}”(hj.Åh]”hŒreserved”…”�”}”(hj0Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj,Åubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhj(ÅubjÃ)�”}”(hhh]”hì)�”}”(hŒReserved”h]”hŒReserved”…”�”}”(hjGÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MhjDÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj(Åubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jCÅh´MhjÍÄubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj…Äubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_xe_query_engines (C struct)”Œc.drm_xe_query_engines”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_query_engines”h]”jg)�”}”(hŒstruct drm_xe_query_engines”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjˆÅh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj„Åh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–Åh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hj„Åh²hh³j•Åh´Mubj�)�”}”(hŒdrm_xe_query_engines”h]”j–)�”}”(hj‚Åh]”hŒdrm_xe_query_engines”…”�”}”(hj¨Åh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj¤Åubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj„Åh²hh³j•Åh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”hì)�”}”(hŒdescribe engines”h]”hŒdescribe engines”…”�”}”(hjÊÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MhjÇÅh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj}Åh²hh³j•Åh´Mubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjâÅjçjâÅjè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hX**Definition**:: struct drm_xe_query_engines { __u32 num_engines; __u32 pad; struct drm_xe_engine engines[]; }; **Members** ``num_engines`` number of engines returned in **engines** ``pad`` MBZ ``engines`` The returned engines for this device”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjîÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjêÅubhŒ:”…”�”}”(hjêÅh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MhjæÅubj)�”}”(hŒjstruct drm_xe_query_engines { __u32 num_engines; __u32 pad; struct drm_xe_engine engines[]; };”h]”hŒjstruct drm_xe_query_engines { __u32 num_engines; __u32 pad; struct drm_xe_engine engines[]; };”…”�”}”hjÆsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MhjæÅubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjÆh]”hŒMembers”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M hjæÅubj§)�”}”(hhh]”(j¬)�”}”(hŒ:``num_engines`` number of engines returned in **engines** ”h]”(j²)�”}”(hŒ``num_engines``”h]”jC)�”}”(hj7Æh]”hŒ num_engines”…”�”}”(hj9Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj5Æubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhj1ÆubjÃ)�”}”(hhh]”hì)�”}”(hŒ)number of engines returned in **engines**”h]”(hŒnumber of engines returned in ”…”�”}”(hjPÆh²hh³Nh´NubjŒ)�”}”(hŒ **engines**”h]”hŒengines”…”�”}”(hjXÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjPÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jLÆh´MhjMÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj1Æubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jLÆh´Mhj.Æubj¬)�”}”(hŒ ``pad`` MBZ ”h]”(j²)�”}”(hŒ``pad``”h]”jC)�”}”(hj~Æh]”hŒpad”…”�”}”(hj€Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj|Æubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MhjxÆubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hj—Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j“Æh´Mhj”Æubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjxÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j“Æh´Mhj.Æubj¬)�”}”(hŒ0``engines`` The returned engines for this device”h]”(j²)�”}”(hŒ ``engines``”h]”jC)�”}”(hj·Æh]”hŒengines”…”�”}”(hj¹Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjµÆubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhj±ÆubjÃ)�”}”(hhh]”hì)�”}”(hŒ$The returned engines for this device”h]”hŒ$The returned engines for this device”…”�”}”(hjÐÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M hjÍÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj±Æubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÌÆh´Mhj.Æubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjæÅubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjúÆh]”hŒ Description”…”�”}”(hjüÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjøÆubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M#hj-¸h²hubhì)�”}”(hŒõIf a query is made with a :c:type:`struct drm_xe_device_query ` where .query is equal to ``DRM_XE_DEVICE_QUERY_ENGINES``, then the reply uses an array of :c:type:`struct drm_xe_query_engines ` in .data.”h]”(hŒIf a query is made with a ”…”�”}”(hjÇh²hh³Nh´Nubh)�”}”(hŒ::c:type:`struct drm_xe_device_query `”h]”jC)�”}”(hjÇh]”hŒstruct drm_xe_device_query”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjÇubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒdrm_xe_device_query”uh1hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MhjÇubhŒ where .query is equal to ”…”�”}”(hjÇh²hh³Nh´NubjC)�”}”(hŒ``DRM_XE_DEVICE_QUERY_ENGINES``”h]”hŒDRM_XE_DEVICE_QUERY_ENGINES”…”�”}”(hj<Çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÇubhŒ", then the reply uses an array of ”…”�”}”(hjÇh²hh³Nh´Nubh)�”}”(hŒ<:c:type:`struct drm_xe_query_engines `”h]”jC)�”}”(hjPÇh]”hŒstruct drm_xe_query_engines”…”�”}”(hjRÇh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjNÇubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒdrm_xe_query_engines”uh1hh³j7Çh´MhjÇubhŒ in .data.”…”�”}”(hjÇh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j7Çh´Mhj-¸h²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_xe_memory_class (C enum)”Œc.drm_xe_memory_class”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_memory_class”h]”jg)�”}”(hŒenum drm_xe_memory_class”h]”(jm)�”}”(hjîh]”hŒenum”…”�”}”(hj�Çh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjŒÇh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžÇh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjŒÇh²hh³j�Çh´Mubj�)�”}”(hŒdrm_xe_memory_class”h]”j–)�”}”(hjŠÇh]”hŒdrm_xe_memory_class”…”�”}”(hj°Çh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj¬Çubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjŒÇh²hh³j�Çh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”hì)�”}”(hŒSupported memory classes.”h]”hŒSupported memory classes.”…”�”}”(hjÒÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M$hjÏÇh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj…Çh²hh³j�Çh´Mubeh}”(h]”h ]”(jàŒenum”eh"]”h$]”h&]”jåjàjæjêÇjçjêÇjè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hŒû**Constants** ``DRM_XE_MEM_REGION_CLASS_SYSMEM`` Represents system memory. ``DRM_XE_MEM_REGION_CLASS_VRAM`` On discrete platforms, this represents the memory that is local to the device, which we call VRAM. Not valid on integrated platforms.”h]”(hì)�”}”(hŒ **Constants**”h]”jŒ)�”}”(hjôÇh]”hŒ Constants”…”�”}”(hjöÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjòÇubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M(hjîÇubj§)�”}”(hhh]”(j¬)�”}”(hŒ=``DRM_XE_MEM_REGION_CLASS_SYSMEM`` Represents system memory. ”h]”(j²)�”}”(hŒ"``DRM_XE_MEM_REGION_CLASS_SYSMEM``”h]”jC)�”}”(hjÈh]”hŒDRM_XE_MEM_REGION_CLASS_SYSMEM”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÈubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M+hj ÈubjÃ)�”}”(hhh]”hì)�”}”(hŒRepresents system memory.”h]”hŒRepresents system memory.”…”�”}”(hj,Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ¦``DRM_XE_MEM_REGION_CLASS_VRAM`` On discrete platforms, this represents the memory that is local to the device, which we call VRAM. Not valid on integrated platforms.”h]”(j²)�”}”(hŒ ``DRM_XE_MEM_REGION_CLASS_VRAM``”h]”jC)�”}”(hjLÈh]”hŒDRM_XE_MEM_REGION_CLASS_VRAM”…”�”}”(hjNÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjJÈubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M/hjFÈubjÃ)�”}”(hhh]”hì)�”}”(hŒ…On discrete platforms, this represents the memory that is local to the device, which we call VRAM. Not valid on integrated platforms.”h]”hŒ…On discrete platforms, this represents the memory that is local to the device, which we call VRAM. Not valid on integrated platforms.”…”�”}”(hjeÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M.hjbÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjFÈubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jaÈh´M/hj Èubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjîÇubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_xe_mem_region (C struct)”Œc.drm_xe_mem_region”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_mem_region”h]”jg)�”}”(hŒstruct drm_xe_mem_region”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj¦Èh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj¢Èh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M5ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´Èh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hj¢Èh²hh³j³Èh´M5ubj�)�”}”(hŒdrm_xe_mem_region”h]”j–)�”}”(hj Èh]”hŒdrm_xe_mem_region”…”�”}”(hjÆÈh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjÂÈubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj¢Èh²hh³j³Èh´M5ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjžÈh²hh³j³Èh´M5ubah}”(h]”j™Èah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³j³Èh´M5hj›Èh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ-Describes some region as known to the driver.”h]”hŒ-Describes some region as known to the driver.”…”�”}”(hjèÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M2hjåÈh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj›Èh²hh³j³Èh´M5ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjÉjçjÉjè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hXß**Definition**:: struct drm_xe_mem_region { __u16 mem_class; __u16 instance; __u32 min_page_size; __u64 total_size; __u64 used; __u64 cpu_visible_size; __u64 cpu_visible_used; __u64 reserved[6]; }; **Members** ``mem_class`` The memory class describing this region. See enum drm_xe_memory_class for supported values. ``instance`` The unique ID for this region, which serves as the index in the placement bitmask used as argument for :c:type:`DRM_IOCTL_XE_GEM_CREATE` ``min_page_size`` Min page-size in bytes for this region. When the kernel allocates memory for this region, the underlying pages will be at least **min_page_size** in size. Buffer objects with an allowable placement in this region must be created with a size aligned to this value. GPU virtual address mappings of (parts of) buffer objects that may be placed in this region must also have their GPU virtual address and range aligned to this value. Affected IOCTLS will return ``-EINVAL`` if alignment restrictions are not met. ``total_size`` The usable size in bytes for this region. ``used`` Estimate of the memory used in bytes for this region. ``cpu_visible_size`` How much of this region can be CPU accessed, in bytes. This will always be <= **total_size**, and the remainder (if any) will not be CPU accessible. If the CPU accessible part is smaller than **total_size** then this is referred to as a small BAR system. On systems without small BAR (full BAR), the **cpu_visible_size** will always equal the **total_size**, since all of it will be CPU accessible. Note this is only tracked for DRM_XE_MEM_REGION_CLASS_VRAM regions (for other types the value here will always equal zero). ``cpu_visible_used`` Estimate of CPU visible memory used, in bytes. Note this is only currently tracked for DRM_XE_MEM_REGION_CLASS_VRAM regions (for other types the value here will always be zero). ``reserved`` Reserved”•h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÉubhŒ:”…”�”}”(hjÉh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M6hjÉubj)�”}”(hŒÔstruct drm_xe_mem_region { __u16 mem_class; __u16 instance; __u32 min_page_size; __u64 total_size; __u64 used; __u64 cpu_visible_size; __u64 cpu_visible_used; __u64 reserved[6]; };”h]”hŒÔstruct drm_xe_mem_region { __u16 mem_class; __u16 instance; __u32 min_page_size; __u64 total_size; __u64 used; __u64 cpu_visible_size; __u64 cpu_visible_used; __u64 reserved[6]; };”…”�”}”hj%Ésbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M8hjÉubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj6Éh]”hŒMembers”…”�”}”(hj8Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj4Éubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MChjÉubj§)�”}”(hhh]”(j¬)�”}”(hŒk``mem_class`` The memory class describing this region. See enum drm_xe_memory_class for supported values. ”h]”(j²)�”}”(hŒ ``mem_class``”h]”jC)�”}”(hjUÉh]”hŒ mem_class”…”�”}”(hjWÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjSÉubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M:hjOÉubjÃ)�”}”(hhh]”(hì)�”}”(hŒ(The memory class describing this region.”h]”hŒ(The memory class describing this region.”…”�”}”(hjnÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M8hjkÉubhì)�”}”(hŒ2See enum drm_xe_memory_class for supported values.”h]”hŒ2See enum drm_xe_memory_class for supported values.”…”�”}”(hj}Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jjÉh´M:hjkÉubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjOÉubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jjÉh´M:hjLÉubj¬)�”}”(hŒ–``instance`` The unique ID for this region, which serves as the index in the placement bitmask used as argument for :c:type:`DRM_IOCTL_XE_GEM_CREATE` ”h]”(j²)�”}”(hŒ ``instance``”h]”jC)�”}”(hj�Éh]”hŒinstance”…”�”}”(hjŸÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj›Éubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M@hj—ÉubjÃ)�”}”(hhh]”hì)�”}”(hŒˆThe unique ID for this region, which serves as the index in the placement bitmask used as argument for :c:type:`DRM_IOCTL_XE_GEM_CREATE`”h]”(hŒgThe unique ID for this region, which serves as the index in the placement bitmask used as argument for ”…”�”}”(hj¶Éh²hh³Nh´Nubh)�”}”(hŒ!:c:type:`DRM_IOCTL_XE_GEM_CREATE`”h]”jC)�”}”(hjÀÉh]”hŒDRM_IOCTL_XE_GEM_CREATE”…”�”}”(hjÂÉh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj¾Éubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒDRM_IOCTL_XE_GEM_CREATE”uh1hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M>hj¶Éubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÝÉh´M>hj³Éubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj—Éubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j²Éh´M@hjLÉubj¬)�”}”(hX``min_page_size`` Min page-size in bytes for this region. When the kernel allocates memory for this region, the underlying pages will be at least **min_page_size** in size. Buffer objects with an allowable placement in this region must be created with a size aligned to this value. GPU virtual address mappings of (parts of) buffer objects that may be placed in this region must also have their GPU virtual address and range aligned to this value. Affected IOCTLS will return ``-EINVAL`` if alignment restrictions are not met. ”h]”(j²)�”}”(hŒ``min_page_size``”h]”jC)�”}”(hjöÉh]”hŒ min_page_size”…”�”}”(hjøÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjôÉubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MNhjðÉubjÃ)�”}”(hhh]”(hì)�”}”(hŒ'Min page-size in bytes for this region.”h]”hŒ'Min page-size in bytes for this region.”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MDhj Êubhì)�”}”(hXÔWhen the kernel allocates memory for this region, the underlying pages will be at least **min_page_size** in size. Buffer objects with an allowable placement in this region must be created with a size aligned to this value. GPU virtual address mappings of (parts of) buffer objects that may be placed in this region must also have their GPU virtual address and range aligned to this value. Affected IOCTLS will return ``-EINVAL`` if alignment restrictions are not met.”h]”(hŒXWhen the kernel allocates memory for this region, the underlying pages will be at least ”…”�”}”(hjÊh²hh³Nh´NubjŒ)�”}”(hŒ**min_page_size**”h]”hŒ min_page_size”…”�”}”(hj&Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÊubhX9 in size. Buffer objects with an allowable placement in this region must be created with a size aligned to this value. GPU virtual address mappings of (parts of) buffer objects that may be placed in this region must also have their GPU virtual address and range aligned to this value. Affected IOCTLS will return ”…”�”}”(hjÊh²hh³Nh´NubjC)�”}”(hŒ ``-EINVAL``”h]”hŒ-EINVAL”…”�”}”(hj8Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÊubhŒ' if alignment restrictions are not met.”…”�”}”(hjÊh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MFhj Êubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjðÉubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j Êh´MNhjLÉubj¬)�”}”(hŒ9``total_size`` The usable size in bytes for this region. ”h]”(j²)�”}”(hŒ``total_size``”h]”jC)�”}”(hjcÊh]”hŒ total_size”…”�”}”(hjeÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjaÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MRhj]ÊubjÃ)�”}”(hhh]”hì)�”}”(hŒ)The usable size in bytes for this region.”h]”hŒ)The usable size in bytes for this region.”…”�”}”(hj|Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jxÊh´MRhjyÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj]Êubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jxÊh´MRhjLÉubj¬)�”}”(hŒ?``used`` Estimate of the memory used in bytes for this region. ”h]”(j²)�”}”(hŒ``used``”h]”jC)�”}”(hjœÊh]”hŒused”…”�”}”(hjžÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjšÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MVhj–ÊubjÃ)�”}”(hhh]”hì)�”}”(hŒ5Estimate of the memory used in bytes for this region.”h]”hŒ5Estimate of the memory used in bytes for this region.”…”�”}”(hjµÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j±Êh´MVhj²Êubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj–Êubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j±Êh´MVhjLÉubj¬)�”}”(hX#``cpu_visible_size`` How much of this region can be CPU accessed, in bytes. This will always be <= **total_size**, and the remainder (if any) will not be CPU accessible. If the CPU accessible part is smaller than **total_size** then this is referred to as a small BAR system. On systems without small BAR (full BAR), the **cpu_visible_size** will always equal the **total_size**, since all of it will be CPU accessible. Note this is only tracked for DRM_XE_MEM_REGION_CLASS_VRAM regions (for other types the value here will always equal zero). ”h]”(j²)�”}”(hŒ``cpu_visible_size``”h]”jC)�”}”(hjÕÊh]”hŒcpu_visible_size”…”�”}”(hj×Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÓÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MhhjÏÊubjÃ)�”}”(hhh]”(hì)�”}”(hŒ6How much of this region can be CPU accessed, in bytes.”h]”hŒ6How much of this region can be CPU accessed, in bytes.”…”�”}”(hjîÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MZhjëÊubhì)�”}”(hŒÇThis will always be <= **total_size**, and the remainder (if any) will not be CPU accessible. If the CPU accessible part is smaller than **total_size** then this is referred to as a small BAR system.”h]”(hŒThis will always be <= ”…”�”}”(hjýÊh²hh³Nh´NubjŒ)�”}”(hŒ**total_size**”h]”hŒ total_size”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjýÊubhŒd, and the remainder (if any) will not be CPU accessible. If the CPU accessible part is smaller than ”…”�”}”(hjýÊh²hh³Nh´NubjŒ)�”}”(hŒ**total_size**”h]”hŒ total_size”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjýÊubhŒ0 then this is referred to as a small BAR system.”…”�”}”(hjýÊh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M]hjëÊubhì)�”}”(hŒ�On systems without small BAR (full BAR), the **cpu_visible_size** will always equal the **total_size**, since all of it will be CPU accessible.”h]”(hŒ-On systems without small BAR (full BAR), the ”…”�”}”(hj0Ëh²hh³Nh´NubjŒ)�”}”(hŒ**cpu_visible_size**”h]”hŒcpu_visible_size”…”�”}”(hj8Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj0ËubhŒ will always equal the ”…”�”}”(hj0Ëh²hh³Nh´NubjŒ)�”}”(hŒ**total_size**”h]”hŒ total_size”…”�”}”(hjJËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj0ËubhŒ), since all of it will be CPU accessible.”…”�”}”(hj0Ëh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MbhjëÊubhì)�”}”(hŒ{Note this is only tracked for DRM_XE_MEM_REGION_CLASS_VRAM regions (for other types the value here will always equal zero).”h]”hŒ{Note this is only tracked for DRM_XE_MEM_REGION_CLASS_VRAM regions (for other types the value here will always equal zero).”…”�”}”(hjcËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MfhjëÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÏÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jêÊh´MhhjLÉubj¬)�”}”(hŒÈ``cpu_visible_used`` Estimate of CPU visible memory used, in bytes. Note this is only currently tracked for DRM_XE_MEM_REGION_CLASS_VRAM regions (for other types the value here will always be zero). ”h]”(j²)�”}”(hŒ``cpu_visible_used``”h]”jC)�”}”(hj„Ëh]”hŒcpu_visible_used”…”�”}”(hj†Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj‚Ëubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mqhj~ËubjÃ)�”}”(hhh]”(hì)�”}”(hŒ.Estimate of CPU visible memory used, in bytes.”h]”hŒ.Estimate of CPU visible memory used, in bytes.”…”�”}”(hj�Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MlhjšËubhì)�”}”(hŒ‚Note this is only currently tracked for DRM_XE_MEM_REGION_CLASS_VRAM regions (for other types the value here will always be zero).”h]”hŒ‚Note this is only currently tracked for DRM_XE_MEM_REGION_CLASS_VRAM regions (for other types the value here will always be zero).”…”�”}”(hj¬Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MohjšËubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj~Ëubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j™Ëh´MqhjLÉubj¬)�”}”(hŒ``reserved`` Reserved”h]”(j²)�”}”(hŒ ``reserved``”h]”jC)�”}”(hjÍËh]”hŒreserved”…”�”}”(hjÏËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjËËubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MshjÇËubjÃ)�”}”(hhh]”hì)�”}”(hŒReserved”h]”hŒReserved”…”�”}”(hjæËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MthjãËubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÇËubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jâËh´MshjLÉubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjÉubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ#drm_xe_query_mem_regions (C struct)”Œc.drm_xe_query_mem_regions”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_query_mem_regions”h]”jg)�”}”(hŒstruct drm_xe_query_mem_regions”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj'Ìh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj#Ìh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mzubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5Ìh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hj#Ìh²hh³j4Ìh´Mzubj�)�”}”(hŒdrm_xe_query_mem_regions”h]”j–)�”}”(hj!Ìh]”hŒdrm_xe_query_mem_regions”…”�”}”(hjGÌh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjCÌubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj#Ìh²hh³j4Ìh´Mzubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjÌh²hh³j4Ìh´Mzubah}”(h]”jÌah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³j4Ìh´MzhjÌh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒdescribe memory regions”h]”hŒdescribe memory regions”…”�”}”(hjiÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MxhjfÌh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÌh²hh³j4Ìh´Mzubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj�Ìjçj�Ìjè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hX=**Definition**:: struct drm_xe_query_mem_regions { __u32 num_mem_regions; __u32 pad; struct drm_xe_mem_region mem_regions[]; }; **Members** ``num_mem_regions`` number of memory regions returned in **mem_regions** ``pad`` MBZ ``mem_regions`` The returned memory regions for this device”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj�Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj‰ÌubhŒ:”…”�”}”(hj‰Ìh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M|hj…Ìubj)�”}”(hŒzstruct drm_xe_query_mem_regions { __u32 num_mem_regions; __u32 pad; struct drm_xe_mem_region mem_regions[]; };”h]”hŒzstruct drm_xe_query_mem_regions { __u32 num_mem_regions; __u32 pad; struct drm_xe_mem_region mem_regions[]; };”…”�”}”hj¦Ìsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M~hj…Ìubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj·Ìh]”hŒMembers”…”�”}”(hj¹Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjµÌubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M„hj…Ìubj§)�”}”(hhh]”(j¬)�”}”(hŒI``num_mem_regions`` number of memory regions returned in **mem_regions** ”h]”(j²)�”}”(hŒ``num_mem_regions``”h]”jC)�”}”(hjÖÌh]”hŒnum_mem_regions”…”�”}”(hjØÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÔÌubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M€hjÐÌubjÃ)�”}”(hhh]”hì)�”}”(hŒ4number of memory regions returned in **mem_regions**”h]”(hŒ%number of memory regions returned in ”…”�”}”(hjïÌh²hh³Nh´NubjŒ)�”}”(hŒ**mem_regions**”h]”hŒ mem_regions”…”�”}”(hj÷Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjïÌubeh}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ ``pad`` MBZ ”h]”(j²)�”}”(hŒ``pad``”h]”jC)�”}”(hjÍh]”hŒpad”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M‚hjÍubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hj6Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j2Íh´M‚hj3Íubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÍubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j2Íh´M‚hjÍÌubj¬)�”}”(hŒ;``mem_regions`` The returned memory regions for this device”h]”(j²)�”}”(hŒ``mem_regions``”h]”jC)�”}”(hjVÍh]”hŒ mem_regions”…”�”}”(hjXÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjTÍubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MƒhjPÍubjÃ)�”}”(hhh]”hì)�”}”(hŒ+The returned memory regions for this device”h]”hŒ+The returned memory regions for this device”…”�”}”(hjoÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M„hjlÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjPÍubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jkÍh´MƒhjÍÌubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj…Ìubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hj™Íh]”hŒ Description”…”�”}”(hj›Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj—Íubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M‡hj-¸h²hubhì)�”}”(hŒ¬If a query is made with a struct drm_xe_device_query where .query is equal to DRM_XE_DEVICE_QUERY_MEM_REGIONS, then the reply uses struct drm_xe_query_mem_regions in .data.”h]”hŒ¬If a query is made with a struct drm_xe_device_query where .query is equal to DRM_XE_DEVICE_QUERY_MEM_REGIONS, then the reply uses struct drm_xe_query_mem_regions in .data.”…”�”}”(hj¯Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Myhj-¸h²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_xe_query_config (C struct)”Œc.drm_xe_query_config”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_query_config”h]”jg)�”}”(hŒstruct drm_xe_query_config”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj×Íh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjÓÍh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”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Œdrm_xe_query_config”h]”j–)�”}”(hjÑÍh]”hŒdrm_xe_query_config”…”�”}”(hj÷Íh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjóÍubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjÓÍh²hh³jäÍh´M€ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”hì)�”}”(hŒ!describe the device configuration”h]”hŒ!describe the device configuration”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MˆhjÎh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÌÍh²hh³jäÍh´M€ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj1Îjçj1Îjè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hXÉ**Definition**:: struct drm_xe_query_config { __u32 num_params; __u32 pad; #define DRM_XE_QUERY_CONFIG_REV_AND_DEVICE_ID 0; #define DRM_XE_QUERY_CONFIG_FLAGS 1; #define DRM_XE_QUERY_CONFIG_FLAG_HAS_VRAM (1 << 0); #define DRM_XE_QUERY_CONFIG_FLAG_HAS_LOW_LATENCY (1 << 1); #define DRM_XE_QUERY_CONFIG_FLAG_HAS_CPU_ADDR_MIRROR (1 << 2); #define DRM_XE_QUERY_CONFIG_FLAG_HAS_NO_COMPRESSION_HINT (1 << 3); #define DRM_XE_QUERY_CONFIG_FLAG_HAS_DISABLE_STATE_CACHE_PERF_FIX (1 << 4); #define DRM_XE_QUERY_CONFIG_FLAG_HAS_PURGING_SUPPORT (1 << 5); #define DRM_XE_QUERY_CONFIG_MIN_ALIGNMENT 2; #define DRM_XE_QUERY_CONFIG_VA_BITS 3; #define DRM_XE_QUERY_CONFIG_MAX_EXEC_QUEUE_PRIORITY 4; __u64 info[]; }; **Members** ``num_params`` number of parameters returned in info ``pad`` MBZ ``info`` array of elements containing the config info”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj=Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj9ÎubhŒ:”…”�”}”(hj9Îh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MŒhj5Îubj)�”}”(hX struct drm_xe_query_config { __u32 num_params; __u32 pad; #define DRM_XE_QUERY_CONFIG_REV_AND_DEVICE_ID 0; #define DRM_XE_QUERY_CONFIG_FLAGS 1; #define DRM_XE_QUERY_CONFIG_FLAG_HAS_VRAM (1 << 0); #define DRM_XE_QUERY_CONFIG_FLAG_HAS_LOW_LATENCY (1 << 1); #define DRM_XE_QUERY_CONFIG_FLAG_HAS_CPU_ADDR_MIRROR (1 << 2); #define DRM_XE_QUERY_CONFIG_FLAG_HAS_NO_COMPRESSION_HINT (1 << 3); #define DRM_XE_QUERY_CONFIG_FLAG_HAS_DISABLE_STATE_CACHE_PERF_FIX (1 << 4); #define DRM_XE_QUERY_CONFIG_FLAG_HAS_PURGING_SUPPORT (1 << 5); #define DRM_XE_QUERY_CONFIG_MIN_ALIGNMENT 2; #define DRM_XE_QUERY_CONFIG_VA_BITS 3; #define DRM_XE_QUERY_CONFIG_MAX_EXEC_QUEUE_PRIORITY 4; __u64 info[]; };”h]”hX struct drm_xe_query_config { __u32 num_params; __u32 pad; #define DRM_XE_QUERY_CONFIG_REV_AND_DEVICE_ID 0; #define DRM_XE_QUERY_CONFIG_FLAGS 1; #define DRM_XE_QUERY_CONFIG_FLAG_HAS_VRAM (1 << 0); #define DRM_XE_QUERY_CONFIG_FLAG_HAS_LOW_LATENCY (1 << 1); #define DRM_XE_QUERY_CONFIG_FLAG_HAS_CPU_ADDR_MIRROR (1 << 2); #define DRM_XE_QUERY_CONFIG_FLAG_HAS_NO_COMPRESSION_HINT (1 << 3); #define DRM_XE_QUERY_CONFIG_FLAG_HAS_DISABLE_STATE_CACHE_PERF_FIX (1 << 4); #define DRM_XE_QUERY_CONFIG_FLAG_HAS_PURGING_SUPPORT (1 << 5); #define DRM_XE_QUERY_CONFIG_MIN_ALIGNMENT 2; #define DRM_XE_QUERY_CONFIG_VA_BITS 3; #define DRM_XE_QUERY_CONFIG_MAX_EXEC_QUEUE_PRIORITY 4; __u64 info[]; };”…”�”}”hjVÎsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MŽhj5Îubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjgÎh]”hŒMembers”…”�”}”(hjiÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjeÎubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MŸhj5Îubj§)�”}”(hhh]”(j¬)�”}”(hŒ5``num_params`` number of parameters returned in info ”h]”(j²)�”}”(hŒ``num_params``”h]”jC)�”}”(hj†Îh]”hŒ num_params”…”�”}”(hjˆÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj„Îubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M¨hj€ÎubjÃ)�”}”(hhh]”hì)�”}”(hŒ%number of parameters returned in info”h]”hŒ%number of parameters returned in info”…”�”}”(hjŸÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ ``pad`` MBZ ”h]”(j²)�”}”(hŒ``pad``”h]”jC)�”}”(hj¿Îh]”hŒpad”…”�”}”(hjÁÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj½Îubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M«hj¹ÎubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hjØÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ5``info`` array of elements containing the config info”h]”(j²)�”}”(hŒ``info``”h]”jC)�”}”(hjøÎh]”hŒinfo”…”�”}”(hjúÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjöÎubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M¸hjòÎubjÃ)�”}”(hhh]”hì)�”}”(hŒ,array of elements containing the config info”h]”hŒ,array of elements containing the config info”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”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¦hj5Îubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hj;Ïh]”hŒ Description”…”�”}”(hj=Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj9Ïubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M¼hj-¸h²hubhì)�”}”(hŒ¢If a query is made with a struct drm_xe_device_query where .query is equal to DRM_XE_DEVICE_QUERY_CONFIG, then the reply uses struct drm_xe_query_config in .data.”h]”hŒ¢If a query is made with a struct drm_xe_device_query where .query is equal to DRM_XE_DEVICE_QUERY_CONFIG, then the reply uses struct drm_xe_query_config in .data.”…”�”}”(hjQÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M‰hj-¸h²hubj§)�”}”(hhh]”j¬)�”}”(hXÆThe index in **info** can be: - ``DRM_XE_QUERY_CONFIG_REV_AND_DEVICE_ID`` - Device ID (lower 16 bits) and the device revision (next 8 bits) - ``DRM_XE_QUERY_CONFIG_FLAGS`` - Flags describing the device configuration, see list below - ``DRM_XE_QUERY_CONFIG_FLAG_HAS_VRAM`` - Flag is set if the device has usable VRAM - ``DRM_XE_QUERY_CONFIG_FLAG_HAS_LOW_LATENCY`` - Flag is set if the device has low latency hint support - ``DRM_XE_QUERY_CONFIG_FLAG_HAS_CPU_ADDR_MIRROR`` - Flag is set if the device has CPU address mirroring support - ``DRM_XE_QUERY_CONFIG_FLAG_HAS_NO_COMPRESSION_HINT`` - Flag is set if the device supports the userspace hint ``DRM_XE_GEM_CREATE_FLAG_NO_COMPRESSION``. This is exposed only on Xe2+. - ``DRM_XE_QUERY_CONFIG_FLAG_HAS_DISABLE_STATE_CACHE_PERF_FIX`` - Flag is set if a queue can be created with ``DRM_XE_EXEC_QUEUE_SET_DISABLE_STATE_CACHE_PERF_FIX`` - ``DRM_XE_QUERY_CONFIG_MIN_ALIGNMENT`` - Minimal memory alignment required by this device, typically SZ_4K or SZ_64K - ``DRM_XE_QUERY_CONFIG_VA_BITS`` - Maximum bits of a virtual address - ``DRM_XE_QUERY_CONFIG_MAX_EXEC_QUEUE_PRIORITY`` - Value of the highest available exec queue priority ”h]”(j²)�”}”(hŒThe index in **info** can be:”h]”(hŒ The index in ”…”�”}”(hjgÏh²hh³Nh´NubjŒ)�”}”(hŒ**info**”h]”hŒinfo”…”�”}”(hjoÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjgÏubhŒ can be:”…”�”}”(hjgÏh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M¦hjcÏubjÃ)�”}”(hhh]”hâ)�”}”(hhh]”(hç)�”}”(hŒk``DRM_XE_QUERY_CONFIG_REV_AND_DEVICE_ID`` - Device ID (lower 16 bits) and the device revision (next 8 bits)”h]”hì)�”}”(hŒk``DRM_XE_QUERY_CONFIG_REV_AND_DEVICE_ID`` - Device ID (lower 16 bits) and the device revision (next 8 bits)”h]”(jC)�”}”(hŒ)``DRM_XE_QUERY_CONFIG_REV_AND_DEVICE_ID``”h]”hŒ%DRM_XE_QUERY_CONFIG_REV_AND_DEVICE_ID”…”�”}”(hj–Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj’ÏubhŒB - Device ID (lower 16 bits) and the device revision (next 8 bits)”…”�”}”(hj’Ïh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MŽhjŽÏubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj‹Ïubhç)�”}”(hXñ``DRM_XE_QUERY_CONFIG_FLAGS`` - Flags describing the device configuration, see list below - ``DRM_XE_QUERY_CONFIG_FLAG_HAS_VRAM`` - Flag is set if the device has usable VRAM - ``DRM_XE_QUERY_CONFIG_FLAG_HAS_LOW_LATENCY`` - Flag is set if the device has low latency hint support - ``DRM_XE_QUERY_CONFIG_FLAG_HAS_CPU_ADDR_MIRROR`` - Flag is set if the device has CPU address mirroring support - ``DRM_XE_QUERY_CONFIG_FLAG_HAS_NO_COMPRESSION_HINT`` - Flag is set if the device supports the userspace hint ``DRM_XE_GEM_CREATE_FLAG_NO_COMPRESSION``. This is exposed only on Xe2+. - ``DRM_XE_QUERY_CONFIG_FLAG_HAS_DISABLE_STATE_CACHE_PERF_FIX`` - Flag is set if a queue can be created with ``DRM_XE_EXEC_QUEUE_SET_DISABLE_STATE_CACHE_PERF_FIX``”h]”(hì)�”}”(hŒY``DRM_XE_QUERY_CONFIG_FLAGS`` - Flags describing the device configuration, see list below”h]”(jC)�”}”(hŒ``DRM_XE_QUERY_CONFIG_FLAGS``”h]”hŒDRM_XE_QUERY_CONFIG_FLAGS”…”�”}”(hj½Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj¹ÏubhŒ< - Flags describing the device configuration, see list below”…”�”}”(hj¹Ïh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M�hjµÏubhâ)�”}”(hhh]”(hç)�”}”(hŒQ``DRM_XE_QUERY_CONFIG_FLAG_HAS_VRAM`` - Flag is set if the device has usable VRAM”h]”hì)�”}”(hŒQ``DRM_XE_QUERY_CONFIG_FLAG_HAS_VRAM`` - Flag is set if the device has usable VRAM”h]”(jC)�”}”(hŒ%``DRM_XE_QUERY_CONFIG_FLAG_HAS_VRAM``”h]”hŒ!DRM_XE_QUERY_CONFIG_FLAG_HAS_VRAM”…”�”}”(hjáÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÝÏubhŒ, - Flag is set if the device has usable VRAM”…”�”}”(hjÝÏh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M“hjÙÏubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjÖÏubhç)�”}”(hŒe``DRM_XE_QUERY_CONFIG_FLAG_HAS_LOW_LATENCY`` - Flag is set if the device has low latency hint support”h]”hì)�”}”(hŒe``DRM_XE_QUERY_CONFIG_FLAG_HAS_LOW_LATENCY`` - Flag is set if the device has low latency hint support”h]”(jC)�”}”(hŒ,``DRM_XE_QUERY_CONFIG_FLAG_HAS_LOW_LATENCY``”h]”hŒ(DRM_XE_QUERY_CONFIG_FLAG_HAS_LOW_LATENCY”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÐubhŒ9 - Flag is set if the device has low latency hint support”…”�”}”(hjÐh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M•hjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjÖÏubhç)�”}”(hŒn``DRM_XE_QUERY_CONFIG_FLAG_HAS_CPU_ADDR_MIRROR`` - Flag is set if the device has CPU address mirroring support”h]”hì)�”}”(hŒn``DRM_XE_QUERY_CONFIG_FLAG_HAS_CPU_ADDR_MIRROR`` - Flag is set if the device has CPU address mirroring support”h]”(jC)�”}”(hŒ0``DRM_XE_QUERY_CONFIG_FLAG_HAS_CPU_ADDR_MIRROR``”h]”hŒ,DRM_XE_QUERY_CONFIG_FLAG_HAS_CPU_ADDR_MIRROR”…”�”}”(hj/Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj+ÐubhŒ> - Flag is set if the device has CPU address mirroring support”…”�”}”(hj+Ðh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M—hj'Ðubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjÖÏubhç)�”}”(hŒµ``DRM_XE_QUERY_CONFIG_FLAG_HAS_NO_COMPRESSION_HINT`` - Flag is set if the device supports the userspace hint ``DRM_XE_GEM_CREATE_FLAG_NO_COMPRESSION``. This is exposed only on Xe2+.”h]”hì)�”}”(hŒµ``DRM_XE_QUERY_CONFIG_FLAG_HAS_NO_COMPRESSION_HINT`` - Flag is set if the device supports the userspace hint ``DRM_XE_GEM_CREATE_FLAG_NO_COMPRESSION``. This is exposed only on Xe2+.”h]”(jC)�”}”(hŒ4``DRM_XE_QUERY_CONFIG_FLAG_HAS_NO_COMPRESSION_HINT``”h]”hŒ0DRM_XE_QUERY_CONFIG_FLAG_HAS_NO_COMPRESSION_HINT”…”�”}”(hjVÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjRÐubhŒ9 - Flag is set if the device supports the userspace hint ”…”�”}”(hjRÐh²hh³Nh´NubjC)�”}”(hŒ)``DRM_XE_GEM_CREATE_FLAG_NO_COMPRESSION``”h]”hŒ%DRM_XE_GEM_CREATE_FLAG_NO_COMPRESSION”…”�”}”(hjhÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjRÐubhŒ. This is exposed only on Xe2+.”…”�”}”(hjRÐh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M™hjNÐubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjÖÏubhç)�”}”(hŒ¡``DRM_XE_QUERY_CONFIG_FLAG_HAS_DISABLE_STATE_CACHE_PERF_FIX`` - Flag is set if a queue can be created with ``DRM_XE_EXEC_QUEUE_SET_DISABLE_STATE_CACHE_PERF_FIX``”h]”hì)�”}”(hŒ¡``DRM_XE_QUERY_CONFIG_FLAG_HAS_DISABLE_STATE_CACHE_PERF_FIX`` - Flag is set if a queue can be created with ``DRM_XE_EXEC_QUEUE_SET_DISABLE_STATE_CACHE_PERF_FIX``”h]”(jC)�”}”(hŒ=``DRM_XE_QUERY_CONFIG_FLAG_HAS_DISABLE_STATE_CACHE_PERF_FIX``”h]”hŒ9DRM_XE_QUERY_CONFIG_FLAG_HAS_DISABLE_STATE_CACHE_PERF_FIX”…”�”}”(hj�Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj‹ÐubhŒ. - Flag is set if a queue can be created with ”…”�”}”(hj‹Ðh²hh³Nh´NubjC)�”}”(hŒ6``DRM_XE_EXEC_QUEUE_SET_DISABLE_STATE_CACHE_PERF_FIX``”h]”hŒ2DRM_XE_EXEC_QUEUE_SET_DISABLE_STATE_CACHE_PERF_FIX”…”�”}”(hj¡Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj‹Ðubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mœhj‡Ðubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjÖÏubeh}”(h]”h ]”h"]”h$]”h&]”jÀ jÁ uh1háh³jùÏh´M“hjµÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1hæhj‹Ïubhç)�”}”(hŒs``DRM_XE_QUERY_CONFIG_MIN_ALIGNMENT`` - Minimal memory alignment required by this device, typically SZ_4K or SZ_64K”h]”hì)�”}”(hŒs``DRM_XE_QUERY_CONFIG_MIN_ALIGNMENT`` - Minimal memory alignment required by this device, typically SZ_4K or SZ_64K”h]”(jC)�”}”(hŒ%``DRM_XE_QUERY_CONFIG_MIN_ALIGNMENT``”h]”hŒ!DRM_XE_QUERY_CONFIG_MIN_ALIGNMENT”…”�”}”(hjÐÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÌÐubhŒN - Minimal memory alignment required by this device, typically SZ_4K or SZ_64K”…”�”}”(hjÌÐh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MŸhjÈÐubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj‹Ïubhç)�”}”(hŒC``DRM_XE_QUERY_CONFIG_VA_BITS`` - Maximum bits of a virtual address”h]”hì)�”}”(hjñÐh]”(jC)�”}”(hŒ``DRM_XE_QUERY_CONFIG_VA_BITS``”h]”hŒDRM_XE_QUERY_CONFIG_VA_BITS”…”�”}”(hjöÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjóÐubhŒ$ - Maximum bits of a virtual address”…”�”}”(hjóÐh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M¡hjïÐubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj‹Ïubhç)�”}”(hŒh``DRM_XE_QUERY_CONFIG_MAX_EXEC_QUEUE_PRIORITY`` - Value of the highest available exec queue priority ”h]”hì)�”}”(hŒd``DRM_XE_QUERY_CONFIG_MAX_EXEC_QUEUE_PRIORITY`` - Value of the highest available exec queue priority”h]”(jC)�”}”(hŒ/``DRM_XE_QUERY_CONFIG_MAX_EXEC_QUEUE_PRIORITY``”h]”hŒ+DRM_XE_QUERY_CONFIG_MAX_EXEC_QUEUE_PRIORITY”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÑubhŒ5 - Value of the highest available exec queue priority”…”�”}”(hjÑh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M¢hjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj‹Ïubeh}”(h]”h ]”h"]”h$]”h&]”jÀ jÁ uh1háh³j®Ïh´MŽhjˆÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjcÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j‡Ïh´M¦hj`Ïubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj-¸h²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_xe_gt (C struct)”Œ c.drm_xe_gt”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒ drm_xe_gt”h]”jg)�”}”(hŒstruct drm_xe_gt”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjmÑh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjiÑh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M¨ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{Ñh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjiÑh²hh³jzÑh´M¨ubj�)�”}”(hŒ drm_xe_gt”h]”j–)�”}”(hjgÑh]”hŒ drm_xe_gt”…”�”}”(hj�Ñh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj‰Ñubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjiÑh²hh³jzÑh´M¨ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjeÑh²hh³jzÑh´M¨ubah}”(h]”j`Ñah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jzÑh´M¨hjbÑh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒdescribe an individual GT.”h]”hŒdescribe an individual GT.”…”�”}”(hj¯Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M½hj¬Ñh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjbÑh²hh³jzÑh´M¨ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjÇÑjçjÇÑjè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hX**Definition**:: struct drm_xe_gt { #define DRM_XE_QUERY_GT_TYPE_MAIN 0; #define DRM_XE_QUERY_GT_TYPE_MEDIA 1; __u16 type; __u16 tile_id; __u16 gt_id; __u16 pad[3]; __u32 reference_clock; __u64 near_mem_regions; __u64 far_mem_regions; __u16 ip_ver_major; __u16 ip_ver_minor; __u16 ip_ver_rev; __u16 pad2; __u64 reserved[7]; }; **Members** ``type`` GT type: Main or Media ``tile_id`` Tile ID where this GT lives (Information only) ``gt_id`` Unique ID of this GT within the PCI Device ``pad`` MBZ ``reference_clock`` A clock frequency for timestamp ``near_mem_regions`` Bit mask of instances from drm_xe_query_mem_regions that are nearest to the current engines of this GT. Each index in this mask refers directly to the struct drm_xe_query_mem_regions' instance, no assumptions should be made about order. The type of each region is described by struct drm_xe_query_mem_regions' mem_class. ``far_mem_regions`` Bit mask of instances from drm_xe_query_mem_regions that are far from the engines of this GT. In general, they have extra indirections when compared to the **near_mem_regions**. For a discrete device this could mean system memory and memory living in a different tile. Each index in this mask refers directly to the struct drm_xe_query_mem_regions' instance, no assumptions should be made about order. The type of each region is described by struct drm_xe_query_mem_regions' mem_class. ``ip_ver_major`` Graphics/media IP major version on GMD_ID platforms ``ip_ver_minor`` Graphics/media IP minor version on GMD_ID platforms ``ip_ver_rev`` Graphics/media IP revision version on GMD_ID platforms ``pad2`` MBZ ``reserved`` Reserved”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjÓÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÏÑubhŒ:”…”�”}”(hjÏÑh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÁhjËÑubj)�”}”(hX€struct drm_xe_gt { #define DRM_XE_QUERY_GT_TYPE_MAIN 0; #define DRM_XE_QUERY_GT_TYPE_MEDIA 1; __u16 type; __u16 tile_id; __u16 gt_id; __u16 pad[3]; __u32 reference_clock; __u64 near_mem_regions; __u64 far_mem_regions; __u16 ip_ver_major; __u16 ip_ver_minor; __u16 ip_ver_rev; __u16 pad2; __u64 reserved[7]; };”h]”hX€struct drm_xe_gt { #define DRM_XE_QUERY_GT_TYPE_MAIN 0; #define DRM_XE_QUERY_GT_TYPE_MEDIA 1; __u16 type; __u16 tile_id; __u16 gt_id; __u16 pad[3]; __u32 reference_clock; __u64 near_mem_regions; __u64 far_mem_regions; __u16 ip_ver_major; __u16 ip_ver_minor; __u16 ip_ver_rev; __u16 pad2; __u64 reserved[7]; };”…”�”}”hjìÑsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÃhjËÑubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjýÑh]”hŒMembers”…”�”}”(hjÿÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjûÑubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÔhjËÑubj§)�”}”(hhh]”(j¬)�”}”(hŒ ``type`` GT type: Main or Media ”h]”(j²)�”}”(hŒ``type``”h]”jC)�”}”(hjÒh]”hŒtype”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÌhjÒubjÃ)�”}”(hhh]”hì)�”}”(hŒGT type: Main or Media”h]”hŒGT type: Main or Media”…”�”}”(hj5Òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j1Òh´MÌhj2Òubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j1Òh´MÌhjÒubj¬)�”}”(hŒ;``tile_id`` Tile ID where this GT lives (Information only) ”h]”(j²)�”}”(hŒ ``tile_id``”h]”jC)�”}”(hjUÒh]”hŒtile_id”…”�”}”(hjWÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjSÒubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÎhjOÒubjÃ)�”}”(hhh]”hì)�”}”(hŒ.Tile ID where this GT lives (Information only)”h]”hŒ.Tile ID where this GT lives (Information only)”…”�”}”(hjnÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jjÒh´MÎhjkÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjOÒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jjÒh´MÎhjÒubj¬)�”}”(hŒ5``gt_id`` Unique ID of this GT within the PCI Device ”h]”(j²)�”}”(hŒ ``gt_id``”h]”jC)�”}”(hjŽÒh]”hŒgt_id”…”�”}”(hj�Òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjŒÒubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÐhjˆÒubjÃ)�”}”(hhh]”hì)�”}”(hŒ*Unique ID of this GT within the PCI Device”h]”hŒ*Unique ID of this GT within the PCI Device”…”�”}”(hj§Òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ ``pad`` MBZ ”h]”(j²)�”}”(hŒ``pad``”h]”jC)�”}”(hjÇÒh]”hŒpad”…”�”}”(hjÉÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÅÒubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÒhjÁÒubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hjàÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ4``reference_clock`` A clock frequency for timestamp ”h]”(j²)�”}”(hŒ``reference_clock``”h]”jC)�”}”(hjÓh]”hŒreference_clock”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjþÒubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÔhjúÒubjÃ)�”}”(hhh]”hì)�”}”(hŒA clock frequency for timestamp”h]”hŒA clock frequency for timestamp”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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¬)�”}”(hXV``near_mem_regions`` Bit mask of instances from drm_xe_query_mem_regions that are nearest to the current engines of this GT. Each index in this mask refers directly to the struct drm_xe_query_mem_regions' instance, no assumptions should be made about order. The type of each region is described by struct drm_xe_query_mem_regions' mem_class. ”h]”(j²)�”}”(hŒ``near_mem_regions``”h]”jC)�”}”(hj9Óh]”hŒnear_mem_regions”…”�”}”(hj;Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj7Óubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÝhj3ÓubjÃ)�”}”(hhh]”hì)�”}”(hX@Bit mask of instances from drm_xe_query_mem_regions that are nearest to the current engines of this GT. Each index in this mask refers directly to the struct drm_xe_query_mem_regions' instance, no assumptions should be made about order. The type of each region is described by struct drm_xe_query_mem_regions' mem_class.”h]”hXDBit mask of instances from drm_xe_query_mem_regions that are nearest to the current engines of this GT. Each index in this mask refers directly to the struct drm_xe_query_mem_regions’ instance, no assumptions should be made about order. The type of each region is described by struct drm_xe_query_mem_regions’ mem_class.”…”�”}”(hjRÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M×hjOÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj3Óubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jNÓh´MÝhjÒubj¬)�”}”(hXú``far_mem_regions`` Bit mask of instances from drm_xe_query_mem_regions that are far from the engines of this GT. In general, they have extra indirections when compared to the **near_mem_regions**. For a discrete device this could mean system memory and memory living in a different tile. Each index in this mask refers directly to the struct drm_xe_query_mem_regions' instance, no assumptions should be made about order. The type of each region is described by struct drm_xe_query_mem_regions' mem_class. ”h]”(j²)�”}”(hŒ``far_mem_regions``”h]”jC)�”}”(hjsÓh]”hŒfar_mem_regions”…”�”}”(hjuÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjqÓubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MéhjmÓubjÃ)�”}”(hhh]”hì)�”}”(hXåBit mask of instances from drm_xe_query_mem_regions that are far from the engines of this GT. In general, they have extra indirections when compared to the **near_mem_regions**. For a discrete device this could mean system memory and memory living in a different tile. Each index in this mask refers directly to the struct drm_xe_query_mem_regions' instance, no assumptions should be made about order. The type of each region is described by struct drm_xe_query_mem_regions' mem_class.”h]”(hŒœBit mask of instances from drm_xe_query_mem_regions that are far from the engines of this GT. In general, they have extra indirections when compared to the ”…”�”}”(hjŒÓh²hh³Nh´NubjŒ)�”}”(hŒ**near_mem_regions**”h]”hŒnear_mem_regions”…”�”}”(hj”Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjŒÓubhX9. For a discrete device this could mean system memory and memory living in a different tile. Each index in this mask refers directly to the struct drm_xe_query_mem_regions’ instance, no assumptions should be made about order. The type of each region is described by struct drm_xe_query_mem_regions’ mem_class.”…”�”}”(hjŒÓh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Máhj‰Óubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjmÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jˆÓh´MéhjÒubj¬)�”}”(hŒE``ip_ver_major`` Graphics/media IP major version on GMD_ID platforms ”h]”(j²)�”}”(hŒ``ip_ver_major``”h]”jC)�”}”(hj¿Óh]”hŒ ip_ver_major”…”�”}”(hjÁÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj½Óubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mìhj¹ÓubjÃ)�”}”(hhh]”hì)�”}”(hŒ3Graphics/media IP major version on GMD_ID platforms”h]”hŒ3Graphics/media IP major version on GMD_ID platforms”…”�”}”(hjØÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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``ip_ver_minor`` Graphics/media IP minor version on GMD_ID platforms ”h]”(j²)�”}”(hŒ``ip_ver_minor``”h]”jC)�”}”(hjøÓh]”hŒ ip_ver_minor”…”�”}”(hjúÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjöÓubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MîhjòÓubjÃ)�”}”(hhh]”hì)�”}”(hŒ3Graphics/media IP minor version on GMD_ID platforms”h]”hŒ3Graphics/media IP minor version on GMD_ID platforms”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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ŒF``ip_ver_rev`` Graphics/media IP revision version on GMD_ID platforms ”h]”(j²)�”}”(hŒ``ip_ver_rev``”h]”jC)�”}”(hj1Ôh]”hŒ ip_ver_rev”…”�”}”(hj3Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj/Ôubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mðhj+ÔubjÃ)�”}”(hhh]”hì)�”}”(hŒ6Graphics/media IP revision version on GMD_ID platforms”h]”hŒ6Graphics/media IP revision version on GMD_ID platforms”…”�”}”(hjJÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jFÔh´MðhjGÔubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj+Ôubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jFÔh´MðhjÒubj¬)�”}”(hŒ ``pad2`` MBZ ”h]”(j²)�”}”(hŒ``pad2``”h]”jC)�”}”(hjjÔh]”hŒpad2”…”�”}”(hjlÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjhÔubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MòhjdÔubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hjƒÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÔh´Mòhj€Ôubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjdÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÔh´MòhjÒubj¬)�”}”(hŒ``reserved`` Reserved”h]”(j²)�”}”(hŒ ``reserved``”h]”jC)�”}”(hj£Ôh]”hŒreserved”…”�”}”(hj¥Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj¡Ôubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Móhj�ÔubjÃ)�”}”(hhh]”hì)�”}”(hŒReserved”h]”hŒReserved”…”�”}”(hj¼Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”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¦hjËÑubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjæÔh]”hŒ Description”…”�”}”(hjèÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjäÔubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M÷hj-¸h²hubhì)�”}”(hŒêTo be used with drm_xe_query_gt_list, which will return a list with all the existing GT individual descriptions. Graphics Technology (GT) is a subset of a GPU/tile that is responsible for implementing graphics and/or media operations.”h]”hŒêTo be used with drm_xe_query_gt_list, which will return a list with all the existing GT individual descriptions. Graphics Technology (GT) is a subset of a GPU/tile that is responsible for implementing graphics and/or media operations.”…”�”}”(hjüÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M¾hj-¸h²hubj§)�”}”(hhh]”j¬)�”}”(hŒbThe index in **type** can be: - ``DRM_XE_QUERY_GT_TYPE_MAIN`` - ``DRM_XE_QUERY_GT_TYPE_MEDIA`` ”h]”(j²)�”}”(hŒThe index in **type** can be:”h]”(hŒ The index in ”…”�”}”(hjÕh²hh³Nh´NubjŒ)�”}”(hŒ**type**”h]”hŒtype”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÕubhŒ can be:”…”�”}”(hjÕh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÈhjÕubjÃ)�”}”(hhh]”hâ)�”}”(hhh]”(hç)�”}”(hŒ``DRM_XE_QUERY_GT_TYPE_MAIN``”h]”hì)�”}”(hj;Õh]”jC)�”}”(hj;Õh]”hŒDRM_XE_QUERY_GT_TYPE_MAIN”…”�”}”(hj@Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj=Õubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÄhj9Õubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj6Õubhç)�”}”(hŒ"``DRM_XE_QUERY_GT_TYPE_MEDIA`` ”h]”hì)�”}”(hŒ``DRM_XE_QUERY_GT_TYPE_MEDIA``”h]”jC)�”}”(hj`Õh]”hŒDRM_XE_QUERY_GT_TYPE_MEDIA”…”�”}”(hjbÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj^Õubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÅhjZÕubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj6Õubeh}”(h]”h ]”h"]”h$]”h&]”jÀ jÁ uh1háh³jSÕh´MÄhj3Õubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j2Õh´MÈhj Õubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj-¸h²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_xe_query_gt_list (C struct)”Œc.drm_xe_query_gt_list”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_query_gt_list”h]”jg)�”}”(hŒstruct drm_xe_query_gt_list”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj­Õh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj©Õh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”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Œdrm_xe_query_gt_list”h]”j–)�”}”(hj§Õh]”hŒdrm_xe_query_gt_list”…”�”}”(hjÍÕh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjÉÕubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj©Õh²hh³jºÕh´MÊubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”hì)�”}”(hŒ!A list with GT description items.”h]”hŒ!A list with GT description items.”…”�”}”(hjïÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MøhjìÕh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj¢Õh²hh³jºÕh´MÊubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjÖjçjÖjè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hX**Definition**:: struct drm_xe_query_gt_list { __u32 num_gt; __u32 pad; struct drm_xe_gt gt_list[]; }; **Members** ``num_gt`` number of GT items returned in gt_list ``pad`` MBZ ``gt_list`` The GT list returned for this device”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÖubhŒ:”…”�”}”(hjÖh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mühj Öubj)�”}”(hŒastruct drm_xe_query_gt_list { __u32 num_gt; __u32 pad; struct drm_xe_gt gt_list[]; };”h]”hŒastruct drm_xe_query_gt_list { __u32 num_gt; __u32 pad; struct drm_xe_gt gt_list[]; };”…”�”}”hj,Ösbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mþhj Öubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj=Öh]”hŒMembers”…”�”}”(hj?Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj;Öubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhj Öubj§)�”}”(hhh]”(j¬)�”}”(hŒ2``num_gt`` number of GT items returned in gt_list ”h]”(j²)�”}”(hŒ ``num_gt``”h]”jC)�”}”(hj\Öh]”hŒnum_gt”…”�”}”(hj^Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjZÖubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MhjVÖubjÃ)�”}”(hhh]”hì)�”}”(hŒ&number of GT items returned in gt_list”h]”hŒ&number of GT items returned in gt_list”…”�”}”(hjuÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jqÖh´MhjrÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjVÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jqÖh´MhjSÖubj¬)�”}”(hŒ ``pad`` MBZ ”h]”(j²)�”}”(hŒ``pad``”h]”jC)�”}”(hj•Öh]”hŒpad”…”�”}”(hj—Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj“Öubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhj�ÖubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hj®Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jªÖh´Mhj«Öubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj�Öubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jªÖh´MhjSÖubj¬)�”}”(hŒ0``gt_list`` The GT list returned for this device”h]”(j²)�”}”(hŒ ``gt_list``”h]”jC)�”}”(hjÎÖh]”hŒgt_list”…”�”}”(hjÐÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÌÖubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MhjÈÖubjÃ)�”}”(hhh]”hì)�”}”(hŒ$The GT list returned for this device”h]”hŒ$The GT list returned for this device”…”�”}”(hjçÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MhjäÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÈÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jãÖh´MhjSÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj Öubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hj×h]”hŒ Description”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhj-¸h²hubhì)�”}”(hŒ¤If a query is made with a struct drm_xe_device_query where .query is equal to DRM_XE_DEVICE_QUERY_GT_LIST, then the reply uses struct drm_xe_query_gt_list in .data.”h]”hŒ¤If a query is made with a struct drm_xe_device_query where .query is equal to DRM_XE_DEVICE_QUERY_GT_LIST, then the reply uses struct drm_xe_query_gt_list in .data.”…”�”}”(hj'×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mùhj-¸h²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ%drm_xe_query_topology_mask (C struct)”Œc.drm_xe_query_topology_mask”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_query_topology_mask”h]”jg)�”}”(hŒ!struct drm_xe_query_topology_mask”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjO×h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjK×h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]×h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjK×h²hh³j\×h´Mubj�)�”}”(hŒdrm_xe_query_topology_mask”h]”j–)�”}”(hjI×h]”hŒdrm_xe_query_topology_mask”…”�”}”(hjo×h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjk×ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjK×h²hh³j\×h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjG×h²hh³j\×h´Mubah}”(h]”jB×ah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³j\×h´MhjD×h²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ"describe the topology mask of a GT”h]”hŒ"describe the topology mask of a GT”…”�”}”(hj‘×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MhjŽ×h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjD×h²hh³j\×h´Mubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj©×jçj©×jè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hX$**Definition**:: struct drm_xe_query_topology_mask { __u16 gt_id; #define DRM_XE_TOPO_DSS_GEOMETRY 1; #define DRM_XE_TOPO_DSS_COMPUTE 2; #define DRM_XE_TOPO_L3_BANK 3; #define DRM_XE_TOPO_EU_PER_DSS 4; #define DRM_XE_TOPO_SIMD16_EU_PER_DSS 5; __u16 type; __u32 num_bytes; __u8 mask[]; }; **Members** ``gt_id`` GT ID the mask is associated with ``type`` type of mask ``num_bytes`` number of bytes in requested mask ``mask`` little-endian mask of **num_bytes**”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjµ×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj±×ubhŒ:”…”�”}”(hj±×h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M hj­×ubj)�”}”(hXDstruct drm_xe_query_topology_mask { __u16 gt_id; #define DRM_XE_TOPO_DSS_GEOMETRY 1; #define DRM_XE_TOPO_DSS_COMPUTE 2; #define DRM_XE_TOPO_L3_BANK 3; #define DRM_XE_TOPO_EU_PER_DSS 4; #define DRM_XE_TOPO_SIMD16_EU_PER_DSS 5; __u16 type; __u32 num_bytes; __u8 mask[]; };”h]”hXDstruct drm_xe_query_topology_mask { __u16 gt_id; #define DRM_XE_TOPO_DSS_GEOMETRY 1; #define DRM_XE_TOPO_DSS_COMPUTE 2; #define DRM_XE_TOPO_L3_BANK 3; #define DRM_XE_TOPO_EU_PER_DSS 4; #define DRM_XE_TOPO_SIMD16_EU_PER_DSS 5; __u16 type; __u32 num_bytes; __u8 mask[]; };”…”�”}”hjÎ×sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhj­×ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjß×h]”hŒMembers”…”�”}”(hjá×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÝ×ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhj­×ubj§)�”}”(hhh]”(j¬)�”}”(hŒ,``gt_id`` GT ID the mask is associated with ”h]”(j²)�”}”(hŒ ``gt_id``”h]”jC)�”}”(hjþ×h]”hŒgt_id”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjü×ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M.hjø×ubjÃ)�”}”(hhh]”hì)�”}”(hŒ!GT ID the mask is associated with”h]”hŒ!GT ID the mask is associated with”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ``type`` type of mask ”h]”(j²)�”}”(hŒ``type``”h]”jC)�”}”(hj7Øh]”hŒtype”…”�”}”(hj9Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj5Øubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M6hj1ØubjÃ)�”}”(hhh]”hì)�”}”(hŒ type of mask”h]”hŒ type of mask”…”�”}”(hjPØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jLØh´M6hjMØubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj1Øubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jLØh´M6hjõ×ubj¬)�”}”(hŒ0``num_bytes`` number of bytes in requested mask ”h]”(j²)�”}”(hŒ ``num_bytes``”h]”jC)�”}”(hjpØh]”hŒ num_bytes”…”�”}”(hjrØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjnØubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M9hjjØubjÃ)�”}”(hhh]”hì)�”}”(hŒ!number of bytes in requested mask”h]”hŒ!number of bytes in requested mask”…”�”}”(hj‰Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j…Øh´M9hj†Øubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjjØubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j…Øh´M9hjõ×ubj¬)�”}”(hŒ,``mask`` little-endian mask of **num_bytes**”h]”(j²)�”}”(hŒ``mask``”h]”jC)�”}”(hj©Øh]”hŒmask”…”�”}”(hj«Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj§Øubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M;hj£ØubjÃ)�”}”(hhh]”hì)�”}”(hŒ#little-endian mask of **num_bytes**”h]”(hŒlittle-endian mask of ”…”�”}”(hjÂØh²hh³Nh´NubjŒ)�”}”(hŒ **num_bytes**”h]”hŒ num_bytes”…”�”}”(hjÊØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÂØubeh}”(h]”h ]”h"]”h$]”h&]”u•h1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”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¦hj­×ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjúØh]”hŒ Description”…”�”}”(hjüØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjøØubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M?hj-¸h²hubhì)�”}”(hŒXThis is the hardware topology which reflects the internal physical structure of the GPU.”h]”hŒXThis is the hardware topology which reflects the internal physical structure of the GPU.”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M hj-¸h²hubhì)�”}”(hŒ®If a query is made with a struct drm_xe_device_query where .query is equal to DRM_XE_DEVICE_QUERY_GT_TOPOLOGY, then the reply uses struct drm_xe_query_topology_mask in .data.”h]”hŒ®If a query is made with a struct drm_xe_device_query where .query is equal to DRM_XE_DEVICE_QUERY_GT_TOPOLOGY, then the reply uses struct drm_xe_query_topology_mask in .data.”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M hj-¸h²hubj§)�”}”(hhh]”j¬)�”}”(hXYThe **type** can be: - ``DRM_XE_TOPO_DSS_GEOMETRY`` - To query the mask of Dual Sub Slices (DSS) available for geometry operations. For example a query response containing the following in mask: ``DSS_GEOMETRY ff ff ff ff 00 00 00 00`` means 32 DSS are available for geometry. - ``DRM_XE_TOPO_DSS_COMPUTE`` - To query the mask of Dual Sub Slices (DSS) available for compute operations. For example a query response containing the following in mask: ``DSS_COMPUTE ff ff ff ff 00 00 00 00`` means 32 DSS are available for compute. - ``DRM_XE_TOPO_L3_BANK`` - To query the mask of enabled L3 banks. This type may be omitted if the driver is unable to query the mask from the hardware. - ``DRM_XE_TOPO_EU_PER_DSS`` - To query the mask of Execution Units (EU) available per Dual Sub Slices (DSS). For example a query response containing the following in mask: ``EU_PER_DSS ff ff 00 00 00 00 00 00`` means each DSS has 16 SIMD8 EUs. This type may be omitted if device doesn't have SIMD8 EUs. - ``DRM_XE_TOPO_SIMD16_EU_PER_DSS`` - To query the mask of SIMD16 Execution Units (EU) available per Dual Sub Slices (DSS). For example a query response containing the following in mask: ``SIMD16_EU_PER_DSS ff ff 00 00 00 00 00 00`` means each DSS has 16 SIMD16 EUs. This type may be omitted if device doesn't have SIMD16 EUs. ”h]”(j²)�”}”(hŒThe **type** can be:”h]”(hŒThe ”…”�”}”(hj5Ùh²hh³Nh´NubjŒ)�”}”(hŒ**type**”h]”hŒtype”…”�”}”(hj=Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj5ÙubhŒ can be:”…”�”}”(hj5Ùh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M,hj1ÙubjÃ)�”}”(hhh]”hâ)�”}”(hhh]”(hç)�”}”(hX``DRM_XE_TOPO_DSS_GEOMETRY`` - To query the mask of Dual Sub Slices (DSS) available for geometry operations. For example a query response containing the following in mask: ``DSS_GEOMETRY ff ff ff ff 00 00 00 00`` means 32 DSS are available for geometry.”h]”hì)�”}”(hX``DRM_XE_TOPO_DSS_GEOMETRY`` - To query the mask of Dual Sub Slices (DSS) available for geometry operations. For example a query response containing the following in mask: ``DSS_GEOMETRY ff ff ff ff 00 00 00 00`` means 32 DSS are available for geometry.”h]”(jC)�”}”(hŒ``DRM_XE_TOPO_DSS_GEOMETRY``”h]”hŒDRM_XE_TOPO_DSS_GEOMETRY”…”�”}”(hjdÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj`ÙubhŒ� - To query the mask of Dual Sub Slices (DSS) available for geometry operations. For example a query response containing the following in mask: ”…”�”}”(hj`Ùh²hh³Nh´NubjC)�”}”(hŒ+``DSS_GEOMETRY ff ff ff ff 00 00 00 00``”h]”hŒ'DSS_GEOMETRY ff ff ff ff 00 00 00 00”…”�”}”(hjvÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj`ÙubhŒ) means 32 DSS are available for geometry.”…”�”}”(hj`Ùh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhj\Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjYÙubhç)�”}”(hŒü``DRM_XE_TOPO_DSS_COMPUTE`` - To query the mask of Dual Sub Slices (DSS) available for compute operations. For example a query response containing the following in mask: ``DSS_COMPUTE ff ff ff ff 00 00 00 00`` means 32 DSS are available for compute.”h]”hì)�”}”(hŒü``DRM_XE_TOPO_DSS_COMPUTE`` - To query the mask of Dual Sub Slices (DSS) available for compute operations. For example a query response containing the following in mask: ``DSS_COMPUTE ff ff ff ff 00 00 00 00`` means 32 DSS are available for compute.”h]”(jC)�”}”(hŒ``DRM_XE_TOPO_DSS_COMPUTE``”h]”hŒDRM_XE_TOPO_DSS_COMPUTE”…”�”}”(hj�Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj™ÙubhŒ� - To query the mask of Dual Sub Slices (DSS) available for compute operations. For example a query response containing the following in mask: ”…”�”}”(hj™Ùh²hh³Nh´NubjC)�”}”(hŒ*``DSS_COMPUTE ff ff ff ff 00 00 00 00``”h]”hŒ&DSS_COMPUTE ff ff ff ff 00 00 00 00”…”�”}”(hj¯Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj™ÙubhŒ( means 32 DSS are available for compute.”…”�”}”(hj™Ùh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhj•Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjYÙubhç)�”}”(hŒ—``DRM_XE_TOPO_L3_BANK`` - To query the mask of enabled L3 banks. This type may be omitted if the driver is unable to query the mask from the hardware.”h]”hì)�”}”(hŒ—``DRM_XE_TOPO_L3_BANK`` - To query the mask of enabled L3 banks. This type may be omitted if the driver is unable to query the mask from the hardware.”h]”(jC)�”}”(hŒ``DRM_XE_TOPO_L3_BANK``”h]”hŒDRM_XE_TOPO_L3_BANK”…”�”}”(hjÖÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÒÙubhŒ€ - To query the mask of enabled L3 banks. This type may be omitted if the driver is unable to query the mask from the hardware.”…”�”}”(hjÒÙh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MhjÎÙubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjYÙubhç)�”}”(hX0``DRM_XE_TOPO_EU_PER_DSS`` - To query the mask of Execution Units (EU) available per Dual Sub Slices (DSS). For example a query response containing the following in mask: ``EU_PER_DSS ff ff 00 00 00 00 00 00`` means each DSS has 16 SIMD8 EUs. This type may be omitted if device doesn't have SIMD8 EUs.”h]”hì)�”}”(hX0``DRM_XE_TOPO_EU_PER_DSS`` - To query the mask of Execution Units (EU) available per Dual Sub Slices (DSS). For example a query response containing the following in mask: ``EU_PER_DSS ff ff 00 00 00 00 00 00`` means each DSS has 16 SIMD8 EUs. This type may be omitted if device doesn't have SIMD8 EUs.”h]”(jC)�”}”(hŒ``DRM_XE_TOPO_EU_PER_DSS``”h]”hŒDRM_XE_TOPO_EU_PER_DSS”…”�”}”(hjýÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjùÙubhŒ‘ - To query the mask of Execution Units (EU) available per Dual Sub Slices (DSS). For example a query response containing the following in mask: ”…”�”}”(hjùÙh²hh³Nh´NubjC)�”}”(hŒ)``EU_PER_DSS ff ff 00 00 00 00 00 00``”h]”hŒ%EU_PER_DSS ff ff 00 00 00 00 00 00”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjùÙubhŒ^ means each DSS has 16 SIMD8 EUs. This type may be omitted if device doesn’t have SIMD8 EUs.”…”�”}”(hjùÙh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MhjõÙubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjYÙubhç)�”}”(hXK``DRM_XE_TOPO_SIMD16_EU_PER_DSS`` - To query the mask of SIMD16 Execution Units (EU) available per Dual Sub Slices (DSS). For example a query response containing the following in mask: ``SIMD16_EU_PER_DSS ff ff 00 00 00 00 00 00`` means each DSS has 16 SIMD16 EUs. This type may be omitted if device doesn't have SIMD16 EUs. ”h]”hì)�”}”(hXG``DRM_XE_TOPO_SIMD16_EU_PER_DSS`` - To query the mask of SIMD16 Execution Units (EU) available per Dual Sub Slices (DSS). For example a query response containing the following in mask: ``SIMD16_EU_PER_DSS ff ff 00 00 00 00 00 00`` means each DSS has 16 SIMD16 EUs. This type may be omitted if device doesn't have SIMD16 EUs.”h]”(jC)�”}”(hŒ!``DRM_XE_TOPO_SIMD16_EU_PER_DSS``”h]”hŒDRM_XE_TOPO_SIMD16_EU_PER_DSS”…”�”}”(hj6Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj2ÚubhŒ˜ - To query the mask of SIMD16 Execution Units (EU) available per Dual Sub Slices (DSS). For example a query response containing the following in mask: ”…”�”}”(hj2Úh²hh³Nh´NubjC)�”}”(hŒ0``SIMD16_EU_PER_DSS ff ff 00 00 00 00 00 00``”h]”hŒ,SIMD16_EU_PER_DSS ff ff 00 00 00 00 00 00”…”�”}”(hjHÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj2ÚubhŒ` means each DSS has 16 SIMD16 EUs. This type may be omitted if device doesn’t have SIMD16 EUs.”…”�”}”(hj2Úh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M$hj.Úubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjYÙubeh}”(h]”h ]”h"]”h$]”h&]”jÀ jÁ uh1háh³jŽÙh´MhjVÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj1Ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jUÙh´M,hj.Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj-¸h²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ%drm_xe_query_engine_cycles (C struct)”Œc.drm_xe_query_engine_cycles”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_query_engine_cycles”h]”jg)�”}”(hŒ!struct drm_xe_query_engine_cycles”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj˜Úh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj”Úh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”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Œdrm_xe_query_engine_cycles”h]”j–)�”}”(hj’Úh]”hŒdrm_xe_query_engine_cycles”…”�”}”(hj¸Úh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj´Úubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj”Úh²hh³j¥Úh´M.ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”hì)�”}”(hŒ correlate CPU and GPU timestamps”h]”hŒ correlate CPU and GPU timestamps”…”�”}”(hjÚÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M@hj×Úh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj�Úh²hh³j¥Úh´M.ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjòÚjçjòÚjè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hXì**Definition**:: struct drm_xe_query_engine_cycles { struct drm_xe_engine_class_instance eci; __s32 clockid; __u32 width; __u64 engine_cycles; __u64 cpu_timestamp; __u64 cpu_delta; }; **Members** ``eci`` This is input by the user and is the engine for which command streamer cycles is queried. ``clockid`` This is input by the user and is the reference clock id for CPU timestamp. For definition, see clock_gettime(2) and perf_event_open(2). Supported clock ids are CLOCK_MONOTONIC, CLOCK_MONOTONIC_RAW, CLOCK_REALTIME, CLOCK_BOOTTIME, CLOCK_TAI. ``width`` Width of the engine cycle counter in bits. ``engine_cycles`` Engine cycles as read from its register at 0x358 offset. ``cpu_timestamp`` CPU timestamp in ns. The timestamp is captured before reading the engine_cycles register using the reference clockid set by the user. ``cpu_delta`` Time delta in ns captured around reading the lower dword of the engine_cycles register.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjþÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjúÚubhŒ:”…”�”}”(hjúÚh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MDhjöÚubj)�”}”(hŒ¾struct drm_xe_query_engine_cycles { struct drm_xe_engine_class_instance eci; __s32 clockid; __u32 width; __u64 engine_cycles; __u64 cpu_timestamp; __u64 cpu_delta; };”h]”hŒ¾struct drm_xe_query_engine_cycles { struct drm_xe_engine_class_instance eci; __s32 clockid; __u32 width; __u64 engine_cycles; __u64 cpu_timestamp; __u64 cpu_delta; };”…”�”}”hjÛsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MFhjöÚubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj(Ûh]”hŒMembers”…”�”}”(hj*Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj&Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MOhjöÚubj§)�”}”(hhh]”(j¬)�”}”(hŒb``eci`` This is input by the user and is the engine for which command streamer cycles is queried. ”h]”(j²)�”}”(hŒ``eci``”h]”jC)�”}”(hjGÛh]”hŒeci”…”�”}”(hjIÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjEÛubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MPhjAÛubjÃ)�”}”(hhh]”hì)�”}”(hŒYThis is input by the user and is the engine for which command streamer cycles is queried.”h]”hŒYThis is input by the user and is the engine for which command streamer cycles is queried.”…”�”}”(hj`Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MOhj]Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjAÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j\Ûh´MPhj>Ûubj¬)�”}”(hŒý``clockid`` This is input by the user and is the reference clock id for CPU timestamp. For definition, see clock_gettime(2) and perf_event_open(2). Supported clock ids are CLOCK_MONOTONIC, CLOCK_MONOTONIC_RAW, CLOCK_REALTIME, CLOCK_BOOTTIME, CLOCK_TAI. ”h]”(j²)�”}”(hŒ ``clockid``”h]”jC)�”}”(hj�Ûh]”hŒclockid”…”�”}”(hjƒÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MXhj{ÛubjÃ)�”}”(hhh]”hì)�”}”(hŒðThis is input by the user and is the reference clock id for CPU timestamp. For definition, see clock_gettime(2) and perf_event_open(2). Supported clock ids are CLOCK_MONOTONIC, CLOCK_MONOTONIC_RAW, CLOCK_REALTIME, CLOCK_BOOTTIME, CLOCK_TAI.”h]”hŒðThis is input by the user and is the reference clock id for CPU timestamp. For definition, see clock_gettime(2) and perf_event_open(2). Supported clock ids are CLOCK_MONOTONIC, CLOCK_MONOTONIC_RAW, CLOCK_REALTIME, CLOCK_BOOTTIME, CLOCK_TAI.”…”�”}”(hjšÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MUhj—Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj{Ûubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j–Ûh´MXhj>Ûubj¬)�”}”(hŒ5``width`` Width of the engine cycle counter in bits. ”h]”(j²)�”}”(hŒ ``width``”h]”jC)�”}”(hj»Ûh]”hŒwidth”…”�”}”(hj½Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj¹Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M\hjµÛubjÃ)�”}”(hhh]”hì)�”}”(hŒ*Width of the engine cycle counter in bits.”h]”hŒ*Width of the engine cycle counter in bits.”…”�”}”(hjÔÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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``engine_cycles`` Engine cycles as read from its register at 0x358 offset. ”h]”(j²)�”}”(hŒ``engine_cycles``”h]”jC)�”}”(hjôÛh]”hŒ engine_cycles”…”�”}”(hjöÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjòÛubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MahjîÛubjÃ)�”}”(hhh]”hì)�”}”(hŒ8Engine cycles as read from its register at 0x358 offset.”h]”hŒ8Engine cycles as read from its register at 0x358 offset.”…”�”}”(hj Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M`hj Üubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjîÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j Üh´Mahj>Ûubj¬)�”}”(hŒ˜``cpu_timestamp`` CPU timestamp in ns. The timestamp is captured before reading the engine_cycles register using the reference clockid set by the user. ”h]”(j²)�”}”(hŒ``cpu_timestamp``”h]”jC)�”}”(hj.Üh]”hŒ cpu_timestamp”…”�”}”(hj0Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj,Üubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhhj(ÜubjÃ)�”}”(hhh]”hì)�”}”(hŒ…CPU timestamp in ns. The timestamp is captured before reading the engine_cycles register using the reference clockid set by the user.”h]”hŒ…CPU timestamp in ns. The timestamp is captured before reading the engine_cycles register using the reference clockid set by the user.”…”�”}”(hjGÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MfhjDÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj(Üubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jCÜh´Mhhj>Ûubj¬)�”}”(hŒe``cpu_delta`` Time delta in ns captured around reading the lower dword of the engine_cycles register.”h]”(j²)�”}”(hŒ ``cpu_delta``”h]”jC)�”}”(hjhÜh]”hŒ cpu_delta”…”�”}”(hjjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjfÜubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MmhjbÜubjÃ)�”}”(hhh]”hì)�”}”(hŒWTime delta in ns captured around reading the lower dword of the engine_cycles register.”h]”hŒWTime delta in ns captured around reading the lower dword of the engine_cycles register.”…”�”}”(hj�Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j}Üh´Mmhj~Üubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjbÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j}Üh´Mmhj>Ûubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjöÚubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjªÜh]”hŒ Description”…”�”}”(hj¬Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj¨Üubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mqhj-¸h²hubhì)�”}”(hXIf a query is made with a struct drm_xe_device_query where .query is equal to DRM_XE_DEVICE_QUERY_ENGINE_CYCLES, then the reply uses struct drm_xe_query_engine_cycles in .data. struct drm_xe_query_engine_cycles is allocated by the user and .data points to this allocated structure.”h]”hXIf a query is made with a struct drm_xe_device_query where .query is equal to DRM_XE_DEVICE_QUERY_ENGINE_CYCLES, then the reply uses struct drm_xe_query_engine_cycles in .data. struct drm_xe_query_engine_cycles is allocated by the user and .data points to this allocated structure.”…”�”}”(hjÀÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MAhj-¸h²hubhì)�”}”(hŒöThe query returns the engine cycles, which along with GT's **reference_clock**, can be used to calculate the engine timestamp. In addition the query returns a set of cpu timestamps that indicate when the command streamer cycle count was captured.”h]”(hŒ=The query returns the engine cycles, which along with GT’s ”…”�”}”(hjÏÜh²hh³Nh´NubjŒ)�”}”(hŒ**reference_clock**”h]”hŒreference_clock”…”�”}”(hj×Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÏÜubhŒ¨, can be used to calculate the engine timestamp. In addition the query returns a set of cpu timestamps that indicate when the command streamer cycle count was captured.”…”�”}”(hjÏÜh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MFhj-¸h²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ%drm_xe_query_uc_fw_version (C struct)”Œc.drm_xe_query_uc_fw_version”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_query_uc_fw_version”h]”jg)�”}”(hŒ!struct drm_xe_query_uc_fw_version”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj Ýh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjÝh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MNubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjÝh²hh³jÝh´MNubj�)�”}”(hŒdrm_xe_query_uc_fw_version”h]”j–)�”}”(hjÝh]”hŒdrm_xe_query_uc_fw_version”…”�”}”(hj)Ýh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj%Ýubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjÝh²hh³jÝh´MNubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjÝh²hh³jÝh´MNubah}”(h]”jüÜah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jÝh´MNhjþÜh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ)query a micro-controller firmware version”h]”hŒ)query a micro-controller firmware version”…”�”}”(hjKÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MshjHÝh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjþÜh²hh³jÝh´MNubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjcÝjçjcÝjè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hXT**Definition**:: struct drm_xe_query_uc_fw_version { #define XE_QUERY_UC_TYPE_GUC_SUBMISSION 0; #define XE_QUERY_UC_TYPE_HUC 1; __u16 uc_type; __u16 pad; __u32 branch_ver; __u32 major_ver; __u32 minor_ver; __u32 patch_ver; __u32 pad2; __u64 reserved; }; **Members** ``uc_type`` The micro-controller type to query firmware version ``pad`` MBZ ``branch_ver`` branch uc fw version ``major_ver`` major uc fw version ``minor_ver`` minor uc fw version ``patch_ver`` patch uc fw version ``pad2`` MBZ ``reserved`` Reserved”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjoÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjkÝubhŒ:”…”�”}”(hjkÝh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MwhjgÝubj)�”}”(hX struct drm_xe_query_uc_fw_version { #define XE_QUERY_UC_TYPE_GUC_SUBMISSION 0; #define XE_QUERY_UC_TYPE_HUC 1; __u16 uc_type; __u16 pad; __u32 branch_ver; __u32 major_ver; __u32 minor_ver; __u32 patch_ver; __u32 pad2; __u64 reserved; };”h]”hX struct drm_xe_query_uc_fw_version { #define XE_QUERY_UC_TYPE_GUC_SUBMISSION 0; #define XE_QUERY_UC_TYPE_HUC 1; __u16 uc_type; __u16 pad; __u32 branch_ver; __u32 major_ver; __u32 minor_ver; __u32 patch_ver; __u32 pad2; __u64 reserved; };”…”�”}”hjˆÝsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MyhjgÝubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj™Ýh]”hŒMembers”…”�”}”(hj›Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj—Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M†hjgÝubj§)�”}”(hhh]”(j¬)�”}”(hŒ@``uc_type`` The micro-controller type to query firmware version ”h]”(j²)�”}”(hŒ ``uc_type``”h]”jC)�”}”(hj¸Ýh]”hŒuc_type”…”�”}”(hjºÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj¶Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mzhj²ÝubjÃ)�”}”(hhh]”hì)�”}”(hŒ3The micro-controller type to query firmware version”h]”hŒ3The micro-controller type to query firmware version”…”�”}”(hjÑÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÍÝh´MzhjÎÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj²Ýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÍÝh´Mzhj¯Ýubj¬)�”}”(hŒ ``pad`` MBZ ”h]”(j²)�”}”(hŒ``pad``”h]”jC)�”}”(hjñÝh]”hŒpad”…”�”}”(hjóÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjïÝubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MhjëÝubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hj Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ$``branch_ver`` branch uc fw version ”h]”(j²)�”}”(hŒ``branch_ver``”h]”jC)�”}”(hj*Þh]”hŒ branch_ver”…”�”}”(hj,Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj(Þubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M‚hj$ÞubjÃ)�”}”(hhh]”hì)�”}”(hŒbranch uc fw version”h]”hŒbranch uc fw version”…”�”}”(hjCÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ"``major_ver`` major uc fw version ”h]”(j²)�”}”(hŒ ``major_ver``”h]”jC)�”}”(hjcÞh]”hŒ major_ver”…”�”}”(hjeÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjaÞubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M„hj]ÞubjÃ)�”}”(hhh]”hì)�”}”(hŒmajor uc fw version”h]”hŒmajor uc fw version”…”�”}”(hj|Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jxÞh´M„hjyÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj]Þubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jxÞh´M„hj¯Ýubj¬)�”}”(hŒ"``minor_ver`` minor uc fw version ”h]”(j²)�”}”(hŒ ``minor_ver``”h]”jC)�”}”(hjœÞh]”hŒ minor_ver”…”�”}”(hjžÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjšÞubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M†hj–ÞubjÃ)�”}”(hhh]”hì)�”}”(hŒminor uc fw version”h]”hŒminor uc fw version”…”�”}”(hjµÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ"``patch_ver`` patch uc fw version ”h]”(j²)�”}”(hŒ ``patch_ver``”h]”jC)�”}”(hjÕÞh]”hŒ patch_ver”…”�”}”(hj×Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÓÞubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MˆhjÏÞubjÃ)�”}”(hhh]”hì)�”}”(hŒpatch uc fw version”h]”hŒpatch uc fw version”…”�”}”(hjîÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ ``pad2`` MBZ ”h]”(j²)�”}”(hŒ``pad2``”h]”jC)�”}”(hjßh]”hŒpad2”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj ßubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M‹hjßubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hj'ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ``reserved`` Reserved”h]”(j²)�”}”(hŒ ``reserved``”h]”jC)�”}”(hjGßh]”hŒreserved”…”�”}”(hjIßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjEßubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M�hjAßubjÃ)�”}”(hhh]”hì)�”}”(hŒReserved”h]”hŒReserved”…”�”}”(hj`ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MŽhj]ßubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjAßubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j\ßh´M�hj¯Ýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjgÝubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjŠßh]”hŒ Description”…”�”}”(hjŒßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjˆßubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M‘hj-¸h²hubhì)�”}”(hŒmGiven a uc_type this will return the branch, major, minor and patch version of the micro-controller firmware.”h]”hŒmGiven a uc_type this will return the branch, major, minor and patch version of the micro-controller firmware.”…”�”}”(hj ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mthj-¸h²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ"drm_xe_query_pxp_status (C struct)”Œc.drm_xe_query_pxp_status”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_query_pxp_status”h]”jg)�”}”(hŒstruct drm_xe_query_pxp_status”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjÈßh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjÄßh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mzubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖßh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjÄßh²hh³jÕßh´Mzubj�)�”}”(hŒdrm_xe_query_pxp_status”h]”j–)�”}”(hjÂßh]”hŒdrm_xe_query_pxp_status”…”�”}”(hjèßh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjäßubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjÄßh²hh³jÕßh´Mzubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjÀßh²hh³jÕßh´Mzubah}”(h]”j»ßah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jÕßh´Mzhj½ßh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒquery if PXP is ready”h]”hŒquery if PXP is ready”…”�”}”(hj àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M’hjàh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj½ßh²hh³jÕßh´Mzubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj"àjçj"àjè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hŒæ**Definition**:: struct drm_xe_query_pxp_status { __u32 status; __u32 supported_session_types; }; **Members** ``status`` current PXP status ``supported_session_types`` bitmask of supported PXP session types”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj.àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj*àubhŒ:”…”�”}”(hj*àh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M–hj&àubj)�”}”(hŒXstruct drm_xe_query_pxp_status { __u32 status; __u32 supported_session_types; };”h]”hŒXstruct drm_xe_query_pxp_status { __u32 status; __u32 supported_session_types; };”…”�”}”hjGàsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M˜hj&àubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjXàh]”hŒMembers”…”�”}”(hjZàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjVàubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M�hj&àubj§)�”}”(hhh]”(j¬)�”}”(hŒ``status`` current PXP status ”h]”(j²)�”}”(hŒ ``status``”h]”jC)�”}”(hjwàh]”hŒstatus”…”�”}”(hjyàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjuàubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M¬hjqàubjÃ)�”}”(hhh]”hì)�”}”(hŒcurrent PXP status”h]”hŒcurrent PXP status”…”�”}”(hj�àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jŒàh´M¬hj�àubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjqàubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jŒàh´M¬hjnàubj¬)�”}”(hŒB``supported_session_types`` bitmask of supported PXP session types”h]”(j²)�”}”(hŒ``supported_session_types``”h]”jC)�”}”(hj°àh]”hŒsupported_session_types”…”�”}”(hj²àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj®àubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M®hjªàubjÃ)�”}”(hhh]”hì)�”}”(hŒ&bitmask of supported PXP session types”h]”hŒ&bitmask of supported PXP session types”…”�”}”(hjÉàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M¯hjÆàubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjªàubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÅàh´M®hjnàubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj&àubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjóàh]”hŒ Description”…”�”}”(hjõàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjñàubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M²hj-¸h²hubhì)�”}”(hŒœIf PXP is enabled and no fatal error has occurred, the status will be set to one of the following values: 0: PXP init still in progress 1: PXP init complete”h]”hŒœIf PXP is enabled and no fatal error has occurred, the status will be set to one of the following values: 0: PXP init still in progress 1: PXP init complete”…”�”}”(hj áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M“hj-¸h²hubhì)�”}”(hXXIf PXP is not enabled or something has gone wrong, the query will be failed with one of the following error codes: -ENODEV: PXP not supported or disabled; -EIO: fatal error occurred during init, so PXP will never be enabled; -EINVAL: incorrect value provided as part of the query; -EFAULT: error copying the memory between kernel and userspace.”h]”hXXIf PXP is not enabled or something has gone wrong, the query will be failed with one of the following error codes: -ENODEV: PXP not supported or disabled; -EIO: fatal error occurred during init, so PXP will never be enabled; -EINVAL: incorrect value provided as part of the query; -EFAULT: error copying the memory between kernel and userspace.”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M˜hj-¸h²hubhì)�”}”(hX.The status can only be 0 in the first few seconds after driver load. If everything works as expected, the status will transition to init complete in less than 1 second, while in case of errors the driver might take longer to start returning an error code, but it should still take less than 10 seconds.”h]”hX.The status can only be 0 in the first few seconds after driver load. If everything works as expected, the status will transition to init complete in less than 1 second, while in case of errors the driver might take longer to start returning an error code, but it should still take less than 10 seconds.”…”�”}”(hj'áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MŸhj-¸h²hubhì)�”}”(hŒ¦The supported session type bitmask is based on the values in enum drm_xe_pxp_session_type. TYPE_NONE is always supported and therefore is not reported in the bitmask.”h]”hŒ¦The supported session type bitmask is based on the values in enum drm_xe_pxp_session_type. TYPE_NONE is always supported and therefore is not reported in the bitmask.”…”�”}”(hj6áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M¤hj-¸h²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_xe_device_query (C struct)”Œc.drm_xe_device_query”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_device_query”h]”jg)�”}”(hŒstruct drm_xe_device_query”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj^áh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjZáh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M«ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjláh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjZáh²hh³jkáh´M«ubj�)�”}”(hŒdrm_xe_device_query”h]”j–)�”}”(hjXáh]”hŒdrm_xe_device_query”…”�”}”(hj~áh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjzáubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjZáh²hh³jkáh´M«ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjVáh²hh³jkáh´M«ubah}”(h]”jQáah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jkáh´M«hjSáh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒYInput of :c:type:`DRM_IOCTL_XE_DEVICE_QUERY` - main structure to query device information”h]”(hŒ Input of ”…”�”}”(hj áh²hh³Nh´Nubh)�”}”(hŒ#:c:type:`DRM_IOCTL_XE_DEVICE_QUERY`”h]”jC)�”}”(hjªáh]”hŒDRM_IOCTL_XE_DEVICE_QUERY”…”�”}”(hj¬áh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj¨áubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j»)�”}”j¾]”j¹Œ ASTIdentifier”“”)�”}”Œ identifier”jXásbŒc.drm_xe_device_query”†”asbjÀŒDRM_IOCTL_XE_DEVICE_QUERY”uh1hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Khj áubhŒ- - main structure to query device information”…”�”}”(hj áh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M³hj�áh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjSáh²hh³jkáh´M«ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjæájçjæájè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hX¿**Definition**:: struct drm_xe_device_query { __u64 extensions; #define DRM_XE_DEVICE_QUERY_ENGINES 0; #define DRM_XE_DEVICE_QUERY_MEM_REGIONS 1; #define DRM_XE_DEVICE_QUERY_CONFIG 2; #define DRM_XE_DEVICE_QUERY_GT_LIST 3; #define DRM_XE_DEVICE_QUERY_HWCONFIG 4; #define DRM_XE_DEVICE_QUERY_GT_TOPOLOGY 5; #define DRM_XE_DEVICE_QUERY_ENGINE_CYCLES 6; #define DRM_XE_DEVICE_QUERY_UC_FW_VERSION 7; #define DRM_XE_DEVICE_QUERY_OA_UNITS 8; #define DRM_XE_DEVICE_QUERY_PXP_STATUS 9; #define DRM_XE_DEVICE_QUERY_EU_STALL 10; __u32 query; __u32 size; __u64 data; __u64 reserved[2]; }; **Members** ``extensions`` Pointer to the first extension struct, if any ``query`` The type of data to query ``size`` Size of the queried data ``data`` Queried data is placed here ``reserved`` Reserved”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjòáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjîáubhŒ:”…”�”}”(hjîáh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M·hjêáubj)�”}”(hX¯struct drm_xe_device_query { __u64 extensions; #define DRM_XE_DEVICE_QUERY_ENGINES 0; #define DRM_XE_DEVICE_QUERY_MEM_REGIONS 1; #define DRM_XE_DEVICE_QUERY_CONFIG 2; #define DRM_XE_DEVICE_QUERY_GT_LIST 3; #define DRM_XE_DEVICE_QUERY_HWCONFIG 4; #define DRM_XE_DEVICE_QUERY_GT_TOPOLOGY 5; #define DRM_XE_DEVICE_QUERY_ENGINE_CYCLES 6; #define DRM_XE_DEVICE_QUERY_UC_FW_VERSION 7; #define DRM_XE_DEVICE_QUERY_OA_UNITS 8; #define DRM_XE_DEVICE_QUERY_PXP_STATUS 9; #define DRM_XE_DEVICE_QUERY_EU_STALL 10; __u32 query; __u32 size; __u64 data; __u64 reserved[2]; };”h]”hX¯struct drm_xe_device_query { __u64 extensions; #define DRM_XE_DEVICE_QUERY_ENGINES 0; #define DRM_XE_DEVICE_QUERY_MEM_REGIONS 1; #define DRM_XE_DEVICE_QUERY_CONFIG 2; #define DRM_XE_DEVICE_QUERY_GT_LIST 3; #define DRM_XE_DEVICE_QUERY_HWCONFIG 4; #define DRM_XE_DEVICE_QUERY_GT_TOPOLOGY 5; #define DRM_XE_DEVICE_QUERY_ENGINE_CYCLES 6; #define DRM_XE_DEVICE_QUERY_UC_FW_VERSION 7; #define DRM_XE_DEVICE_QUERY_OA_UNITS 8; #define DRM_XE_DEVICE_QUERY_PXP_STATUS 9; #define DRM_XE_DEVICE_QUERY_EU_STALL 10; __u32 query; __u32 size; __u64 data; __u64 reserved[2]; };”…”�”}”hj âsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M¹hjêáubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjâh]”hŒMembers”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjâubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÌhjêáubj§)�”}”(hhh]”(j¬)�”}”(hŒ=``extensions`` Pointer to the first extension struct, if any ”h]”(j²)�”}”(hŒ``extensions``”h]”jC)�”}”(hj;âh]”hŒ extensions”…”�”}”(hj=âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj9âubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mòhj5âubjÃ)�”}”(hhh]”hì)�”}”(hŒ-Pointer to the first extension struct, if any”h]”hŒ-Pointer to the first extension struct, if any”…”�”}”(hjTâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jPâh´MòhjQâubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj5âubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jPâh´Mòhj2âubj¬)�”}”(hŒ$``query`` The type of data to query ”h]”(j²)�”}”(hŒ ``query``”h]”jC)�”}”(hjtâh]”hŒquery”…”�”}”(hjvâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjrâubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MhjnâubjÃ)�”}”(hhh]”hì)�”}”(hŒThe type of data to query”h]”hŒThe type of data to query”…”�”}”(hj�âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j‰âh´MhjŠâubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjnâubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j‰âh´Mhj2âubj¬)�”}”(hŒ"``size`` Size of the queried data ”h]”(j²)�”}”(hŒ``size``”h]”jC)�”}”(hj­âh]”hŒsize”…”�”}”(hj¯âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj«âubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhj§âubjÃ)�”}”(hhh]”hì)�”}”(hŒSize of the queried data”h]”hŒSize of the queried data”…”�”}”(hjÆâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÂâh´MhjÃâubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj§âubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÂâh´Mhj2âubj¬)�”}”(hŒ%``data`` Queried data is placed here ”h]”(j²)�”}”(hŒ``data``”h]”jC)�”}”(hjæâh]”hŒdata”…”�”}”(hjèâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjäâubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MhjàâubjÃ)�”}”(hhh]”hì)�”}”(hŒQueried data is placed here”h]”hŒQueried data is placed here”…”�”}”(hjÿâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jûâh´Mhjüâubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjàâubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jûâh´Mhj2âubj¬)�”}”(hŒ``reserved`` Reserved”h]”(j²)�”}”(hŒ ``reserved``”h]”jC)�”}”(hjãh]”hŒreserved”…”�”}”(hj!ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjãubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MhjãubjÃ)�”}”(hhh]”hì)�”}”(hŒReserved”h]”hŒReserved”…”�”}”(hj8ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M hj5ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjãubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j4ãh´Mhj2âubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjêáubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjbãh]”hŒ Description”…”�”}”(hjdãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj`ãubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M hj-¸h²hubhì)�”}”(hŒÕThe user selects the type of data to query among DRM_XE_DEVICE_QUERY_* and sets the value in the query member. This determines the type of the structure provided by the driver in data, among struct drm_xe_query_*.”h]”hŒÕThe user selects the type of data to query among DRM_XE_DEVICE_QUERY_* and sets the value in the query member. This determines the type of the structure provided by the driver in data, among struct drm_xe_query_*.”…”�”}”(hjxãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M´hj-¸h²hubj§)�”}”(hhh]”j¬)�”}”(hX\The **query** can be: - ``DRM_XE_DEVICE_QUERY_ENGINES`` - ``DRM_XE_DEVICE_QUERY_MEM_REGIONS`` - ``DRM_XE_DEVICE_QUERY_CONFIG`` - ``DRM_XE_DEVICE_QUERY_GT_LIST`` - ``DRM_XE_DEVICE_QUERY_HWCONFIG`` - Query type to retrieve the hardware configuration of the device such as information on slices, memory, caches, and so on. It is provided as a table of key / value attributes. - ``DRM_XE_DEVICE_QUERY_GT_TOPOLOGY`` - ``DRM_XE_DEVICE_QUERY_ENGINE_CYCLES`` - ``DRM_XE_DEVICE_QUERY_UC_FW_VERSION`` - ``DRM_XE_DEVICE_QUERY_OA_UNITS`` - ``DRM_XE_DEVICE_QUERY_PXP_STATUS`` - ``DRM_XE_DEVICE_QUERY_EU_STALL`` ”h]”(j²)�”}”(hŒThe **query** can be:”h]”(hŒThe ”…”�”}”(hjŽãh²hh³Nh´NubjŒ)�”}”(hŒ **query**”h]”hŒquery”…”�”}”(hj–ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjŽãubhŒ can be:”…”�”}”(hjŽãh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÆhjŠãubjÃ)�”}”(hhh]”hâ)�”}”(hhh]”(hç)�”}”(hŒ``DRM_XE_DEVICE_QUERY_ENGINES``”h]”hì)�”}”(hj·ãh]”jC)�”}”(hj·ãh]”hŒDRM_XE_DEVICE_QUERY_ENGINES”…”�”}”(hj¼ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj¹ãubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M¹hjµãubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj²ãubhç)�”}”(hŒ#``DRM_XE_DEVICE_QUERY_MEM_REGIONS``”h]”hì)�”}”(hjØãh]”jC)�”}”(hjØãh]”hŒDRM_XE_DEVICE_QUERY_MEM_REGIONS”…”�”}”(hjÝãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÚãubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MºhjÖãubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj²ãubhç)�”}”(hŒ``DRM_XE_DEVICE_QUERY_CONFIG``”h]”hì)�”}”(hjùãh]”jC)�”}”(hjùãh]”hŒDRM_XE_DEVICE_QUERY_CONFIG”…”�”}”(hjþãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjûãubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M»hj÷ãubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj²ãubhç)�”}”(hŒ``DRM_XE_DEVICE_QUERY_GT_LIST``”h]”hì)�”}”(hjäh]”jC)�”}”(hjäh]”hŒDRM_XE_DEVICE_QUERY_GT_LIST”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjäubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M¼hjäubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj²ãubhç)�”}”(hŒÑ``DRM_XE_DEVICE_QUERY_HWCONFIG`` - Query type to retrieve the hardware configuration of the device such as information on slices, memory, caches, and so on. It is provided as a table of key / value attributes.”h]”hì)�”}”(hŒÑ``DRM_XE_DEVICE_QUERY_HWCONFIG`` - Query type to retrieve the hardware configuration of the device such as information on slices, memory, caches, and so on. It is provided as a table of key / value attributes.”h]”(jC)�”}”(hŒ ``DRM_XE_DEVICE_QUERY_HWCONFIG``”h]”hŒDRM_XE_DEVICE_QUERY_HWCONFIG”…”�”}”(hjAäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj=äubhŒ± - Query type to retrieve the hardware configuration of the device such as information on slices, memory, caches, and so on. It is provided as a table of key / value attributes.”…”�”}”(hj=äh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M½hj9äubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj²ãubhç)�”}”(hŒ#``DRM_XE_DEVICE_QUERY_GT_TOPOLOGY``”h]”hì)�”}”(hjbäh]”jC)�”}”(hjbäh]”hŒDRM_XE_DEVICE_QUERY_GT_TOPOLOGY”…”�”}”(hjgäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjdäubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÁhj`äubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj²ãubhç)�”}”(hŒ%``DRM_XE_DEVICE_QUERY_ENGINE_CYCLES``”h]”hì)�”}”(hjƒäh]”jC)�”}”(hjƒäh]”hŒ!DRM_XE_DEVICE_QUERY_ENGINE_CYCLES”…”�”}”(hjˆäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj…äubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÂhj�äubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj²ãubhç)�”}”(hŒ%``DRM_XE_DEVICE_QUERY_UC_FW_VERSION``”h]”hì)�”}”(hj¤äh]”jC)�”}”(hj¤äh]”hŒ!DRM_XE_DEVICE_QUERY_UC_FW_VERSION”…”�”}”(hj©äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj¦äubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÃhj¢äubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj²ãubhç)�”}”(hŒ ``DRM_XE_DEVICE_QUERY_OA_UNITS``”h]”hì)�”}”(hjÅäh]”jC)�”}”(hjÅäh]”hŒDRM_XE_DEVICE_QUERY_OA_UNITS”…”�”}”(hjÊäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÇäubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÄhjÃäubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj²ãubhç)�”}”(hŒ"``DRM_XE_DEVICE_QUERY_PXP_STATUS``”h]”hì)�”}”(hjæäh]”jC)�”}”(hjæäh]”hŒDRM_XE_DEVICE_QUERY_PXP_STATUS”…”�”}”(hjëäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjèäubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÅhjääubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj²ãubhç)�”}”(hŒ!``DRM_XE_DEVICE_QUERY_EU_STALL`` ”h]”hì)�”}”(hŒ ``DRM_XE_DEVICE_QUERY_EU_STALL``”h]”jC)�”}”(hj åh]”hŒDRM_XE_DEVICE_QUERY_EU_STALL”…”�”}”(hj åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj åubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j®ãh´MÆhjåubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj²ãubeh}”(h]”h ]”h"]”h$]”h&]”jÀ jÁ uh1há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‡ãubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj-¸h²hh³Nh´Nubhì)�”}”(hX-If size is set to 0, the driver fills it with the required size for the requested type of data to query. If size is equal to the required size, the queried information is copied into data. If size is set to a value different from 0 and different from the required size, the IOCTL call returns -EINVAL.”h]”hX-If size is set to 0, the driver fills it with the required size for the requested type of data to query. If size is equal to the required size, the queried information is copied into data. If size is set to a value different from 0 and different from the required size, the IOCTL call returns -EINVAL.”…”�”}”(hj>åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÈhj-¸h²hubhì)�”}”(hŒŒFor example the following code snippet allows retrieving and printing information about the device engines with DRM_XE_DEVICE_QUERY_ENGINES:”h]”hŒŒFor example the following code snippet allows retrieving and printing information about the device engines with DRM_XE_DEVICE_QUERY_ENGINES:”…”�”}”(hjMåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÎhj-¸h²hubj)�”}”(hXÜstruct drm_xe_query_engines *engines; struct drm_xe_device_query query = { .extensions = 0, .query = DRM_XE_DEVICE_QUERY_ENGINES, .size = 0, .data = 0, }; ioctl(fd, DRM_IOCTL_XE_DEVICE_QUERY, &query); engines = malloc(query.size); query.data = (uintptr_t)engines; ioctl(fd, DRM_IOCTL_XE_DEVICE_QUERY, &query); for (int i = 0; i < engines->num_engines; i++) { printf("Engine %d: %s\n", i, engines->engines[i].instance.engine_class == DRM_XE_ENGINE_CLASS_RENDER ? "RENDER": engines->engines[i].instance.engine_class == DRM_XE_ENGINE_CLASS_COPY ? "COPY": engines->engines[i].instance.engine_class == DRM_XE_ENGINE_CLASS_VIDEO_DECODE ? "VIDEO_DECODE": engines->engines[i].instance.engine_class == DRM_XE_ENGINE_CLASS_VIDEO_ENHANCE ? "VIDEO_ENHANCE": engines->engines[i].instance.engine_class == DRM_XE_ENGINE_CLASS_COMPUTE ? "COMPUTE": "UNKNOWN"); } free(engines);”h]”hXÜstruct drm_xe_query_engines *engines; struct drm_xe_device_query query = { .extensions = 0, .query = DRM_XE_DEVICE_QUERY_ENGINES, .size = 0, .data = 0, }; ioctl(fd, DRM_IOCTL_XE_DEVICE_QUERY, &query); engines = malloc(query.size); query.data = (uintptr_t)engines; ioctl(fd, DRM_IOCTL_XE_DEVICE_QUERY, &query); for (int i = 0; i < engines->num_engines; i++) { printf("Engine %d: %s\n", i, engines->engines[i].instance.engine_class == DRM_XE_ENGINE_CLASS_RENDER ? "RENDER": engines->engines[i].instance.engine_class == DRM_XE_ENGINE_CLASS_COPY ? "COPY": engines->engines[i].instance.engine_class == DRM_XE_ENGINE_CLASS_VIDEO_DECODE ? "VIDEO_DECODE": engines->engines[i].instance.engine_class == DRM_XE_ENGINE_CLASS_VIDEO_ENHANCE ? "VIDEO_ENHANCE": engines->engines[i].instance.engine_class == DRM_XE_ENGINE_CLASS_COMPUTE ? "COMPUTE": "UNKNOWN"); } free(engines);”…”�”}”hj\åsbah}”(h]”h ]”h"]”h$]”h&]”j­j®j¾‰j¿jÀjÁ}”uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÑhj-¸h²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_xe_gem_create (C struct)”Œc.drm_xe_gem_create”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_gem_create”h]”jg)�”}”(hŒstruct drm_xe_gem_create”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj…åh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj�åh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”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Œdrm_xe_gem_create”h]”j–)�”}”(hjåh]”hŒdrm_xe_gem_create”…”�”}”(hj¥åh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj¡åubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj�åh²hh³j’åh´Mñubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hj}åh²hh³j’åh´Mñubah}”(h]”jxåah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³j’åh´Mñhjzåh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒIInput of :c:type:`DRM_IOCTL_XE_GEM_CREATE` - A structure for gem creation”h]”(hŒ Input of ”…”�”}”(hjÇåh²hh³Nh´Nubh)�”}”(hŒ!:c:type:`DRM_IOCTL_XE_GEM_CREATE`”h]”jC)�”}”(hjÑåh]”hŒDRM_IOCTL_XE_GEM_CREATE”…”�”}”(hjÓåh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjÏåubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j»)�”}”j¾]”jÊá)�”}”jÍájåsbŒc.drm_xe_gem_create”†”asbjÀŒDRM_IOCTL_XE_GEM_CREATE”uh1hh³jÑáh´KhjÇåubhŒ - A structure for gem creation”…”�”}”(hjÇåh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M hjÄåh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjzåh²hh³j’åh´Mñubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj æjçj æjè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hX **Definition**:: struct drm_xe_gem_create { #define DRM_XE_GEM_CREATE_EXTENSION_SET_PROPERTY 0; #define DRM_XE_GEM_CREATE_SET_PROPERTY_PXP_TYPE 0; __u64 extensions; __u64 size; __u32 placement; #define DRM_XE_GEM_CREATE_FLAG_DEFER_BACKING (1 << 0); #define DRM_XE_GEM_CREATE_FLAG_SCANOUT (1 << 1); #define DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM (1 << 2); #define DRM_XE_GEM_CREATE_FLAG_NO_COMPRESSION (1 << 3); __u32 flags; __u32 vm_id; __u32 handle; #define DRM_XE_GEM_CPU_CACHING_WB 1; #define DRM_XE_GEM_CPU_CACHING_WC 2; __u16 cpu_caching; __u16 pad[3]; __u64 reserved[2]; }; **Members** ``extensions`` Pointer to the first extension struct, if any ``size`` Size of the object to be created, must match region (system or vram) minimum alignment (:c:type:`min_page_size`). ``placement`` A mask of memory instances of where BO can be placed. Each index in this mask refers directly to the struct drm_xe_query_mem_regions' instance, no assumptions should be made about order. The type of each region is described by struct drm_xe_query_mem_regions' mem_class. ``flags`` Flags for the GEM object, see DRM_XE_GEM_CREATE_FLAG_* ``vm_id`` Attached VM, if any If a VM is specified, this BO must: 1. Only ever be bound to that VM. 2. Cannot be exported as a PRIME fd. ``handle`` Returned handle for the object. Object handles are nonzero. ``cpu_caching`` The CPU caching mode to select for this object. If mmapping the object the mode selected here will also be used. The exception is when mapping system memory (including data evicted to system) on discrete GPUs. The caching mode selected will then be overridden to DRM_XE_GEM_CPU_CACHING_WB, and coherency between GPU- and CPU is guaranteed. The caching mode of existing CPU-mappings will be updated transparently to user-space clients. ``pad`` MBZ ``reserved`` Reserved”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjæubhŒ:”…”�”}”(hjæh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhj æubj)�”}”(hX¼struct drm_xe_gem_create { #define DRM_XE_GEM_CREATE_EXTENSION_SET_PROPERTY 0; #define DRM_XE_GEM_CREATE_SET_PROPERTY_PXP_TYPE 0; __u64 extensions; __u64 size; __u32 placement; #define DRM_XE_GEM_CREATE_FLAG_DEFER_BACKING (1 << 0); #define DRM_XE_GEM_CREATE_FLAG_SCANOUT (1 << 1); #define DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM (1 << 2); #define DRM_XE_GEM_CREATE_FLAG_NO_COMPRESSION (1 << 3); __u32 flags; __u32 vm_id; __u32 handle; #define DRM_XE_GEM_CPU_CACHING_WB 1; #define DRM_XE_GEM_CPU_CACHING_WC 2; __u16 cpu_caching; __u16 pad[3]; __u64 reserved[2]; };”h]”hX¼struct drm_xe_gem_create { #define DRM_XE_GEM_CREATE_EXTENSION_SET_PROPERTY 0; #define DRM_XE_GEM_CREATE_SET_PROPERTY_PXP_TYPE 0; __u64 extensions; __u64 size; __u32 placement; #define DRM_XE_GEM_CREATE_FLAG_DEFER_BACKING (1 << 0); #define DRM_XE_GEM_CREATE_FLAG_SCANOUT (1 << 1); #define DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM (1 << 2); #define DRM_XE_GEM_CREATE_FLAG_NO_COMPRESSION (1 << 3); __u32 flags; __u32 vm_id; __u32 handle; #define DRM_XE_GEM_CPU_CACHING_WB 1; #define DRM_XE_GEM_CPU_CACHING_WC 2; __u16 cpu_caching; __u16 pad[3]; __u64 reserved[2]; };”…”�”}”hj.æsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhj æubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj?æh]”hŒMembers”…”�”}”(hjAæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj=æubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M'hj æubj§)�”}”(hhh]”(j¬)�”}”(hŒ=``extensions`` Pointer to the first extension struct, if any ”h]”(j²)�”}”(hŒ``extensions``”h]”jC)�”}”(hj^æh]”hŒ extensions”…”�”}”(hj`æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj\æubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MOhjXæubjÃ)�”}”(hhh]”hì)�”}”(hŒ-Pointer to the first extension struct, if any”h]”hŒ-Pointer to the first extension struct, if any”…”�”}”(hjwæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jsæh´MOhjtæubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjXæubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jsæh´MOhjUæubj¬)�”}”(hŒ{``size`` Size of the object to be created, must match region (system or vram) minimum alignment (:c:type:`min_page_size`). ”h]”(j²)�”}”(hŒ``size``”h]”jC)�”}”(hj—æh]”hŒsize”…”�”}”(hj™æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj•æubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MThj‘æubjÃ)�”}”(hhh]”hì)�”}”(hŒqSize of the object to be created, must match region (system or vram) minimum alignment (:c:type:`min_page_size`).”h]”(hŒXSize of the object to be created, must match region (system or vram) minimum alignment (”…”�”}”(hj°æh²hh³Nh´Nubh)�”}”(hŒ:c:type:`min_page_size`”h]”jC)�”}”(hjºæh]”hŒ min_page_size”…”�”}”(hj¼æh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj¸æubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒ min_page_size”uh1hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MShj°æubhŒ).”…”�”}”(hj°æh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j׿h´MShj­æubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj‘æubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j¬æh´MThjUæubj¬)�”}”(hX``placement`` A mask of memory instances of where BO can be placed. Each index in this mask refers directly to the struct drm_xe_query_mem_regions' instance, no assumptions should be made about order. The type of each region is described by struct drm_xe_query_mem_regions' mem_class. ”h]”(j²)�”}”(hŒ ``placement``”h]”jC)�”}”(hjôæh]”hŒ placement”…”�”}”(hjöæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjòæubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M]hjîæubjÃ)�”}”(hhh]”hì)�”}”(hXA mask of memory instances of where BO can be placed. Each index in this mask refers directly to the struct drm_xe_query_mem_regions' instance, no assumptions should be made about order. The type of each region is described by struct drm_xe_query_mem_regions' mem_class.”h]”hXA mask of memory instances of where BO can be placed. Each index in this mask refers directly to the struct drm_xe_query_mem_regions’ instance, no assumptions should be made about order. The type of each region is described by struct drm_xe_query_mem_regions’ mem_class.”…”�”}”(hj çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”•Ûh´MYhj çubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjîæubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j çh´M]hjUæubj¬)�”}”(hŒA``flags`` Flags for the GEM object, see DRM_XE_GEM_CREATE_FLAG_* ”h]”(j²)�”}”(hŒ ``flags``”h]”jC)�”}”(hj.çh]”hŒflags”…”�”}”(hj0çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj,çubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mfhj(çubjÃ)�”}”(hhh]”hì)�”}”(hŒ6Flags for the GEM object, see DRM_XE_GEM_CREATE_FLAG_*”h]”hŒ6Flags for the GEM object, see DRM_XE_GEM_CREATE_FLAG_*”…”�”}”(hjGçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jCçh´MfhjDçubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj(çubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jCçh´MfhjUæubj¬)�”}”(hŒ�``vm_id`` Attached VM, if any If a VM is specified, this BO must: 1. Only ever be bound to that VM. 2. Cannot be exported as a PRIME fd. ”h]”(j²)�”}”(hŒ ``vm_id``”h]”jC)�”}”(hjgçh]”hŒvm_id”…”�”}”(hjiçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjeçubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MphjaçubjÃ)�”}”(hhh]”(hì)�”}”(hŒAttached VM, if any”h]”hŒAttached VM, if any”…”�”}”(hj€çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mkhj}çubhì)�”}”(hŒ#If a VM is specified, this BO must:”h]”hŒ#If a VM is specified, this BO must:”…”�”}”(hj�çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mmhj}çubjK)�”}”(hŒG1. Only ever be bound to that VM. 2. Cannot be exported as a PRIME fd. ”h]”jJ5)�”}”(hhh]”(hç)�”}”(hŒOnly ever be bound to that VM.”h]”hì)�”}”(hj§çh]”hŒOnly ever be bound to that VM.”…”�”}”(hj©çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mohj¥çubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj¢çubhç)�”}”(hŒ"Cannot be exported as a PRIME fd. ”h]”hì)�”}”(hŒ!Cannot be exported as a PRIME fd.”h]”hŒ!Cannot be exported as a PRIME fd.”…”�”}”(hjÁçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j|çh´Mphj½çubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj¢çubeh}”(h]”h ]”h"]”h$]”h&]”jï5jð5jñ5hjò5jó5uh1jI5hjžçubah}”(h]”h ]”h"]”h$]”h&]”uh1jJh³j¶çh´Mohj}çubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjaçubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j|çh´MphjUæubj¬)�”}”(hŒH``handle`` Returned handle for the object. Object handles are nonzero. ”h]”(j²)�”}”(hŒ ``handle``”h]”jC)�”}”(hjóçh]”hŒhandle”…”�”}”(hjõçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjñçubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MwhjíçubjÃ)�”}”(hhh]”(hì)�”}”(hŒReturned handle for the object.”h]”hŒReturned handle for the object.”…”�”}”(hj èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Muhj èubhì)�”}”(hŒObject handles are nonzero.”h]”hŒObject handles are nonzero.”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jèh´Mwhj èubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjíçubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jèh´MwhjUæubj¬)�”}”(hXÃ``cpu_caching`` The CPU caching mode to select for this object. If mmapping the object the mode selected here will also be used. The exception is when mapping system memory (including data evicted to system) on discrete GPUs. The caching mode selected will then be overridden to DRM_XE_GEM_CPU_CACHING_WB, and coherency between GPU- and CPU is guaranteed. The caching mode of existing CPU-mappings will be updated transparently to user-space clients. ”h]”(j²)�”}”(hŒ``cpu_caching``”h]”jC)�”}”(hj;èh]”hŒ cpu_caching”…”�”}”(hj=èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj9èubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M…hj5èubjÃ)�”}”(hhh]”hì)�”}”(hX²The CPU caching mode to select for this object. If mmapping the object the mode selected here will also be used. The exception is when mapping system memory (including data evicted to system) on discrete GPUs. The caching mode selected will then be overridden to DRM_XE_GEM_CPU_CACHING_WB, and coherency between GPU- and CPU is guaranteed. The caching mode of existing CPU-mappings will be updated transparently to user-space clients.”h]”hX²The CPU caching mode to select for this object. If mmapping the object the mode selected here will also be used. The exception is when mapping system memory (including data evicted to system) on discrete GPUs. The caching mode selected will then be overridden to DRM_XE_GEM_CPU_CACHING_WB, and coherency between GPU- and CPU is guaranteed. The caching mode of existing CPU-mappings will be updated transparently to user-space clients.”…”�”}”(hjTèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M~hjQèubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj5èubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jPèh´M…hjUæubj¬)�”}”(hŒ ``pad`` MBZ ”h]”(j²)�”}”(hŒ``pad``”h]”jC)�”}”(hjuèh]”hŒpad”…”�”}”(hjwèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjsèubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MˆhjoèubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hjŽèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jŠèh´Mˆhj‹èubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjoèubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jŠèh´MˆhjUæubj¬)�”}”(hŒ``reserved`` Reserved”h]”(j²)�”}”(hŒ ``reserved``”h]”jC)�”}”(hj®èh]”hŒreserved”…”�”}”(hj°èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj¬èubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MŠhj¨èubjÃ)�”}”(hhh]”hì)�”}”(hŒReserved”h]”hŒReserved”…”�”}”(hjÇèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M‹hjÄèubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj¨èubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÃèh´MŠhjUæubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj æubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjñèh]”hŒ Description”…”�”}”(hjóèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjïèubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MŽhj-¸h²hubj§)�”}”(hhh]”j¬)�”}”(hX'The **flags** can be: - ``DRM_XE_GEM_CREATE_FLAG_DEFER_BACKING`` - Modify the GEM object allocation strategy by deferring physical memory allocation until the object is either bound to a virtual memory region via VM_BIND or accessed by the CPU. As a result, no backing memory is reserved at the time of GEM object creation. - ``DRM_XE_GEM_CREATE_FLAG_SCANOUT`` - Indicates that the GEM object is intended for scanout via the display engine. When set, kernel ensures that the allocation is placed in a memory region compatible with the display engine requirements. This may impose restrictions on tiling, alignment, and memory placement to guarantee proper display functionality. - ``DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM`` - When using VRAM as a possible placement, ensure that the corresponding VRAM allocation will always use the CPU accessible part of VRAM. This is important for small-bar systems (on full-bar systems this gets turned into a noop). Note1: System memory can be used as an extra placement if the kernel should spill the allocation to system memory, if space can't be made available in the CPU accessible part of VRAM (giving the same behaviour as the i915 interface, see I915_GEM_CREATE_EXT_FLAG_NEEDS_CPU_ACCESS). Note2: For clear-color CCS surfaces the kernel needs to read the clear-color value stored in the buffer, and on discrete platforms we need to use VRAM for display surfaces, therefore the kernel requires setting this flag for such objects, otherwise an error is thrown on small-bar systems. - ``DRM_XE_GEM_CREATE_FLAG_NO_COMPRESSION`` - Allows userspace to hint that compression (CCS) should be disabled for the buffer being created. This can avoid unnecessary memory operations and CCS state management. On pre-Xe2 platforms, this flag is currently rejected as compression control is not supported via PAT index. On Xe2+ platforms, compression is controlled via PAT entries. If this flag is set, the driver will reject any VM bind that requests a PAT index enabling compression for this BO. ”h]”(j²)�”}”(hŒThe **flags** can be:”h]”(hŒThe ”…”�”}”(hjéh²hh³Nh´NubjŒ)�”}”(hŒ **flags**”h]”hŒflags”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjéubhŒ can be:”…”�”}”(hjéh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M/hj éubjÃ)�”}”(hhh]”hâ)�”}”(hhh]”(hç)�”}”(hX+``DRM_XE_GEM_CREATE_FLAG_DEFER_BACKING`` - Modify the GEM object allocation strategy by deferring physical memory allocation until the object is either bound to a virtual memory region via VM_BIND or accessed by the CPU. As a result, no backing memory is reserved at the time of GEM object creation.”h]”hì)�”}”(hX+``DRM_XE_GEM_CREATE_FLAG_DEFER_BACKING`` - Modify the GEM object allocation strategy by deferring physical memory allocation until the object is either bound to a virtual memory region via VM_BIND or accessed by the CPU. As a result, no backing memory is reserved at the time of GEM object creation.”h]”(jC)�”}”(hŒ(``DRM_XE_GEM_CREATE_FLAG_DEFER_BACKING``”h]”hŒ$DRM_XE_GEM_CREATE_FLAG_DEFER_BACKING”…”�”}”(hj=éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj9éubhX - Modify the GEM object allocation strategy by deferring physical memory allocation until the object is either bound to a virtual memory region via VM_BIND or accessed by the CPU. As a result, no backing memory is reserved at the time of GEM object creation.”…”�”}”(hj9éh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhj5éubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj2éubhç)�”}”(hX```DRM_XE_GEM_CREATE_FLAG_SCANOUT`` - Indicates that the GEM object is intended for scanout via the display engine. When set, kernel ensures that the allocation is placed in a memory region compatible with the display engine requirements. This may impose restrictions on tiling, alignment, and memory placement to guarantee proper display functionality.”h]”hì)�”}”(hX```DRM_XE_GEM_CREATE_FLAG_SCANOUT`` - Indicates that the GEM object is intended for scanout via the display engine. When set, kernel ensures that the allocation is placed in a memory region compatible with the display engine requirements. This may impose restrictions on tiling, alignment, and memory placement to guarantee proper display functionality.”h]”(jC)�”}”(hŒ"``DRM_XE_GEM_CREATE_FLAG_SCANOUT``”h]”hŒDRM_XE_GEM_CREATE_FLAG_SCANOUT”…”�”}”(hjdéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj`éubhX> - Indicates that the GEM object is intended for scanout via the display engine. When set, kernel ensures that the allocation is placed in a memory region compatible with the display engine requirements. This may impose restrictions on tiling, alignment, and memory placement to guarantee proper display functionality.”…”�”}”(hj`éh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhj\éubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj2éubhç)�”}”(hXN``DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM`` - When using VRAM as a possible placement, ensure that the corresponding VRAM allocation will always use the CPU accessible part of VRAM. This is important for small-bar systems (on full-bar systems this gets turned into a noop). Note1: System memory can be used as an extra placement if the kernel should spill the allocation to system memory, if space can't be made available in the CPU accessible part of VRAM (giving the same behaviour as the i915 interface, see I915_GEM_CREATE_EXT_FLAG_NEEDS_CPU_ACCESS). Note2: For clear-color CCS surfaces the kernel needs to read the clear-color value stored in the buffer, and on discrete platforms we need to use VRAM for display surfaces, therefore the kernel requires setting this flag for such objects, otherwise an error is thrown on small-bar systems.”h]”hì)�”}”(hXN``DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM`` - When using VRAM as a possible placement, ensure that the corresponding VRAM allocation will always use the CPU accessible part of VRAM. This is important for small-bar systems (on full-bar systems this gets turned into a noop). Note1: System memory can be used as an extra placement if the kernel should spill the allocation to system memory, if space can't be made available in the CPU accessible part of VRAM (giving the same behaviour as the i915 interface, see I915_GEM_CREATE_EXT_FLAG_NEEDS_CPU_ACCESS). Note2: For clear-color CCS surfaces the kernel needs to read the clear-color value stored in the buffer, and on discrete platforms we need to use VRAM for display surfaces, therefore the kernel requires setting this flag for such objects, otherwise an error is thrown on small-bar systems.”h]”(jC)�”}”(hŒ-``DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM``”h]”hŒ)DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM”…”�”}”(hj‹éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj‡éubhX# - When using VRAM as a possible placement, ensure that the corresponding VRAM allocation will always use the CPU accessible part of VRAM. This is important for small-bar systems (on full-bar systems this gets turned into a noop). Note1: System memory can be used as an extra placement if the kernel should spill the allocation to system memory, if space can’t be made available in the CPU accessible part of VRAM (giving the same behaviour as the i915 interface, see I915_GEM_CREATE_EXT_FLAG_NEEDS_CPU_ACCESS). Note2: For clear-color CCS surfaces the kernel needs to read the clear-color value stored in the buffer, and on discrete platforms we need to use VRAM for display surfaces, therefore the kernel requires setting this flag for such objects, otherwise an error is thrown on small-bar systems.”…”�”}”(hj‡éh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhjƒéubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj2éubhç)�”}”(hXó``DRM_XE_GEM_CREATE_FLAG_NO_COMPRESSION`` - Allows userspace to hint that compression (CCS) should be disabled for the buffer being created. This can avoid unnecessary memory operations and CCS state management. On pre-Xe2 platforms, this flag is currently rejected as compression control is not supported via PAT index. On Xe2+ platforms, compression is controlled via PAT entries. If this flag is set, the driver will reject any VM bind that requests a PAT index enabling compression for this BO. ”h]”hì)�”}”(hXò``DRM_XE_GEM_CREATE_FLAG_NO_COMPRESSION`` - Allows userspace to hint that compression (CCS) should be disabled for the buffer being created. This can avoid unnecessary memory operations and CCS state management. On pre-Xe2 platforms, this flag is currently rejected as compression control is not supported via PAT index. On Xe2+ platforms, compression is controlled via PAT entries. If this flag is set, the driver will reject any VM bind that requests a PAT index enabling compression for this BO.”h]”(jC)�”}”(hŒ)``DRM_XE_GEM_CREATE_FLAG_NO_COMPRESSION``”h]”hŒ%DRM_XE_GEM_CREATE_FLAG_NO_COMPRESSION”…”�”}”(hj²éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj®éubhXÉ - Allows userspace to hint that compression (CCS) should be disabled for the buffer being created. This can avoid unnecessary memory operations and CCS state management. On pre-Xe2 platforms, this flag is currently rejected as compression control is not supported via PAT index. On Xe2+ platforms, compression is controlled via PAT entries. If this flag is set, the driver will reject any VM bind that requests a PAT index enabling compression for this BO.”…”�”}”(hj®éh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M(hjªéubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj2éubeh}”(h]”h ]”h"]”h$]”h&]”jÀ jÁ uh1háh³jUéh´Mhj/éubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj éubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j.éh´M/hjéubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj-¸h²hh³Nh´Nubhì)�”}”(hŒ**Note**”h]”jŒ)�”}”(hjëéh]”hŒNote”…”�”}”(hjíéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjééubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M1hj-¸h²hubj§)�”}”(hhh]”(j¬)�”}”(hŒ´On dGPU platforms, there is currently no change in behavior with this flag, but future improvements may leverage it. The current benefit is primarily applicable to iGPU platforms. ”h]”(j²)�”}”(hŒ@On dGPU platforms, there is currently no change in behavior with”h]”hŒ@On dGPU platforms, there is currently no change in behavior with”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M4hjêubjÃ)�”}”(hhh]”hì)�”}”(hŒrthis flag, but future improvements may leverage it. The current benefit is primarily applicable to iGPU platforms.”h]”hŒrthis flag, but future improvements may leverage it. The current benefit is primarily applicable to iGPU platforms.”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M3hjêubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjêubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jêh´M4hjêubj¬)�”}”(hX¡**cpu_caching** supports the following values: - ``DRM_XE_GEM_CPU_CACHING_WB`` - Allocate the pages with write-back caching. On iGPU this can't be used for scanout surfaces. Currently not allowed for objects placed in VRAM. - ``DRM_XE_GEM_CPU_CACHING_WC`` - Allocate the pages as write-combined. This is uncached. Scanout surfaces should likely use this. All objects that can be placed in VRAM must use this. ”h]”(j²)�”}”(hŒ.**cpu_caching** supports the following values:”h]”(jŒ)�”}”(hŒ**cpu_caching**”h]”hŒ cpu_caching”…”�”}”(hj=êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj9êubhŒ supports the following values:”…”�”}”(hj9êh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M<hj5êubjÃ)�”}”(hhh]”hâ)�”}”(hhh]”(hç)�”}”(hŒ®``DRM_XE_GEM_CPU_CACHING_WB`` - Allocate the pages with write-back caching. On iGPU this can't be used for scanout surfaces. Currently not allowed for objects placed in VRAM.”h]”hì)�”}”(hŒ®``DRM_XE_GEM_CPU_CACHING_WB`` - Allocate the pages with write-back caching. On iGPU this can't be used for scanout surfaces. Currently not allowed for objects placed in VRAM.”h]”(jC)�”}”(hŒ``DRM_XE_GEM_CPU_CACHING_WB``”h]”hŒDRM_XE_GEM_CPU_CACHING_WB”…”�”}”(hjdêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj`êubhŒ“ - Allocate the pages with write-back caching. On iGPU this can’t be used for scanout surfaces. Currently not allowed for objects placed in VRAM.”…”�”}”(hj`êh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M7hj\êubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjYêubhç)�”}”(hŒ·``DRM_XE_GEM_CPU_CACHING_WC`` - Allocate the pages as write-combined. This is uncached. Scanout surfaces should likely use this. All objects that can be placed in VRAM must use this. ”h]”hì)�”}”(hŒ¶``DRM_XE_GEM_CPU_CACHING_WC`` - Allocate the pages as write-combined. This is uncached. Scanout surfaces should likely use this. All objects that can be placed in VRAM must use this.”h]”(jC)�”}”(hŒ``DRM_XE_GEM_CPU_CACHING_WC``”h]”hŒDRM_XE_GEM_CPU_CACHING_WC”…”�”}”(hj‹êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj‡êubhŒ™ - Allocate the pages as write-combined. This is uncached. Scanout surfaces should likely use this. All objects that can be placed in VRAM must use this.”…”�”}”(hj‡êh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M:hjƒêubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjYêubeh}”(h]”h ]”h"]”h$]”h&]”jÀ jÁ uh1háh³j|êh´M7hjVêubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj5êubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jUêh´M<hjêubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj-¸h²hh³Nh´Nubhì)�”}”(hŒÏThis ioctl supports setting the following properties via the ``DRM_XE_GEM_CREATE_EXTENSION_SET_PROPERTY`` extension, which uses the generic :c:type:`struct drm_xe_ext_set_property `:”h]”(hŒ=This ioctl supports setting the following properties via the ”…”�”}”(hjÂêh²hh³Nh´NubjC)�”}”(hŒ,``DRM_XE_GEM_CREATE_EXTENSION_SET_PROPERTY``”h]”hŒ(DRM_XE_GEM_CREATE_EXTENSION_SET_PROPERTY”…”�”}”(hjÊêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÂêubhŒ# extension, which uses the generic ”…”�”}”(hjÂêh²hh³Nh´Nubh)�”}”(hŒB:c:type:`struct drm_xe_ext_set_property `”h]”jC)�”}”(hjÞêh]”hŒstruct drm_xe_ext_set_property”…”�”}”(hjàêh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjÜêubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒdrm_xe_ext_set_property”uh1hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M>hjÂêubhŒ:”…”�”}”(hjÂêh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jûêh´M>hj-¸h²hubjK)�”}”(hX=- ``DRM_XE_GEM_CREATE_SET_PROPERTY_PXP_TYPE`` - set the type of PXP session this object will be used with. Valid values are listed in enum drm_xe_pxp_session_type. ``DRM_XE_PXP_TYPE_NONE`` is the default behavior, so there is no need to explicitly set that. Objects used with session of type ``DRM_XE_PXP_TYPE_HWDRM`` will be marked as invalid if a PXP invalidation event occurs after their creation. Attempting to flip an invalid object will cause a black frame to be displayed instead. Submissions with invalid objects mapped in the VM will be rejected. ”h]”hâ)�”}”(hhh]”hç)�”}”(hX-``DRM_XE_GEM_CREATE_SET_PROPERTY_PXP_TYPE`` - set the type of PXP session this object will be used with. Valid values are listed in enum drm_xe_pxp_session_type. ``DRM_XE_PXP_TYPE_NONE`` is the default behavior, so there is no need to explicitly set that. Objects used with session of type ``DRM_XE_PXP_TYPE_HWDRM`` will be marked as invalid if a PXP invalidation event occurs after their creation. Attempting to flip an invalid object will cause a black frame to be displayed instead. Submissions with invalid objects mapped in the VM will be rejected. ”h]”hì)�”}”(hX)``DRM_XE_GEM_CREATE_SET_PROPERTY_PXP_TYPE`` - set the type of PXP session this object will be used with. Valid values are listed in enum drm_xe_pxp_session_type. ``DRM_XE_PXP_TYPE_NONE`` is the default behavior, so there is no need to explicitly set that. Objects used with session of type ``DRM_XE_PXP_TYPE_HWDRM`` will be marked as invalid if a PXP invalidation event occurs after their creation. Attempting to flip an invalid object will cause a black frame to be displayed instead. Submissions with invalid objects mapped in the VM will be rejected.”h]”(jC)�”}”(hŒ+``DRM_XE_GEM_CREATE_SET_PROPERTY_PXP_TYPE``”h]”hŒ'DRM_XE_GEM_CREATE_SET_PROPERTY_PXP_TYPE”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjëubhŒw - set the type of PXP session this object will be used with. Valid values are listed in enum drm_xe_pxp_session_type. ”…”�”}”(hjëh²hh³Nh´NubjC)�”}”(hŒ``DRM_XE_PXP_TYPE_NONE``”h]”hŒDRM_XE_PXP_TYPE_NONE”…”�”}”(hj'ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjëubhŒh is the default behavior, so there is no need to explicitly set that. Objects used with session of type ”…”�”}”(hjëh²hh³Nh´NubjC)�”}”(hŒ``DRM_XE_PXP_TYPE_HWDRM``”h]”hŒDRM_XE_PXP_TYPE_HWDRM”…”�”}”(hj9ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjëubhŒî will be marked as invalid if a PXP invalidation event occurs after their creation. Attempting to flip an invalid object will cause a black frame to be displayed instead. Submissions with invalid objects mapped in the VM will be rejected.”…”�”}”(hjëh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MBhj ëubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj ëubah}”(h]”h ]”h"]”h$]”h&]”jÀ jÁ uh1háh³jQëh´MBhjëubah}”(h]”h ]”h"]”h$]”h&]”uh1jJh³jQëh´MBhj-¸h²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ!drm_xe_gem_mmap_offset (C struct)”Œc.drm_xe_gem_mmap_offset”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_gem_mmap_offset”h]”jg)�”}”(hŒstruct drm_xe_gem_mmap_offset”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj}ëh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjyëh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MNubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹ëh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjyëh²hh³jŠëh´MNubj�)�”}”(hŒdrm_xe_gem_mmap_offset”h]”j–)�”}”(hjwëh]”hŒdrm_xe_gem_mmap_offset”…”�”}”(hj�ëh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj™ëubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjyëh²hh³jŠëh´MNubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjuëh²hh³jŠëh´MNubah}”(h]”jpëah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jŠëh´MNhjrëh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ/Input of :c:type:`DRM_IOCTL_XE_GEM_MMAP_OFFSET`”h]”(hŒ Input of ”…”�”}”(hj¿ëh²hh³Nh´Nubh)�”}”(hŒ&:c:type:`DRM_IOCTL_XE_GEM_MMAP_OFFSET`”h]”jC)�”}”(hjÉëh]”hŒDRM_IOCTL_XE_GEM_MMAP_OFFSET”…”�”}”(hjËëh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjÇëubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j»)�”}”j¾]”jÊá)�”}”jÍájwësbŒc.drm_xe_gem_mmap_offset”†”asbjÀŒDRM_IOCTL_XE_GEM_MMAP_OFFSET”uh1hh³jÑáh´Khj¿ëubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M�hj¼ëh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjrëh²hh³jŠëh´MNubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjýëjçjýëjè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hXÉ**Definition**:: struct drm_xe_gem_mmap_offset { __u64 extensions; __u32 handle; #define DRM_XE_MMAP_OFFSET_FLAG_PCI_BARRIER (1 << 0); __u32 flags; __u64 offset; __u64 reserved[2]; }; **Members** ``extensions`` Pointer to the first extension struct, if any ``handle`` Handle for the object being mapped. ``flags`` Flags ``offset`` The fake offset to use for subsequent mmap call ``reserved`` Reserved”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjìubhŒ:”…”�”}”(hjìh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M“hjìubj)�”}”(hŒ¾struct drm_xe_gem_mmap_offset { __u64 extensions; __u32 handle; #define DRM_XE_MMAP_OFFSET_FLAG_PCI_BARRIER (1 << 0); __u32 flags; __u64 offset; __u64 reserved[2]; };”h]”hŒ¾struct drm_xe_gem_mmap_offset { __u64 extensions; __u32 handle; #define DRM_XE_MMAP_OFFSET_FLAG_PCI_BARRIER (1 << 0); __u32 flags; __u64 offset; __u64 reserved[2]; };”…”�”}”hj"ìsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M•hjìubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj3ìh]”hŒMembers”…”�”}”(hj5ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj1ìubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mžhjìubj§)�”}”(hhh]”(j¬)�”}”(hŒ=``extensions`` Pointer to the first extension struct, if any ”h]”(j²)�”}”(hŒ``extensions``”h]”jC)�”}”(hjRìh]”hŒ extensions”…”�”}”(hjTìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjPìubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M­hjLìubjÃ)�”}”(hhh]”hì)�”}”(hŒ-Pointer to the first extension struct, if any”h]”hŒ-Pointer to the first extension struct, if any”…”�”}”(hjkìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jgìh´M­hjhìubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjLìubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jgìh´M­hjIìubj¬)�”}”(hŒ/``handle`` Handle for the object being mapped. ”h]”(j²)�”}”(hŒ ``handle``”h]”jC)�”}”(hj‹ìh]”hŒhandle”…”�”}”(hj�ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj‰ìubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M°hj…ìubjÃ)�”}”(hhh]”hì)�”}”(hŒ#Handle for the object being mapped.”h]”hŒ#Handle for the object being mapped.”…”�”}”(hj¤ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j ìh´M°hj¡ìubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj…ìubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j ìh´M°hjIìubj¬)�”}”(hŒ``flags`` Flags ”h]”(j²)�”}”(hŒ ``flags``”h]”jC)�”}”(hjÄìh]”hŒflags”…”�”}”(hjÆìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÂìubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M´hj¾ìubjÃ)�”}”(hhh]”hì)�”}”(hŒFlags”h]”hŒFlags”…”�”}”(hjÝìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÙìh´M´hjÚìubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj¾ìubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÙìh´M´hjIìubj¬)�”}”(hŒ;``offset`` The fake offset to use for subsequent mmap call ”h]”(j²)�”}”(hŒ ``offset``”h]”jC)�”}”(hjýìh]”hŒoffset”…”�”}”(hjÿìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjûìubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M·hj÷ìubjÃ)�”}”(hhh]”hì)�”}”(hŒ/The fake offset to use for subsequent mmap call”h]”hŒ/The fake offset to use for subsequent mmap call”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jíh´M·hjíubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj÷ìubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jíh´M·hjIìubj¬)�”}”(hŒ``reserved`` Reserved”h]”(j²)�”}”(hŒ ``reserved``”h]”jC)�”}”(hj6íh]”hŒreserved”…”�”}”(hj8íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj4íubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M¹hj0íubjÃ)�”}”(hhh]”hì)�”}”(hŒReserved”h]”hŒReserved”…”�”}”(hjOíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MºhjLíubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj0íubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jKíh´M¹hjIìubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjìubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjyíh]”hŒ Description”…”�”}”(hj{íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjwíubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M½hj-¸h²hubj§)�”}”(hhh]”j¬)�”}”(hXUThe **flags** can be: - ``DRM_XE_MMAP_OFFSET_FLAG_PCI_BARRIER`` - For user to query special offset for use in mmap ioctl. Writing to the returned mmap address will generate a PCI memory barrier with low overhead (avoiding IOCTL call as well as writing to VRAM which would also add overhead), acting like an MI_MEM_FENCE instruction. ”h]”(j²)�”}”(hŒThe **flags** can be:”h]”(hŒThe ”…”�”}”(hj–íh²hh³Nh´NubjŒ)�”}”(hŒ **flags**”h]”hŒflags”…”�”}”(hjžíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj–íubhŒ can be:”…”�”}”(hj–íh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M•hj’íubjÃ)�”}”(hhh]”hâ)�”}”(hhh]”hç)�”}”(hX5``DRM_XE_MMAP_OFFSET_FLAG_PCI_BARRIER`` - For user to query special offset for use in mmap ioctl. Writing to the returned mmap address will generate a PCI memory barrier with low overhead (avoiding IOCTL call as well as writing to VRAM which would also add overhead), acting like an MI_MEM_FENCE instruction. ”h]”hì)�”}”(hX4``DRM_XE_MMAP_OFFSET_FLAG_PCI_BARRIER`` - For user to query special offset for use in mmap ioctl. Writing to the returned mmap address will generate a PCI memory barrier with low overhead (avoiding IOCTL call as well as writing to VRAM which would also add overhead), acting like an MI_MEM_FENCE instruction.”h]”(jC)�”}”(hŒ'``DRM_XE_MMAP_OFFSET_FLAG_PCI_BARRIER``”h]”hŒ#DRM_XE_MMAP_OFFSET_FLAG_PCI_BARRIER”…”�”}”(hjÅíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÁíubhX  - For user to query special offset for use in mmap ioctl. Writing to the returned mmap address will generate a PCI memory barrier with low overhead (avoiding IOCTL call as well as writing to VRAM which would also add overhead), acting like an MI_MEM_FENCE instruction.”…”�”}”(hjÁíh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M‘hj½íubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjºíubah}”(h]”h ]”h"]”h$]”h&]”jÀ jÁ uh1há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�íubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj-¸h²hh³Nh´Nubhì)�”}”(hŒ**Note**”h]”jŒ)�”}”(hjþíh]”hŒNote”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjüíubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M—hj-¸h²hubhì)�”}”(hX5The mmap size can be at most 4K, due to HW limitations. As a result this interface is only supported on CPU architectures that support 4K page size. The mmap_offset ioctl will detect this and gracefully return an error, where userspace is expected to have a different fallback method for triggering a barrier.”h]”hX5The mmap size can be at most 4K, due to HW limitations. As a result this interface is only supported on CPU architectures that support 4K page size. The mmap_offset ioctl will detect this and gracefully return an error, where userspace is expected to have a different fallback method for triggering a barrier.”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M˜hj-¸h²hubhì)�”}”(hŒ&Roughly the usage would be as follows:”h]”hŒ&Roughly the usage would be as follows:”…”�”}”(hj#îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mžhj-¸h²hubj)�”}”(hXstruct drm_xe_gem_mmap_offset mmo = { .handle = 0, // must be set to 0 .flags = DRM_XE_MMAP_OFFSET_FLAG_PCI_BARRIER, }; err = ioctl(fd, DRM_IOCTL_XE_GEM_MMAP_OFFSET, &mmo); map = mmap(NULL, size, PROT_WRITE, MAP_SHARED, fd, mmo.offset); map[i] = 0xdeadbeef; // issue barrier”h]”hXstruct drm_xe_gem_mmap_offset mmo = { .handle = 0, // must be set to 0 .flags = DRM_XE_MMAP_OFFSET_FLAG_PCI_BARRIER, }; err = ioctl(fd, DRM_IOCTL_XE_GEM_MMAP_OFFSET, &mmo); map = mmap(NULL, size, PROT_WRITE, MAP_SHARED, fd, mmo.offset); map[i] = 0xdeadbeef; // issue barrier”…”�”}”hj2îsbah}”(h]”h ]”h"]”h$]”h&]”j­j®j¾‰j¿jÀjÁ}”uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M hj-¸h²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_xe_vm_create (C struct)”Œc.drm_xe_vm_create”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_vm_create”h]”jg)�”}”(hŒstruct drm_xe_vm_create”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj[îh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjWîh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M®ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjiîh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjWîh²hh³jhîh´M®ubj�)�”}”(hŒdrm_xe_vm_create”h]”j–)�”}”(hjUîh]”hŒdrm_xe_vm_create”…”�”}”(hj{îh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjwîubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjWîh²hh³jhîh´M®ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjSîh²hh³jhîh´M®ubah}”(h]”jNîah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jhîh´M®hjPîh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ)Input of :c:type:`DRM_IOCTL_XE_VM_CREATE`”h]”(hŒ Input of ”…”�”}”(hj�îh²hh³Nh´Nubh)�”}”(hŒ :c:type:`DRM_IOCTL_XE_VM_CREATE`”h]”jC)�”}”(hj§îh]”hŒDRM_IOCTL_XE_VM_CREATE”…”�”}”(hj©îh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj¥îubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j»)�”}”j¾]”jÊá)�”}”jÍájUîsbŒc.drm_xe_vm_create”†”asbjÀŒDRM_IOCTL_XE_VM_CREATE”uh1hh³jÑáh´Khj�îubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M¾hjšîh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjPîh²hh³jhîh´M®ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjÛîjçjÛîjè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hX**Definition**:: struct drm_xe_vm_create { __u64 extensions; #define DRM_XE_VM_CREATE_FLAG_SCRATCH_PAGE (1 << 0); #define DRM_XE_VM_CREATE_FLAG_LR_MODE (1 << 1); #define DRM_XE_VM_CREATE_FLAG_FAULT_MODE (1 << 2); #define DRM_XE_VM_CREATE_FLAG_NO_VM_OVERCOMMIT (1 << 3); __u32 flags; __u32 vm_id; __u64 reserved[2]; }; **Members** ``extensions`` Pointer to the first extension struct, if any ``flags`` Flags ``vm_id`` Returned VM ID ``reserved`` Reserved”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjçîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjãîubhŒ:”…”�”}”(hjãîh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÂhjßîubj)�”}”(hXSstruct drm_xe_vm_create { __u64 extensions; #define DRM_XE_VM_CREATE_FLAG_SCRATCH_PAGE (1 << 0); #define DRM_XE_VM_CREATE_FLAG_LR_MODE (1 << 1); #define DRM_XE_VM_CREATE_FLAG_FAULT_MODE (1 << 2); #define DRM_XE_VM_CREATE_FLAG_NO_VM_OVERCOMMIT (1 << 3); __u32 flags; __u32 vm_id; __u64 reserved[2]; };”h]”hXSstruct drm_xe_vm_create { __u64 extensions; #define DRM_XE_VM_CREATE_FLAG_SCRATCH_PAGE (1 << 0); #define DRM_XE_VM_CREATE_FLAG_LR_MODE (1 << 1); #define DRM_XE_VM_CREATE_FLAG_FAULT_MODE (1 << 2); #define DRM_XE_VM_CREATE_FLAG_NO_VM_OVERCOMMIT (1 << 3); __u32 flags; __u32 vm_id; __u64 reserved[2]; };”…”�”}”hjïsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÄhjßîubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjïh]”hŒMembers”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjïubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÏhjßîubj§)�”}”(hhh]”(j¬)�”}”(hŒ=``extensions`` Pointer to the first extension struct, if any ”h]”(j²)�”}”(hŒ``extensions``”h]”jC)�”}”(hj0ïh]”hŒ extensions”…”�”}”(hj2ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj.ïubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mßhj*ïubjÃ)�”}”(hhh]”hì)�”}”(hŒ-Pointer to the first extension struct, if any”h]”hŒ-Pointer to the first extension struct, if any”…”�”}”(hjIïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jEïh´MßhjFïubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj*ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jEïh´Mßhj'ïubj¬)�”}”(hŒ``flags`` Flags ”h]”(j²)�”}”(hŒ ``flags``”h]”jC)�”}”(hjiïh]”hŒflags”…”�”}”(hjkïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjgïubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MæhjcïubjÃ)�”}”(hhh]”hì)�”}”(hŒFlags”h]”hŒFlags”…”�”}”(hj‚ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j~ïh´Mæhjïubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjcïubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j~ïh´Mæhj'ïubj¬)�”}”(hŒ``vm_id`` Returned VM ID ”h]”(j²)�”}”(hŒ ``vm_id``”h]”jC)�”}”(hj¢ïh]”hŒvm_id”…”�”}”(hj¤ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj ïubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MéhjœïubjÃ)�”}”(hhh]”hì)�”}”(hŒReturned VM ID”h]”hŒReturned VM ID”…”�”}”(hj»ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ``reserved`` Reserved”h]”(j²)�”}”(hŒ ``reserved``”h]”jC)�”}”(hjÛïh]”hŒreserved”…”�”}”(hjÝïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÙïubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MëhjÕïubjÃ)�”}”(hhh]”hì)�”}”(hŒReserved”h]”hŒReserved”…”�”}”(hjôïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”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¦hjßîubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjðh]”hŒ Description”…”�”}”(hj ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjðubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mïhj-¸h²hubj§)�”}”(hhh]”j¬)�”}”(hXŽThe **flags** can be: - ``DRM_XE_VM_CREATE_FLAG_SCRATCH_PAGE`` - Map the whole virtual address space of the VM to scratch page. A vm_bind would overwrite the scratch page mapping. This flag is mutually exclusive with the ``DRM_XE_VM_CREATE_FLAG_FAULT_MODE`` flag, with an exception on Xe2 and Xe3 platforms. - ``DRM_XE_VM_CREATE_FLAG_LR_MODE`` - An LR, or Long Running VM accepts exec submissions to its exec_queues that don't have an upper time limit on the job execution time. But exec submissions to these don't allow any of the sync types DRM_XE_SYNC_TYPE_SYNCOBJ, DRM_XE_SYNC_TYPE_TIMELINE_SYNCOBJ, used as out-syncobjs, that is, together with sync flag DRM_XE_SYNC_FLAG_SIGNAL. LR VMs can be created in recoverable page-fault mode using DRM_XE_VM_CREATE_FLAG_FAULT_MODE, if the device supports it. If that flag is omitted, the UMD can not rely on the slightly different per-VM overcommit semantics that are enabled by DRM_XE_VM_CREATE_FLAG_FAULT_MODE (see below), but KMD may still enable recoverable pagefaults if supported by the device. - ``DRM_XE_VM_CREATE_FLAG_FAULT_MODE`` - Requires also DRM_XE_VM_CREATE_FLAG_LR_MODE. It allows memory to be allocated on demand when accessed, and also allows per-VM overcommit of memory. The xe driver internally uses recoverable pagefaults to implement this. - ``DRM_XE_VM_CREATE_FLAG_NO_VM_OVERCOMMIT`` - Requires also DRM_XE_VM_CREATE_FLAG_FAULT_MODE. This disallows per-VM overcommit but only during a :c:type:`DRM_IOCTL_XE_VM_BIND` operation with the ``DRM_XE_VM_BIND_FLAG_IMMEDIATE`` flag set. This may be useful for user-space naively probing the amount of available memory. ”h]”(j²)�”}”(hŒThe **flags** can be:”h]”(hŒThe ”…”�”}”(hj;ðh²hh³Nh´NubjŒ)�”}”(hŒ **flags**”h]”hŒflags”…”�”}”(hjCðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj;ðubhŒ can be:”…”�”}”(hj;ðh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÝhj7ðubjÃ)�”}”(hhh]”hâ)�”}”(hhh]”(hç)�”}”(hX``DRM_XE_VM_CREATE_FLAG_SCRATCH_PAGE`` - Map the whole virtual address space of the VM to scratch page. A vm_bind would overwrite the scratch page mapping. This flag is mutually exclusive with the ``DRM_XE_VM_CREATE_FLAG_FAULT_MODE`` flag, with an exception on Xe2 and Xe3 platforms.”h]”hì)�”}”(hX``DRM_XE_VM_CREATE_FLAG_SCRATCH_PAGE`` - Map the whole virtual address space of the VM to scratch page. A vm_bind would overwrite the scratch page mapping. This flag is mutually exclusive with the ``DRM_XE_VM_CREATE_FLAG_FAULT_MODE`` flag, with an exception on Xe2 and Xe3 platforms.”h]”(jC)�”}”(hŒ&``DRM_XE_VM_CREATE_FLAG_SCRATCH_PAGE``”h]”hŒ"DRM_XE_VM_CREATE_FLAG_SCRATCH_PAGE”…”�”}”(hjjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjfðubhŒŸ - Map the whole virtual address space of the VM to scratch page. A vm_bind would overwrite the scratch page mapping. This flag is mutually exclusive with the ”…”�”}”(hjfðh²hh³Nh´NubjC)�”}”(hŒ$``DRM_XE_VM_CREATE_FLAG_FAULT_MODE``”h]”hŒ DRM_XE_VM_CREATE_FLAG_FAULT_MODE”…”�”}”(hj|ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjfðubhŒ2 flag, with an exception on Xe2 and Xe3 platforms.”…”�”}”(hjfðh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÀhjbðubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj_ðubhç)�”}”(hXß``DRM_XE_VM_CREATE_FLAG_LR_MODE`` - An LR, or Long Running VM accepts exec submissions to its exec_queues that don't have an upper time limit on the job execution time. But exec submissions to these don't allow any of the sync types DRM_XE_SYNC_TYPE_SYNCOBJ, DRM_XE_SYNC_TYPE_TIMELINE_SYNCOBJ, used as out-syncobjs, that is, together with sync flag DRM_XE_SYNC_FLAG_SIGNAL. LR VMs can be created in recoverable page-fault mode using DRM_XE_VM_CREATE_FLAG_FAULT_MODE, if the device supports it. If that flag is omitted, the UMD can not rely on the slightly different per-VM overcommit semantics that are enabled by DRM_XE_VM_CREATE_FLAG_FAULT_MODE (see below), but KMD may still enable recoverable pagefaults if supported by the device.”h]”hì)�”}”(hXß``DRM_XE_VM_CREATE_FLAG_LR_MODE`` - An LR, or Long Running VM accepts exec submissions to its exec_queues that don't have an upper time limit on the job execution time. But exec submissions to these don't allow any of the sync types DRM_XE_SYNC_TYPE_SYNCOBJ, DRM_XE_SYNC_TYPE_TIMELINE_SYNCOBJ, used as out-syncobjs, that is, together with sync flag DRM_XE_SYNC_FLAG_SIGNAL. LR VMs can be created in recoverable page-fault mode using DRM_XE_VM_CREATE_FLAG_FAULT_MODE, if the device supports it. If that flag is omitted, the UMD can not rely on the slightly different per-VM overcommit semantics that are enabled by DRM_XE_VM_CREATE_FLAG_FAULT_MODE (see below), but KMD may still enable recoverable pagefaults if supported by the device.”h]”(jC)�”}”(hŒ!``DRM_XE_VM_CREATE_FLAG_LR_MODE``”h]”hŒDRM_XE_VM_CREATE_FLAG_LR_MODE”…”�”}”(hj£ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjŸðubhX - An LR, or Long Running VM accepts exec submissions to its exec_queues that don’t have an upper time limit on the job execution time. But exec submissions to these don’t allow any of the sync types DRM_XE_SYNC_TYPE_SYNCOBJ, DRM_XE_SYNC_TYPE_TIMELINE_SYNCOBJ, used as out-syncobjs, that is, together with sync flag DRM_XE_SYNC_FLAG_SIGNAL. LR VMs can be created in recoverable page-fault mode using DRM_XE_VM_CREATE_FLAG_FAULT_MODE, if the device supports it. If that flag is omitted, the UMD can not rely on the slightly different per-VM overcommit semantics that are enabled by DRM_XE_VM_CREATE_FLAG_FAULT_MODE (see below), but KMD may still enable recoverable pagefaults if supported by the device.”…”�”}”(hjŸðh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÅhj›ðubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj_ðubhç)�”}”(hX``DRM_XE_VM_CREATE_FLAG_FAULT_MODE`` - Requires also DRM_XE_VM_CREATE_FLAG_LR_MODE. It allows memory to be allocated on demand when accessed, and also allows per-VM overcommit of memory. The xe driver internally uses recoverable pagefaults to implement this.”h]”hì)�”}”(hX``DRM_XE_VM_CREATE_FLAG_FAULT_MODE`` - Requires also DRM_XE_VM_CREATE_FLAG_LR_MODE. It allows memory to be allocated on demand when accessed, and also allows per-VM overcommit of memory. The xe driver internally uses recoverable pagefaults to implement this.”h]”(jC)�”}”(hŒ$``DRM_XE_VM_CREATE_FLAG_FAULT_MODE``”h]”hŒ DRM_XE_VM_CREATE_FLAG_FAULT_MODE”…”�”}”(hjÊðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÆðubhŒÞ - Requires also DRM_XE_VM_CREATE_FLAG_LR_MODE. It allows memory to be allocated on demand when accessed, and also allows per-VM overcommit of memory. The xe driver internally uses recoverable pagefaults to implement this.”…”�”}”(hjÆðh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÑhjÂðubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj_ðubhç)�”}”(hXC``DRM_XE_VM_CREATE_FLAG_NO_VM_OVERCOMMIT`` - Requires also DRM_XE_VM_CREATE_FLAG_FAULT_MODE. This disallows per-VM overcommit but only during a :c:type:`DRM_IOCTL_XE_VM_BIND` operation with the ``DRM_XE_VM_BIND_FLAG_IMMEDIATE`` flag set. This may be useful for user-space naively probing the amount of available memory. ”h]”hì)�”}”(hX?``DRM_XE_VM_CREATE_FLAG_NO_VM_OVERCOMMIT`` - Requires also DRM_XE_VM_CREATE_FLAG_FAULT_MODE. This disallows per-VM overcommit but only during a :c:type:`DRM_IOCTL_XE_VM_BIND` operation with the ``DRM_XE_VM_BIND_FLAG_IMMEDIATE`` flag set. This may be useful for user-space naively probing the amount of available memory.”h]”(jC)�”}”(hŒ*``DRM_XE_VM_CREATE_FLAG_NO_VM_OVERCOMMIT``”h]”hŒ&DRM_XE_VM_CREATE_FLAG_NO_VM_OVERCOMMIT”…”�”}”(hjñðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjíðubhŒf - Requires also DRM_XE_VM_CREATE_FLAG_FAULT_MODE. This disallows per-VM overcommit but only during a ”…”�”}”(hjíðh²hh³Nh´Nubh)�”}”(hŒ:c:type:`DRM_IOCTL_XE_VM_BIND`”h]”jC)�”}”(hjñh]”hŒDRM_IOCTL_XE_VM_BIND”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjñubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒDRM_IOCTL_XE_VM_BIND”uh1hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÖhjíðubhŒ operation with the ”…”�”}”(hjíðh²hh³Nh´NubjC)�”}”(hŒ!``DRM_XE_VM_BIND_FLAG_IMMEDIATE``”h]”hŒDRM_XE_VM_BIND_FLAG_IMMEDIATE”…”�”}”(hj'ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjíðubhŒ\ flag set. This may be useful for user-space naively probing the amount of available memory.”…”�”}”(hjíðh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j"ñh´MÖhjéðubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj_ðubeh}”(h]”h ]”h"]”h$]”h&]”jÀ jÁ uh1háh³j”ðh´MÀhj\ðubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj7ðubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j[ðh´MÝhj4ðubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj-¸h²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_xe_vm_destroy (C struct)”Œc.drm_xe_vm_destroy”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_vm_destroy”h]”jg)�”}”(hŒstruct drm_xe_vm_destroy”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjvñh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjrñh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mßubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„ñh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjrñh²hh³jƒñh´Mßubj�)�”}”(hŒdrm_xe_vm_destroy”h]”j–)�”}”(hjpñh]”hŒdrm_xe_vm_destroy”…”�”}”(hj–ñh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj’ñubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjrñh²hh³jƒñh´Mßubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjnñh²hh³jƒñh´Mßubah}”(h]”jiñah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jƒñh´Mßhjkñh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ*Input of :c:type:`DRM_IOCTL_XE_VM_DESTROY`”h]”(hŒ Input of ”…”�”}”(hj¸ñh²hh³Nh´Nubh)�”}”(hŒ!:c:type:`DRM_IOCTL_XE_VM_DESTROY`”h]”jC)�”}”(hjÂñh]”hŒDRM_IOCTL_XE_VM_DESTROY”…”�”}”(hjÄñh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjÀñubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j»)�”}”j¾]”jÊá)�”}”jÍájpñsbŒc.drm_xe_vm_destroy”†”asbjÀŒDRM_IOCTL_XE_VM_DESTROY”uh1hh³jÑáh´Khj¸ñubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mðhjµñh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjkñh²hh³jƒñh´Mßubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjöñjçjöñjè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hŒ¸**Definition**:: struct drm_xe_vm_destroy { __u32 vm_id; __u32 pad; __u64 reserved[2]; }; **Members** ``vm_id`` VM ID ``pad`` MBZ ``reserved`` Reserved”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjþñubhŒ:”…”�”}”(hjþñh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Môhjúñubj)�”}”(hŒTstruct drm_xe_vm_destroy { __u32 vm_id; __u32 pad; __u64 reserved[2]; };”h]”hŒTstruct drm_xe_vm_destroy { __u32 vm_id; __u32 pad; __u64 reserved[2]; };”…”�”}”hjòsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Möhjúñubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj,òh]”hŒMembers”…”�”}”(hj.òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj*òubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mühjúñubj§)�”}”(hhh]”(j¬)�”}”(hŒ``vm_id`` VM ID ”h]”(j²)�”}”(hŒ ``vm_id``”h]”jC)�”}”(hjKòh]”hŒvm_id”…”�”}”(hjMòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjIòubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MôhjEòubjÃ)�”}”(hhh]”hì)�”}”(hŒVM ID”h]”hŒVM ID”…”�”}”(hjdòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j`òh´Môhjaòubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjEòubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j`òh´MôhjBòubj¬)�”}”(hŒ ``pad`` MBZ ”h]”(j²)�”}”(hŒ``pad``”h]”jC)�”}”(hj„òh]”hŒpad”…”�”}”(hj†òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj‚òubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M÷hj~òubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hj�òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j™òh´M÷hjšòubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj~òubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j™òh´M÷hjBòubj¬)�”}”(hŒ``reserved`` Reserved”h]”(j²)�”}”(hŒ ``reserved``”h]”jC)�”}”(hj½òh]”hŒreserved”…”�”}”(hj¿òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj»òubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mùhj·òubjÃ)�”}”(hhh]”hì)�”}”(hŒReserved”h]”hŒReserved”…”�”}”(hjÖòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MúhjÓòubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj·òubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÒòh´MùhjBòubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjúñubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_xe_vm_bind_op (C struct)”Œc.drm_xe_vm_bind_op”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_vm_bind_op”h]”jg)�”}”(hŒstruct drm_xe_vm_bind_op”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjóh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%óh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjóh²hh³j$óh´Mubj�)�”}”(hŒdrm_xe_vm_bind_op”h]”j–)�”}”(hjóh]”hŒdrm_xe_vm_bind_op”…”�”}”(hj7óh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj3óubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjóh²hh³j$óh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”hì)�”}”(hŒrun bind operations”h]”hŒrun bind operations”…”�”}”(hjYóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MþhjVóh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj óh²hh³j$óh´Mubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjqójçjqójè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hX¾**Definition**:: struct drm_xe_vm_bind_op { __u64 extensions; __u32 obj; __u16 pat_index; __u16 pad; union { __u64 obj_offset; __u64 userptr; __s64 cpu_addr_mirror_offset; }; __u64 range; __u64 addr; #define DRM_XE_VM_BIND_OP_MAP 0x0; #define DRM_XE_VM_BIND_OP_UNMAP 0x1; #define DRM_XE_VM_BIND_OP_MAP_USERPTR 0x2; #define DRM_XE_VM_BIND_OP_UNMAP_ALL 0x3; #define DRM_XE_VM_BIND_OP_PREFETCH 0x4; __u32 op; #define DRM_XE_VM_BIND_FLAG_READONLY (1 << 0); #define DRM_XE_VM_BIND_FLAG_IMMEDIATE (1 << 1); #define DRM_XE_VM_BIND_FLAG_NULL (1 << 2); #define DRM_XE_VM_BIND_FLAG_DUMPABLE (1 << 3); #define DRM_XE_VM_BIND_FLAG_CHECK_PXP (1 << 4); #define DRM_XE_VM_BIND_FLAG_CPU_ADDR_MIRROR (1 << 5); #define DRM_XE_VM_BIND_FLAG_MADVISE_AUTORESET (1 << 6); #define DRM_XE_VM_BIND_FLAG_DECOMPRESS (1 << 7); __u32 flags; #define DRM_XE_CONSULT_MEM_ADVISE_PREF_LOC -1; __u32 prefetch_mem_region_instance; __u32 pad2; __u64 reserved[3]; }; **Members** ``extensions`` Pointer to the first extension struct, if any ``obj`` GEM object to operate on, MBZ for MAP_USERPTR, MBZ for UNMAP ``pat_index`` The platform defined **pat_index** to use for this mapping. The index basically maps to some predefined memory attributes, including things like caching, coherency, compression etc. The exact meaning of the pat_index is platform specific and defined in the Bspec and PRMs. When the KMD sets up the binding the index here is encoded into the ppGTT PTE. For coherency the **pat_index** needs to be at least 1way coherent when drm_xe_gem_create.cpu_caching is DRM_XE_GEM_CPU_CACHING_WB. The KMD will extract the coherency mode from the **pat_index** and reject if there is a mismatch (see note below for pre-MTL platforms). Note: On pre-MTL platforms there is only a caching mode and no explicit coherency mode, but on such hardware there is always a shared-LLC (or is dgpu) so all GT memory accesses are coherent with CPU caches even with the caching mode set as uncached. It's only the display engine that is incoherent (on dgpu it must be in VRAM which is always mapped as WC on the CPU). However to keep the uapi somewhat consistent with newer platforms the KMD groups the different cache levels into the following coherency buckets on all pre-MTL platforms: ppGTT UC -> COH_NONE ppGTT WC -> COH_NONE ppGTT WT -> COH_NONE ppGTT WB -> COH_AT_LEAST_1WAY In practice UC/WC/WT should only ever be used for scanout surfaces on such platforms (or perhaps in general for dma-buf if shared with another device) since it is only the display engine that is actually incoherent. Everything else should typically use WB given that we have a shared-LLC. On MTL+ this completely changes and the HW defines the coherency mode as part of the **pat_index**, where incoherent GT access is possible. Note: For userptr and externally imported dma-buf the kernel expects either 1WAY or 2WAY for the **pat_index**. Starting from NVL-P, for userptr, svm, madvise and externally imported dma-buf the kernel expects either 2WAY or 1WAY and XA **pat_index**. For DRM_XE_VM_BIND_FLAG_NULL bindings there are no KMD restrictions on the **pat_index**. For such mappings there is no actual memory being mapped (the address in the PTE is invalid), so the various PAT memory attributes likely do not apply. Simply leaving as zero is one option (still a valid pat_index). Same applies to DRM_XE_VM_BIND_FLAG_CPU_ADDR_MIRROR bindings as for such mapping there is no actual memory being mapped. ``pad`` MBZ ``{unnamed_union}`` anonymous ``obj_offset`` Offset into the object, MBZ for CLEAR_RANGE, ignored for unbind ``userptr`` user pointer to bind on ``cpu_addr_mirror_offset`` Offset from GPU **addr** to create CPU address mirror mappings. MBZ with current level of support (e.g. 1 to 1 mapping between GPU and CPU mappings only supported). ``range`` Number of bytes from the object to bind to addr, MBZ for UNMAP_ALL ``addr`` Address to operate on, MBZ for UNMAP_ALL ``op`` Bind operation to perform ``flags`` Bind flags ``prefetch_mem_region_instance`` Memory region to prefetch VMA to. It is a region instance, not a mask. To be used only with ``DRM_XE_VM_BIND_OP_PREFETCH`` operation. ``pad2`` MBZ ``reserved`` Reserved”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj}óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjyóubhŒ:”…”�”}”(hjyóh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhjuóubj)�”}”(hXstruct drm_xe_vm_bind_op { __u64 extensions; __u32 obj; __u16 pat_index; __u16 pad; union { __u64 obj_offset; __u64 userptr; __s64 cpu_addr_mirror_offset; }; __u64 range; __u64 addr; #define DRM_XE_VM_BIND_OP_MAP 0x0; #define DRM_XE_VM_BIND_OP_UNMAP 0x1; #define DRM_XE_VM_BIND_OP_MAP_USERPTR 0x2; #define DRM_XE_VM_BIND_OP_UNMAP_ALL 0x3; #define DRM_XE_VM_BIND_OP_PREFETCH 0x4; __u32 op; #define DRM_XE_VM_BIND_FLAG_READONLY (1 << 0); #define DRM_XE_VM_BIND_FLAG_IMMEDIATE (1 << 1); #define DRM_XE_VM_BIND_FLAG_NULL (1 << 2); #define DRM_XE_VM_BIND_FLAG_DUMPABLE (1 << 3); #define DRM_XE_VM_BIND_FLAG_CHECK_PXP (1 << 4); #define DRM_XE_VM_BIND_FLAG_CPU_ADDR_MIRROR (1 << 5); #define DRM_XE_VM_BIND_FLAG_MADVISE_AUTORESET (1 << 6); #define DRM_XE_VM_BIND_FLAG_DECOMPRESS (1 << 7); __u32 flags; #define DRM_XE_CONSULT_MEM_ADVISE_PREF_LOC -1; __u32 prefetch_mem_region_instance; __u32 pad2; __u64 reserved[3]; };”h]”hXstruct drm_xe_vm_bind_op { __u64 extensions; __u32 obj; __u16 pat_index; __u16 pad; union { __u64 obj_offset; __u64 userptr; __s64 cpu_addr_mirror_offset; }; __u64 range; __u64 addr; #define DRM_XE_VM_BIND_OP_MAP 0x0; #define DRM_XE_VM_BIND_OP_UNMAP 0x1; #define DRM_XE_VM_BIND_OP_MAP_USERPTR 0x2; #define DRM_XE_VM_BIND_OP_UNMAP_ALL 0x3; #define DRM_XE_VM_BIND_OP_PREFETCH 0x4; __u32 op; #define DRM_XE_VM_BIND_FLAG_READONLY (1 << 0); #define DRM_XE_VM_BIND_FLAG_IMMEDIATE (1 << 1); #define DRM_XE_VM_BIND_FLAG_NULL (1 << 2); #define DRM_XE_VM_BIND_FLAG_DUMPABLE (1 << 3); #define DRM_XE_VM_BIND_FLAG_CHECK_PXP (1 << 4); #define DRM_XE_VM_BIND_FLAG_CPU_ADDR_MIRROR (1 << 5); #define DRM_XE_VM_BIND_FLAG_MADVISE_AUTORESET (1 << 6); #define DRM_XE_VM_BIND_FLAG_DECOMPRESS (1 << 7); __u32 flags; #define DRM_XE_CONSULT_MEM_ADVISE_PREF_LOC -1; __u32 prefetch_mem_region_instance; __u32 pad2; __u64 reserved[3]; };”…”�”•%}”hj–ósbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhjuóubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj§óh]”hŒMembers”…”�”}”(hj©óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj¥óubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M%hjuóubj§)�”}”(hhh]”(j¬)�”}”(hŒ=``extensions`` Pointer to the first extension struct, if any ”h]”(j²)�”}”(hŒ``extensions``”h]”jC)�”}”(hjÆóh]”hŒ extensions”…”�”}”(hjÈóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÄóubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M:hjÀóubjÃ)�”}”(hhh]”hì)�”}”(hŒ-Pointer to the first extension struct, if any”h]”hŒ-Pointer to the first extension struct, if any”…”�”}”(hjßóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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``obj`` GEM object to operate on, MBZ for MAP_USERPTR, MBZ for UNMAP ”h]”(j²)�”}”(hŒ``obj``”h]”jC)�”}”(hjÿóh]”hŒobj”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjýóubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M>hjùóubjÃ)�”}”(hhh]”hì)�”}”(hŒhjôubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjùóubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jôh´M>hj½óubj¬)�”}”(hXg ``pat_index`` The platform defined **pat_index** to use for this mapping. The index basically maps to some predefined memory attributes, including things like caching, coherency, compression etc. The exact meaning of the pat_index is platform specific and defined in the Bspec and PRMs. When the KMD sets up the binding the index here is encoded into the ppGTT PTE. For coherency the **pat_index** needs to be at least 1way coherent when drm_xe_gem_create.cpu_caching is DRM_XE_GEM_CPU_CACHING_WB. The KMD will extract the coherency mode from the **pat_index** and reject if there is a mismatch (see note below for pre-MTL platforms). Note: On pre-MTL platforms there is only a caching mode and no explicit coherency mode, but on such hardware there is always a shared-LLC (or is dgpu) so all GT memory accesses are coherent with CPU caches even with the caching mode set as uncached. It's only the display engine that is incoherent (on dgpu it must be in VRAM which is always mapped as WC on the CPU). However to keep the uapi somewhat consistent with newer platforms the KMD groups the different cache levels into the following coherency buckets on all pre-MTL platforms: ppGTT UC -> COH_NONE ppGTT WC -> COH_NONE ppGTT WT -> COH_NONE ppGTT WB -> COH_AT_LEAST_1WAY In practice UC/WC/WT should only ever be used for scanout surfaces on such platforms (or perhaps in general for dma-buf if shared with another device) since it is only the display engine that is actually incoherent. Everything else should typically use WB given that we have a shared-LLC. On MTL+ this completely changes and the HW defines the coherency mode as part of the **pat_index**, where incoherent GT access is possible. Note: For userptr and externally imported dma-buf the kernel expects either 1WAY or 2WAY for the **pat_index**. Starting from NVL-P, for userptr, svm, madvise and externally imported dma-buf the kernel expects either 2WAY or 1WAY and XA **pat_index**. For DRM_XE_VM_BIND_FLAG_NULL bindings there are no KMD restrictions on the **pat_index**. For such mappings there is no actual memory being mapped (the address in the PTE is invalid), so the various PAT memory attributes likely do not apply. Simply leaving as zero is one option (still a valid pat_index). Same applies to DRM_XE_VM_BIND_FLAG_CPU_ADDR_MIRROR bindings as for such mapping there is no actual memory being mapped. ”h]”(j²)�”}”(hŒ ``pat_index``”h]”jC)�”}”(hj8ôh]”hŒ pat_index”…”�”}”(hj:ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj6ôubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mphj2ôubjÃ)�”}”(hhh]”(hì)�”}”(hXaThe platform defined **pat_index** to use for this mapping. The index basically maps to some predefined memory attributes, including things like caching, coherency, compression etc. The exact meaning of the pat_index is platform specific and defined in the Bspec and PRMs. When the KMD sets up the binding the index here is encoded into the ppGTT PTE.”h]”(hŒThe platform defined ”…”�”}”(hjQôh²hh³Nh´NubjŒ)�”}”(hŒ **pat_index**”h]”hŒ pat_index”…”�”}”(hjYôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjQôubhX? to use for this mapping. The index basically maps to some predefined memory attributes, including things like caching, coherency, compression etc. The exact meaning of the pat_index is platform specific and defined in the Bspec and PRMs. When the KMD sets up the binding the index here is encoded into the ppGTT PTE.”…”�”}”(hjQôh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MChjNôubhì)�”}”(hX For coherency the **pat_index** needs to be at least 1way coherent when drm_xe_gem_create.cpu_caching is DRM_XE_GEM_CPU_CACHING_WB. The KMD will extract the coherency mode from the **pat_index** and reject if there is a mismatch (see note below for pre-MTL platforms).”h]”(hŒFor coherency the ”…”�”}”(hjrôh²hh³Nh´NubjŒ)�”}”(hŒ **pat_index**”h]”hŒ pat_index”…”�”}”(hjzôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjrôubhŒ– needs to be at least 1way coherent when drm_xe_gem_create.cpu_caching is DRM_XE_GEM_CPU_CACHING_WB. The KMD will extract the coherency mode from the ”…”�”}”(hjrôh²hh³Nh´NubjŒ)�”}”(hŒ **pat_index**”h]”hŒ pat_index”…”�”}”(hjŒôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjrôubhŒJ and reject if there is a mismatch (see note below for pre-MTL platforms).”…”�”}”(hjrôh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MJhjNôubhì)�”}”(hXNote: On pre-MTL platforms there is only a caching mode and no explicit coherency mode, but on such hardware there is always a shared-LLC (or is dgpu) so all GT memory accesses are coherent with CPU caches even with the caching mode set as uncached. It's only the display engine that is incoherent (on dgpu it must be in VRAM which is always mapped as WC on the CPU). However to keep the uapi somewhat consistent with newer platforms the KMD groups the different cache levels into the following coherency buckets on all pre-MTL platforms:”h]”hXNote: On pre-MTL platforms there is only a caching mode and no explicit coherency mode, but on such hardware there is always a shared-LLC (or is dgpu) so all GT memory accesses are coherent with CPU caches even with the caching mode set as uncached. It’s only the display engine that is incoherent (on dgpu it must be in VRAM which is always mapped as WC on the CPU). However to keep the uapi somewhat consistent with newer platforms the KMD groups the different cache levels into the following coherency buckets on all pre-MTL platforms:”…”�”}”(hj¥ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MOhjNôubjK)�”}”(hŒ]ppGTT UC -> COH_NONE ppGTT WC -> COH_NONE ppGTT WT -> COH_NONE ppGTT WB -> COH_AT_LEAST_1WAY ”h]”hì)�”}”(hŒ\ppGTT UC -> COH_NONE ppGTT WC -> COH_NONE ppGTT WT -> COH_NONE ppGTT WB -> COH_AT_LEAST_1WAY”h]”hŒ\ppGTT UC -> COH_NONE ppGTT WC -> COH_NONE ppGTT WT -> COH_NONE ppGTT WB -> COH_AT_LEAST_1WAY”…”�”}”(hj¸ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MXhj´ôubah}”(h]”h ]”h"]”h$]”h&]”uh1jJh³jÆôh´MXhjNôubhì)�”}”(hX®In practice UC/WC/WT should only ever be used for scanout surfaces on such platforms (or perhaps in general for dma-buf if shared with another device) since it is only the display engine that is actually incoherent. Everything else should typically use WB given that we have a shared-LLC. On MTL+ this completely changes and the HW defines the coherency mode as part of the **pat_index**, where incoherent GT access is possible.”h]”(hXxIn practice UC/WC/WT should only ever be used for scanout surfaces on such platforms (or perhaps in general for dma-buf if shared with another device) since it is only the display engine that is actually incoherent. Everything else should typically use WB given that we have a shared-LLC. On MTL+ this completely changes and the HW defines the coherency mode as part of the ”…”�”}”(hjÍôh²hh³Nh´NubjŒ)�”}”(hŒ **pat_index**”h]”hŒ pat_index”…”�”}”(hjÕôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÍôubhŒ), where incoherent GT access is possible.”…”�”}”(hjÍôh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M]hjNôubhì)�”}”(hŒûNote: For userptr and externally imported dma-buf the kernel expects either 1WAY or 2WAY for the **pat_index**. Starting from NVL-P, for userptr, svm, madvise and externally imported dma-buf the kernel expects either 2WAY or 1WAY and XA **pat_index**.”h]”(hŒaNote: For userptr and externally imported dma-buf the kernel expects either 1WAY or 2WAY for the ”…”�”}”(hjîôh²hh³Nh´NubjŒ)�”}”(hŒ **pat_index**”h]”hŒ pat_index”…”�”}”(hjöôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjîôubhŒ. Starting from NVL-P, for userptr, svm, madvise and externally imported dma-buf the kernel expects either 2WAY or 1WAY and XA ”…”�”}”(hjîôh²hh³Nh´NubjŒ)�”}”(hŒ **pat_index**”h]”hŒ pat_index”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjîôubhŒ.”…”�”}”(hjîôh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MehjNôubhì)�”}”(hX«For DRM_XE_VM_BIND_FLAG_NULL bindings there are no KMD restrictions on the **pat_index**. For such mappings there is no actual memory being mapped (the address in the PTE is invalid), so the various PAT memory attributes likely do not apply. Simply leaving as zero is one option (still a valid pat_index). Same applies to DRM_XE_VM_BIND_FLAG_CPU_ADDR_MIRROR bindings as for such mapping there is no actual memory being mapped.”h]”(hŒKFor DRM_XE_VM_BIND_FLAG_NULL bindings there are no KMD restrictions on the ”…”�”}”(hj!õh²hh³Nh´NubjŒ)�”}”(hŒ **pat_index**”h]”hŒ pat_index”…”�”}”(hj)õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj!õubhXS. For such mappings there is no actual memory being mapped (the address in the PTE is invalid), so the various PAT memory attributes likely do not apply. Simply leaving as zero is one option (still a valid pat_index). Same applies to DRM_XE_VM_BIND_FLAG_CPU_ADDR_MIRROR bindings as for such mapping there is no actual memory being mapped.”…”�”}”(hj!õh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MjhjNôubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj2ôubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jMôh´Mphj½óubj¬)�”}”(hŒ ``pad`` MBZ ”h]”(j²)�”}”(hŒ``pad``”h]”jC)�”}”(hjTõh]”hŒpad”…”�”}”(hjVõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjRõubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MthjNõubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hjmõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jiõh´Mthjjõubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjNõubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jiõh´Mthj½óubj¬)�”}”(hŒ``{unnamed_union}`` anonymous ”h]”(j²)�”}”(hŒ``{unnamed_union}``”h]”jC)�”}”(hj�õh]”hŒ{unnamed_union}”…”�”}”(hj�õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj‹õubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Khj‡õubjÃ)�”}”(hhh]”hì)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hj¦õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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ŒO``obj_offset`` Offset into the object, MBZ for CLEAR_RANGE, ignored for unbind ”h]”(j²)�”}”(hŒ``obj_offset``”h]”jC)�”}”(hjÆõh]”hŒ obj_offset”…”�”}”(hjÈõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÄõubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MzhjÀõubjÃ)�”}”(hhh]”hì)�”}”(hŒ?Offset into the object, MBZ for CLEAR_RANGE, ignored for unbind”h]”hŒ?Offset into the object, MBZ for CLEAR_RANGE, ignored for unbind”…”�”}”(hjßõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MyhjÜõubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÀõubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÛõh´Mzhj½óubj¬)�”}”(hŒ$``userptr`` user pointer to bind on ”h]”(j²)�”}”(hŒ ``userptr``”h]”jC)�”}”(hjöh]”hŒuserptr”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjþõubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M~hjúõubjÃ)�”}”(hhh]”hì)�”}”(hŒuser pointer to bind on”h]”hŒuser pointer to bind on”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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ŒÀ``cpu_addr_mirror_offset`` Offset from GPU **addr** to create CPU address mirror mappings. MBZ with current level of support (e.g. 1 to 1 mapping between GPU and CPU mappings only supported). ”h]”(j²)�”}”(hŒ``cpu_addr_mirror_offset``”h]”jC)�”}”(hj9öh]”hŒcpu_addr_mirror_offset”…”�”}”(hj;öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj7öubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M…hj3öubjÃ)�”}”(hhh]”hì)�”}”(hŒ¤Offset from GPU **addr** to create CPU address mirror mappings. MBZ with current level of support (e.g. 1 to 1 mapping between GPU and CPU mappings only supported).”h]”(hŒOffset from GPU ”…”�”}”(hjRöh²hh³Nh´NubjŒ)�”}”(hŒ**addr**”h]”hŒaddr”…”�”}”(hjZöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjRöubhŒŒ to create CPU address mirror mappings. MBZ with current level of support (e.g. 1 to 1 mapping between GPU and CPU mappings only supported).”…”�”}”(hjRöh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M‚hjOöubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj3öubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jNöh´M…hj½óubj¬)�”}”(hŒM``range`` Number of bytes from the object to bind to addr, MBZ for UNMAP_ALL ”h]”(j²)�”}”(hŒ ``range``”h]”jC)�”}”(hj…öh]”hŒrange”…”�”}”(hj‡öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjƒöubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M‹hjöubjÃ)�”}”(hhh]”hì)�”}”(hŒBNumber of bytes from the object to bind to addr, MBZ for UNMAP_ALL”h]”hŒBNumber of bytes from the object to bind to addr, MBZ for UNMAP_ALL”…”�”}”(hjžöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ2``addr`` Address to operate on, MBZ for UNMAP_ALL ”h]”(j²)�”}”(hŒ``addr``”h]”jC)�”}”(hj¾öh]”hŒaddr”…”�”}”(hjÀöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj¼öubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M�hj¸öubjÃ)�”}”(hhh]”hì)�”}”(hŒ(Address to operate on, MBZ for UNMAP_ALL”h]”hŒ(Address to operate on, MBZ for UNMAP_ALL”…”�”}”(hj×öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ!``op`` Bind operation to perform ”h]”(j²)�”}”(hŒ``op``”h]”jC)�”}”(hj÷öh]”hŒop”…”�”}”(hjùöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjõöubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M—hjñöubjÃ)�”}”(hhh]”hì)�”}”(hŒBind operation to perform”h]”hŒBind operation to perform”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ``flags`` Bind flags ”h]”(j²)�”}”(hŒ ``flags``”h]”jC)�”}”(hj0÷h]”hŒflags”…”�”}”(hj2÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj.÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M¢hj*÷ubjÃ)�”}”(hhh]”hì)�”}”(hŒ Bind flags”h]”hŒ Bind flags”…”�”}”(hjI÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jE÷h´M¢hjF÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj*÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jE÷h´M¢hj½óubj¬)�”}”(hŒ§``prefetch_mem_region_instance`` Memory region to prefetch VMA to. It is a region instance, not a mask. To be used only with ``DRM_XE_VM_BIND_OP_PREFETCH`` operation. ”h]”(j²)�”}”(hŒ ``prefetch_mem_region_instance``”h]”jC)�”}”(hji÷h]”hŒprefetch_mem_region_instance”…”�”}”(hjk÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjg÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M©hjc÷ubjÃ)�”}”(hhh]”hì)�”}”(hŒ…Memory region to prefetch VMA to. It is a region instance, not a mask. To be used only with ``DRM_XE_VM_BIND_OP_PREFETCH`` operation.”h]”(hŒ\Memory region to prefetch VMA to. It is a region instance, not a mask. To be used only with ”…”�”}”(hj‚÷h²hh³Nh´NubjC)�”}”(hŒ``DRM_XE_VM_BIND_OP_PREFETCH``”h]”hŒDRM_XE_VM_BIND_OP_PREFETCH”…”�”}”(hjŠ÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj‚÷ubhŒ operation.”…”�”}”(hj‚÷h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M§hj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjc÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j~÷h´M©hj½óubj¬)�”}”(hŒ ``pad2`` MBZ ”h]”(j²)�”}”(hŒ``pad2``”h]”jC)�”}”(hjµ÷h]”hŒpad2”…”�”}”(hj·÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj³÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M­hj¯÷ubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hjÎ÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ``reserved`` Reserved”h]”(j²)�”}”(hŒ ``reserved``”h]”jC)�”}”(hjî÷h]”hŒreserved”…”�”}”(hjð÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjì÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M¯hjè÷ubjÃ)�”}”(hhh]”hì)�”}”(hŒReserved”h]”hŒReserved”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”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¦hjuóubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hj1øh]”hŒ Description”…”�”}”(hj3øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj/øubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M³hj-¸h²hubj§)�”}”(hhh]”(j¬)�”}”(hŒ´The **op** can be: - ``DRM_XE_VM_BIND_OP_MAP`` - ``DRM_XE_VM_BIND_OP_UNMAP`` - ``DRM_XE_VM_BIND_OP_MAP_USERPTR`` - ``DRM_XE_VM_BIND_OP_UNMAP_ALL`` - ``DRM_XE_VM_BIND_OP_PREFETCH`` ”h]”(j²)�”}”(hŒThe **op** can be:”h]”(hŒThe ”…”�”}”(hjNøh²hh³Nh´NubjŒ)�”}”(hŒ**op**”h]”hŒop”…”�”}”(hjVøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjNøubhŒ can be:”…”�”}”(hjNøh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MhjJøubjÃ)�”}”(hhh]”hâ)�”}”(hhh]”(hç)�”}”(hŒ``DRM_XE_VM_BIND_OP_MAP``”h]”hì)�”}”(hjwøh]”jC)�”}”(hjwøh]”hŒDRM_XE_VM_BIND_OP_MAP”…”�”}”(hj|øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjyøubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhjuøubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjrøubhç)�”}”(hŒ``DRM_XE_VM_BIND_OP_UNMAP``”h]”hì)�”}”(hj˜øh]”jC)�”}”(hj˜øh]”hŒDRM_XE_VM_BIND_OP_UNMAP”…”�”}”(hj�øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjšøubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhj–øubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjrøubhç)�”}”(hŒ!``DRM_XE_VM_BIND_OP_MAP_USERPTR``”h]”hì)�”}”(hj¹øh]”jC)�”}”(hj¹øh]”hŒDRM_XE_VM_BIND_OP_MAP_USERPTR”…”�”}”(hj¾øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj»øubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhj·øubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjrøubhç)�”}”(hŒ``DRM_XE_VM_BIND_OP_UNMAP_ALL``”h]”hì)�”}”(hjÚøh]”jC)�”}”(hjÚøh]”hŒDRM_XE_VM_BIND_OP_UNMAP_ALL”…”�”}”(hjßøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÜøubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MhjØøubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjrøubhç)�”}”(hŒ``DRM_XE_VM_BIND_OP_PREFETCH`` ”h]”hì)�”}”(hŒ``DRM_XE_VM_BIND_OP_PREFETCH``”h]”jC)�”}”(hjÿøh]”hŒDRM_XE_VM_BIND_OP_PREFETCH”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjýøubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jnøh´Mhjùøubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjrøubeh}”(h]”h ]”h"]”h$]”h&]”jÀ jÁ uh1háh³j�øh´Mhjoøubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjJøubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jnøh´MhjGøubj¬)�”}”(hXüand the **flags** can be: - ``DRM_XE_VM_BIND_FLAG_READONLY`` - Setup the page tables as read-only to ensure write protection - ``DRM_XE_VM_BIND_FLAG_IMMEDIATE`` - On a faulting VM, do the MAP operation immediately rather than deferring the MAP to the page fault handler. This is implied on a non-faulting VM as there is no fault handler to defer to. - ``DRM_XE_VM_BIND_FLAG_NULL`` - When the NULL flag is set, the page tables are setup with a special bit which indicates writes are dropped and all reads return zero. In the future, the NULL flags will only be valid for DRM_XE_VM_BIND_OP_MAP operations, the BO handle MBZ, and the BO offset MBZ. This flag is intended to implement VK sparse bindings. - ``DRM_XE_VM_BIND_FLAG_CHECK_PXP`` - If the object is encrypted via PXP, reject the binding if the encryption key is no longer valid. This flag has no effect on BOs that are not marked as using PXP. - ``DRM_XE_VM_BIND_FLAG_CPU_ADDR_MIRROR`` - When the CPU address mirror flag is set, no mappings are created rather the range is reserved for CPU address mirroring which will be populated on GPU page faults or prefetches. Only valid on VMs with DRM_XE_VM_CREATE_FLAG_FAULT_MODE set. The CPU address mirror flag is only valid for DRM_XE_VM_BIND_OP_MAP operations, the BO handle MBZ, and the BO offset MBZ. - ``DRM_XE_VM_BIND_FLAG_MADVISE_AUTORESET`` - Can be used in combination with ``DRM_XE_VM_BIND_FLAG_CPU_ADDR_MIRROR`` to reset madvises when the underlying CPU address space range is unmapped (typically with munmap(2) or brk(2)). The madvise values set with :c:type:`DRM_IOCTL_XE_MADVISE` are reset to the values that were present immediately after the :c:type:`DRM_IOCTL_XE_VM_BIND`. The reset GPU virtual address range is the intersection of the range bound using :c:type:`DRM_IOCTL_XE_VM_BIND` and the virtual CPU address space range unmapped. This functionality is present to mimic the behaviour of CPU address space madvises set using madvise(2), which are typically reset on unmap. ”h]”(j²)�”}”(hŒand the **flags** can be:”h]”(hŒand the ”…”�”}”(hj0ùh²hh³Nh´NubjŒ)�”}”(hŒ **flags**”h]”hŒflags”…”�”}”(hj8ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj0ùubhŒ can be:”…”�”}”(hj0ùh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M%hj,ùubjÃ)�”}”(hhh]”hâ)�”}”(hhh]”(hç)�”}”(hŒ```DRM_XE_VM_BIND_FLAG_READONLY`` - Setup the page tables as read-only to ensure write protection”h]”hì)�”}”(hŒ```DRM_XE_VM_BIND_FLAG_READONLY`` - Setup the page tables as read-only to ensure write protection”h]”(jC)�”}”(hŒ ``DRM_XE_VM_BIND_FLAG_READONLY``”h]”hŒDRM_XE_VM_BIND_FLAG_READONLY”…”�”}”(hj_ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj[ùubhŒ@ - Setup the page tables as read-only to ensure write protection”…”�”}”(hj[ùh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MhjWùubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjTùubhç)�”}”(hŒÞ``DRM_XE_VM_BIND_FLAG_IMMEDIATE`` - On a faulting VM, do the MAP operation immediately rather than deferring the MAP to the page fault handler. This is implied on a non-faulting VM as there is no fault handler to defer to.”h]”hì)�”}”(hŒÞ``DRM_XE_VM_BIND_FLAG_IMMEDIATE`` - On a faulting VM, do the MAP operation immediately rather than deferring the MAP to the page fault handler. This is implied on a non-faulting VM as there is no fault handler to defer to.”h]”(jC)�”}”(hŒ!``DRM_XE_VM_BIND_FLAG_IMMEDIATE``”h]”hŒDRM_XE_VM_BIND_FLAG_IMMEDIATE”…”�”}”(hj†ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj‚ùubhŒ½ - On a faulting VM, do the MAP operation immediately rather than deferring the MAP to the page fault handler. This is implied on a non-faulting VM as there is no fault handler to defer to.”…”�”}”(hj‚ùh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M hj~ùubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjTùubhç)�”}”(hX\``DRM_XE_VM_BIND_FLAG_NULL`` - When the NULL flag is set, the page tables are setup with a special bit which indicates writes are dropped and all reads return zero. In the future, the NULL flags will only be valid for DRM_XE_VM_BIND_OP_MAP operations, the BO handle MBZ, and the BO offset MBZ. This flag is intended to implement VK sparse bindings.”h]”hì)�”}”(hX\``DRM_XE_VM_BIND_FLAG_NULL`` - When the NULL flag is set, the page tables are setup with a special bit which indicates writes are dropped and all reads return zero. In the future, the NULL flags will only be valid for DRM_XE_VM_BIND_OP_MAP operations, the BO handle MBZ, and the BO offset MBZ. This flag is intended to implement VK sparse bindings.”h]”(jC)�”}”(hŒ``DRM_XE_VM_BIND_FLAG_NULL``”h]”hŒDRM_XE_VM_BIND_FLAG_NULL”…”�”}”(hj­ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj©ùubhX@ - When the NULL flag is set, the page tables are setup with a special bit which indicates writes are dropped and all reads return zero. In the future, the NULL flags will only be valid for DRM_XE_VM_BIND_OP_MAP operations, the BO handle MBZ, and the BO offset MBZ. This flag is intended to implement VK sparse bindings.”…”�”}”(hj©ùh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M hj¥ùubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjTùubhç)�”}”(hŒÅ``DRM_XE_VM_BIND_FLAG_CHECK_PXP`` - If the object is encrypted via PXP, reject the binding if the encryption key is no longer valid. This flag has no effect on BOs that are not marked as using PXP.”h]”hì)�”}”(hŒÅ``DRM_XE_VM_BIND_FLAG_CHECK_PXP`` - If the object is encrypted via PXP, reject the binding if the encryption key is no longer valid. This flag has no effect on BOs that are not marked as using PXP.”h]”(jC)�”}”(hŒ!``DRM_XE_VM_BIND_FLAG_CHECK_PXP``”h]”hŒDRM_XE_VM_BIND_FLAG_CHECK_PXP”…”�”}”(hjÔùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÐùubhŒ¤ - If the object is encrypted via PXP, reject the binding if the encryption key is no longer valid. This flag has no effect on BOs that are not marked as using PXP.”…”�”}”(hjÐùh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MhjÌùubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjTùubhç)�”}”(hX’``DRM_XE_VM_BIND_FLAG_CPU_ADDR_MIRROR`` - When the CPU address mirror flag is set, no mappings are created rather the range is reserved for CPU address mirroring which will be populated on GPU page faults or prefetches. Only valid on VMs with DRM_XE_VM_CREATE_FLAG_FAULT_MODE set. The CPU address mirror flag is only valid for DRM_XE_VM_BIND_OP_MAP operations, the BO handle MBZ, and the BO offset MBZ.”h]”hì)�”}”(hX’``DRM_XE_VM_BIND_FLAG_CPU_ADDR_MIRROR`` - When the CPU address mirror flag is set, no mappings are created rather the range is reserved for CPU address mirroring which will be populated on GPU page faults or prefetches. Only valid on VMs with DRM_XE_VM_CREATE_FLAG_FAULT_MODE set. The CPU address mirror flag is only valid for DRM_XE_VM_BIND_OP_MAP operations, the BO handle MBZ, and the BO offset MBZ.”h]”(jC)�”}”(hŒ'``DRM_XE_VM_BIND_FLAG_CPU_ADDR_MIRROR``”h]”hŒ#DRM_XE_VM_BIND_FLAG_CPU_ADDR_MIRROR”…”�”}”(hjûùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj÷ùubhXk - When the CPU address mirror flag is set, no mappings are created rather the range is reserved for CPU address mirroring which will be populated on GPU page faults or prefetches. Only valid on VMs with DRM_XE_VM_CREATE_FLAG_FAULT_MODE set. The CPU address mirror flag is only valid for DRM_XE_VM_BIND_OP_MAP operations, the BO handle MBZ, and the BO offset MBZ.”…”�”}”(hj÷ùh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhjóùubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjTùubhç)�”}”(hX®``DRM_XE_VM_BIND_FLAG_MADVISE_AUTORESET`` - Can be used in combination with ``DRM_XE_VM_BIND_FLAG_CPU_ADDR_MIRROR`` to reset madvises when the underlying CPU address space range is unmapped (typically with munmap(2) or brk(2)). The madvise values set with :c:type:`DRM_IOCTL_XE_MADVISE` are reset to the values that were present immediately after the :c:type:`DRM_IOCTL_XE_VM_BIND`. The reset GPU virtual address range is the intersection of the range bound using :c:type:`DRM_IOCTL_XE_VM_BIND` and the virtual CPU address space range unmapped. This functionality is present to mimic the behaviour of CPU address space madvises set using madvise(2), which are typically reset on unmap. ”h]”hì)�”}”(hX­``DRM_XE_VM_BIND_FLAG_MADVISE_AUTORESET`` - Can be used in combination with ``DRM_XE_VM_BIND_FLAG_CPU_ADDR_MIRROR`` to reset madvises when the underlying CPU address space range is unmapped (typically with munmap(2) or brk(2)). The madvise values set with :c:type:`DRM_IOCTL_XE_MADVISE` are reset to the values that were present immediately after the :c:type:`DRM_IOCTL_XE_VM_BIND`. The reset GPU virtual address range is the intersection of the range bound using :c:type:`DRM_IOCTL_XE_VM_BIND` and the virtual CPU address space range unmapped. This functionality is present to mimic the behaviour of CPU address space madvises set using madvise(2), which are typically reset on unmap.”h]”(jC)�”}”(hŒ)``DRM_XE_VM_BIND_FLAG_MADVISE_AUTORESET``”h]”hŒ%DRM_XE_VM_BIND_FLAG_MADVISE_AUTORESET”…”�”}”(hj"úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjúubhŒ# - Can be used in combination with ”…”�”}”(hjúh²hh³Nh´NubjC)�”}”(hŒ'``DRM_XE_VM_BIND_FLAG_CPU_ADDR_MIRROR``”h]”hŒ#DRM_XE_VM_BIND_FLAG_CPU_ADDR_MIRROR”…”�”}”(hj4úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjúubhŒ� to reset madvises when the underlying CPU address space range is unmapped (typically with munmap(2) or brk(2)). The madvise values set with ”…”�”}”(hjúh²hh³Nh´Nubh)�”}”(hŒ:c:type:`DRM_IOCTL_XE_MADVISE`”h]”jC)�”}”(hjHúh]”hŒDRM_IOCTL_XE_MADVISE”…”�”}”(hjJúh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjFúubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒDRM_IOCTL_XE_MADVISE”uh1hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MhjúubhŒA are reset to the values that were present immediately after the ”…”�”}”(hjúh²hh³Nh´Nubh)�”}”(hŒ:c:type:`DRM_IOCTL_XE_VM_BIND`”h]”jC)�”}”(hjlúh]”hŒDRM_IOCTL_XE_VM_BIND”…”�”}”(hjnúh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjjúubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒDRM_IOCTL_XE_VM_BIND”uh1hh³jeúh´MhjúubhŒS. The reset GPU virtual address range is the intersection of the range bound using ”…”�”}”(hjúh²hh³Nh´Nubh)�”}”(hŒ:c:type:`DRM_IOCTL_XE_VM_BIND`”h]”jC)�”}”(hj�úh]”hŒDRM_IOCTL_XE_VM_BIND”…”�”}”(hj‘úh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj�úubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒDRM_IOCTL_XE_VM_BIND”uh1hh³jeúh´MhjúubhŒ¿ and the virtual CPU address space range unmapped. This functionality is present to mimic the behaviour of CPU address space madvises set using madvise(2), which are typically reset on unmap.”…”�”}”(hjúh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jeúh´Mhjúubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjTùubeh}”(h]”h ]”h"]”h$]”h&]”jÀ jÁ uh1háh³jwùh´MhjQùubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj,ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jPùh´M%hjGøubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj-¸h²hh³Nh´Nubhì)�”}”(hŒ**Note**”h]”jŒ)�”}”(hjÖúh]”hŒNote”…”�”}”(hjØúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÔúubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M'hj-¸h²hubj§)�”}”(hhh]”(j¬)�”}”(hX(free(3) may or may not call munmap(2) and/or brk(2), and may thus not invoke autoreset. Neither will stack variables going out of scope. Therefore it's recommended to always explicitly reset the madvises when freeing the memory backing a region used in a :c:type:`DRM_IOCTL_XE_MADVISE` call. - ``DRM_XE_VM_BIND_FLAG_DECOMPRESS`` - Request on-device decompression for a MAP. When set on a MAP bind operation, request the driver schedule an on-device in-place decompression (via the migrate/resolve path) for the GPU mapping created by this bind. Only valid for DRM_XE_VM_BIND_OP_MAP; usage on other ops is rejected. The bind's pat_index must select the device's "no-compression" PAT. Only meaningful for VRAM-backed BOs on devices that support Flat CCS and the required HW generation XE2+. ”h]”(j²)�”}”(hŒAfree(3) may or may not call munmap(2) and/or brk(2), and may thus”h]”hŒAfree(3) may or may not call munmap(2) and/or brk(2), and may thus”…”�”}”(hjóúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M2hjïúubjÃ)�”}”(hhh]”(jK)�”}”(hŒânot invoke autoreset. Neither will stack variables going out of scope. Therefore it's recommended to always explicitly reset the madvises when freeing the memory backing a region used in a :c:type:`DRM_IOCTL_XE_MADVISE` call. ”h]”hì)�”}”(hŒánot invoke autoreset. Neither will stack variables going out of scope. Therefore it's recommended to always explicitly reset the madvises when freeing the memory backing a region used in a :c:type:`DRM_IOCTL_XE_MADVISE` call.”h]”(hŒ¿not invoke autoreset. Neither will stack variables going out of scope. Therefore it’s recommended to always explicitly reset the madvises when freeing the memory backing a region used in a ”…”�”}”(hj ûh²hh³Nh´Nubh)�”}”(hŒ:c:type:`DRM_IOCTL_XE_MADVISE`”h]”jC)�”}”(hjûh]”hŒDRM_IOCTL_XE_MADVISE”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjûubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j¼jÀŒDRM_IOCTL_XE_MADVISE”uh1hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M(hj ûubhŒ call.”…”�”}”(hj ûh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j0ûh´M(hjûubah}”(h]”h ]”h"]”h$]”h&]”uh1jJh³j0ûh´M(hjûubhâ)�”}”(hhh]”hç)�”}”(hXï``DRM_XE_VM_BIND_FLAG_DECOMPRESS`` - Request on-device decompression for a MAP. When set on a MAP bind operation, request the driver schedule an on-device in-place decompression (via the migrate/resolve path) for the GPU mapping created by this bind. Only valid for DRM_XE_VM_BIND_OP_MAP; usage on other ops is rejected. The bind's pat_index must select the device's "no-compression" PAT. Only meaningful for VRAM-backed BOs on devices that support Flat CCS and the required HW generation XE2+. ”h]”hì)�”}”(hXî``DRM_XE_VM_BIND_FLAG_DECOMPRESS`` - Request on-device decompression for a MAP. When set on a MAP bind operation, request the driver schedule an on-device in-place decompression (via the migrate/resolve path) for the GPU mapping created by this bind. Only valid for DRM_XE_VM_BIND_OP_MAP; usage on other ops is rejected. The bind's pat_index must select the device's "no-compression" PAT. Only meaningful for VRAM-backed BOs on devices that support Flat CCS and the required HW generation XE2+.”h]”(jC)�”}”(hŒ"``DRM_XE_VM_BIND_FLAG_DECOMPRESS``”h]”hŒDRM_XE_VM_BIND_FLAG_DECOMPRESS”…”�”}”(hjLûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjHûubhXÔ - Request on-device decompression for a MAP. When set on a MAP bind operation, request the driver schedule an on-device in-place decompression (via the migrate/resolve path) for the GPU mapping created by this bind. Only valid for DRM_XE_VM_BIND_OP_MAP; usage on other ops is rejected. The bind’s pat_index must select the device’s “no-compressionâ€� PAT. Only meaningful for VRAM-backed BOs on devices that support Flat CCS and the required HW generation XE2+.”…”�”}”(hjHûh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M,hjDûubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjAûubah}”(h]”h ]”h"]”h$]”h&]”jÀ jÁ uh1háh³jdûh´M,hjûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjïúubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jûh´M2hjìúubj¬)�”}”(hŒÎThe **prefetch_mem_region_instance** for ``DRM_XE_VM_BIND_OP_PREFETCH`` can also be: - ``DRM_XE_CONSULT_MEM_ADVISE_PREF_LOC``, which ensures prefetching occurs in the memory region advised by madvise. ”h]”(j²)�”}”(hŒTThe **prefetch_mem_region_instance** for ``DRM_XE_VM_BIND_OP_PREFETCH`` can also be:”h]”(hŒThe ”…”�”}”(hj�ûh²hh³Nh´NubjŒ)�”}”(hŒ **prefetch_mem_region_instance**”h]”hŒprefetch_mem_region_instance”…”�”}”(hj‰ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj�ûubhŒ for ”…”�”}”(hj�ûh²hh³Nh´NubjC)�”}”(hŒ``DRM_XE_VM_BIND_OP_PREFETCH``”h]”hŒDRM_XE_VM_BIND_OP_PREFETCH”…”�”}”(hj›ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj�ûubhŒ can also be:”…”�”}”(hj�ûh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M9hj}ûubjÃ)�”}”(hhh]”hâ)�”}”(hhh]”hç)�”}”(hŒu``DRM_XE_CONSULT_MEM_ADVISE_PREF_LOC``, which ensures prefetching occurs in the memory region advised by madvise. ”h]”hì)�”}”(hŒq``DRM_XE_CONSULT_MEM_ADVISE_PREF_LOC``, which ensures prefetching occurs in the memory region advised by madvise.”h]”(jC)�”}”(hŒ&``DRM_XE_CONSULT_MEM_ADVISE_PREF_LOC``”h]”hŒ"DRM_XE_CONSULT_MEM_ADVISE_PREF_LOC”…”�”}”(hjÂûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj¾ûubhŒK, which ensures prefetching occurs in the memory region advised by madvise.”…”�”}”(hj¾ûh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M5hjºûubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj·ûubah}”(h]”h ]”h"]”h$]”h&]”jÀ jÁ uh1háh³jÚûh´M5hj´ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj}ûubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j³ûh´M9hjìúubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj-¸h²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_xe_vm_bind (C struct)”Œc.drm_xe_vm_bind”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_vm_bind”h]”jg)�”}”(hŒstruct drm_xe_vm_bind”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjüh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”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Œdrm_xe_vm_bind”h]”j–)�”}”(hj üh]”hŒdrm_xe_vm_bind”…”�”}”(hj2üh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj.üubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjüh²hh³jüh´M;ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”hì)�”}”(hŒ'Input of :c:type:`DRM_IOCTL_XE_VM_BIND`”h]”(hŒ Input of ”…”�”}”(hjTüh²hh³Nh´Nubh)�”}”(hŒ:c:type:`DRM_IOCTL_XE_VM_BIND`”h]”jC)�”}”(hj^üh]”hŒDRM_IOCTL_XE_VM_BIND”…”�”}”(hj`üh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj\üubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j»)�”}”j¾]”jÊá)�”}”jÍáj üsbŒc.drm_xe_vm_bind”†”asbjÀŒDRM_IOCTL_XE_VM_BIND”uh1hh³jÑáh´KhjTüubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M´hjQüh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjüh²hh³jüh´M;ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj’üjçj’üjè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hXÐ**Definition**:: struct drm_xe_vm_bind { __u64 extensions; __u32 vm_id; __u32 exec_queue_id; __u32 pad; __u32 num_binds; union { struct drm_xe_vm_bind_op bind; __u64 vector_of_binds; }; __u32 pad2; __u32 num_syncs; __u64 syncs; __u64 reserved[2]; }; **Members** ``extensions`` Pointer to the first extension struct, if any ``vm_id`` The ID of the VM to bind to ``exec_queue_id`` exec_queue_id, must be of class DRM_XE_ENGINE_CLASS_VM_BIND and exec queue must have same vm_id. If zero, the default VM bind engine is used. ``pad`` MBZ ``num_binds`` number of binds in this IOCTL ``{unnamed_union}`` anonymous ``bind`` used if num_binds == 1 ``vector_of_binds`` userptr to array of struct drm_xe_vm_bind_op if num_binds > 1 ``pad2`` MBZ ``num_syncs`` amount of syncs to wait on ``syncs`` pointer to struct drm_xe_sync array ``reserved`` Reserved”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjžüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjšüubhŒ:”…”�”}”(hjšüh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M¸hj–üubj)�”}”(hX$struct drm_xe_vm_bind { __u64 extensions; __u32 vm_id; __u32 exec_queue_id; __u32 pad; __u32 num_binds; union { struct drm_xe_vm_bind_op bind; __u64 vector_of_binds; }; __u32 pad2; __u32 num_syncs; __u64 syncs; __u64 reserved[2]; };”h]”hX$struct drm_xe_vm_bind { __u64 extensions; __u32 vm_id; __u32 exec_queue_id; __u32 pad; __u32 num_binds; union { struct drm_xe_vm_bind_op bind; __u64 vector_of_binds; }; __u32 pad2; __u32 num_syncs; __u64 syncs; __u64 reserved[2]; };”…”�”}”hj·üsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mºhj–üubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjÈüh]”hŒMembers”…”�”}”(hjÊüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÆüubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÊhj–üubj§)�”}”(hhh]”(j¬)�”}”(hŒ=``extensions`` Pointer to the first extension struct, if any ”h]”(j²)�”}”(hŒ``extensions``”h]”jC)�”}”(hjçüh]”hŒ extensions”…”�”}”(hjéüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjåüubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÐhjáüubjÃ)�”}”(hhh]”hì)�”}”(hŒ-Pointer to the first extension struct, if any”h]”hŒ-Pointer to the first extension struct, if any”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ&``vm_id`` The ID of the VM to bind to ”h]”(j²)�”}”(hŒ ``vm_id``”h]”jC)�”}”(hj ýh]”hŒvm_id”…”�”}”(hj"ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjýubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÓhjýubjÃ)�”}”(hhh]”hì)�”}”(hŒThe ID of the VM to bind to”h]”hŒThe ID of the VM to bind to”…”�”}”(hj9ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Þüubj¬)�”}”(hŒ ``exec_queue_id`` exec_queue_id, must be of class DRM_XE_ENGINE_CLASS_VM_BIND and exec queue must have same vm_id. If zero, the default VM bind engine is used. ”h]”(j²)�”}”(hŒ``exec_queue_id``”h]”jC)�”}”(hjYýh]”hŒ exec_queue_id”…”�”}”(hj[ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjWýubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÙhjSýubjÃ)�”}”(hhh]”hì)�”}”(hŒ�exec_queue_id, must be of class DRM_XE_ENGINE_CLASS_VM_BIND and exec queue must have same vm_id. If zero, the default VM bind engine is used.”h]”hŒ�exec_queue_id, must be of class DRM_XE_ENGINE_CLASS_VM_BIND and exec queue must have same vm_id. If zero, the default VM bind engine is used.”…”�”}”(hjrýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M×hjoýubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjSýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jnýh´MÙhjÞüubj¬)�”}”(hŒ ``pad`` MBZ ”h]”(j²)�”}”(hŒ``pad``”h]”jC)�”}”(hj“ýh]”hŒpad”…”�”}”(hj•ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj‘ýubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÝhj�ýubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hj¬ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ,``num_binds`` number of binds in this IOCTL ”h]”(j²)�”}”(hŒ ``num_binds``”h]”jC)�”}”(hjÌýh]”hŒ num_binds”…”�”}”(hjÎýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÊýubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MàhjÆýubjÃ)�”}”(hhh]”hì)�”}”(hŒnumber of binds in this IOCTL”h]”hŒnumber of binds in this IOCTL”…”�”}”(hjåýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ``{unnamed_union}`` anonymous ”h]”(j²)�”}”(hŒ``{unnamed_union}``”h]”jC)�”}”(hjþh]”hŒ{unnamed_union}”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjþubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´KhjÿýubjÃ)�”}”(hhh]”hì)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ ``bind`` used if num_binds == 1 ”h]”(j²)�”}”(hŒ``bind``”h]”jC)�”}”(hj>þh]”hŒbind”…”�”}”(hj@þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj<þubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mähj8þubjÃ)�”}”(hhh]”hì)�”}”(hŒused if num_binds == 1”h]”hŒused if num_binds == 1”…”�”}”(hjWþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jSþh´MähjTþubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj8þubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jSþh´MähjÞüubj¬)�”}”(hŒR``vector_of_binds`` userptr to array of struct drm_xe_vm_bind_op if num_binds > 1 ”h]”(j²)�”}”(hŒ``vector_of_binds``”h]”jC)�”}”(hjwþh]”hŒvector_of_binds”…”�”}”(hjyþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjuþubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MéhjqþubjÃ)�”}”(hhh]”hì)�”}”(hŒ=userptr to array of struct drm_xe_vm_bind_op if num_binds > 1”h]”hŒ=userptr to array of struct drm_xe_vm_bind_op if num_binds > 1”…”�”}”(hj�þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mèhj�þubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjqþubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jŒþh´MéhjÞüubj¬)�”}”(hŒ ``pad2`` MBZ ”h]”(j²)�”}”(hŒ``pad2``”h]”jC)�”}”(hj±þh]”hŒpad2”…”�”}”(hj³þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj¯þubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mîhj«þubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hjÊþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ)``num_syncs`` amount of syncs to wait on ”h]”(j²)�”}”(hŒ ``num_syncs``”h]”jC)�”}”(hjêþh]”hŒ num_syncs”…”�”}”(hjìþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjèþubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MñhjäþubjÃ)�”}”(hhh]”hì)�”}”(hŒamount of syncs to wait on”h]”hŒamount of syncs to wait on”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ.``syncs`` pointer to struct drm_xe_sync array ”h]”(j²)�”}”(hŒ ``syncs``”h]”jC)�”}”(hj#ÿh]”hŒsyncs”…”�”}”(hj%ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj!ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MôhjÿubjÃ)�”}”(hhh]”hì)�”}”(hŒ#pointer to struct drm_xe_sync array”h]”hŒ#pointer to struct drm_xe_sync array”…”�”}”(hj<ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j8ÿh´Môhj9ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j8ÿh´MôhjÞüubj¬)�”}”(hŒ``reserved`` Reserved”h]”(j²)�”}”(hŒ ``reserved``”h]”jC)�”}”(hj\ÿh]”hŒreserved”…”�”}”(hj^ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjZÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MöhjVÿubjÃ)�”}”(hhh]”hì)�”}”(hŒReserved”h]”hŒReserved”…”�”}”(hjuÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M÷hjrÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjVÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jqÿh´MöhjÞüubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj–üubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjŸÿh]”hŒ Description”…”�”}”(hj¡ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj�ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Múhj-¸h²hubhì)�”}”(hXBelow is an example of a minimal use of :c:type:`struct drm_xe_vm_bind ` to asynchronously bind the buffer `data` at address `BIND_ADDRESS` to illustrate `userptr`. It can be synchronized by using the example provided for :c:type:`struct drm_xe_sync `.”h]”(hŒ(Below is an example of a minimal use of ”…”�”}”(hjµÿh²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct drm_xe_vm_bind `”h]”jC)�”}”(hj¿ÿh]”hŒstruct drm_xe_vm_bind”…”�”}”(hjÁÿh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj½ÿubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒdrm_xe_vm_bind”uh1hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MµhjµÿubhŒ# to asynchronously bind the buffer ”…”�”}”(hjµÿh²hh³Nh´Nubj )�”}”(hŒ`data`”h]”hŒdata”…”�”}”(hjáÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjµÿubhŒ at address ”…”�”}”(hjµÿh²hh³Nh´Nubj )�”}”(hŒ`BIND_ADDRESS`”h]”hŒ BIND_ADDRESS”…”�”}”(hjóÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjµÿubhŒ to illustrate ”…”�”}”(hjµÿh²hh³Nh´Nubj )�”}”(hŒ `userptr`”h]”hŒuserptr”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjµÿubhŒ;. It can be synchronized by using the example provided for ”…”�”}”(hjµÿh²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct drm_xe_sync `”h]”jC)�”}”(hjh]”hŒstruct drm_xe_sync”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒ drm_xe_sync”uh1hh³jÜÿh´MµhjµÿubhŒ.”…”�”}”(hjµÿh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÜÿh´Mµhj-¸h²hubj)�”}”(hX–data = aligned_alloc(ALIGNMENT, BO_SIZE); struct drm_xe_vm_bind bind = { .vm_id = vm, .num_binds = 1, .bind.obj = 0, .bind.obj_offset = to_user_pointer(data), .bind.range = BO_SIZE, .bind.addr = BIND_ADDRESS, .bind.op = DRM_XE_VM_BIND_OP_MAP_USERPTR, .bind.flags = 0, .num_syncs = 1, .syncs = &sync, .exec_queue_id = 0, }; ioctl(fd, DRM_IOCTL_XE_VM_BIND, &bind);”h]”hX–data = aligned_alloc(ALIGNMENT, BO_SIZE); struct drm_xe_vm_bind bind = { .vm_id = vm, .num_binds = 1, .bind.obj = 0, .bind.obj_offset = to_user_pointer(data), .bind.range = BO_SIZE, .bind.addr = BIND_ADDRESS, .bind.op = DRM_XE_VM_BIND_OP_MAP_USERPTR, .bind.flags = 0, .num_syncs = 1, .syncs = &sync, .exec_queue_id = 0, }; ioctl(fd, DRM_IOCTL_XE_VM_BIND, &bind);”…”�”}”hj@sbah}”(h]”h ]”h"]”h$]”h&]”j­j®j¾‰j¿jÀjÁ}”uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mºhj-¸h²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ!drm_xe_vm_get_property (C struct)”Œc.drm_xe_vm_get_property”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_vm_get_property”h]”jg)�”}”(hŒstruct drm_xe_vm_get_property”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjeh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÏubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjeh²hh³jvh´MÏubj�)�”}”(hŒdrm_xe_vm_get_property”h]”j–)�”}”(hjch]”hŒdrm_xe_vm_get_property”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj…ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjeh²hh³jvh´MÏubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjah²hh³jvh´MÏubah}”(h]”j\ah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jvh´MÏhj^h²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ/Input of :c:type:`DRM_IOCTL_XE_VM_GET_PROPERTY`”h]”(hŒ Input of ”…”�”}”(hj«h²hh³Nh´Nubh)�”}”(hŒ&:c:type:`DRM_IOCTL_XE_VM_GET_PROPERTY`”h]”jC)�”}”(hjµh]”hŒDRM_IOCTL_XE_VM_GET_PROPERTY”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj³ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j»)�”}”j¾]”jÊá)�”}”jÍájcsbŒc.drm_xe_vm_get_property”†”asbjÀŒDRM_IOCTL_XE_VM_GET_PROPERTY”uh1hh³jÑáh´Khj«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhj¨h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj^h²hh³jvh´MÏubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjéjçjéjè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hX³**Definition**:: struct drm_xe_vm_get_property { __u64 extensions; __u32 vm_id; #define DRM_XE_VM_GET_PROPERTY_FAULTS 0; __u32 property; __u32 size; __u32 pad; union { __u64 data; __u64 value; }; __u64 reserved[3]; }; **Members** ``extensions`` Pointer to the first extension struct, if any ``vm_id`` The ID of the VM to query the properties of ``property`` property to get ``size`` Size to allocate for **data** ``pad`` MBZ ``{unnamed_union}`` anonymous ``data`` Pointer to user-defined array of flexible size and type ``value`` Return value for scalar queries ``reserved`` MBZ”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjñubhŒ:”…”�”}”(hjñh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhjíubj)�”}”(hXstruct drm_xe_vm_get_property { __u64 extensions; __u32 vm_id; #define DRM_XE_VM_GET_PROPERTY_FAULTS 0; __u32 property; __u32 size; __u32 pad; union { __u64 data; __u64 value; }; __u64 reserved[3]; };”h]”hXstruct drm_xe_vm_get_property { __u64 extensions; __u32 vm_id; #define DRM_XE_VM_GET_PROPERTY_FAULTS 0; __u32 property; __u32 size; __u32 pad; union { __u64 data; __u64 value; }; __u64 reserved[3]; };”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhjíubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjh]”hŒMembers”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M,hjíubj§)�”}”(hhh]”(j¬)�”}”(hŒ=``extensions`` Pointer to the first extension struct, if any ”h]”(j²)�”}”(hŒ``extensions``”h]”jC)�”}”(hj>h]”hŒ extensions”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M3hj8ubjÃ)�”}”(hhh]”hì)�”}”(hŒ-Pointer to the first extension struct, if any”h]”hŒ-Pointer to the first extension struct, if any”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jSh´M3hjTubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jSh´M3hj5ubj¬)�”}”(hŒ6``vm_id`` The ID of the VM to query the properties of ”h]”(j²)�”}”(hŒ ``vm_id``”h]”jC)�”}”(hjwh]”hŒvm_id”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjuubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M6hjqubjÃ)�”}”(hhh]”hì)�”}”(hŒ+The ID of the VM to query the properties of”h]”hŒ+The ID of the VM to query the properties of”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jŒh´M6hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjqubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jŒh´M6hj5ubj¬)�”}”(hŒ``property`` property to get ”h]”(j²)�”}”(hŒ ``property``”h]”jC)�”}”(hj°h]”hŒproperty”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M:hjªubjÃ)�”}”(hhh]”hì)�”}”(hŒproperty to get”h]”hŒproperty to get”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÅh´M:hjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjªubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÅh´M:hj5ubj¬)�”}”(hŒ'``size`` Size to allocate for **data** ”h]”(j²)�”}”(hŒ``size``”h]”jC)�”}”(hjéh]”hŒsize”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjçubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M=hjãubjÃ)�”}”(hhh]”hì)�”}”(hŒSize to allocate for **data**”h]”(hŒSize to allocate for ”…”�”}”(hjh²hh³Nh´NubjŒ)�”}”(hŒ**data**”h]”hŒdata”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jþh´M=hjÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjãubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jþh´M=hj5ubj¬)�”}”(hŒ ``pad`` MBZ ”h]”(j²)�”}”(hŒ``pad``”h]”jC)�”}”(hj0h]”hŒpad”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M@hj*ubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jEh´M@hjFubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jEh´M@hj5ubj¬)�”}”(hŒ``{unnamed_union}`` anonymous ”h]”(j²)�”}”(hŒ``{unnamed_union}``”h]”jC)�”}”(hjih]”hŒ{unnamed_union}”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjgubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´KhjcubjÃ)�”}”(hhh]”hì)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j~h´Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjcubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j~h´Khj5ubj¬)�”}”(hŒA``data`` Pointer to user-defined array of flexible size and type ”h]”(j²)�”}”(hŒ``data``”h]”jC)�”}”(hj¢h]”hŒdata”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MDhjœubjÃ)�”}”(hhh]”hì)�”}”(hŒ7Pointer to user-defined array of flexible size and type”h]”hŒ7Pointer to user-defined array of flexible size and type”…”�”•}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j·h´MDhj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjœubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j·h´MDhj5ubj¬)�”}”(hŒ*``value`` Return value for scalar queries ”h]”(j²)�”}”(hŒ ``value``”h]”jC)�”}”(hjÛh]”hŒvalue”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MFhjÕubjÃ)�”}”(hhh]”hì)�”}”(hŒReturn value for scalar queries”h]”hŒReturn value for scalar queries”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jðh´MFhjñubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jðh´MFhj5ubj¬)�”}”(hŒ``reserved`` MBZ”h]”(j²)�”}”(hŒ ``reserved``”h]”jC)�”}”(hjh]”hŒreserved”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MIhjubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MJhj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j)h´MIhj5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjíubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjWh]”hŒ Description”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjUubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MMhj-¸h²hubhì)�”}”(hŒëThe user provides a VM and a property to query among DRM_XE_VM_GET_PROPERTY_*, and sets the values in the vm_id and property members, respectively. This determines both the VM to get the property of, as well as the property to report.”h]”hŒëThe user provides a VM and a property to query among DRM_XE_VM_GET_PROPERTY_*, and sets the values in the vm_id and property members, respectively. This determines both the VM to get the property of, as well as the property to report.”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhj-¸h²hubhì)�”}”(hX„If size is set to 0, the driver fills it with the required size for the requested property. The user is expected here to allocate memory for the property structure and to provide a pointer to the allocated memory using the data member. For some properties, this may be zero, in which case, the value of the property will be saved to the value member and size will remain zero on return.”h]”hX„If size is set to 0, the driver fills it with the required size for the requested property. The user is expected here to allocate memory for the property structure and to provide a pointer to the allocated memory using the data member. For some properties, this may be zero, in which case, the value of the property will be saved to the value member and size will remain zero on return.”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhj-¸h²hubhì)�”}”(hŒeIf size is not zero, then the IOCTL will attempt to copy the requested property into the data member.”h]”hŒeIf size is not zero, then the IOCTL will attempt to copy the requested property into the data member.”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M%hj-¸h²hubhì)�”}”(hXThe IOCTL will return -ENOENT if the VM could not be identified from the provided VM ID, or -EINVAL if the IOCTL fails for any other reason, such as providing an invalid size for the given property or if the property data could not be copied to the memory allocated to the data member.”h]”hXThe IOCTL will return -ENOENT if the VM could not be identified from the provided VM ID, or -EINVAL if the IOCTL fails for any other reason, such as providing an invalid size for the given property or if the property data could not be copied to the memory allocated to the data member.”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M(hj-¸h²hubj§)�”}”(hhh]”j¬)�”}”(hŒCThe property member can be: - ``DRM_XE_VM_GET_PROPERTY_FAULTS`` ”h]”(j²)�”}”(hŒThe property member can be:”h]”hŒThe property member can be:”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M1hj¬ubjÃ)�”}”(hhh]”hâ)�”}”(hhh]”hç)�”}”(hŒ%``DRM_XE_VM_GET_PROPERTY_FAULTS`` ”h]”hì)�”}”(hŒ!``DRM_XE_VM_GET_PROPERTY_FAULTS``”h]”jC)�”}”(hjËh]”hŒDRM_XE_VM_GET_PROPERTY_FAULTS”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M.hjÅubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjÂubah}”(h]”h ]”h"]”h$]”h&]”jÀ jÁ uh1háh³jàh´M.hj¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j¾h´M1hj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj-¸h²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ#drm_xe_exec_queue_create (C struct)”Œc.drm_xe_exec_queue_create”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_exec_queue_create”h]”jg)�”}”(hŒstruct drm_xe_exec_queue_create”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M3ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjh²hh³j%h´M3ubj�)�”}”(hŒdrm_xe_exec_queue_create”h]”j–)�”}”(hjh]”hŒdrm_xe_exec_queue_create”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj4ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjh²hh³j%h´M3ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjh²hh³j%h´M3ubah}”(h]”j ah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³j%h´M3hj h²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ1Input of :c:type:`DRM_IOCTL_XE_EXEC_QUEUE_CREATE`”h]”(hŒ Input of ”…”�”}”(hjZh²hh³Nh´Nubh)�”}”(hŒ(:c:type:`DRM_IOCTL_XE_EXEC_QUEUE_CREATE`”h]”jC)�”}”(hjdh]”hŒDRM_IOCTL_XE_EXEC_QUEUE_CREATE”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjbubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j»)�”}”j¾]”jÊá)�”}”jÍájsbŒc.drm_xe_exec_queue_create”†”asbjÀŒDRM_IOCTL_XE_EXEC_QUEUE_CREATE”uh1hh³jÑáh´KhjZubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MNhjWh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj h²hh³j%h´M3ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj˜jçj˜jè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hX¤**Definition**:: struct drm_xe_exec_queue_create { #define DRM_XE_EXEC_QUEUE_EXTENSION_SET_PROPERTY 0; #define DRM_XE_EXEC_QUEUE_SET_PROPERTY_PRIORITY 0; #define DRM_XE_EXEC_QUEUE_SET_PROPERTY_TIMESLICE 1; #define DRM_XE_EXEC_QUEUE_SET_PROPERTY_PXP_TYPE 2; #define DRM_XE_EXEC_QUEUE_SET_HANG_REPLAY_STATE 3; #define DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_GROUP 4; #define DRM_XE_MULTI_GROUP_CREATE (1ull << 63); #define DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_QUEUE_PRIORITY 5; #define DRM_XE_EXEC_QUEUE_SET_DISABLE_STATE_CACHE_PERF_FIX 6; __u64 extensions; __u16 width; __u16 num_placements; __u32 vm_id; #define DRM_XE_EXEC_QUEUE_LOW_LATENCY_HINT (1 << 0); __u32 flags; __u32 exec_queue_id; __u64 instances; __u64 reserved[2]; }; **Members** ``extensions`` Pointer to the first extension struct, if any ``width`` submission width (number BB per exec) for this exec queue ``num_placements`` number of valid placements for this exec queue ``vm_id`` VM to use for this exec queue ``flags`` flags to use for this exec queue ``exec_queue_id`` Returned exec queue ID ``instances`` user pointer to a 2-d array of struct drm_xe_engine_class_instance length = width (i) * num_placements (j) index = j + i * width ``reserved`` Reserved”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj ubhŒ:”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MRhjœubj)�”}”(hXZstruct drm_xe_exec_queue_create { #define DRM_XE_EXEC_QUEUE_EXTENSION_SET_PROPERTY 0; #define DRM_XE_EXEC_QUEUE_SET_PROPERTY_PRIORITY 0; #define DRM_XE_EXEC_QUEUE_SET_PROPERTY_TIMESLICE 1; #define DRM_XE_EXEC_QUEUE_SET_PROPERTY_PXP_TYPE 2; #define DRM_XE_EXEC_QUEUE_SET_HANG_REPLAY_STATE 3; #define DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_GROUP 4; #define DRM_XE_MULTI_GROUP_CREATE (1ull << 63); #define DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_QUEUE_PRIORITY 5; #define DRM_XE_EXEC_QUEUE_SET_DISABLE_STATE_CACHE_PERF_FIX 6; __u64 extensions; __u16 width; __u16 num_placements; __u32 vm_id; #define DRM_XE_EXEC_QUEUE_LOW_LATENCY_HINT (1 << 0); __u32 flags; __u32 exec_queue_id; __u64 instances; __u64 reserved[2]; };”h]”hXZstruct drm_xe_exec_queue_create { #define DRM_XE_EXEC_QUEUE_EXTENSION_SET_PROPERTY 0; #define DRM_XE_EXEC_QUEUE_SET_PROPERTY_PRIORITY 0; #define DRM_XE_EXEC_QUEUE_SET_PROPERTY_TIMESLICE 1; #define DRM_XE_EXEC_QUEUE_SET_PROPERTY_PXP_TYPE 2; #define DRM_XE_EXEC_QUEUE_SET_HANG_REPLAY_STATE 3; #define DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_GROUP 4; #define DRM_XE_MULTI_GROUP_CREATE (1ull << 63); #define DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_QUEUE_PRIORITY 5; #define DRM_XE_EXEC_QUEUE_SET_DISABLE_STATE_CACHE_PERF_FIX 6; __u64 extensions; __u16 width; __u16 num_placements; __u32 vm_id; #define DRM_XE_EXEC_QUEUE_LOW_LATENCY_HINT (1 << 0); __u32 flags; __u32 exec_queue_id; __u64 instances; __u64 reserved[2]; };”…”�”}”hj½sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MThjœubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjÎh]”hŒMembers”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÌubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mihjœubj§)�”}”(hhh]”(j¬)�”}”(hŒ=``extensions`` Pointer to the first extension struct, if any ”h]”(j²)�”}”(hŒ``extensions``”h]”jC)�”}”(hjíh]”hŒ extensions”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjëubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M¤hjçubjÃ)�”}”(hhh]”hì)�”}”(hŒ-Pointer to the first extension struct, if any”h]”hŒ-Pointer to the first extension struct, if any”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jh´M¤hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjçubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jh´M¤hjäubj¬)�”}”(hŒD``width`` submission width (number BB per exec) for this exec queue ”h]”(j²)�”}”(hŒ ``width``”h]”jC)�”}”(hj&h]”hŒwidth”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M§hj ubjÃ)�”}”(hhh]”hì)�”}”(hŒ9submission width (number BB per exec) for this exec queue”h]”hŒ9submission width (number BB per exec) for this exec queue”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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ŒB``num_placements`` number of valid placements for this exec queue ”h]”(j²)�”}”(hŒ``num_placements``”h]”jC)�”}”(hj_h]”hŒnum_placements”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MªhjYubjÃ)�”}”(hhh]”hì)�”}”(hŒ.number of valid placements for this exec queue”h]”hŒ.number of valid placements for this exec queue”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jth´Mªhjuubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjYubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jth´Mªhjäubj¬)�”}”(hŒ(``vm_id`` VM to use for this exec queue ”h]”(j²)�”}”(hŒ ``vm_id``”h]”jC)�”}”(hj˜h]”hŒvm_id”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M­hj’ubjÃ)�”}”(hhh]”hì)�”}”(hŒVM to use for this exec queue”h]”hŒVM to use for this exec queue”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ+``flags`` flags to use for this exec queue ”h]”(j²)�”}”(hŒ ``flags``”h]”jC)�”}”(hjÑh]”hŒflags”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M±hjËubjÃ)�”}”(hhh]”hì)�”}”(hŒ flags to use for this exec queue”h]”hŒ flags to use for this exec queue”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ)``exec_queue_id`` Returned exec queue ID ”h]”(j²)�”}”(hŒ``exec_queue_id``”h]”jC)�”}”(hj h]”hŒ exec_queue_id”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M´hjubjÃ)�”}”(hhh]”hì)�”}”(hŒReturned exec queue ID”h]”hŒReturned exec queue ID”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jh´M´hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jh´M´hjäubj¬)�”}”(hŒ�``instances`` user pointer to a 2-d array of struct drm_xe_engine_class_instance length = width (i) * num_placements (j) index = j + i * width ”h]”(j²)�”}”(hŒ ``instances``”h]”jC)�”}”(hjCh]”hŒ instances”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjAubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M¼hj=ubjÃ)�”}”(hhh]”(hì)�”}”(hŒBuser pointer to a 2-d array of struct drm_xe_engine_class_instance”h]”hŒBuser pointer to a 2-d array of struct drm_xe_engine_class_instance”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M¸hjYubhì)�”}”(hŒ=length = width (i) * num_placements (j) index = j + i * width”h]”hŒ=length = width (i) * num_placements (j) index = j + i * width”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M»hjYubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jXh´M¼hjäubj¬)�”}”(hŒ``reserved`` Reserved”h]”(j²)�”}”(hŒ ``reserved``”h]”jC)�”}”(hjŒh]”hŒreserved”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M¿hj†ubjÃ)�”}”(hhh]”hì)�”}”(hŒReserved”h]”hŒReserved”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”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¦hjœubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjÏh]”hŒ Description”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÃhj-¸h²hubhì)�”}”(hŒÏThis ioctl supports setting the following properties via the ``DRM_XE_EXEC_QUEUE_EXTENSION_SET_PROPERTY`` extension, which uses the generic :c:type:`struct drm_xe_ext_set_property `:”h]”(hŒ=This ioctl supports setting the following properties via the ”…”�”}”(hjåh²hh³Nh´NubjC)�”}”(hŒ,``DRM_XE_EXEC_QUEUE_EXTENSION_SET_PROPERTY``”h]”hŒ(DRM_XE_EXEC_QUEUE_EXTENSION_SET_PROPERTY”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjåubhŒ# extension, which uses the generic ”…”�”}”(hjåh²hh³Nh´Nubh)�”}”(hŒB:c:type:`struct drm_xe_ext_set_property `”h]”jC)�”}”(hjh]”hŒstruct drm_xe_ext_set_property”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjÿubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒdrm_xe_ext_set_property”uh1hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MOhjåubhŒ:”…”�”}”(hjåh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jh´MOhj-¸h²hubjK)�”}”(hX�- ``DRM_XE_EXEC_QUEUE_SET_PROPERTY_PRIORITY`` - set the queue priority. CAP_SYS_NICE is required to set a value above normal. - ``DRM_XE_EXEC_QUEUE_SET_PROPERTY_TIMESLICE`` - set the queue timeslice duration in microseconds. - ``DRM_XE_EXEC_QUEUE_SET_PROPERTY_PXP_TYPE`` - set the type of PXP session this queue will be used with. Valid values are listed in enum drm_xe_pxp_session_type. ``DRM_XE_PXP_TYPE_NONE`` is the default behavior, so there is no need to explicitly set that. When a queue of type ``DRM_XE_PXP_TYPE_HWDRM`` is created, the PXP default HWDRM session (``DRM_XE_PXP_HWDRM_DEFAULT_SESSION``) will be started, if it isn't already running. The user is expected to query the PXP status via the query ioctl (see ``DRM_XE_DEVICE_QUERY_PXP_STATUS``) and to wait for PXP to be ready before attempting to create a queue with this property. When a queue is created before PXP is ready, the ioctl will return -EBUSY if init is still in progress or -EIO if init failed. Given that going into a power-saving state kills PXP HWDRM sessions, runtime PM will be blocked while queues of this type are alive. All PXP queues will be killed if a PXP invalidation event occurs. - ``DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_GROUP`` - Create a multi-queue group or add secondary queues to a multi-queue group. If the extension's 'value' field has ``DRM_XE_MULTI_GROUP_CREATE`` flag set, then a new multi-queue group is created with this queue as the primary queue (Q0). Otherwise, the queue gets added to the multi-queue group whose primary queue's exec_queue_id is specified in the lower 32 bits of the 'value' field. All the other non-relevant bits of extension's 'value' field while adding the primary or the secondary queues of the group must be set to 0. - ``DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_QUEUE_PRIORITY`` - Set the queue priority within the multi-queue group. Current valid priority values are 0–2 (default is 1), with higher values indicating higher priority. - ``DRM_XE_EXEC_QUEUE_SET_DISABLE_STATE_CACHE_PERF_FIX`` - Set the queue to enable render color cache keying on BTP+BTI instead of just BTI (only valid for render queues). ”h]”hâ)�”}”(hhh]”(hç)�”}”(hŒ{``DRM_XE_EXEC_QUEUE_SET_PROPERTY_PRIORITY`` - set the queue priority. CAP_SYS_NICE is required to set a value above normal.”h]”hì)�”}”(hŒ{``DRM_XE_EXEC_QUEUE_SET_PROPERTY_PRIORITY`` - set the queue priority. CAP_SYS_NICE is required to set a value above normal.”h]”(jC)�”}”(hŒ+``DRM_XE_EXEC_QUEUE_SET_PROPERTY_PRIORITY``”h]”hŒ'DRM_XE_EXEC_QUEUE_SET_PROPERTY_PRIORITY”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj4ubhŒP - set the queue priority. CAP_SYS_NICE is required to set a value above normal.”…”�”}”(hj4h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MShj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj-ubhç)�”}”(hŒ```DRM_XE_EXEC_QUEUE_SET_PROPERTY_TIMESLICE`` - set the queue timeslice duration in microseconds.”h]”hì)�”}”(hŒ```DRM_XE_EXEC_QUEUE_SET_PROPERTY_TIMESLICE`` - set the queue timeslice duration in microseconds.”h]”(jC)�”}”(hŒ,``DRM_XE_EXEC_QUEUE_SET_PROPERTY_TIMESLICE``”h]”hŒ(DRM_XE_EXEC_QUEUE_SET_PROPERTY_TIMESLICE”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj[ubhŒ4 - set the queue timeslice duration in microseconds.”…”�”}”(hj[h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MUhjWubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj-ubhç)�”}”(hX´``DRM_XE_EXEC_QUEUE_SET_PROPERTY_PXP_TYPE`` - set the type of PXP session this queue will be used with. Valid values are listed in enum drm_xe_pxp_session_type. ``DRM_XE_PXP_TYPE_NONE`` is the default behavior, so there is no need to explicitly set that. When a queue of type ``DRM_XE_PXP_TYPE_HWDRM`` is created, the PXP default HWDRM session (``DRM_XE_PXP_HWDRM_DEFAULT_SESSION``) will be started, if it isn't already running. The user is expected to query the PXP status via the query ioctl (see ``DRM_XE_DEVICE_QUERY_PXP_STATUS``) and to wait for PXP to be ready before attempting to create a queue with this property. When a queue is created before PXP is ready, the ioctl will return -EBUSY if init is still in progress or -EIO if init failed. Given that going into a power-saving state kills PXP HWDRM sessions, runtime PM will be blocked while queues of this type are alive. All PXP queues will be killed if a PXP invalidation event occurs.”h]”hì)�”}”(hX´``DRM_XE_EXEC_QUEUE_SET_PROPERTY_PXP_TYPE`` - set the type of PXP session this queue will be used with. Valid values are listed in enum drm_xe_pxp_session_type. ``DRM_XE_PXP_TYPE_NONE`` is the default behavior, so there is no need to explicitly set that. When a queue of type ``DRM_XE_PXP_TYPE_HWDRM`` is created, the PXP default HWDRM session (``DRM_XE_PXP_HWDRM_DEFAULT_SESSION``) will be started, if it isn't already running. The user is expected to query the PXP status via the query ioctl (see ``DRM_XE_DEVICE_QUERY_PXP_STATUS``) and to wait for PXP to be ready before attempting to create a queue with this property. When a queue is created before PXP is ready, the ioctl will return -EBUSY if init is still in progress or -EIO if init failed. Given that going into a power-saving state kills PXP HWDRM sessions, runtime PM will be blocked while queues of this type are alive. All PXP queues will be killed if a PXP invalidation event occurs.”h]”(jC)�”}”(hŒ+``DRM_XE_EXEC_QUEUE_SET_PROPERTY_PXP_TYPE``”h]”hŒ'DRM_XE_EXEC_QUEUE_SET_PROPERTY_PXP_TYPE”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj‚ubhŒv - set the type of PXP session this queue will be used with. Valid values are listed in enum drm_xe_pxp_session_type. ”…”�”}”(hj‚h²hh³Nh´NubjC)�”}”(hŒ``DRM_XE_PXP_TYPE_NONE``”h]”hŒDRM_XE_PXP_TYPE_NONE”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj‚ubhŒ[ is the default behavior, so there is no need to explicitly set that. When a queue of type ”…”�”}”(hj‚h²hh³Nh´NubjC)�”}”(hŒ``DRM_XE_PXP_TYPE_HWDRM``”h]”hŒDRM_XE_PXP_TYPE_HWDRM”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj‚ubhŒ, is created, the PXP default HWDRM session (”…”�”}”(hj‚h²hh³Nh´NubjC)�”}”(hŒ$``DRM_XE_PXP_HWDRM_DEFAULT_SESSION``”h]”hŒ DRM_XE_PXP_HWDRM_DEFAULT_SESSION”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj‚ubhŒx) will be started, if it isn’t already running. The user is expected to query the PXP status via the query ioctl (see ”…”�”}”(hj‚h²hh³Nh´NubjC)�”}”(hŒ"``DRM_XE_DEVICE_QUERY_PXP_STATUS``”h]”hŒDRM_XE_DEVICE_QUERY_PXP_STATUS”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj‚ubhXŸ) and to wait for PXP to be ready before attempting to create a queue with this property. When a queue is created before PXP is ready, the ioctl will return -EBUSY if init is still in progress or -EIO if init failed. Given that going into a power-saving state kills PXP HWDRM sessions, runtime PM will be blocked while queues of this type are alive. All PXP queues will be killed if a PXP invalidation event occurs.”…”�”}”(hj‚h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MWhj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj-ubhç)�”}”(hX=``DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_GROUP`` - Create a multi-queue group or add secondary queues to a multi-queue group. If the extension's 'value' field has ``DRM_XE_MULTI_GROUP_CREATE`` flag set, then a new multi-queue group is created with this queue as the primary queue (Q0). Otherwise, the queue gets added to the multi-queue group whose primary queue's exec_queue_id is specified in the lower 32 bits of the 'value' field. All the other non-relevant bits of extension's 'value' field while adding the primary or the secondary queues of the group must be set to 0.”h]”hì)�”}”(hX=``DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_GROUP`` - Create a multi-queue group or add secondary queues to a multi-queue group. If the extension's 'value' field has ``DRM_XE_MULTI_GROUP_CREATE`` flag set, then a new multi-queue group is created with this queue as the primary queue (Q0). Otherwise, the queue gets added to the multi-queue group whose primary queue's exec_queue_id is specified in the lower 32 bits of the 'value' field. All the other non-relevant bits of extension's 'value' field while adding the primary or the secondary queues of the group must be set to 0.”h]”(jC)�”}”(hŒ.``DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_GROUP``”h]”hŒ*DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_GROUP”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjñubhŒy - Create a multi-queue group or add secondary queues to a multi-queue group. If the extension’s ‘value’ field has ”…”�”}”(hjñh²hh³Nh´NubjC)�”}”(hŒ``DRM_XE_MULTI_GROUP_CREATE``”h]”hŒDRM_XE_MULTI_GROUP_CREATE”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjñubhX‹ flag set, then a new multi-queue group is created with this queue as the primary queue (Q0). Otherwise, the queue gets added to the multi-queue group whose primary queue’s exec_queue_id is specified in the lower 32 bits of the ‘value’ field. All the other non-relevant bits of extension’s ‘value’ field while adding the primary or the secondary queues of the group must be set to 0.”…”�”}”(hjñh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mehjíubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj-ubhç)�”}”(hŒÕ``DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_QUEUE_PRIORITY`` - Set the queue priority within the multi-queue group. Current valid priority values are 0–2 (default is 1), with higher values indicating higher priority.”h]”hì)�”}”(hŒÕ``DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_QUEUE_PRIORITY`` - Set the queue priority within the multi-queue group. Current valid priority values are 0–2 (default is 1), with higher values indicating higher priority.”h]”(jC)�”}”(hŒ7``DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_QUEUE_PRIORITY``”h]”hŒ3DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_QUEUE_PRIORITY”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj*ubhŒž - Set the queue priority within the multi-queue group. Current valid priority values are 0–2 (default is 1), with higher values indicating higher priority.”…”�”}”(hj*h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mmhj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj-ubhç)�”}”(hŒª``DRM_XE_EXEC_QUEUE_SET_DISABLE_STATE_CACHE_PERF_FIX`` - Set the queue to enable render color cache keying on BTP+BTI instead of just BTI (only valid for render queues). ”h]”hì)�”}”(hŒ©``DRM_XE_EXEC_QUEUE_SET_DISABLE_STATE_CACHE_PERF_FIX`` - Set the queue to enable render color cache keying on BTP+BTI instead of just BTI (only valid for render queues).”h]”(jC)�”}”(hŒ6``DRM_XE_EXEC_QUEUE_SET_DISABLE_STATE_CACHE_PERF_FIX``”h]”hŒ2DRM_XE_EXEC_QUEUE_SET_DISABLE_STATE_CACHE_PERF_FIX”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjQubhŒs - Set the queue to enable render color cache keying on BTP+BTI instead of just BTI (only valid for render queues).”…”�”}”(hjQh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MphjMubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj-ubeh}”(h]”h ]”h"]”h$]”h&]”jÀ jÁ uh1háh³jPh´MShj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJh³jPh´MShj-¸h²hubhì)�”}”(hŒÇThe example below shows how to use :c:type:`struct drm_xe_exec_queue_create ` to create a simple exec_queue (no parallel submission) of class ``DRM_XE_ENGINE_CLASS_RENDER``.”h]”(hŒ#The example below shows how to use ”…”�”}”(hj€h²hh³Nh´Nubh)�”}”(hŒD:c:type:`struct drm_xe_exec_queue_create `”h]”jC)�”}”(hjŠh]”hŒstruct drm_xe_exec_queue_create”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjˆubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒdrm_xe_exec_queue_create”uh1hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mthj€ubhŒA to create a simple exec_queue (no parallel submission) of class ”…”�”}”(hj€h²hh³Nh´NubjC)�”}”(hŒ``DRM_XE_ENGINE_CLASS_RENDER``”h]”hŒDRM_XE_ENGINE_CLASS_RENDER”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj€ubhŒ.”…”�”}”(hj€h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j§h´Mthj-¸h²hubj)�”}”(hX\struct drm_xe_engine_class_instance instance = { .engine_class = DRM_XE_ENGINE_CLASS_RENDER, }; struct drm_xe_exec_queue_create exec_queue_create = { .extensions = 0, .vm_id = vm, .width = 1, .num_placements = 1, .instances = to_user_pointer(&instance), }; ioctl(fd, DRM_IOCTL_XE_EXEC_QUEUE_CREATE, &exec_queue_create);”h]”hX\struct drm_xe_engine_class_instance instance = { .engine_class = DRM_XE_ENGINE_CLASS_RENDER, }; struct drm_xe_exec_queue_create exec_queue_create = { .extensions = 0, .vm_id = vm, .width = 1, .num_placements = 1, .instances = to_user_pointer(&instance), }; ioctl(fd, DRM_IOCTL_XE_EXEC_QUEUE_CREATE, &exec_queue_create);”…”�”}”hjÄsbah}”(h]”h ]”h"]”h$]”h&]”j­j®j¾‰j¿jÀjÁ}”uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mxhj-¸h²hubhì)�”}”(hŒáAllow users to provide a hint to kernel for cases demanding low latency profile. Please note it will have impact on power consumption. User can indicate low latency hint with flag while creating exec queue as mentioned below:”h]”hŒáAllow users to provide a hint to kernel for cases demanding low latency profile. Please note it will have impact on power consumption. User can indicate low latency hint with flag while creating exec queue as mentioned below:”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M†hj-¸h²hubj)�”}”(hX*struct drm_xe_exec_queue_create exec_queue_create = { .flags = DRM_XE_EXEC_QUEUE_LOW_LATENCY_HINT, .extensions = 0, .vm_id = vm, .width = 1, .num_placements = 1, .instances = to_user_pointer(&instance), }; ioctl(fd, DRM_IOCTL_XE_EXEC_QUEUE_CREATE, &exec_queue_create);”h]”hX*struct drm_xe_exec_queue_create exec_queue_create = { .flags = DRM_XE_EXEC_QUEUE_LOW_LATENCY_HINT, .extensions = 0, .vm_id = vm, .width = 1, .num_placements = 1, .instances = to_user_pointer(&instance), }; ioctl(fd, DRM_IOCTL_XE_EXEC_QUEUE_CREATE, &exec_queue_create);”…”�”}”hjãsbah}”(h]”h ]”h"]”h$]”h&]”j­j®j¾‰j¿jÀjÁ}”uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M‹hj-¸h²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ$drm_xe_exec_queue_destroy (C struct)”Œc.drm_xe_exec_queue_destroy”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_exec_queue_destroy”h]”jg)�”}”(hŒ struct drm_xe_exec_queue_destroy”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”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Œdrm_xe_exec_queue_destroy”h]”j–)�”}”(hj h]”hŒdrm_xe_exec_queue_destroy”…”�”}”(hj, h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj( ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj h²hh³j h´Mšubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”hì)�”}”(hŒ2Input of :c:type:`DRM_IOCTL_XE_EXEC_QUEUE_DESTROY`”h]”(hŒ Input of ”…”�”}”(hjN h²hh³Nh´Nubh)�”}”(hŒ):c:type:`DRM_IOCTL_XE_EXEC_QUEUE_DESTROY`”h]”jC)�”}”(hjX h]”hŒDRM_IOCTL_XE_EXEC_QUEUE_DESTROY”…”�”}”(hjZ h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjV ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j»)�”}”j¾]”jÊá)�”}”jÍáj sbŒc.drm_xe_exec_queue_destroy”†”asbjÀŒDRM_IOCTL_XE_EXEC_QUEUE_DESTROY”uh1hh³jÑáh´KhjN ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÄhjK h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj h²hh³j h´Mšubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjŒ jçjŒ jè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hŒØ**Definition**:: struct drm_xe_exec_queue_destroy { __u32 exec_queue_id; __u32 pad; __u64 reserved[2]; }; **Members** ``exec_queue_id`` Exec queue ID ``pad`` MBZ ``reserved`` Reserved”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj˜ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj” ubhŒ:”…”�”}”(hj” h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÈhj� ubj)�”}”(hŒdstruct drm_xe_exec_queue_destroy { __u32 exec_queue_id; __u32 pad; __u64 reserved[2]; };”h]”hŒdstruct drm_xe_exec_queue_destroy { __u32 exec_queue_id; __u32 pad; __u64 reserved[2]; };”…”�”}”hj± sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÊhj� ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj h]”hŒMembers”…”�”}”(hjÄ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÀ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÐhj� ubj§)�”}”(hhh]”(j¬)�”}”(hŒ ``exec_queue_id`` Exec queue ID ”h]”(j²)�”}”(hŒ``exec_queue_id``”h]”jC)�”}”(hjá h]”hŒ exec_queue_id”…”�”}”(hjã h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjß ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÈhjÛ ubjÃ)�”}”(hhh]”hì)�”}”(hŒ Exec queue ID”h]”hŒ Exec queue ID”…”�”}”(hjú h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ ``pad`` MBZ ”h]”(j²)�”}”(hŒ``pad``”h]”jC)�”}”(hj h]”hŒpad”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MËhj ubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hj3 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j/ h´MËhj0 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j/ h´MËhjØ ubj¬)�”}”(hŒ``reserved`` Reserved”h]”(j²)�”}”(hŒ ``reserved``”h]”jC)�”}”(hjS h]”hŒreserved”…”�”}”(hjU h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjQ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÍhjM ubjÃ)�”}”(hhh]”hì)�”}”(hŒReserved”h]”hŒReserved”…”�”}”(hjl h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÎhji ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjM ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jh h´MÍhjØ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj� ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ)drm_xe_exec_queue_get_property (C struct)”Œ c.drm_xe_exec_queue_get_property”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_exec_queue_get_property”h]”jg)�”}”(hŒ%struct drm_xe_exec_queue_get_property”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj­ h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj© h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”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Œdrm_xe_exec_queue_get_property”h]”j–)�”}”(hj§ h]”hŒdrm_xe_exec_queue_get_property”…”�”}”(hjÍ h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjÉ ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj© h²hh³jº h´MÔubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”hì)�”}”(hŒ7Input of :c:type:`DRM_IOCTL_XE_EXEC_QUEUE_GET_PROPERTY`”h]”(hŒ Input of ”…”�”}”(hjï h²hh³Nh´Nubh)�”}”(hŒ.:c:type:`DRM_IOCTL_XE_EXEC_QUEUE_GET_PROPERTY`”h]”jC)�”}”(hjù h]”hŒ$DRM_IOCTL_XE_EXEC_QUEUE_GET_PROPERTY”…”�”}”(hjû h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj÷ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j»)�”}”j¾]”jÊá)�”}”jÍáj§ sbŒ c.drm_xe_exec_queue_get_property”†”asbjÀŒ$DRM_IOCTL_XE_EXEC_QUEUE_GET_PROPERTY”uh1hh³jÑáh´Khjï ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÒhjì h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj¢ h²hh³jº h´MÔubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj- jçj- jè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hX¯**Definition**:: struct drm_xe_exec_queue_get_property { __u64 extensions; __u32 exec_queue_id; #define DRM_XE_EXEC_QUEUE_GET_PROPERTY_BAN 0; __u32 property; __u64 value; __u64 reserved[2]; }; **Members** ``extensions`` Pointer to the first extension struct, if any ``exec_queue_id`` Exec queue ID ``property`` property to get ``value`` property value ``reserved`` Reserved”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj9 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj5 ubhŒ:”…”�”}”(hj5 h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÖhj1 ubj)�”}”(hŒÈstruct drm_xe_exec_queue_get_property { __u64 extensions; __u32 exec_queue_id; #define DRM_XE_EXEC_QUEUE_GET_PROPERTY_BAN 0; __u32 property; __u64 value; __u64 reserved[2]; };”h]”hŒÈstruct drm_xe_exec_queue_get_property { __u64 extensions; __u32 exec_queue_id; #define DRM_XE_EXEC_QUEUE_GET_PROPERTY_BAN 0; __u32 property; __u64 value; __u64 reserved[2]; };”…”�”}”hjR sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MØhj1 ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjc h]”hŒMembers”…”�”}”(hje h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hja ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Máhj1 ubj§)�”}”(hhh]”(j¬)�”}”(hŒ=``extensions`` Pointer to the first extension struct, if any ”h]”(j²)�”}”(hŒ``extensions``”h]”jC)�”}”(hj‚ h]”hŒ extensions”…”�”}”(hj„ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj€ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÙhj| ubjÃ)�”}”(hhh]”hì)�”}”(hŒ-Pointer to the first extension struct, if any”h]”hŒ-Pointer to the first extension struct, if any”…”�”}”(hj› h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j— h´MÙhj˜ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj| ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j— h´MÙhjy ubj¬)�”}”(hŒ ``exec_queue_id`` Exec queue ID ”h]”(j²)�”}”(hŒ``exec_queue_id``”h]”jC)�”}”(hj» h]”hŒ exec_queue_id”…”�”}”(hj½ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj¹ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÜhjµ ubjÃ)�”}”(hhh]”hì)�”}”(hŒ Exec queue ID”h]”hŒ Exec queue ID”…”�”}”(hjÔ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÐ h´MÜhjÑ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjµ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÐ h´MÜhjy ubj¬)�”}”(hŒ``property`` property to get ”h]”(j²)�”}”(hŒ ``property``”h]”jC)�”}”(hjô h]”hŒproperty”…”�”}”(hjö h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjò ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Màhjî ubjÃ)�”}”(hhh]”hì)�”}”(hŒproperty to get”h]”hŒproperty to get”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j h´Màhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjî ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j h´Màhjy ubj¬)�”}”(hŒ``value`` property value ”h]”(j²)�”}”(hŒ ``value``”h]”jC)�”}”(hj- h]”hŒvalue”…”�”}”(hj/ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj+ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mãhj' ubjÃ)�”}”(hhh]”hì)�”}”(hŒproperty value”h]”hŒproperty value”…”�”}”(hjF h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jB h´MãhjC ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj' ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jB h´Mãhjy ubj¬)�”}”(hŒ``reserved`` Reserved”h]”(j²)�”}”(hŒ ``reserved``”h]”jC)�”}”(hjf h]”hŒreserved”…”�”}”(hjh h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjd ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Måhj` ubjÃ)�”}”(hhh]”hì)�”}”(hŒReserved”h]”hŒReserved”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mæhj| ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj` ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j{ h´Måhjy ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj1 ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hj© h]”hŒ Description”…”�”}”(hj« h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj§ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Méhj-¸h²hubj§)�”}”(hhh]”j¬)�”}”(hŒEThe **property** can be: - ``DRM_XE_EXEC_QUEUE_GET_PROPERTY_BAN`` ”h]”(j²)�”}”(hŒThe **property** can be:”h]”(hŒThe ”…”�”}”(hjÆ h²hh³Nh´NubjŒ)�”}”(hŒ **property**”h]”hŒproperty”…”�”}”(hjÎ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÆ ubhŒ can be:”…”�”}”(hjÆ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M×hj ubjÃ)�”}”(hhh]”hâ)�”}”(hhh]”hç)�”}”(hŒ*``DRM_XE_EXEC_QUEUE_GET_PROPERTY_BAN`` ”h]”hì)�”}”(hŒ&``DRM_XE_EXEC_QUEUE_GET_PROPERTY_BAN``”h]”jC)�”}”(hjó h]”hŒ"DRM_XE_EXEC_QUEUE_GET_PROPERTY_BAN”…”�”}”(hjõ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjñ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÔhjí ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjê ubah}”(h]”h ]”h"]”h$]”h&]”jÀ jÁ uh1há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¿ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj-¸h²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_xe_sync (C struct)”Œ c.drm_xe_sync”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒ drm_xe_sync”h]”jg)�”}”(hŒstruct drm_xe_sync”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj@ h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj< h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÙubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjN h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hj< h²hh³jM h´MÙubj�)�”}”(hŒ drm_xe_sync”h]”j–)�”}”(hj: h]”hŒ drm_xe_sync”…”�”}”(hj` h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj\ ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj< h²hh³jM h´MÙubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hj8 h²hh³jM h´MÙubah}”(h]”j3 ah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jM h´MÙhj5 h²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ sync object”h]”hŒ sync object”…”�”}”(hj‚ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mêhj h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj5 h²hh³jM h´MÙubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjš jçjš jè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hXr**Definition**:: struct drm_xe_sync { __u64 extensions; #define DRM_XE_SYNC_TYPE_SYNCOBJ 0x0; #define DRM_XE_SYNC_TYPE_TIMELINE_SYNCOBJ 0x1; #define DRM_XE_SYNC_TYPE_USER_FENCE 0x2; __u32 type; #define DRM_XE_SYNC_FLAG_SIGNAL (1 << 0); __u32 flags; union { __u32 handle; __u64 addr; }; __u64 timeline_value; __u64 reserved[2]; }; **Members** ``extensions`` Pointer to the first extension struct, if any ``type`` Type of this sync object ``flags`` Sync Flags ``{unnamed_union}`` anonymous ``handle`` Handle for the object ``addr`` Address of user fence. When sync is passed in via exec IOCTL this is a GPU address in the VM. When sync is passed in via VM bind IOCTL this is a user pointer. In either case, it is the user's responsibility that this address is present and mapped when the user fence is signalled. Must be qword aligned. ``timeline_value`` Input for the timeline sync object. Needs to be different than 0 when used with ``DRM_XE_SYNC_TYPE_TIMELINE_SYNCOBJ``. ``reserved`` Reserved”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj¦ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj¢ ubhŒ:”…”�”}”(hj¢ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mîhjž ubj)�”}”(hX…struct drm_xe_sync { __u64 extensions; #define DRM_XE_SYNC_TYPE_SYNCOBJ 0x0; #define DRM_XE_SYNC_TYPE_TIMELINE_SYNCOBJ 0x1; #define DRM_XE_SYNC_TYPE_USER_FENCE 0x2; __u32 type; #define DRM_XE_SYNC_FLAG_SIGNAL (1 << 0); __u32 flags; union { __u32 handle; __u64 addr; }; __u64 timeline_value; __u64 reserved[2]; };”h]”hX…struct drm_xe_sync { __u64 extensions; #define DRM_XE_SYNC_TYPE_SYNCOBJ 0x0; #define DRM_XE_SYNC_TYPE_TIMELINE_SYNCOBJ 0x1; #define DRM_XE_SYNC_TYPE_USER_FENCE 0x2; __u32 type; #define DRM_XE_SYNC_FLAG_SIGNAL (1 << 0); __u32 flags; union { __u32 handle; __u64 addr; }; __u64 timeline_value; __u64 reserved[2]; };”…”�”}”hj¿ sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mðhjž ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjÐ h]”hŒMembers”…”�”}”(hjÒ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÎ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhjž ubj§)�”}”(hhh]”(j¬)�”}”(hŒ=``extensions`` Pointer to the first extension struct, if any ”h]”(j²)�”}”(hŒ``extensions``”h]”jC)�”}”(hjï h]”hŒ extensions”…”�”}”(hjñ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjí ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhjé ubjÃ)�”}”(hhh]”hì)�”}”(hŒ-Pointer to the first extension struct, if any”h]”hŒ-Pointer to the first extension struct, if any”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jh´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjé ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jh´Mhjæ ubj¬)�”}”(hŒ"``type`` Type of this sync object ”h]”(j²)�”}”(hŒ``type``”h]”jC)�”}”(hj(h]”hŒtype”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhj"ubjÃ)�”}”(hhh]”hì)�”}”(hŒType of this sync object”h]”hŒType of this sync object”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ``flags`` Sync Flags ”h]”(j²)�”}”(hŒ ``flags``”h]”jC)�”}”(hjah]”hŒflags”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhj[ubjÃ)�”}”(hhh]”hì)�”}”(hŒ Sync Flags”h]”hŒ Sync Flags”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jvh´Mhjwubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jvh´Mhjæ ubj¬)�”}”(hŒ``{unnamed_union}`` anonymous ”h]”(j²)�”}”(hŒ``{unnamed_union}``”h]”jC)�”}”(hjšh]”hŒ{unnamed_union}”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Khj”ubjÃ)�”}”(hhh]”hì)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ!``handle`` Handle for the object ”h]”(j²)�”}”(hŒ ``handle``”h]”jC)�”}”(hjÓh]”hŒhandle”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MhjÍubjÃ)�”}”(hhh]”hì)�”}”(hŒHandle for the object”h]”hŒHandle for the object”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jèh´Mhjéubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÍubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jèh´Mhjæ ubj¬)�”}”(hX9``addr`` Address of user fence. When sync is passed in via exec IOCTL this is a GPU address in the VM. When sync is passed in via VM bind IOCTL this is a user pointer. In either case, it is the user's responsibility that this address is present and mapped when the user fence is signalled. Must be qword aligned. ”h]”(j²)�”}”(hŒ``addr``”h]”jC)�”}”(hj h]”hŒaddr”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M%hjubjÃ)�”}”(hhh]”hì)�”}”(hX/Address of user fence. When sync is passed in via exec IOCTL this is a GPU address in the VM. When sync is passed in via VM bind IOCTL this is a user pointer. In either case, it is the user's responsibility that this address is present and mapped when the user fence is signalled. Must be qword aligned.”h]”hX1Address of user fence. When sync is passed in via exec IOCTL this is a GPU address in the VM. When sync is passed in via VM bind IOCTL this is a user pointer. In either case, it is the user’s responsibility that this address is present and mapped when the user fence is signalled. Must be qword aligned.”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M hj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j!h´M%hjæ ubj¬)�”}”(hŒŠ``timeline_value`` Input for the timeline sync object. Needs to be different than 0 when used with ``DRM_XE_SYNC_TYPE_TIMELINE_SYNCOBJ``. ”h]”(j²)�”}”(hŒ``timeline_value``”h]”jC)�”}”(hjFh]”hŒtimeline_value”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjDubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M,hj@ubjÃ)�”}”(hhh]”hì)�”}”(hŒvInput for the timeline sync object. Needs to be different than 0 when used with ``DRM_XE_SYNC_TYPE_TIMELINE_SYNCOBJ``.”h]”(hŒPInput for the timeline sync object. Needs to be different than 0 when used with ”…”�”}”(hj_h²hh³Nh´NubjC)�”}”(hŒ%``DRM_XE_SYNC_TYPE_TIMELINE_SYNCOBJ``”h]”hŒ!DRM_XE_SYNC_TYPE_TIMELINE_SYNCOBJ”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj_ubhŒ.”…”�”}”(hj_h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”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Œ``reserved`` Reserved”h]”(j²)�”}”(hŒ ``reserved``”h]”jC)�”}”(hj’h]”hŒreserved”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M/hjŒubjÃ)�”}”(hhh]”hì)�”}”(hŒReserved”h]”hŒReserved”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M0hj¨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¦hjž ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjÕh]”hŒ Description”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M3hj-¸h²hubj§)�”}”(hhh]”(j¬)�”}”(hŒ~The **type** can be: - ``DRM_XE_SYNC_TYPE_SYNCOBJ`` - ``DRM_XE_SYNC_TYPE_TIMELINE_SYNCOBJ`` - ``DRM_XE_SYNC_TYPE_USER_FENCE`` ”h]”(j²)�”}”(hŒThe **type** can be:”h]”(hŒThe ”…”�”}”(hjòh²hh³Nh´NubjŒ)�”}”(hŒ**type**”h]”hŒtype”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjòubhŒ can be:”…”�”}”(hjòh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MîhjîubjÃ)�”}”(hhh]”hâ)�”}”(hhh]”(hç)�”}”(hŒ``DRM_XE_SYNC_TYPE_SYNCOBJ``”h]”hì)�”}”(hjh]”jC)�”}”(hjh]”hŒDRM_XE_SYNC_TYPE_SYNCOBJ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mìhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjubhç)�”}”(hŒ%``DRM_XE_SYNC_TYPE_TIMELINE_SYNCOBJ``”h]”hì)�”}”(hj<h]”jC)�”}”(hj<h]”hŒ!DRM_XE_SYNC_TYPE_TIMELINE_SYNCOBJ”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Míhj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjubhç)�”}”(hŒ ``DRM_XE_SYNC_TYPE_USER_FENCE`` ”h]”hì)�”}”(hŒ``DRM_XE_SYNC_TYPE_USER_FENCE``”h]”jC)�”}”(hjah]”hŒDRM_XE_SYNC_TYPE_USER_FENCE”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jh´Mîhj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjubeh}”(h]”h ]”h"]”h$]”h&]”jÀ jÁ uh1háh³j3h´Mìhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjîubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jh´Mîhjëubj¬)�”}”(hŒ8and the **flags** can be: - ``DRM_XE_SYNC_FLAG_SIGNAL`` ”h]”(j²)�”}”(hŒand the **flags** can be:”h]”(hŒand the ”…”�”}”(hj’h²hh³Nh´NubjŒ)�”}”(hŒ **flags**”h]”hŒflags”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj’ubhŒ can be:”…”�”}”(hj’h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MñhjŽubjÃ)�”}”(hhh]”hâ)�”}”(hhh]”hç)�”}”(hŒ``DRM_XE_SYNC_FLAG_SIGNAL`` ”h]”hì)�”}”(hŒ``DRM_XE_SYNC_FLAG_SIGNAL``”h]”jC)�”}”(hj¿h]”hŒDRM_XE_SYNC_FLAG_SIGNAL”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j²h´Mñhj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj¶ubah}”(h]”h ]”h"]”h$]”h&]”jÀ jÁ uh1há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¦hj-¸h²hh³Nh´Nubhì)�”}”(hŒLA minimal use of :c:type:`struct drm_xe_sync ` looks like this:”h]”(hŒA minimal use of ”…”�”}”(hjòh²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct drm_xe_sync `”h]”jC)�”}”(hjüh]”hŒstruct drm_xe_sync”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjúubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒ drm_xe_sync”uh1hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MóhjòubhŒ looks like this:”…”�”}”(hjòh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jh´Móhj-¸h²hubj)�”}”(hXstruct drm_xe_sync sync = { .flags = DRM_XE_SYNC_FLAG_SIGNAL, .type = DRM_XE_SYNC_TYPE_SYNCOBJ, }; struct drm_syncobj_create syncobj_create = { 0 }; ioctl(fd, DRM_IOCTL_SYNCOBJ_CREATE, &syncobj_create); sync.handle = syncobj_create.handle; ... use of &sync in drm_xe_exec or drm_xe_vm_bind ... struct drm_syncobj_wait wait = { .handles = &sync.handle, .timeout_nsec = INT64_MAX, .count_handles = 1, .flags = 0, .first_signaled = 0, .pad = 0, }; ioctl(fd, DRM_IOCTL_SYNCOBJ_WAIT, &wait);”h]”hXstruct drm_xe_sync sync = { .flags = DRM_XE_SYNC_FLAG_SIGNAL, .type = DRM_XE_SYNC_TYPE_SYNCOBJ, }; struct drm_syncobj_create syncobj_create = { 0 }; ioctl(fd, DRM_IOCTL_SYNCOBJ_CREATE, &syncobj_create); sync.handle = syncobj_create.handle; ... use of &sync in drm_xe_exec or drm_xe_vm_bind ... struct drm_syncobj_wait wait = { .handles = &sync.handle, .timeout_nsec = INT64_MAX, .count_handles = 1, .flags = 0, .first_signaled = 0, .pad = 0, }; ioctl(fd, DRM_IOCTL_SYNCOBJ_WAIT, &wait);”…”�”}”hj$sbah}”(h]”h ]”h"]”h$]”h&]”j­j®j¾‰j¿jÀjÁ}”uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mõhj-¸h²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_xe_exec (C struct)”Œ c.drm_xe_exec”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒ drm_xe_exec”h]”jg)�”}”(hŒstruct drm_xe_exec”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjIh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjIh²hh³jZh´Mubj�)�”}”(hŒ drm_xe_exec”h]”j–)�”}”(hjGh]”hŒ drm_xe_exec”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjiubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjIh²hh³jZh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjEh²hh³jZh´Mubah}”(h]”j@ah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jZh´MhjBh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ$Input of :c:type:`DRM_IOCTL_XE_EXEC`”h]”(hŒ Input of ”…”�”}”(hj�h²hh³Nh´Nubh)�”}”(hŒ:c:type:`DRM_IOCTL_XE_EXEC`”h]”jC)�”}”(hj™h]”hŒDRM_IOCTL_XE_EXEC”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj—ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j»)�”}”j¾]”jÊá)�”}”jÍájGsbŒ c.drm_xe_exec”†”asbjÀŒDRM_IOCTL_XE_EXEC”uh1hh³jÑáh´Khj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M4hjŒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjBh²hh³jZh´Mubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjÍjçjÍjè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hXì**Definition**:: struct drm_xe_exec { __u64 extensions; __u32 exec_queue_id; #define DRM_XE_MAX_SYNCS 1024; __u32 num_syncs; __u64 syncs; __u64 address; __u16 num_batch_buffer; __u16 pad[3]; __u64 reserved[2]; }; **Members** ``extensions`` Pointer to the first extension struct, if any ``exec_queue_id`` Exec queue ID for the batch buffer ``num_syncs`` Amount of struct drm_xe_sync in array. ``syncs`` Pointer to struct drm_xe_sync array. ``address`` address of batch buffer if num_batch_buffer == 1 or an array of batch buffer addresses ``num_batch_buffer`` number of batch buffer in this exec, must match the width of the engine ``pad`` MBZ ``reserved`` Reserved”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”•}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÕubhŒ:”…”�”}”(hjÕh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M8hjÑubj)�”}”(hŒãstruct drm_xe_exec { __u64 extensions; __u32 exec_queue_id; #define DRM_XE_MAX_SYNCS 1024; __u32 num_syncs; __u64 syncs; __u64 address; __u16 num_batch_buffer; __u16 pad[3]; __u64 reserved[2]; };”h]”hŒãstruct drm_xe_exec { __u64 extensions; __u32 exec_queue_id; #define DRM_XE_MAX_SYNCS 1024; __u32 num_syncs; __u64 syncs; __u64 address; __u16 num_batch_buffer; __u16 pad[3]; __u64 reserved[2]; };”…”�”}”hjòsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M:hjÑubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjh]”hŒMembers”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MFhjÑubj§)�”}”(hhh]”(j¬)�”}”(hŒ=``extensions`` Pointer to the first extension struct, if any ”h]”(j²)�”}”(hŒ``extensions``”h]”jC)�”}”(hj"h]”hŒ extensions”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MIhjubjÃ)�”}”(hhh]”hì)�”}”(hŒ-Pointer to the first extension struct, if any”h]”hŒ-Pointer to the first extension struct, if any”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j7h´MIhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j7h´MIhjubj¬)�”}”(hŒ5``exec_queue_id`` Exec queue ID for the batch buffer ”h]”(j²)�”}”(hŒ``exec_queue_id``”h]”jC)�”}”(hj[h]”hŒ exec_queue_id”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjYubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MLhjUubjÃ)�”}”(hhh]”hì)�”}”(hŒ"Exec queue ID for the batch buffer”h]”hŒ"Exec queue ID for the batch buffer”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jph´MLhjqubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjUubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jph´MLhjubj¬)�”}”(hŒ5``num_syncs`` Amount of struct drm_xe_sync in array. ”h]”(j²)�”}”(hŒ ``num_syncs``”h]”jC)�”}”(hj”h]”hŒ num_syncs”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MPhjŽubjÃ)�”}”(hhh]”hì)�”}”(hŒ&Amount of struct drm_xe_sync in array.”h]”hŒ&Amount of struct drm_xe_sync in array.”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j©h´MPhjªubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j©h´MPhjubj¬)�”}”(hŒ/``syncs`` Pointer to struct drm_xe_sync array. ”h]”(j²)�”}”(hŒ ``syncs``”h]”jC)�”}”(hjÍh]”hŒsyncs”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjËubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MShjÇubjÃ)�”}”(hhh]”hì)�”}”(hŒ$Pointer to struct drm_xe_sync array.”h]”hŒ$Pointer to struct drm_xe_sync array.”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jâh´MShjãubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÇubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jâh´MShjubj¬)�”}”(hŒc``address`` address of batch buffer if num_batch_buffer == 1 or an array of batch buffer addresses ”h]”(j²)�”}”(hŒ ``address``”h]”jC)�”}”(hjh]”hŒaddress”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MXhjubjÃ)�”}”(hhh]”hì)�”}”(hŒVaddress of batch buffer if num_batch_buffer == 1 or an array of batch buffer addresses”h]”hŒVaddress of batch buffer if num_batch_buffer == 1 or an array of batch buffer addresses”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MWhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jh´MXhjubj¬)�”}”(hŒ]``num_batch_buffer`` number of batch buffer in this exec, must match the width of the engine ”h]”(j²)�”}”(hŒ``num_batch_buffer``”h]”jC)�”}”(hj@h]”hŒnum_batch_buffer”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M^hj:ubjÃ)�”}”(hhh]”hì)�”}”(hŒGnumber of batch buffer in this exec, must match the width of the engine”h]”hŒGnumber of batch buffer in this exec, must match the width of the engine”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M]hjVubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jUh´M^hjubj¬)�”}”(hŒ ``pad`` MBZ ”h]”(j²)�”}”(hŒ``pad``”h]”jC)�”}”(hjzh]”hŒpad”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjxubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MbhjtubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j�h´Mbhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjtubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j�h´Mbhjubj¬)�”}”(hŒ``reserved`` Reserved”h]”(j²)�”}”(hŒ ``reserved``”h]”jC)�”}”(hj³h]”hŒreserved”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mdhj­ubjÃ)�”}”(hhh]”hì)�”}”(hŒReserved”h]”hŒReserved”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MehjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÈh´Mdhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjÑubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjöh]”hŒ Description”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjôubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhhj-¸h²hubhì)�”}”(hXThis is an example to use :c:type:`struct drm_xe_exec ` for execution of the object at BIND_ADDRESS (see example in :c:type:`struct drm_xe_vm_bind `) by an exec_queue (see example in :c:type:`struct drm_xe_exec_queue_create `). It can be synchronized by using the example provided for :c:type:`struct drm_xe_sync `.”h]”(hŒThis is an example to use ”…”�”}”(hj h²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct drm_xe_exec `”h]”jC)�”}”(hjh]”hŒstruct drm_xe_exec”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒ drm_xe_exec”uh1hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M5hj ubhŒ= for execution of the object at BIND_ADDRESS (see example in ”…”�”}”(hj h²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct drm_xe_vm_bind `”h]”jC)�”}”(hj:h]”hŒstruct drm_xe_vm_bind”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj8ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒdrm_xe_vm_bind”uh1hh³j3h´M5hj ubhŒ#) by an exec_queue (see example in ”…”�”}”(hj h²hh³Nh´Nubh)�”}”(hŒD:c:type:`struct drm_xe_exec_queue_create `”h]”jC)�”}”(hj]h]”hŒstruct drm_xe_exec_queue_create”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj[ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒdrm_xe_exec_queue_create”uh1hh³j3h´M5hj ubhŒ<). It can be synchronized by using the example provided for ”…”�”}”(hj h²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct drm_xe_sync `”h]”jC)�”}”(hj€h]”hŒstruct drm_xe_sync”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj~ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒ drm_xe_sync”uh1hh³j3h´M5hj ubhŒ.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j3h´M5hj-¸h²hubj)�”}”(hŒÄstruct drm_xe_exec exec = { .exec_queue_id = exec_queue, .syncs = &sync, .num_syncs = 1, .address = BIND_ADDRESS, .num_batch_buffer = 1, }; ioctl(fd, DRM_IOCTL_XE_EXEC, &exec);”h]”hŒÄstruct drm_xe_exec exec = { .exec_queue_id = exec_queue, .syncs = &sync, .num_syncs = 1, .address = BIND_ADDRESS, .num_batch_buffer = 1, }; ioctl(fd, DRM_IOCTL_XE_EXEC, &exec);”…”�”}”hj§sbah}”(h]”h ]”h"]”h$]”h&]”j­j®j¾‰j¿jÀjÁ}”uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M:hj-¸h²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ!drm_xe_wait_user_fence (C struct)”Œc.drm_xe_wait_user_fence”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_wait_user_fence”h]”jg)�”}”(hŒstruct drm_xe_wait_user_fence”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjÌh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MHubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjÌh²hh³jÝh´MHubj�)�”}”(hŒdrm_xe_wait_user_fence”h]”j–)�”}”(hjÊh]”hŒdrm_xe_wait_user_fence”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjìubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjÌh²hh³jÝh´MHubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjÈh²hh³jÝh´MHubah}”(h]”jÃah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jÝh´MHhjÅh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ/Input of :c:type:`DRM_IOCTL_XE_WAIT_USER_FENCE`”h]”(hŒ Input of ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ&:c:type:`DRM_IOCTL_XE_WAIT_USER_FENCE`”h]”jC)�”}”(hjh]”hŒDRM_IOCTL_XE_WAIT_USER_FENCE”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j»)�”}”j¾]”jÊá)�”}”jÍájÊsbŒc.drm_xe_wait_user_fence”†”asbjÀŒDRM_IOCTL_XE_WAIT_USER_FENCE”uh1hh³jÑáh´Khjubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mihjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÅh²hh³jÝh´MHubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjPjçjPjè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hXy**Definition**:: struct drm_xe_wait_user_fence { __u64 extensions; __u64 addr; #define DRM_XE_UFENCE_WAIT_OP_EQ 0x0; #define DRM_XE_UFENCE_WAIT_OP_NEQ 0x1; #define DRM_XE_UFENCE_WAIT_OP_GT 0x2; #define DRM_XE_UFENCE_WAIT_OP_GTE 0x3; #define DRM_XE_UFENCE_WAIT_OP_LT 0x4; #define DRM_XE_UFENCE_WAIT_OP_LTE 0x5; __u16 op; #define DRM_XE_UFENCE_WAIT_FLAG_ABSTIME (1 << 0); __u16 flags; __u32 pad; __u64 value; __u64 mask; __s64 timeout; __u32 exec_queue_id; __u32 pad2; __u64 reserved[2]; }; **Members** ``extensions`` Pointer to the first extension struct, if any ``addr`` user pointer address to wait on, must be qword aligned ``op`` wait operation (type of comparison) ``flags`` wait flags ``pad`` MBZ ``value`` compare value ``mask`` comparison mask ``timeout`` how long to wait before bailing, value in nanoseconds. Without DRM_XE_UFENCE_WAIT_FLAG_ABSTIME flag set (relative timeout) it contains timeout expressed in nanoseconds to wait (fence will expire at now() + timeout). When DRM_XE_UFENCE_WAIT_FLAG_ABSTIME flag is set (absolute timeout) wait will end at timeout (uses system CLOCK_MONOTONIC). Passing negative timeout leads to never ending wait. On relative timeout this value is updated with timeout left (for restarting the call in case of signal delivery). On absolute timeout this value stays intact (restarted call still expire at the same point of time). ``exec_queue_id`` exec_queue_id returned from xe_exec_queue_create_ioctl ``pad2`` MBZ ``reserved`` Reserved”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjXubhŒ:”…”�”}”(hjXh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MmhjTubj)�”}”(hX*struct drm_xe_wait_user_fence { __u64 extensions; __u64 addr; #define DRM_XE_UFENCE_WAIT_OP_EQ 0x0; #define DRM_XE_UFENCE_WAIT_OP_NEQ 0x1; #define DRM_XE_UFENCE_WAIT_OP_GT 0x2; #define DRM_XE_UFENCE_WAIT_OP_GTE 0x3; #define DRM_XE_UFENCE_WAIT_OP_LT 0x4; #define DRM_XE_UFENCE_WAIT_OP_LTE 0x5; __u16 op; #define DRM_XE_UFENCE_WAIT_FLAG_ABSTIME (1 << 0); __u16 flags; __u32 pad; __u64 value; __u64 mask; __s64 timeout; __u32 exec_queue_id; __u32 pad2; __u64 reserved[2]; };”h]”hX*struct drm_xe_wait_user_fence { __u64 extensions; __u64 addr; #define DRM_XE_UFENCE_WAIT_OP_EQ 0x0; #define DRM_XE_UFENCE_WAIT_OP_NEQ 0x1; #define DRM_XE_UFENCE_WAIT_OP_GT 0x2; #define DRM_XE_UFENCE_WAIT_OP_GTE 0x3; #define DRM_XE_UFENCE_WAIT_OP_LT 0x4; #define DRM_XE_UFENCE_WAIT_OP_LTE 0x5; __u16 op; #define DRM_XE_UFENCE_WAIT_FLAG_ABSTIME (1 << 0); __u16 flags; __u32 pad; __u64 value; __u64 mask; __s64 timeout; __u32 exec_queue_id; __u32 pad2; __u64 reserved[2]; };”…”�”}”hjusbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MohjTubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj†h]”hŒMembers”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M„hjTubj§)�”}”(hhh]”(j¬)�”}”(hŒ=``extensions`` Pointer to the first extension struct, if any ”h]”(j²)�”}”(hŒ``extensions``”h]”jC)�”}”(hj¥h]”hŒ extensions”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M…hjŸubjÃ)�”}”(hhh]”hì)�”}”(hŒ-Pointer to the first extension struct, if any”h]”hŒ-Pointer to the first extension struct, if any”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ@``addr`` user pointer address to wait on, must be qword aligned ”h]”(j²)�”}”(hŒ``addr``”h]”jC)�”}”(hjÞh]”hŒaddr”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M‰hjØubjÃ)�”}”(hhh]”hì)�”}”(hŒ6user pointer address to wait on, must be qword aligned”h]”hŒ6user pointer address to wait on, must be qword aligned”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ+``op`` wait operation (type of comparison) ”h]”(j²)�”}”(hŒ``op``”h]”jC)�”}”(hjh]”hŒop”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M“hjubjÃ)�”}”(hhh]”hì)�”}”(hŒ#wait operation (type of comparison)”h]”hŒ#wait operation (type of comparison)”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j,h´M“hj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j,h´M“hjœubj¬)�”}”(hŒ``flags`` wait flags ”h]”(j²)�”}”(hŒ ``flags``”h]”jC)�”}”(hjPh]”hŒflags”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjNubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M—hjJubjÃ)�”}”(hhh]”hì)�”}”(hŒ wait flags”h]”hŒ wait flags”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jeh´M—hjfubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjJubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jeh´M—hjœubj¬)�”}”(hŒ ``pad`` MBZ ”h]”(j²)�”}”(hŒ``pad``”h]”jC)�”}”(hj‰h]”hŒpad”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MšhjƒubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ``value`` compare value ”h]”(j²)�”}”(hŒ ``value``”h]”jC)�”}”(hjÂh]”hŒvalue”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M�hj¼ubjÃ)�”}”(hhh]”hì)�”}”(hŒ compare value”h]”hŒ compare value”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ``mask`` comparison mask ”h]”(j²)�”}”(hŒ``mask``”h]”jC)�”}”(hjûh]”hŒmask”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjùubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M hjõubjÃ)�”}”(hhh]”hì)�”}”(hŒcomparison mask”h]”hŒcomparison mask”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jh´M hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjõubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jh´M hjœubj¬)�”}”(hXm``timeout`` how long to wait before bailing, value in nanoseconds. Without DRM_XE_UFENCE_WAIT_FLAG_ABSTIME flag set (relative timeout) it contains timeout expressed in nanoseconds to wait (fence will expire at now() + timeout). When DRM_XE_UFENCE_WAIT_FLAG_ABSTIME flag is set (absolute timeout) wait will end at timeout (uses system CLOCK_MONOTONIC). Passing negative timeout leads to never ending wait. On relative timeout this value is updated with timeout left (for restarting the call in case of signal delivery). On absolute timeout this value stays intact (restarted call still expire at the same point of time). ”h]”(j²)�”}”(hŒ ``timeout``”h]”jC)�”}”(hj4h]”hŒtimeout”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M¯hj.ubjÃ)�”}”(hhh]”(hì)�”}”(hXˆhow long to wait before bailing, value in nanoseconds. Without DRM_XE_UFENCE_WAIT_FLAG_ABSTIME flag set (relative timeout) it contains timeout expressed in nanoseconds to wait (fence will expire at now() + timeout). When DRM_XE_UFENCE_WAIT_FLAG_ABSTIME flag is set (absolute timeout) wait will end at timeout (uses system CLOCK_MONOTONIC). Passing negative timeout leads to never ending wait.”h]”hXˆhow long to wait before bailing, value in nanoseconds. Without DRM_XE_UFENCE_WAIT_FLAG_ABSTIME flag set (relative timeout) it contains timeout expressed in nanoseconds to wait (fence will expire at now() + timeout). When DRM_XE_UFENCE_WAIT_FLAG_ABSTIME flag is set (absolute timeout) wait will end at timeout (uses system CLOCK_MONOTONIC). Passing negative timeout leads to never ending wait.”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M¤hjJubhì)�”}”(hŒÖOn relative timeout this value is updated with timeout left (for restarting the call in case of signal delivery). On absolute timeout this value stays intact (restarted call still expire at the same point of time).”h]”hŒÖOn relative timeout this value is updated with timeout left (for restarting the call in case of signal delivery). On absolute timeout this value stays intact (restarted call still expire at the same point of time).”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M¬hjJubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jIh´M¯hjœubj¬)�”}”(hŒI``exec_queue_id`` exec_queue_id returned from xe_exec_queue_create_ioctl ”h]”(j²)�”}”(hŒ``exec_queue_id``”h]”jC)�”}”(hj}h]”hŒ exec_queue_id”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M³hjwubjÃ)�”}”(hhh]”hì)�”}”(hŒ6exec_queue_id returned from xe_exec_queue_create_ioctl”h]”hŒ6exec_queue_id returned from xe_exec_queue_create_ioctl”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j’h´M³hj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjwubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j’h´M³hjœubj¬)�”}”(hŒ ``pad2`` MBZ ”h]”(j²)�”}”(hŒ``pad2``”h]”jC)�”}”(hj¶h]”hŒpad2”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M¶hj°ubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ``reserved`` Reserved”h]”(j²)�”}”(hŒ ``reserved``”h]”jC)�”}”(hjïh]”hŒreserved”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjíubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M¸hjéubjÃ)�”}”(hhh]”hì)�”}”(hŒReserved”h]”hŒReserved”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M¹hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjéubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jh´M¸hjœubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjTubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hj2h]”hŒ Description”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M¼hj-¸h²hubhì)�”}”(hŒ|Wait on user fence, XE will wake-up on every HW engine interrupt in the instances list and check if user fence is complete::”h]”hŒ{Wait on user fence, XE will wake-up on every HW engine interrupt in the instances list and check if user fence is complete:”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mjhj-¸h²hubj)�”}”(hŒ (*addr & MASK) OP (VALUE & MASK)”h]”hŒ (*addr & MASK) OP (VALUE & MASK)”…”�”}”hjWsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mmhj-¸h²hubhì)�”}”(hŒ4Returns to user on user fence completion or timeout.”h]”hŒ4Returns to user on user fence completion or timeout.”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mohj-¸h²hubj§)�”}”(hhh]”(j¬)�”}”(hŒÐThe **op** can be: - ``DRM_XE_UFENCE_WAIT_OP_EQ`` - ``DRM_XE_UFENCE_WAIT_OP_NEQ`` - ``DRM_XE_UFENCE_WAIT_OP_GT`` - ``DRM_XE_UFENCE_WAIT_OP_GTE`` - ``DRM_XE_UFENCE_WAIT_OP_LT`` - ``DRM_XE_UFENCE_WAIT_OP_LTE`` ”h]”(j²)�”}”(hŒThe **op** can be:”h]”(hŒThe ”…”�”}”(hj|h²hh³Nh´NubjŒ)�”}”(hŒ**op**”h]”hŒop”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj|ubhŒ can be:”…”�”}”(hj|h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MwhjxubjÃ)�”}”(hhh]”hâ)�”}”(hhh]”(hç)�”}”(hŒ``DRM_XE_UFENCE_WAIT_OP_EQ``”h]”hì)�”}”(hj¥h]”jC)�”}”(hj¥h]”hŒDRM_XE_UFENCE_WAIT_OP_EQ”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mrhj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj ubhç)�”}”(hŒ``DRM_XE_UFENCE_WAIT_OP_NEQ``”h]”hì)�”}”(hjÆh]”jC)�”}”(hjÆh]”hŒDRM_XE_UFENCE_WAIT_OP_NEQ”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÈubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MshjÄubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj ubhç)�”}”(hŒ``DRM_XE_UFENCE_WAIT_OP_GT``”h]”hì)�”}”(hjçh]”jC)�”}”(hjçh]”hŒDRM_XE_UFENCE_WAIT_OP_GT”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjéubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mthjåubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj ubhç)�”}”(hŒ``DRM_XE_UFENCE_WAIT_OP_GTE``”h]”hì)�”}”(hjh]”jC)�”}”(hjh]”hŒDRM_XE_UFENCE_WAIT_OP_GTE”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Muhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj ubhç)�”}”(hŒ``DRM_XE_UFENCE_WAIT_OP_LT``”h]”hì)�”}”(hj)h]”jC)�”}”(hj)h]”hŒDRM_XE_UFENCE_WAIT_OP_LT”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mvhj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj ubhç)�”}”(hŒ``DRM_XE_UFENCE_WAIT_OP_LTE`` ”h]”hì)�”}”(hŒ``DRM_XE_UFENCE_WAIT_OP_LTE``”h]”jC)�”}”(hjNh]”hŒDRM_XE_UFENCE_WAIT_OP_LTE”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjLubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jœh´MwhjHubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj ubeh}”(h]”h ]”h"]”h$]”h&]”jÀ jÁ uh1háh³j½h´Mrhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjxubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jœh´Mwhjuubj¬)�”}”(hŒ@and the **flags** can be: - ``DRM_XE_UFENCE_WAIT_FLAG_ABSTIME`` ”h]”(j²)�”}”(hŒand the **flags** can be:”h]”(hŒand the ”…”�”}”(hjh²hh³Nh´NubjŒ)�”}”(hŒ **flags**”h]”hŒflags”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjubhŒ can be:”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mzhj{ubjÃ)�”}”(hhh]”hâ)�”}”(hhh]”hç)�”}”(hŒ$``DRM_XE_UFENCE_WAIT_FLAG_ABSTIME`` ”h]”hì)�”}”(hŒ#``DRM_XE_UFENCE_WAIT_FLAG_ABSTIME``”h]”jC)�”}”(hj¬h]”hŒDRM_XE_UFENCE_WAIT_FLAG_ABSTIME”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjªubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jŸh´Mzhj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj£ubah}”(h]”h ]”h"]”h$]”h&]”jÀ jÁ uh1háh³jŸh´Mzhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jŸh´Mzhjuubj¬)�”}”(hŒ€The **mask** values can be for example: - 0xffu for u8 - 0xffffu for u16 - 0xffffffffu for u32 - 0xffffffffffffffffu for u64 ”h]”(j²)�”}”(hŒ'The **mask** values can be for example:”h]”(hŒThe ”…”�”}”(hjÝh²hh³Nh´NubjŒ)�”}”(hŒ**mask**”h]”hŒmask”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÝubhŒ values can be for example:”…”�”}”(hjÝh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MƒhjÙubjÃ)�”}”(hhh]”hâ)�”}”(hhh]”(hç)�”}”(hŒ 0xffu for u8”h]”hì)�”}”(hjh]”hŒ 0xffu for u8”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M}hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjubhç)�”}”(hŒ0xffffu for u16”h]”hì)�”}”(hjh]”hŒ0xffffu for u16”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M~hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjubhç)�”}”(hŒ0xffffffffu for u32”h]”hì)�”}”(hj6h]”hŒ0xffffffffu for u32”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjubhç)�”}”(hŒ0xffffffffffffffffu for u64 ”h]”hì)�”}”(hŒ0xffffffffffffffffu for u64”h]”hŒ0xffffffffffffffffu for u64”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M€hjLubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjubeh}”(h]”h ]”h"]”h$]”h&]”jÀ jÁ uh1háh³jh´M}hjþubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jýh´Mƒhjuubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj-¸h²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ drm_xe_observation_type (C enum)”Œc.drm_xe_observation_type”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_observation_type”h]”jg)�”}”(hŒenum drm_xe_observation_type”h]”(jm)�”}”(hjîh]”hŒenum”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj’h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”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Œdrm_xe_observation_type”h]”j–)�”}”(hj�h]”hŒdrm_xe_observation_type”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj²ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj’h²hh³j£h´M…ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”hì)�”}”(hŒObservation stream types”h]”hŒObservation stream types”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M½hjÕh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj‹h²hh³j£h´M…ubeh}”(h]”h ]”(jàŒenum”eh"]”h$]”h&]”jåjàjæjðjçjðjè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hŒœ**Constants** ``DRM_XE_OBSERVATION_TYPE_OA`` OA observation stream type ``DRM_XE_OBSERVATION_TYPE_EU_STALL`` EU stall sampling observation stream type”h]”(hì)�”}”(hŒ **Constants**”h]”jŒ)�”}”(hjúh]”hŒ Constants”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjøubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÁhjôubj§)�”}”(hhh]”(j¬)�”}”(hŒ:``DRM_XE_OBSERVATION_TYPE_OA`` OA observation stream type ”h]”(j²)�”}”(hŒ``DRM_XE_OBSERVATION_TYPE_OA``”h]”jC)�”}”(hjh]”hŒDRM_XE_OBSERVATION_TYPE_OA”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÄhjubjÃ)�”}”(hhh]”hì)�”}”(hŒOA observation stream type”h]”hŒOA observation stream type”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j.h´MÄhj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j.h´MÄhjubj¬)�”}”(hŒN``DRM_XE_OBSERVATION_TYPE_EU_STALL`` EU stall sampling observation stream type”h]”(j²)�”}”(hŒ$``DRM_XE_OBSERVATION_TYPE_EU_STALL``”h]”jC)�”}”(hjRh]”hŒ DRM_XE_OBSERVATION_TYPE_EU_STALL”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjPubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÆhjLubjÃ)�”}”(hhh]”hì)�”}”(hŒ)EU stall sampling observation stream type”h]”hŒ)EU stall sampling observation stream type”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÇhjhubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjLubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jgh´MÆhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjôubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_xe_observation_op (C enum)”Œc.drm_xe_observation_op”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_observation_op”h]”jg)�”}”(hŒenum drm_xe_observation_op”h]”(jm)�”}”(hjîh]”hŒenum”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj¨h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”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Œdrm_xe_observation_op”h]”j–)�”}”(hj¦h]”hŒdrm_xe_observation_op”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjÈubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj¨h²hh³j¹h´MÌubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”hì)�”}”(hŒObservation stream ops”h]”hŒObservation stream ops”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÇhjëh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj¡h²hh³j¹h´MÌubeh}”(h]”h ]”(jàŒenum”eh"]”h$]”h&]”jåjàjæjjçjjè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hŒã**Constants** ``DRM_XE_OBSERVATION_OP_STREAM_OPEN`` Open an observation stream ``DRM_XE_OBSERVATION_OP_ADD_CONFIG`` Add observation stream config ``DRM_XE_OBSERVATION_OP_REMOVE_CONFIG`` Remove observation stream config”h]”(hì)�”}”(hŒ **Constants**”h]”jŒ)�”}”(hjh]”hŒ Constants”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MËhj ubj§)�”}”(hhh]”(j¬)�”}”(hŒA``DRM_XE_OBSERVATION_OP_STREAM_OPEN`` Open an observation stream ”h]”(j²)�”}”(hŒ%``DRM_XE_OBSERVATION_OP_STREAM_OPEN``”h]”jC)�”}”(hj/h]”hŒ!DRM_XE_OBSERVATION_OP_STREAM_OPEN”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÎhj)ubjÃ)�”}”(hhh]”hì)�”}”(hŒOpen an observation stream”h]”hŒOpen an observation stream”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jDh´MÎhjEubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jDh´MÎhj&ubj¬)�”}”(hŒC``DRM_XE_OBSERVATION_OP_ADD_CONFIG`` Add observation stream config ”h]”(j²)�”}”(hŒ$``DRM_XE_OBSERVATION_OP_ADD_CONFIG``”h]”jC)�”}”(hjhh]”hŒ DRM_XE_OBSERVATION_OP_ADD_CONFIG”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjfubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÑhjbubjÃ)�”}”(hhh]”hì)�”}”(hŒAdd observation stream config”h]”hŒAdd observation stream config”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j}h´MÑhj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjbubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j}h´MÑhj&ubj¬)�”}”(hŒH``DRM_XE_OBSERVATION_OP_REMOVE_CONFIG`` Remove observation stream config”h]”(j²)�”}”(hŒ'``DRM_XE_OBSERVATION_OP_REMOVE_CONFIG``”h]”jC)�”}”(hj¡h]”hŒ#DRM_XE_OBSERVATION_OP_REMOVE_CONFIG”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÓhj›ubjÃ)�”}”(hhh]”hì)�”}”(hŒ Remove observation stream config”h]”hŒ Remove observation stream config”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”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¦hj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ#drm_xe_observation_param (C struct)”Œc.drm_xe_observation_param”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_observation_param”h]”jg)�”}”(hŒstruct drm_xe_observation_param”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj÷h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÙubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hj÷h²hh³jh´MÙubj�)�”}”(hŒdrm_xe_observation_param”h]”j–)�”}”(hjõh]”hŒdrm_xe_observation_param”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj÷h²hh³jh´MÙubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjóh²hh³jh´MÙubah}”(h]”jîah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jh´MÙhjðh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ+Input of :c:type:`DRM_IOCTL_XE_OBSERVATION`”h]”(hŒ Input of ”…”�”}”(hj=h²hh³Nh´Nubh)�”}”(hŒ":c:type:`DRM_IOCTL_XE_OBSERVATION`”h]”jC)�”}”(hjGh]”hŒDRM_IOCTL_XE_OBSERVATION”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjEubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j»)�”}”j¾]”jÊá)�”}”jÍájõsbŒc.drm_xe_observation_param”†”asbjÀŒDRM_IOCTL_XE_OBSERVATION”uh1hh³jÑáh´Khj=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÕhj:h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjðh²hh³jh´MÙubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj{jçj{jè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hXû**Definition**:: struct drm_xe_observation_param { __u64 extensions; __u64 observation_type; __u64 observation_op; __u64 param; }; **Members** ``extensions`` Pointer to the first extension struct, if any ``observation_type`` observation stream type, of :c:type:`enum drm_xe_observation_type ` ``observation_op`` observation stream op, of :c:type:`enum drm_xe_observation_op ` ``param`` Pointer to actual stream params”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjƒubhŒ:”…”�”}”(hjƒh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÙhjubj)�”}”(hŒ�struct drm_xe_observation_param { __u64 extensions; __u64 observation_type; __u64 observation_op; __u64 param; };”h]”hŒ�struct drm_xe_observation_param { __u64 extensions; __u64 observation_type; __u64 observation_op; __u64 param; };”…”�”}”hj sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÛhjubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj±h]”hŒMembers”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mâhjubj§)�”}”(hhh]”(j¬)�”}”(hŒ=``extensions`` Pointer to the first extension struct, if any ”h]”(j²)�”}”(hŒ``extensions``”h]”jC)�”}”(hjÐh]”hŒ extensions”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÞhjÊubjÃ)�”}”(hhh]”hì)�”}”(hŒ-Pointer to the first extension struct, if any”h]”hŒ-Pointer to the first extension struct, if any”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œr``observation_type`` observation stream type, of :c:type:`enum drm_xe_observation_type ` ”h]”(j²)�”}”(hŒ``observation_type``”h]”jC)�”}”(hj h]”hŒobservation_type”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MàhjubjÃ)�”}”(hhh]”hì)�”}”(hŒ\observation stream type, of :c:type:`enum drm_xe_observation_type `”h]”(hŒobservation stream type, of ”…”�”}”(hj"h²hh³Nh´Nubh)�”}”(hŒ@:c:type:`enum drm_xe_observation_type `”h]”jC)�”}”(hj,h]”hŒenum drm_xe_observation_type”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj*ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒdrm_xe_observation_type”uh1hh³jh´Màhj"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jh´Màhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jh´MàhjÇubj¬)�”}”(hŒj``observation_op`` observation stream op, of :c:type:`enum drm_xe_observation_op ` ”h]”(j²)�”}”(hŒ``observation_op``”h]”jC)�”}”(hjah]”hŒobservation_op”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mâhj[ubjÃ)�”}”(hhh]”hì)�”}”(hŒVobservation stream op, of :c:type:`enum drm_xe_observation_op `”h]”(hŒobservation stream op, of ”…”�”}”(hjzh²hh³Nh´Nubh)�”}”(hŒ<:c:type:`enum drm_xe_observation_op `”h]”jC)�”}”(hj„h]”hŒenum drm_xe_observation_op”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj‚ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒdrm_xe_observation_op”uh1hh³jvh´Mâhjzubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jvh´Mâhjwubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jvh´MâhjÇubj¬)�”}”(hŒ)``param`` Pointer to actual stream params”h]”(j²)�”}”(hŒ ``param``”h]”jC)�”}”(hj¹h]”hŒparam”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mãhj³ubjÃ)�”}”(hhh]”hì)�”}”(hŒPointer to actual stream params”h]”hŒPointer to actual stream params”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”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¦hjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjüh]”hŒ Description”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjúubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mçhj-¸h²hubhì)�”}”(hŒØThe observation layer enables multiplexing observation streams of multiple types. The actual params for a particular stream operation are supplied via the **param** pointer (use __copy_from_user to get these params).”h]”(hŒ›The observation layer enables multiplexing observation streams of multiple types. The actual params for a particular stream operation are supplied via the ”…”�”}”(hjh²hh³Nh´NubjŒ)�”}”(hŒ **param**”h]”hŒparam”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjubhŒ4 pointer (use __copy_from_user to get these params).”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÖhj-¸h²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ"drm_xe_observation_ioctls (C enum)”Œc.drm_xe_observation_ioctls”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_observation_ioctls”h]”jg)�”}”(hŒenum drm_xe_observation_ioctls”h]”(jm)�”}”(hjîh]”hŒenum”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjHh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÞubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjHh²hh³jYh´MÞubj�)�”}”(hŒdrm_xe_observation_ioctls”h]”j–)�”}”(hjFh]”hŒdrm_xe_observation_ioctls”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjhubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjHh²hh³jYh´MÞubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjDh²hh³jYh´MÞubah}”(h]”j?ah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jYh´MÞhjAh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒObservation stream fd ioctls”h]”hŒObservation stream fd ioctls”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mèhj‹h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjAh²hh³jYh´MÞubeh}”(h]”h ]”(jàŒenum”eh"]”h$]”h&]”jåjàjæj¦jçj¦jè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hX”**Constants** ``DRM_XE_OBSERVATION_IOCTL_ENABLE`` Enable data capture for an observation stream ``DRM_XE_OBSERVATION_IOCTL_DISABLE`` Disable data capture for an observation stream ``DRM_XE_OBSERVATION_IOCTL_CONFIG`` Change observation stream configuration ``DRM_XE_OBSERVATION_IOCTL_STATUS`` Return observation stream status ``DRM_XE_OBSERVATION_IOCTL_INFO`` Return observation stream info”h]”(hì)�”}”(hŒ **Constants**”h]”jŒ)�”}”(hj°h]”hŒ Constants”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mìhjªubj§)�”}”(hhh]”(j¬)�”}”(hŒR``DRM_XE_OBSERVATION_IOCTL_ENABLE`` Enable data capture for an observation stream ”h]”(j²)�”}”(hŒ#``DRM_XE_OBSERVATION_IOCTL_ENABLE``”h]”jC)�”}”(hjÏh]”hŒDRM_XE_OBSERVATION_IOCTL_ENABLE”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MïhjÉubjÃ)�”}”(hhh]”hì)�”}”(hŒ-Enable data capture for an observation stream”h]”hŒ-Enable data capture for an observation stream”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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ŒT``DRM_XE_OBSERVATION_IOCTL_DISABLE`` Disable data capture for an observation stream ”h]”(j²)�”}”(hŒ$``DRM_XE_OBSERVATION_IOCTL_DISABLE``”h]”jC)�”}”(hj h]”hŒ DRM_XE_OBSERVATION_IOCTL_DISABLE”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mòhj ubjÃ)�”}”(hhh]”hì)�”}”(hŒ.Disable data capture for an observation stream”h]”hŒ.Disable data capture for an observation stream”…”�”}”(hj! h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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ŒL``DRM_XE_OBSERVATION_IOCTL_CONFIG`` Change observation stream configuration ”h]”(j²)�”}”(hŒ#``DRM_XE_OBSERVATION_IOCTL_CONFIG``”h]”jC)�”}”(hjA h]”hŒDRM_XE_OBSERVATION_IOCTL_CONFIG”…”�”}”(hjC h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj? ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mõhj; ubjÃ)�”}”(hhh]”hì)�”}”(hŒ'Change observation stream configuration”h]”hŒ'Change observation stream configuration”…”�”}”(hjZ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jV h´MõhjW ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj; ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jV h´MõhjÆubj¬)�”}”(hŒE``DRM_XE_OBSERVATION_IOCTL_STATUS`` Return observation stream status ”h]”(j²)�”}”(hŒ#``DRM_XE_OBSERVATION_IOCTL_STATUS``”h]”jC)�”}”(hjz h]”hŒDRM_XE_OBSERVATION_IOCTL_STATUS”…”�”}”(hj| h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjx ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Møhjt ubjÃ)�”}”(hhh]”hì)�”}”(hŒ Return observation stream status”h]”hŒ Return observation stream status”…”�”}”(hj“ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j� h´Møhj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjt ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j� h´MøhjÆubj¬)�”}”(hŒ@``DRM_XE_OBSERVATION_IOCTL_INFO`` Return observation stream info”h]”(j²)�”}”(hŒ!``DRM_XE_OBSERVATION_IOCTL_INFO``”h]”jC)�”}”(hj³ h]”hŒDRM_XE_OBSERVATION_IOCTL_INFO”…”�”}”(hjµ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj± ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Múhj­ ubjÃ)�”}”(hhh]”hì)�”}”(hŒReturn observation stream info”h]”hŒReturn observation stream info”…”�”}”(hjÌ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”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¦hjªubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjö h]”hŒ Description”…”�”}”(hjø h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjô ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mýhj-¸h²hubhì)�”}”(hŒdInformation exchanged between userspace and kernel for observation fd ioctls is stream type specific”h]”hŒdInformation exchanged between userspace and kernel for observation fd ioctls is stream type specific”…”�”}”(hj !h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Méhj-¸h²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_xe_oa_unit_type (C enum)”Œc.drm_xe_oa_unit_type”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_oa_unit_type”h]”jg)�”}”(hŒenum drm_xe_oa_unit_type”h]”(jm)�”}”(hjîh]”hŒenum”…”�”}”(hj4!h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj0!h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mïubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjB!h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hj0!h²hh³jA!h´Mïubj�)�”}”(hŒdrm_xe_oa_unit_type”h]”j–)�”}”(hj.!h]”hŒdrm_xe_oa_unit_type”…”�”}”(hjT!h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjP!ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj0!h²hh³jA!h´Mïubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hj,!h²hh³jA!h´Mïubah}”(h]”j'!ah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jA!h´Mïhj)!h²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ OA unit types”h]”hŒ OA unit types”…”�”}”(hjv!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mÿhjs!h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj)!h²hh³jA!h´Mïubeh}”(h]”h ]”(jàŒenum”eh"]”h$]”h&]”jåjàjæjŽ!jçjŽ!jè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hX**Constants** ``DRM_XE_OA_UNIT_TYPE_OAG`` OAG OA unit. OAR/OAC are considered sub-types of OAG. For OAR/OAC, use OAG. ``DRM_XE_OA_UNIT_TYPE_OAM`` OAM OA unit ``DRM_XE_OA_UNIT_TYPE_OAM_SAG`` OAM_SAG OA unit ``DRM_XE_OA_UNIT_TYPE_MERT`` MERT OA unit”h]”(hì)�”}”(hŒ **Constants**”h]”jŒ)�”}”(hj˜!h]”hŒ Constants”…”�”}”(hjš!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj–!ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhj’!ubj§)�”}”(hhh]”(j¬)�”}”(hŒh``DRM_XE_OA_UNIT_TYPE_OAG`` OAG OA unit. OAR/OAC are considered sub-types of OAG. For OAR/OAC, use OAG. ”h]”(j²)�”}”(hŒ``DRM_XE_OA_UNIT_TYPE_OAG``”h]”jC)�”}”(hj·!h]”hŒDRM_XE_OA_UNIT_TYPE_OAG”…”�”}”(hj¹!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjµ!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhj±!ubjÃ)�”}”(hhh]”hì)�”}”(hŒKOAG OA unit. OAR/OAC are considered sub-types of OAG. For OAR/OAC, use OAG.”h]”hŒKOAG OA unit. OAR/OAC are considered sub-types of OAG. For OAR/OAC, use OAG.”…”�”}”(hjÐ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MhjÍ!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj±!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÌ!h´Mhj®!ubj¬)�”}”(hŒ(``DRM_XE_OA_UNIT_TYPE_OAM`` OAM OA unit ”h]”(j²)�”}”(hŒ``DRM_XE_OA_UNIT_TYPE_OAM``”h]”jC)�”}”(hjñ!h]”hŒDRM_XE_OA_UNIT_TYPE_OAM”…”�”}”(hjó!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjï!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M hjë!ubjÃ)�”}”(hhh]”hì)�”}”(hŒ OAM OA unit”h]”hŒ OAM OA unit”…”�”}”(hj "h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ0``DRM_XE_OA_UNIT_TYPE_OAM_SAG`` OAM_SAG OA unit ”h]”(j²)�”}”(hŒ``DRM_XE_OA_UNIT_TYPE_OAM_SAG``”h]”jC)�”}”(hj*"h]”hŒDRM_XE_OA_UNIT_TYPE_OAM_SAG”…”�”}”(hj,"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj("ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M hj$"ubjÃ)�”}”(hhh]”hì)�”}”(hŒOAM_SAG OA unit”h]”hŒOAM_SAG OA unit”…”�”}”(hjC"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ)``DRM_XE_OA_UNIT_TYPE_MERT`` MERT OA unit”h]”(j²)�”}”(hŒ``DRM_XE_OA_UNIT_TYPE_MERT``”h]”jC)�”}”(hjc"h]”hŒDRM_XE_OA_UNIT_TYPE_MERT”…”�”}”(hje"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhja"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhj]"ubjÃ)�”}”(hhh]”hì)�”}”(hŒ MERT OA unit”h]”hŒ MERT OA unit”…”�”}”(hj|"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhjy"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj]"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jx"h´Mhj®!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj’!ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_xe_oa_unit (C struct)”Œc.drm_xe_oa_unit”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_oa_unit”h]”jg)�”}”(hŒstruct drm_xe_oa_unit”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj½"h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj¹"h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjË"h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hj¹"h²hh³jÊ"h´Mubj�)�”}”(hŒdrm_xe_oa_unit”h]”j–)�”}”(hj·"h]”hŒdrm_xe_oa_unit”…”�”}”(hjÝ"h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjÙ"ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj¹"h²hh³jÊ"h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”hì)�”}”(hŒdescribe OA unit”h]”hŒdescribe OA unit”…”�”}”(hjÿ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhjü"h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj²"h²hh³jÊ"h´Mubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj#jçj#jè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hXI**Definition**:: struct drm_xe_oa_unit { __u64 extensions; __u32 oa_unit_id; __u32 oa_unit_type; __u64 capabilities; #define DRM_XE_OA_CAPS_BASE (1 << 0); #define DRM_XE_OA_CAPS_SYNCS (1 << 1); #define DRM_XE_OA_CAPS_OA_BUFFER_SIZE (1 << 2); #define DRM_XE_OA_CAPS_WAIT_NUM_REPORTS (1 << 3); #define DRM_XE_OA_CAPS_OAM (1 << 4); #define DRM_XE_OA_CAPS_OA_UNIT_GT_ID (1 << 5); __u64 oa_timestamp_freq; __u16 gt_id; __u16 reserved1[3]; __u64 reserved[3]; __u64 num_engines; struct drm_xe_engine_class_instance eci[]; }; **Members** ``extensions`` Pointer to the first extension struct, if any ``oa_unit_id`` OA unit ID ``oa_unit_type`` OA unit type of :c:type:`enum drm_xe_oa_unit_type ` ``capabilities`` OA capabilities bit-mask ``oa_timestamp_freq`` OA timestamp freq ``gt_id`` gt id for this OA unit ``reserved1`` MBZ ``reserved`` MBZ ``num_engines`` number of engines in **eci** array ``eci`` engines attached to this OA unit”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj##h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj#ubhŒ:”…”�”}”(hj#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhj#ubj)�”}”(hXEstruct drm_xe_oa_unit { __u64 extensions; __u32 oa_unit_id; __u32 oa_unit_type; __u64 capabilities; #define DRM_XE_OA_CAPS_BASE (1 << 0); #define DRM_XE_OA_CAPS_SYNCS (1 << 1); #define DRM_XE_OA_CAPS_OA_BUFFER_SIZE (1 << 2); #define DRM_XE_OA_CAPS_WAIT_NUM_REPORTS (1 << 3); #define DRM_XE_OA_CAPS_OAM (1 << 4); #define DRM_XE_OA_CAPS_OA_UNIT_GT_ID (1 << 5); __u64 oa_timestamp_freq; __u16 gt_id; __u16 reserved1[3]; __u64 reserved[3]; __u64 num_engines; struct drm_xe_engine_class_instance eci[]; };”h]”hXEstruct drm_xe_oa_unit { __u64 extensions; __u32 oa_unit_id; __u32 oa_unit_type; __u64 capabilities; #define DRM_XE_OA_CAPS_BASE (1 << 0); #define DRM_XE_OA_CAPS_SYNCS (1 << 1); #define DRM_XE_OA_CAPS_OA_BUFFER_SIZE (1 << 2); #define DRM_XE_OA_CAPS_WAIT_NUM_REPORTS (1 << 3); #define DRM_XE_OA_CAPS_OAM (1 << 4); #define DRM_XE_OA_CAPS_OA_UNIT_GT_ID (1 << 5); __u64 oa_timestamp_freq; __u16 gt_id; __u16 reserved1[3]; __u64 reserved[3]; __u64 num_engines; struct drm_xe_engine_class_instance eci[]; };”…”�”}”hj<#sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhj#ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjM#h]”hŒMembers”…”�”}”(hjO#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjK#ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M,hj#ubj§)�”}”(hhh]”(j¬)�”}”(hŒ=``extensions`` Pointer to the first extension struct, if any ”h]”(j²)�”}”(hŒ``extensions``”h]”jC)�”}”(hjl#h]”hŒ extensions”…”�”}”(hjn#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhjf#ubjÃ)�”}”(hhh]”hì)�”}”(hŒ-Pointer to the first extension struct, if any”h]”hŒ-Pointer to the first extension struct, if any”…”�”}”(hj…#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j�#h´Mhj‚#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjf#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j�#h´Mhjc#ubj¬)�”}”(hŒ``oa_unit_id`` OA unit ID ”h]”(j²)�”}”(hŒ``oa_unit_id``”h]”jC)�”}”(hj¥#h]”hŒ oa_unit_id”…”�”}”(hj§#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj£#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MhjŸ#ubjÃ)�”}”(hhh]”hì)�”}”(hŒ OA unit ID”h]”hŒ OA unit ID”…”�”}”(hj¾#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jº#h´Mhj»#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjŸ#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jº#h´Mhjc#ubj¬)�”}”(hŒZ``oa_unit_type`` OA unit type of :c:type:`enum drm_xe_oa_unit_type ` ”h]”(j²)�”}”(hŒ``oa_unit_type``”h]”jC)�”}”(hjÞ#h]”hŒ oa_unit_type”…”�”}”(hjà#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÜ#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MhjØ#ubjÃ)�”}”(hhh]”hì)�”}”(hŒHOA unit type of :c:type:`enum drm_xe_oa_unit_type `”h]”(hŒOA unit type of ”…”�”}”(hj÷#h²hh³Nh´Nubh)�”}”(hŒ8:c:type:`enum drm_xe_oa_unit_type `”h]”jC)�”}”(hj$h]”hŒenum drm_xe_oa_unit_type”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”(•j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjÿ#ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒdrm_xe_oa_unit_type”uh1hh³jó#h´Mhj÷#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jó#h´Mhjô#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjØ#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jó#h´Mhjc#ubj¬)�”}”(hŒ*``capabilities`` OA capabilities bit-mask ”h]”(j²)�”}”(hŒ``capabilities``”h]”jC)�”}”(hj6$h]”hŒ capabilities”…”�”}”(hj8$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj4$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M hj0$ubjÃ)�”}”(hhh]”hì)�”}”(hŒOA capabilities bit-mask”h]”hŒOA capabilities bit-mask”…”�”}”(hjO$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jK$h´M hjL$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj0$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jK$h´M hjc#ubj¬)�”}”(hŒ(``oa_timestamp_freq`` OA timestamp freq ”h]”(j²)�”}”(hŒ``oa_timestamp_freq``”h]”jC)�”}”(hjo$h]”hŒoa_timestamp_freq”…”�”}”(hjq$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjm$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M)hji$ubjÃ)�”}”(hhh]”hì)�”}”(hŒOA timestamp freq”h]”hŒOA timestamp freq”…”�”}”(hjˆ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j„$h´M)hj…$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhji$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j„$h´M)hjc#ubj¬)�”}”(hŒ!``gt_id`` gt id for this OA unit ”h]”(j²)�”}”(hŒ ``gt_id``”h]”jC)�”}”(hj¨$h]”hŒgt_id”…”�”}”(hjª$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj¦$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M,hj¢$ubjÃ)�”}”(hhh]”hì)�”}”(hŒgt id for this OA unit”h]”hŒgt id for this OA unit”…”�”}”(hjÁ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j½$h´M,hj¾$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj¢$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j½$h´M,hjc#ubj¬)�”}”(hŒ``reserved1`` MBZ ”h]”(j²)�”}”(hŒ ``reserved1``”h]”jC)�”}”(hjá$h]”hŒ reserved1”…”�”}”(hjã$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjß$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M/hjÛ$ubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hjú$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jö$h´M/hj÷$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÛ$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jö$h´M/hjc#ubj¬)�”}”(hŒ``reserved`` MBZ ”h]”(j²)�”}”(hŒ ``reserved``”h]”jC)�”}”(hj%h]”hŒreserved”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M2hj%ubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hj3%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j/%h´M2hj0%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j/%h´M2hjc#ubj¬)�”}”(hŒ3``num_engines`` number of engines in **eci** array ”h]”(j²)�”}”(hŒ``num_engines``”h]”jC)�”}”(hjS%h]”hŒ num_engines”…”�”}”(hjU%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjQ%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M5hjM%ubjÃ)�”}”(hhh]”hì)�”}”(hŒ"number of engines in **eci** array”h]”(hŒnumber of engines in ”…”�”}”(hjl%h²hh³Nh´NubjŒ)�”}”(hŒ**eci**”h]”hŒeci”…”�”}”(hjt%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjl%ubhŒ array”…”�”}”(hjl%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jh%h´M5hji%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjM%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jh%h´M5hjc#ubj¬)�”}”(hŒ(``eci`` engines attached to this OA unit”h]”(j²)�”}”(hŒ``eci``”h]”jC)�”}”(hjž%h]”hŒeci”…”�”}”(hj %h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjœ%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M7hj˜%ubjÃ)�”}”(hhh]”hì)�”}”(hŒ engines attached to this OA unit”h]”hŒ engines attached to this OA unit”…”�”}”(hj·%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M8hj´%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj˜%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j³%h´M7hjc#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj#ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ drm_xe_query_oa_units (C struct)”Œc.drm_xe_query_oa_units”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_query_oa_units”h]”jg)�”}”(hŒstruct drm_xe_query_oa_units”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjø%h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjô%h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”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Œdrm_xe_query_oa_units”h]”j–)�”}”(hjò%h]”hŒdrm_xe_query_oa_units”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj&ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjô%h²hh³j&h´M>ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”hì)�”}”(hŒdescribe OA units”h]”hŒdescribe OA units”…”�”}”(hj:&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M<hj7&h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjí%h²hh³j&h´M>ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjR&jçjR&jè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hXë**Definition**:: struct drm_xe_query_oa_units { __u64 extensions; __u32 num_oa_units; __u32 pad; __u64 oa_units[]; }; **Members** ``extensions`` Pointer to the first extension struct, if any ``num_oa_units`` number of OA units returned in oau[] ``pad`` MBZ ``oa_units`` :c:type:`struct drm_xe_oa_unit ` array returned for this device. Written below as a u64 array to avoid problems with nested flexible arrays with some compilers”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj^&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjZ&ubhŒ:”…”�”}”(hjZ&h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M@hjV&ubj)�”}”(hŒtstruct drm_xe_query_oa_units { __u64 extensions; __u32 num_oa_units; __u32 pad; __u64 oa_units[]; };”h]”hŒtstruct drm_xe_query_oa_units { __u64 extensions; __u32 num_oa_units; __u32 pad; __u64 oa_units[]; };”…”�”}”hjw&sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MBhjV&ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjˆ&h]”hŒMembers”…”�”}”(hjŠ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj†&ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MIhjV&ubj§)�”}”(hhh]”(j¬)�”}”(hŒ=``extensions`` Pointer to the first extension struct, if any ”h]”(j²)�”}”(hŒ``extensions``”h]”jC)�”}”(hj§&h]”hŒ extensions”…”�”}”(hj©&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj¥&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MUhj¡&ubjÃ)�”}”(hhh]”hì)�”}”(hŒ-Pointer to the first extension struct, if any”h]”hŒ-Pointer to the first extension struct, if any”…”�”}”(hjÀ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¼&h´MUhj½&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj¡&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j¼&h´MUhjž&ubj¬)�”}”(hŒ6``num_oa_units`` number of OA units returned in oau[] ”h]”(j²)�”}”(hŒ``num_oa_units``”h]”jC)�”}”(hjà&h]”hŒ num_oa_units”…”�”}”(hjâ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÞ&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MWhjÚ&ubjÃ)�”}”(hhh]”hì)�”}”(hŒ$number of OA units returned in oau[]”h]”hŒ$number of OA units returned in oau[]”…”�”}”(hjù&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jõ&h´MWhjö&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÚ&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jõ&h´MWhjž&ubj¬)�”}”(hŒ ``pad`` MBZ ”h]”(j²)�”}”(hŒ``pad``”h]”jC)�”}”(hj'h]”hŒpad”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MYhj'ubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hj2'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j.'h´MYhj/'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j.'h´MYhjž&ubj¬)�”}”(hŒ¼``oa_units`` :c:type:`struct drm_xe_oa_unit ` array returned for this device. Written below as a u64 array to avoid problems with nested flexible arrays with some compilers”h]”(j²)�”}”(hŒ ``oa_units``”h]”jC)�”}”(hjR'h]”hŒoa_units”…”�”}”(hjT'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjP'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M]hjL'ubjÃ)�”}”(hhh]”hì)�”}”(hŒ¯:c:type:`struct drm_xe_oa_unit ` array returned for this device. Written below as a u64 array to avoid problems with nested flexible arrays with some compilers”h]”(h)�”}”(hŒ0:c:type:`struct drm_xe_oa_unit `”h]”jC)�”}”(hjq'h]”hŒstruct drm_xe_oa_unit”…”�”}”(hjs'h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjo'ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒdrm_xe_oa_unit”uh1hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M\hjk'ubhŒ array returned for this device. Written below as a u64 array to avoid problems with nested flexible arrays with some compilers”…”�”}”(hjk'h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jŽ'h´M\hjh'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjL'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jg'h´M]hjž&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjV&ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hj´'h]”hŒ Description”…”�”}”(hj¶'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj²'ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mahj-¸h²hubhì)�”}”(hŒ¦If a query is made with a struct drm_xe_device_query where .query is equal to DRM_XE_DEVICE_QUERY_OA_UNITS, then the reply uses struct drm_xe_query_oa_units in .data.”h]”hŒ¦If a query is made with a struct drm_xe_device_query where .query is equal to DRM_XE_DEVICE_QUERY_OA_UNITS, then the reply uses struct drm_xe_query_oa_units in .data.”…”�”}”(hjÊ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M=hj-¸h²hubhì)�”}”(hŒ]OA unit properties for all OA units can be accessed using a code block such as the one below:”h]”hŒ]OA unit properties for all OA units can be accessed using a code block such as the one below:”…”�”}”(hjÙ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MAhj-¸h²hubj)�”}”(hXstruct drm_xe_query_oa_units *qoa; struct drm_xe_oa_unit *oau; u8 *poau; // malloc qoa and issue DRM_XE_DEVICE_QUERY_OA_UNITS. Then: poau = (u8 *)&qoa->oa_units[0]; for (int i = 0; i < qoa->num_oa_units; i++) { oau = (struct drm_xe_oa_unit *)poau; // Access 'struct drm_xe_oa_unit' fields here poau += sizeof(*oau) + oau->num_engines * sizeof(oau->eci[0]); }”h]”hXstruct drm_xe_query_oa_units *qoa; struct drm_xe_oa_unit *oau; u8 *poau; // malloc qoa and issue DRM_XE_DEVICE_QUERY_OA_UNITS. Then: poau = (u8 *)&qoa->oa_units[0]; for (int i = 0; i < qoa->num_oa_units; i++) { oau = (struct drm_xe_oa_unit *)poau; // Access 'struct drm_xe_oa_unit' fields here poau += sizeof(*oau) + oau->num_engines * sizeof(oau->eci[0]); }”…”�”}”hjè'sbah}”(h]”h ]”h"]”h$]”h&]”j­j®j¾‰j¿jÀjÁ}”uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MDhj-¸h²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_xe_oa_format_type (C enum)”Œc.drm_xe_oa_format_type”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_oa_format_type”h]”jg)�”}”(hŒenum drm_xe_oa_format_type”h]”(jm)�”}”(hjîh]”hŒenum”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj (h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MUubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hj (h²hh³j(h´MUubj�)�”}”(hŒdrm_xe_oa_format_type”h]”j–)�”}”(hj (h]”hŒdrm_xe_oa_format_type”…”�”}”(hj1(h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj-(ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj (h²hh³j(h´MUubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hj (h²hh³j(h´MUubah}”(h]”j(ah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³j(h´MUhj(h²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ5OA format types as specified in PRM/Bspec 52198/60942”h]”hŒ5OA format types as specified in PRM/Bspec 52198/60942”…”�”}”(hjS(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MchjP(h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj(h²hh³j(h´MUubeh}”(h]”h ]”(jàŒenum”eh"]”h$]”h&]”jåjàjæjk(jçjk(jè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hXF**Constants** ``DRM_XE_OA_FMT_TYPE_OAG`` OAG report format ``DRM_XE_OA_FMT_TYPE_OAR`` OAR report format ``DRM_XE_OA_FMT_TYPE_OAM`` OAM report format ``DRM_XE_OA_FMT_TYPE_OAC`` OAC report format ``DRM_XE_OA_FMT_TYPE_OAM_MPEC`` OAM SAMEDIA or OAM MPEC report format ``DRM_XE_OA_FMT_TYPE_PEC`` PEC report format”h]”(hì)�”}”(hŒ **Constants**”h]”jŒ)�”}”(hju(h]”hŒ Constants”…”�”}”(hjw(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjs(ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mghjo(ubj§)�”}”(hhh]”(j¬)�”}”(hŒ-``DRM_XE_OA_FMT_TYPE_OAG`` OAG report format ”h]”(j²)�”}”(hŒ``DRM_XE_OA_FMT_TYPE_OAG``”h]”jC)�”}”(hj”(h]”hŒDRM_XE_OA_FMT_TYPE_OAG”…”�”}”(hj–(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj’(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MjhjŽ(ubjÃ)�”}”(hhh]”hì)�”}”(hŒOAG report format”h]”hŒOAG report format”…”�”}”(hj­(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j©(h´Mjhjª(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjŽ(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j©(h´Mjhj‹(ubj¬)�”}”(hŒ-``DRM_XE_OA_FMT_TYPE_OAR`` OAR report format ”h]”(j²)�”}”(hŒ``DRM_XE_OA_FMT_TYPE_OAR``”h]”jC)�”}”(hjÍ(h]”hŒDRM_XE_OA_FMT_TYPE_OAR”…”�”}”(hjÏ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjË(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MmhjÇ(ubjÃ)�”}”(hhh]”hì)�”}”(hŒOAR report format”h]”hŒOAR report format”…”�”}”(hjæ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ-``DRM_XE_OA_FMT_TYPE_OAM`` OAM report format ”h]”(j²)�”}”(hŒ``DRM_XE_OA_FMT_TYPE_OAM``”h]”jC)�”}”(hj)h]”hŒDRM_XE_OA_FMT_TYPE_OAM”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mphj)ubjÃ)�”}”(hhh]”hì)�”}”(hŒOAM report format”h]”hŒOAM report format”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j)h´Mphj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j)h´Mphj‹(ubj¬)�”}”(hŒ-``DRM_XE_OA_FMT_TYPE_OAC`` OAC report format ”h]”(j²)�”}”(hŒ``DRM_XE_OA_FMT_TYPE_OAC``”h]”jC)�”}”(hj?)h]”hŒDRM_XE_OA_FMT_TYPE_OAC”…”�”}”(hjA)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj=)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mshj9)ubjÃ)�”}”(hhh]”hì)�”}”(hŒOAC report format”h]”hŒOAC report format”…”�”}”(hjX)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jT)h´MshjU)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj9)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jT)h´Mshj‹(ubj¬)�”}”(hŒF``DRM_XE_OA_FMT_TYPE_OAM_MPEC`` OAM SAMEDIA or OAM MPEC report format ”h]”(j²)�”}”(hŒ``DRM_XE_OA_FMT_TYPE_OAM_MPEC``”h]”jC)�”}”(hjx)h]”hŒDRM_XE_OA_FMT_TYPE_OAM_MPEC”…”�”}”(hjz)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjv)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mvhjr)ubjÃ)�”}”(hhh]”hì)�”}”(hŒ%OAM SAMEDIA or OAM MPEC report format”h]”hŒ%OAM SAMEDIA or OAM MPEC report format”…”�”}”(hj‘)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j�)h´MvhjŽ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjr)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j�)h´Mvhj‹(ubj¬)�”}”(hŒ,``DRM_XE_OA_FMT_TYPE_PEC`` PEC report format”h]”(j²)�”}”(hŒ``DRM_XE_OA_FMT_TYPE_PEC``”h]”jC)�”}”(hj±)h]”hŒDRM_XE_OA_FMT_TYPE_PEC”…”�”}”(hj³)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj¯)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mxhj«)ubjÃ)�”}”(hhh]”hì)�”}”(hŒPEC report format”h]”hŒPEC report format”…”�”}”(hjÊ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MyhjÇ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj«)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÆ)h´Mxhj‹(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjo(ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_xe_oa_property_id (C enum)”Œc.drm_xe_oa_property_id”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_oa_property_id”h]”jg)�”}”(hŒenum drm_xe_oa_property_id”h]”(jm)�”}”(hjîh]”hŒenum”…”�”}”(hj *h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj*h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”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Œdrm_xe_oa_property_id”h]”j–)�”}”(hj*h]”hŒdrm_xe_oa_property_id”…”�”}”(hj+*h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj'*ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj*h²hh³j*h´M~ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”hì)�”}”(hŒOA stream property IDs”h]”hŒOA stream property IDs”…”�”}”(hjM*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MvhjJ*h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj*h²hh³j*h´M~ubeh}”(h]”h ]”(jàŒenum”eh"]”h$]”h&]”jåjàjæje*jçje*jè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hX**Constants** ``DRM_XE_OA_PROPERTY_OA_UNIT_ID`` ID of the OA unit on which to open the OA stream, see oa_unit_id in :c:type:`struct drm_xe_oa_unit `. Defaults to 0 if not provided. ``DRM_XE_OA_PROPERTY_SAMPLE_OA`` A value of 1 requests inclusion of raw OA unit reports or stream samples in a global buffer attached to an OA unit. ``DRM_XE_OA_PROPERTY_OA_METRIC_SET`` OA metrics defining contents of OA reports, previously added via ``DRM_XE_OBSERVATION_OP_ADD_CONFIG``. ``DRM_XE_OA_PROPERTY_OA_FORMAT`` OA counter report format ``DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT`` Requests periodic OA unit sampling with sampling frequency proportional to 2^(period_exponent + 1) ``DRM_XE_OA_PROPERTY_OA_DISABLED`` A value of 1 will open the OA stream in a DISABLED state (see ``DRM_XE_OBSERVATION_IOCTL_ENABLE``). ``DRM_XE_OA_PROPERTY_EXEC_QUEUE_ID`` Open the stream for a specific exec_queue_id. OA queries can be executed on this exec queue. ``DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE`` Optional engine instance to pass along with ``DRM_XE_OA_PROPERTY_EXEC_QUEUE_ID`` or will default to 0. ``DRM_XE_OA_PROPERTY_NO_PREEMPT`` Allow preemption and timeslicing to be disabled for the stream exec queue. ``DRM_XE_OA_PROPERTY_NUM_SYNCS`` Number of syncs in the sync array specified in ``DRM_XE_OA_PROPERTY_SYNCS`` ``DRM_XE_OA_PROPERTY_SYNCS`` Pointer to :c:type:`struct drm_xe_sync ` array with array size specified via ``DRM_XE_OA_PROPERTY_NUM_SYNCS``. OA configuration will wait till input fences signal. Output fences will signal after the new OA configuration takes effect. For ``DRM_XE_SYNC_TYPE_USER_FENCE``, addr is a user pointer, similar to the VM bind case. ``DRM_XE_OA_PROPERTY_OA_BUFFER_SIZE`` Size of OA buffer to be allocated by the driver in bytes. Supported sizes are powers of 2 from 128 KiB to 128 MiB. When not specified, a 16 MiB OA buffer is allocated by default. ``DRM_XE_OA_PROPERTY_WAIT_NUM_REPORTS`` Number of reports to wait for before unblocking poll or read”h]”(hì)�”}”(hŒ **Constants**”h]”jŒ)�”}”(hjo*h]”hŒ Constants”…”�”}”(hjq*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjm*ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mzhji*ubj§)�”}”(hhh]”(j¬)�”}”(hŒ·``DRM_XE_OA_PROPERTY_OA_UNIT_ID`` ID of the OA unit on which to open the OA stream, see oa_unit_id in :c:type:`struct drm_xe_oa_unit `. Defaults to 0 if not provided. ”h]”(j²)�”}”(hŒ!``DRM_XE_OA_PROPERTY_OA_UNIT_ID``”h]”jC)�”}”(hjŽ*h]”hŒDRM_XE_OA_PROPERTY_OA_UNIT_ID”…”�”}”(hj�*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjŒ*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhjˆ*ubjÃ)�”}”(hhh]”hì)�”}”(hŒ”ID of the OA unit on which to open the OA stream, see oa_unit_id in :c:type:`struct drm_xe_oa_unit `. Defaults to 0 if not provided.”h]”(hŒDID of the OA unit on which to open the OA stream, see oa_unit_id in ”…”�”}”(hj§*h²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct drm_xe_oa_unit `”h]”jC)�”}”(hj±*h]”hŒstruct drm_xe_oa_unit”…”�”}”(hj³*h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj¯*ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒdrm_xe_oa_unit”uh1hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M}hj§*ubhŒ . Defaults to 0 if not provided.”…”�”}”(hj§*h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÎ*h´M}hj¤*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjˆ*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j£*h´Mhj…*ubj¬)�”}”(hŒ•``DRM_XE_OA_PROPERTY_SAMPLE_OA`` A value of 1 requests inclusion of raw OA unit reports or stream samples in a global buffer attached to an OA unit. ”h]”(j²)�”}”(hŒ ``DRM_XE_OA_PROPERTY_SAMPLE_OA``”h]”jC)�”}”(hjë*h]”hŒDRM_XE_OA_PROPERTY_SAMPLE_OA”…”�”}”(hjí*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjé*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M„hjå*ubjÃ)�”}”(hhh]”hì)�”}”(hŒsA value of 1 requests inclusion of raw OA unit reports or stream samples in a global buffer attached to an OA unit.”h]”hŒsA value of 1 requests inclusion of raw OA unit reports or stream samples in a global buffer attached to an OA unit.”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”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ŒŒ``DRM_XE_OA_PROPERTY_OA_METRIC_SET`` OA metrics defining contents of OA reports, previously added via ``DRM_XE_OBSERVATION_OP_ADD_CONFIG``. ”h]”(j²)�”}”(hŒ$``DRM_XE_OA_PROPERTY_OA_METRIC_SET``”h]”jC)�”}”(hj%+h]”hŒ DRM_XE_OA_PROPERTY_OA_METRIC_SET”…”�”}”(hj'+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj#+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mˆhj+ubjÃ)�”}”(hhh]”hì)�”}”(hŒfOA metrics defining contents of OA reports, previously added via ``DRM_XE_OBSERVATION_OP_ADD_CONFIG``.”h]”(hŒAOA metrics defining contents of OA reports, previously added via ”…”�”}”(hj>+h²hh³Nh´NubjC)�”}”(hŒ$``DRM_XE_OBSERVATION_OP_ADD_CONFIG``”h]”hŒ DRM_XE_OBSERVATION_OP_ADD_CONFIG”…”�”}”(hjF+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj>+ubhŒ.”…”�”}”(hj>+h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”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Œ:``DRM_XE_OA_PROPERTY_OA_FORMAT`` OA counter report format ”h]”(j²)�”}”(hŒ ``DRM_XE_OA_PROPERTY_OA_FORMAT``”h]”jC)�”}”(hjq+h]”hŒDRM_XE_OA_PROPERTY_OA_FORMAT”…”�”}”(hjs+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjo+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M‹hjk+ubjÃ)�”}”(hhh]”hì)�”}”(hŒOA counter report format”h]”hŒOA counter report format”…”�”}”(hjŠ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j†+h´M‹hj‡+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjk+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j†+h´M‹hj…*ubj¬)�”}”(hŒ�``DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT`` Requests periodic OA unit sampling with sampling frequency proportional to 2^(period_exponent + 1) ”h]”(j²)�”}”(hŒ)``DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT``”h]”jC)�”}”(hjª+h]”hŒ%DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT”…”�”}”(hj¬+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj¨+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M�hj¤+ubjÃ)�”}”(hhh]”hì)�”}”(hŒbRequests periodic OA unit sampling with sampling frequency proportional to 2^(period_exponent + 1)”h]”hŒbRequests periodic OA unit sampling with sampling frequency proportional to 2^(period_exponent + 1)”…”�”}”(hjÃ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”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Œ‡``DRM_XE_OA_PROPERTY_OA_DISABLED`` A value of 1 will open the OA stream in a DISABLED state (see ``DRM_XE_OBSERVATION_IOCTL_ENABLE``). ”h]”(j²)�”}”(hŒ"``DRM_XE_OA_PROPERTY_OA_DISABLED``”h]”jC)�”}”(hjä+h]”hŒDRM_XE_OA_PROPERTY_OA_DISABLED”…”�”}”(hjæ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjâ+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M“hjÞ+ubjÃ)�”}”(hhh]”hì)�”}”(hŒcA value of 1 will open the OA stream in a DISABLED state (see ``DRM_XE_OBSERVATION_IOCTL_ENABLE``).”h]”(hŒ>A value of 1 will open the OA stream in a DISABLED state (see ”…”�”}”(hjý+h²hh³Nh´NubjC)�”}”(hŒ#``DRM_XE_OBSERVATION_IOCTL_ENABLE``”h]”hŒDRM_XE_OBSERVATION_IOCTL_ENABLE”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjý+ubhŒ).”…”�”}”(hjý+h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”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Œ‚``DRM_XE_OA_PROPERTY_EXEC_QUEUE_ID`` Open the stream for a specific exec_queue_id. OA queries can be executed on this exec queue. ”h]”(j²)�”}”(hŒ$``DRM_XE_OA_PROPERTY_EXEC_QUEUE_ID``”h]”jC)�”}”(hj0,h]”hŒ DRM_XE_OA_PROPERTY_EXEC_QUEUE_ID”…”�”}”(hj2,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj.,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M—hj*,ubjÃ)�”}”(hhh]”hì)�”}”(hŒ\Open the stream for a specific exec_queue_id. OA queries can be executed on this exec queue.”h]”hŒ\Open the stream for a specific exec_queue_id. OA queries can be executed on this exec queue.”…”�”}”(hjI,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M–hjF,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj*,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jE,h´M—hj…*ubj¬)�”}”(hŒ‘``DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE`` Optional engine instance to pass along with ``DRM_XE_OA_PROPERTY_EXEC_QUEUE_ID`` or will default to 0. ”h]”(j²)�”}”(hŒ)``DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE``”h]”jC)�”}”(hjj,h]”hŒ%DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE”…”�”}”(hjl,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjh,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M›hjd,ubjÃ)�”}”(hhh]”hì)�”}”(hŒfOptional engine instance to pass along with ``DRM_XE_OA_PROPERTY_EXEC_QUEUE_ID`` or will default to 0.”h]”(hŒ,Optional engine instance to pass along with ”…”�”}”(hjƒ,h²hh³Nh´NubjC)�”}”(hŒ$``DRM_XE_OA_PROPERTY_EXEC_QUEUE_ID``”h]”hŒ DRM_XE_OA_PROPERTY_EXEC_QUEUE_ID”…”�”}”(hj‹,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjƒ,ubhŒ or will default to 0.”…”�”}”(hjƒ,h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mšhj€,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjd,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j,h´M›hj…*ubj¬)�”}”(hŒm``DRM_XE_OA_PROPERTY_NO_PREEMPT`` Allow preemption and timeslicing to be disabled for the stream exec queue. ”h]”(j²)�”}”(hŒ!``DRM_XE_OA_PROPERTY_NO_PREEMPT``”h]”jC)�”}”(hj¶,h]”hŒDRM_XE_OA_PROPERTY_NO_PREEMPT”…”�”}”(hj¸,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj´,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MŸhj°,ubjÃ)�”}”(hhh]”hì)�”}”(hŒJAllow preemption and timeslicing to be disabled for the stream exec queue.”h]”hŒJAllow preemption and timeslicing to be disabled for the stream exec queue.”…”�”}”(hjÏ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”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Œm``DRM_XE_OA_PROPERTY_NUM_SYNCS`` Number of syncs in the sync array specified in ``DRM_XE_OA_PROPERTY_SYNCS`` ”h]”(j²)�”}”(hŒ ``DRM_XE_OA_PROPERTY_NUM_SYNCS``”h]”jC)�”}”(hjð,h]”hŒDRM_XE_OA_PROPERTY_NUM_SYNCS”…”�”}”(hjò,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjî,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M£hjê,ubjÃ)�”}”(hhh]”hì)�”}”(hŒKNumber of syncs in the sync array specified in ``DRM_XE_OA_PROPERTY_SYNCS``”h]”(hŒ/Number of syncs in the sync array specified in ”…”�”}”(hj -h²hh³Nh´NubjC)�”}”(hŒ``DRM_XE_OA_PROPERTY_SYNCS``”h]”hŒDRM_XE_OA_PROPERTY_SYNCS”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj -ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M¢hj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjê,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j-h´M£hj…*ubj¬)�”}”(hXo``DRM_XE_OA_PROPERTY_SYNCS`` Pointer to :c:type:`struct drm_xe_sync ` array with array size specified via ``DRM_XE_OA_PROPERTY_NUM_SYNCS``. OA configuration will wait till input fences signal. Output fences will signal after the new OA configuration takes effect. For ``DRM_XE_SYNC_TYPE_USER_FENCE``, addr is a user pointer, similar to the VM bind case. ”h]”(j²)�”}”(hŒ``DRM_XE_OA_PROPERTY_SYNCS``”h]”jC)�”}”(hj8-h]”hŒDRM_XE_OA_PROPERTY_SYNCS”…”�”}”(hj:-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj6-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M«hj2-ubjÃ)�”}”(hhh]”hì)�”}”(hXQPointer to :c:type:`struct drm_xe_sync ` array with array size specified via ``DRM_XE_OA_PROPERTY_NUM_SYNCS``. OA configuration will wait till input fences signal. Output fences will signal after the new OA configuration takes effect. For ``DRM_XE_SYNC_TYPE_USER_FENCE``, addr is a user pointer, similar to the VM bind case.”h]”(hŒ Pointer to ”…”�”}”(hjQ-h²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct drm_xe_sync `”h]”jC)�”}”(hj[-h]”hŒstruct drm_xe_sync”…”�”}”(hj]-h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjY-ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒ drm_xe_sync”uh1hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M¦hjQ-ubhŒ% array with array size specified via ”…”�”}”(hjQ-h²hh³Nh´NubjC)�”}”(hŒ ``DRM_XE_OA_PROPERTY_NUM_SYNCS``”h]”hŒDRM_XE_OA_PROPERTY_NUM_SYNCS”…”�”}”(hj}-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjQ-ubhŒ‚. OA configuration will wait till input fences signal. Output fences will signal after the new OA configuration takes effect. For ”…”�”}”(hjQ-h²hh³Nh´NubjC)�”}”(hŒ``DRM_XE_SYNC_TYPE_USER_FENCE``”h]”hŒDRM_XE_SYNC_TYPE_USER_FENCE”…”�”}”(hj�-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjQ-ubhŒ6, addr is a user pointer, similar to the VM bind case.”…”�”}”(hjQ-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jx-h´M¦hjN-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj2-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jM-h´M«hj…*ubj¬)�”}”(hŒÙ``DRM_XE_OA_PROPERTY_OA_BUFFER_SIZE`` Size of OA buffer to be allocated by the driver in bytes. Supported sizes are powers of 2 from 128 KiB to 128 MiB. When not specified, a 16 MiB OA buffer is allocated by default. ”h]”(j²)�”}”(hŒ%``DRM_XE_OA_PROPERTY_OA_BUFFER_SIZE``”h]”jC)�”}”(hj¹-h]”hŒ!DRM_XE_OA_PROPERTY_OA_BUFFER_SIZE”…”�”}”(hj»-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj·-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M±hj³-ubjÃ)�”}”(hhh]”hì)�”}”(hŒ²Size of OA buffer to be allocated by the driver in bytes. Supported sizes are powers of 2 from 128 KiB to 128 MiB. When not specified, a 16 MiB OA buffer is allocated by default.”h]”hŒ²Size of OA buffer to be allocated by the driver in bytes. Supported sizes are powers of 2 from 128 KiB to 128 MiB. When not specified, a 16 MiB OA buffer is allocated by default.”…”�”}”(hjÒ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”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Œd``DRM_XE_OA_PROPERTY_WAIT_NUM_REPORTS`` Number of reports to wait for before unblocking poll or read”h]”(j²)�”}”(hŒ'``DRM_XE_OA_PROPERTY_WAIT_NUM_REPORTS``”h]”jC)�”}”(hjó-h]”hŒ#DRM_XE_OA_PROPERTY_WAIT_NUM_REPORTS”…”�”}”(hjõ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjñ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M´hjí-ubjÃ)�”}”(hhh]”hì)�”}”(hŒ` structs, with property values from :c:type:`enum drm_xe_oa_property_id ` and :c:type:`struct drm_xe_user_extension ` base.name set to ``DRM_XE_OA_EXTENSION_SET_PROPERTY``. The param field in :c:type:`struct drm_xe_observation_param ` points to the first :c:type:`struct drm_xe_ext_set_property ` struct.”h]”(hŒ*Stream params are specified as a chain of ”…”�”}”(hjK.h²hh³Nh´Nubh)�”}”(hŒB:c:type:`struct drm_xe_ext_set_property `”h]”jC)�”}”(hjU.h]”hŒstruct drm_xe_ext_set_property”…”�”}”(hjW.h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjS.ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒdrm_xe_ext_set_property”uh1hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MwhjK.ubhŒ$ structs, with property values from ”…”�”}”(hjK.h²hh³Nh´Nubh)�”}”(hŒ<:c:type:`enum drm_xe_oa_property_id `”h]”jC)�”}”(hjy.h]”hŒenum drm_xe_oa_property_id”…”�”}”(hj{.h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjw.ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒdrm_xe_oa_property_id”uh1hh³jr.h´MwhjK.ubhŒ and ”…”�”}”(hjK.h²hh³Nh´Nubh)�”}”(hŒ>:c:type:`struct drm_xe_user_extension `”h]”jC)�”}”(hjœ.h]”hŒstruct drm_xe_user_extension”…”�”}”(hjž.h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjš.ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒdrm_xe_user_extension”uh1hh³jr.h´MwhjK.ubhŒ base.name set to ”…”�”}”(hjK.h²hh³Nh´NubjC)�”}”(hŒ$``DRM_XE_OA_EXTENSION_SET_PROPERTY``”h]”hŒ DRM_XE_OA_EXTENSION_SET_PROPERTY”…”�”}”(hj½.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjK.ubhŒ. The param field in ”…”�”}”(hjK.h²hh³Nh´Nubh)�”}”(hŒD:c:type:`struct drm_xe_observation_param `”h]”jC)�”}”(hjÑ.h]”hŒstruct drm_xe_observation_param”…”�”}”(hjÓ.h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjÏ.ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒdrm_xe_observation_param”uh1hh³jr.h´MwhjK.ubhŒ points to the first ”…”�”}”(hjK.h²hh³Nh´Nubh)�”}”(hŒB:c:type:`struct drm_xe_ext_set_property `”h]”jC)�”}”(hjô.h]”hŒstruct drm_xe_ext_set_property”…”�”}”(hjö.h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjò.ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒdrm_xe_ext_set_property”uh1hh³jr.h´MwhjK.ubhŒ struct.”…”�”}”(hjK.h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jr.h´Mwhj-¸h²hubhì)�”}”(hŒãExactly the same mechanism is also used for stream reconfiguration using the ``DRM_XE_OBSERVATION_IOCTL_CONFIG`` observation stream fd ioctl, though only a subset of properties below can be specified for stream reconfiguration.”h]”(hŒMExactly the same mechanism is also used for stream reconfiguration using the ”…”�”}”(hj/h²hh³Nh´NubjC)�”}”(hŒ#``DRM_XE_OBSERVATION_IOCTL_CONFIG``”h]”hŒDRM_XE_OBSERVATION_IOCTL_CONFIG”…”�”}”(hj#/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj/ubhŒs observation stream fd ioctl, though only a subset of properties below can be specified for stream reconfiguration.”…”�”}”(hj/h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M}hj-¸h²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_xe_oa_config (C struct)”Œc.drm_xe_oa_config”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_oa_config”h]”jg)�”}”(hŒstruct drm_xe_oa_config”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjU/h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjQ/h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M„ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjc/h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjQ/h²hh³jb/h´M„ubj�)�”}”(hŒdrm_xe_oa_config”h]”j–)�”}”(hjO/h]”hŒdrm_xe_oa_config”…”�”}”(hju/h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjq/ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjQ/h²hh³jb/h´M„ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjM/h²hh³jb/h´M„ubah}”(h]”jH/ah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jb/h´M„hjJ/h²hubjÄ)�”}”(hhh]”hì)�”}”(hŒOA metric configuration”h]”hŒOA metric configuration”…”�”}”(hj—/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mãhj”/h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjJ/h²hh³jb/h´M„ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj¯/jçj¯/jè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hXä**Definition**:: struct drm_xe_oa_config { __u64 extensions; char uuid[36]; __u32 n_regs; __u64 regs_ptr; }; **Members** ``extensions`` Pointer to the first extension struct, if any ``uuid`` String formatted like "``08x-````04x-````04x-````04x-````012x``" ``n_regs`` Number of regs in **regs_ptr** ``regs_ptr`` Pointer to (register address, value) pairs for OA config registers. Expected length of buffer is: (2 * sizeof(u32) * **n_regs**).”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj»/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj·/ubhŒ:”…”�”}”(hj·/h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mçhj³/ubj)�”}”(hŒkstruct drm_xe_oa_config { __u64 extensions; char uuid[36]; __u32 n_regs; __u64 regs_ptr; };”h]”hŒkstruct drm_xe_oa_config { __u64 extensions; char uuid[36]; __u32 n_regs; __u64 regs_ptr; };”…”�”}”hjÔ/sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Méhj³/ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjå/h]”hŒMembers”…”�”}”(hjç/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjã/ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mðhj³/ubj§)�”}”(hhh]”(j¬)�”}”(hŒ=``extensions`` Pointer to the first extension struct, if any ”h]”(j²)�”}”(hŒ``extensions``”h]”jC)�”}”(hj0h]”hŒ extensions”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mëhjþ/ubjÃ)�”}”(hhh]”hì)�”}”(hŒ-Pointer to the first extension struct, if any”h]”hŒ-Pointer to the first extension struct, if any”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j0h´Mëhj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjþ/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j0h´Mëhjû/ubj¬)�”}”(hŒJ``uuid`` String formatted like "``08x-````04x-````04x-````04x-````012x``" ”h]”(j²)�”}”(hŒ``uuid``”h]”jC)�”}”(hj=0h]”hŒuuid”…”�”}”(hj?0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj;0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mîhj70ubjÃ)�”}”(hhh]”hì)�”}”(hŒ@String formatted like "``08x-````04x-````04x-````04x-````012x``"”h]”(hŒString formatted like “”…”�”}”(hjV0h²hh³Nh´NubjC)�”}”(hŒ(``08x-````04x-````04x-````04x-````012x``”h]”hŒ$08x-````04x-````04x-````04x-````012x”…”�”}”(hj^0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjV0ubhŒâ€�”…”�”}”(hjV0h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jR0h´MîhjS0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj70ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jR0h´Mîhjû/ubj¬)�”}”(hŒ*``n_regs`` Number of regs in **regs_ptr** ”h]”(j²)�”}”(hŒ ``n_regs``”h]”jC)�”}”(hjˆ0h]”hŒn_regs”…”�”}”(hjŠ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj†0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mñhj‚0ubjÃ)�”}”(hhh]”hì)�”}”(hŒNumber of regs in **regs_ptr**”h]”(hŒNumber of regs in ”…”�”}”(hj¡0h²hh³Nh´NubjŒ)�”}”(hŒ **regs_ptr**”h]”hŒregs_ptr”…”�”}”(hj©0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj¡0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j�0h´Mñhjž0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj‚0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j�0h´Mñhjû/ubj¬)�”}”(hŒŽ``regs_ptr`` Pointer to (register address, value) pairs for OA config registers. Expected length of buffer is: (2 * sizeof(u32) * **n_regs**).”h]”(j²)�”}”(hŒ ``regs_ptr``”h]”jC)�”}”(hjÏ0h]”hŒregs_ptr”…”�”}”(hjÑ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÍ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MõhjÉ0ubjÃ)�”}”(hhh]”hì)�”}”(hŒ�Pointer to (register address, value) pairs for OA config registers. Expected length of buffer is: (2 * sizeof(u32) * **n_regs**).”h]”(hŒuPointer to (register address, value) pairs for OA config registers. Expected length of buffer is: (2 * sizeof(u32) * ”…”�”}”(hjè0h²hh³Nh´NubjŒ)�”}”(hŒ **n_regs**”h]”hŒn_regs”…”�”}”(hjð0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjè0ubhŒ).”…”�”}”(hjè0h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jä0h´Mõhjå0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÉ0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jä0h´Mõhjû/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj³/ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hj#1h]”hŒ Description”…”�”}”(hj%1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj!1ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mùhj-¸h²hubhì)�”}”(hŒÀMultiple OA configs can be added using ``DRM_XE_OBSERVATION_OP_ADD_CONFIG``. A particular config can be specified when opening an OA stream using ``DRM_XE_OA_PROPERTY_OA_METRIC_SET`` property.”h]”(hŒ'Multiple OA configs can be added using ”…”�”}”(hj91h²hh³Nh´NubjC)�”}”(hŒ$``DRM_XE_OBSERVATION_OP_ADD_CONFIG``”h]”hŒ DRM_XE_OBSERVATION_OP_ADD_CONFIG”…”�”}”(hjA1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj91ubhŒG. A particular config can be specified when opening an OA stream using ”…”�”}”(hj91h²hh³Nh´NubjC)�”}”(hŒ$``DRM_XE_OA_PROPERTY_OA_METRIC_SET``”h]”hŒ DRM_XE_OA_PROPERTY_OA_METRIC_SET”…”�”}”(hjS1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj91ubhŒ property.”…”�”}”(hj91h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mähj-¸h²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ"drm_xe_oa_stream_status (C struct)”Œc.drm_xe_oa_stream_status”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_oa_stream_status”h]”jg)�”}”(hŒstruct drm_xe_oa_stream_status”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj…1h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj�1h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mëubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“1h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hj�1h²hh³j’1h´Mëubj�)�”}”(hŒdrm_xe_oa_stream_status”h]”j–)�”}”(hj1h]”hŒdrm_xe_oa_stream_status”…”�”}”(hj¥1h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj¡1ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj�1h²hh³j’1h´Mëubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hj}1h²hh³j’1h´Mëubah}”(h]”jx1ah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³j’1h´Mëhjz1h²hubjÄ)�”}”(hhh]”hì)�”}”(hŒÈOA stream status returned from ``DRM_XE_OBSERVATION_IOCTL_STATUS`` observation stream fd ioctl. Userspace can call the ioctl to query stream status in response to EIO errno from observation fd read().”h]”(hŒOA stream status returned from ”…”�”}”(hjÇ1h²hh³Nh´NubjC)�”}”(hŒ#``DRM_XE_OBSERVATION_IOCTL_STATUS``”h]”hŒDRM_XE_OBSERVATION_IOCTL_STATUS”…”�”}”(hjÏ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÇ1ubhŒ† observation stream fd ioctl. Userspace can call the ioctl to query stream status in response to EIO errno from observation fd read().”…”�”}”(hjÇ1h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MûhjÄ1h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjz1h²hh³j’1h´Mëubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjñ1jçjñ1jè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hX **Definition**:: struct drm_xe_oa_stream_status { __u64 extensions; __u64 oa_status; #define DRM_XE_OASTATUS_MMIO_TRG_Q_FULL (1 << 3); #define DRM_XE_OASTATUS_COUNTER_OVERFLOW (1 << 2); #define DRM_XE_OASTATUS_BUFFER_OVERFLOW (1 << 1); #define DRM_XE_OASTATUS_REPORT_LOST (1 << 0); __u64 reserved[3]; }; **Members** ``extensions`` Pointer to the first extension struct, if any ``oa_status`` OA stream status (see Bspec 46717/61226) ``reserved`` reserved for future use”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjý1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjù1ubhŒ:”…”�”}”(hjù1h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mÿhjõ1ubj)�”}”(hXMstruct drm_xe_oa_stream_status { __u64 extensions; __u64 oa_status; #define DRM_XE_OASTATUS_MMIO_TRG_Q_FULL (1 << 3); #define DRM_XE_OASTATUS_COUNTER_OVERFLOW (1 << 2); #define DRM_XE_OASTATUS_BUFFER_OVERFLOW (1 << 1); #define DRM_XE_OASTATUS_REPORT_LOST (1 << 0); __u64 reserved[3]; };”h]”hXMstruct drm_xe_oa_stream_status { __u64 extensions; __u64 oa_status; #define DRM_XE_OASTATUS_MMIO_TRG_Q_FULL (1 << 3); #define DRM_XE_OASTATUS_COUNTER_OVERFLOW (1 << 2); #define DRM_XE_OASTATUS_BUFFER_OVERFLOW (1 << 1); #define DRM_XE_OASTATUS_REPORT_LOST (1 << 0); __u64 reserved[3]; };”…”�”}”hj2sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhjõ1ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj'2h]”hŒMembers”…”�”}”(hj)2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj%2ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M hjõ1ubj§)�”}”(hhh]”(j¬)�”}”(hŒ=``extensions`` Pointer to the first extension struct, if any ”h]”(j²)�”}”(hŒ``extensions``”h]”jC)�”}”(hjF2h]”hŒ extensions”…”�”}”(hjH2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjD2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhj@2ubjÃ)�”}”(hhh]”hì)�”}”(hŒ-Pointer to the first extension struct, if any”h]”hŒ-Pointer to the first extension struct, if any”…”�”}”(hj_2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j[2h´Mhj\2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj@2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j[2h´Mhj=2ubj¬)�”}”(hŒ7``oa_status`` OA stream status (see Bspec 46717/61226) ”h]”(j²)�”}”(hŒ ``oa_status``”h]”jC)�”}”(hj2h]”hŒ oa_status”…”�”}”(hj�2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj}2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhjy2ubjÃ)�”}”(hhh]”hì)�”}”(hŒ(OA stream status (see Bspec 46717/61226)”h]”hŒ(OA stream status (see Bspec 46717/61226)”…”�”}”(hj˜2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j”2h´Mhj•2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjy2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j”2h´Mhj=2ubj¬)�”}”(hŒ$``reserved`` reserved for future use”h]”(j²)�”}”(hŒ ``reserved``”h]”jC)�”}”(hj¸2h]”hŒreserved”…”�”}”(hjº2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj¶2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M hj²2ubjÃ)�”}”(hhh]”hì)�”}”(hŒreserved for future use”h]”hŒreserved for future use”…”�”}”(hjÑ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M hjÎ2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj²2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÍ2h´M hj=2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjõ1ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ drm_xe_oa_stream_info (C struct)”Œc.drm_xe_oa_stream_info”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_oa_stream_info”h]”jg)�”}”(hŒstruct drm_xe_oa_stream_info”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj3h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj 3h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hj3h²hh³j3h´Mubj�)�”}”(hŒdrm_xe_oa_stream_info”h]”j–)�”}”(hj 3h]”hŒdrm_xe_oa_stream_info”…”�”}”(hj23h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj.3ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj3h²hh³j3h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hj 3h²hh³j3h´Mubah}”(h]”j3ah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³j3h´Mhj3h²hubjÄ)�”}”(hhh]”hì)�”}”(hŒZOA stream info returned from ``DRM_XE_OBSERVATION_IOCTL_INFO`` observation stream fd ioctl”h]”(hŒOA stream info returned from ”…”�”}”(hjT3h²hh³Nh´NubjC)�”}”(hŒ!``DRM_XE_OBSERVATION_IOCTL_INFO``”h]”hŒDRM_XE_OBSERVATION_IOCTL_INFO”…”�”}”(hj\3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjT3ubhŒ observation stream fd ioctl”…”�”}”(hjT3h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MhjQ3h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj3h²hh³j3h´Mubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj~3jçj~3jè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hX**Definition**:: struct drm_xe_oa_stream_info { __u64 extensions; __u64 oa_buf_size; __u64 reserved[3]; }; **Members** ``extensions`` Pointer to the first extension struct, if any ``oa_buf_size`` OA buffer size ``reserved`` reserved for future use”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjŠ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj†3ubhŒ:”…”�”}”(hj†3h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhj‚3ubj)�”}”(hŒestruct drm_xe_oa_stream_info { __u64 extensions; __u64 oa_buf_size; __u64 reserved[3]; };”h]”hŒestruct drm_xe_oa_stream_info { __u64 extensions; __u64 oa_buf_size; __u64 reserved[3]; };”…”�”}”hj£3sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhj‚3ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj´3h]”hŒMembers”…”�”}”(hj¶3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj²3ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhj‚3ubj§)�”}”(hhh]”(j¬)�”}”(hŒ=``extensions`` Pointer to the first extension struct, if any ”h]”(j²)�”}”(hŒ``extensions``”h]”jC)�”}”(hjÓ3h]”hŒ extensions”…”�”}”(hjÕ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÑ3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MhjÍ3ubjÃ)�”}”(hhh]”hì)�”}”(hŒ-Pointer to the first extension struct, if any”h]”hŒ-Pointer to the first extension struct, if any”…”�”}”(hjì3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jè3h´Mhjé3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÍ3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jè3h´MhjÊ3ubj¬)�”}”(hŒ``oa_buf_size`` OA buffer size ”h]”(j²)�”}”(hŒ``oa_buf_size``”h]”jC)�”}”(hj 4h]”hŒ oa_buf_size”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj 4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhj4ubjÃ)�”}”(hhh]”hì)�”}”(hŒOA buffer size”h]”hŒOA buffer size”…”�”}”(hj%4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j!4h´Mhj"4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j!4h´MhjÊ3ubj¬)�”}”(hŒ$``reserved`` reserved for future use”h]”(j²)�”}”(hŒ ``reserved``”h]”jC)�”}”(hjE4h]”hŒreserved”…”�”}”(hjG4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjC4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhj?4ubjÃ)�”}”(hhh]”hì)�”}”(hŒreserved for future use”h]”hŒreserved for future use”…”�”}”(hj^4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mhj[4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj?4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jZ4h´MhjÊ3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj‚3ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ drm_xe_pxp_session_type (C enum)”Œc.drm_xe_pxp_session_type”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_pxp_session_type”h]”jg)�”}”(hŒenum drm_xe_pxp_session_type”h]”(jm)�”}”(hjîh]”hŒenum”…”�”}”(hjŸ4h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj›4h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M!ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­4h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hj›4h²hh³j¬4h´M!ubj�)�”}”(hŒdrm_xe_pxp_session_type”h]”j–)�”}”(hj™4h]”hŒdrm_xe_pxp_session_type”…”�”}”(hj¿4h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj»4ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj›4h²hh³j¬4h´M!ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hj—4h²hh³j¬4h´M!ubah}”(h]”j’4ah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³j¬4h´M!hj”4h²hubjÄ)�”}”(hhh]”hì)�”}”(hŒSupported PXP session types.”h]”hŒSupported PXP session types.”…”�”}”(hjá4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MhjÞ4h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj”4h²hh³j¬4h´M!ubeh}”(h]”h ]”(jàŒenum”eh"]”h$]”h&]”jåjàjæjù4jçjù4jè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hŒ–**Constants** ``DRM_XE_PXP_TYPE_NONE`` PXP not used ``DRM_XE_PXP_TYPE_HWDRM`` HWDRM sessions are used for content that ends up on the display.”h]”(hì)�”}”(hŒ **Constants**”h]”jŒ)�”}”(hj5h]”hŒ Constants”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M#hjý4ubj§)�”}”(hhh]”(j¬)�”}”(hŒ&``DRM_XE_PXP_TYPE_NONE`` PXP not used ”h]”(j²)�”}”(hŒ``DRM_XE_PXP_TYPE_NONE``”h]”jC)�”}”(hj"5h]”hŒDRM_XE_PXP_TYPE_NONE”…”�”}”(hj$5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj 5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M&hj5ubjÃ)�”}”(hhh]”hì)�”}”(hŒ PXP not used”h]”hŒ PXP not used”…”�”}”(hj;5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j75h´M&hj85ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j75h´M&hj5ubj¬)�”}”(hŒZ``DRM_XE_PXP_TYPE_HWDRM`` HWDRM sessions are used for content that ends up on the display.”h]”(j²)�”}”(hŒ``DRM_XE_PXP_TYPE_HWDRM``”h]”jC)�”}”(hj[5h]”hŒDRM_XE_PXP_TYPE_HWDRM”…”�”}”(hj]5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjY5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M)hjU5ubjÃ)�”}”(hhh]”hì)�”}”(hŒ@HWDRM sessions are used for content that ends up on the display.”h]”hŒ@HWDRM sessions are used for content that ends up on the display.”…”�”}”(hjt5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jp5h´M)hjq5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjU5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jp5h´M)hj5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjý4ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hj�5h]”hŒ Description”…”�”}”(hjŸ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj›5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M,hj-¸h²hubhì)�”}”(hŒºWe currently only support HWDRM sessions, which are used for protected content that ends up being displayed, but the HW supports multiple types, so we might extend support in the future.”h]”hŒºWe currently only support HWDRM sessions, which are used for protected content that ends up being displayed, but the HW supports multiple types, so we might extend support in the future.”…”�”}”(hj³5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”u•dh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M hj-¸h²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ$drm_xe_eu_stall_property_id (C enum)”Œc.drm_xe_eu_stall_property_id”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_eu_stall_property_id”h]”jg)�”}”(hŒ enum drm_xe_eu_stall_property_id”h]”(jm)�”}”(hjîh]”hŒenum”…”�”}”(hjÛ5h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj×5h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M'ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjé5h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hj×5h²hh³jè5h´M'ubj�)�”}”(hŒdrm_xe_eu_stall_property_id”h]”j–)�”}”(hjÕ5h]”hŒdrm_xe_eu_stall_property_id”…”�”}”(hjû5h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj÷5ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj×5h²hh³jè5h´M'ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjÓ5h²hh³jè5h´M'ubah}”(h]”jÎ5ah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jè5h´M'hjÐ5h²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ%EU stall sampling input property ids.”h]”hŒ%EU stall sampling input property ids.”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M3hj6h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÐ5h²hh³jè5h´M'ubeh}”(h]”h ]”(jàŒenum”eh"]”h$]”h&]”jåjàjæj56jçj56jè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hX¬**Constants** ``DRM_XE_EU_STALL_PROP_GT_ID`` gt_id of the GT on which EU stall data will be captured. ``DRM_XE_EU_STALL_PROP_SAMPLE_RATE`` Sampling rate in GPU cycles from sampling_rates in :c:type:`struct drm_xe_query_eu_stall ` ``DRM_XE_EU_STALL_PROP_WAIT_NUM_REPORTS`` Minimum number of EU stall data reports to be present in the kernel buffer before unblocking a blocked poll or read.”h]”(hì)�”}”(hŒ **Constants**”h]”jŒ)�”}”(hj?6h]”hŒ Constants”…”�”}”(hjA6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj=6ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M7hj96ubj§)�”}”(hhh]”(j¬)�”}”(hŒX``DRM_XE_EU_STALL_PROP_GT_ID`` gt_id of the GT on which EU stall data will be captured. ”h]”(j²)�”}”(hŒ``DRM_XE_EU_STALL_PROP_GT_ID``”h]”jC)�”}”(hj^6h]”hŒDRM_XE_EU_STALL_PROP_GT_ID”…”�”}”(hj`6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj\6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M;hjX6ubjÃ)�”}”(hhh]”hì)�”}”(hŒ8gt_id of the GT on which EU stall data will be captured.”h]”hŒ8gt_id of the GT on which EU stall data will be captured.”…”�”}”(hjw6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M:hjt6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjX6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³js6h´M;hjU6ubj¬)�”}”(hŒ—``DRM_XE_EU_STALL_PROP_SAMPLE_RATE`` Sampling rate in GPU cycles from sampling_rates in :c:type:`struct drm_xe_query_eu_stall ` ”h]”(j²)�”}”(hŒ$``DRM_XE_EU_STALL_PROP_SAMPLE_RATE``”h]”jC)�”}”(hj˜6h]”hŒ DRM_XE_EU_STALL_PROP_SAMPLE_RATE”…”�”}”(hjš6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj–6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M?hj’6ubjÃ)�”}”(hhh]”hì)�”}”(hŒqSampling rate in GPU cycles from sampling_rates in :c:type:`struct drm_xe_query_eu_stall `”h]”(hŒ3Sampling rate in GPU cycles from sampling_rates in ”…”�”}”(hj±6h²hh³Nh´Nubh)�”}”(hŒ>:c:type:`struct drm_xe_query_eu_stall `”h]”jC)�”}”(hj»6h]”hŒstruct drm_xe_query_eu_stall”…”�”}”(hj½6h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj¹6ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒdrm_xe_query_eu_stall”uh1hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M>hj±6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jØ6h´M>hj®6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj’6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j­6h´M?hjU6ubj¬)�”}”(hŒž``DRM_XE_EU_STALL_PROP_WAIT_NUM_REPORTS`` Minimum number of EU stall data reports to be present in the kernel buffer before unblocking a blocked poll or read.”h]”(j²)�”}”(hŒ)``DRM_XE_EU_STALL_PROP_WAIT_NUM_REPORTS``”h]”jC)�”}”(hjñ6h]”hŒ%DRM_XE_EU_STALL_PROP_WAIT_NUM_REPORTS”…”�”}”(hjó6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjï6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MChjë6ubjÃ)�”}”(hhh]”hì)�”}”(hŒtMinimum number of EU stall data reports to be present in the kernel buffer before unblocking a blocked poll or read.”h]”hŒtMinimum number of EU stall data reports to be present in the kernel buffer before unblocking a blocked poll or read.”…”�”}”(hj 7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MBhj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjë6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j7h´MChjU6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj96ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hj47h]”hŒ Description”…”�”}”(hj67h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj27ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MFhj-¸h²hubhì)�”}”(hXThese properties are passed to the driver at open as a chain of :c:type:`struct drm_xe_ext_set_property ` structures with property set to these properties' enums and value set to the corresponding values of these properties. :c:type:`struct drm_xe_user_extension ` base.name should be set to ``DRM_XE_EU_STALL_EXTENSION_SET_PROPERTY``.”h]”(hŒ@These properties are passed to the driver at open as a chain of ”…”�”}”(hjJ7h²hh³Nh´Nubh)�”}”(hŒB:c:type:`struct drm_xe_ext_set_property `”h]”jC)�”}”(hjT7h]”hŒstruct drm_xe_ext_set_property”…”�”}”(hjV7h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjR7ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒdrm_xe_ext_set_property”uh1hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M4hjJ7ubhŒz structures with property set to these properties’ enums and value set to the corresponding values of these properties. ”…”�”}”(hjJ7h²hh³Nh´Nubh)�”}”(hŒ>:c:type:`struct drm_xe_user_extension `”h]”jC)�”}”(hjx7h]”hŒstruct drm_xe_user_extension”…”�”}”(hjz7h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjv7ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒdrm_xe_user_extension”uh1hh³jq7h´M4hjJ7ubhŒ base.name should be set to ”…”�”}”(hjJ7h²hh³Nh´NubjC)�”}”(hŒ*``DRM_XE_EU_STALL_EXTENSION_SET_PROPERTY``”h]”hŒ&DRM_XE_EU_STALL_EXTENSION_SET_PROPERTY”…”�”}”(hj™7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjJ7ubhŒ.”…”�”}”(hjJ7h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jq7h´M4hj-¸h²hubhì)�”}”(hŒÞWith the file descriptor obtained from open, user space must enable the EU stall stream fd with ``DRM_XE_OBSERVATION_IOCTL_ENABLE`` before calling read(). EIO errno from read() indicates HW dropped data due to full buffer.”h]”(hŒ`With the file descriptor obtained from open, user space must enable the EU stall stream fd with ”…”�”}”(hj±7h²hh³Nh´NubjC)�”}”(hŒ#``DRM_XE_OBSERVATION_IOCTL_ENABLE``”h]”hŒDRM_XE_OBSERVATION_IOCTL_ENABLE”…”�”}”(hj¹7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj±7ubhŒ[ before calling read(). EIO errno from read() indicates HW dropped data due to full buffer.”…”�”}”(hj±7h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M:hj-¸h²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ drm_xe_query_eu_stall (C struct)”Œc.drm_xe_query_eu_stall”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_query_eu_stall”h]”jg)�”}”(hŒstruct drm_xe_query_eu_stall”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjë7h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjç7h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MBubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjù7h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjç7h²hh³jø7h´MBubj�)�”}”(hŒdrm_xe_query_eu_stall”h]”j–)�”}”(hjå7h]”hŒdrm_xe_query_eu_stall”…”�”}”(hj 8h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj8ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjç7h²hh³jø7h´MBubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjã7h²hh³jø7h´MBubah}”(h]”jÞ7ah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jø7h´MBhjà7h²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ$Information about EU stall sampling.”h]”hŒ$Information about EU stall sampling.”…”�”}”(hj-8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MWhj*8h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjà7h²hh³jø7h´MBubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjE8jçjE8jè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hX#**Definition**:: struct drm_xe_query_eu_stall { __u64 extensions; __u64 capabilities; #define DRM_XE_EU_STALL_CAPS_BASE (1 << 0); __u64 record_size; __u64 per_xecore_buf_size; __u64 reserved[5]; __u64 num_sampling_rates; __u64 sampling_rates[]; }; **Members** ``extensions`` Pointer to the first extension struct, if any ``capabilities`` EU stall capabilities bit-mask ``record_size`` size of each EU stall data record ``per_xecore_buf_size`` internal per XeCore buffer size ``reserved`` Reserved ``num_sampling_rates`` Number of sampling rates in **sampling_rates** array ``sampling_rates`` Flexible array of sampling rates sorted in the fastest to slowest order. Sampling rates are specified in GPU clock cycles.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjQ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjM8ubhŒ:”…”�”}”(hjM8h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M[hjI8ubj)�”}”(hXstruct drm_xe_query_eu_stall { __u64 extensions; __u64 capabilities; #define DRM_XE_EU_STALL_CAPS_BASE (1 << 0); __u64 record_size; __u64 per_xecore_buf_size; __u64 reserved[5]; __u64 num_sampling_rates; __u64 sampling_rates[]; };”h]”hXstruct drm_xe_query_eu_stall { __u64 extensions; __u64 capabilities; #define DRM_XE_EU_STALL_CAPS_BASE (1 << 0); __u64 record_size; __u64 per_xecore_buf_size; __u64 reserved[5]; __u64 num_sampling_rates; __u64 sampling_rates[]; };”…”�”}”hjj8sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M]hjI8ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj{8h]”hŒMembers”…”�”}”(hj}8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjy8ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MhhjI8ubj§)�”}”(hhh]”(j¬)�”}”(hŒ=``extensions`` Pointer to the first extension struct, if any ”h]”(j²)�”}”(hŒ``extensions``”h]”jC)�”}”(hjš8h]”hŒ extensions”…”�”}”(hjœ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj˜8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M_hj”8ubjÃ)�”}”(hhh]”hì)�”}”(hŒ-Pointer to the first extension struct, if any”h]”hŒ-Pointer to the first extension struct, if any”…”�”}”(hj³8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¯8h´M_hj°8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj”8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j¯8h´M_hj‘8ubj¬)�”}”(hŒ0``capabilities`` EU stall capabilities bit-mask ”h]”(j²)�”}”(hŒ``capabilities``”h]”jC)�”}”(hjÓ8h]”hŒ capabilities”…”�”}”(hjÕ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÑ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MbhjÍ8ubjÃ)�”}”(hhh]”hì)�”}”(hŒEU stall capabilities bit-mask”h]”hŒEU stall capabilities bit-mask”…”�”}”(hjì8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jè8h´Mbhjé8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÍ8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jè8h´Mbhj‘8ubj¬)�”}”(hŒ2``record_size`` size of each EU stall data record ”h]”(j²)�”}”(hŒ``record_size``”h]”jC)�”}”(hj 9h]”hŒ record_size”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj 9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mfhj9ubjÃ)�”}”(hhh]”hì)�”}”(hŒ!size of each EU stall data record”h]”hŒ!size of each EU stall data record”…”�”}”(hj%9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j!9h´Mfhj"9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j!9h´Mfhj‘8ubj¬)�”}”(hŒ8``per_xecore_buf_size`` internal per XeCore buffer size ”h]”(j²)�”}”(hŒ``per_xecore_buf_size``”h]”jC)�”}”(hjE9h]”hŒper_xecore_buf_size”…”�”}”(hjG9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjC9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mihj?9ubjÃ)�”}”(hhh]”hì)�”}”(hŒinternal per XeCore buffer size”h]”hŒinternal per XeCore buffer size”…”�”}”(hj^9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jZ9h´Mihj[9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj?9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jZ9h´Mihj‘8ubj¬)�”}”(hŒ``reserved`` Reserved ”h]”(j²)�”}”(hŒ ``reserved``”h]”jC)�”}”(hj~9h]”hŒreserved”…”�”}”(hj€9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj|9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mlhjx9ubjÃ)�”}”(hhh]”hì)�”}”(hŒReserved”h]”hŒReserved”…”�”}”(hj—9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j“9h´Mlhj”9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjx9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j“9h´Mlhj‘8ubj¬)�”}”(hŒL``num_sampling_rates`` Number of sampling rates in **sampling_rates** array ”h]”(j²)�”}”(hŒ``num_sampling_rates``”h]”jC)�”}”(hj·9h]”hŒnum_sampling_rates”…”�”}”(hj¹9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjµ9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mohj±9ubjÃ)�”}”(hhh]”hì)�”}”(hŒ4Number of sampling rates in **sampling_rates** array”h]”(hŒNumber of sampling rates in ”…”�”}”(hjÐ9h²hh³Nh´NubjŒ)�”}”(hŒ**sampling_rates**”h]”hŒsampling_rates”…”�”}”(hjØ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÐ9ubhŒ array”…”�”}”(hjÐ9h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÌ9h´MohjÍ9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj±9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÌ9h´Mohj‘8ubj¬)�”}”(hŒ�``sampling_rates`` Flexible array of sampling rates sorted in the fastest to slowest order. Sampling rates are specified in GPU clock cycles.”h]”(j²)�”}”(hŒ``sampling_rates``”h]”jC)�”}”(hj:h]”hŒsampling_rates”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mthjü9ubjÃ)�”}”(hhh]”hì)�”}”(hŒzFlexible array of sampling rates sorted in the fastest to slowest order. Sampling rates are specified in GPU clock cycles.”h]”hŒzFlexible array of sampling rates sorted in the fastest to slowest order. Sampling rates are specified in GPU clock cycles.”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mshj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjü9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j:h´Mthj‘8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjI8ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjE:h]”hŒ Description”…”�”}”(hjG:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjC:ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mxhj-¸h²hubhì)�”}”(hŒìIf a query is made with a :c:type:`struct drm_xe_device_query ` where .query is equal to ``DRM_XE_DEVICE_QUERY_EU_STALL``, then the reply uses :c:type:`struct drm_xe_query_eu_stall ` in .data.”h]”(hŒIf a query is made with a ”…”�”}”(hj[:h²hh³Nh´Nubh)�”}”(hŒ::c:type:`struct drm_xe_device_query `”h]”jC)�”}”(hje:h]”hŒstruct drm_xe_device_query”…”�”}”(hjg:h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjc:ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒdrm_xe_device_query”uh1hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MXhj[:ubhŒ where .query is equal to ”…”�”}”(hj[:h²hh³Nh´NubjC)�”}”(hŒ ``DRM_XE_DEVICE_QUERY_EU_STALL``”h]”hŒDRM_XE_DEVICE_QUERY_EU_STALL”…”�”}”(hj‡:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj[:ubhŒ, then the reply uses ”…”�”}”(hj[:h²hh³Nh´Nubh)�”}”(hŒ>:c:type:`struct drm_xe_query_eu_stall `”h]”jC)�”}”(hj›:h]”hŒstruct drm_xe_query_eu_stall”…”�”}”(hj�:h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj™:ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j¸j¼jÀŒdrm_xe_query_eu_stall”uh1hh³j‚:h´MXhj[:ubhŒ in .data.”…”�”}”(hj[:h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j‚:h´MXhj-¸h²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_xe_madvise (C struct)”Œc.drm_xe_madvise”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_madvise”h]”jg)�”}”(hŒstruct drm_xe_madvise”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjÛ:h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj×:h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”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Œdrm_xe_madvise”h]”j–)�”}”(hjÕ:h]”hŒdrm_xe_madvise”…”�”}”(hjû:h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj÷:ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj×:h²hh³jè:h´M_ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”hì)�”}”(hŒ'Input of :c:type:`DRM_IOCTL_XE_MADVISE`”h]”(hŒ Input of ”…”�”}”(hj;h²hh³Nh´Nubh)�”}”(hŒ:c:type:`DRM_IOCTL_XE_MADVISE`”h]”jC)�”}”(hj';h]”hŒDRM_IOCTL_XE_MADVISE”…”�”}”(hj);h²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj%;ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j»)�”}”j¾]”jÊá)�”}”jÍájÕ:sbŒc.drm_xe_madvise”†”asbjÀŒDRM_IOCTL_XE_MADVISE”uh1hh³jÑáh´Khj;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mzhj;h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÐ:h²hh³jè:h´M_ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj[;jçj[;jè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hX **Definition**:: struct drm_xe_madvise { __u64 extensions; __u64 start; __u64 range; __u32 vm_id; #define DRM_XE_MEM_RANGE_ATTR_PREFERRED_LOC 0; #define DRM_XE_MEM_RANGE_ATTR_ATOMIC 1; #define DRM_XE_MEM_RANGE_ATTR_PAT 2; #define DRM_XE_VMA_ATTR_PURGEABLE_STATE 3; __u32 type; union { struct { #define DRM_XE_PREFERRED_LOC_DEFAULT_DEVICE 0; #define DRM_XE_PREFERRED_LOC_DEFAULT_SYSTEM -1; __u32 devmem_fd; #define DRM_XE_MIGRATE_ALL_PAGES 0; #define DRM_XE_MIGRATE_ONLY_SYSTEM_PAGES 1; __u16 migration_policy; __u16 region_instance; __u64 reserved; } preferred_mem_loc; struct { #define DRM_XE_ATOMIC_UNDEFINED 0; #define DRM_XE_ATOMIC_DEVICE 1; #define DRM_XE_ATOMIC_GLOBAL 2; #define DRM_XE_ATOMIC_CPU 3; __u32 val; __u32 pad; __u64 reserved; } atomic; struct { __u32 val; __u32 pad; __u64 reserved; } pat_index; struct { #define DRM_XE_VMA_PURGEABLE_STATE_WILLNEED 0; #define DRM_XE_VMA_PURGEABLE_STATE_DONTNEED 1; __u32 val; __u32 pad; __u64 retained_ptr; } purge_state_val; }; __u64 reserved[2]; }; **Members** ``extensions`` Pointer to the first extension struct, if any ``start`` start of the virtual address range ``range`` size of the virtual address range ``vm_id`` vm_id of the virtual range ``type`` type of attribute ``{unnamed_union}`` anonymous ``preferred_mem_loc`` preferred memory location Used when **type** == DRM_XE_MEM_RANGE_ATTR_PREFERRED_LOC Supported values for **preferred_mem_loc.devmem_fd**: - DRM_XE_PREFERRED_LOC_DEFAULT_DEVICE: set vram of fault tile as preferred loc - DRM_XE_PREFERRED_LOC_DEFAULT_SYSTEM: set smem as preferred loc Supported values for **preferred_mem_loc.migration_policy**: - DRM_XE_MIGRATE_ALL_PAGES - DRM_XE_MIGRATE_ONLY_SYSTEM_PAGES ``preferred_mem_loc.devmem_fd`` Device file-descriptor of the device where the preferred memory is located, or one of the above special values. Please also see **preferred_mem_loc.region_instance** below. ``preferred_mem_loc.migration_policy`` Page migration policy ``preferred_mem_loc.region_instance`` Region instance. MBZ if **devmem_fd** <= ``DRM_XE_PREFERRED_LOC_DEFAULT_DEVICE``. Otherwise should point to the desired device VRAM instance of the device indicated by **preferred_mem_loc.devmem_fd**. ``preferred_mem_loc.reserved`` Reserved ``atomic`` Atomic access policy Used when **type** == DRM_XE_MEM_RANGE_ATTR_ATOMIC. Supported values for **atomic.val**: - DRM_XE_ATOMIC_UNDEFINED: Undefined or default behaviour. Support both GPU and CPU atomic operations for system allocator. Support GPU atomic operations for normal(bo) allocator. - DRM_XE_ATOMIC_DEVICE: Support GPU atomic operations. - DRM_XE_ATOMIC_GLOBAL: Support both GPU and CPU atomic operations. - DRM_XE_ATOMIC_CPU: Support CPU atomic only, no GPU atomics supported. ``atomic.val`` value of atomic operation ``atomic.pad`` MBZ ``atomic.reserved`` Reserved ``pat_index`` Page attribute table index Used when **type** == DRM_XE_MEM_RANGE_ATTR_PAT. ``pat_index.val`` PAT index value ``pat_index.pad`` MBZ ``pat_index.reserved`` Reserved ``purge_state_val`` Purgeable state configuration Used when **type** == DRM_XE_VMA_ATTR_PURGEABLE_STATE. Configures the purgeable state of buffer objects in the specified virtual address range. This allows applications to hint to the kernel about bo's usage patterns for better memory management. By default all VMAs are in WILLNEED state. Supported values for **purge_state_val.val**: - DRM_XE_VMA_PURGEABLE_STATE_WILLNEED (0): Marks BO as needed. If the BO was previously purged, the kernel sets the __u32 at **retained_ptr** to 0 (backing store lost) so the application knows it must recreate the BO. - DRM_XE_VMA_PURGEABLE_STATE_DONTNEED (1): Marks BO as not currently needed. Kernel may purge it under memory pressure to reclaim memory. Only applies to non-shared BOs. The kernel sets the __u32 at **retained_ptr** to 1 if the backing store still exists (not yet purged), or 0 if it was already purged. Important: Once marked as DONTNEED, touching the BO's memory is undefined behavior. It may succeed temporarily (before the kernel purges the backing store) but will suddenly fail once the BO transitions to PURGED state. To transition back: use WILLNEED and check **retained_ptr** — if 0, backing store was lost and the BO must be recreated. The following operations are blocked in DONTNEED state to prevent the BO from being re-mapped after madvise: - New mmap() calls: Fail with -EBUSY - VM_BIND operations: Fail with -EBUSY - New dma-buf exports: Fail with -EBUSY - CPU page faults (existing mmap): Fail with SIGBUS - GPU page faults (fault-mode VMs): Fail with -EACCES ``purge_state_val.val`` value for DRM_XE_VMA_ATTR_PURGEABLE_STATE ``purge_state_val.pad`` MBZ ``purge_state_val.retained_ptr`` Pointer to a __u32 output field for backing store status. Userspace must initialize the __u32 value at this address to 0 before the ioctl. Kernel writes a __u32 after the operation: - 1 if backing store exists (not purged) - 0 if backing store was purged If userspace fails to initialize to 0, ioctl returns -EINVAL. This ensures a safe default (0 = assume purged) if kernel cannot write the result. Similar to i915's drm_i915_gem_madvise.retained field. ``reserved`` Reserved”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjg;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjc;ubhŒ:”…”�”}”(hjc;h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M~hj_;ubj)�”}”(hX-struct drm_xe_madvise { __u64 extensions; __u64 start; __u64 range; __u32 vm_id; #define DRM_XE_MEM_RANGE_ATTR_PREFERRED_LOC 0; #define DRM_XE_MEM_RANGE_ATTR_ATOMIC 1; #define DRM_XE_MEM_RANGE_ATTR_PAT 2; #define DRM_XE_VMA_ATTR_PURGEABLE_STATE 3; __u32 type; union { struct { #define DRM_XE_PREFERRED_LOC_DEFAULT_DEVICE 0; #define DRM_XE_PREFERRED_LOC_DEFAULT_SYSTEM -1; __u32 devmem_fd; #define DRM_XE_MIGRATE_ALL_PAGES 0; #define DRM_XE_MIGRATE_ONLY_SYSTEM_PAGES 1; __u16 migration_policy; __u16 region_instance; __u64 reserved; } preferred_mem_loc; struct { #define DRM_XE_ATOMIC_UNDEFINED 0; #define DRM_XE_ATOMIC_DEVICE 1; #define DRM_XE_ATOMIC_GLOBAL 2; #define DRM_XE_ATOMIC_CPU 3; __u32 val; __u32 pad; __u64 reserved; } atomic; struct { __u32 val; __u32 pad; __u64 reserved; } pat_index; struct { #define DRM_XE_VMA_PURGEABLE_STATE_WILLNEED 0; #define DRM_XE_VMA_PURGEABLE_STATE_DONTNEED 1; __u32 val; __u32 pad; __u64 retained_ptr; } purge_state_val; }; __u64 reserved[2]; };”h]”hX-struct drm_xe_madvise { __u64 extensions; __u64 start; __u64 range; __u32 vm_id; #define DRM_XE_MEM_RANGE_ATTR_PREFERRED_LOC 0; #define DRM_XE_MEM_RANGE_ATTR_ATOMIC 1; #define DRM_XE_MEM_RANGE_ATTR_PAT 2; #define DRM_XE_VMA_ATTR_PURGEABLE_STATE 3; __u32 type; union { struct { #define DRM_XE_PREFERRED_LOC_DEFAULT_DEVICE 0; #define DRM_XE_PREFERRED_LOC_DEFAULT_SYSTEM -1; __u32 devmem_fd; #define DRM_XE_MIGRATE_ALL_PAGES 0; #define DRM_XE_MIGRATE_ONLY_SYSTEM_PAGES 1; __u16 migration_policy; __u16 region_instance; __u64 reserved; } preferred_mem_loc; struct { #define DRM_XE_ATOMIC_UNDEFINED 0; #define DRM_XE_ATOMIC_DEVICE 1; #define DRM_XE_ATOMIC_GLOBAL 2; #define DRM_XE_ATOMIC_CPU 3; __u32 val; __u32 pad; __u64 reserved; } atomic; struct { __u32 val; __u32 pad; __u64 reserved; } pat_index; struct { #define DRM_XE_VMA_PURGEABLE_STATE_WILLNEED 0; #define DRM_XE_VMA_PURGEABLE_STATE_DONTNEED 1; __u32 val; __u32 pad; __u64 retained_ptr; } purge_state_val; }; __u64 reserved[2]; };”…”�”}”hj€;sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M€hj_;ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj‘;h]”hŒMembers”…”�”}”(hj“;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj�;ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M®hj_;ubj§)�”}”(hhh]”(j¬)�”}”(hŒ=``extensions`` Pointer to the first extension struct, if any ”h]”(j²)�”}”(hŒ``extensions``”h]”jC)�”}”(hj°;h]”hŒ extensions”…”�”}”(hj²;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj®;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M—hjª;ubjÃ)�”}”(hhh]”hì)�”}”(hŒ-Pointer to the first extension struct, if any”h]”hŒ-Pointer to the first extension struct, if any”…”�”}”(hjÉ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ-``start`` start of the virtual address range ”h]”(j²)�”}”(hŒ ``start``”h]”jC)�”}”(hjé;h]”hŒstart”…”�”}”(hjë;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjç;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mšhjã;ubjÃ)�”}”(hhh]”hì)�”}”(hŒ"start of the virtual address range”h]”hŒ"start of the virtual address range”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ,``range`` size of the virtual address range ”h]”(j²)�”}”(hŒ ``range``”h]”jC)�”}”(hj"<h]”hŒrange”…”�”}”(hj$<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj <ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M�hj<ubjÃ)�”}”(hhh]”hì)�”}”(hŒ!size of the virtual address range”h]”hŒ!size of the virtual address range”…”�”}”(hj;<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j7<h´M�hj8<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j7<h´M�hj§;ubj¬)�”}”(hŒ%``vm_id`` vm_id of the virtual range ”h]”(j²)�”}”(hŒ ``vm_id``”h]”jC)�”}”(hj[<h]”hŒvm_id”…”�”}”(hj]<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjY<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M hjU<ubjÃ)�”}”(hhh]”hì)�”}”(hŒvm_id of the virtual range”h]”hŒvm_id of the virtual range”…”�”}”(hjt<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jp<h´M hjq<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjU<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jp<h´M hj§;ubj¬)�”}”(hŒ``type`` type of attribute ”h]”(j²)�”}”(hŒ``type``”h]”jC)�”}”(hj”<h]”hŒtype”…”�”}”(hj–<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj’<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M§hjŽ<ubjÃ)�”}”(hhh]”hì)�”}”(hŒtype of attribute”h]”hŒtype of attribute”…”�”}”(hj­<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ``{unnamed_union}`` anonymous ”h]”(j²)�”}”(hŒ``{unnamed_union}``”h]”jC)�”}”(hjÍ<h]”hŒ{unnamed_union}”…”�”}”(hjÏ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjË<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´KhjÇ<ubjÃ)�”}”(hhh]”hì)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hjæ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jâ<h´Khjã<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÇ<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jâ<h´Khj§;ubj¬)�”}”(hX²``preferred_mem_loc`` preferred memory location Used when **type** == DRM_XE_MEM_RANGE_ATTR_PREFERRED_LOC Supported values for **preferred_mem_loc.devmem_fd**: - DRM_XE_PREFERRED_LOC_DEFAULT_DEVICE: set vram of fault tile as preferred loc - DRM_XE_PREFERRED_LOC_DEFAULT_SYSTEM: set smem as preferred loc Supported values for **preferred_mem_loc.migration_policy**: - DRM_XE_MIGRATE_ALL_PAGES - DRM_XE_MIGRATE_ONLY_SYSTEM_PAGES ”h]”(j²)�”}”(hŒ``preferred_mem_loc``”h]”jC)�”}”(hj=h]”hŒpreferred_mem_loc”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M¶hj=ubjÃ)�”}”(hhh]”(hì)�”}”(hŒpreferred memory location”h]”hŒpreferred memory location”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M¬hj=ubhì)�”}”(hŒ9Used when **type** == DRM_XE_MEM_RANGE_ATTR_PREFERRED_LOC”h]”(hŒ Used when ”…”�”}”(hj.=h²hh³Nh´NubjŒ)�”}”(hŒ**type**”h]”hŒtype”…”�”}”(hj6=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj.=ubhŒ' == DRM_XE_MEM_RANGE_ATTR_PREFERRED_LOC”…”�”}”(hj.=h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M®hj=ubj§)�”}”(hhh]”(j¬)�”}”(hŒÆSupported values for **preferred_mem_loc.devmem_fd**: - DRM_XE_PREFERRED_LOC_DEFAULT_DEVICE: set vram of fault tile as preferred loc - DRM_XE_PREFERRED_LOC_DEFAULT_SYSTEM: set smem as preferred loc ”h]”(j²)�”}”(hŒ5Supported values for **preferred_mem_loc.devmem_fd**:”h]”(hŒSupported values for ”…”�”}”(hjV=h²hh³Nh´NubjŒ)�”}”(hŒ**preferred_mem_loc.devmem_fd**”h]”hŒpreferred_mem_loc.devmem_fd”…”�”}”(hj^=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjV=ubhŒ:”…”�”}”(hjV=h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M²hjR=ubjÃ)�”}”(hhh]”hâ)�”}”(hhh]”(hç)�”}”(hŒLDRM_XE_PREFERRED_LOC_DEFAULT_DEVICE: set vram of fault tile as preferred loc”h]”hì)�”}”(hj=h]”hŒLDRM_XE_PREFERRED_LOC_DEFAULT_DEVICE: set vram of fault tile as preferred loc”…”�”}”(hj�=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M±hj}=ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjz=ubhç)�”}”(hŒ?DRM_XE_PREFERRED_LOC_DEFAULT_SYSTEM: set smem as preferred loc ”h]”hì)�”}”(hŒ>DRM_XE_PREFERRED_LOC_DEFAULT_SYSTEM: set smem as preferred loc”h]”hŒ>DRM_XE_PREFERRED_LOC_DEFAULT_SYSTEM: set smem as preferred loc”…”�”}”(hj™=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jv=h´M²hj•=ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjz=ubeh}”(h]”h ]”h"]”h$]”h&]”jÀ jÁ uh1háh³jŽ=h´M±hjw=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjR=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jv=h´M²hjO=ubj¬)�”}”(hŒ{Supported values for **preferred_mem_loc.migration_policy**: - DRM_XE_MIGRATE_ALL_PAGES - DRM_XE_MIGRATE_ONLY_SYSTEM_PAGES ”h]”(j²)�”}”(hŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j=h´M¶hj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjæ=ubeh}”(h]”h ]”h"]”h$]”h&]”jÀ jÁ uh1háh³jú=h´Mµhjã=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj¿=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j=h´M¶hjO=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j=h´M¶hj§;ubj¬)�”}”(hŒÍ``preferred_mem_loc.devmem_fd`` Device file-descriptor of the device where the preferred memory is located, or one of the above special values. Please also see **preferred_mem_loc.region_instance** below. ”h]”(j²)�”}”(hŒ``preferred_mem_loc.devmem_fd``”h]”jC)�”}”(hjC>h]”hŒpreferred_mem_loc.devmem_fd”…”�”}”(hjE>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjA>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M¿hj=>ubjÃ)�”}”(hhh]”hì)�”}”(hŒ¬Device file-descriptor of the device where the preferred memory is located, or one of the above special values. Please also see **preferred_mem_loc.region_instance** below.”h]”(hŒ€Device file-descriptor of the device where the preferred memory is located, or one of the above special values. Please also see ”…”�”}”(hj\>h²hh³Nh´NubjŒ)�”}”(hŒ%**preferred_mem_loc.region_instance**”h]”hŒ!preferred_mem_loc.region_instance”…”�”}”(hjd>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj\>ubhŒ below.”…”�”}”(hj\>h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M¼hjY>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj=>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jX>h´M¿hj§;ubj¬)�”}”(hŒ=``preferred_mem_loc.migration_policy`` Page migration policy ”h]”(j²)�”}”(hŒ&``preferred_mem_loc.migration_policy``”h]”jC)�”}”(hj�>h]”hŒ"preferred_mem_loc.migration_policy”…”�”}”(hj‘>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj�>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÆhj‰>ubjÃ)�”}”(hhh]”hì)�”}”(hŒPage migration policy”h]”hŒPage migration policy”…”�”}”(hj¨>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œï``preferred_mem_loc.region_instance`` Region instance. MBZ if **devmem_fd** <= ``DRM_XE_PREFERRED_LOC_DEFAULT_DEVICE``. Otherwise should point to the desired device VRAM instance of the device indicated by **preferred_mem_loc.devmem_fd**. ”h]”(j²)�”}”(hŒ%``preferred_mem_loc.region_instance``”h]”jC)�”}”(hjÈ>h]”hŒ!preferred_mem_loc.region_instance”…”�”}”(hjÊ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÆ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÎhjÂ>ubjÃ)�”}”(hhh]”hì)�”}”(hŒÈRegion instance. MBZ if **devmem_fd** <= ``DRM_XE_PREFERRED_LOC_DEFAULT_DEVICE``. Otherwise should point to the desired device VRAM instance of the device indicated by **preferred_mem_loc.devmem_fd**.”h]”(hŒRegion instance. MBZ if ”…”�”}”(hjá>h²hh³Nh´NubjŒ)�”}”(hŒ **devmem_fd**”h]”hŒ devmem_fd”…”�”}”(hjé>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjá>ubhŒ <= ”…”�”}”(hjá>h²hh³Nh´NubjC)�”}”(hŒ'``DRM_XE_PREFERRED_LOC_DEFAULT_DEVICE``”h]”hŒ#DRM_XE_PREFERRED_LOC_DEFAULT_DEVICE”…”�”}”(hjû>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjá>ubhŒX. Otherwise should point to the desired device VRAM instance of the device indicated by ”…”�”}”(hjá>h²hh³Nh´NubjŒ)�”}”(hŒ**preferred_mem_loc.devmem_fd**”h]”hŒpreferred_mem_loc.devmem_fd”…”�”}”(hj ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjá>ubhŒ.”…”�”}”(hjá>h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”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Œ(``preferred_mem_loc.reserved`` Reserved ”h]”(j²)�”}”(hŒ``preferred_mem_loc.reserved``”h]”jC)�”}”(hj8?h]”hŒpreferred_mem_loc.reserved”…”�”}”(hj:?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj6?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÒhj2?ubjÃ)�”}”(hhh]”hì)�”}”(hŒReserved”h]”hŒReserved”…”�”}”(hjQ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jM?h´MÒhjN?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj2?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jM?h´MÒhj§;ubj¬)�”}”(hXü``atomic`` Atomic access policy Used when **type** == DRM_XE_MEM_RANGE_ATTR_ATOMIC. Supported values for **atomic.val**: - DRM_XE_ATOMIC_UNDEFINED: Undefined or default behaviour. Support both GPU and CPU atomic operations for system allocator. Support GPU atomic operations for normal(bo) allocator. - DRM_XE_ATOMIC_DEVICE: Support GPU atomic operations. - DRM_XE_ATOMIC_GLOBAL: Support both GPU and CPU atomic operations. - DRM_XE_ATOMIC_CPU: Support CPU atomic only, no GPU atomics supported. ”h]”(j²)�”}”(hŒ ``atomic``”h]”jC)�”}”(hjq?h]”hŒatomic”…”�”}”(hjs?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjo?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Máhjk?ubjÃ)�”}”(hhh]”(hì)�”}”(hŒAtomic access policy”h]”hŒAtomic access policy”…”�”}”(hjŠ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M×hj‡?ubhì)�”}”(hŒ3Used when **type** == DRM_XE_MEM_RANGE_ATTR_ATOMIC.”h]”(hŒ Used when ”…”�”}”(hj™?h²hh³Nh´NubjŒ)�”}”(hŒ**type**”h]”hŒtype”…”�”}”(hj¡?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj™?ubhŒ! == DRM_XE_MEM_RANGE_ATTR_ATOMIC.”…”�”}”(hj™?h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÙhj‡?ubj§)�”}”(hhh]”j¬)�”}”(hX Supported values for **atomic.val**: - DRM_XE_ATOMIC_UNDEFINED: Undefined or default behaviour. Support both GPU and CPU atomic operations for system allocator. Support GPU atomic operations for normal(bo) allocator. - DRM_XE_ATOMIC_DEVICE: Support GPU atomic operations. - DRM_XE_ATOMIC_GLOBAL: Support both GPU and CPU atomic operations. - DRM_XE_ATOMIC_CPU: Support CPU atomic only, no GPU atomics supported. ”h]”(j²)�”}”(hŒ$Supported values for **atomic.val**:”h]”(hŒSupported values for ”…”�”}”(hjÁ?h²hh³Nh´NubjŒ)�”}”(hŒ**atomic.val**”h]”hŒ atomic.val”…”�”}”(hjÉ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÁ?ubhŒ:”…”�”}”(hjÁ?h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j±h³j†?h´Máhj½?ubjÃ)�”}”(hhh]”hâ)�”}”(hhh]”(hç)�”}”(hŒ±DRM_XE_ATOMIC_UNDEFINED: Undefined or default behaviour. Support both GPU and CPU atomic operations for system allocator. Support GPU atomic operations for normal(bo) allocator.”h]”hì)�”}”(hŒ±DRM_XE_ATOMIC_UNDEFINED: Undefined or default behaviour. Support both GPU and CPU atomic operations for system allocator. Support GPU atomic operations for normal(bo) allocator.”h]”hŒ±DRM_XE_ATOMIC_UNDEFINED: Undefined or default behaviour. Support both GPU and CPU atomic operations for system allocator. Support GPU atomic operations for normal(bo) allocator.”…”�”}”(hjë?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÜhjç?ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjä?ubhç)�”}”(hŒ4DRM_XE_ATOMIC_DEVICE: Support GPU atomic operations.”h]”hì)�”}”(hj@h]”hŒ4DRM_XE_ATOMIC_DEVICE: Support GPU atomic operations.”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mßhj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjä?ubhç)�”}”(hŒADRM_XE_ATOMIC_GLOBAL: Support both GPU and CPU atomic operations.”h]”hì)�”}”(hj@h]”hŒADRM_XE_ATOMIC_GLOBAL: Support both GPU and CPU atomic operations.”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Màhj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjä?ubhç)�”}”(hŒFDRM_XE_ATOMIC_CPU: Support CPU atomic only, no GPU atomics supported. ”h]”hì)�”}”(hŒEDRM_XE_ATOMIC_CPU: Support CPU atomic only, no GPU atomics supported.”h]”hŒEDRM_XE_ATOMIC_CPU: Support CPU atomic only, no GPU atomics supported.”…”�”}”(hj4@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j†?h´Máhj0@ubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjä?ubeh}”(h]”h ]”h"]”h$]”h&]”jÀ jÁ uh1há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º?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj‡?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjk?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j†?h´Máhj§;ubj¬)�”}”(hŒ)``atomic.val`` value of atomic operation ”h]”(j²)�”}”(hŒ``atomic.val``”h]”jC)�”}”(hjr@h]”hŒ atomic.val”…”�”}”(hjt@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjp@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mèhjl@ubjÃ)�”}”(hhh]”hì)�”}”(hŒvalue of atomic operation”h]”hŒvalue of atomic operation”…”�”}”(hj‹@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j‡@h´Mèhjˆ@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjl@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j‡@h´Mèhj§;ubj¬)�”}”(hŒ``atomic.pad`` MBZ ”h]”(j²)�”}”(hŒ``atomic.pad``”h]”jC)�”}”(hj«@h]”hŒ atomic.pad”…”�”}”(hj­@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj©@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mëhj¥@ubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hjÄ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ``atomic.reserved`` Reserved ”h]”(j²)�”}”(hŒ``atomic.reserved``”h]”jC)�”}”(hjä@h]”hŒatomic.reserved”…”�”}”(hjæ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjâ@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MîhjÞ@ubjÃ)�”}”(hhh]”hì)�”}”(hŒReserved”h]”hŒReserved”…”�”}”(hjý@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ[``pat_index`` Page attribute table index Used when **type** == DRM_XE_MEM_RANGE_ATTR_PAT. ”h]”(j²)�”}”(hŒ ``pat_index``”h]”jC)�”}”(hjAh]”hŒ pat_index”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjAubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MõhjAubjÃ)�”}”(hhh]”(hì)�”}”(hŒPage attribute table index”h]”hŒPage attribute table index”…”�”}”(hj6Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Móhj3Aubhì)�”}”(hŒ0Used when **type** == DRM_XE_MEM_RANGE_ATTR_PAT.”h]”(hŒ Used when ”…”�”}”(hjEAh²hh³Nh´NubjŒ)�”}”(hŒ**type**”h]”hŒtype”…”�”}”(hjMAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjEAubhŒ == DRM_XE_MEM_RANGE_ATTR_PAT.”…”�”}”(hjEAh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j2Ah´Mõhj3Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j2Ah´Mõhj§;ubj¬)�”}”(hŒ"``pat_index.val`` PAT index value ”h]”(j²)�”}”(hŒ``pat_index.val``”h]”jC)�”}”(hjwAh]”hŒ pat_index.val”…”�”}”(hjyAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjuAubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MøhjqAubjÃ)�”}”(hhh]”hì)�”}”(hŒPAT index value”h]”hŒPAT index value”…”�”}”(hj�Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jŒAh´Møhj�Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjqAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jŒAh´Møhj§;ubj¬)�”}”(hŒ``pat_index.pad`` MBZ ”h]”(j²)�”}”(hŒ``pat_index.pad``”h]”jC)�”}”(hj°Ah]”hŒ pat_index.pad”…”�”}”(hj²Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj®Aubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MûhjªAubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hjÉAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÅAh´MûhjÆAubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjªAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÅAh´Mûhj§;ubj¬)�”}”(hŒ ``pat_index.reserved`` Reserved ”h]”(j²)�”}”(hŒ``pat_index.reserved``”h]”jC)�”}”(hjéAh]”hŒpat_index.reserved”…”�”}”(hjëAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjçAubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MþhjãAubjÃ)�”}”(hhh]”hì)�”}”(hŒReserved”h]”hŒReserved”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jþAh´MþhjÿAubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjãAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jþAh´Mþhj§;ubj¬)�”}”(hXt``purge_state_val`` Purgeable state configuration Used when **type** == DRM_XE_VMA_ATTR_PURGEABLE_STATE. Configures the purgeable state of buffer objects in the specified virtual address range. This allows applications to hint to the kernel about bo's usage patterns for better memory management. By default all VMAs are in WILLNEED state. Supported values for **purge_state_val.val**: - DRM_XE_VMA_PURGEABLE_STATE_WILLNEED (0): Marks BO as needed. If the BO was previously purged, the kernel sets the __u32 at **retained_ptr** to 0 (backing store lost) so the application knows it must recreate the BO. - DRM_XE_VMA_PURGEABLE_STATE_DONTNEED (1): Marks BO as not currently needed. Kernel may purge it under memory pressure to reclaim memory. Only applies to non-shared BOs. The kernel sets the __u32 at **retained_ptr** to 1 if the backing store still exists (not yet purged), or 0 if it was already purged. Important: Once marked as DONTNEED, touching the BO's memory is undefined behavior. It may succeed temporarily (before the kernel purges the backing store) but will suddenly fail once the BO transitions to PURGED state. To transition back: use WILLNEED and check **retained_ptr** — if 0, backing store was lost and the BO must be recreated. The following operations are blocked in DONTNEED state to prevent the BO from being re-mapped after madvise: - New mmap() calls: Fail with -EBUSY - VM_BIND operations: Fail with -EBUSY - New dma-buf exports: Fail with -EBUSY - CPU page faults (existing mmap): Fail with SIGBUS - GPU page faults (fault-mode VMs): Fail with -EACCES ”h]”(j²)�”}”(hŒ``purge_state_val``”h]”jC)�”}”(hj"Bh]”hŒpurge_state_val”…”�”}”(hj$Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj Bubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M' hjBubjÃ)�”}”(hhh]”(hì)�”}”(hŒPurgeable state configuration”h]”hŒPurgeable state configuration”…”�”}”(hj;Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M hj8Bubhì)�”}”(hŒ6Used when **type** == DRM_XE_VMA_ATTR_PURGEABLE_STATE.”h]”(hŒ Used when ”…”�”}”(hjJBh²hh³Nh´NubjŒ)�”}”(hŒ**type**”h]”hŒtype”…”�”}”(hjRBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjJBubhŒ$ == DRM_XE_VMA_ATTR_PURGEABLE_STATE.”…”�”}”(hjJBh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M hj8Bubhì)�”}”(hŒ¿Configures the purgeable state of buffer objects in the specified virtual address range. This allows applications to hint to the kernel about bo's usage patterns for better memory management.”h]”hŒÁConfigures the purgeable state of buffer objects in the specified virtual address range. This allows applications to hint to the kernel about bo’s usage patterns for better memory management.”…”�”}”(hjkBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M hj8Bubhì)�”}”(hŒ*By default all VMAs are in WILLNEED state.”h]”hŒ*By default all VMAs are in WILLNEED state.”…”�”}”(hjzBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M hj8Bubj§)�”}”(hhh]”j¬)�”}”(hXSupported values for **purge_state_val.val**: - DRM_XE_VMA_PURGEABLE_STATE_WILLNEED (0): Marks BO as needed. If the BO was previously purged, the kernel sets the __u32 at **retained_ptr** to 0 (backing store lost) so the application knows it must recreate the BO. - DRM_XE_VMA_PURGEABLE_STATE_DONTNEED (1): Marks BO as not currently needed. Kernel may purge it under memory pressure to reclaim memory. Only applies to non-shared BOs. The kernel sets the __u32 at **retained_ptr** to 1 if the backing store still exists (not yet purged), or 0 if it was already purged. Important: Once marked as DONTNEED, touching the BO's memory is undefined behavior. It may succeed temporarily (before the kernel purges the backing store) but will suddenly fail once the BO transitions to PURGED state. To transition back: use WILLNEED and check **retained_ptr** — if 0, backing store was lost and the BO must be recreated. The following operations are blocked in DONTNEED state to prevent the BO from being re-mapped after madvise: - New mmap() calls: Fail with -EBUSY - VM_BIND operations: Fail with -EBUSY - New dma-buf exports: Fail with -EBUSY - CPU page faults (existing mmap): Fail with SIGBUS - GPU page faults (fault-mode VMs): Fail with -EACCES ”h]”(j²)�”}”(hŒ-Supported values for **purge_state_val.val**:”h]”(hŒSupported values for ”…”�”}”(hj�Bh²hh³Nh´NubjŒ)�”}”(hŒ**purge_state_val.val**”h]”hŒpurge_state_val.val”…”�”}”(hj˜Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj�BubhŒ:”…”�”}”(hj�Bh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j±h³j7Bh´M' hjŒBubjÃ)�”}”(hhh]”hâ)�”}”(hhh]”(hç)�”}”(hŒØDRM_XE_VMA_PURGEABLE_STATE_WILLNEED (0): Marks BO as needed. If the BO was previously purged, the kernel sets the __u32 at **retained_ptr** to 0 (backing store lost) so the application knows it must recreate the BO. ”h]”hì)�”}”(hŒ×DRM_XE_VMA_PURGEABLE_STATE_WILLNEED (0): Marks BO as needed. If the BO was previously purged, the kernel sets the __u32 at **retained_ptr** to 0 (backing store lost) so the application knows it must recreate the BO.”h]”(hŒ{DRM_XE_VMA_PURGEABLE_STATE_WILLNEED (0): Marks BO as needed. If the BO was previously purged, the kernel sets the __u32 at ”…”�”}”(hjºBh²hh³Nh´NubjŒ)�”}”(hŒ**retained_ptr**”h]”hŒ retained_ptr”…”�”}”(hjÂBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjºBubhŒL to 0 (backing store lost) so the application knows it must recreate the BO.”…”�”}”(hjºBh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M hj¶Bubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj³Bubhç)�”}”(hXÓDRM_XE_VMA_PURGEABLE_STATE_DONTNEED (1): Marks BO as not currently needed. Kernel may purge it under memory pressure to reclaim memory. Only applies to non-shared BOs. The kernel sets the __u32 at **retained_ptr** to 1 if the backing store still exists (not yet purged), or 0 if it was already purged. Important: Once marked as DONTNEED, touching the BO's memory is undefined behavior. It may succeed temporarily (before the kernel purges the backing store) but will suddenly fail once the BO transitions to PURGED state. To transition back: use WILLNEED and check **retained_ptr** — if 0, backing store was lost and the BO must be recreated. The following operations are blocked in DONTNEED state to prevent the BO from being re-mapped after madvise: - New mmap() calls: Fail with -EBUSY - VM_BIND operations: Fail with -EBUSY - New dma-buf exports: Fail with -EBUSY - CPU page faults (existing mmap): Fail with SIGBUS - GPU page faults (fault-mode VMs): Fail with -EACCES ”h]”(hì)�”}”(hX-DRM_XE_VMA_PURGEABLE_STATE_DONTNEED (1): Marks BO as not currently needed. Kernel may purge it under memory pressure to reclaim memory. Only applies to non-shared BOs. The kernel sets the __u32 at **retained_ptr** to 1 if the backing store still exists (not yet purged), or 0 if it was already purged.”h]”(hŒÅDRM_XE_VMA_PURGEABLE_STATE_DONTNEED (1): Marks BO as not currently needed. Kernel may purge it under memory pressure to reclaim memory. Only applies to non-shared BOs. The kernel sets the __u32 at ”…”�”}”(hjåBh²hh³Nh´NubjŒ)�”}”(hŒ**retained_ptr**”h]”hŒ retained_ptr”…”�”}”(hjíBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjåBubhŒX to 1 if the backing store still exists (not yet purged), or 0 if it was already purged.”…”�”}”(hjåBh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M hjáBubhì)�”}”(hŒÛImportant: Once marked as DONTNEED, touching the BO's memory is undefined behavior. It may succeed temporarily (before the kernel purges the backing store) but will suddenly fail once the BO transitions to PURGED state.”h]”hŒÝImportant: Once marked as DONTNEED, touching the BO’s memory is undefined behavior. It may succeed temporarily (before the kernel purges the backing store) but will suddenly fail once the BO transitions to PURGED state.”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M hjáBubhì)�”}”(hŒzTo transition back: use WILLNEED and check **retained_ptr** — if 0, backing store was lost and the BO must be recreated.”h]”(hŒ+To transition back: use WILLNEED and check ”…”�”}”(hjCh²hh³Nh´NubjŒ)�”}”(hŒ**retained_ptr**”h]”hŒ retained_ptr”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjCubhŒ? — if 0, backing store was lost and the BO must be recreated.”…”�”}”(hjCh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M hjáBubhì)�”}”(hXJThe following operations are blocked in DONTNEED state to prevent the BO from being re-mapped after madvise: - New mmap() calls: Fail with -EBUSY - VM_BIND operations: Fail with -EBUSY - New dma-buf exports: Fail with -EBUSY - CPU page faults (existing mmap): Fail with SIGBUS - GPU page faults (fault-mode VMs): Fail with -EACCES”h]”hXJThe following operations are blocked in DONTNEED state to prevent the BO from being re-mapped after madvise: - New mmap() calls: Fail with -EBUSY - VM_BIND operations: Fail with -EBUSY - New dma-buf exports: Fail with -EBUSY - CPU page faults (existing mmap): Fail with SIGBUS - GPU page faults (fault-mode VMs): Fail with -EACCES”…”�”}”(hj6Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M! hjáBubeh}”(h]”h ]”h"]”h$]”h&]”uh1hæhj³Bubeh}”(h]”h ]”h"]”h$]”h&]”jÀ jÁ uh1háh³jÚBh´M hj°Bubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjŒBubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j7Bh´M' hj‰Bubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj8Bubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjBubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j7Bh´M' hj§;ubj¬)�”}”(hŒB``purge_state_val.val`` value for DRM_XE_VMA_ATTR_PURGEABLE_STATE ”h]”(j²)�”}”(hŒ``purge_state_val.val``”h]”jC)�”}”(hjuCh]”hŒpurge_state_val.val”…”�”}”(hjwCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjsCubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M, hjoCubjÃ)�”}”(hhh]”hì)�”}”(hŒ)value for DRM_XE_VMA_ATTR_PURGEABLE_STATE”h]”hŒ)value for DRM_XE_VMA_ATTR_PURGEABLE_STATE”…”�”}”(hjŽCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jŠCh´M, hj‹Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjoCubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jŠCh´M, hj§;ubj¬)�”}”(hŒ``purge_state_val.pad`` MBZ ”h]”(j²)�”}”(hŒ``purge_state_val.pad``”h]”jC)�”}”(hj®Ch]”hŒpurge_state_val.pad”…”�”}”(hj°Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj¬Cubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M/ hj¨CubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hjÇCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÃCh´M/ hjÄCubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj¨Cubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÃCh´M/ hj§;ubj¬)�”}”(hXë``purge_state_val.retained_ptr`` Pointer to a __u32 output field for backing store status. Userspace must initialize the __u32 value at this address to 0 before the ioctl. Kernel writes a __u32 after the operation: - 1 if backing store exists (not purged) - 0 if backing store was purged If userspace fails to initialize to 0, ioctl returns -EINVAL. This ensures a safe default (0 = assume purged) if kernel cannot write the result. Similar to i915's drm_i915_gem_madvise.retained field. ”h]”(j²)�”}”(hŒ ``purge_state_val.retained_ptr``”h]”jC)�”}”(hjçCh]”hŒpurge_state_val.retained_ptr”…”�”}”(hjéCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjåCubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M? hjáCubjÃ)�”}”(hhh]”(hì)�”}”(hŒ9Pointer to a __u32 output field for backing store status.”h]”hŒ9Pointer to a __u32 output field for backing store status.”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M2 hjýCubhì)�”}”(hŒÄUserspace must initialize the __u32 value at this address to 0 before the ioctl. Kernel writes a __u32 after the operation: - 1 if backing store exists (not purged) - 0 if backing store was purged”h]”hŒÄUserspace must initialize the __u32 value at this address to 0 before the ioctl. Kernel writes a __u32 after the operation: - 1 if backing store exists (not purged) - 0 if backing store was purged”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M5 hjýCubhì)�”}”(hŒ�If userspace fails to initialize to 0, ioctl returns -EINVAL. This ensures a safe default (0 = assume purged) if kernel cannot write the result.”•2h]”hŒ�If userspace fails to initialize to 0, ioctl returns -EINVAL. This ensures a safe default (0 = assume purged) if kernel cannot write the result.”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M; hjýCubhì)�”}”(hŒ6Similar to i915's drm_i915_gem_madvise.retained field.”h]”hŒ8Similar to i915’s drm_i915_gem_madvise.retained field.”…”�”}”(hj-Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jüCh´M? hjýCubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjáCubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jüCh´M? hj§;ubj¬)�”}”(hŒ``reserved`` Reserved”h]”(j²)�”}”(hŒ ``reserved``”h]”jC)�”}”(hjMDh]”hŒreserved”…”�”}”(hjODh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjKDubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MD hjGDubjÃ)�”}”(hhh]”hì)�”}”(hŒReserved”h]”hŒReserved”…”�”}”(hjfDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´ME hjcDubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjGDubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jbDh´MD hj§;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj_;ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hj�Dh]”hŒ Description”…”�”}”(hj’Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjŽDubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MH hj-¸h²hubhì)�”}”(hŒÞThis structure is used to set memory attributes for a virtual address range in a VM. The type of attribute is specified by **type**, and the corresponding union member is used to provide additional parameters for **type**.”h]”(hŒ{This structure is used to set memory attributes for a virtual address range in a VM. The type of attribute is specified by ”…”�”}”(hj¦Dh²hh³Nh´NubjŒ)�”}”(hŒ**type**”h]”hŒtype”…”�”}”(hj®Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj¦DubhŒR, and the corresponding union member is used to provide additional parameters for ”…”�”}”(hj¦Dh²hh³Nh´NubjŒ)�”}”(hŒ**type**”h]”hŒtype”…”�”}”(hjÀDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj¦DubhŒ.”…”�”}”(hj¦Dh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M{hj-¸h²hubj§)�”}”(hhh]”j¬)�”}”(hXSupported attribute types: - DRM_XE_MEM_RANGE_ATTR_PREFERRED_LOC: Set preferred memory location. - DRM_XE_MEM_RANGE_ATTR_ATOMIC: Set atomic access policy. - DRM_XE_MEM_RANGE_ATTR_PAT: Set page attribute table index. - DRM_XE_VMA_ATTR_PURGEABLE_STATE: Set purgeable state for BOs. ”h]”(j²)�”}”(hŒSupported attribute types:”h]”hŒSupported attribute types:”…”�”}”(hjàDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MƒhjÜDubjÃ)�”}”(hhh]”hâ)�”}”(hhh]”(hç)�”}”(hŒCDRM_XE_MEM_RANGE_ATTR_PREFERRED_LOC: Set preferred memory location.”h]”hì)�”}”(hj÷Dh]”hŒCDRM_XE_MEM_RANGE_ATTR_PREFERRED_LOC: Set preferred memory location.”…”�”}”(hjùDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M€hjõDubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjòDubhç)�”}”(hŒ7DRM_XE_MEM_RANGE_ATTR_ATOMIC: Set atomic access policy.”h]”hì)�”}”(hjEh]”hŒ7DRM_XE_MEM_RANGE_ATTR_ATOMIC: Set atomic access policy.”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M�hj Eubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjòDubhç)�”}”(hŒ:DRM_XE_MEM_RANGE_ATTR_PAT: Set page attribute table index.”h]”hì)�”}”(hj'Eh]”hŒ:DRM_XE_MEM_RANGE_ATTR_PAT: Set page attribute table index.”…”�”}”(hj)Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M‚hj%Eubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjòDubhç)�”}”(hŒ>DRM_XE_VMA_ATTR_PURGEABLE_STATE: Set purgeable state for BOs. ”h]”hì)�”}”(hŒ=DRM_XE_VMA_ATTR_PURGEABLE_STATE: Set purgeable state for BOs.”h]”hŒ=DRM_XE_VMA_ATTR_PURGEABLE_STATE: Set purgeable state for BOs.”…”�”}”(hjAEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jîDh´Mƒhj=Eubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjòDubeh}”(h]”h ]”h"]”h$]”h&]”jÀ jÁ uh1háh³jEh´M€hjïDubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÜDubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jîDh´MƒhjÙDubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj-¸h²hh³Nh´Nubhì)�”}”(hŒ **Example**”h]”jŒ)�”}”(hjoEh]”hŒExample”…”�”}”(hjqEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjmEubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M…hj-¸h²hubj)�”}”(hŒçstruct drm_xe_madvise madvise = { .vm_id = vm_id, .start = 0x100000, .range = 0x2000, .type = DRM_XE_MEM_RANGE_ATTR_ATOMIC, .atomic.val = DRM_XE_ATOMIC_DEVICE, }; ioctl(fd, DRM_IOCTL_XE_MADVISE, &madvise);”h]”hŒçstruct drm_xe_madvise madvise = { .vm_id = vm_id, .start = 0x100000, .range = 0x2000, .type = DRM_XE_MEM_RANGE_ATTR_ATOMIC, .atomic.val = DRM_XE_ATOMIC_DEVICE, }; ioctl(fd, DRM_IOCTL_XE_MADVISE, &madvise);”…”�”}”hj…Esbah}”(h]”h ]”h"]”h$]”h&]”j­j®j¾‰j¿jÀjÁ}”uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M†hj-¸h²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ drm_xe_mem_range_attr (C struct)”Œc.drm_xe_mem_range_attr”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_mem_range_attr”h]”jg)�”}”(hŒstruct drm_xe_mem_range_attr”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj®Eh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjªEh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M•ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼Eh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjªEh²hh³j»Eh´M•ubj�)�”}”(hŒdrm_xe_mem_range_attr”h]”j–)�”}”(hj¨Eh]”hŒdrm_xe_mem_range_attr”…”�”}”(hjÎEh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjÊEubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjªEh²hh³j»Eh´M•ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hj¦Eh²hh³j»Eh´M•ubah}”(h]”j¡Eah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³j»Eh´M•hj£Eh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ9Output of :c:type:`DRM_IOCTL_XE_VM_QUERY_MEM_RANGE_ATTRS`”h]”(hŒ Output of ”…”�”}”(hjðEh²hh³Nh´Nubh)�”}”(hŒ/:c:type:`DRM_IOCTL_XE_VM_QUERY_MEM_RANGE_ATTRS`”h]”jC)�”}”(hjúEh]”hŒ%DRM_IOCTL_XE_VM_QUERY_MEM_RANGE_ATTRS”…”�”}”(hjüEh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhjøEubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j»)�”}”j¾]”jÊá)�”}”jÍáj¨EsbŒc.drm_xe_mem_range_attr”†”asbjÀŒ%DRM_IOCTL_XE_VM_QUERY_MEM_RANGE_ATTRS”uh1hh³jÑáh´KhjðEubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MI hjíEh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj£Eh²hh³j»Eh´M•ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj.Fjçj.Fjè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hXÁ**Definition**:: struct drm_xe_mem_range_attr { __u64 extensions; __u64 start; __u64 end; struct { __u32 devmem_fd; __u32 migration_policy; } preferred_mem_loc; struct { __u32 val; __u32 reserved; } atomic; struct { __u32 val; __u32 reserved; } pat_index; __u64 reserved[2]; }; **Members** ``extensions`` Pointer to the first extension struct, if any ``start`` start of the memory range ``end`` end of the memory range ``preferred_mem_loc`` preferred memory location ``preferred_mem_loc.devmem_fd`` fd for preferred loc ``preferred_mem_loc.migration_policy`` Page migration policy ``atomic`` Atomic access policy ``atomic.val`` atomic attribute ``atomic.reserved`` Reserved ``pat_index`` Page attribute table index ``pat_index.val`` PAT index ``pat_index.reserved`` Reserved ``reserved`` Reserved”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj:Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj6FubhŒ:”…”�”}”(hj6Fh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MM hj2Fubj)�”}”(hX\struct drm_xe_mem_range_attr { __u64 extensions; __u64 start; __u64 end; struct { __u32 devmem_fd; __u32 migration_policy; } preferred_mem_loc; struct { __u32 val; __u32 reserved; } atomic; struct { __u32 val; __u32 reserved; } pat_index; __u64 reserved[2]; };”h]”hX\struct drm_xe_mem_range_attr { __u64 extensions; __u64 start; __u64 end; struct { __u32 devmem_fd; __u32 migration_policy; } preferred_mem_loc; struct { __u32 val; __u32 reserved; } atomic; struct { __u32 val; __u32 reserved; } pat_index; __u64 reserved[2]; };”…”�”}”hjSFsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MO hj2Fubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjdFh]”hŒMembers”…”�”}”(hjfFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjbFubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mb hj2Fubj§)�”}”(hhh]”(j¬)�”}”(hŒ=``extensions`` Pointer to the first extension struct, if any ”h]”(j²)�”}”(hŒ``extensions``”h]”jC)�”}”(hjƒFh]”hŒ extensions”…”�”}”(hj…Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj�Fubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MV hj}FubjÃ)�”}”(hhh]”hì)�”}”(hŒ-Pointer to the first extension struct, if any”h]”hŒ-Pointer to the first extension struct, if any”…”�”}”(hjœFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j˜Fh´MV hj™Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj}Fubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j˜Fh´MV hjzFubj¬)�”}”(hŒ$``start`` start of the memory range ”h]”(j²)�”}”(hŒ ``start``”h]”jC)�”}”(hj¼Fh]”hŒstart”…”�”}”(hj¾Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjºFubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MY hj¶FubjÃ)�”}”(hhh]”hì)�”}”(hŒstart of the memory range”h]”hŒstart of the memory range”…”�”}”(hjÕFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÑFh´MY hjÒFubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj¶Fubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÑFh´MY hjzFubj¬)�”}”(hŒ ``end`` end of the memory range ”h]”(j²)�”}”(hŒ``end``”h]”jC)�”}”(hjõFh]”hŒend”…”�”}”(hj÷Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjóFubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M\ hjïFubjÃ)�”}”(hhh]”hì)�”}”(hŒend of the memory range”h]”hŒend of the memory range”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j Gh´M\ hj Gubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjïFubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j Gh´M\ hjzFubj¬)�”}”(hŒ0``preferred_mem_loc`` preferred memory location ”h]”(j²)�”}”(hŒ``preferred_mem_loc``”h]”jC)�”}”(hj.Gh]”hŒpreferred_mem_loc”…”�”}”(hj0Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj,Gubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M_ hj(GubjÃ)�”}”(hhh]”hì)�”}”(hŒpreferred memory location”h]”hŒpreferred memory location”…”�”}”(hjGGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jCGh´M_ hjDGubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj(Gubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jCGh´M_ hjzFubj¬)�”}”(hŒ5``preferred_mem_loc.devmem_fd`` fd for preferred loc ”h]”(j²)�”}”(hŒ``preferred_mem_loc.devmem_fd``”h]”jC)�”}”(hjgGh]”hŒpreferred_mem_loc.devmem_fd”…”�”}”(hjiGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjeGubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Ma hjaGubjÃ)�”}”(hhh]”hì)�”}”(hŒfd for preferred loc”h]”hŒfd for preferred loc”…”�”}”(hj€Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j|Gh´Ma hj}Gubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjaGubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j|Gh´Ma hjzFubj¬)�”}”(hŒ=``preferred_mem_loc.migration_policy`` Page migration policy ”h]”(j²)�”}”(hŒ&``preferred_mem_loc.migration_policy``”h]”jC)�”}”(hj Gh]”hŒ"preferred_mem_loc.migration_policy”…”�”}”(hj¢Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjžGubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Md hjšGubjÃ)�”}”(hhh]”hì)�”}”(hŒPage migration policy”h]”hŒPage migration policy”…”�”}”(hj¹Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jµGh´Md hj¶Gubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjšGubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jµGh´Md hjzFubj¬)�”}”(hŒ ``atomic`` Atomic access policy ”h]”(j²)�”}”(hŒ ``atomic``”h]”jC)�”}”(hjÙGh]”hŒatomic”…”�”}”(hjÛGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj×Gubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mh hjÓGubjÃ)�”}”(hhh]”hì)�”}”(hŒAtomic access policy”h]”hŒAtomic access policy”…”�”}”(hjòGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jîGh´Mh hjïGubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÓGubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jîGh´Mh hjzFubj¬)�”}”(hŒ ``atomic.val`` atomic attribute ”h]”(j²)�”}”(hŒ``atomic.val``”h]”jC)�”}”(hjHh]”hŒ atomic.val”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjHubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mj hj HubjÃ)�”}”(hhh]”hì)�”}”(hŒatomic attribute”h]”hŒatomic attribute”…”�”}”(hj+Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j'Hh´Mj hj(Hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj Hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j'Hh´Mj hjzFubj¬)�”}”(hŒ``atomic.reserved`` Reserved ”h]”(j²)�”}”(hŒ``atomic.reserved``”h]”jC)�”}”(hjKHh]”hŒatomic.reserved”…”�”}”(hjMHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjIHubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mm hjEHubjÃ)�”}”(hhh]”hì)�”}”(hŒReserved”h]”hŒReserved”…”�”}”(hjdHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j`Hh´Mm hjaHubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjEHubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j`Hh´Mm hjzFubj¬)�”}”(hŒ)``pat_index`` Page attribute table index ”h]”(j²)�”}”(hŒ ``pat_index``”h]”jC)�”}”(hj„Hh]”hŒ pat_index”…”�”}”(hj†Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj‚Hubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mq hj~HubjÃ)�”}”(hhh]”hì)�”}”(hŒPage attribute table index”h]”hŒPage attribute table index”…”�”}”(hj�Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j™Hh´Mq hjšHubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj~Hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j™Hh´Mq hjzFubj¬)�”}”(hŒ``pat_index.val`` PAT index ”h]”(j²)�”}”(hŒ``pat_index.val``”h]”jC)�”}”(hj½Hh]”hŒ pat_index.val”…”�”}”(hj¿Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj»Hubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Ms hj·HubjÃ)�”}”(hhh]”hì)�”}”(hŒ PAT index”h]”hŒ PAT index”…”�”}”(hjÖHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÒHh´Ms hjÓHubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj·Hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÒHh´Ms hjzFubj¬)�”}”(hŒ ``pat_index.reserved`` Reserved ”h]”(j²)�”}”(hŒ``pat_index.reserved``”h]”jC)�”}”(hjöHh]”hŒpat_index.reserved”…”�”}”(hjøHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjôHubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mv hjðHubjÃ)�”}”(hhh]”hì)�”}”(hŒReserved”h]”hŒReserved”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j Ih´Mv hj Iubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjðHubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j Ih´Mv hjzFubj¬)�”}”(hŒ``reserved`` Reserved”h]”(j²)�”}”(hŒ ``reserved``”h]”jC)�”}”(hj/Ih]”hŒreserved”…”�”}”(hj1Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj-Iubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´My hj)IubjÃ)�”}”(hhh]”hì)�”}”(hŒReserved”h]”hŒReserved”…”�”}”(hjHIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mz hjEIubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj)Iubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jDIh´My hjzFubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj2Fubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj-¸h²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjrIh]”hŒ Description”…”�”}”(hjtIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjpIubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M} hj-¸h²hubhì)�”}”(hŒØThis structure is provided by userspace and filled by KMD in response to the DRM_IOCTL_XE_VM_QUERY_MEM_RANGE_ATTRS ioctl. It describes memory attributes of memory ranges within a user specified address range in a VM.”h]”hŒØThis structure is provided by userspace and filled by KMD in response to the DRM_IOCTL_XE_VM_QUERY_MEM_RANGE_ATTRS ioctl. It describes memory attributes of memory ranges within a user specified address range in a VM.”…”�”}”(hjˆIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MJ hj-¸h²hubhì)�”}”(hXThe structure includes information such as atomic access policy, page attribute table (PAT) index, and preferred memory location. Userspace allocates an array of these structures and passes a pointer to the ioctl to retrieve attributes for each memory range.”h]”hXThe structure includes information such as atomic access policy, page attribute table (PAT) index, and preferred memory location. Userspace allocates an array of these structures and passes a pointer to the ioctl to retrieve attributes for each memory range.”…”�”}”(hj—Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MN hj-¸h²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ)drm_xe_vm_query_mem_range_attr (C struct)”Œ c.drm_xe_vm_query_mem_range_attr”hNt”auh1jJhj-¸h²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_vm_query_mem_range_attr”h]”jg)�”}”(hŒ%struct drm_xe_vm_query_mem_range_attr”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj¿Ih²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj»Ih²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MV ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍIh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hj»Ih²hh³jÌIh´MV ubj�)�”}”(hŒdrm_xe_vm_query_mem_range_attr”h]”j–)�”}”(hj¹Ih]”hŒdrm_xe_vm_query_mem_range_attr”…”�”}”(hjßIh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjÛIubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj»Ih²hh³jÌIh´MV ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hj·Ih²hh³jÌIh´MV ubah}”(h]”j²Iah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jÌIh´MV hj´Ih²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ8Input of :c:type:`DRM_IOCTL_XE_VM_QUERY_MEM_RANGE_ATTRS`”h]”(hŒ Input of ”…”�”}”(hjJh²hh³Nh´Nubh)�”}”(hŒ/:c:type:`DRM_IOCTL_XE_VM_QUERY_MEM_RANGE_ATTRS`”h]”jC)�”}”(hj Jh]”hŒ%DRM_IOCTL_XE_VM_QUERY_MEM_RANGE_ATTRS”…”�”}”(hj Jh²hh³Nh´Nubah}”(h]”h ]”(j¦jàŒc-type”eh"]”h$]”h&]”uh1jBhj Jubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j²Œ refdomain”jàŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j¸j»)�”}”j¾]”jÊá)�”}”jÍáj¹IsbŒ c.drm_xe_vm_query_mem_range_attr”†”asbjÀŒ%DRM_IOCTL_XE_VM_QUERY_MEM_RANGE_ATTRS”uh1hh³jÑáh´KhjJubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M~ hjþIh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj´Ih²hh³jÌIh´MV ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj?Jjçj?Jjè‰jé‰jê‰uh1j[h²hhj-¸h³Nh´Nubjì)�”}”(hX·**Definition**:: struct drm_xe_vm_query_mem_range_attr { __u64 extensions; __u32 vm_id; __u32 num_mem_ranges; __u64 start; __u64 range; __u64 sizeof_mem_range_attr; __u64 vector_of_mem_attr; __u64 reserved[2]; }; **Members** ``extensions`` Pointer to the first extension struct, if any ``vm_id`` vm_id of the virtual range ``num_mem_ranges`` number of mem_ranges in range ``start`` start of the virtual address range ``range`` size of the virtual address range ``sizeof_mem_range_attr`` size of struct drm_xe_mem_range_attr ``vector_of_mem_attr`` userptr to array of struct drm_xe_mem_range_attr ``reserved`` Reserved”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjKJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjGJubhŒ:”…”�”}”(hjGJh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M‚ hjCJubj)�”}”(hŒãstruct drm_xe_vm_query_mem_range_attr { __u64 extensions; __u32 vm_id; __u32 num_mem_ranges; __u64 start; __u64 range; __u64 sizeof_mem_range_attr; __u64 vector_of_mem_attr; __u64 reserved[2]; };”h]”hŒãstruct drm_xe_vm_query_mem_range_attr { __u64 extensions; __u32 vm_id; __u32 num_mem_ranges; __u64 start; __u64 range; __u64 sizeof_mem_range_attr; __u64 vector_of_mem_attr; __u64 reserved[2]; };”…”�”}”hjdJsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M„ hjCJubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjuJh]”hŒMembers”…”�”}”(hjwJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjsJubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M� hjCJubj§)�”}”(hhh]”(j¬)�”}”(hŒ=``extensions`` Pointer to the first extension struct, if any ”h]”(j²)�”}”(hŒ``extensions``”h]”jC)�”}”(hj”Jh]”hŒ extensions”…”�”}”(hj–Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj’Jubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M´ hjŽJubjÃ)�”}”(hhh]”hì)�”}”(hŒ-Pointer to the first extension struct, if any”h]”hŒ-Pointer to the first extension struct, if any”…”�”}”(hj­Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j©Jh´M´ hjªJubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjŽJubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j©Jh´M´ hj‹Jubj¬)�”}”(hŒ%``vm_id`` vm_id of the virtual range ”h]”(j²)�”}”(hŒ ``vm_id``”h]”jC)�”}”(hjÍJh]”hŒvm_id”…”�”}”(hjÏJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjËJubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M· hjÇJubjÃ)�”}”(hhh]”hì)�”}”(hŒvm_id of the virtual range”h]”hŒvm_id of the virtual range”…”�”}”(hjæJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jâJh´M· hjãJubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÇJubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jâJh´M· hj‹Jubj¬)�”}”(hŒ1``num_mem_ranges`` number of mem_ranges in range ”h]”(j²)�”}”(hŒ``num_mem_ranges``”h]”jC)�”}”(hjKh]”hŒnum_mem_ranges”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjKubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mº hjKubjÃ)�”}”(hhh]”hì)�”}”(hŒnumber of mem_ranges in range”h]”hŒnumber of mem_ranges in range”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jKh´Mº hjKubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjKubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jKh´Mº hj‹Jubj¬)�”}”(hŒ-``start`` start of the virtual address range ”h]”(j²)�”}”(hŒ ``start``”h]”jC)�”}”(hj?Kh]”hŒstart”…”�”}”(hjAKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj=Kubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M½ hj9KubjÃ)�”}”(hhh]”hì)�”}”(hŒ"start of the virtual address range”h]”hŒ"start of the virtual address range”…”�”}”(hjXKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jTKh´M½ hjUKubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj9Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jTKh´M½ hj‹Jubj¬)�”}”(hŒ,``range`` size of the virtual address range ”h]”(j²)�”}”(hŒ ``range``”h]”jC)�”}”(hjxKh]”hŒrange”…”�”}”(hjzKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjvKubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÀ hjrKubjÃ)�”}”(hhh]”hì)�”}”(hŒ!size of the virtual address range”h]”hŒ!size of the virtual address range”…”�”}”(hj‘Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j�Kh´MÀ hjŽKubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjrKubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j�Kh´MÀ hj‹Jubj¬)�”}”(hŒ?``sizeof_mem_range_attr`` size of struct drm_xe_mem_range_attr ”h]”(j²)�”}”(hŒ``sizeof_mem_range_attr``”h]”jC)�”}”(hj±Kh]”hŒsizeof_mem_range_attr”…”�”}”(hj³Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj¯Kubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mà hj«KubjÃ)�”}”(hhh]”hì)�”}”(hŒ$size of struct drm_xe_mem_range_attr”h]”hŒ$size of struct drm_xe_mem_range_attr”…”�”}”(hjÊKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÆKh´Mà hjÇKubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj«Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÆKh´Mà hj‹Jubj¬)�”}”(hŒH``vector_of_mem_attr`` userptr to array of struct drm_xe_mem_range_attr ”h]”(j²)�”}”(hŒ``vector_of_mem_attr``”h]”jC)�”}”(hjêKh]”hŒvector_of_mem_attr”…”�”}”(hjìKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjèKubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÆ hjäKubjÃ)�”}”(hhh]”hì)�”}”(hŒ0userptr to array of struct drm_xe_mem_range_attr”h]”hŒ0userptr to array of struct drm_xe_mem_range_attr”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÿKh´MÆ hjLubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjäKubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÿKh´MÆ hj‹Jubj¬)�”}”(hŒ``reserved`` Reserved”h]”(j²)�”}”(hŒ ``reserved``”h]”jC)�”}”(hj#Lh]”hŒreserved”…”�”}”(hj%Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj!Lubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´MÈ hjLubjÃ)�”}”(hhh]”hì)�”}”(hŒReserved”h]”hŒReserved”…”�”}”(hjNh]”hŒ exec_queue_id”…”�”}”(hj@Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjUse command GET_ERROR_COUNTERS to list errors of specific node”h]”hì)�”}”(hj;Ph]”hŒ>Use command GET_ERROR_COUNTERS to list errors of specific node”…”�”}”(hj=Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´Mÿ hj9Pubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjPubhç)�”}”(hŒ@Query specific error values using either error-id or error-name ”h]”hì)�”}”(hŒ?Query specific error values using either error-id or error-name”h]”hŒ?Query specific error values using either error-id or error-name”…”�”}”(hjUPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M hjQPubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjPubeh}”(h]”h ]”h"]”h$]”h&]”jï5jð5jñ5hjò5jó5uh1jI5hjæOubj)�”}”(hŒ¨// Lookup tables for ID-to-name resolution static const char *nodes[] = DRM_XE_RAS_ERROR_SEVERITY_NAMES; static const char *errors[] = DRM_XE_RAS_ERROR_COMPONENT_NAMES;”h]”hŒ¨// Lookup tables for ID-to-name resolution static const char *nodes[] = DRM_XE_RAS_ERROR_SEVERITY_NAMES; static const char *errors[] = DRM_XE_RAS_ERROR_COMPONENT_NAMES;”…”�”}”hjpPsbah}”(h]”h ]”h"]”h$]”h&]”j­j®j¾‰j¿jÀjÁ}”uh1jh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M hjæOubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ"drm_xe_ras_error_severity (C enum)”Œc.drm_xe_ras_error_severity”hNt”auh1jJhjæOubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_ras_error_severity”h]”jg)�”}”(hŒenum drm_xe_ras_error_severity”h]”(jm)�”}”(hjîh]”hŒenum”…”�”}”(hj™Ph²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj•Ph²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§Ph²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hj•Ph²hh³j¦Ph´M ubj�)�”}”(hŒdrm_xe_ras_error_severity”h]”j–)�”}”(hj“Ph]”hŒdrm_xe_ras_error_severity”…”�”}”(hj¹Ph²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjµPubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj•Ph²hh³j¦Ph´M ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hj‘Ph²hh³j¦Ph´M ubah}”(h]”jŒPah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³j¦Ph´M hjŽPh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒDRM RAS error severity.”h]”hŒDRM RAS error severity.”…”�”}”(hjÛPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M hjØPh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjŽPh²hh³j¦Ph´M ubeh}”(h]”h ]”(jàŒenum”eh"]”h$]”h&]”jåjàjæjóPjçjóPjè‰jé‰jê‰uh1j[h²hhjæOubjì)�”}”(hŒ¬**Constants** ``DRM_XE_RAS_ERR_SEV_CORRECTABLE`` Correctable Error ``DRM_XE_RAS_ERR_SEV_UNCORRECTABLE`` Uncorrectable Error ``DRM_XE_RAS_ERR_SEV_MAX`` Max severity”h]”(hì)�”}”(hŒ **Constants**”h]”jŒ)�”}”(hjýPh]”hŒ Constants”…”�”}”(hjÿPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjûPubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M hj÷Pubj§)�”}”(hhh]”(j¬)�”}”(hŒ5``DRM_XE_RAS_ERR_SEV_CORRECTABLE`` Correctable Error ”h]”(j²)�”}”(hŒ"``DRM_XE_RAS_ERR_SEV_CORRECTABLE``”h]”jC)�”}”(hjQh]”hŒDRM_XE_RAS_ERR_SEV_CORRECTABLE”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjQubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M hjQubjÃ)�”}”(hhh]”hì)�”}”(hŒCorrectable Error”h]”hŒCorrectable Error”…”�”}”(hj5Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j1Qh´M hj2Qubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjQubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j1Qh´M hjQubj¬)�”}”(hŒ9``DRM_XE_RAS_ERR_SEV_UNCORRECTABLE`` Uncorrectable Error ”h]”(j²)�”}”(hŒ$``DRM_XE_RAS_ERR_SEV_UNCORRECTABLE``”h]”jC)�”}”(hjUQh]”hŒ DRM_XE_RAS_ERR_SEV_UNCORRECTABLE”…”�”}”(hjWQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjSQubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M hjOQubjÃ)�”}”(hhh]”hì)�”}”(hŒUncorrectable Error”h]”hŒUncorrectable Error”…”�”}”(hjnQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jjQh´M hjkQubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjOQubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jjQh´M hjQubj¬)�”}”(hŒ'``DRM_XE_RAS_ERR_SEV_MAX`` Max severity”h]”(j²)�”}”(hŒ``DRM_XE_RAS_ERR_SEV_MAX``”h]”jC)�”}”(hjŽQh]”hŒDRM_XE_RAS_ERR_SEV_MAX”…”�”}”(hj�Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjŒQubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M hjˆQubjÃ)�”}”(hhh]”hì)�”}”(hŒ Max severity”h]”hŒ Max severity”…”�”}”(hj§Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M hj¤Qubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjˆQubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j£Qh´M hjQubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj÷Pubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhjæOubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ#drm_xe_ras_error_component (C enum)”Œc.drm_xe_ras_error_component”hNt”auh1jJhjæOubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_xe_ras_error_component”h]”jg)�”}”(hŒenum drm_xe_ras_error_component”h]”(jm)�”}”(hjîh]”hŒenum”…”�”}”(hjèQh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjäQh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjöQh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjäQh²hh³jõQh´M ubj�)�”}”(hŒdrm_xe_ras_error_component”h]”j–)�”}”(hjâQh]”hŒdrm_xe_ras_error_component”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjRubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjäQh²hh³jõQh´M ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjàQh²hh³jõQh´M ubah}”(h]”jÛQah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jõQh´M hjÝQh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒDRM RAS error component.”h]”hŒDRM RAS error component.”…”�”}”(hj*Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M hj'Rh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÝQh²hh³jõQh´M ubeh}”(h]”h ]”(jàŒenum”eh"]”h$]”h&]”jåjàjæjBRjçjBRjè‰jé‰jê‰uh1j[h²hhjæOubjì)�”}”(hXW**Constants** ``DRM_XE_RAS_ERR_COMP_CORE_COMPUTE`` Core Compute Error ``DRM_XE_RAS_ERR_COMP_SOC_INTERNAL`` SoC Internal Error ``DRM_XE_RAS_ERR_COMP_DEVICE_MEMORY`` Device Memory Error ``DRM_XE_RAS_ERR_COMP_PCIE`` PCIe Subsystem Error ``DRM_XE_RAS_ERR_COMP_FABRIC`` Fabric Subsystem Error ``DRM_XE_RAS_ERR_COMP_MAX`` Max Error”h]”(hì)�”}”(hŒ **Constants**”h]”jŒ)�”}”(hjLRh]”hŒ Constants”…”�”}”(hjNRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjJRubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M hjFRubj§)�”}”(hhh]”(j¬)�”}”(hŒ8``DRM_XE_RAS_ERR_COMP_CORE_COMPUTE`` Core Compute Error ”h]”(j²)�”}”(hŒ$``DRM_XE_RAS_ERR_COMP_CORE_COMPUTE``”h]”jC)�”}”(hjkRh]”hŒ DRM_XE_RAS_ERR_COMP_CORE_COMPUTE”…”�”}”(hjmRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjiRubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M hjeRubjÃ)�”}”(hhh]”hì)�”}”(hŒCore Compute Error”h]”hŒCore Compute Error”…”�”}”(hj„Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j€Rh´M hj�Rubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjeRubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j€Rh´M hjbRubj¬)�”}”(hŒ8``DRM_XE_RAS_ERR_COMP_SOC_INTERNAL`` SoC Internal Error ”h]”(j²)�”}”(hŒ$``DRM_XE_RAS_ERR_COMP_SOC_INTERNAL``”h]”jC)�”}”(hj¤Rh]”hŒ DRM_XE_RAS_ERR_COMP_SOC_INTERNAL”…”�”}”(hj¦Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj¢Rubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M# hjžRubjÃ)�”}”(hhh]”hì)�”}”(hŒSoC Internal Error”h]”hŒSoC Internal Error”…”�”}”(hj½Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¹Rh´M# hjºRubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjžRubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j¹Rh´M# hjbRubj¬)�”}”(hŒ:``DRM_XE_RAS_ERR_COMP_DEVICE_MEMORY`` Device Memory Error ”h]”(j²)�”}”(hŒ%``DRM_XE_RAS_ERR_COMP_DEVICE_MEMORY``”h]”jC)�”}”(hjÝRh]”hŒ!DRM_XE_RAS_ERR_COMP_DEVICE_MEMORY”…”�”}”(hjßRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÛRubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M& hj×RubjÃ)�”}”(hhh]”hì)�”}”(hŒDevice Memory Error”h]”hŒDevice Memory Error”…”�”}”(hjöRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jòRh´M& hjóRubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj×Rubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jòRh´M& hjbRubj¬)�”}”(hŒ2``DRM_XE_RAS_ERR_COMP_PCIE`` PCIe Subsystem Error ”h]”(j²)�”}”(hŒ``DRM_XE_RAS_ERR_COMP_PCIE``”h]”jC)�”}”(hjSh]”hŒDRM_XE_RAS_ERR_COMP_PCIE”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjSubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M) hjSubjÃ)�”}”(hhh]”hì)�”}”(hŒPCIe Subsystem Error”h]”hŒPCIe Subsystem Error”…”�”}”(hj/Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j+Sh´M) hj,Subah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjSubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j+Sh´M) hjbRubj¬)�”}”(hŒ6``DRM_XE_RAS_ERR_COMP_FABRIC`` Fabric Subsystem Error ”h]”(j²)�”}”(hŒ``DRM_XE_RAS_ERR_COMP_FABRIC``”h]”jC)�”}”(hjOSh]”hŒDRM_XE_RAS_ERR_COMP_FABRIC”…”�”}”(hjQSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjMSubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M, hjISubjÃ)�”}”(hhh]”hì)�”}”(hŒFabric Subsystem Error”h]”hŒFabric Subsystem Error”…”�”}”(hjhSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jdSh´M, hjeSubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjISubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jdSh´M, hjbRubj¬)�”}”(hŒ%``DRM_XE_RAS_ERR_COMP_MAX`` Max Error”h]”(j²)�”}”(hŒ``DRM_XE_RAS_ERR_COMP_MAX``”h]”jC)�”}”(hjˆSh]”hŒDRM_XE_RAS_ERR_COMP_MAX”…”�”}”(hjŠSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj†Subah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M. hj‚SubjÃ)�”}”(hhh]”hì)�”}”(hŒ Max Error”h]”hŒ Max Error”…”�”}”(hj¡Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:31: ./include/uapi/drm/xe_drm.h”h´M/ hjžSubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj‚Subeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j�Sh´M. hjbRubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjFRubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhjæOubeh}”(h]”jah ]”h"]”Œuser interface”ah$]”h&]”uh1hµhj-¸h²hh³Nh´Nubeh}”(h]”j°ah ]”h"]”Œ drm/xe uapi”ah$]”h&]”uh1hµhh·h²hh³hÌh´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒdrm/asahi uAPI”h]”hŒdrm/asahi uAPI”…”�”}”(hjÚSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÊj;uh1hºhj×Sh²hh³hÌh´K"ubj{)�”}”(hŒ#.. _Introduction to the Asahi UAPI:”h]”h}”(h]”h ]”h"]”h$]”h&]”hÊŒintroduction-to-the-asahi-uapi”uh1jzh´Khj×Sh²hh³Nubhì)�”}”(hŒ"**Introduction to the Asahi UAPI**”h]”jŒ)�”}”(hjõSh]”hŒIntroduction to the Asahi UAPI”…”�”}”(hj÷Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjóSubah}”(h]”jòSah ]”h"]”Œintroduction to the asahi uapi”ah$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Khj×Sh²hj¢}”jTjèSsj¤}”jòSjèSsubhì)�”}”(hŒ.This documentation describes the Asahi IOCTLs.”h]”hŒ.This documentation describes the Asahi IOCTLs.”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Khj×Sh²hubhì)�”}”(hŒZJust a few generic rules about the data passed to the Asahi IOCTLs (cribbed from Panthor):”h]”hŒZJust a few generic rules about the data passed to the Asahi IOCTLs (cribbed from Panthor):”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Khj×Sh²hubhâ)�”}”(hhh]”(hç)�”}”(hŒsStructures must be aligned on 64-bit/8-byte. If the object is not naturally aligned, a padding field must be added.”h]”hì)�”}”(hŒsStructures must be aligned on 64-bit/8-byte. If the object is not naturally aligned, a padding field must be added.”h]”hŒsStructures must be aligned on 64-bit/8-byte. If the object is not naturally aligned, a padding field must be added.”…”�”}”(hj3Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Khj/Tubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj,Tubhç)�”}”(hŒXFields must be explicitly aligned to their natural type alignment with pad[0..N] fields.”h]”hì)�”}”(hŒXFields must be explicitly aligned to their natural type alignment with pad[0..N] fields.”h]”hŒXFields must be explicitly aligned to their natural type alignment with pad[0..N] fields.”…”�”}”(hjLTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´KhjHTubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj,Tubhç)�”}”(hŒNAll padding fields will be checked by the driver to make sure they are zeroed.”h]”hì)�”}”(hŒNAll padding fields will be checked by the driver to make sure they are zeroed.”h]”hŒNAll padding fields will be checked by the driver to make sure they are zeroed.”…”�”}”(hjeTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´KhjaTubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj,Tubhç)�”}”(hŒ-Flags can be added, but not removed/replaced.”h]”hì)�”}”(hj|Th]”hŒ-Flags can be added, but not removed/replaced.”…”�”}”(hj~Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´KhjzTubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj,Tubhç)�”}”(hX9New fields can be added to the main structures (the structures directly passed to the ioctl). Those fields can be added at the end of the structure, or replace existing padding fields. Any new field being added must preserve the behavior that existed before those fields were added when a value of zero is passed.”h]”hì)�”}”(hX9New fields can be added to the main structures (the structures directly passed to the ioctl). Those fields can be added at the end of the structure, or replace existing padding fields. Any new field being added must preserve the behavior that existed before those fields were added when a value of zero is passed.”h]”hX9New fields can be added to the main structures (the structures directly passed to the ioctl). Those fields can be added at the end of the structure, or replace existing padding fields. Any new field being added must preserve the behavior that existed before those fields were added when a value of zero is passed.”…”�”}”(hj–Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Khj’Tubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj,Tubhç)�”}”(hŒÌNew fields can be added to indirect objects (objects pointed by the main structure), iff those objects are passed a size to reflect the size known by the userspace driver (see drm_asahi_cmd_header::size).”h]”hì)�”}”(hŒÌNew fields can be added to indirect objects (objects pointed by the main structure), iff those objects are passed a size to reflect the size known by the userspace driver (see drm_asahi_cmd_header::size).”h]”hŒÌNew fields can be added to indirect objects (objects pointed by the main structure), iff those objects are passed a size to reflect the size known by the userspace driver (see drm_asahi_cmd_header::size).”…”�”}”(hj¯Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´K"hj«Tubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj,Tubhç)�”}”(hŒ‹If the kernel driver is too old to know some fields, those will be ignored if zero, and otherwise rejected (and so will be zero on output).”h]”hì)�”}”(hŒ‹If the kernel driver is too old to know some fields, those will be ignored if zero, and otherwise rejected (and so will be zero on output).”h]”hŒ‹If the kernel driver is too old to know some fields, those will be ignored if zero, and otherwise rejected (and so will be zero on output).”…”�”}”(hjÈTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´K&hjÄTubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj,Tubhç)�”}”(hŒ~If userspace is too old to know some fields, those will be zeroed (input) before the structure is parsed by the kernel driver.”h]”hì)�”}”(hŒ~If userspace is too old to know some fields, those will be zeroed (input) before the structure is parsed by the kernel driver.”h]”hŒ~If userspace is too old to know some fields, those will be zeroed (input) before the structure is parsed by the kernel driver.”…”�”}”(hjáTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´K(hjÝTubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj,Tubhç)�”}”(hŒŒEach new flag/field addition must come with a driver version update so the userspace driver doesn't have to guess which flags are supported.”h]”hì)�”}”(hŒŒEach new flag/field addition must come with a driver version update so the userspace driver doesn't have to guess which flags are supported.”h]”hŒŽEach new flag/field addition must come with a driver version update so the userspace driver doesn’t have to guess which flags are supported.”…”�”}”(hjúTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´K*hjöTubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj,Tubhç)�”}”(hŒ`Structures should not contain unions, as this would defeat the extensibility of such structures.”h]”hì)�”}”(hŒ`Structures should not contain unions, as this would defeat the extensibility of such structures.”h]”hŒ`Structures should not contain unions, as this would defeat the extensibility of such structures.”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´K,hjUubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj,Tubhç)�”}”(hŒrIOCTLs can't be removed or replaced. New IOCTL IDs should be placed at the end of the drm_asahi_ioctl_id enum. ”h]”hì)�”}”(hŒnIOCTLs can't be removed or replaced. New IOCTL IDs should be placed at the end of the drm_asahi_ioctl_id enum.”•4h]”hŒpIOCTLs can’t be removed or replaced. New IOCTL IDs should be placed at the end of the drm_asahi_ioctl_id enum.”…”�”}”(hj,Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´K.hj(Uubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj,Tubeh}”(h]”h ]”h"]”h$]”h&]”jÀ jÁ uh1háh³jATh´Khj×Sh²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_asahi_ioctl_id (C enum)”Œc.drm_asahi_ioctl_id”hNt”auh1jJhj×Sh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_asahi_ioctl_id”h]”jg)�”}”(hŒenum drm_asahi_ioctl_id”h]”(jm)�”}”(hjîh]”hŒenum”…”�”}”(hj`Uh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj\Uh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´K4ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnUh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hj\Uh²hh³jmUh´K4ubj�)�”}”(hŒdrm_asahi_ioctl_id”h]”j–)�”}”(hjZUh]”hŒdrm_asahi_ioctl_id”…”�”}”(hj€Uh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj|Uubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj\Uh²hh³jmUh´K4ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjXUh²hh³jmUh´K4ubah}”(h]”jSUah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jmUh´K4hjUUh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ IOCTL IDs”h]”hŒ IOCTL IDs”…”�”}”(hj¢Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´K5hjŸUh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjUUh²hh³jmUh´K4ubeh}”(h]”h ]”(jàŒenum”eh"]”h$]”h&]”jåjàjæjºUjçjºUjè‰jé‰jê‰uh1j[h²hhj×Sh³Nh´Nubjì)�”}”(hX€**Constants** ``DRM_ASAHI_GET_PARAMS`` Query device properties. ``DRM_ASAHI_GET_TIME`` Query device time. ``DRM_ASAHI_VM_CREATE`` Create a GPU VM address space. ``DRM_ASAHI_VM_DESTROY`` Destroy a VM. ``DRM_ASAHI_VM_BIND`` Bind/unbind memory to a VM. ``DRM_ASAHI_GEM_CREATE`` Create a buffer object. ``DRM_ASAHI_GEM_MMAP_OFFSET`` Get offset to pass to mmap() to map a given GEM handle. ``DRM_ASAHI_GEM_BIND_OBJECT`` Bind memory as a special object ``DRM_ASAHI_QUEUE_CREATE`` Create a scheduling queue. ``DRM_ASAHI_QUEUE_DESTROY`` Destroy a scheduling queue. ``DRM_ASAHI_SUBMIT`` Submit commands to a queue.”h]”(hì)�”}”(hŒ **Constants**”h]”jŒ)�”}”(hjÄUh]”hŒ Constants”…”�”}”(hjÆUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÂUubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´K9hj¾Uubj§)�”}”(hhh]”(j¬)�”}”(hŒ2``DRM_ASAHI_GET_PARAMS`` Query device properties. ”h]”(j²)�”}”(hŒ``DRM_ASAHI_GET_PARAMS``”h]”jC)�”}”(hjãUh]”hŒDRM_ASAHI_GET_PARAMS”…”�”}”(hjåUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjáUubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´K``DRM_ASAHI_GEM_BIND_OBJECT`` Bind memory as a special object ”h]”(j²)�”}”(hŒ``DRM_ASAHI_GEM_BIND_OBJECT``”h]”jC)�”}”(hjsWh]”hŒDRM_ASAHI_GEM_BIND_OBJECT”…”�”}”(hjuWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjqWubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´KRhjmWubjÃ)�”}”(hhh]”hì)�”}”(hŒBind memory as a special object”h]”hŒBind memory as a special object”…”�”}”(hjŒWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jˆWh´KRhj‰Wubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjmWubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jˆWh´KRhjÚUubj¬)�”}”(hŒ6``DRM_ASAHI_QUEUE_CREATE`` Create a scheduling queue. ”h]”(j²)�”}”(hŒ``DRM_ASAHI_QUEUE_CREATE``”h]”jC)�”}”(hj¬Wh]”hŒDRM_ASAHI_QUEUE_CREATE”…”�”}”(hj®Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjªWubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´KUhj¦WubjÃ)�”}”(hhh]”hì)�”}”(hŒCreate a scheduling queue.”h]”hŒCreate a scheduling queue.”…”�”}”(hjÅWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÁWh´KUhjÂWubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj¦Wubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÁWh´KUhjÚUubj¬)�”}”(hŒ8``DRM_ASAHI_QUEUE_DESTROY`` Destroy a scheduling queue. ”h]”(j²)�”}”(hŒ``DRM_ASAHI_QUEUE_DESTROY``”h]”jC)�”}”(hjåWh]”hŒDRM_ASAHI_QUEUE_DESTROY”…”�”}”(hjçWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjãWubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´KXhjßWubjÃ)�”}”(hhh]”hì)�”}”(hŒDestroy a scheduling queue.”h]”hŒDestroy a scheduling queue.”…”�”}”(hjþWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³júWh´KXhjûWubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjßWubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³júWh´KXhjÚUubj¬)�”}”(hŒ0``DRM_ASAHI_SUBMIT`` Submit commands to a queue.”h]”(j²)�”}”(hŒ``DRM_ASAHI_SUBMIT``”h]”jC)�”}”(hjXh]”hŒDRM_ASAHI_SUBMIT”…”�”}”(hj Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjXubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´KZhjXubjÃ)�”}”(hhh]”hì)�”}”(hŒSubmit commands to a queue.”h]”hŒSubmit commands to a queue.”…”�”}”(hj7Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´K[hj4Xubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjXubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j3Xh´KZhjÚUubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj¾Uubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj×Sh²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjaXh]”hŒ Description”…”�”}”(hjcXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj_Xubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´K]hj×Sh²hubhì)�”}”(hŒMPlace new ioctls at the end, don't re-order, don't replace or remove entries.”h]”hŒQPlace new ioctls at the end, don’t re-order, don’t replace or remove entries.”…”�”}”(hjwXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´K6hj×Sh²hubhì)�”}”(hŒ]These IDs are not meant to be used directly. Use the DRM_IOCTL_ASAHI_xxx definitions instead.”h]”hŒ]These IDs are not meant to be used directly. Use the DRM_IOCTL_ASAHI_xxx definitions instead.”…”�”}”(hj†Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´K8hj×Sh²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ"drm_asahi_params_global (C struct)”Œc.drm_asahi_params_global”hNt”auh1jJhj×Sh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_asahi_params_global”h]”jg)�”}”(hŒstruct drm_asahi_params_global”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj®Xh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjªXh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´K>ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼Xh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjªXh²hh³j»Xh´K>ubj�)�”}”(hŒdrm_asahi_params_global”h]”j–)�”}”(hj¨Xh]”hŒdrm_asahi_params_global”…”�”}”(hjÎXh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjÊXubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjªXh²hh³j»Xh´K>ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hj¦Xh²hh³j»Xh´K>ubah}”(h]”j¡Xah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³j»Xh´K>hj£Xh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒGlobal parameters.”h]”hŒGlobal parameters.”…”�”}”(hjðXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´KehjíXh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj£Xh²hh³j»Xh´K>ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjYjçjYjè‰jé‰jê‰uh1j[h²hhj×Sh³Nh´Nubjì)�”}”(hXƒ **Definition**:: struct drm_asahi_params_global { __u64 features; __u32 gpu_generation; __u32 gpu_variant; __u32 gpu_revision; __u32 chip_id; __u32 num_dies; __u32 num_clusters_total; __u32 num_cores_per_cluster; __u32 max_frequency_khz; __u64 core_masks[DRM_ASAHI_MAX_CLUSTERS]; __u64 vm_start; __u64 vm_end; __u64 vm_kernel_min_size; __u32 max_commands_per_submission; __u32 max_attachments; __u64 command_timestamp_frequency_hz; }; **Members** ``features`` Feature bits from drm_asahi_feature ``gpu_generation`` GPU generation, e.g. 13 for G13G ``gpu_variant`` GPU variant as a character, e.g. 'C' for G13C ``gpu_revision`` GPU revision in BCD, e.g. 0x00 for 'A0' or 0x21 for 'C1' ``chip_id`` Chip ID in BCD, e.g. 0x8103 for T8103 ``num_dies`` Number of dies in the SoC ``num_clusters_total`` Number of GPU clusters (across all dies) ``num_cores_per_cluster`` Number of logical cores per cluster (including inactive/nonexistent) ``max_frequency_khz`` Maximum GPU core clock frequency ``core_masks`` Bitmask of present/enabled cores per cluster ``vm_start`` VM range start VMA. Together with **vm_end**, this defines the window of valid GPU VAs. Userspace is expected to subdivide VAs out of this window. This window contains all virtual addresses that userspace needs to know about. There may be kernel-internal GPU VAs outside this range, but that detail is not relevant here. ``vm_end`` VM range end VMA ``vm_kernel_min_size`` Minimum kernel VMA window size. When creating a VM, userspace is required to carve out a section of virtual addresses (within the range given by **vm_start** and **vm_end**). The kernel will allocate various internal structures within the specified VA range. Allowing userspace to choose the VA range for the kernel, rather than the kernel reserving VAs and requiring userspace to cope, can assist in implementing SVM. ``max_commands_per_submission`` Maximum number of supported commands per submission. This mirrors firmware limits. Userspace must split up larger command buffers, which may require inserting additional synchronization. ``max_attachments`` Maximum number of drm_asahi_attachment's per command ``command_timestamp_frequency_hz`` Timebase frequency for timestamps written during command execution, specified via drm_asahi_timestamp structures. As this rate is controlled by the firmware, it is a queryable parameter. Userspace must divide by this frequency to convert timestamps to seconds, rather than hardcoding a particular firmware's rate.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjYubhŒ:”…”�”}”(hjYh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Kihj Yubj)�”}”(hXástruct drm_asahi_params_global { __u64 features; __u32 gpu_generation; __u32 gpu_variant; __u32 gpu_revision; __u32 chip_id; __u32 num_dies; __u32 num_clusters_total; __u32 num_cores_per_cluster; __u32 max_frequency_khz; __u64 core_masks[DRM_ASAHI_MAX_CLUSTERS]; __u64 vm_start; __u64 vm_end; __u64 vm_kernel_min_size; __u32 max_commands_per_submission; __u32 max_attachments; __u64 command_timestamp_frequency_hz; };”h]”hXástruct drm_asahi_params_global { __u64 features; __u32 gpu_generation; __u32 gpu_variant; __u32 gpu_revision; __u32 chip_id; __u32 num_dies; __u32 num_clusters_total; __u32 num_cores_per_cluster; __u32 max_frequency_khz; __u64 core_masks[DRM_ASAHI_MAX_CLUSTERS]; __u64 vm_start; __u64 vm_end; __u64 vm_kernel_min_size; __u32 max_commands_per_submission; __u32 max_attachments; __u64 command_timestamp_frequency_hz; };”…”�”}”hj-Ysbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Kkhj Yubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj>Yh]”hŒMembers”…”�”}”(hj@Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj``gpu_variant`` GPU variant as a character, e.g. 'C' for G13C ”h]”(j²)�”}”(hŒ``gpu_variant``”h]”jC)�”}”(hjÏYh]”hŒ gpu_variant”…”�”}”(hjÑYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÍYubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´KqhjÉYubjÃ)�”}”(hhh]”hì)�”}”(hŒ-GPU variant as a character, e.g. 'C' for G13C”h]”hŒ1GPU variant as a character, e.g. ‘C’ for G13C”…”�”}”(hjèYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jäYh´KqhjåYubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÉYubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jäYh´KqhjTYubj¬)�”}”(hŒJ``gpu_revision`` GPU revision in BCD, e.g. 0x00 for 'A0' or 0x21 for 'C1' ”h]”(j²)�”}”(hŒ``gpu_revision``”h]”jC)�”}”(hjZh]”hŒ gpu_revision”…”�”}”(hj Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjZubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´KvhjZubjÃ)�”}”(hhh]”hì)�”}”(hŒ8GPU revision in BCD, e.g. 0x00 for 'A0' or 0x21 for 'C1'”h]”hŒ@GPU revision in BCD, e.g. 0x00 for ‘A0’ or 0x21 for ‘C1’”…”�”}”(hj!Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´KuhjZubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjZubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jZh´KvhjTYubj¬)�”}”(hŒ2``chip_id`` Chip ID in BCD, e.g. 0x8103 for T8103 ”h]”(j²)�”}”(hŒ ``chip_id``”h]”jC)�”}”(hjBZh]”hŒchip_id”…”�”}”(hjDZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj@Zubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Kzhj_sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Káhj_ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjO_h]”hŒMembers”…”�”}”(hjQ_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjM_ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Kèhj_ubj§)�”}”(hhh]”(j¬)�”}”(hŒ/``param_group`` Parameter group to fetch (MBZ) ”h]”(j²)�”}”(hŒ``param_group``”h]”jC)�”}”(hjn_h]”hŒ param_group”…”�”}”(hjp_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjl_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Kßhjh_ubjÃ)�”}”(hhh]”hì)�”}”(hŒParameter group to fetch (MBZ)”h]”hŒParameter group to fetch (MBZ)”…”�”}”(hj‡_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jƒ_h´Kßhj„_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjh_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jƒ_h´Kßhje_ubj¬)�”}”(hŒ ``pad`` MBZ ”h]”(j²)�”}”(hŒ``pad``”h]”jC)�”}”(hj§_h]”hŒpad”…”�”}”(hj©_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj¥_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Kâhj¡_ubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hjÀ_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¼_h´Kâhj½_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj¡_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j¼_h´Kâhje_ubj¬)�”}”(hŒ3``pointer`` User pointer to write parameter struct ”h]”(j²)�”}”(hŒ ``pointer``”h]”jC)�”}”(hjà_h]”hŒpointer”…”�”}”(hjâ_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÞ_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´KåhjÚ_ubjÃ)�”}”(hhh]”hì)�”}”(hŒ&User pointer to write parameter struct”h]”hŒ&User pointer to write parameter struct”…”�”}”(hjù_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jõ_h´Kåhjö_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÚ_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jõ_h´Kåhje_ubj¬)�”}”(hŒÍ``size`` Size of the user buffer. In case of older userspace, this may be less than sizeof(struct drm_asahi_params_global). The kernel will not write past the length specified here, allowing extensibility.”h]”(j²)�”}”(hŒ``size``”h]”jC)�”}”(hj`h]”hŒsize”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Kêhj`ubjÃ)�”}”(hhh]”hì)�”}”(hŒÄSize of the user buffer. In case of older userspace, this may be less than sizeof(struct drm_asahi_params_global). The kernel will not write past the length specified here, allowing extensibility.”h]”hŒÄSize of the user buffer. In case of older userspace, this may be less than sizeof(struct drm_asahi_params_global). The kernel will not write past the length specified here, allowing extensibility.”…”�”}”(hj2`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Kéhj/`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j.`h´Kêhje_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj_ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj×Sh²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_asahi_vm_create (C struct)”Œc.drm_asahi_vm_create”hNt”auh1jJhj×Sh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_asahi_vm_create”h]”jg)�”}”(hŒstruct drm_asahi_vm_create”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjs`h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjo`h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Kñubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�`h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjo`h²hh³j€`h´Kñubj�)�”}”(hŒdrm_asahi_vm_create”h]”j–)�”}”(hjm`h]”hŒdrm_asahi_vm_create”…”�”}”(hj“`h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj�`ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjo`h²hh³j€`h´Kñubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjk`h²hh³j€`h´Kñubah}”(h]”jf`ah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³j€`h´Kñhjh`h²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ-Arguments passed to DRM_IOCTL_ASAHI_VM_CREATE”h]”hŒ-Arguments passed to DRM_IOCTL_ASAHI_VM_CREATE”…”�”}”(hjµ`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Kðhj²`h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjh`h²hh³j€`h´Kñubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjÍ`jçjÍ`jè‰jé‰jê‰uh1j[h²hhj×Sh³Nh´Nubjì)�”}”(hX**Definition**:: struct drm_asahi_vm_create { __u64 kernel_start; __u64 kernel_end; __u32 vm_id; __u32 pad; }; **Members** ``kernel_start`` Start of the kernel-reserved address range. See drm_asahi_params_global::vm_kernel_min_size. Both **kernel_start** and **kernel_end** must be within the range of valid VAs given by drm_asahi_params_global::vm_start and drm_asahi_params_global::vm_end. The size of the kernel range (**kernel_end** - **kernel_start**) must be at least drm_asahi_params_global::vm_kernel_min_size. Userspace must not bind any memory on this VM into this reserved range, it is for kernel use only. ``kernel_end`` End of the kernel-reserved address range. See **kernel_start**. ``vm_id`` Returned VM ID ``pad`` MBZ”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjÙ`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÕ`ubhŒ:”…”�”}”(hjÕ`h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´KôhjÑ`ubj)�”}”(hŒmstruct drm_asahi_vm_create { __u64 kernel_start; __u64 kernel_end; __u32 vm_id; __u32 pad; };”h]”hŒmstruct drm_asahi_vm_create { __u64 kernel_start; __u64 kernel_end; __u32 vm_id; __u32 pad; };”…”�”}”hjò`sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´KöhjÑ`ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjah]”hŒMembers”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjaubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´KýhjÑ`ubj§)�”}”(hhh]”(j¬)�”}”(hXñ``kernel_start`` Start of the kernel-reserved address range. See drm_asahi_params_global::vm_kernel_min_size. Both **kernel_start** and **kernel_end** must be within the range of valid VAs given by drm_asahi_params_global::vm_start and drm_asahi_params_global::vm_end. The size of the kernel range (**kernel_end** - **kernel_start**) must be at least drm_asahi_params_global::vm_kernel_min_size. Userspace must not bind any memory on this VM into this reserved range, it is for kernel use only. ”h]”(j²)�”}”(hŒ``kernel_start``”h]”jC)�”}”(hj"ah]”hŒ kernel_start”…”�”}”(hj$ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj aubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´KÿhjaubjÃ)�”}”(hhh]”(hì)�”}”(hŒ\Start of the kernel-reserved address range. See drm_asahi_params_global::vm_kernel_min_size.”h]”hŒ\Start of the kernel-reserved address range. See drm_asahi_params_global::vm_kernel_min_size.”…”�”}”(hj;ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Kõhj8aubhì)�”}”(hXBoth **kernel_start** and **kernel_end** must be within the range of valid VAs given by drm_asahi_params_global::vm_start and drm_asahi_params_global::vm_end. The size of the kernel range (**kernel_end** - **kernel_start**) must be at least drm_asahi_params_global::vm_kernel_min_size.”h]”(hŒBoth ”…”�”}”(hjJah²hh³Nh´NubjŒ)�”}”(hŒ**kernel_start**”h]”hŒ kernel_start”…”�”}”(hjRah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjJaubhŒ and ”…”�”}”(hjJah²hh³Nh´NubjŒ)�”}”(hŒ**kernel_end**”h]”hŒ kernel_end”…”�”}”(hjdah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjJaubhŒ• must be within the range of valid VAs given by drm_asahi_params_global::vm_start and drm_asahi_params_global::vm_end. The size of the kernel range (”…”�”}”(hjJah²hh³Nh´NubjŒ)�”}”(hŒ**kernel_end**”h]”hŒ kernel_end”…”�”}”(hjvah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjJaubhŒ - ”…”�”}”(hjJah²hh³Nh´NubjŒ)�”}”(hŒ**kernel_start**”h]”hŒ kernel_start”…”�”}”(hjˆah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjJaubhŒ?) must be at least drm_asahi_params_global::vm_kernel_min_size.”…”�”}”(hjJah²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Køhj8aubhì)�”}”(hŒbUserspace must not bind any memory on this VM into this reserved range, it is for kernel use only.”h]”hŒbUserspace must not bind any memory on this VM into this reserved range, it is for kernel use only.”…”�”}”(hj¡ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Kþhj8aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjaubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j7ah´Kÿhjaubj¬)�”}”(hŒO``kernel_end`` End of the kernel-reserved address range. See **kernel_start**. ”h]”(j²)�”}”(hŒ``kernel_end``”h]”jC)�”}”(hjÂah]”hŒ kernel_end”…”�”}”(hjÄah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÀaubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mhj¼aubjÃ)�”}”(hhh]”hì)�”}”(hŒ?End of the kernel-reserved address range. See **kernel_start**.”h]”(hŒ.End of the kernel-reserved address range. See ”…”�”}”(hjÛah²hh³Nh´NubjŒ)�”}”(hŒ**kernel_start**”h]”hŒ kernel_start”…”�”}”(hjãah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÛaubhŒ.”…”�”}”(hjÛah²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MhjØaubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj¼aubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j×ah´Mhjaubj¬)�”}”(hŒ``vm_id`` Returned VM ID ”h]”(j²)�”}”(hŒ ``vm_id``”h]”jC)�”}”(hjbh]”hŒvm_id”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj bubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M hjbubjÃ)�”}”(hhh]”hì)�”}”(hŒReturned VM ID”h]”hŒReturned VM ID”…”�”}”(hj'bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j#bh´M hj$bubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjbubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j#bh´M hjaubj¬)�”}”(hŒ ``pad`` MBZ”h]”(j²)�”}”(hŒ``pad``”h]”jC)�”}”(hjGbh]”hŒpad”…”�”}”(hjIbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjEbubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M hjAbubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hj`bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M hj]bubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjAbubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j\bh´M hjaubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjÑ`ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj×Sh²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_asahi_vm_destroy (C struct)”Œc.drm_asahi_vm_destroy”hNt”auh1jJhj×Sh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_asahi_vm_destroy”h]”jg)�”}”(hŒstruct drm_asahi_vm_destroy”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj¡bh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj�bh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯bh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hj�bh²hh³j®bh´Mubj�)�”}”(hŒdrm_asahi_vm_destroy”h]”j–)�”}”(hj›bh]”hŒdrm_asahi_vm_destroy”…”�”}”(hjÁbh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj½bubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj�bh²hh³j®bh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hj™bh²hh³j®bh´Mubah}”(h]”j”bah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³j®bh´Mhj–bh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ.Arguments passed to DRM_IOCTL_ASAHI_VM_DESTROY”h]”hŒ.Arguments passed to DRM_IOCTL_ASAHI_VM_DESTROY”…”�”}”(hjãbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mhjàbh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj–bh²hh³j®bh´Mubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjûbjçjûbjè‰jé‰jê‰uh1j[h²hhj×Sh³Nh´Nubjì)�”}”(hŒ™**Definition**:: struct drm_asahi_vm_destroy { __u32 vm_id; __u32 pad; }; **Members** ``vm_id`` VM ID to be destroyed ``pad`` MBZ”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjcubhŒ:”…”�”}”(hjch²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mhjÿbubj)�”}”(hŒ@struct drm_asahi_vm_destroy { __u32 vm_id; __u32 pad; };”h]”hŒ@struct drm_asahi_vm_destroy { __u32 vm_id; __u32 pad; };”…”�”}”hj csbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mhjÿbubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj1ch]”hŒMembers”…”�”}”(hj3ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj/cubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mhjÿbubj§)�”}”(hhh]”(j¬)�”}”(hŒ ``vm_id`` VM ID to be destroyed ”h]”(j²)�”}”(hŒ ``vm_id``”h]”jC)�”}”(hjPch]”hŒvm_id”…”�”}”(hjRch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjNcubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MhjJcubjÃ)�”}”(hhh]”hì)�”}”(hŒVM ID to be destroyed”h]”hŒVM ID to be destroyed”…”�”}”(hjich²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jech´Mhjfcubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjJcubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jech´MhjGcubj¬)�”}”(hŒ ``pad`` MBZ”h]”(j²)�”}”(hŒ``pad``”h]”jC)�”}”(hj‰ch]”hŒpad”…”�”}”(hj‹ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj‡cubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MhjƒcubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hj¢ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MhjŸcubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjƒcubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jžch´MhjGcubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjÿbubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj×Sh²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_asahi_gem_flags (C enum)”Œc.drm_asahi_gem_flags”hNt”auh1jJhj×Sh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_asahi_gem_flags”h]”jg)�”}”(hŒenum drm_asahi_gem_flags”h]”(jm)�”}”(hjîh]”hŒenum”…”�”}”(hjãch²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjßch²hh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñch²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjßch²hh³jðch´Mubj�)�”}”(hŒdrm_asahi_gem_flags”h]”j–)�”}”(hjÝch]”hŒdrm_asahi_gem_flags”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjÿcubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjßch²hh³jðch´Mubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjÛch²hh³jðch´Mubah}”(h]”jÖcah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jðch´MhjØch²hubjÄ)�”}”(hhh]”hì)�”}”(hŒFlags for GEM creation”h]”hŒFlags for GEM creation”…”�”}”(hj%dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mhj"dh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjØch²hh³jðch´Mubeh}”(h]”h ]”(jàŒenum”eh"]”h$]”h&]”jåjàjæj=djçj=djè‰jé‰jê‰uh1j[h²hhj×Sh³Nh´Nubjì)�”}”(hŒë**Constants** ``DRM_ASAHI_GEM_WRITEBACK`` BO should be CPU-mapped as writeback. Map as writeback instead of write-combine. This optimizes for CPU reads. ``DRM_ASAHI_GEM_VM_PRIVATE`` BO is private to this GPU VM (no exports).”h]”(hì)�”}”(hŒ **Constants**”h]”jŒ)�”}”(hjGdh]”hŒ Constants”…”�”}”(hjIdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjEdubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MhjAdubj§)�”}”(hhh]”(j¬)�”}”(hŒŒ``DRM_ASAHI_GEM_WRITEBACK`` BO should be CPU-mapped as writeback. Map as writeback instead of write-combine. This optimizes for CPU reads. ”h]”(j²)�”}”(hŒ``DRM_ASAHI_GEM_WRITEBACK``”h]”jC)�”}”(hjfdh]”hŒDRM_ASAHI_GEM_WRITEBACK”…”�”}”(hjhdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjddubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M%hj`dubjÃ)�”}”(hhh]”(hì)�”}”(hŒ%BO should be CPU-mapped as writeback.”h]”hŒ%BO should be CPU-mapped as writeback.”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M"hj|dubhì)�”}”(hŒHMap as writeback instead of write-combine. This optimizes for CPU reads.”h]”hŒHMap as writeback instead of write-combine. This optimizes for CPU reads.”…”�”}”(hjŽdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M$hj|dubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj`dubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j{dh´M%hj]dubj¬)�”}”(hŒG``DRM_ASAHI_GEM_VM_PRIVATE`` BO is private to this GPU VM (no exports).”h]”(j²)�”}”(hŒ``DRM_ASAHI_GEM_VM_PRIVATE``”h]”jC)�”}”(hj¯dh]”hŒDRM_ASAHI_GEM_VM_PRIVATE”…”�”}”(hj±dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj­dubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M'hj©dubjÃ)�”}”(hhh]”hì)�”}”(hŒ*BO is private to this GPU VM (no exports).”h]”hŒ*BO is private to this GPU VM (no exports).”…”�”}”(hjÈdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M(hjÅdubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj©dubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÄdh´M'hj]dubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjAdubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj×Sh²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_asahi_gem_create (C struct)”Œc.drm_asahi_gem_create”hNt”auh1jJhj×Sh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_asahi_gem_create”h]”jg)�”}”(hŒstruct drm_asahi_gem_create”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj eh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjeh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M-ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjeh²hh³jeh´M-ubj�)�”}”(hŒdrm_asahi_gem_create”h]”j–)�”}”(hjeh]”hŒdrm_asahi_gem_create”…”�”}”(hj)eh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj%eubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjeh²hh³jeh´M-ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjeh²hh³jeh´M-ubah}”(h]”jüdah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jeh´M-hjþdh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ.Arguments passed to DRM_IOCTL_ASAHI_GEM_CREATE”h]”hŒ.Arguments passed to DRM_IOCTL_ASAHI_GEM_CREATE”…”�”}”(hjKeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M-hjHeh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjþdh²hh³jeh´M-ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjcejçjcejè‰jé‰jê‰uh1j[h²hhj×Sh³Nh´Nubjì)�”}”(hXy**Definition**:: struct drm_asahi_gem_create { __u64 size; __u32 flags; __u32 vm_id; __u32 handle; __u32 pad; }; **Members** ``size`` Size of the BO ``flags`` Combination of drm_asahi_gem_flags flags. ``vm_id`` VM ID to assign to the BO, if DRM_ASAHI_GEM_VM_PRIVATE is set ``handle`` Returned GEM handle for the BO ``pad`` MBZ”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjoeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjkeubhŒ:”…”�”}”(hjkeh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M1hjgeubj)�”}”(hŒsstruct drm_asahi_gem_create { __u64 size; __u32 flags; __u32 vm_id; __u32 handle; __u32 pad; };”h]”hŒsstruct drm_asahi_gem_create { __u64 size; __u32 flags; __u32 vm_id; __u32 handle; __u32 pad; };”…”�”}”hjˆesbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M3hjgeubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj™eh]”hŒMembers”…”�”}”(hj›eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj—eubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M;hjgeubj§)�”}”(hhh]”(j¬)�”}”(hŒ``size`` Size of the BO ”h]”(j²)�”}”(hŒ``size``”h]”jC)�”}”(hj¸eh]”hŒsize”…”�”}”(hjºeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj¶eubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M1hj²eubjÃ)�”}”(hhh]”hì)�”}”(hŒSize of the BO”h]”hŒSize of the BO”…”�”}”(hjÑeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÍeh´M1hjÎeubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj²eubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÍeh´M1hj¯eubj¬)�”}”(hŒ4``flags`` Combination of drm_asahi_gem_flags flags. ”h]”(j²)�”}”(hŒ ``flags``”h]”jC)�”}”(hjñeh]”hŒflags”…”�”}”(hjóeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjïeubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”•8h´M4hjëeubjÃ)�”}”(hhh]”hì)�”}”(hŒ)Combination of drm_asahi_gem_flags flags.”h]”hŒ)Combination of drm_asahi_gem_flags flags.”…”�”}”(hj fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jfh´M4hjfubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjëeubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jfh´M4hj¯eubj¬)�”}”(hŒH``vm_id`` VM ID to assign to the BO, if DRM_ASAHI_GEM_VM_PRIVATE is set ”h]”(j²)�”}”(hŒ ``vm_id``”h]”jC)�”}”(hj*fh]”hŒvm_id”…”�”}”(hj,fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj(fubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M8hj$fubjÃ)�”}”(hhh]”hì)�”}”(hŒ=VM ID to assign to the BO, if DRM_ASAHI_GEM_VM_PRIVATE is set”h]”hŒ=VM ID to assign to the BO, if DRM_ASAHI_GEM_VM_PRIVATE is set”…”�”}”(hjCfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j?fh´M8hj@fubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj$fubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j?fh´M8hj¯eubj¬)�”}”(hŒ*``handle`` Returned GEM handle for the BO ”h]”(j²)�”}”(hŒ ``handle``”h]”jC)�”}”(hjcfh]”hŒhandle”…”�”}”(hjefh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjafubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M<hj]fubjÃ)�”}”(hhh]”hì)�”}”(hŒReturned GEM handle for the BO”h]”hŒReturned GEM handle for the BO”…”�”}”(hj|fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jxfh´M<hjyfubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj]fubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jxfh´M<hj¯eubj¬)�”}”(hŒ ``pad`` MBZ”h]”(j²)�”}”(hŒ``pad``”h]”jC)�”}”(hjœfh]”hŒpad”…”�”}”(hjžfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjšfubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M>hj–fubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hjµfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M?hj²fubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj–fubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j±fh´M>hj¯eubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjgeubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj×Sh²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ$drm_asahi_gem_mmap_offset (C struct)”Œc.drm_asahi_gem_mmap_offset”hNt”auh1jJhj×Sh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_asahi_gem_mmap_offset”h]”jg)�”}”(hŒ struct drm_asahi_gem_mmap_offset”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjöfh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjòfh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MEubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjòfh²hh³jgh´MEubj�)�”}”(hŒdrm_asahi_gem_mmap_offset”h]”j–)�”}”(hjðfh]”hŒdrm_asahi_gem_mmap_offset”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjgubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjòfh²hh³jgh´MEubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjîfh²hh³jgh´MEubah}”(h]”jéfah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jgh´MEhjëfh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ3Arguments passed to DRM_IOCTL_ASAHI_GEM_MMAP_OFFSET”h]”hŒ3Arguments passed to DRM_IOCTL_ASAHI_GEM_MMAP_OFFSET”…”�”}”(hj8gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MChj5gh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjëfh²hh³jgh´MEubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjPgjçjPgjè‰jé‰jê‰uh1j[h²hhj×Sh³Nh´Nubjì)�”}”(hX **Definition**:: struct drm_asahi_gem_mmap_offset { __u32 handle; __u32 flags; __u64 offset; }; **Members** ``handle`` Handle for the object being mapped. ``flags`` Must be zero ``offset`` The fake offset to use for subsequent mmap call”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj\gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjXgubhŒ:”…”�”}”(hjXgh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MGhjTgubj)�”}”(hŒZstruct drm_asahi_gem_mmap_offset { __u32 handle; __u32 flags; __u64 offset; };”h]”hŒZstruct drm_asahi_gem_mmap_offset { __u32 handle; __u32 flags; __u64 offset; };”…”�”}”hjugsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MIhjTgubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj†gh]”hŒMembers”…”�”}”(hjˆgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj„gubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MOhjTgubj§)�”}”(hhh]”(j¬)�”}”(hŒ/``handle`` Handle for the object being mapped. ”h]”(j²)�”}”(hŒ ``handle``”h]”jC)�”}”(hj¥gh]”hŒhandle”…”�”}”(hj§gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj£gubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MHhjŸgubjÃ)�”}”(hhh]”hì)�”}”(hŒ#Handle for the object being mapped.”h]”hŒ#Handle for the object being mapped.”…”�”}”(hj¾gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jºgh´MHhj»gubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjŸgubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jºgh´MHhjœgubj¬)�”}”(hŒ``flags`` Must be zero ”h]”(j²)�”}”(hŒ ``flags``”h]”jC)�”}”(hjÞgh]”hŒflags”…”�”}”(hjàgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÜgubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MKhjØgubjÃ)�”}”(hhh]”hì)�”}”(hŒ Must be zero”h]”hŒ Must be zero”…”�”}”(hj÷gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jógh´MKhjôgubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjØgubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jógh´MKhjœgubj¬)�”}”(hŒ:``offset`` The fake offset to use for subsequent mmap call”h]”(j²)�”}”(hŒ ``offset``”h]”jC)�”}”(hjhh]”hŒoffset”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjhubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MMhjhubjÃ)�”}”(hhh]”hì)�”}”(hŒ/The fake offset to use for subsequent mmap call”h]”hŒ/The fake offset to use for subsequent mmap call”…”�”}”(hj0hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MNhj-hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjhubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j,hh´MMhjœgubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjTgubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj×Sh²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_asahi_bind_flags (C enum)”Œc.drm_asahi_bind_flags”hNt”auh1jJhj×Sh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_asahi_bind_flags”h]”jg)�”}”(hŒenum drm_asahi_bind_flags”h]”(jm)�”}”(hjîh]”hŒenum”…”�”}”(hjqhh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjmhh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MTubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjmhh²hh³j~hh´MTubj�)�”}”(hŒdrm_asahi_bind_flags”h]”j–)�”}”(hjkhh]”hŒdrm_asahi_bind_flags”…”�”}”(hj‘hh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj�hubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjmhh²hh³j~hh´MTubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjihh²hh³j~hh´MTubah}”(h]”jdhah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³j~hh´MThjfhh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒFlags for GEM binding”h]”hŒFlags for GEM binding”…”�”}”(hj³hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MRhj°hh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjfhh²hh³j~hh´MTubeh}”(h]”h ]”(jàŒenum”eh"]”h$]”h&]”jåjàjæjËhjçjËhjè‰jé‰jê‰uh1j[h²hhj×Sh³Nh´Nubjì)�”}”(hXÐ**Constants** ``DRM_ASAHI_BIND_UNBIND`` Instead of binding a GEM object to the range, simply unbind the GPU VMA range. ``DRM_ASAHI_BIND_READ`` Map BO with GPU read permission ``DRM_ASAHI_BIND_WRITE`` Map BO with GPU write permission ``DRM_ASAHI_BIND_SINGLE_PAGE`` Map a single page of the BO repeatedly across the VA range. This is useful to fill a VA range with scratch pages or zero pages. It is intended as a mechanism to accelerate sparse.”h]”(hì)�”}”(hŒ **Constants**”h]”jŒ)�”}”(hjÕhh]”hŒ Constants”…”�”}”(hj×hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÓhubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MVhjÏhubj§)�”}”(hhh]”(j¬)�”}”(hŒi``DRM_ASAHI_BIND_UNBIND`` Instead of binding a GEM object to the range, simply unbind the GPU VMA range. ”h]”(j²)�”}”(hŒ``DRM_ASAHI_BIND_UNBIND``”h]”jC)�”}”(hjôhh]”hŒDRM_ASAHI_BIND_UNBIND”…”�”}”(hjöhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjòhubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MZhjîhubjÃ)�”}”(hhh]”hì)�”}”(hŒNInstead of binding a GEM object to the range, simply unbind the GPU VMA range.”h]”hŒNInstead of binding a GEM object to the range, simply unbind the GPU VMA range.”…”�”}”(hj ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MYhj iubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjîhubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j ih´MZhjëhubj¬)�”}”(hŒ8``DRM_ASAHI_BIND_READ`` Map BO with GPU read permission ”h]”(j²)�”}”(hŒ``DRM_ASAHI_BIND_READ``”h]”jC)�”}”(hj.ih]”hŒDRM_ASAHI_BIND_READ”…”�”}”(hj0ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj,iubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M]hj(iubjÃ)�”}”(hhh]”hì)�”}”(hŒMap BO with GPU read permission”h]”hŒMap BO with GPU read permission”…”�”}”(hjGih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jCih´M]hjDiubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj(iubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jCih´M]hjëhubj¬)�”}”(hŒ:``DRM_ASAHI_BIND_WRITE`` Map BO with GPU write permission ”h]”(j²)�”}”(hŒ``DRM_ASAHI_BIND_WRITE``”h]”jC)�”}”(hjgih]”hŒDRM_ASAHI_BIND_WRITE”…”�”}”(hjiih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjeiubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M`hjaiubjÃ)�”}”(hhh]”hì)�”}”(hŒ Map BO with GPU write permission”h]”hŒ Map BO with GPU write permission”…”�”}”(hj€ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j|ih´M`hj}iubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjaiubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j|ih´M`hjëhubj¬)�”}”(hŒÓ``DRM_ASAHI_BIND_SINGLE_PAGE`` Map a single page of the BO repeatedly across the VA range. This is useful to fill a VA range with scratch pages or zero pages. It is intended as a mechanism to accelerate sparse.”h]”(j²)�”}”(hŒ``DRM_ASAHI_BIND_SINGLE_PAGE``”h]”jC)�”}”(hj ih]”hŒDRM_ASAHI_BIND_SINGLE_PAGE”…”�”}”(hj¢ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjžiubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MfhjšiubjÃ)�”}”(hhh]”(hì)�”}”(hŒ;Map a single page of the BO repeatedly across the VA range.”h]”hŒ;Map a single page of the BO repeatedly across the VA range.”…”�”}”(hj¹ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mchj¶iubhì)�”}”(hŒwThis is useful to fill a VA range with scratch pages or zero pages. It is intended as a mechanism to accelerate sparse.”h]”hŒwThis is useful to fill a VA range with scratch pages or zero pages. It is intended as a mechanism to accelerate sparse.”…”�”}”(hjÈih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jµih´Mfhj¶iubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjšiubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jµih´Mfhjëhubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjÏhubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj×Sh²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ drm_asahi_gem_bind_op (C struct)”Œc.drm_asahi_gem_bind_op”hNt”auh1jJhj×Sh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_asahi_gem_bind_op”h]”jg)�”}”(hŒstruct drm_asahi_gem_bind_op”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjjh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mlubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjjh²hh³jjh´Mlubj�)�”}”(hŒdrm_asahi_gem_bind_op”h]”j–)�”}”(hjjh]”hŒdrm_asahi_gem_bind_op”…”�”}”(hj(jh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj$jubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjjh²hh³jjh´Mlubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjjh²hh³jjh´Mlubah}”(h]”jûiah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jjh´Mlhjýih²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ+Description of a single GEM bind operation.”h]”hŒ+Description of a single GEM bind operation.”…”�”}”(hjJjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MlhjGjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjýih²hh³jjh´Mlubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjbjjçjbjjè‰jé‰jê‰uh1j[h²hhj×Sh³Nh´Nubjì)�”}”(hX¸**Definition**:: struct drm_asahi_gem_bind_op { __u32 flags; __u32 handle; __u64 offset; __u64 range; __u64 addr; }; **Members** ``flags`` Combination of drm_asahi_bind_flags flags. ``handle`` GEM object to bind (except for UNBIND) ``offset`` Offset into the object (except for UNBIND). For a regular bind, this is the beginning of the region of the GEM object to bind. For a single-page bind, this is the offset to the single page that will be repeatedly bound. Must be page-size aligned. ``range`` Number of bytes to bind/unbind to **addr**. Must be page-size aligned. ``addr`` Address to bind to. Must be page-size aligned.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjnjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjjjubhŒ:”…”�”}”(hjjjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mphjfjubj)�”}”(hŒwstruct drm_asahi_gem_bind_op { __u32 flags; __u32 handle; __u64 offset; __u64 range; __u64 addr; };”h]”hŒwstruct drm_asahi_gem_bind_op { __u32 flags; __u32 handle; __u64 offset; __u64 range; __u64 addr; };”…”�”}”hj‡jsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mrhjfjubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj˜jh]”hŒMembers”…”�”}”(hjšjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj–jubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mzhjfjubj§)�”}”(hhh]”(j¬)�”}”(hŒ5``flags`` Combination of drm_asahi_bind_flags flags. ”h]”(j²)�”}”(hŒ ``flags``”h]”jC)�”}”(hj·jh]”hŒflags”…”�”}”(hj¹jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjµjubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mphj±jubjÃ)�”}”(hhh]”hì)�”}”(hŒ*Combination of drm_asahi_bind_flags flags.”h]”hŒ*Combination of drm_asahi_bind_flags flags.”…”�”}”(hjÐjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÌjh´MphjÍjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj±jubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÌjh´Mphj®jubj¬)�”}”(hŒ2``handle`` GEM object to bind (except for UNBIND) ”h]”(j²)�”}”(hŒ ``handle``”h]”jC)�”}”(hjðjh]”hŒhandle”…”�”}”(hjòjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjîjubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MshjêjubjÃ)�”}”(hhh]”hì)�”}”(hŒ&GEM object to bind (except for UNBIND)”h]”hŒ&GEM object to bind (except for UNBIND)”…”�”}”(hj kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jkh´Mshjkubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjêjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jkh´Mshj®jubj¬)�”}”(hX``offset`` Offset into the object (except for UNBIND). For a regular bind, this is the beginning of the region of the GEM object to bind. For a single-page bind, this is the offset to the single page that will be repeatedly bound. Must be page-size aligned. ”h]”(j²)�”}”(hŒ ``offset``”h]”jC)�”}”(hj)kh]”hŒoffset”…”�”}”(hj+kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj'kubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mhj#kubjÃ)�”}”(hhh]”(hì)�”}”(hŒ+Offset into the object (except for UNBIND).”h]”hŒ+Offset into the object (except for UNBIND).”…”�”}”(hjBkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mwhj?kubhì)�”}”(hŒRFor a regular bind, this is the beginning of the region of the GEM object to bind.”h]”hŒRFor a regular bind, this is the beginning of the region of the GEM object to bind.”…”�”}”(hjQkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Myhj?kubhì)�”}”(hŒ\For a single-page bind, this is the offset to the single page that will be repeatedly bound.”h]”hŒ\For a single-page bind, this is the offset to the single page that will be repeatedly bound.”…”�”}”(hj`kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M|hj?kubhì)�”}”(hŒMust be page-size aligned.”h]”hŒMust be page-size aligned.”…”�”}”(hjokh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j>kh´Mhj?kubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj#kubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j>kh´Mhj®jubj¬)�”}”(hŒR``range`` Number of bytes to bind/unbind to **addr**. Must be page-size aligned. ”h]”(j²)�”}”(hŒ ``range``”h]”jC)�”}”(hj�kh]”hŒrange”…”�”}”(hj‘kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj�kubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M†hj‰kubjÃ)�”}”(hhh]”(hì)�”}”(hŒ+Number of bytes to bind/unbind to **addr**.”h]”(hŒ"Number of bytes to bind/unbind to ”…”�”}”(hj¨kh²hh³Nh´NubjŒ)�”}”(hŒ**addr**”h]”hŒaddr”…”�”}”(hj°kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj¨kubhŒ.”…”�”}”(hj¨kh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M„hj¥kubhì)�”}”(hŒMust be page-size aligned.”h]”hŒMust be page-size aligned.”…”�”}”(hjÉkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¤kh´M†hj¥kubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj‰kubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j¤kh´M†hj®jubj¬)�”}”(hŒ8``addr`` Address to bind to. Must be page-size aligned.”h]”(j²)�”}”(hŒ``addr``”h]”jC)�”}”(hjékh]”hŒaddr”…”�”}”(hjëkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjçkubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MŒhjãkubjÃ)�”}”(hhh]”(hì)�”}”(hŒAddress to bind to.”h]”hŒAddress to bind to.”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M‹hjÿkubhì)�”}”(hŒMust be page-size aligned.”h]”hŒMust be page-size aligned.”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M�hjÿkubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjãkubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jþkh´MŒhj®jubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjfjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj×Sh²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_asahi_vm_bind (C struct)”Œc.drm_asahi_vm_bind”hNt”auh1jJhj×Sh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_asahi_vm_bind”h]”jg)�”}”(hŒstruct drm_asahi_vm_bind”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjRlh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjNlh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M“ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`lh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjNlh²hh³j_lh´M“ubj�)�”}”(hŒdrm_asahi_vm_bind”h]”j–)�”}”(hjLlh]”hŒdrm_asahi_vm_bind”…”�”}”(hjrlh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjnlubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjNlh²hh³j_lh´M“ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjJlh²hh³j_lh´M“ubah}”(h]”jElah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³j_lh´M“hjGlh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ+Arguments passed to DRM_IOCTL_ASAHI_VM_BIND”h]”hŒ+Arguments passed to DRM_IOCTL_ASAHI_VM_BIND”…”�”}”(hj”lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M’hj‘lh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjGlh²hh³j_lh´M“ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj¬ljçj¬ljè‰jé‰jê‰uh1j[h²hhj×Sh³Nh´Nubjì)�”}”(hXþ**Definition**:: struct drm_asahi_vm_bind { __u32 vm_id; __u32 num_binds; __u32 stride; __u32 pad; __u64 userptr; }; **Members** ``vm_id`` The ID of the VM to bind to ``num_binds`` number of binds in this IOCTL. ``stride`` Stride in bytes between consecutive binds. This allows extensibility of drm_asahi_gem_bind_op. ``pad`` MBZ ``userptr`` User pointer to an array of **num_binds** structures of type **drm_asahi_gem_bind_op** and size **stride** bytes.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj¸lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj´lubhŒ:”…”�”}”(hj´lh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M–hj°lubj)�”}”(hŒwstruct drm_asahi_vm_bind { __u32 vm_id; __u32 num_binds; __u32 stride; __u32 pad; __u64 userptr; };”h]”hŒwstruct drm_asahi_vm_bind { __u32 vm_id; __u32 num_binds; __u32 stride; __u32 pad; __u64 userptr; };”…”�”}”hjÑlsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M˜hj°lubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjâlh]”hŒMembers”…”�”}”(hjälh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjàlubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M hj°lubj§)�”}”(hhh]”(j¬)�”}”(hŒ&``vm_id`` The ID of the VM to bind to ”h]”(j²)�”}”(hŒ ``vm_id``”h]”jC)�”}”(hjmh]”hŒvm_id”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÿlubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M—hjûlubjÃ)�”}”(hhh]”hì)�”}”(hŒThe ID of the VM to bind to”h]”hŒThe ID of the VM to bind to”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jmh´M—hjmubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjûlubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jmh´M—hjølubj¬)�”}”(hŒ-``num_binds`` number of binds in this IOCTL. ”h]”(j²)�”}”(hŒ ``num_binds``”h]”jC)�”}”(hj:mh]”hŒ num_binds”…”�”}”(hj``object_handle`` Object handle (out for BIND, in for UNBIND) ”h]”(j²)�”}”(hŒ``object_handle``”h]”jC)�”}”(hjlrh]”hŒ object_handle”…”�”}”(hjnrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjjrubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MÚhjfrubjÃ)�”}”(hhh]”hì)�”}”(hŒ+Object handle (out for BIND, in for UNBIND)”h]”hŒ+Object handle (out for BIND, in for UNBIND)”…”�”}”(hj…rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j�rh´MÚhj‚rubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjfrubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j�rh´MÚhj qubj¬)�”}”(hŒ ``pad`` MBZ”h]”(j²)�”}”(hŒ``pad``”h]”jC)�”}”(hj¥rh]”hŒpad”…”�”}”(hj§rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj£rubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MÜhjŸrubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hj¾rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MÝhj»rubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjŸrubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jºrh´MÜhj qubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjÅpubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj×Sh²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_asahi_cmd_type (C enum)”Œc.drm_asahi_cmd_type”hNt”auh1jJhj×Sh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_asahi_cmd_type”h]”jg)�”}”(hŒenum drm_asahi_cmd_type”h]”(jm)�”}”(hjîh]”hŒenum”…”�”}”(hjÿrh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjûrh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mãubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj sh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjûrh²hh³j sh´Mãubj�)�”}”(hŒdrm_asahi_cmd_type”h]”j–)�”}”(hjùrh]”hŒdrm_asahi_cmd_type”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjsubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjûrh²hh³j sh´Mãubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hj÷rh²hh³j sh´Mãubah}”(h]”jòrah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³j sh´Mãhjôrh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ Command type”h]”hŒ Command type”…”�”}”(hjAsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Máhj>sh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjôrh²hh³j sh´Mãubeh}”(h]”h ]”(jàŒenum”eh"]”h$]”h&]”jåjàjæjYsjçjYsjè‰jé‰jê‰uh1j[h²hhj×Sh³Nh´Nubjì)�”}”(hXŠ**Constants** ``DRM_ASAHI_CMD_RENDER`` Render command, executing on the render subqueue. Combined vertex and fragment operation. Followed by a **drm_asahi_cmd_render** payload. ``DRM_ASAHI_CMD_COMPUTE`` Compute command on the compute subqueue. Followed by a **drm_asahi_cmd_compute** payload. ``DRM_ASAHI_SET_VERTEX_ATTACHMENTS`` Software command to set attachments for subsequent vertex shaders in the same submit. Followed by (possibly multiple) **drm_asahi_attachment** payloads. ``DRM_ASAHI_SET_FRAGMENT_ATTACHMENTS`` Software command to set attachments for subsequent fragment shaders in the same submit. Followed by (possibly multiple) **drm_asahi_attachment** payloads. ``DRM_ASAHI_SET_COMPUTE_ATTACHMENTS`` Software command to set attachments for subsequent compute shaders in the same submit. Followed by (possibly multiple) **drm_asahi_attachment** payloads.”h]”(hì)�”}”(hŒ **Constants**”h]”jŒ)�”}”(hjcsh]”hŒ Constants”…”�”}”(hjesh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjasubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Måhj]subj§)�”}”(hhh]”(j¬)�”}”(hŒ¤``DRM_ASAHI_CMD_RENDER`` Render command, executing on the render subqueue. Combined vertex and fragment operation. Followed by a **drm_asahi_cmd_render** payload. ”h]”(j²)�”}”(hŒ``DRM_ASAHI_CMD_RENDER``”h]”jC)�”}”(hj‚sh]”hŒDRM_ASAHI_CMD_RENDER”…”�”}”(hj„sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj€subah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mëhj|subjÃ)�”}”(hhh]”(hì)�”}”(hŒYRender command, executing on the render subqueue. Combined vertex and fragment operation.”h]”hŒYRender command, executing on the render subqueue. Combined vertex and fragment operation.”…”�”}”(hj›sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mèhj˜subhì)�”}”(hŒ/Followed by a **drm_asahi_cmd_render** payload.”h]”(hŒFollowed by a ”…”�”}”(hjªsh²hh³Nh´NubjŒ)�”}”(hŒ**drm_asahi_cmd_render**”h]”hŒdrm_asahi_cmd_render”…”�”}”(hj²sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjªsubhŒ payload.”…”�”}”(hjªsh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j—sh´Mëhj˜subeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj|subeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j—sh´Mëhjysubj¬)�”}”(hŒu``DRM_ASAHI_CMD_COMPUTE`` Compute command on the compute subqueue. Followed by a **drm_asahi_cmd_compute** payload. ”h]”(j²)�”}”(hŒ``DRM_ASAHI_CMD_COMPUTE``”h]”jC)�”}”(hjÜsh]”hŒDRM_ASAHI_CMD_COMPUTE”…”�”}”(hjÞsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÚsubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MðhjÖsubjÃ)�”}”(hhh]”(hì)�”}”(hŒ(Compute command on the compute subqueue.”h]”hŒ(Compute command on the compute subqueue.”…”�”}”(hjõsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mîhjòsubhì)�”}”(hŒ0Followed by a **drm_asahi_cmd_compute** payload.”h]”(hŒFollowed by a ”…”�”}”(hjth²hh³Nh´NubjŒ)�”}”(hŒ**drm_asahi_cmd_compute**”h]”hŒdrm_asahi_cmd_compute”…”�”}”(hj th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjtubhŒ payload.”…”�”}”(hjth²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jñsh´Mðhjòsubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÖsubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jñsh´Mðhjysubj¬)�”}”(hŒ¿``DRM_ASAHI_SET_VERTEX_ATTACHMENTS`` Software command to set attachments for subsequent vertex shaders in the same submit. Followed by (possibly multiple) **drm_asahi_attachment** payloads. ”h]”(j²)�”}”(hŒ$``DRM_ASAHI_SET_VERTEX_ATTACHMENTS``”h]”jC)�”}”(hj6th]”hŒ DRM_ASAHI_SET_VERTEX_ATTACHMENTS”…”�”}”(hj8th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj4tubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Möhj0tubjÃ)�”}”(hhh]”(hì)�”}”(hŒUSoftware command to set attachments for subsequent vertex shaders in the same submit.”h]”hŒUSoftware command to set attachments for subsequent vertex shaders in the same submit.”…”�”}”(hjOth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MóhjLtubhì)�”}”(hŒBFollowed by (possibly multiple) **drm_asahi_attachment** payloads.”h]”(hŒ Followed by (possibly multiple) ”…”�”}”(hj^th²hh³Nh´NubjŒ)�”}”(hŒ**drm_asahi_attachment**”h]”hŒdrm_asahi_attachment”…”�”}”(hjfth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj^tubhŒ payloads.”…”�”}”(hj^th²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jKth´MöhjLtubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj0tubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jKth´Möhjysubj¬)�”}”(hŒÃ``DRM_ASAHI_SET_FRAGMENT_ATTACHMENTS`` Software command to set attachments for subsequent fragment shaders in the same submit. Followed by (possibly multiple) **drm_asahi_attachment** payloads. ”h]”(j²)�”}”(hŒ&``DRM_ASAHI_SET_FRAGMENT_ATTACHMENTS``”h]”jC)�”}”(hj�th]”hŒ"DRM_ASAHI_SET_FRAGMENT_ATTACHMENTS”…”�”}”(hj’th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjŽtubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MühjŠtubjÃ)�”}”(hhh]”(hì)�”}”(hŒWSoftware command to set attachments for subsequent fragment shaders in the same submit.”h]”hŒWSoftware command to set attachments for subsequent fragment shaders in the same submit.”…”�”}”(hj©th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mùhj¦tubhì)�”}”(hŒBFollowed by (possibly multiple) **drm_asahi_attachment** payloads.”h]”(hŒ Followed by (possibly multiple) ”…”�”}”(hj¸th²hh³Nh´NubjŒ)�”}”(hŒ**drm_asahi_attachment**”h]”hŒdrm_asahi_attachment”…”�”}”(hjÀth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj¸tubhŒ payloads.”…”�”}”(hj¸th²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¥th´Mühj¦tubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjŠtubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j¥th´Mühjysubj¬)�”}”(hŒÀ``DRM_ASAHI_SET_COMPUTE_ATTACHMENTS`` Software command to set attachments for subsequent compute shaders in the same submit. Followed by (possibly multiple) **drm_asahi_attachment** payloads.”h]”(j²)�”}”(hŒ%``DRM_ASAHI_SET_COMPUTE_ATTACHMENTS``”h]”jC)�”}”(hjêth]”hŒ!DRM_ASAHI_SET_COMPUTE_ATTACHMENTS”…”�”}”(hjìth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjètubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MhjätubjÃ)�”}”(hhh]”(hì)�”}”(hŒVSoftware command to set attachments for subsequent compute shaders in the same submit.”h]”hŒVSoftware command to set attachments for subsequent compute shaders in the same submit.”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mÿhjuubhì)�”}”(hŒBFollowed by (possibly multiple) **drm_asahi_attachment** payloads.”h]”(hŒ Followed by (possibly multiple) ”…”�”}”(hjuh²hh³Nh´NubjŒ)�”}”(hŒ**drm_asahi_attachment**”h]”hŒdrm_asahi_attachment”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjuubhŒ payloads.”…”�”}”(hjuh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mhjuubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjätubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÿth´Mhjysubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj]subeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj×Sh²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_asahi_priority (C enum)”Œc.drm_asahi_priority”hNt”auh1jJhj×Sh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_asahi_priority”h]”jg)�”}”(hŒenum drm_asahi_priority”h]”(jm)�”}”(hjîh]”hŒenum”…”�”}”(hjeuh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjauh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsuh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjauh²hh³jruh´Mubj�)�”}”(hŒdrm_asahi_priority”h]”j–)�”}”(hj_uh]”hŒdrm_asahi_priority”…”�”}”(hj…uh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj�uubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjauh²hh³jruh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hj]uh²hh³jruh´Mubah}”(h]”jXuah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jruh´MhjZuh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒScheduling queue priority.”h]”hŒScheduling queue priority.”…”�”}”(hj§uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M hj¤uh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjZuh²hh³jruh´Mubeh}”(h]”h ]”(jàŒenum”eh"]”h$]”h&]”jåjàjæj¿ujçj¿ujè‰jé‰jê‰uh1j[h²hhj×Sh³Nh´Nubjì)�”}”(hX,**Constants** ``DRM_ASAHI_PRIORITY_LOW`` Low priority queue. ``DRM_ASAHI_PRIORITY_MEDIUM`` Medium priority queue. ``DRM_ASAHI_PRIORITY_HIGH`` High priority queue. Reserved for future extension. ``DRM_ASAHI_PRIORITY_REALTIME`` Real-time priority queue. Reserved for future extension.”h]”(hì)�”}”(hŒ **Constants**”h]”jŒ)�”}”(hjÉuh]”hŒ Constants”…”�”}”(hjËuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÇuubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MhjÃuubj§)�”}”(hhh]”(j¬)�”}”(hŒ/``DRM_ASAHI_PRIORITY_LOW`` Low priority queue. ”h]”(j²)�”}”(hŒ``DRM_ASAHI_PRIORITY_LOW``”h]”jC)�”}”(hjèuh]”hŒDRM_ASAHI_PRIORITY_LOW”…”�”}”(hjêuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjæuubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MhjâuubjÃ)�”}”(hhh]”hì)�”}”(hŒLow priority queue.”h]”hŒLow priority queue.”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jýuh´Mhjþuubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjâuubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jýuh´Mhjßuubj¬)�”}”(hŒ5``DRM_ASAHI_PRIORITY_MEDIUM`` Medium priority queue. ”h]”(j²)�”}”(hŒ``DRM_ASAHI_PRIORITY_MEDIUM``”h]”jC)�”}”(hj!vh]”hŒDRM_ASAHI_PRIORITY_MEDIUM”…”�”}”(hj#vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjvubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MhjvubjÃ)�”}”(hhh]”hì)�”}”(hŒMedium priority queue.”h]”hŒMedium priority queue.”…”�”}”(hj:vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j6vh´Mhj7vubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjvubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j6vh´Mhjßuubj¬)�”}”(hŒQ``DRM_ASAHI_PRIORITY_HIGH`` High priority queue. Reserved for future extension. ”h]”(j²)�”}”(hŒ``DRM_ASAHI_PRIORITY_HIGH``”h]”jC)�”}”(hjZvh]”hŒDRM_ASAHI_PRIORITY_HIGH”…”�”}”(hj\vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjXvubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MhjTvubjÃ)�”}”(hhh]”(hì)�”}”(hŒHigh priority queue.”h]”hŒHigh priority queue.”…”�”}”(hjsvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mhjpvubhì)�”}”(hŒReserved for future extension.”h]”hŒReserved for future extension.”…”�”}”(hj‚vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jovh´Mhjpvubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjTvubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jovh´Mhjßuubj¬)�”}”(hŒY``DRM_ASAHI_PRIORITY_REALTIME`` Real-time priority queue. Reserved for future extension.”h]”(j²)�”}”(hŒ``DRM_ASAHI_PRIORITY_REALTIME``”h]”jC)�”}”(hj¢vh]”hŒDRM_ASAHI_PRIORITY_REALTIME”…”�”}”(hj¤vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj vubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M hjœvubjÃ)�”}”(hhh]”(hì)�”}”(hŒReal-time priority queue.”h]”hŒReal-time priority queue.”…”�”}”(hj»vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mhj¸vubhì)�”}”(hŒReserved for future extension.”h]”hŒReserved for future extension.”…”�”}”(hjÊvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M!hj¸vubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjœvubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j·vh´M hjßuubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjÃuubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj×Sh²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjôvh]”hŒ Description”…”�”}”(hjövh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjòvubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M#hj×Sh²hubhì)�”}”(hŒÃThese priorities are forwarded to the firmware to influence firmware scheduling. The exact policy is ultimately decided by firmware, but these enums allow userspace to communicate the intentions.”h]”hŒÃThese priorities are forwarded to the firmware to influence firmware scheduling. The exact policy is ultimately decided by firmware, but these enums allow userspace to communicate the intentions.”…”�”}”(hj wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mhj×Sh²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ!drm_asahi_queue_create (C struct)”Œc.drm_asahi_queue_create”hNt”auh1jJhj×Sh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_asahi_queue_create”h]”jg)�”}”(hŒstruct drm_asahi_queue_create”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj2wh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj.wh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@wh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hj.wh²hh³j?wh´Mubj�)�”}”(hŒdrm_asahi_queue_create”h]”j–)�”}”(hj,wh]”hŒdrm_asahi_queue_create”…”�”}”(hjRwh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjNwubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj.wh²hh³j?wh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hj*wh²hh³j?wh´Mubah}”(h]”j%wah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³j?wh´Mhj'wh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ0Arguments passed to DRM_IOCTL_ASAHI_QUEUE_CREATE”h]”hŒ0Arguments passed to DRM_IOCTL_ASAHI_QUEUE_CREATE”…”�”}”(hjtwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M*hjqwh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj'wh²hh³j?wh´Mubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjŒwjçjŒwjè‰jé‰jê‰uh1j[h²hhj×Sh³Nh´Nubjì)�”}”(hXR**Definition**:: struct drm_asahi_queue_create { __u32 flags; __u32 vm_id; __u32 priority; __u32 queue_id; __u64 usc_exec_base; }; **Members** ``flags`` MBZ ``vm_id`` The ID of the VM this queue is bound to ``priority`` One of drm_asahi_priority ``queue_id`` The returned queue ID ``usc_exec_base`` GPU base address for all USC binaries (shaders) on this queue. USC addresses are 32-bit relative to this 64-bit base. This sets the following registers on all queue commands: USC_EXEC_BASE_TA (vertex) USC_EXEC_BASE_ISP (fragment) USC_EXEC_BASE_CP (compute) While the hardware lets us configure these independently per command, we do not have a use case for this. Instead, we expect userspace to fix a 4GiB VA carveout for USC memory and pass its base address here.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj˜wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj”wubhŒ:”…”�”}”(hj”wh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M.hj�wubj)�”}”(hŒ…struct drm_asahi_queue_create { __u32 flags; __u32 vm_id; __u32 priority; __u32 queue_id; __u64 usc_exec_base; };”h]”hŒ…struct drm_asahi_queue_create { __u32 flags; __u32 vm_id; __u32 priority; __u32 queue_id; __u64 usc_exec_base; };”…”�”}”hj±wsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M0hj�wubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjÂwh]”hŒMembers”…”�”}”(hjÄwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÀwubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M8hj�wubj§)�”}”(hhh]”(j¬)�”}”(hŒ``flags`` MBZ ”h]”(j²)�”}”(hŒ ``flags``”h]”jC)�”}”(hjáwh]”hŒflags”…”�”}”(hjãwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjßwubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M/hjÛwubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hjúwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jöwh´M/hj÷wubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÛwubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jöwh´M/hjØwubj¬)�”}”(hŒ2``vm_id`` The ID of the VM this queue is bound to ”h]”(j²)�”}”(hŒ ``vm_id``”h]”jC)�”}”(hjxh]”hŒvm_id”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjxubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M2hjxubjÃ)�”}”(hhh]”hì)�”}”(hŒ'The ID of the VM this queue is bound to”h]”hŒ'The ID of the VM this queue is bound to”…”�”}”(hj3xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j/xh´M2hj0xubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjxubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j/xh´M2hjØwubj¬)�”}”(hŒ'``priority`` One of drm_asahi_priority ”h]”(j²)�”}”(hŒ ``priority``”h]”jC)�”}”(hjSxh]”hŒpriority”…”�”}”(hjUxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjQxubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M5hjMxubjÃ)�”}”(hhh]”hì)�”}”(hŒOne of drm_asahi_priority”h]”hŒOne of drm_asahi_priority”…”�”}”(hjlxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jhxh´M5hjixubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjMxubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jhxh´M5hjØwubj¬)�”}”(hŒ#``queue_id`` The returned queue ID ”h]”(j²)�”}”(hŒ ``queue_id``”h]”jC)�”}”(hjŒxh]”hŒqueue_id”…”�”}”(hjŽxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjŠxubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M8hj†xubjÃ)�”}”(hhh]”hì)�”}”(hŒThe returned queue ID”h]”hŒThe returned queue ID”…”�”}”(hj¥xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¡xh´M8hj¢xubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj†xubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j¡xh´M8hjØwubj¬)�”}”(hXö``usc_exec_base`` GPU base address for all USC binaries (shaders) on this queue. USC addresses are 32-bit relative to this 64-bit base. This sets the following registers on all queue commands: USC_EXEC_BASE_TA (vertex) USC_EXEC_BASE_ISP (fragment) USC_EXEC_BASE_CP (compute) While the hardware lets us configure these independently per command, we do not have a use case for this. Instead, we expect userspace to fix a 4GiB VA carveout for USC memory and pass its base address here.”•h]”(j²)�”}”(hŒ``usc_exec_base``”h]”jC)�”}”(hjÅxh]”hŒ usc_exec_base”…”�”}”(hjÇxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÃxubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MFhj¿xubjÃ)�”}”(hhh]”(hì)�”}”(hŒuGPU base address for all USC binaries (shaders) on this queue. USC addresses are 32-bit relative to this 64-bit base.”h]”hŒuGPU base address for all USC binaries (shaders) on this queue. USC addresses are 32-bit relative to this 64-bit base.”…”�”}”(hjÞxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M<hjÛxubhì)�”}”(hŒ8This sets the following registers on all queue commands:”h]”hŒ8This sets the following registers on all queue commands:”…”�”}”(hjíxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M?hjÛxubjK)�”}”(hŒTUSC_EXEC_BASE_TA (vertex) USC_EXEC_BASE_ISP (fragment) USC_EXEC_BASE_CP (compute) ”h]”hì)�”}”(hŒSUSC_EXEC_BASE_TA (vertex) USC_EXEC_BASE_ISP (fragment) USC_EXEC_BASE_CP (compute)”h]”hŒSUSC_EXEC_BASE_TA (vertex) USC_EXEC_BASE_ISP (fragment) USC_EXEC_BASE_CP (compute)”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MAhjüxubah}”(h]”h ]”h"]”h$]”h&]”uh1jJh³jyh´MAhjÛxubhì)�”}”(hŒÏWhile the hardware lets us configure these independently per command, we do not have a use case for this. Instead, we expect userspace to fix a 4GiB VA carveout for USC memory and pass its base address here.”h]”hŒÏWhile the hardware lets us configure these independently per command, we do not have a use case for this. Instead, we expect userspace to fix a 4GiB VA carveout for USC memory and pass its base address here.”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MEhjÛxubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj¿xubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÚxh´MFhjØwubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj�wubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj×Sh²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ"drm_asahi_queue_destroy (C struct)”Œc.drm_asahi_queue_destroy”hNt”auh1jJhj×Sh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_asahi_queue_destroy”h]”jg)�”}”(hŒstruct drm_asahi_queue_destroy”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjVyh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjRyh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MMubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdyh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjRyh²hh³jcyh´MMubj�)�”}”(hŒdrm_asahi_queue_destroy”h]”j–)�”}”(hjPyh]”hŒdrm_asahi_queue_destroy”…”�”}”(hjvyh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjryubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjRyh²hh³jcyh´MMubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjNyh²hh³jcyh´MMubah}”(h]”jIyah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jcyh´MMhjKyh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ1Arguments passed to DRM_IOCTL_ASAHI_QUEUE_DESTROY”h]”hŒ1Arguments passed to DRM_IOCTL_ASAHI_QUEUE_DESTROY”…”�”}”(hj˜yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MLhj•yh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjKyh²hh³jcyh´MMubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj°yjçj°yjè‰jé‰jê‰uh1j[h²hhj×Sh³Nh´Nubjì)�”}”(hŒ©**Definition**:: struct drm_asahi_queue_destroy { __u32 queue_id; __u32 pad; }; **Members** ``queue_id`` The queue ID to be destroyed ``pad`` MBZ”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj¼yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj¸yubhŒ:”…”�”}”(hj¸yh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MPhj´yubj)�”}”(hŒFstruct drm_asahi_queue_destroy { __u32 queue_id; __u32 pad; };”h]”hŒFstruct drm_asahi_queue_destroy { __u32 queue_id; __u32 pad; };”…”�”}”hjÕysbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MRhj´yubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjæyh]”hŒMembers”…”�”}”(hjèyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjäyubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MWhj´yubj§)�”}”(hhh]”(j¬)�”}”(hŒ*``queue_id`` The queue ID to be destroyed ”h]”(j²)�”}”(hŒ ``queue_id``”h]”jC)�”}”(hjzh]”hŒqueue_id”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjzubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MQhjÿyubjÃ)�”}”(hhh]”hì)�”}”(hŒThe queue ID to be destroyed”h]”hŒThe queue ID to be destroyed”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jzh´MQhjzubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÿyubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jzh´MQhjüyubj¬)�”}”(hŒ ``pad`` MBZ”h]”(j²)�”}”(hŒ``pad``”h]”jC)�”}”(hj>zh]”hŒpad”…”�”}”(hj@zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj|h]”hŒMembers”…”�”}”(hj@|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj<|ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mohj |ubj§)�”}”(hhh]”(j¬)�”}”(hŒ)``sync_type`` One of drm_asahi_sync_type ”h]”(j²)�”}”(hŒ ``sync_type``”h]”jC)�”}”(hj]|h]”hŒ sync_type”…”�”}”(hj_|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj[|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MghjW|ubjÃ)�”}”(hhh]”hì)�”}”(hŒOne of drm_asahi_sync_type”h]”hŒOne of drm_asahi_sync_type”…”�”}”(hjv|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jr|h´Mghjs|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjW|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jr|h´MghjT|ubj¬)�”}”(hŒ"``handle`` The sync object handle ”h]”(j²)�”}”(hŒ ``handle``”h]”jC)�”}”(hj–|h]”hŒhandle”…”�”}”(hj˜|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj”|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mjhj�|ubjÃ)�”}”(hhh]”hì)�”}”(hŒThe sync object handle”h]”hŒThe sync object handle”…”�”}”(hj¯|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j«|h´Mjhj¬|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj�|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j«|h´MjhjT|ubj¬)�”}”(hŒ;``timeline_value`` Timeline value for timeline sync objects”h]”(j²)�”}”(hŒ``timeline_value``”h]”jC)�”}”(hjÏ|h]”hŒtimeline_value”…”�”}”(hjÑ|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÍ|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MlhjÉ|ubjÃ)�”}”(hhh]”hì)�”}”(hŒ(Timeline value for timeline sync objects”h]”hŒ(Timeline value for timeline sync objects”…”�”}”(hjè|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mmhjå|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÉ|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jä|h´MlhjT|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj |ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj×Sh²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ DRM_ASAHI_BARRIER_NONE (C macro)”Œc.DRM_ASAHI_BARRIER_NONE”hNt”auh1jJhj×Sh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒDRM_ASAHI_BARRIER_NONE”h]”jg)�”}”(hŒDRM_ASAHI_BARRIER_NONE”h]”j�)�”}”(hŒDRM_ASAHI_BARRIER_NONE”h]”j–)�”}”(hj#}h]”hŒDRM_ASAHI_BARRIER_NONE”…”�”}”(hj-}h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj)}ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj%}h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mqubah}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hj!}h²hh³j@}h´Mqubah}”(h]”j}ah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³j@}h´Mqhj}h²hubjÄ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj}h²hh³j@}h´Mqubeh}”(h]”h ]”(jàŒmacro”eh"]”h$]”h&]”jåjàjæjY}jçjY}jè‰jé‰jê‰uh1j[h²hhj×Sh³Nh´Nubhì)�”}”(hŒ``DRM_ASAHI_BARRIER_NONE``”h]”jC)�”}”(hj_}h]”hŒDRM_ASAHI_BARRIER_NONE”…”�”}”(hja}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj]}ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mshj×Sh²hubjK)�”}”(hŒê Command index for no barrier **Description** This special value may be passed in to drm_asahi_command::vdm_barrier or drm_asahi_command::cdm_barrier to indicate that the respective subqueue should not wait on any previous work. ”h]”(jK)�”}”(hŒCommand index for no barrier ”h]”hì)�”}”(hŒCommand index for no barrier”h]”hŒCommand index for no barrier”…”�”}”(hj}}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mqhjy}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJh³j‹}h´Mqhju}ubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hj”}h]”hŒ Description”…”�”}”(hj–}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj’}ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mshju}ubhì)�”}”(hŒ¶This special value may be passed in to drm_asahi_command::vdm_barrier or drm_asahi_command::cdm_barrier to indicate that the respective subqueue should not wait on any previous work.”h]”hŒ¶This special value may be passed in to drm_asahi_command::vdm_barrier or drm_asahi_command::cdm_barrier to indicate that the respective subqueue should not wait on any previous work.”…”�”}”(hjª}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mrhju}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jJh³j‹}h´Mqhj×Sh²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_asahi_cmd_header (C struct)”Œc.drm_asahi_cmd_header”hNt”auh1jJhj×Sh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_asahi_cmd_header”h]”jg)�”}”(hŒstruct drm_asahi_cmd_header”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjØ}h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjÔ}h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Myubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæ}h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjÔ}h²hh³jå}h´Myubj�)�”}”(hŒdrm_asahi_cmd_header”h]”j–)�”}”(hjÒ}h]”hŒdrm_asahi_cmd_header”…”�”}”(hjø}h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjô}ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjÔ}h²hh³jå}h´Myubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjÐ}h²hh³jå}h´Myubah}”(h]”jË}ah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jå}h´MyhjÍ}h²hubjÄ)�”}”(hhh]”hì)�”}”(hŒTop level command structure”h]”hŒTop level command structure”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mzhj~h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÍ}h²hh³jå}h´Myubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj2~jçj2~jè‰jé‰jê‰uh1j[h²hhj×Sh³Nh´Nubjì)�”}”(hX²**Definition**:: struct drm_asahi_cmd_header { __u16 cmd_type; __u16 size; __u16 vdm_barrier; __u16 cdm_barrier; }; **Members** ``cmd_type`` One of drm_asahi_cmd_type ``size`` Size of this command, not including this header. For hardware commands, this enables extensibility of commands without requiring extra command types. Passing a command that is shorter than expected is explicitly allowed for backwards-compatibility. Truncated fields will be zeroed. For the synthetic attachment setting commands, this implicitly encodes the number of attachments. These commands take multiple fixed-size **drm_asahi_attachment** structures as their payload, so size equals number of attachments * sizeof(struct drm_asahi_attachment). ``vdm_barrier`` VDM (render) command index to wait on. Barriers are indices relative to the beginning of a given submit. A barrier of 0 waits on commands submitted to the respective subqueue in previous submit ioctls. A barrier of N waits on N previous commands on the subqueue within the current submit ioctl. As a special case, passing **DRM_ASAHI_BARRIER_NONE** avoids waiting on any commands in the subqueue. Examples: 0: This waits on all previous work. NONE: This does not wait for anything on this subqueue. 1: This waits on the first render command in the submit. This is valid only if there are multiple render commands in the same submit. Barriers are valid only for hardware commands. Synthetic software commands to set attachments must pass NONE here. ``cdm_barrier`` CDM (compute) command index to wait on. See **vdm_barrier**, and replace VDM/render with CDM/compute.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj>~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj:~ubhŒ:”…”�”}”(hj:~h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M~hj6~ubj)�”}”(hŒrstruct drm_asahi_cmd_header { __u16 cmd_type; __u16 size; __u16 vdm_barrier; __u16 cdm_barrier; };”h]”hŒrstruct drm_asahi_cmd_header { __u16 cmd_type; __u16 size; __u16 vdm_barrier; __u16 cdm_barrier; };”…”�”}”hjW~sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M€hj6~ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjh~h]”hŒMembers”…”�”}”(hjj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjf~ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M‡hj6~ubj§)�”}”(hhh]”(j¬)�”}”(hŒ'``cmd_type`` One of drm_asahi_cmd_type ”h]”(j²)�”}”(hŒ ``cmd_type``”h]”jC)�”}”(hj‡~h]”hŒcmd_type”…”�”}”(hj‰~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj…~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M�hj�~ubjÃ)�”}”(hhh]”hì)�”}”(hŒOne of drm_asahi_cmd_type”h]”hŒOne of drm_asahi_cmd_type”…”�”}”(hj ~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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¬)�”}”(hX1``size`` Size of this command, not including this header. For hardware commands, this enables extensibility of commands without requiring extra command types. Passing a command that is shorter than expected is explicitly allowed for backwards-compatibility. Truncated fields will be zeroed. For the synthetic attachment setting commands, this implicitly encodes the number of attachments. These commands take multiple fixed-size **drm_asahi_attachment** structures as their payload, so size equals number of attachments * sizeof(struct drm_asahi_attachment). ”h]”(j²)�”}”(hŒ``size``”h]”jC)�”}”(hjÀ~h]”hŒsize”…”�”}”(hjÂ~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj¾~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M�hjº~ubjÃ)�”}”(hhh]”(hì)�”}”(hŒ0Size of this command, not including this header.”h]”hŒ0Size of this command, not including this header.”…”�”}”(hjÙ~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M…hjÖ~ubhì)�”}”(hŒèFor hardware commands, this enables extensibility of commands without requiring extra command types. Passing a command that is shorter than expected is explicitly allowed for backwards-compatibility. Truncated fields will be zeroed.”h]”hŒèFor hardware commands, this enables extensibility of commands without requiring extra command types. Passing a command that is shorter than expected is explicitly allowed for backwards-compatibility. Truncated fields will be zeroed.”…”�”}”(hjè~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M‡hjÖ~ubhì)�”}”(hX For the synthetic attachment setting commands, this implicitly encodes the number of attachments. These commands take multiple fixed-size **drm_asahi_attachment** structures as their payload, so size equals number of attachments * sizeof(struct drm_asahi_attachment).”h]”(hŒŠFor the synthetic attachment setting commands, this implicitly encodes the number of attachments. These commands take multiple fixed-size ”…”�”}”(hj÷~h²hh³Nh´NubjŒ)�”}”(hŒ**drm_asahi_attachment**”h]”hŒdrm_asahi_attachment”…”�”}”(hjÿ~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj÷~ubhŒi structures as their payload, so size equals number of attachments * sizeof(struct drm_asahi_attachment).”…”�”}”(hj÷~h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MŒhjÖ~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjº~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÕ~h´M�hj~~ubj¬)�”}”(hX ``vdm_barrier`` VDM (render) command index to wait on. Barriers are indices relative to the beginning of a given submit. A barrier of 0 waits on commands submitted to the respective subqueue in previous submit ioctls. A barrier of N waits on N previous commands on the subqueue within the current submit ioctl. As a special case, passing **DRM_ASAHI_BARRIER_NONE** avoids waiting on any commands in the subqueue. Examples: 0: This waits on all previous work. NONE: This does not wait for anything on this subqueue. 1: This waits on the first render command in the submit. This is valid only if there are multiple render commands in the same submit. Barriers are valid only for hardware commands. Synthetic software commands to set attachments must pass NONE here. ”h]”(j²)�”}”(hŒ``vdm_barrier``”h]”jC)�”}”(hj*h]”hŒ vdm_barrier”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M¨hj$ubjÃ)�”}”(hhh]”(hì)�”}”(hŒ&VDM (render) command index to wait on.”h]”hŒ&VDM (render) command index to wait on.”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M”hj@ubhì)�”}”(hXeBarriers are indices relative to the beginning of a given submit. A barrier of 0 waits on commands submitted to the respective subqueue in previous submit ioctls. A barrier of N waits on N previous commands on the subqueue within the current submit ioctl. As a special case, passing **DRM_ASAHI_BARRIER_NONE** avoids waiting on any commands in the subqueue.”h]”(hXBarriers are indices relative to the beginning of a given submit. A barrier of 0 waits on commands submitted to the respective subqueue in previous submit ioctls. A barrier of N waits on N previous commands on the subqueue within the current submit ioctl. As a special case, passing ”…”�”}”(hjRh²hh³Nh´NubjŒ)�”}”(hŒ**DRM_ASAHI_BARRIER_NONE**”h]”hŒDRM_ASAHI_BARRIER_NONE”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjRubhŒ0 avoids waiting on any commands in the subqueue.”…”�”}”(hjRh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M–hj@ubhì)�”}”(hŒ Examples:”h]”hŒ Examples:”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M�hj@ubjK)�”}”(hŒä0: This waits on all previous work. NONE: This does not wait for anything on this subqueue. 1: This waits on the first render command in the submit. This is valid only if there are multiple render commands in the same submit. ”h]”(hì)�”}”(hŒ#0: This waits on all previous work.”h]”hŒ#0: This waits on all previous work.”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MŸhj‚ubhì)�”}”(hŒ7NONE: This does not wait for anything on this subqueue.”h]”hŒ7NONE: This does not wait for anything on this subqueue.”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M¡hj‚ubhì)�”}”(hŒ…1: This waits on the first render command in the submit. This is valid only if there are multiple render commands in the same submit.”h]”hŒ…1: This waits on the first render command in the submit. This is valid only if there are multiple render commands in the same submit.”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M£hj‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jJh³j”h´MŸhj@ubhì)�”}”(hŒrBarriers are valid only for hardware commands. Synthetic software commands to set attachments must pass NONE here.”h]”hŒrBarriers are valid only for hardware commands. Synthetic software commands to set attachments must pass NONE here.”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M§hj@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j?h´M¨hj~~ubj¬)�”}”(hŒv``cdm_barrier`` CDM (compute) command index to wait on. See **vdm_barrier**, and replace VDM/render with CDM/compute.”h]”(j²)�”}”(hŒ``cdm_barrier``”h]”jC)�”}”(hjÚh]”hŒ cdm_barrier”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjØubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M®hjÔubjÃ)�”}”(hhh]”(hì)�”}”(hŒ'CDM (compute) command index to wait on.”h]”hŒ'CDM (compute) command index to wait on.”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M­hjðubhì)�”}”(hŒ=See **vdm_barrier**, and replace VDM/render with CDM/compute.”h]”(hŒSee ”…”�”}”(hj€h²hh³Nh´NubjŒ)�”}”(hŒ**vdm_barrier**”h]”hŒ vdm_barrier”…”�”}”(hj €h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj€ubhŒ*, and replace VDM/render with CDM/compute.”…”�”}”(hj€h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M¯hjðubeh}”(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¦hj6~ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj×Sh²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hj>€h]”hŒ Description”…”�”}”(hj@€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj<€ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M²hj×Sh²hubhì)�”}”(hŒUThis struct is core to the command buffer definition and therefore is not extensible.”h]”hŒUThis struct is core to the command buffer definition and therefore is not extensible.”…”�”}”(hjT€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M{hj×Sh²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_asahi_submit (C struct)”Œc.drm_asahi_submit”hNt”auh1jJhj×Sh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_asahi_submit”h]”jg)�”}”(hŒstruct drm_asahi_submit”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj|€h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjx€h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M�ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠ€h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjx€h²hh³j‰€h´M�ubj�)�”}”(hŒdrm_asahi_submit”h]”j–)�”}”(hjv€h]”hŒdrm_asahi_submit”…”�”}”(hjœ€h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj˜€ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjx€h²hh³j‰€h´M�ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjt€h²hh³j‰€h´M�ubah}”(h]”jo€ah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³j‰€h´M�hjq€h²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ*Arguments passed to DRM_IOCTL_ASAHI_SUBMIT”h]”hŒ*Arguments passed to DRM_IOCTL_ASAHI_SUBMIT”…”�”}”(hj¾€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M´hj»€h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjq€h²hh³j‰€h´M�ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjÖ€jçjÖ€jè‰jé‰jê‰uh1j[h²hhj×Sh³Nh´Nubjì)�”}”(hXv**Definition**:: struct drm_asahi_submit { __u64 syncs; __u64 cmdbuf; __u32 flags; __u32 queue_id; __u32 in_sync_count; __u32 out_sync_count; __u32 cmdbuf_size; __u32 pad; }; **Members** ``syncs`` An optional pointer to an array of drm_asahi_sync. The first **in_sync_count** elements are in-syncs, then the remaining **out_sync_count** elements are out-syncs. Using a single array with explicit partitioning simplifies handling. ``cmdbuf`` Pointer to the command buffer to submit. This is a flat command buffer. By design, it contains no CPU pointers, which makes it suitable for a virtgpu wire protocol without requiring any serializing/deserializing step. It consists of a series of commands. Each command begins with a fixed-size **drm_asahi_cmd_header** header and is followed by a variable-length payload according to the type and size in the header. The combined count of "real" hardware commands must be nonzero and at most drm_asahi_params_global::max_commands_per_submission. ``flags`` Flags for command submission (MBZ) ``queue_id`` The queue ID to be submitted to ``in_sync_count`` Number of sync objects to wait on before starting this job. ``out_sync_count`` Number of sync objects to signal upon completion of this job. ``cmdbuf_size`` Command buffer size in bytes ``pad`` MBZ”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjâ€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÞ€ubhŒ:”…”�”}”(hjÞ€h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M¸hjÚ€ubj)�”}”(hŒ½struct drm_asahi_submit { __u64 syncs; __u64 cmdbuf; __u32 flags; __u32 queue_id; __u32 in_sync_count; __u32 out_sync_count; __u32 cmdbuf_size; __u32 pad; };”h]”hŒ½struct drm_asahi_submit { __u64 syncs; __u64 cmdbuf; __u32 flags; __u32 queue_id; __u32 in_sync_count; __u32 out_sync_count; __u32 cmdbuf_size; __u32 pad; };”…”�”}”hjû€sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MºhjÚ€ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj �h]”hŒMembers”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj �ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MÅhjÚ€ubj§)�”}”(hhh]”(j¬)�”}”(hŒó``syncs`` An optional pointer to an array of drm_asahi_sync. The first **in_sync_count** elements are in-syncs, then the remaining **out_sync_count** elements are out-syncs. Using a single array with explicit partitioning simplifies handling. ”h]”(j²)�”}”(hŒ ``syncs``”h]”jC)�”}”(hj+�h]”hŒsyncs”…”�”}”(hj-�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj)�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M¼hj%�ubjÃ)�”}”(hhh]”hì)�”}”(hŒèAn optional pointer to an array of drm_asahi_sync. The first **in_sync_count** elements are in-syncs, then the remaining **out_sync_count** elements are out-syncs. Using a single array with explicit partitioning simplifies handling.”h]”(hŒ=An optional pointer to an array of drm_asahi_sync. The first ”…”�”}”(hjD�h²hh³Nh´NubjŒ)�”}”(hŒ**in_sync_count**”h]”hŒ in_sync_count”…”�”}”(hjL�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjD�ubhŒ+ elements are in-syncs, then the remaining ”…”�”}”(hjD�h²hh³Nh´NubjŒ)�”}”(hŒ**out_sync_count**”h]”hŒout_sync_count”…”�”}”(hj^�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjD�ubhŒ] elements are out-syncs. Using a single array with explicit partitioning simplifies handling.”…”�”}”(hjD�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M¹hjA�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj%�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j@�h´M¼hj"�ubj¬)�”}”(hX/``cmdbuf`` Pointer to the command buffer to submit. This is a flat command buffer. By design, it contains no CPU pointers, which makes it suitable for a virtgpu wire protocol without requiring any serializing/deserializing step. It consists of a series of commands. Each command begins with a fixed-size **drm_asahi_cmd_header** header and is followed by a variable-length payload according to the type and size in the header. The combined count of "real" hardware commands must be nonzero and at most drm_asahi_params_global::max_commands_per_submission. ”h]”(j²)�”}”(hŒ ``cmdbuf``”h]”jC)�”}”(hj‰�h]”hŒcmdbuf”…”�”}”(hj‹�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj‡�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MÌhjƒ�ubjÃ)�”}”(hhh]”(hì)�”}”(hŒ(Pointer to the command buffer to submit.”h]”hŒ(Pointer to the command buffer to submit.”…”�”}”(hj¢�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MÁhjŸ�ubhì)�”}”(hŒ°This is a flat command buffer. By design, it contains no CPU pointers, which makes it suitable for a virtgpu wire protocol without requiring any serializing/deserializing step.”h]”hŒ°This is a flat command buffer. By design, it contains no CPU pointers, which makes it suitable for a virtgpu wire protocol without requiring any serializing/deserializing step.”…”�”}”(hj±�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MÃhjŸ�ubhì)�”}”(hŒÅIt consists of a series of commands. Each command begins with a fixed-size **drm_asahi_cmd_header** header and is followed by a variable-length payload according to the type and size in the header.”h]”(hŒKIt consists of a series of commands. Each command begins with a fixed-size ”…”�”}”(hjÀ�h²hh³Nh´NubjŒ)�”}”(hŒ**drm_asahi_cmd_header**”h]”hŒdrm_asahi_cmd_header”…”�”}”(hjÈ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÀ�ubhŒb header and is followed by a variable-length payload according to the type and size in the header.”…”�”}”(hjÀ�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MÇhjŸ�ubhì)�”}”(hŒ€The combined count of "real" hardware commands must be nonzero and at most drm_asahi_params_global::max_commands_per_submission.”h]”hŒ„The combined count of “realâ€� hardware commands must be nonzero and at most drm_asahi_params_global::max_commands_per_submission.”…”�”}”(hjá�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MËhjŸ�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjƒ�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jž�h´MÌhj"�ubj¬)�”}”(hŒ-``flags`` Flags for command submission (MBZ) ”h]”(j²)�”}”(hŒ ``flags``”h]”jC)�”}”(hj‚h]”hŒflags”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MÐhjü�ubjÃ)�”}”(hhh]”hì)�”}”(hŒ"Flags for command submission (MBZ)”h]”hŒ"Flags for command submission (MBZ)”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ-``queue_id`` The queue ID to be submitted to ”h]”(j²)�”}”(hŒ ``queue_id``”h]”jC)�”}”(hj;‚h]”hŒqueue_id”…”�”}”(hj=‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj9‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MÓhj5‚ubjÃ)�”}”(hhh]”hì)�”}”(hŒThe queue ID to be submitted to”h]”hŒThe queue ID to be submitted to”…”�”}”(hjT‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jP‚h´MÓhjQ‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj5‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jP‚h´MÓhj"�ubj¬)�”}”(hŒN``in_sync_count`` Number of sync objects to wait on before starting this job. ”h]”(j²)�”}”(hŒ``in_sync_count``”h]”jC)�”}”(hjt‚h]”hŒ in_sync_count”…”�”}”(hjv‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjr‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MØhjn‚ubjÃ)�”}”(hhh]”hì)�”}”(hŒ;Number of sync objects to wait on before starting this job.”h]”hŒ;Number of sync objects to wait on before starting this job.”…”�”}”(hj�‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M×hjŠ‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjn‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j‰‚h´MØhj"�ubj¬)�”}”(hŒQ``out_sync_count`` Number of sync objects to signal upon completion of this job. ”h]”(j²)�”}”(hŒ``out_sync_count``”h]”jC)�”}”(hj®‚h]”hŒout_sync_count”…”�”}”(hj°‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj¬‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MÞhj¨‚ubjÃ)�”}”(hhh]”hì)�”}”(hŒ=Number of sync objects to signal upon completion of this job.”h]”hŒ=Number of sync objects to signal upon completion of this job.”…”�”}”(hjÇ‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”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Œ-``cmdbuf_size`` Command buffer size in bytes ”h]”(j²)�”}”(hŒ``cmdbuf_size``”h]”jC)�”}”(hjè‚h]”hŒ cmdbuf_size”…”�”}”(hjê‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjæ‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mâhjâ‚ubjÃ)�”}”(hhh]”hì)�”}”(hŒCommand buffer size in bytes”h]”hŒCommand buffer size in bytes”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ ``pad`` MBZ”h]”(j²)�”}”(hŒ``pad``”h]”jC)�”}”(hj!ƒh]”hŒpad”…”�”}”(hj#ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MähjƒubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hj:ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Måhj7ƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j6ƒh´Mähj"�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjÚ€ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj×Sh²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_asahi_attachment (C struct)”Œc.drm_asahi_attachment”hNt”auh1jJhj×Sh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_asahi_attachment”h]”jg)�”}”(hŒstruct drm_asahi_attachment”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj{ƒh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjwƒh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mëubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰ƒh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjwƒh²hh³jˆƒh´Mëubj�)�”}”(hŒdrm_asahi_attachment”h]”j–)�”}”(hjuƒh]”hŒdrm_asahi_attachment”…”�”}”(hj›ƒh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj—ƒubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjwƒh²hh³jˆƒh´Mëubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjsƒh²hh³jˆƒh´Mëubah}”(h]”jnƒah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jˆƒh´Mëhjpƒh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒDescribe an "attachment".”h]”hŒDescribe an “attachmentâ€�.”…”�”}”(hj½ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Méhjºƒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjpƒh²hh³jˆƒh´Mëubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjÕƒjçjÕƒjè‰jé‰jê‰uh1j[h²hhj×Sh³Nh´Nubjì)�”}”(hX**Definition**:: struct drm_asahi_attachment { __u64 pointer; __u64 size; __u32 pad; __u32 flags; }; **Members** ``pointer`` Base address of the attachment ``size`` Size of the attachment in bytes ``pad`` MBZ ``flags`` MBZ”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjáƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj݃ubhŒ:”…”�”}”(hj݃h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MíhjÙƒubj)�”}”(hŒcstruct drm_asahi_attachment { __u64 pointer; __u64 size; __u32 pad; __u32 flags; };”h]”hŒcstruct drm_asahi_attachment { __u64 pointer; __u64 size; __u32 pad; __u32 flags; };”…”�”}”hjúƒsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MïhjÙƒubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj „h]”hŒMembers”…”�”}”(hj „h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj „ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MöhjÙƒubj§)�”}”(hhh]”(j¬)�”}”(hŒ+``pointer`` Base address of the attachment ”h]”(j²)�”}”(hŒ ``pointer``”h]”jC)�”}”(hj*„h]”hŒpointer”…”�”}”(hj,„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj(„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Möhj$„ubjÃ)�”}”(hhh]”hì)�”}”(hŒBase address of the attachment”h]”hŒBase address of the attachment”…”�”}”(hjC„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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`` Size of the attachment in bytes ”h]”(j²)�”}”(hŒ``size``”h]”jC)�”}”(hjc„h]”hŒsize”…”�”}”(hje„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhja„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mùhj]„ubjÃ)�”}”(hhh]”hì)�”}”(hŒSize of the attachment in bytes”h]”hŒSize of the attachment in bytes”…”�”}”(hj|„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jx„h´Mùhjy„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj]„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jx„h´Mùhj!„ubj¬)�”}”(hŒ ``pad`` MBZ ”h]”(j²)�”}”(hŒ``pad``”h]”jC)�”}”(hjœ„h]”hŒpad”…”�”}”(hjž„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjš„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mühj–„ubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hjµ„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ ``flags`` MBZ”h]”(j²)�”}”(hŒ ``flags``”h]”jC)�”}”(hjÕ„h]”hŒflags”…”�”}”(hjׄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÓ„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MþhjÏ„ubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hjî„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”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¦hjÙƒubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj×Sh²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hj…h]”hŒ Description”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mhj×Sh²hubhì)�”}”(hX•Attachments are any memory written by shaders, notably including render target attachments written by the end-of-tile program. This is purely a hint about the accessed memory regions. It is optional to specify, which is fortunate as it cannot be specified precisely with bindless access anyway. But where possible, it's probably a good idea for userspace to include these hints, forwarded to the firmware.”h]”hX—Attachments are any memory written by shaders, notably including render target attachments written by the end-of-tile program. This is purely a hint about the accessed memory regions. It is optional to specify, which is fortunate as it cannot be specified precisely with bindless access anyway. But where possible, it’s probably a good idea for userspace to include these hints, forwarded to the firmware.”…”�”}”(hj.…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mêhj×Sh²hubhì)�”}”(hŒ@This struct is implicitly sized and therefore is not extensible.”h]”hŒ@This struct is implicitly sized and therefore is not extensible.”…”�”}”(hj=…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mñhj×Sh²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_asahi_zls_buffer (C struct)”Œc.drm_asahi_zls_buffer”hNt”auh1jJhj×Sh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_asahi_zls_buffer”h]”jg)�”}”(hŒstruct drm_asahi_zls_buffer”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hje…h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhja…h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Möubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjs…h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hja…h²hh³jr…h´Möubj�)�”}”(hŒdrm_asahi_zls_buffer”h]”j–)�”}”(hj_…h]”hŒdrm_asahi_zls_buffer”…”�”}”(hj……h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj�…ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hja…h²hh³jr…h´Möubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hj]…h²hh³jr…h´Möubah}”(h]”jX…ah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jr…h´MöhjZ…h²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ#Describe a depth or stencil buffer.”h]”hŒ#Describe a depth or stencil buffer.”…”�”}”(hj§…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M(hj¤…h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjZ…h²hh³jr…h´Möubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj¿…jçj¿…jè‰jé‰jê‰uh1j[h²hhj×Sh³Nh´Nubjì)�”}”(hX**Definition**:: struct drm_asahi_zls_buffer { __u64 base; __u64 comp_base; __u32 stride; __u32 comp_stride; }; **Members** ``base`` Base address of the buffer ``comp_base`` If the load buffer is compressed, address of the compression metadata section. ``stride`` If layered rendering is enabled, the number of bytes between each layer of the buffer. ``comp_stride`` If layered rendering is enabled, the number of bytes between each layer of the compression metadata.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjË…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÇ…ubhŒ:”…”�”}”(hjÇ…h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M,hjÃ…ubj)�”}”(hŒnstruct drm_asahi_zls_buffer { __u64 base; __u64 comp_base; __u32 stride; __u32 comp_stride; };”h]”hŒnstruct drm_asahi_zls_buffer { __u64 base; __u64 comp_base; __u32 stride; __u32 comp_stride; };”…”�”}”hjä…sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M.hjÃ…ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjõ…h]”hŒMembers”…”�”}”(hj÷…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjó…ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M5hjÃ…ubj§)�”}”(hhh]”(j¬)�”}”(hŒ$``base`` Base address of the buffer ”h]”(j²)�”}”(hŒ``base``”h]”jC)�”}”(hj†h]”hŒbase”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M4hj†ubjÃ)�”}”(hhh]”hì)�”}”(hŒBase address of the buffer”h]”hŒBase address of the buffer”…”�”}”(hj-†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j)†h´M4hj*†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j)†h´M4hj †ubj¬)�”}”(hŒ]``comp_base`` If the load buffer is compressed, address of the compression metadata section. ”h]”(j²)�”}”(hŒ ``comp_base``”h]”jC)�”}”(hjM†h]”hŒ comp_base”…”�”}”(hjO†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjK†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M9hjG†ubjÃ)�”}”(hhh]”hì)�”}”(hŒNIf the load buffer is compressed, address of the compression metadata section.”h]”hŒNIf the load buffer is compressed, address of the compression metadata section.”…”�”}”(hjf†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M8hjc†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjG†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jb†h´M9hj †ubj¬)�”}”(hŒb``stride`` If layered rendering is enabled, the number of bytes between each layer of the buffer. ”h]”(j²)�”}”(hŒ ``stride``”h]”jC)�”}”(hj‡†h]”hŒstride”…”�”}”(hj‰†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj…†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M?hj�†ubjÃ)�”}”(hhh]”hì)�”}”(hŒVIf layered rendering is enabled, the number of bytes between each layer of the buffer.”h]”hŒVIf layered rendering is enabled, the number of bytes between each layer of the buffer.”…”�”}”(hj †h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”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Œt``comp_stride`` If layered rendering is enabled, the number of bytes between each layer of the compression metadata.”h]”(j²)�”}”(hŒ``comp_stride``”h]”jC)�”}”(hjÁ†h]”hŒ comp_stride”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj¿†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MDhj»†ubjÃ)�”}”(hhh]”hì)�”}”(hŒdIf layered rendering is enabled, the number of bytes between each layer of the compression metadata.”h]”hŒdIf layered rendering is enabled, the number of bytes between each layer of the compression metadata.”…”�”}”(hjÚ†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÖ†h´MDhj׆ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj»†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÖ†h´MDhj †ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjÃ…ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj×Sh²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hj‡h]”hŒ Description”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MHhj×Sh²hubhì)�”}”(hXdThese fields correspond to hardware registers in the ZLS (Z Load/Store) unit. There are three hardware registers for each field respectively for loads, stores, and partial renders. In practice, it makes sense to set all to the same values, except in exceptional cases not yet implemented in userspace, so we do not duplicate here for simplicity/efficiency.”h]”hXdThese fields correspond to hardware registers in the ZLS (Z Load/Store) unit. There are three hardware registers for each field respectively for loads, stores, and partial renders. In practice, it makes sense to set all to the same values, except in exceptional cases not yet implemented in userspace, so we do not duplicate here for simplicity/efficiency.”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M)hj×Sh²hubhì)�”}”(hŒIThis struct is embedded in other structs and therefore is not extensible.”h]”hŒIThis struct is embedded in other structs and therefore is not extensible.”…”�”}”(hj(‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M/hj×Sh²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_asahi_timestamp (C struct)”Œc.drm_asahi_timestamp”hNt”auh1jJhj×Sh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_asahi_timestamp”h]”jg)�”}”(hŒstruct drm_asahi_timestamp”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjP‡h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjL‡h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M4ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^‡h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjL‡h²hh³j]‡h´M4ubj�)�”}”(hŒdrm_asahi_timestamp”h]”j–)�”}”(hjJ‡h]”hŒdrm_asahi_timestamp”…”�”}”(hjp‡h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjl‡ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjL‡h²hh³j]‡h´M4ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjH‡h²hh³j]‡h´M4ubah}”(h]”jC‡ah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³j]‡h´M4hjE‡h²hubjÄ)�”}”(hhh]”hì)�”}”(hŒDescribe a timestamp write.”h]”hŒDescribe a timestamp write.”…”�”}”(hj’‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MJhj�‡h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjE‡h²hh³j]‡h´M4ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjª‡jçjª‡jè‰jé‰jê‰uh1j[h²hhj×Sh³Nh´Nubjì)�”}”(hXM**Definition**:: struct drm_asahi_timestamp { __u32 handle; __u32 offset; }; **Members** ``handle`` Handle of the timestamp buffer, or 0 to skip this timestamp. If nonzero, this must equal the value returned in drm_asahi_gem_bind_object::object_handle. ``offset`` Offset to write into the timestamp buffer”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj¶‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj²‡ubhŒ:”…”�”}”(hj²‡h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MNhj®‡ubj)�”}”(hŒCstruct drm_asahi_timestamp { __u32 handle; __u32 offset; };”h]”hŒCstruct drm_asahi_timestamp { __u32 handle; __u32 offset; };”…”�”}”hjχsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MPhj®‡ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjà‡h]”hŒMembers”…”�”}”(hjâ‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÞ‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MUhj®‡ubj§)�”}”(hhh]”(j¬)�”}”(hŒ¤``handle`` Handle of the timestamp buffer, or 0 to skip this timestamp. If nonzero, this must equal the value returned in drm_asahi_gem_bind_object::object_handle. ”h]”(j²)�”}”(hŒ ``handle``”h]”jC)�”}”(hjÿ‡h]”hŒhandle”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjý‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MXhjù‡ubjÃ)�”}”(hhh]”hì)�”}”(hŒ˜Handle of the timestamp buffer, or 0 to skip this timestamp. If nonzero, this must equal the value returned in drm_asahi_gem_bind_object::object_handle.”h]”hŒ˜Handle of the timestamp buffer, or 0 to skip this timestamp. If nonzero, this must equal the value returned in drm_asahi_gem_bind_object::object_handle.”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MVhjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjù‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jˆh´MXhjö‡ubj¬)�”}”(hŒ4``offset`` Offset to write into the timestamp buffer”h]”(j²)�”}”(hŒ ``offset``”h]”jC)�”}”(hj9ˆh]”hŒoffset”…”�”}”(hj;ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj7ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M[hj3ˆubjÃ)�”}”(hhh]”hì)�”}”(hŒ)Offset to write into the timestamp buffer”h]”hŒ)Offset to write into the timestamp buffer”…”�”}”(hjRˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M\hjOˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj3ˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jNˆh´M[hjö‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj®‡ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj×Sh²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hj|ˆh]”hŒ Description”…”�”}”(hj~ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjzˆubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M_hj×Sh²hubhì)�”}”(hX The firmware can optionally write the GPU timestamp at render pass granularities, but it needs to be mapped specially via DRM_IOCTL_ASAHI_GEM_BIND_OBJECT. This structure therefore describes where to write as a handle-offset pair, rather than a GPU address like normal.”h]”hX The firmware can optionally write the GPU timestamp at render pass granularities, but it needs to be mapped specially via DRM_IOCTL_ASAHI_GEM_BIND_OBJECT. This structure therefore describes where to write as a handle-offset pair, rather than a GPU address like normal.”…”�”}”(hj’ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MKhj×Sh²hubhì)�”}”(hŒIThis struct is embedded in other structs and therefore is not extensible.”h]”hŒIThis struct is embedded in other structs and therefore is not extensible.”…”�”}”(hj¡ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MPhj×Sh²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_asahi_timestamps (C struct)”Œc.drm_asahi_timestamps”hNt”auh1jJhj×Sh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_asahi_timestamps”h]”jg)�”}”(hŒstruct drm_asahi_timestamps”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjɈh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjňh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”•h´MUubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj׈h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjňh²hh³jÖˆh´MUubj�)�”}”(hŒdrm_asahi_timestamps”h]”j–)�”}”(hjÈh]”hŒdrm_asahi_timestamps”…”�”}”(hjéˆh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjåˆubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjňh²hh³jÖˆh´MUubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjÁˆh²hh³jÖˆh´MUubah}”(h]”j¼ˆah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jÖˆh´MUhj¾ˆh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒDescribe timestamp writes.”h]”hŒDescribe timestamp writes.”…”�”}”(hj ‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M`hj‰h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj¾ˆh²hh³jÖˆh´MUubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj#‰jçj#‰jè‰jé‰jê‰uh1j[h²hhj×Sh³Nh´Nubjì)�”}”(hX **Definition**:: struct drm_asahi_timestamps { struct drm_asahi_timestamp start; struct drm_asahi_timestamp end; }; **Members** ``start`` Timestamp recorded at the start of the operation ``end`` Timestamp recorded at the end of the operation”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj/‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj+‰ubhŒ:”…”�”}”(hj+‰h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mdhj'‰ubj)�”}”(hŒjstruct drm_asahi_timestamps { struct drm_asahi_timestamp start; struct drm_asahi_timestamp end; };”h]”hŒjstruct drm_asahi_timestamps { struct drm_asahi_timestamp start; struct drm_asahi_timestamp end; };”…”�”}”hjH‰sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mfhj'‰ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjY‰h]”hŒMembers”…”�”}”(hj[‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjW‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mkhj'‰ubj§)�”}”(hhh]”(j¬)�”}”(hŒ;``start`` Timestamp recorded at the start of the operation ”h]”(j²)�”}”(hŒ ``start``”h]”jC)�”}”(hjx‰h]”hŒstart”…”�”}”(hjz‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjv‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mjhjr‰ubjÃ)�”}”(hhh]”hì)�”}”(hŒ0Timestamp recorded at the start of the operation”h]”hŒ0Timestamp recorded at the start of the operation”…”�”}”(hj‘‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j�‰h´Mjhjމubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjr‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j�‰h´Mjhjo‰ubj¬)�”}”(hŒ6``end`` Timestamp recorded at the end of the operation”h]”(j²)�”}”(hŒ``end``”h]”jC)�”}”(hj±‰h]”hŒend”…”�”}”(hj³‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj¯‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mlhj«‰ubjÃ)�”}”(hhh]”hì)�”}”(hŒ.Timestamp recorded at the end of the operation”h]”hŒ.Timestamp recorded at the end of the operation”…”�”}”(hjʉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mmhjljubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj«‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jƉh´Mlhjo‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj'‰ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj×Sh²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjô‰h]”hŒ Description”…”�”}”(hjö‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjò‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mphj×Sh²hubhì)�”}”(hŒ¹Each operation that can be timestamped, can be timestamped at the start and end. Therefore, drm_asahi_timestamp structs always come in pairs, bundled together into drm_asahi_timestamps.”h]”hŒ¹Each operation that can be timestamped, can be timestamped at the start and end. Therefore, drm_asahi_timestamp structs always come in pairs, bundled together into drm_asahi_timestamps.”…”�”}”(hj Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mahj×Sh²hubhì)�”}”(hŒIThis struct is embedded in other structs and therefore is not extensible.”h]”hŒIThis struct is embedded in other structs and therefore is not extensible.”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mehj×Sh²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ#drm_asahi_helper_program (C struct)”Œc.drm_asahi_helper_program”hNt”auh1jJhj×Sh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_asahi_helper_program”h]”jg)�”}”(hŒstruct drm_asahi_helper_program”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjAŠh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj=Šh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mjubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOŠh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hj=Šh²hh³jNŠh´Mjubj�)�”}”(hŒdrm_asahi_helper_program”h]”j–)�”}”(hj;Šh]”hŒdrm_asahi_helper_program”…”�”}”(hjaŠh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj]Šubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj=Šh²hh³jNŠh´Mjubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hj9Šh²hh³jNŠh´Mjubah}”(h]”j4Šah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³jNŠh´Mjhj6Šh²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ&Describe helper program configuration.”h]”hŒ&Describe helper program configuration.”…”�”}”(hjƒŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mqhj€Šh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj6Šh²hh³jNŠh´Mjubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj›Šjçj›Šjè‰jé‰jê‰uh1j[h²hhj×Sh³Nh´Nubjì)�”}”(hX¼**Definition**:: struct drm_asahi_helper_program { __u32 binary; __u32 cfg; __u64 data; }; **Members** ``binary`` USC address to the helper program binary. This is a tagged pointer with configuration in the bottom bits. ``cfg`` Additional configuration bits for the helper program. ``data`` Data passed to the helper program. This value is not interpreted by the kernel, firmware, or hardware in any way. It is simply a sideband for userspace, set with the submit ioctl and read via special registers inside the helper program. In practice, userspace will pass a 64-bit GPU VA here pointing to the actual arguments, which presumably don't fit in 64-bits.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj§Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj£ŠubhŒ:”…”�”}”(hj£Šh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MuhjŸŠubj)�”}”(hŒUstruct drm_asahi_helper_program { __u32 binary; __u32 cfg; __u64 data; };”h]”hŒUstruct drm_asahi_helper_program { __u32 binary; __u32 cfg; __u64 data; };”…”�”}”hjÀŠsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MwhjŸŠubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjÑŠh]”hŒMembers”…”�”}”(hjÓŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÏŠubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M}hjŸŠubj§)�”}”(hhh]”(j¬)�”}”(hŒu``binary`` USC address to the helper program binary. This is a tagged pointer with configuration in the bottom bits. ”h]”(j²)�”}”(hŒ ``binary``”h]”jC)�”}”(hjðŠh]”hŒbinary”…”�”}”(hjòŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjîŠubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MhjêŠubjÃ)�”}”(hhh]”hì)�”}”(hŒiUSC address to the helper program binary. This is a tagged pointer with configuration in the bottom bits.”h]”hŒiUSC address to the helper program binary. This is a tagged pointer with configuration in the bottom bits.”…”�”}”(hj ‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M~hj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjêŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j‹h´MhjçŠubj¬)�”}”(hŒ>``cfg`` Additional configuration bits for the helper program. ”h]”(j²)�”}”(hŒ``cfg``”h]”jC)�”}”(hj*‹h]”hŒcfg”…”�”}”(hj,‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj(‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mƒhj$‹ubjÃ)�”}”(hhh]”hì)�”}”(hŒ5Additional configuration bits for the helper program.”h]”hŒ5Additional configuration bits for the helper program.”…”�”}”(hjC‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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¬)�”}”(hXu``data`` Data passed to the helper program. This value is not interpreted by the kernel, firmware, or hardware in any way. It is simply a sideband for userspace, set with the submit ioctl and read via special registers inside the helper program. In practice, userspace will pass a 64-bit GPU VA here pointing to the actual arguments, which presumably don't fit in 64-bits.”h]”(j²)�”}”(hŒ``data``”h]”jC)�”}”(hjc‹h]”hŒdata”…”�”}”(hje‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhja‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MŒhj]‹ubjÃ)�”}”(hhh]”(hì)�”}”(hŒìData passed to the helper program. This value is not interpreted by the kernel, firmware, or hardware in any way. It is simply a sideband for userspace, set with the submit ioctl and read via special registers inside the helper program.”h]”hŒìData passed to the helper program. This value is not interpreted by the kernel, firmware, or hardware in any way. It is simply a sideband for userspace, set with the submit ioctl and read via special registers inside the helper program.”…”�”}”(hj|‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M‡hjy‹ubhì)�”}”(hŒ~In practice, userspace will pass a 64-bit GPU VA here pointing to the actual arguments, which presumably don't fit in 64-bits.”h]”hŒ€In practice, userspace will pass a 64-bit GPU VA here pointing to the actual arguments, which presumably don’t fit in 64-bits.”…”�”}”(hj‹‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jx‹h´MŒhjy‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj]‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jx‹h´MŒhjçŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjŸŠubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj×Sh²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hj´‹h]”hŒ Description”…”�”}”(hj¶‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj²‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M�hj×Sh²hubhì)�”}”(hXhThe helper program is a compute-like kernel required for various hardware functionality. Its most important role is dynamically allocating scratch/stack memory for individual subgroups, by partitioning a static allocation shared for the whole device. It is supplied by userspace via drm_asahi_helper_program and internally dispatched by the hardware as needed.”h]”hXhThe helper program is a compute-like kernel required for various hardware functionality. Its most important role is dynamically allocating scratch/stack memory for individual subgroups, by partitioning a static allocation shared for the whole device. It is supplied by userspace via drm_asahi_helper_program and internally dispatched by the hardware as needed.”…”�”}”(hjÊ‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mrhj×Sh²hubhì)�”}”(hŒIThis struct is embedded in other structs and therefore is not extensible.”h]”hŒIThis struct is embedded in other structs and therefore is not extensible.”…”�”}”(hjÙ‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mxhj×Sh²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_asahi_bg_eot (C struct)”Œc.drm_asahi_bg_eot”hNt”auh1jJhj×Sh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_asahi_bg_eot”h]”jg)�”}”(hŒstruct drm_asahi_bg_eot”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjý‹h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”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Œdrm_asahi_bg_eot”h]”j–)�”}”(hjû‹h]”hŒdrm_asahi_bg_eot”…”�”}”(hj!Œh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjŒubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjý‹h²hh³jŒh´M}ubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”hì)�”}”(hŒ-Describe a background or end-of-tile program.”h]”hŒ-Describe a background or end-of-tile program.”…”�”}”(hjCŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M’hj@Œh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjö‹h²hh³jŒh´M}ubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæj[Œjçj[Œjè‰jé‰jê‰uh1j[h²hhj×Sh³Nh´Nubjì)�”}”(hXm**Definition**:: struct drm_asahi_bg_eot { __u32 usc; __u32 rsrc_spec; }; **Members** ``usc`` USC address of the hardware USC words binding resources (including images and uniforms) and the program itself. Note this is an additional layer of indirection compared to the helper program, avoiding the need for a sideband for data. This is a tagged pointer with additional configuration in the bottom bits. ``rsrc_spec`` Resource specifier for the program. This is a packed hardware data structure describing the required number of registers, uniforms, bound textures, and bound samplers.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjgŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjcŒubhŒ:”…”�”}”(hjcŒh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M–hj_Œubj)�”}”(hŒ@struct drm_asahi_bg_eot { __u32 usc; __u32 rsrc_spec; };”h]”hŒ@struct drm_asahi_bg_eot { __u32 usc; __u32 rsrc_spec; };”…”�”}”hj€Œsbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M˜hj_Œubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj‘Œh]”hŒMembers”…”�”}”(hj“Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj�Œubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M�hj_Œubj§)�”}”(hhh]”(j¬)�”}”(hX>``usc`` USC address of the hardware USC words binding resources (including images and uniforms) and the program itself. Note this is an additional layer of indirection compared to the helper program, avoiding the need for a sideband for data. This is a tagged pointer with additional configuration in the bottom bits. ”h]”(j²)�”}”(hŒ``usc``”h]”jC)�”}”(hj°Œh]”hŒusc”…”�”}”(hj²Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj®Œubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M¤hjªŒubjÃ)�”}”(hhh]”hì)�”}”(hX5USC address of the hardware USC words binding resources (including images and uniforms) and the program itself. Note this is an additional layer of indirection compared to the helper program, avoiding the need for a sideband for data. This is a tagged pointer with additional configuration in the bottom bits.”h]”hX5USC address of the hardware USC words binding resources (including images and uniforms) and the program itself. Note this is an additional layer of indirection compared to the helper program, avoiding the need for a sideband for data. This is a tagged pointer with additional configuration in the bottom bits.”…”�”}”(hjÉŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”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Œµ``rsrc_spec`` Resource specifier for the program. This is a packed hardware data structure describing the required number of registers, uniforms, bound textures, and bound samplers.”h]”(j²)�”}”(hŒ ``rsrc_spec``”h]”jC)�”}”(hjêŒh]”hŒ rsrc_spec”…”�”}”(hjìŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjèŒubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MªhjäŒubjÃ)�”}”(hhh]”hì)�”}”(hŒ§Resource specifier for the program. This is a packed hardware data structure describing the required number of registers, uniforms, bound textures, and bound samplers.”h]”hŒ§Resource specifier for the program. This is a packed hardware data structure describing the required number of registers, uniforms, bound textures, and bound samplers.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”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¦hj_Œubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj×Sh²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hj-�h]”hŒ Description”…”�”}”(hj/�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj+�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M®hj×Sh²hubhì)�”}”(hX»The background and end-of-tile programs are dispatched by the hardware at the beginning and end of rendering. As the hardware "tilebuffer" is simply local memory, these programs are necessary to implement API-level render targets. The fragment-like background program is responsible for loading either the clear colour or the existing render target contents, while the compute-like end-of-tile program stores the tilebuffer contents to memory.”h]”hX¿The background and end-of-tile programs are dispatched by the hardware at the beginning and end of rendering. As the hardware “tilebufferâ€� is simply local memory, these programs are necessary to implement API-level render targets. The fragment-like background program is responsible for loading either the clear colour or the existing render target contents, while the compute-like end-of-tile program stores the tilebuffer contents to memory.”…”�”}”(hjC�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M“hj×Sh²hubhì)�”}”(hŒIThis struct is embedded in other structs and therefore is not extensible.”h]”hŒIThis struct is embedded in other structs and therefore is not extensible.”…”�”}”(hjR�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mšhj×Sh²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_asahi_cmd_render (C struct)”Œc.drm_asahi_cmd_render”hNt”auh1jJhj×Sh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_asahi_cmd_render”h]”jg)�”}”(hŒstruct drm_asahi_cmd_render”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjz�h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjv�h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MŸubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆ�h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjv�h²hh³j‡�h´MŸubj�)�”}”(hŒdrm_asahi_cmd_render”h]”j–)�”}”(hjt�h]”hŒdrm_asahi_cmd_render”…”�”}”(hjš�h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj–�ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjv�h²hh³j‡�h´MŸubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjr�h²hh³j‡�h´MŸubah}”(h]”jm�ah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³j‡�h´MŸhjo�h²hubjÄ)�”}”(hhh]”hì)�”}”(hŒCommand to submit 3D”h]”hŒCommand to submit 3D”…”�”}”(hj¼�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M°hj¹�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjo�h²hh³j‡�h´MŸubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjÔ�jçjÔ�jè‰jé‰jê‰uh1j[h²hhj×Sh³Nh´Nubjì)�”}”(hXh**Definition**:: struct drm_asahi_cmd_render { __u32 flags; __u32 isp_zls_pixels; __u64 vdm_ctrl_stream_base; struct drm_asahi_helper_program vertex_helper; struct drm_asahi_helper_program fragment_helper; __u64 isp_scissor_base; __u64 isp_dbias_base; __u64 isp_oclqry_base; struct drm_asahi_zls_buffer depth; struct drm_asahi_zls_buffer stencil; __u64 zls_ctrl; __u64 ppp_multisamplectl; __u64 sampler_heap; __u32 ppp_ctrl; __u16 width_px; __u16 height_px; __u16 layers; __u16 sampler_count; __u8 utile_width_px; __u8 utile_height_px; __u8 samples; __u8 sample_size_B; __u32 isp_merge_upper_x; __u32 isp_merge_upper_y; struct drm_asahi_bg_eot bg; struct drm_asahi_bg_eot eot; struct drm_asahi_bg_eot partial_bg; struct drm_asahi_bg_eot partial_eot; __u32 isp_bgobjdepth; __u32 isp_bgobjvals; struct drm_asahi_timestamps ts_vtx; struct drm_asahi_timestamps ts_frag; }; **Members** ``flags`` Combination of drm_asahi_render_flags flags. ``isp_zls_pixels`` ISP_ZLS_PIXELS register value. This contains the depth/stencil width/height, which may differ from the framebuffer width/height. ``vdm_ctrl_stream_base`` VDM_CTRL_STREAM_BASE register value. GPU address to the beginning of the VDM control stream. ``vertex_helper`` Helper program used for the vertex shader ``fragment_helper`` Helper program used for the fragment shader ``isp_scissor_base`` ISP_SCISSOR_BASE register value. GPU address of an array of scissor descriptors indexed in the render pass. ``isp_dbias_base`` ISP_DBIAS_BASE register value. GPU address of an array of depth bias values indexed in the render pass. ``isp_oclqry_base`` ISP_OCLQRY_BASE register value. GPU address of an array of occlusion query results written by the render pass. ``depth`` Depth buffer ``stencil`` Stencil buffer ``zls_ctrl`` ZLS_CTRL register value ``ppp_multisamplectl`` PPP_MULTISAMPLECTL register value ``sampler_heap`` Base address of the sampler heap. This heap is used for both vertex shaders and fragment shaders. The registers are per-stage, but there is no known use case for separate heaps. ``ppp_ctrl`` PPP_CTRL register value ``width_px`` Framebuffer width in pixels ``height_px`` Framebuffer height in pixels ``layers`` Number of layers in the framebuffer ``sampler_count`` Number of samplers in the sampler heap. ``utile_width_px`` Width of a logical tilebuffer tile in pixels ``utile_height_px`` Height of a logical tilebuffer tile in pixels ``samples`` # of samples in the framebuffer. Must be 1, 2, or 4. ``sample_size_B`` # of bytes in the tilebuffer required per sample. ``isp_merge_upper_x`` 32-bit float used in the hardware triangle merging. Calculate as: tan(60 deg) * width. Making these values UAPI avoids requiring floating-point calculations in the kernel in the hot path. ``isp_merge_upper_y`` 32-bit float. Calculate as: tan(60 deg) * height. See **isp_merge_upper_x**. ``bg`` Background program run for each tile at the start ``eot`` End-of-tile program ran for each tile at the end ``partial_bg`` Background program ran at the start of each tile when resuming the render pass during a partial render. ``partial_eot`` End-of-tile program ran at the end of each tile when pausing the render pass during a partial render. ``isp_bgobjdepth`` ISP_BGOBJDEPTH register value. This is the depth buffer clear value, encoded in the depth buffer's format: either a 32-bit float or a 16-bit unorm (with upper bits zeroed). ``isp_bgobjvals`` ISP_BGOBJVALS register value. The bottom 8-bits contain the stencil buffer clear value. ``ts_vtx`` Timestamps for the vertex portion of the render ``ts_frag`` Timestamps for the fragment portion of the render”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjà�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÜ�ubhŒ:”…”�”}”(hjÜ�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M´hjØ�ubj)�”}”(hXÓstruct drm_asahi_cmd_render { __u32 flags; __u32 isp_zls_pixels; __u64 vdm_ctrl_stream_base; struct drm_asahi_helper_program vertex_helper; struct drm_asahi_helper_program fragment_helper; __u64 isp_scissor_base; __u64 isp_dbias_base; __u64 isp_oclqry_base; struct drm_asahi_zls_buffer depth; struct drm_asahi_zls_buffer stencil; __u64 zls_ctrl; __u64 ppp_multisamplectl; __u64 sampler_heap; __u32 ppp_ctrl; __u16 width_px; __u16 height_px; __u16 layers; __u16 sampler_count; __u8 utile_width_px; __u8 utile_height_px; __u8 samples; __u8 sample_size_B; __u32 isp_merge_upper_x; __u32 isp_merge_upper_y; struct drm_asahi_bg_eot bg; struct drm_asahi_bg_eot eot; struct drm_asahi_bg_eot partial_bg; struct drm_asahi_bg_eot partial_eot; __u32 isp_bgobjdepth; __u32 isp_bgobjvals; struct drm_asahi_timestamps ts_vtx; struct drm_asahi_timestamps ts_frag; };”h]”hXÓstruct drm_asahi_cmd_render { __u32 flags; __u32 isp_zls_pixels; __u64 vdm_ctrl_stream_base; struct drm_asahi_helper_program vertex_helper; struct drm_asahi_helper_program fragment_helper; __u64 isp_scissor_base; __u64 isp_dbias_base; __u64 isp_oclqry_base; struct drm_asahi_zls_buffer depth; struct drm_asahi_zls_buffer stencil; __u64 zls_ctrl; __u64 ppp_multisamplectl; __u64 sampler_heap; __u32 ppp_ctrl; __u16 width_px; __u16 height_px; __u16 layers; __u16 sampler_count; __u8 utile_width_px; __u8 utile_height_px; __u8 samples; __u8 sample_size_B; __u32 isp_merge_upper_x; __u32 isp_merge_upper_y; struct drm_asahi_bg_eot bg; struct drm_asahi_bg_eot eot; struct drm_asahi_bg_eot partial_bg; struct drm_asahi_bg_eot partial_eot; __u32 isp_bgobjdepth; __u32 isp_bgobjvals; struct drm_asahi_timestamps ts_vtx; struct drm_asahi_timestamps ts_frag; };”…”�”}”hjù�sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M¶hjØ�ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj Žh]”hŒMembers”…”�”}”(hj Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MÙhjØ�ubj§)�”}”(hhh]”(j¬)�”}”(hŒ7``flags`` Combination of drm_asahi_render_flags flags. ”h]”(j²)�”}”(hŒ ``flags``”h]”jC)�”}”(hj)Žh]”hŒflags”…”�”}”(hj+Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj'Žubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MÎhj#ŽubjÃ)�”}”(hhh]”hì)�”}”(hŒ,Combination of drm_asahi_render_flags flags.”h]”hŒ,Combination of drm_asahi_render_flags flags.”…”�”}”(hjBŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ”``isp_zls_pixels`` ISP_ZLS_PIXELS register value. This contains the depth/stencil width/height, which may differ from the framebuffer width/height. ”h]”(j²)�”}”(hŒ``isp_zls_pixels``”h]”jC)�”}”(hjbŽh]”hŒisp_zls_pixels”…”�”}”(hjdŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj`Žubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MÔhj\ŽubjÃ)�”}”(hhh]”hì)�”}”(hŒ€ISP_ZLS_PIXELS register value. This contains the depth/stencil width/height, which may differ from the framebuffer width/height.”h]”hŒ€ISP_ZLS_PIXELS register value. This contains the depth/stencil width/height, which may differ from the framebuffer width/height.”…”�”}”(hj{Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MÒhjxŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj\Žubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jwŽh´MÔhj Žubj¬)�”}”(hŒv``vdm_ctrl_stream_base`` VDM_CTRL_STREAM_BASE register value. GPU address to the beginning of the VDM control stream. ”h]”(j²)�”}”(hŒ``vdm_ctrl_stream_base``”h]”jC)�”}”(hjœŽh]”hŒvdm_ctrl_stream_base”…”�”}”(hjžŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjšŽubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MÚhj–ŽubjÃ)�”}”(hhh]”hì)�”}”(hŒ\VDM_CTRL_STREAM_BASE register value. GPU address to the beginning of the VDM control stream.”h]”hŒ\VDM_CTRL_STREAM_BASE register value. GPU address to the beginning of the VDM control stream.”…”�”}”(hjµŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”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Œ<``vertex_helper`` Helper program used for the vertex shader ”h]”(j²)�”}”(hŒ``vertex_helper``”h]”jC)�”}”(hjÖŽh]”hŒ vertex_helper”…”�”}”(hjØŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÔŽubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MÞhjÐŽubjÃ)�”}”(hhh]”hì)�”}”(hŒ)Helper program used for the vertex shader”h]”hŒ)Helper program used for the vertex shader”…”�”}”(hjïŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ@``fragment_helper`` Helper program used for the fragment shader ”h]”(j²)�”}”(hŒ``fragment_helper``”h]”jC)�”}”(hj�h]”hŒfragment_helper”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj �ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Máhj �ubjÃ)�”}”(hhh]”hì)�”}”(hŒ+Helper program used for the fragment shader”h]”hŒ+Helper program used for the fragment shader”…”�”}”(hj(�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ�``isp_scissor_base`` ISP_SCISSOR_BASE register value. GPU address of an array of scissor descriptors indexed in the render pass. ”h]”(j²)�”}”(hŒ``isp_scissor_base``”h]”jC)�”}”(hjH�h]”hŒisp_scissor_base”…”�”}”(hjJ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjF�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MæhjB�ubjÃ)�”}”(hhh]”hì)�”}”(hŒkISP_SCISSOR_BASE register value. GPU address of an array of scissor descriptors indexed in the render pass.”h]”hŒkISP_SCISSOR_BASE register value. GPU address of an array of scissor descriptors indexed in the render pass.”…”�”}”(hja�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Måhj^�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjB�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j]�h´Mæhj Žubj¬)�”}”(hŒ{``isp_dbias_base`` ISP_DBIAS_BASE register value. GPU address of an array of depth bias values indexed in the render pass. ”h]”(j²)�”}”(hŒ``isp_dbias_base``”h]”jC)�”}”(hj‚�h]”hŒisp_dbias_base”…”�”}”(hj„�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj€�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mìhj|�ubjÃ)�”}”(hhh]”hì)�”}”(hŒgISP_DBIAS_BASE register value. GPU address of an array of depth bias values indexed in the render pass.”h]”hŒgISP_DBIAS_BASE register value. GPU address of an array of depth bias values indexed in the render pass.”…”�”}”(hj›�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”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Œƒ``isp_oclqry_base`` ISP_OCLQRY_BASE register value. GPU address of an array of occlusion query results written by the render pass. ”h]”(j²)�”}”(hŒ``isp_oclqry_base``”h]”jC)�”}”(hj¼�h]”hŒisp_oclqry_base”…”�”}”(hj¾�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjº�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mòhj¶�ubjÃ)�”}”(hhh]”hì)�”}”(hŒnISP_OCLQRY_BASE register value. GPU address of an array of occlusion query results written by the render pass.”h]”hŒnISP_OCLQRY_BASE register value. GPU address of an array of occlusion query results written by the render pass.”…”�”}”(hjÕ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”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Œ``depth`` Depth buffer ”h]”(j²)�”}”(hŒ ``depth``”h]”jC)�”}”(hjö�h]”hŒdepth”…”�”}”(hjø�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjô�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Möhjð�ubjÃ)�”}”(hhh]”hì)�”}”(hŒ Depth buffer”h]”hŒ Depth buffer”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ``stencil`` Stencil buffer ”h]”(j²)�”}”(hŒ ``stencil``”h]”jC)�”}”(hj/�h]”hŒstencil”…”�”}”(hj1�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj-�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mùhj)�ubjÃ)�”}”(hhh]”hì)�”}”(hŒStencil buffer”h]”hŒStencil buffer”…”�”}”(hjH�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jD�h´MùhjE�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj)�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jD�h´Mùhj Žubj¬)�”}”(hŒ%``zls_ctrl`` ZLS_CTRL register value ”h]”(j²)�”}”(hŒ ``zls_ctrl``”h]”jC)�”}”(hjh�h]”hŒzls_ctrl”…”�”}”(hjj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjf�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mühjb�ubjÃ)�”}”(hhh]”hì)�”}”(hŒZLS_CTRL register value”h]”hŒZLS_CTRL register value”…”�”}”(hj��h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j}�h´Mühj~�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjb�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j}�h´Mühj Žubj¬)�”}”(hŒ9``ppp_multisamplectl`` PPP_MULTISAMPLECTL register value ”h]”(j²)�”}”(hŒ``ppp_multisamplectl``”h]”jC)�”}”(hj¡�h]”hŒppp_multisamplectl”…”�”}”(hj£�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjŸ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mÿhj›�ubjÃ)�”}”(hhh]”hì)�”}”(hŒ!PPP_MULTISAMPLECTL register value”h]”hŒ!PPP_MULTISAMPLECTL register value”…”�”}”(hjº�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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ŒÃ``sampler_heap`` Base address of the sampler heap. This heap is used for both vertex shaders and fragment shaders. The registers are per-stage, but there is no known use case for separate heaps. ”h]”(j²)�”}”(hŒ``sampler_heap``”h]”jC)�”}”(hjÚ�h]”hŒ sampler_heap”…”�”}”(hjÜ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjØ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MhjÔ�ubjÃ)�”}”(hhh]”hì)�”}”(hŒ±Base address of the sampler heap. This heap is used for both vertex shaders and fragment shaders. The registers are per-stage, but there is no known use case for separate heaps.”h]”hŒ±Base address of the sampler heap. This heap is used for both vertex shaders and fragment shaders. The registers are per-stage, but there is no known use case for separate heaps.”…”�”}”(hjó�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mhjð�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÔ�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jï�h´Mhj Žubj¬)�”}”(hŒ%``ppp_ctrl`` PPP_CTRL register value ”h]”(j²)�”}”(hŒ ``ppp_ctrl``”h]”jC)�”}”(hj‘h]”hŒppp_ctrl”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M hj‘ubjÃ)�”}”(hhh]”hì)�”}”(hŒPPP_CTRL register value”h]”hŒPPP_CTRL register value”…”�”}”(hj-‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ)``width_px`` Framebuffer width in pixels ”h]”(j²)�”}”(hŒ ``width_px``”h]”jC)�”}”(hjM‘h]”hŒwidth_px”…”�”}”(hjO‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjK‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M hjG‘ubjÃ)�”}”(hhh]”hì)�”}”(hŒFramebuffer width in pixels”h]”hŒFramebuffer width in pixels”…”�”}”(hjf‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jb‘h´M hjc‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjG‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jb‘h´M hj Žubj¬)�”}”(hŒ+``height_px`` Framebuffer height in pixels ”h]”(j²)�”}”(hŒ ``height_px``”h]”jC)�”}”(hj†‘h]”hŒ height_px”…”�”}”(hjˆ‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj„‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mhj€‘ubjÃ)�”}”(hhh]”hì)�”}”(hŒFramebuffer height in pixels”h]”hŒFramebuffer height in pixels”…”�”}”(hjŸ‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ/``layers`` Number of layers in the framebuffer ”h]”(j²)�”}”(hŒ ``layers``”h]”jC)�”}”(hj¿‘h]”hŒlayers”…”�”}”(hjÁ‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj½‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mhj¹‘ubjÃ)�”}”(hhh]”hì)�”}”(hŒ#Number of layers in the framebuffer”h]”hŒ#Number of layers in the framebuffer”…”�”}”(hjØ‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ:``sampler_count`` Number of samplers in the sampler heap. ”h]”(j²)�”}”(hŒ``sampler_count``”h]”jC)�”}”(hjø‘h]”hŒ sampler_count”…”�”}”(hjú‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjö‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mhjò‘ubjÃ)�”}”(hhh]”hì)�”}”(hŒ'Number of samplers in the sampler heap.”h]”hŒ'Number of samplers in the sampler heap.”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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Œ@``utile_width_px`` Width of a logical tilebuffer tile in pixels ”h]”(j²)�”}”(hŒ``utile_width_px``”h]”jC)�”}”(hj1’h]”hŒutile_width_px”…”�”}”(hj3’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj/’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mhj+’ubjÃ)�”}”(hhh]”hì)�”}”(hŒ,Width of a logical tilebuffer tile in pixels”h]”hŒ,Width of a logical tilebuffer tile in pixels”…”�”}”(hjJ’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jF’h´MhjG’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj+’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jF’h´Mhj Žubj¬)�”}”(hŒB``utile_height_px`` Height of a logical tilebuffer tile in pixels ”h]”(j²)�”}”(hŒ``utile_height_px``”h]”jC)�”}”(hjj’h]”hŒutile_height_px”…”�”}”(hjl’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjh’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mhjd’ubjÃ)�”}”(hhh]”hì)�”}”(hŒ-Height of a logical tilebuffer tile in pixels”h]”hŒ-Height of a logical tilebuffer tile in pixels”…”�”}”(hjƒ’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j’h´Mhj€’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjd’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j’h´Mhj Žubj¬)�”}”(hŒA``samples`` # of samples in the framebuffer. Must be 1, 2, or 4. ”h]”(j²)�”}”(hŒ ``samples``”h]”jC)�”}”(hj£’h]”hŒsamples”…”�”}”(hj¥’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj¡’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mhj�’ubjÃ)�”}”(hhh]”hì)�”}”(hŒ4# of samples in the framebuffer. Must be 1, 2, or 4.”h]”hŒ4# of samples in the framebuffer. Must be 1, 2, or 4.”…”�”}”(hj¼’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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ŒD``sample_size_B`` # of bytes in the tilebuffer required per sample. ”h]”(j²)�”}”(hŒ``sample_size_B``”h]”jC)�”}”(hjÜ’h]”hŒ sample_size_B”…”�”}”(hjÞ’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÚ’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M!hjÖ’ubjÃ)�”}”(hhh]”hì)�”}”(hŒ1# of bytes in the tilebuffer required per sample.”h]”hŒ1# of bytes in the tilebuffer required per sample.”…”�”}”(hjõ’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hë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ŒÓ``isp_merge_upper_x`` 32-bit float used in the hardware triangle merging. Calculate as: tan(60 deg) * width. Making these values UAPI avoids requiring floating-point calculations in the kernel in the hot path. ”h]”(j²)�”}”(hŒ``isp_merge_upper_x``”h]”jC)�”}”(hj“h]”hŒisp_merge_upper_x”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M)hj“ubjÃ)�”}”(hhh]”(hì)�”}”(hŒV32-bit float used in the hardware triangle merging. Calculate as: tan(60 deg) * width.”h]”hŒV32-bit float used in the hardware triangle merging. Calculate as: tan(60 deg) * width.”…”�”}”(hj.“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M%hj+“ubhì)�”}”(hŒdMaking these values UAPI avoids requiring floating-point calculations in the kernel in the hot path.”h]”hŒdMaking these values UAPI avoids requiring floating-point calculations in the kernel in the hot path.”…”�”}”(hj=“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M(hj+“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j*“h´M)hj Žubj¬)�”}”(hŒc``isp_merge_upper_y`` 32-bit float. Calculate as: tan(60 deg) * height. See **isp_merge_upper_x**. ”h]”(j²)�”}”(hŒ``isp_merge_upper_y``”h]”jC)�”}”(hj^“h]”hŒisp_merge_upper_y”…”�”}”(hj`“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj\“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M/hjX“ubjÃ)�”}”(hhh]”hì)�”}”(hŒL32-bit float. Calculate as: tan(60 deg) * height. See **isp_merge_upper_x**.”h]”(hŒ632-bit float. Calculate as: tan(60 deg) * height. See ”…”�”}”(hjw“h²hh³Nh´NubjŒ)�”}”(hŒ**isp_merge_upper_x**”h]”hŒisp_merge_upper_x”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjw“ubhŒ.”…”�”}”(hjw“h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M.hjt“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjX“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³js“h´M/hj Žubj¬)�”}”(hŒ9``bg`` Background program run for each tile at the start ”h]”(j²)�”}”(hŒ``bg``”h]”jC)�”}”(hjª“h]”hŒbg”…”�”}”(hj¬“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj¨“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M3hj¤“ubjÃ)�”}”(hhh]”hì)�”}”(hŒ1Background program run for each tile at the start”h]”hŒ1Background program run for each tile at the start”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¿“h´M3hjÀ“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj¤“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j¿“h´M3hj Žubj¬)�”}”(hŒ9``eot`` End-of-tile program ran for each tile at the end ”h]”(j²)�”}”(hŒ``eot``”h]”jC)�”}”(hjã“h]”hŒeot”…”�”}”(hjå“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjá“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M6hjÝ“ubjÃ)�”}”(hhh]”hì)�”}”(hŒ0End-of-tile program ran for each tile at the end”h]”hŒ0End-of-tile program ran for each tile at the end”…”�”}”(hjü“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jø“h´M6hjù“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÝ“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jø“h´M6hj Žubj¬)�”}”(hŒw``partial_bg`` Background program ran at the start of each tile when resuming the render pass during a partial render. ”h]”(j²)�”}”(hŒ``partial_bg``”h]”jC)�”}”(hj”h]”hŒ partial_bg”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M;hj”ubjÃ)�”}”(hhh]”hì)�”}”(hŒgBackground program ran at the start of each tile when resuming the render pass during a partial render.”h]”hŒgBackground program ran at the start of each tile when resuming the render pass during a partial render.”…”�”}”(hj5”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M:hj2”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j1”h´M;hj Žubj¬)�”}”(hŒv``partial_eot`` End-of-tile program ran at the end of each tile when pausing the render pass during a partial render. ”h]”(j²)�”}”(hŒ``partial_eot``”h]”jC)�”}”(hjV”h]”hŒ partial_eot”…”�”}”(hjX”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjT”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MAhjP”ubjÃ)�”}”(hhh]”hì)�”}”(hŒeEnd-of-tile program ran at the end of each tile when pausing the render pass during a partial render.”h]”hŒeEnd-of-tile program ran at the end of each tile when pausing the render pass during a partial render.”…”�”}”(hjo”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M@hjl”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjP”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jk”h´MAhj Žubj¬)�”}”(hŒÀ``isp_bgobjdepth`` ISP_BGOBJDEPTH register value. This is the depth buffer clear value, encoded in the depth buffer's format: either a 32-bit float or a 16-bit unorm (with upper bits zeroed). ”h]”(j²)�”}”(hŒ``isp_bgobjdepth``”h]”jC)�”}”(hj�”h]”hŒisp_bgobjdepth”…”�”}”(hj’”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjŽ”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MHhjŠ”ubjÃ)�”}”(hhh]”hì)�”}”(hŒ¬ISP_BGOBJDEPTH register value. This is the depth buffer clear value, encoded in the depth buffer's format: either a 32-bit float or a 16-bit unorm (with upper bits zeroed).”h]”hŒ®ISP_BGOBJDEPTH register value. This is the depth buffer clear value, encoded in the depth buffer’s format: either a 32-bit float or a 16-bit unorm (with upper bits zeroed).”…”�”}”(hj©”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MFhj¦”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjŠ”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j¥”h´MHhj Žubj¬)�”}”(hŒj``isp_bgobjvals`` ISP_BGOBJVALS register value. The bottom 8-bits contain the stencil buffer clear value. ”h]”(j²)�”}”(hŒ``isp_bgobjvals``”h]”jC)�”}”(hjÊ”h]”hŒ isp_bgobjvals”…”�”}”(hjÌ”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÈ”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MNhjÄ”ubjÃ)�”}”(hhh]”hì)�”}”(hŒWISP_BGOBJVALS register value. The bottom 8-bits contain the stencil buffer clear value.”h]”hŒWISP_BGOBJVALS register value. The bottom 8-bits contain the stencil buffer clear value.”…”�”}”(hjã”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MMhjà”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÄ”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jß”h´MNhj Žubj¬)�”}”(hŒ;``ts_vtx`` Timestamps for the vertex portion of the render ”h]”(j²)�”}”(hŒ ``ts_vtx``”h]”jC)�”}”(hj•h]”hŒts_vtx”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MRhjþ”ubjÃ)�”}”(hhh]”hì)�”}”(hŒ/Timestamps for the vertex portion of the render”h]”hŒ/Timestamps for the vertex portion of the render”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j•h´MRhj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjþ”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j•h´MRhj Žubj¬)�”}”(hŒ=``ts_frag`` Timestamps for the fragment portion of the render”h]”(j²)�”}”(hŒ ``ts_frag``”h]”jC)�”}”(hj=•h]”hŒts_frag”…”�”}”(hj?•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj;•ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MThj7•ubjÃ)�”}”(hhh]”hì)�”}”(hŒ1Timestamps for the fragment portion of the render”h]”hŒ1Timestamps for the fragment portion of the render”…”�”}”(hjV•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MUhjS•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj7•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jR•h´MThj Žubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjØ�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj×Sh²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hj€•h]”hŒ Description”…”�”}”(hj‚•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj~•ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MXhj×Sh²hubhì)�”}”(hŒºThis command submits a single render pass. The hardware control stream may include many draws and subpasses, but within the command, the framebuffer dimensions and attachments are fixed.”h]”hŒºThis command submits a single render pass. The hardware control stream may include many draws and subpasses, but within the command, the framebuffer dimensions and attachments are fixed.”…”�”}”(hj–•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M±hj×Sh²hubhì)�”}”(hXBThe hardware requires the firmware to set a large number of Control Registers setting up state at render pass granularity before each command rendering 3D. The firmware bundles this state into data structures. Unfortunately, we cannot expose either any of that directly to userspace, because the kernel-firmware ABI is not stable. Although we can guarantee the firmware updates in tandem with the kernel, we cannot break old userspace when upgrading the firmware and kernel. Therefore, we need to abstract well the data structures to avoid tying our hands with future firmwares.”h]”hXBThe hardware requires the firmware to set a large number of Control Registers setting up state at render pass granularity before each command rendering 3D. The firmware bundles this state into data structures. Unfortunately, we cannot expose either any of that directly to userspace, because the kernel-firmware ABI is not stable. Although we can guarantee the firmware updates in tandem with the kernel, we cannot break old userspace when upgrading the firmware and kernel. Therefore, we need to abstract well the data structures to avoid tying our hands with future firmwares.”…”�”}”(hj¥•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mµhj×Sh²hubhì)�”}”(hŒƒThe bulk of drm_asahi_cmd_render therefore consists of values of hardware control registers, marshalled via the firmware interface.”h]”hŒƒThe bulk of drm_asahi_cmd_render therefore consists of values of hardware control registers, marshalled via the firmware interface.”…”�”}”(hj´•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M¾hj×Sh²hubhì)�”}”(hXŸThe framebuffer/tilebuffer dimensions are also specified here. In addition to being passed to the firmware/hardware, the kernel requires these dimensions to calculate various essential tiling-related data structures. It is unfortunate that our submits are heavier than on vendors with saner hardware-software interfaces. The upshot is all of this information is readily available to userspace with all current APIs.”h]”hXŸThe framebuffer/tilebuffer dimensions are also specified here. In addition to being passed to the firmware/hardware, the kernel requires these dimensions to calculate various essential tiling-related data structures. It is unfortunate that our submits are heavier than on vendors with saner hardware-software interfaces. The upshot is all of this information is readily available to userspace with all current APIs.”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MÁhj×Sh²hubhì)�”}”(hŒiIt looks odd - but it's not overly burdensome and it ensures we can remain compatible with old userspace.”h]”hŒkIt looks odd - but it’s not overly burdensome and it ensures we can remain compatible with old userspace.”…”�”}”(hjÒ•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MÈhj×Sh²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒ drm_asahi_cmd_compute (C struct)”Œc.drm_asahi_cmd_compute”hNt”auh1jJhj×Sh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_asahi_cmd_compute”h]”jg)�”}”(hŒstruct drm_asahi_cmd_compute”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hjú•h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhjö•h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”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Œdrm_asahi_cmd_compute”h]”j–)�”}”(hjô•h]”hŒdrm_asahi_cmd_compute”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hj–ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjö•h²hh³j–h´MÎubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”hì)�”}”(hŒCommand to submit compute”h]”hŒCommand to submit compute”…”�”}”(hj<–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MYhj9–h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjï•h²hh³j–h´MÎubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjT–jçjT–jè‰jé‰jê‰uh1j[h²hhj×Sh³Nh´Nubjì)�”}”(hXV**Definition**:: struct drm_asahi_cmd_compute { __u32 flags; __u32 sampler_count; __u64 cdm_ctrl_stream_base; __u64 cdm_ctrl_stream_end; __u64 sampler_heap; struct drm_asahi_helper_program helper; struct drm_asahi_timestamps ts; }; **Members** ``flags`` MBZ ``sampler_count`` Number of samplers in the sampler heap. ``cdm_ctrl_stream_base`` CDM_CTRL_STREAM_BASE register value. GPU address to the beginning of the CDM control stream. ``cdm_ctrl_stream_end`` GPU base address to the end of the hardware control stream. Note this only considers the first contiguous segment of the control stream, as the stream might jump elsewhere. ``sampler_heap`` Base address of the sampler heap. ``helper`` Helper program used for this compute command ``ts`` Timestamps for the compute command”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj`–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj\–ubhŒ:”…”�”}”(hj\–h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M]hjX–ubj)�”}”(hŒòstruct drm_asahi_cmd_compute { __u32 flags; __u32 sampler_count; __u64 cdm_ctrl_stream_base; __u64 cdm_ctrl_stream_end; __u64 sampler_heap; struct drm_asahi_helper_program helper; struct drm_asahi_timestamps ts; };”h]”hŒòstruct drm_asahi_cmd_compute { __u32 flags; __u32 sampler_count; __u64 cdm_ctrl_stream_base; __u64 cdm_ctrl_stream_end; __u64 sampler_heap; struct drm_asahi_helper_program helper; struct drm_asahi_timestamps ts; };”…”�”}”hjy–sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M_hjX–ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hjŠ–h]”hŒMembers”…”�”}”(hjŒ–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjˆ–ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MihjX–ubj§)�”}”(hhh]”(j¬)�”}”(hŒ``flags`` MBZ ”h]”(j²)�”}”(hŒ ``flags``”h]”jC)�”}”(hj©–h]”hŒflags”…”�”}”(hj«–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj§–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mahj£–ubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ”h]”hŒMBZ”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¾–h´Mahj¿–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj£–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j¾–h´Mahj –ubj¬)�”}”(hŒ:``sampler_count`` Number of samplers in the sampler heap. ”h]”(j²)�”}”(hŒ``sampler_count``”h]”jC)�”}”(hjâ–h]”hŒ sampler_count”…”�”}”(hjä–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjà–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MdhjÜ–ubjÃ)�”}”(hhh]”hì)�”}”(hŒ'Number of samplers in the sampler heap.”h]”hŒ'Number of samplers in the sampler heap.”…”�”}”(hjû–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j÷–h´Mdhjø–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÜ–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j÷–h´Mdhj –ubj¬)�”}”(hŒv``cdm_ctrl_stream_base`` CDM_CTRL_STREAM_BASE register value. GPU address to the beginning of the CDM control stream. ”h]”(j²)�”}”(hŒ``cdm_ctrl_stream_base``”h]”jC)�”}”(hj—h]”hŒcdm_ctrl_stream_base”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mihj—ubjÃ)�”}”(hhh]”hì)�”}”(hŒ\CDM_CTRL_STREAM_BASE register value. GPU address to the beginning of the CDM control stream.”h]”hŒ\CDM_CTRL_STREAM_BASE register value. GPU address to the beginning of the CDM control stream.”…”�”}”(hj4—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mhhj1—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j0—h´Mihj –ubj¬)�”}”(hŒÅ``cdm_ctrl_stream_end`` GPU base address to the end of the hardware control stream. Note this only considers the first contiguous segment of the control stream, as the stream might jump elsewhere. ”h]”(j²)�”}”(hŒ``cdm_ctrl_stream_end``”h]”jC)�”}”(hjU—h]”hŒcdm_ctrl_stream_end”…”�”}”(hjW—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjS—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MphjO—ubjÃ)�”}”(hhh]”hì)�”}”(hŒ¬GPU base address to the end of the hardware control stream. Note this only considers the first contiguous segment of the control stream, as the stream might jump elsewhere.”h]”hŒ¬GPU base address to the end of the hardware control stream. Note this only considers the first contiguous segment of the control stream, as the stream might jump elsewhere.”…”�”}”(hjn—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mnhjk—ubah}”(•.Qh]”h ]”h"]”h$]”h&]”uh1jÂhjO—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jj—h´Mphj –ubj¬)�”}”(hŒ3``sampler_heap`` Base address of the sampler heap. ”h]”(j²)�”}”(hŒ``sampler_heap``”h]”jC)�”}”(hj�—h]”hŒ sampler_heap”…”�”}”(hj‘—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj�—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mthj‰—ubjÃ)�”}”(hhh]”hì)�”}”(hŒ!Base address of the sampler heap.”h]”hŒ!Base address of the sampler heap.”…”�”}”(hj¨—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¤—h´Mthj¥—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj‰—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j¤—h´Mthj –ubj¬)�”}”(hŒ8``helper`` Helper program used for this compute command ”h]”(j²)�”}”(hŒ ``helper``”h]”jC)�”}”(hjÈ—h]”hŒhelper”…”�”}”(hjÊ—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÆ—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mwhj—ubjÃ)�”}”(hhh]”hì)�”}”(hŒ,Helper program used for this compute command”h]”hŒ,Helper program used for this compute command”…”�”}”(hjá—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÝ—h´MwhjÞ—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÝ—h´Mwhj –ubj¬)�”}”(hŒ)``ts`` Timestamps for the compute command”h]”(j²)�”}”(hŒ``ts``”h]”jC)�”}”(hj˜h]”hŒts”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÿ—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Myhjû—ubjÃ)�”}”(hhh]”hì)�”}”(hŒ"Timestamps for the compute command”h]”hŒ"Timestamps for the compute command”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Mzhj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjû—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j˜h´Myhj –ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjX–ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj×Sh²hh³Nh´Nubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjD˜h]”hŒ Description”…”�”}”(hjF˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjB˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M}hj×Sh²hubhì)�”}”(hŒáThis command submits a control stream consisting of compute dispatches. There is essentially no limit on how many compute dispatches may be included in a single compute command, although timestamps are at command granularity.”h]”hŒáThis command submits a control stream consisting of compute dispatches. There is essentially no limit on how many compute dispatches may be included in a single compute command, although timestamps are at command granularity.”…”�”}”(hjZ˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MZhj×Sh²hubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒdrm_asahi_get_time (C struct)”Œc.drm_asahi_get_time”hNt”auh1jJhj×Sh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒdrm_asahi_get_time”h]”jg)�”}”(hŒstruct drm_asahi_get_time”h]”(jm)�”}”(hjph]”hŒstruct”…”�”}”(hj‚˜h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jlhj~˜h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´Maubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�˜h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hj~˜h²hh³j�˜h´Maubj�)�”}”(hŒdrm_asahi_get_time”h]”j–)�”}”(hj|˜h]”hŒdrm_asahi_get_time”…”�”}”(hj¢˜h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjž˜ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hj~˜h²hh³j�˜h´Maubeh}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶j·hjz˜h²hh³j�˜h´Maubah}”(h]”ju˜ah ]”(j»j¼eh"]”h$]”h&]”jÀˆjÁ)jÂhuh1j`h³j�˜h´Mahjw˜h²hubjÄ)�”}”(hhh]”hì)�”}”(hŒ,Arguments passed to DRM_IOCTL_ASAHI_GET_TIME”h]”hŒ,Arguments passed to DRM_IOCTL_ASAHI_GET_TIME”…”�”}”(hjĘh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M~hjÁ˜h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjw˜h²hh³j�˜h´Maubeh}”(h]”h ]”(jàŒstruct”eh"]”h$]”h&]”jåjàjæjܘjçjܘjè‰jé‰jê‰uh1j[h²hhj×Sh³Nh´Nubjì)�”}”(hŒÃ**Definition**:: struct drm_asahi_get_time { __u64 flags; __u64 gpu_timestamp; }; **Members** ``flags`` MBZ. ``gpu_timestamp`` On return, the GPU timestamp in nanoseconds.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jŒ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjè˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjä˜ubhŒ:”…”�”}”(hjä˜h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M‚hjà˜ubj)�”}”(hŒHstruct drm_asahi_get_time { __u64 flags; __u64 gpu_timestamp; };”h]”hŒHstruct drm_asahi_get_time { __u64 flags; __u64 gpu_timestamp; };”…”�”}”hj™sbah}”(h]”h ]”h"]”h$]”h&]”j­j®uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M„hjà˜ubhì)�”}”(hŒ **Members**”h]”jŒ)�”}”(hj™h]”hŒMembers”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M‰hjà˜ubj§)�”}”(hhh]”(j¬)�”}”(hŒ``flags`` MBZ. ”h]”(j²)�”}”(hŒ ``flags``”h]”jC)�”}”(hj1™h]”hŒflags”…”�”}”(hj3™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj/™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M‚hj+™ubjÃ)�”}”(hhh]”hì)�”}”(hŒMBZ.”h]”hŒMBZ.”…”�”}”(hjJ™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jF™h´M‚hjG™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj+™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jF™h´M‚hj(™ubj¬)�”}”(hŒ>``gpu_timestamp`` On return, the GPU timestamp in nanoseconds.”h]”(j²)�”}”(hŒ``gpu_timestamp``”h]”jC)�”}”(hjj™h]”hŒ gpu_timestamp”…”�”}”(hjl™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjh™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M„hjd™ubjÃ)�”}”(hhh]”hì)�”}”(hŒ,On return, the GPU timestamp in nanoseconds.”h]”hŒ,On return, the GPU timestamp in nanoseconds.”…”�”}”(hjƒ™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M…hj€™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjd™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³j™h´M„hj(™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjà˜ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj×Sh²hh³Nh´NubjK)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jWŒDRM_IOCTL_ASAHI (C macro)”Œc.DRM_IOCTL_ASAHI”hNt”auh1jJhj×Sh²hh³Nh´Nubj\)�”}”(hhh]”(ja)�”}”(hŒDRM_IOCTL_ASAHI”h]”jg)�”}”(hŒDRM_IOCTL_ASAHI”h]”j�)�”}”(hŒDRM_IOCTL_ASAHI”h]”j–)�”}”(hj¾™h]”hŒDRM_IOCTL_ASAHI”…”�”}”(hjÈ™h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j•hjÄ™ubah}”(h]”h ]”(j¨j©eh"]”h$]”h&]”j­j®uh1j�hjÀ™h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M‰ubah}”(h]”h ]”h"]”h$]”h&]”j­j®jµˆuh1jfj¶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]”h}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj¹™h²hh³jÛ™h´M‰ubeh}”(h]”h ]”(jàŒmacro”eh"]”h$]”h&]”jåjàjæjô™jçjô™jè‰jé‰jê‰uh1j[h²hhj×Sh³Nh´Nubhì)�”}”(hŒ,``DRM_IOCTL_ASAHI (__access, __id, __type)``”h]”jC)�”}”(hjú™h]”hŒ(DRM_IOCTL_ASAHI (__access, __id, __type)”…”�”}”(hjü™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjø™ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M‹hj×Sh²hubjK)�”}”(hŒBuild an Asahi IOCTL number ”h]”hì)�”}”(hŒBuild an Asahi IOCTL number”h]”hŒBuild an Asahi IOCTL number”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M‰hjšubah}”(h]”h ]”h"]”h$]”h&]”uh1jJh³j"šh´M‰hj×Sh²hubjì)�”}”(hXF**Parameters** ``__access`` Access type. Must be R, W or RW. ``__id`` One of the DRM_ASAHI_xxx id. ``__type`` Suffix of the type being passed to the IOCTL. **Description** Don't use this macro directly, use the DRM_IOCTL_ASAHI_xxx values instead. **Return** An IOCTL number to be passed to ioctl() from userspace.”h]”(hì)�”}”(hŒ**Parameters**”h]”jŒ)�”}”(hj/šh]”hŒ Parameters”…”�”}”(hj1šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj-šubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M�hj)šubj§)�”}”(hhh]”(j¬)�”}”(hŒ.``__access`` Access type. Must be R, W or RW. ”h]”(j²)�”}”(hŒ ``__access``”h]”jC)�”}”(hjNšh]”hŒ__access”…”�”}”(hjPšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjLšubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MŠhjHšubjÃ)�”}”(hhh]”hì)�”}”(hŒ Access type. Must be R, W or RW.”h]”hŒ Access type. Must be R, W or RW.”…”�”}”(hjgšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jcšh´MŠhjdšubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjHšubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jcšh´MŠhjEšubj¬)�”}”(hŒ&``__id`` One of the DRM_ASAHI_xxx id. ”h]”(j²)�”}”(hŒ``__id``”h]”jC)�”}”(hj‡šh]”hŒ__id”…”�”}”(hj‰šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj…šubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M‹hj�šubjÃ)�”}”(hhh]”hì)�”}”(hŒOne of the DRM_ASAHI_xxx id.”h]”hŒOne of the DRM_ASAHI_xxx id.”…”�”}”(hj šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jœšh´M‹hj�šubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj�šubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jœšh´M‹hjEšubj¬)�”}”(hŒ9``__type`` Suffix of the type being passed to the IOCTL. ”h]”(j²)�”}”(hŒ ``__type``”h]”jC)�”}”(hjÀšh]”hŒ__type”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj¾šubah}”(h]”h ]”h"]”h$]”h&]”uh1j±h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MŒhjºšubjÃ)�”}”(hhh]”hì)�”}”(hŒ-Suffix of the type being passed to the IOCTL.”h]”hŒ-Suffix of the type being passed to the IOCTL.”…”�”}”(hjÙšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÕšh´MŒhjÖšubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjºšubeh}”(h]”h ]”h"]”h$]”h&]”uh1j«h³jÕšh´MŒhjEšubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj)šubhì)�”}”(hŒ**Description**”h]”jŒ)�”}”(hjûšh]”hŒ Description”…”�”}”(hjýšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjùšubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´MŽhj)šubhì)�”}”(hŒJDon't use this macro directly, use the DRM_IOCTL_ASAHI_xxx values instead.”h]”hŒLDon’t use this macro directly, use the DRM_IOCTL_ASAHI_xxx values instead.”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M�hj)šubhì)�”}”(hŒ **Return**”h]”jŒ)�”}”(hj"›h]”hŒReturn”…”�”}”(hj$›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj ›ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M�hj)šubhì)�”}”(hŒ7An IOCTL number to be passed to ioctl() from userspace.”h]”hŒ7An IOCTL number to be passed to ioctl() from userspace.”…”�”}”(hj8›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/driver-uapi:36: ./include/uapi/drm/asahi_drm.h”h´M‘hj)šubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jëhj×Sh²hh³Nh´Nubeh}”(h]”jAah ]”h"]”Œdrm/asahi uapi”ah$]”h&]”uh1hµhh·h²hh³hÌh´K"ubeh}”(h]”jah ]”h"]”Œdrm driver uapi”ah$]”h&]”uh1hµhhh²hh³hÌh´Kubeh}”(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”}”Œengine discovery uapi”]”j!asŒrefids”}”(j†]”j|ajm ]”jc ajÄ ]”jº aj€$]”jv$aj!]”j•9aj3M]”j)MajÔg]”jÊgaj3i]”j)iajj]”jjajdj]”jZjajH¸]”j>¸ajŒ¸]”j‚¸aj¼]”j ¼ajmO]”jcOajòS]”jèSauŒnameids”}”(jY›jjfjbjWjjžj†jƒ jm jÚ jÄ j–$j€$jµ9j!jIMj3Mj¶gjAj¯gj`j*¸jŽjêgjÔgjIij3ij'jjjjzjjdjjÔSj°j^¸jH¸j¢¸jŒ¸j,¼j¼jƒOjmOj¼OjÏjãOjñjÍSjjR›jAjTjòSuŒ nametypes”}”(jY›‰jf‰jW‰jžˆjƒ ˆjÚ ˆj–$ˆjµ9ˆjIMˆj¶g‰j¯g‰j*¸‰jêgˆjIiˆj'jˆjzjˆjÔS‰j^¸ˆj¢¸ˆj,¼ˆjƒOˆj¼O‰jãO‰jÍS‰jR›‰jTˆuh}”(jh·jbhÏjjij†j‡jYjbjßjäjj jm jn j• jš jå jê j] jb jdjijžj£j3j8jXj]jrjwjj"jj jÄ jÅ j„!j‰!j€$j�$jN%jS%j�&j”&jÓ(jØ(j‡+jŒ+jÒ.j×.j�3j•3j6j6j!j 9j¬:j±:j#=j(=j¶>j»>jûBjCjDjDjSEjXEjÏIjÔIj�Kj†Kj3Mj4MjyMj~MjÖPjÛPj¸Sj½Sj^UjcUjAjWj`j,WjmXjrXjZj"Zj•[jš[j_j_jÅbjÊbjŠdj�djŽj¹gjÔgjÕgj3ij4ij[ij`ij·ij¼ijjjjjdjjejjŒjj‘jj=ljBlj€mj…mjBojGoj½pjÂpj¥rjªrjôsjùsjÇyjÌyj$|j)|jÉ~jÎ~jÓ�jØ�jƒjƒj{„j€„j†j†j·jÓ‡j‰j‰j÷‹jü‹jQŽjVŽj-�j2�j¨�j­�jù‘jþ‘jJ“jO“jo”jt”jÞ–jã–jY˜j^˜jÕ™jÚ™j{›j€›j¿ŸjÄŸj¡j¡j¸£j½£j3¥j8¥j®¦j³¦jЍj�¨jp«ju«jÁ¬jƬjK®jP®j™¯jž¯j¯°j´°j ²j¥²j©³j®³jË´jдj�¶j”¶j°j-¸jH¸jI¸jŒ¸j�¸j¼j¼j™¼jž¼jB¾jG¾jÈÀjÍÀjÄjÄj{Åj€ÅjƒÇjˆÇj™ÈjžÈjÌjÌjÊÍjÏÍj`ÑjeÑj Õj¥ÕjB×jG×j‹Új�ÚjüÜjÝj»ßjÀßjQájVájxåj}åjpëjuëjNîjSîjiñjnñj ójójüj üj\jaj jjÿj j  j¥ j3 j8 j@jEjÃjÈj‰jŽjŸj¤jîjój?jDj'!j,!j°"jµ"jë%jð%j(j (jþ)j*jH/jM/jx1j}1j3j 3j’4j—4jÎ5jÓ5jÞ7jã7jÎ:jÓ:j¡Ej¦Ej²Ij·IjIMjNMjmOjnOjÏj˜Ojñj¿OjjæOjŒPj‘PjÛQjàQjAj×SjòSjóSjSUjXUj¡Xj¦XjŸ]j¤]j²^j·^jf`jk`j”bj™bjÖcjÛcjüdjejéfjîfjdhjihjûijjjEljJljhnjmnj~ojƒojZpj_pjòrj÷rjXuj]uj%wj*wjIyjNyj‹zj�zj¡{j¦{j}j!}jË}jÐ}jo€jt€jnƒjsƒjX…j]…jC‡jH‡j¼ˆjÁˆj4Šj9Šjô‹jù‹jm�jr�jí•jò•ju˜jz˜j·™j¼™hËhòjjj;j2jZjQjˆjjªj¡jÉjÀjëjâj jj;j2uŒ 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ŒRHyperlink target "uevents-generated-by-i915-on-its-device-node" is not referenced.”…”�”}”hjù›sbah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjö›ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”ŒINFO”Œline”KŒsource”hÌuh1jô›ubjõ›)�”}”(hhh]”hì)�”}”(hhh]”hŒlHyperlink target "perf-events-exposed-by-i915-through-sys-bus-event-sources-drivers-i915" is not referenced.”…”�”}”hjœsbah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjœubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jœŒline”K»Œsource”hÌuh1jô›ubjõ›)�”}”(hhh]”hì)�”}”(hhh]”hŒ9Hyperlink target "virtual-engine-uapi" is not referenced.”…”�”}”hj.œsbah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj+œubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jœŒline”MðŒsource”hÌuh1jô›ubjõ›)�”}”(hhh]”hì)�”}”(hhh]”hŒ=Hyperlink target "context-engine-map-uapi" is not referenced.”…”�”}”hjHœsbah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjEœubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jœŒline”MªŒsource”hÌuh1jô›ubjõ›)�”}”(hhh]”hì)�”}”(hhh]”hŒ