Ԗsphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget'/translations/zh_CN/gpu/xe/xe_debuggingmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/zh_TW/gpu/xe/xe_debuggingmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/it_IT/gpu/xe/xe_debuggingmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/ja_JP/gpu/xe/xe_debuggingmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/ko_KR/gpu/xe/xe_debuggingmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/sp_SP/gpu/xe/xe_debuggingmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h*SPDX-License-Identifier: (GPL-2.0+ OR MIT)h]h*SPDX-License-Identifier: (GPL-2.0+ OR MIT)}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhA/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_debugging.rsthKubhsection)}(hhh](htitle)}(h Debuggingh]h Debugging}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubhtarget)}(h.. _Xe Asserts:h]h}(h]h ]h"]h$]h&]refid xe-assertsuh1hhKhhhhhN referencedKubh paragraph)}(h**Xe Asserts**h]hstrong)}(hhh]h Xe Asserts}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhubah}(h]hah ]h"] xe assertsah$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_debugging:7: ./drivers/gpu/drm/xe/xe_assert.hhKhhhhexpect_referenced_by_name}hhsexpect_referenced_by_id}hhshKubh)}(hWhile Xe driver aims to be simpler than legacy i915 driver it is still complex enough that some changes introduced while adding new functionality could break the existing code.h]hWhile Xe driver aims to be simpler than legacy i915 driver it is still complex enough that some changes introduced while adding new functionality could break the existing code.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_debugging:7: ./drivers/gpu/drm/xe/xe_assert.hhKhhhhubh)}(hAdding :c:type:`drm_WARN` or :c:type:`drm_err` to catch unwanted programming usage could lead to undesired increased driver footprint and may impact production driver performance as this additional code will be always present.h](hAdding }(hjhhhNhNubh)}(h:c:type:`drm_WARN`h]hliteral)}(hjh]hdrm_WARN}(hjhhhNhNubah}(h]h ](xrefcc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocgpu/xe/xe_debugging refdomainj!reftypetype refexplicitrefwarn reftargetdrm_WARNuh1hha/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_debugging:7: ./drivers/gpu/drm/xe/xe_assert.hhKhjubh or }(hjhhhNhNubh)}(h:c:type:`drm_err`h]j)}(hj<h]hdrm_err}(hj>hhhNhNubah}(h]h ](j j!c-typeeh"]h$]h&]uh1jhj:ubah}(h]h ]h"]h$]h&]refdocj- refdomainj!reftypetype refexplicitrefwarnj3drm_erruh1hhj5hKhjubh to catch unwanted programming usage could lead to undesired increased driver footprint and may impact production driver performance as this additional code will be always present.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj5hKhhhhubh)}(hXfTo allow annotate functions with additional detailed debug checks to assert that all prerequisites are satisfied, without worrying about footprint or performance penalty on production builds where all potential misuses introduced during code integration were already fixed, we introduce family of Xe assert macros that try to follow classic assert() utility:h]hXfTo allow annotate functions with additional detailed debug checks to assert that all prerequisites are satisfied, without worrying about footprint or performance penalty on production builds where all potential misuses introduced during code integration were already fixed, we introduce family of Xe assert macros that try to follow classic assert() utility:}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_debugging:7: ./drivers/gpu/drm/xe/xe_assert.hhKhhhhubh block_quote)}(h2* xe_assert() * xe_tile_assert() * xe_gt_assert() h]h bullet_list)}(hhh](h list_item)}(h xe_assert()h]h)}(hjh]h xe_assert()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_debugging:7: ./drivers/gpu/drm/xe/xe_assert.hhKhjubah}(h]h ]h"]h$]h&]uh1j}hjzubj~)}(hxe_tile_assert()h]h)}(hjh]hxe_tile_assert()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_debugging:7: ./drivers/gpu/drm/xe/xe_assert.hhK hjubah}(h]h ]h"]h$]h&]uh1j}hjzubj~)}(hxe_gt_assert() h]h)}(hxe_gt_assert()h]hxe_gt_assert()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_debugging:7: ./drivers/gpu/drm/xe/xe_assert.hhK!hjubah}(h]h ]h"]h$]h&]uh1j}hjzubeh}(h]h ]h"]h$]h&]bullet*uh1jxhjhKhjtubah}(h]h ]h"]h$]h&]uh1jrhjhKhhhhubh)}(hX#These macros are implemented on top of :c:type:`drm_WARN`, but unlikely to the origin, warning is triggered when provided condition is false. Additionally all above assert macros cannot be used in expressions or as a condition, since underlying code will be compiled out on non-debug builds.h](h'These macros are implemented on top of }(hjhhhNhNubh)}(h:c:type:`drm_WARN`h]j)}(hjh]hdrm_WARN}(hjhhhNhNubah}(h]h ](j j!c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj- refdomainj!reftypetype refexplicitrefwarnj3drm_WARNuh1hha/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_debugging:7: ./drivers/gpu/drm/xe/xe_assert.hhK#hjubh, but unlikely to the origin, warning is triggered when provided condition is false. Additionally all above assert macros cannot be used in expressions or as a condition, since underlying code will be compiled out on non-debug builds.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhK#hhhhubh)}(hNote that these macros are not intended for use to cover known gaps in the implementation; for such cases use regular :c:type:`drm_WARN` or :c:type:`drm_err` and provide valid safe fallback.h](hvNote that these macros are not intended for use to cover known gaps in the implementation; for such cases use regular }(hjhhhNhNubh)}(h:c:type:`drm_WARN`h]j)}(hjh]hdrm_WARN}(hjhhhNhNubah}(h]h ](j j!c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj- refdomainj!reftypetype refexplicitrefwarnj3drm_WARNuh1hha/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_debugging:7: ./drivers/gpu/drm/xe/xe_assert.hhK(hjubh or }(hjhhhNhNubh)}(h:c:type:`drm_err`h]j)}(hj6h]hdrm_err}(hj8hhhNhNubah}(h]h ](j j!c-typeeh"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]refdocj- refdomainj!reftypetype refexplicitrefwarnj3drm_erruh1hhj/hK(hjubh! and provide valid safe fallback.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj/hK(hhhhubh)}(hAlso in cases where performance or footprint is not an issue, developers should continue to use the regular :c:type:`drm_WARN` or :c:type:`drm_err` to ensure that bug reports from production builds will contain meaningful diagnostics data.h](hlAlso in cases where performance or footprint is not an issue, developers should continue to use the regular }(hj]hhhNhNubh)}(h:c:type:`drm_WARN`h]j)}(hjgh]hdrm_WARN}(hjihhhNhNubah}(h]h ](j j!c-typeeh"]h$]h&]uh1jhjeubah}(h]h ]h"]h$]h&]refdocj- refdomainj!reftypetype refexplicitrefwarnj3drm_WARNuh1hha/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_debugging:7: ./drivers/gpu/drm/xe/xe_assert.hhK,hj]ubh or }(hj]hhhNhNubh)}(h:c:type:`drm_err`h]j)}(hjh]hdrm_err}(hjhhhNhNubah}(h]h ](j j!c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj- refdomainj!reftypetype refexplicitrefwarnj3drm_erruh1hhjhK,hj]ubh\ to ensure that bug reports from production builds will contain meaningful diagnostics data.}(hj]hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhK,hhhhubh)}(hIBelow code shows how asserts could help in debug to catch unplanned use::h]hHBelow code shows how asserts could help in debug to catch unplanned use:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_debugging:7: ./drivers/gpu/drm/xe/xe_assert.hhK0hhhhubh literal_block)}(hX|static void one_igfx(struct xe_device *xe) { xe_assert(xe, xe->info.is_dgfx == false); xe_assert(xe, xe->info.tile_count == 1); } static void two_dgfx(struct xe_device *xe) { xe_assert(xe, xe->info.is_dgfx); xe_assert(xe, xe->info.tile_count == 2); } void foo(struct xe_device *xe) { if (xe->info.dgfx) return two_dgfx(xe); return one_igfx(xe); } void bar(struct xe_device *xe) { if (drm_WARN_ON(xe->drm, xe->info.tile_count > 2)) return; if (xe->info.tile_count == 2) return two_dgfx(xe); return one_igfx(xe); }h]hX|static void one_igfx(struct xe_device *xe) { xe_assert(xe, xe->info.is_dgfx == false); xe_assert(xe, xe->info.tile_count == 1); } static void two_dgfx(struct xe_device *xe) { xe_assert(xe, xe->info.is_dgfx); xe_assert(xe, xe->info.tile_count == 2); } void foo(struct xe_device *xe) { if (xe->info.dgfx) return two_dgfx(xe); return one_igfx(xe); } void bar(struct xe_device *xe) { if (drm_WARN_ON(xe->drm, xe->info.tile_count > 2)) return; if (xe->info.tile_count == 2) return two_dgfx(xe); return one_igfx(xe); }}hjsbah}(h]h ]h"]h$]h&]hhuh1jha/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_debugging:7: ./drivers/gpu/drm/xe/xe_assert.hhK2hhhhubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](singlexe_assert (C macro) c.xe_asserthNtauh1jhhhhhNhNubhdesc)}(hhh](hdesc_signature)}(h xe_asserth]hdesc_signature_line)}(h xe_asserth]h desc_name)}(h xe_asserth]h desc_sig_name)}(hjh]h xe_assert}(hjhhhNhNubah}(h]h ]nah"]h$]h&]uh1jhjubah}(h]h ](sig-namedescnameeh"]h$]h&]hhuh1jhjhhha/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_debugging:7: ./drivers/gpu/drm/xe/xe_assert.hhKlubah}(h]h ]h"]h$]h&]hh add_permalinkuh1jsphinx_line_type declaratorhjhhhjhKlubah}(h]jah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1jhjhKlhjhhubh desc_content)}(hhh]h}(h]h ]h"]h$]h&]uh1j'hjhhhjhKlubeh}(h]h ](j!macroeh"]h$]h&]domainj!objtypej5desctypej5noindex noindexentrynocontentsentryuh1jhhhhhNhNubh)}(h``xe_assert (xe, condition)``h]j)}(hjAh]hxe_assert (xe, condition)}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?ubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_debugging:7: ./drivers/gpu/drm/xe/xe_assert.hhKnhhhhubjs)}(h+warn if condition is false when debugging. h]h)}(h*warn if condition is false when debugging.h]h*warn if condition is false when debugging.}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_debugging:7: ./drivers/gpu/drm/xe/xe_assert.hhK_hjWubah}(h]h ]h"]h$]h&]uh1jrhjihK_hhhhubh container)}(hX=**Parameters** ``xe`` the :c:type:`struct xe_device ` pointer to which :c:type:`condition` applies ``condition`` condition to check **Description** xe_assert() uses :c:type:`drm_WARN` to emit a warning and print additional information that could be read from the :c:type:`xe` pointer if provided :c:type:`condition` is false. Contrary to :c:type:`drm_WARN`, xe_assert() is effective only on debug builds (:c:type:`CONFIG_DRM_XE_DEBUG` must be enabled) and cannot be used in expressions or as a condition. See `Xe Asserts`_ for general usage guidelines.h](h)}(h**Parameters**h]h)}(hjxh]h Parameters}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjvubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_debugging:7: ./drivers/gpu/drm/xe/xe_assert.hhKchjrubhdefinition_list)}(hhh](hdefinition_list_item)}(h_``xe`` the :c:type:`struct xe_device ` pointer to which :c:type:`condition` applies h](hterm)}(h``xe``h]j)}(hjh]hxe}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_debugging:7: ./drivers/gpu/drm/xe/xe_assert.hhK`hjubh definition)}(hhh]h)}(hWthe :c:type:`struct xe_device ` pointer to which :c:type:`condition` appliesh](hthe }(hjhhhNhNubh)}(h&:c:type:`struct xe_device `h]j)}(hjh]hstruct xe_device}(hjhhhNhNubah}(h]h ](j j!c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj- refdomainj!reftypetype refexplicitrefwarn c:parent_keysphinx.domains.c LookupKey)}data]sbj3 xe_deviceuh1hhjhK`hjubh pointer to which }(hjhhhNhNubh)}(h:c:type:`condition`h]j)}(hjh]h condition}(hjhhhNhNubah}(h]h ](j j!c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj- refdomainj!reftypetype refexplicitrefwarnjjj3 conditionuh1hhjhK`hjubh applies}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhK`hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK`hjubj)}(h!``condition`` condition to check h](j)}(h ``condition``h]j)}(hj&h]h condition}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_debugging:7: ./drivers/gpu/drm/xe/xe_assert.hhKahj ubj)}(hhh]h)}(hcondition to checkh]hcondition to check}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj;hKahj<ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj;hKahjubeh}(h]h ]h"]h$]h&]uh1jhjrubh)}(h**Description**h]h)}(hjah]h Description}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhj_ubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_debugging:7: ./drivers/gpu/drm/xe/xe_assert.hhKchjrubh)}(hxe_assert() uses :c:type:`drm_WARN` to emit a warning and print additional information that could be read from the :c:type:`xe` pointer if provided :c:type:`condition` is false.h](hxe_assert() uses }(hjwhhhNhNubh)}(h:c:type:`drm_WARN`h]j)}(hjh]hdrm_WARN}(hjhhhNhNubah}(h]h ](j j!c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj- refdomainj!reftypetype refexplicitrefwarnjjj3drm_WARNuh1hha/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_debugging:7: ./drivers/gpu/drm/xe/xe_assert.hhKchjwubhP to emit a warning and print additional information that could be read from the }(hjwhhhNhNubh)}(h :c:type:`xe`h]j)}(hjh]hxe}(hjhhhNhNubah}(h]h ](j j!c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj- refdomainj!reftypetype refexplicitrefwarnjjj3xeuh1hhjhKchjwubh pointer if provided }(hjwhhhNhNubh)}(h:c:type:`condition`h]j)}(hjh]h condition}(hjhhhNhNubah}(h]h ](j j!c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj- refdomainj!reftypetype refexplicitrefwarnjjj3 conditionuh1hhjhKchjwubh is false.}(hjwhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKchjrubh)}(hContrary to :c:type:`drm_WARN`, xe_assert() is effective only on debug builds (:c:type:`CONFIG_DRM_XE_DEBUG` must be enabled) and cannot be used in expressions or as a condition.h](h Contrary to }(hjhhhNhNubh)}(h:c:type:`drm_WARN`h]j)}(hjh]hdrm_WARN}(hjhhhNhNubah}(h]h ](j j!c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj- refdomainj!reftypetype refexplicitrefwarnjjj3drm_WARNuh1hha/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_debugging:7: ./drivers/gpu/drm/xe/xe_assert.hhKfhjubh1, xe_assert() is effective only on debug builds (}(hjhhhNhNubh)}(h:c:type:`CONFIG_DRM_XE_DEBUG`h]j)}(hjh]hCONFIG_DRM_XE_DEBUG}(hjhhhNhNubah}(h]h ](j j!c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj- refdomainj!reftypetype refexplicitrefwarnjjj3CONFIG_DRM_XE_DEBUGuh1hhjhKfhjubhF must be enabled) and cannot be used in expressions or as a condition.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKfhjrubh)}(h/See `Xe Asserts`_ for general usage guidelines.h](hSee }(hjDhhhNhNubh reference)}(h `Xe Asserts`_h]h Xe Asserts}(hjNhhhNhNubah}(h]h ]h"]h$]h&]name Xe Assertshhuh1jLhjDresolvedKubh for general usage guidelines.}(hjDhhhNhNubeh}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_debugging:7: ./drivers/gpu/drm/xe/xe_assert.hhKjhjrubeh}(h]h ] kernelindentah"]h$]h&]uh1jphhhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jxe_tile_assert (C macro)c.xe_tile_asserthNtauh1jhhhhhNhNubj)}(hhh](j)}(hxe_tile_asserth]j)}(hxe_tile_asserth]j)}(hxe_tile_asserth]j)}(hjh]hxe_tile_assert}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](j jeh"]h$]h&]hhuh1jhjhhha/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_debugging:7: ./drivers/gpu/drm/xe/xe_assert.hhKubah}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhjhKubah}(h]j}ah ](jj eh"]h$]h&]j$j%)j&huh1jhjhKhjhhubj()}(hhh]h}(h]h ]h"]h$]h&]uh1j'hjhhhjhKubeh}(h]h ](j!macroeh"]h$]h&]j9j!j:jj;jj<j=j>uh1jhhhhhNhNubh)}(h$``xe_tile_assert (tile, condition)``h]j)}(hjh]h xe_tile_assert (tile, condition)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_debugging:7: ./drivers/gpu/drm/xe/xe_assert.hhKhhhhubjs)}(h+warn if condition is false when debugging. h]h)}(h*warn if condition is false when debugging.h]h*warn if condition is false when debugging.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_debugging:7: ./drivers/gpu/drm/xe/xe_assert.hhKhjubah}(h]h ]h"]h$]h&]uh1jrhjhKhhhhubjq)}(hXG**Parameters** ``tile`` the :c:type:`struct xe_tile ` pointer to which :c:type:`condition` applies ``condition`` condition to check **Description** xe_tile_assert() uses :c:type:`drm_WARN` to emit a warning and print additional information that could be read from the :c:type:`tile` pointer if provided :c:type:`condition` is false. Contrary to :c:type:`drm_WARN`, xe_tile_assert() is effective only on debug builds (:c:type:`CONFIG_DRM_XE_DEBUG` must be enabled) and cannot be used in expressions or as a condition. See `Xe Asserts`_ for general usage guidelines.h](h)}(h**Parameters**h]h)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_debugging:7: ./drivers/gpu/drm/xe/xe_assert.hhKhjubj)}(hhh](j)}(h]``tile`` the :c:type:`struct xe_tile ` pointer to which :c:type:`condition` applies h](j)}(h``tile``h]j)}(hjh]htile}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_debugging:7: ./drivers/gpu/drm/xe/xe_assert.hhKhjubj)}(hhh]h)}(hSthe :c:type:`struct xe_tile ` pointer to which :c:type:`condition` appliesh](hthe }(hj-hhhNhNubh)}(h":c:type:`struct xe_tile `h]j)}(hj7h]hstruct xe_tile}(hj9hhhNhNubah}(h]h ](j j!c-typeeh"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]refdocj- refdomainj!reftypetype refexplicitrefwarnjjj3xe_tileuh1hhj)hKhj-ubh pointer to which }(hj-hhhNhNubh)}(h:c:type:`condition`h]j)}(hjZh]h condition}(hj\hhhNhNubah}(h]h ](j j!c-typeeh"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]refdocj- refdomainj!reftypetype refexplicitrefwarnjjj3 conditionuh1hhj)hKhj-ubh applies}(hj-hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj)hKhj*ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj)hKhj ubj)}(h!``condition`` condition to check h](j)}(h ``condition``h]j)}(hjh]h condition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_debugging:7: ./drivers/gpu/drm/xe/xe_assert.hhKhjubj)}(hhh]h)}(hcondition to checkh]hcondition to check}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhj ubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]h)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_debugging:7: ./drivers/gpu/drm/xe/xe_assert.hhKhjubh)}(hxe_tile_assert() uses :c:type:`drm_WARN` to emit a warning and print additional information that could be read from the :c:type:`tile` pointer if provided :c:type:`condition` is false.h](hxe_tile_assert() uses }(hjhhhNhNubh)}(h:c:type:`drm_WARN`h]j)}(hjh]hdrm_WARN}(hjhhhNhNubah}(h]h ](j j!c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj- refdomainj!reftypetype refexplicitrefwarnjjj3drm_WARNuh1hha/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_debugging:7: ./drivers/gpu/drm/xe/xe_assert.hhKhjubhP to emit a warning and print additional information that could be read from the }(hjhhhNhNubh)}(h:c:type:`tile`h]j)}(hjh]htile}(hjhhhNhNubah}(h]h ](j j!c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj- refdomainj!reftypetype refexplicitrefwarnjjj3tileuh1hhj hKhjubh pointer if provided }(hjhhhNhNubh)}(h:c:type:`condition`h]j)}(hj5h]h condition}(hj7hhhNhNubah}(h]h ](j j!c-typeeh"]h$]h&]uh1jhj3ubah}(h]h ]h"]h$]h&]refdocj- refdomainj!reftypetype refexplicitrefwarnjjj3 conditionuh1hhj hKhjubh is false.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hKhjubh)}(hContrary to :c:type:`drm_WARN`, xe_tile_assert() is effective only on debug builds (:c:type:`CONFIG_DRM_XE_DEBUG` must be enabled) and cannot be used in expressions or as a condition.h](h Contrary to }(hj\hhhNhNubh)}(h:c:type:`drm_WARN`h]j)}(hjfh]hdrm_WARN}(hjhhhhNhNubah}(h]h ](j j!c-typeeh"]h$]h&]uh1jhjdubah}(h]h ]h"]h$]h&]refdocj- refdomainj!reftypetype refexplicitrefwarnjjj3drm_WARNuh1hha/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_debugging:7: ./drivers/gpu/drm/xe/xe_assert.hhKhj\ubh6, xe_tile_assert() is effective only on debug builds (}(hj\hhhNhNubh)}(h:c:type:`CONFIG_DRM_XE_DEBUG`h]j)}(hjh]hCONFIG_DRM_XE_DEBUG}(hjhhhNhNubah}(h]h ](j j!c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj- refdomainj!reftypetype refexplicitrefwarnjjj3CONFIG_DRM_XE_DEBUGuh1hhjhKhj\ubhF must be enabled) and cannot be used in expressions or as a condition.}(hj\hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubh)}(h/See `Xe Asserts`_ for general usage guidelines.h](hSee }(hjhhhNhNubjM)}(h `Xe Asserts`_h]h Xe Asserts}(hjhhhNhNubah}(h]h ]h"]h$]h&]name Xe Assertshhuh1jLhjj^Kubh for general usage guidelines.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_debugging:7: ./drivers/gpu/drm/xe/xe_assert.hhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jphhhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jxe_gt_assert (C macro)c.xe_gt_asserthNtauh1jhhhhhNhNubj)}(hhh](j)}(h xe_gt_asserth]j)}(h xe_gt_asserth]j)}(h xe_gt_asserth]j)}(hjh]h xe_gt_assert}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](j jeh"]h$]h&]hhuh1jhjhhha/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_debugging:7: ./drivers/gpu/drm/xe/xe_assert.hhKubah}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhj hKubah}(h]jah ](jj eh"]h$]h&]j$j%)j&huh1jhj hKhjhhubj()}(hhh]h}(h]h ]h"]h$]h&]uh1j'hjhhhj hKubeh}(h]h ](j!macroeh"]h$]h&]j9j!j:j$j;j$j<j=j>uh1jhhhhhNhNubh)}(h ``xe_gt_assert (gt, condition)``h]j)}(hj*h]hxe_gt_assert (gt, condition)}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(ubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_debugging:7: ./drivers/gpu/drm/xe/xe_assert.hhKhhhhubjs)}(h+warn if condition is false when debugging. h]h)}(h*warn if condition is false when debugging.h]h*warn if condition is false when debugging.}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_debugging:7: ./drivers/gpu/drm/xe/xe_assert.hhKhj@ubah}(h]h ]h"]h$]h&]uh1jrhjRhKhhhhubjq)}(hXD**Parameters** ``gt`` the :c:type:`struct xe_gt ` pointer to which :c:type:`condition` applies ``condition`` condition to check **Description** xe_gt_assert() uses :c:type:`drm_WARN` to emit a warning and print additional information that could be safetely read from the :c:type:`gt` pointer if provided :c:type:`condition` is false. Contrary to :c:type:`drm_WARN`, xe_gt_assert() is effective only on debug builds (:c:type:`CONFIG_DRM_XE_DEBUG` must be enabled) and cannot be used in expressions or as a condition. See `Xe Asserts`_ for general usage guidelines.h](h)}(h**Parameters**h]h)}(hj_h]h Parameters}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhj]ubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_debugging:7: ./drivers/gpu/drm/xe/xe_assert.hhKhjYubj)}(hhh](j)}(hW``gt`` the :c:type:`struct xe_gt ` pointer to which :c:type:`condition` applies h](j)}(h``gt``h]j)}(hj~h]hgt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|ubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_debugging:7: ./drivers/gpu/drm/xe/xe_assert.hhKhjxubj)}(hhh]h)}(hOthe :c:type:`struct xe_gt ` pointer to which :c:type:`condition` appliesh](hthe }(hjhhhNhNubh)}(h:c:type:`struct xe_gt `h]j)}(hjh]h struct xe_gt}(hjhhhNhNubah}(h]h ](j j!c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj- refdomainj!reftypetype refexplicitrefwarnjjj3xe_gtuh1hhjhKhjubh pointer to which }(hjhhhNhNubh)}(h:c:type:`condition`h]j)}(hjh]h condition}(hjhhhNhNubah}(h]h ](j j!c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj- refdomainj!reftypetype refexplicitrefwarnjjj3 conditionuh1hhjhKhjubh applies}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjxubeh}(h]h ]h"]h$]h&]uh1jhjhKhjuubj)}(h!``condition`` condition to check h](j)}(h ``condition``h]j)}(hjh]h condition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_debugging:7: ./drivers/gpu/drm/xe/xe_assert.hhKhjubj)}(hhh]h)}(hcondition to checkh]hcondition to check}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj hKhjuubeh}(h]h ]h"]h$]h&]uh1jhjYubh)}(h**Description**h]h)}(hj8 h]h Description}(hj: hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6 ubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_debugging:7: ./drivers/gpu/drm/xe/xe_assert.hhKhjYubh)}(hxe_gt_assert() uses :c:type:`drm_WARN` to emit a warning and print additional information that could be safetely read from the :c:type:`gt` pointer if provided :c:type:`condition` is false.h](hxe_gt_assert() uses }(hjN hhhNhNubh)}(h:c:type:`drm_WARN`h]j)}(hjX h]hdrm_WARN}(hjZ hhhNhNubah}(h]h ](j j!c-typeeh"]h$]h&]uh1jhjV ubah}(h]h ]h"]h$]h&]refdocj- refdomainj!reftypetype refexplicitrefwarnjjj3drm_WARNuh1hha/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_debugging:7: ./drivers/gpu/drm/xe/xe_assert.hhKhjN ubhY to emit a warning and print additional information that could be safetely read from the }(hjN hhhNhNubh)}(h :c:type:`gt`h]j)}(hj| h]hgt}(hj~ hhhNhNubah}(h]h ](j j!c-typeeh"]h$]h&]uh1jhjz ubah}(h]h ]h"]h$]h&]refdocj- refdomainj!reftypetype refexplicitrefwarnjjj3gtuh1hhju hKhjN ubh pointer if provided }(hjN hhhNhNubh)}(h:c:type:`condition`h]j)}(hj h]h condition}(hj hhhNhNubah}(h]h ](j j!c-typeeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocj- refdomainj!reftypetype refexplicitrefwarnjjj3 conditionuh1hhju hKhjN ubh is false.}(hjN hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhju hKhjYubh)}(hContrary to :c:type:`drm_WARN`, xe_gt_assert() is effective only on debug builds (:c:type:`CONFIG_DRM_XE_DEBUG` must be enabled) and cannot be used in expressions or as a condition.h](h Contrary to }(hj hhhNhNubh)}(h:c:type:`drm_WARN`h]j)}(hj h]hdrm_WARN}(hj hhhNhNubah}(h]h ](j j!c-typeeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocj- refdomainj!reftypetype refexplicitrefwarnjjj3drm_WARNuh1hha/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_debugging:7: ./drivers/gpu/drm/xe/xe_assert.hhKhj ubh4, xe_gt_assert() is effective only on debug builds (}(hj hhhNhNubh)}(h:c:type:`CONFIG_DRM_XE_DEBUG`h]j)}(hj h]hCONFIG_DRM_XE_DEBUG}(hj hhhNhNubah}(h]h ](j j!c-typeeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocj- refdomainj!reftypetype refexplicitrefwarnjjj3CONFIG_DRM_XE_DEBUGuh1hhj hKhj ubhF must be enabled) and cannot be used in expressions or as a condition.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hKhjYubh)}(h/See `Xe Asserts`_ for general usage guidelines.h](hSee }(hj hhhNhNubjM)}(h `Xe Asserts`_h]h Xe Asserts}(hj# hhhNhNubah}(h]h ]h"]h$]h&]name Xe Assertshhuh1jLhj j^Kubh for general usage guidelines.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_debugging:7: ./drivers/gpu/drm/xe/xe_assert.hhKhjYubeh}(h]h ] kernelindentah"]h$]h&]uh1jphhhhhNhNubeh}(h] debuggingah ]h"] debuggingah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjp error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames} xe asserts](jNjj# esrefids}h]hasnameids}(jJ jG hhu nametypes}(jJ huh}(jG hhhjjj}jjju footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.