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_pmmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget /translations/zh_TW/gpu/xe/xe_pmmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget /translations/it_IT/gpu/xe/xe_pmmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget /translations/ja_JP/gpu/xe/xe_pmmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget /translations/ko_KR/gpu/xe/xe_pmmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget /translations/pt_BR/gpu/xe/xe_pmmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget /translations/sp_SP/gpu/xe/xe_pmmodnameN 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:spacepreserveuh1hhhhhh:/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm.rsthKubhsection)}(hhh](htitle)}(hRuntime Power Managementh]hRuntime Power Management}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh paragraph)}(hyXe PM implements the main routines for both system level suspend states and for the opportunistic runtime suspend states.h]hyXe PM implements the main routines for both system level suspend states and for the opportunistic runtime suspend states.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:7: ./drivers/gpu/drm/xe/xe_pm.chK$hhhhubh)}(hX-System Level Suspend (S-States) - In general this is OS initiated suspend driven by ACPI for achieving S0ix (a.k.a. S2idle, freeze), S3 (suspend to ram), S4 (disk). The main functions here are `xe_pm_suspend` and `xe_pm_resume`. They are the main point for the suspend to and resume from these states.h](hSystem Level Suspend (S-States) - In general this is OS initiated suspend driven by ACPI for achieving S0ix (a.k.a. S2idle, freeze), S3 (suspend to ram), S4 (disk). The main functions here are }(hhhhhNhNubhtitle_reference)}(h`xe_pm_suspend`h]h xe_pm_suspend}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhubh and }(hhhhhNhNubh)}(h`xe_pm_resume`h]h xe_pm_resume}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhubhJ. They are the main point for the suspend to and resume from these states.}(hhhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:7: ./drivers/gpu/drm/xe/xe_pm.chK'hhhhubh)}(hX0PCI Device Suspend (D-States) - This is the opportunistic PCIe device low power state D3, controlled by the PCI subsystem and ACPI with the help from the runtime_pm infrastructure. PCI D3 is special and can mean D3hot, where Vcc power is on for keeping memory alive and quicker low latency resume or D3Cold where Vcc power is off for better power savings. The Vcc control of PCI hierarchy can only be controlled at the PCI root port level, while the device driver can be behind multiple bridges/switches and paired with other devices. For this reason, the PCI subsystem cannot perform the transition towards D3Cold. The lowest runtime PM possible from the PCI subsystem is D3hot. Then, if all these paired devices in the same root port are in D3hot, ACPI will assist here and run its own methods (_PR3 and _OFF) to perform the transition from D3hot to D3cold. Xe may disallow this transition by calling pci_d3cold_disable(root_pdev) before going to runtime suspend. It will be based on runtime conditions such as VRAM usage for a quick and low latency resume for instance.h]hX0PCI Device Suspend (D-States) - This is the opportunistic PCIe device low power state D3, controlled by the PCI subsystem and ACPI with the help from the runtime_pm infrastructure. PCI D3 is special and can mean D3hot, where Vcc power is on for keeping memory alive and quicker low latency resume or D3Cold where Vcc power is off for better power savings. The Vcc control of PCI hierarchy can only be controlled at the PCI root port level, while the device driver can be behind multiple bridges/switches and paired with other devices. For this reason, the PCI subsystem cannot perform the transition towards D3Cold. The lowest runtime PM possible from the PCI subsystem is D3hot. Then, if all these paired devices in the same root port are in D3hot, ACPI will assist here and run its own methods (_PR3 and _OFF) to perform the transition from D3hot to D3cold. Xe may disallow this transition by calling pci_d3cold_disable(root_pdev) before going to runtime suspend. It will be based on runtime conditions such as VRAM usage for a quick and low latency resume for instance.}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:7: ./drivers/gpu/drm/xe/xe_pm.chK,hhhhubh)}(hXRuntime PM - This infrastructure provided by the Linux kernel allows the device drivers to indicate when the can be runtime suspended, so the device could be put at D3 (if supported), or allow deeper package sleep states (PC-states), and/or other low level power states. Xe PM component provides `xe_pm_runtime_suspend` and `xe_pm_runtime_resume` functions that PCI subsystem will call before transition to/from runtime suspend.h](hX(Runtime PM - This infrastructure provided by the Linux kernel allows the device drivers to indicate when the can be runtime suspended, so the device could be put at D3 (if supported), or allow deeper package sleep states (PC-states), and/or other low level power states. Xe PM component provides }(hj2hhhNhNubh)}(h`xe_pm_runtime_suspend`h]hxe_pm_runtime_suspend}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj2ubh and }(hj2hhhNhNubh)}(h`xe_pm_runtime_resume`h]hxe_pm_runtime_resume}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj2ubhR functions that PCI subsystem will call before transition to/from runtime suspend.}(hj2hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:7: ./drivers/gpu/drm/xe/xe_pm.chK=hhhhubh)}(hXwAlso, Xe PM provides get and put functions that Xe driver will use to indicate activity. In order to avoid locking complications with the memory management, whenever possible, these get and put functions needs to be called from the higher/outer levels. The main cases that need to be protected from the outer levels are: IOCTL, sysfs, debugfs, dma-buf sharing, GPU execution.h]hXwAlso, Xe PM provides get and put functions that Xe driver will use to indicate activity. In order to avoid locking complications with the memory management, whenever possible, these get and put functions needs to be called from the higher/outer levels. The main cases that need to be protected from the outer levels are: IOCTL, sysfs, debugfs, dma-buf sharing, GPU execution.}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:7: ./drivers/gpu/drm/xe/xe_pm.chKDhhhhubh)}(hZThis component is not responsible for GT idleness (RC6) nor GT frequency management (RPS).h]hZThis component is not responsible for GT idleness (RC6) nor GT frequency management (RPS).}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:7: ./drivers/gpu/drm/xe/xe_pm.chKKhhhhubh)}(hhh](h)}(h Internal APIh]h Internal API}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK ubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](single)xe_pm_might_block_on_suspend (C function)c.xe_pm_might_block_on_suspendhNtauh1jhjhhhNhNubhdesc)}(hhh](hdesc_signature)}(h(void xe_pm_might_block_on_suspend (void)h]hdesc_signature_line)}(h'void xe_pm_might_block_on_suspend(void)h](hdesc_sig_keyword_type)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]ktah"]h$]h&]uh1jhjhhhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chKjubhdesc_sig_space)}(h h]h }(hjhhhNhNubah}(h]h ]wah"]h$]h&]uh1jhjhhhjhKjubh desc_name)}(hxe_pm_might_block_on_suspendh]h desc_sig_name)}(hxe_pm_might_block_on_suspendh]hxe_pm_might_block_on_suspend}(hjhhhNhNubah}(h]h ]nah"]h$]h&]uh1jhjubah}(h]h ](sig-namedescnameeh"]h$]h&]hhuh1jhjhhhjhKjubhdesc_parameterlist)}(h(void)h]hdesc_parameter)}(hvoidh]j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKjubeh}(h]h ]h"]h$]h&]hhƌ add_permalinkuh1jsphinx_line_type declaratorhjhhhjhKjubah}(h]jah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1jhjhKjhjhhubh desc_content)}(hhh]h)}(h-Annotate that the code might block on suspendh]h-Annotate that the code might block on suspend}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chKjhj5hhubah}(h]h ]h"]h$]h&]uh1j3hjhhhjhKjubeh}(h]h ](cfunctioneh"]h$]h&]domainjPobjtypejQdesctypejQnoindex noindexentrynocontentsentryuh1jhhhjhNhNubh container)}(h**Parameters** ``void`` no arguments **Description** Annotation to use where the code might block or seize to make progress pending resume completion.h](h)}(h**Parameters**h]hstrong)}(hjch]h Parameters}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jehjaubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chKnhj]ubhdefinition_list)}(hhh]hdefinition_list_item)}(h``void`` no arguments h](hterm)}(h``void``h]hliteral)}(hjh]hvoid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chKhjubh definition)}(hhh]h)}(h no argumentsh]h no arguments}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhj}ubah}(h]h ]h"]h$]h&]uh1j{hj]ubh)}(h**Description**h]jf)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chKhj]ubh)}(haAnnotation to use where the code might block or seize to make progress pending resume completion.h]haAnnotation to use where the code might block or seize to make progress pending resume completion.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chKkhj]ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j#xe_pm_block_on_suspend (C function)c.xe_pm_block_on_suspendhNtauh1jhjhhhNhNubj)}(hhh](j)}(h1int xe_pm_block_on_suspend (struct xe_device *xe)h]j)}(h0int xe_pm_block_on_suspend(struct xe_device *xe)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chKvubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhjhKvubj)}(hxe_pm_block_on_suspendh]j)}(hxe_pm_block_on_suspendh]hxe_pm_block_on_suspend}(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj hhhjhKvubj)}(h(struct xe_device *xe)h]j)}(hstruct xe_device *xeh](hdesc_sig_keyword)}(hstructh]hstruct}(hjMhhhNhNubah}(h]h ]kah"]h$]h&]uh1jKhjGubj)}(h h]h }(hj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGubh)}(hhh]j)}(h xe_deviceh]h xe_device}(hjmhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjjubah}(h]h ]h"]h$]h&] refdomainjPreftype identifier reftargetjomodnameN classnameN c:parent_keysphinx.domains.c LookupKey)}data]j ASTIdentifier)}jj1sbc.xe_pm_block_on_suspendasbuh1hhjGubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGubhdesc_sig_punctuation)}(h*h]h*}(hjhhhNhNubah}(h]h ]pah"]h$]h&]uh1jhjGubj)}(hxeh]hxe}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjCubah}(h]h ]h"]h$]h&]hhuh1jhj hhhjhKvubeh}(h]h ]h"]h$]h&]hhj%uh1jj&j'hjhhhjhKvubah}(h]jah ](j+j,eh"]h$]h&]j0j1)j2huh1jhjhKvhjhhubj4)}(hhh]h)}(hBlock pending suspend.h]hBlock pending suspend.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chKvhjhhubah}(h]h ]h"]h$]h&]uh1j3hjhhhjhKvubeh}(h]h ](jPfunctioneh"]h$]h&]jUjPjVjjWjjXjYjZuh1jhhhjhNhNubj\)}(hX**Parameters** ``struct xe_device *xe`` The xe device about to be suspended. **Description** Block if the pm notifier has start evicting bos, to avoid racing and validating those bos back. The function is annotated to ensure no locks are held that are also grabbed in the pm notifier or the device suspend / resume. This is intended to be used by freezable tasks only. (Not freezable workqueues), with the intention that the function returns ``-ERESTARTSYS`` when tasks are frozen during suspend, and allows the task to freeze. The caller must be able to handle the ``-ERESTARTSYS``. **Return** ``0`` on success, ``-ERESTARTSYS`` on signal pending or if freezing requested.h](h)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chKzhjubj|)}(hhh]j)}(h>``struct xe_device *xe`` The xe device about to be suspended. h](j)}(h``struct xe_device *xe``h]j)}(hjh]hstruct xe_device *xe}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chKwhjubj)}(hhh]h)}(h$The xe device about to be suspended.h]h$The xe device about to be suspended.}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4hKwhj5ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj4hKwhjubah}(h]h ]h"]h$]h&]uh1j{hjubh)}(h**Description**h]jf)}(hjZh]h Description}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jehjXubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chKyhjubh)}(hXBlock if the pm notifier has start evicting bos, to avoid racing and validating those bos back. The function is annotated to ensure no locks are held that are also grabbed in the pm notifier or the device suspend / resume. This is intended to be used by freezable tasks only. (Not freezable workqueues), with the intention that the function returns ``-ERESTARTSYS`` when tasks are frozen during suspend, and allows the task to freeze. The caller must be able to handle the ``-ERESTARTSYS``.h](hX]Block if the pm notifier has start evicting bos, to avoid racing and validating those bos back. The function is annotated to ensure no locks are held that are also grabbed in the pm notifier or the device suspend / resume. This is intended to be used by freezable tasks only. (Not freezable workqueues), with the intention that the function returns }(hjphhhNhNubj)}(h``-ERESTARTSYS``h]h -ERESTARTSYS}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjpubhl when tasks are frozen during suspend, and allows the task to freeze. The caller must be able to handle the }(hjphhhNhNubj)}(h``-ERESTARTSYS``h]h -ERESTARTSYS}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjpubh.}(hjphhhNhNubeh}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chKxhjubh)}(h **Return**h]jf)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chKhjubh)}(hN``0`` on success, ``-ERESTARTSYS`` on signal pending or if freezing requested.h](j)}(h``0``h]h0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh on success, }(hjhhhNhNubj)}(h``-ERESTARTSYS``h]h -ERESTARTSYS}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh, on signal pending or if freezing requested.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j xe_rpm_reclaim_safe (C function)c.xe_rpm_reclaim_safehNtauh1jhjhhhNhNubj)}(hhh](j)}(h5bool xe_rpm_reclaim_safe (const struct xe_device *xe)h]j)}(h4bool xe_rpm_reclaim_safe(const struct xe_device *xe)h](j)}(hboolh]hbool}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chKubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKubj)}(hxe_rpm_reclaim_safeh]j)}(hxe_rpm_reclaim_safeh]hxe_rpm_reclaim_safe}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhKubj)}(h(const struct xe_device *xe)h]j)}(hconst struct xe_device *xeh](jL)}(hconsth]hconst}(hjGhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjCubj)}(h h]h }(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjCubjL)}(hjOh]hstruct}(hjchhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjCubj)}(h h]h }(hjphhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjCubh)}(hhh]j)}(h xe_deviceh]h xe_device}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~ubah}(h]h ]h"]h$]h&] refdomainjPreftypej reftargetjmodnameN classnameNjj)}j]j)}jj-sbc.xe_rpm_reclaim_safeasbuh1hhjCubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjCubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjCubj)}(hxeh]hxe}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjCubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj?ubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhj%uh1jj&j'hjhhhjhKubah}(h]jah ](j+j,eh"]h$]h&]j0j1)j2huh1jhjhKhjhhubj4)}(hhh]h)}(h7Whether runtime resume can be done from reclaim contexth]h7Whether runtime resume can be done from reclaim context}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chKhjhhubah}(h]h ]h"]h$]h&]uh1j3hjhhhjhKubeh}(h]h ](jPfunctioneh"]h$]h&]jUjPjVjjWjjXjYjZuh1jhhhjhNhNubj\)}(h**Parameters** ``const struct xe_device *xe`` The xe device. **Return** true if it is safe to runtime resume from reclaim context. false otherwise.h](h)}(h**Parameters**h]jf)}(hjh]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chKhjubj|)}(hhh]j)}(h.``const struct xe_device *xe`` The xe device. h](j)}(h``const struct xe_device *xe``h]j)}(hj'h]hconst struct xe_device *xe}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chKhj!ubj)}(hhh]h)}(hThe xe device.h]hThe xe device.}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj<hKhj=ubah}(h]h ]h"]h$]h&]uh1jhj!ubeh}(h]h ]h"]h$]h&]uh1jhj<hKhjubah}(h]h ]h"]h$]h&]uh1j{hjubh)}(h **Return**h]jf)}(hjbh]hReturn}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jehj`ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chKhjubh)}(hKtrue if it is safe to runtime resume from reclaim context. false otherwise.h]hKtrue if it is safe to runtime resume from reclaim context. false otherwise.}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jxe_pm_suspend (C function)c.xe_pm_suspendhNtauh1jhjhhhNhNubj)}(hhh](j)}(h(int xe_pm_suspend (struct xe_device *xe)h]j)}(h'int xe_pm_suspend(struct xe_device *xe)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chKubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKubj)}(h xe_pm_suspendh]j)}(h xe_pm_suspendh]h xe_pm_suspend}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhKubj)}(h(struct xe_device *xe)h]j)}(hstruct xe_device *xeh](jL)}(hjOh]hstruct}(hjhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h xe_deviceh]h xe_device}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjPreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.xe_pm_suspendasbuh1hhjubj)}(h h]h }(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hxeh]hxe}(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhj%uh1jj&j'hjhhhjhKubah}(h]jah ](j+j,eh"]h$]h&]j0j1)j2huh1jhjhKhjhhubj4)}(hhh]h)}(h3Helper for System suspend, i.e. S0->S3 / S0->S2idleh]h3Helper for System suspend, i.e. S0->S3 / S0->S2idle}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chKhjdhhubah}(h]h ]h"]h$]h&]uh1j3hjhhhjhKubeh}(h]h ](jPfunctioneh"]h$]h&]jUjPjVjjWjjXjYjZuh1jhhhjhNhNubj\)}(hW**Parameters** ``struct xe_device *xe`` xe device instance **Return** 0 on successh](h)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chKhjubj|)}(hhh]j)}(h,``struct xe_device *xe`` xe device instance h](j)}(h``struct xe_device *xe``h]j)}(hjh]hstruct xe_device *xe}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chKhjubj)}(hhh]h)}(hxe device instanceh]hxe device instance}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1j{hjubh)}(h **Return**h]jf)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chKhjubh)}(h 0 on successh]h 0 on success}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jxe_pm_resume (C function)c.xe_pm_resumehNtauh1jhjhhhNhNubj)}(hhh](j)}(h'int xe_pm_resume (struct xe_device *xe)h]j)}(h&int xe_pm_resume(struct xe_device *xe)h](j)}(hinth]hint}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$hhhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chKubj)}(h h]h }(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$hhhj6hKubj)}(h xe_pm_resumeh]j)}(h xe_pm_resumeh]h xe_pm_resume}(hjIhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubah}(h]h ](jjeh"]h$]h&]hhuh1jhj$hhhj6hKubj)}(h(struct xe_device *xe)h]j)}(hstruct xe_device *xeh](jL)}(hjOh]hstruct}(hjehhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjaubj)}(h h]h }(hjrhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjaubh)}(hhh]j)}(h xe_deviceh]h xe_device}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjPreftypej reftargetjmodnameN classnameNjj)}j]j)}jjKsbc.xe_pm_resumeasbuh1hhjaubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjaubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjaubj)}(hxeh]hxe}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjaubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj]ubah}(h]h ]h"]h$]h&]hhuh1jhj$hhhj6hKubeh}(h]h ]h"]h$]h&]hhj%uh1jj&j'hj hhhj6hKubah}(h]jah ](j+j,eh"]h$]h&]j0j1)j2huh1jhj6hKhjhhubj4)}(hhh]h)}(h,Helper for System resume S3->S0 / S2idle->S0h]h,Helper for System resume S3->S0 / S2idle->S0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chKhjhhubah}(h]h ]h"]h$]h&]uh1j3hjhhhj6hKubeh}(h]h ](jPfunctioneh"]h$]h&]jUjPjVj jWj jXjYjZuh1jhhhjhNhNubj\)}(hW**Parameters** ``struct xe_device *xe`` xe device instance **Return** 0 on successh](h)}(h**Parameters**h]jf)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chKhj ubj|)}(hhh]j)}(h,``struct xe_device *xe`` xe device instance h](j)}(h``struct xe_device *xe``h]j)}(hj) h]hstruct xe_device *xe}(hj+ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj' ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chKhj# ubj)}(hhh]h)}(hxe device instanceh]hxe device instance}(hjB hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj> hKhj? ubah}(h]h ]h"]h$]h&]uh1jhj# ubeh}(h]h ]h"]h$]h&]uh1jhj> hKhj ubah}(h]h ]h"]h$]h&]uh1j{hj ubh)}(h **Return**h]jf)}(hjd h]hReturn}(hjf hhhNhNubah}(h]h ]h"]h$]h&]uh1jehjb ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chKhj ubh)}(h 0 on successh]h 0 on success}(hjz hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chKhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jxe_pm_init_early (C function)c.xe_pm_init_earlyhNtauh1jhjhhhNhNubj)}(hhh](j)}(h+int xe_pm_init_early (struct xe_device *xe)h]j)}(h*int xe_pm_init_early(struct xe_device *xe)h](j)}(hinth]hint}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMbubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhj hMbubj)}(hxe_pm_init_earlyh]j)}(hxe_pm_init_earlyh]hxe_pm_init_early}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj hhhj hMbubj)}(h(struct xe_device *xe)h]j)}(hstruct xe_device *xeh](jL)}(hjOh]hstruct}(hj hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubh)}(hhh]j)}(h xe_deviceh]h xe_device}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainjPreftypej reftargetj modnameN classnameNjj)}j]j)}jj sbc.xe_pm_init_earlyasbuh1hhj ubj)}(h h]h }(hj$ hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hjh]h*}(hj2 hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hxeh]hxe}(hj? hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubah}(h]h ]h"]h$]h&]hhuh1jhj hhhj hMbubeh}(h]h ]h"]h$]h&]hhj%uh1jj&j'hj hhhj hMbubah}(h]j ah ](j+j,eh"]h$]h&]j0j1)j2huh1jhj hMbhj hhubj4)}(hhh]h)}(hInitialize Xe Power Managementh]hInitialize Xe Power Management}(hji hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMbhjf hhubah}(h]h ]h"]h$]h&]uh1j3hj hhhj hMbubeh}(h]h ](jPfunctioneh"]h$]h&]jUjPjVj jWj jXjYjZuh1jhhhjhNhNubj\)}(hX**Parameters** ``struct xe_device *xe`` the :c:type:`xe_device` instance **Description** Initialize everything that is a "software-only" state that does not require access to any of the device's hardware data. **Return** 0 on success or a negative error code on failure.h](h)}(h**Parameters**h]jf)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMfhj ubj|)}(hhh]j)}(h:``struct xe_device *xe`` the :c:type:`xe_device` instance h](j)}(h``struct xe_device *xe``h]j)}(hj h]hstruct xe_device *xe}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMchj ubj)}(hhh]h)}(h the :c:type:`xe_device` instanceh](hthe }(hj hhhNhNubh)}(h:c:type:`xe_device`h]j)}(hj h]h xe_device}(hj hhhNhNubah}(h]h ](xrefjPc-typeeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdoc gpu/xe/xe_pm refdomainjPreftypetype refexplicitrefwarnjj)}j]sb reftarget xe_deviceuh1hhj hMchj ubh instance}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hMchj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hMchj ubah}(h]h ]h"]h$]h&]uh1j{hj ubh)}(h**Description**h]jf)}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMehj ubh)}(hxInitialize everything that is a "software-only" state that does not require access to any of the device's hardware data.h]h~Initialize everything that is a “software-only” state that does not require access to any of the device’s hardware data.}(hj$ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMdhj ubh)}(h **Return**h]jf)}(hj5 h]hReturn}(hj7 hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj3 ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMghj ubh)}(h10 on success or a negative error code on failure.h]h10 on success or a negative error code on failure.}(hjK hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jxe_pm_probe (C function) c.xe_pm_probehNtauh1jhjhhhNhNubj)}(hhh](j)}(h&int xe_pm_probe (struct xe_device *xe)h]j)}(h%int xe_pm_probe(struct xe_device *xe)h](j)}(hinth]hint}(hjz hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjv hhhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjv hhhj hMubj)}(h xe_pm_probeh]j)}(h xe_pm_probeh]h xe_pm_probe}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjv hhhj hMubj)}(h(struct xe_device *xe)h]j)}(hstruct xe_device *xeh](jL)}(hjOh]hstruct}(hj hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubh)}(hhh]j)}(h xe_deviceh]h xe_device}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainjPreftypej reftargetj modnameN classnameNjj)}j]j)}jj sb c.xe_pm_probeasbuh1hhj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hxeh]hxe}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubah}(h]h ]h"]h$]h&]hhuh1jhjv hhhj hMubeh}(h]h ]h"]h$]h&]hhj%uh1jj&j'hjr hhhj hMubah}(h]jm ah ](j+j,eh"]h$]h&]j0j1)j2huh1jhj hMhjo hhubj4)}(hhh]h)}(hInitialize Xe Power Managementh]hInitialize Xe Power Management}(hj: hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhj7 hhubah}(h]h ]h"]h$]h&]uh1j3hjo hhhj hMubeh}(h]h ](jPfunctioneh"]h$]h&]jUjPjVjR jWjR jXjYjZuh1jhhhjhNhNubj\)}(h**Parameters** ``struct xe_device *xe`` the :c:type:`xe_device` instance **Description** Check d3cold capability. **Return** 0 on success or a negative error code on failure.h](h)}(h**Parameters**h]jf)}(hj\ h]h Parameters}(hj^ hhhNhNubah}(h]h ]h"]h$]h&]uh1jehjZ ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhjV ubj|)}(hhh]j)}(h:``struct xe_device *xe`` the :c:type:`xe_device` instance h](j)}(h``struct xe_device *xe``h]j)}(hj{ h]hstruct xe_device *xe}(hj} hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjy ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhju ubj)}(hhh]h)}(h the :c:type:`xe_device` instanceh](hthe }(hj hhhNhNubh)}(h:c:type:`xe_device`h]j)}(hj h]h xe_device}(hj hhhNhNubah}(h]h ](j jPc-typeeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocj refdomainjPreftypetype refexplicitrefwarnjj j xe_deviceuh1hhj hMhj ubh instance}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hMhj ubah}(h]h ]h"]h$]h&]uh1jhju ubeh}(h]h ]h"]h$]h&]uh1jhj hMhjr ubah}(h]h ]h"]h$]h&]uh1j{hjV ubh)}(h**Description**h]jf)}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhjV ubh)}(hCheck d3cold capability.h]hCheck d3cold capability.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhjV ubh)}(h **Return**h]jf)}(hj h]hReturn}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhjV ubh)}(h10 on success or a negative error code on failure.h]h10 on success or a negative error code on failure.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhjV ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jxe_pm_init (C function) c.xe_pm_inithNtauh1jhjhhhNhNubj)}(hhh](j)}(h%int xe_pm_init (struct xe_device *xe)h]j)}(h$int xe_pm_init(struct xe_device *xe)h](j)}(hinth]hint}(hjE hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjA hhhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMubj)}(h h]h }(hjT hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjA hhhjS hMubj)}(h xe_pm_inith]j)}(h xe_pm_inith]h xe_pm_init}(hjf hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjb ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjA hhhjS hMubj)}(h(struct xe_device *xe)h]j)}(hstruct xe_device *xeh](jL)}(hjOh]hstruct}(hj hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj~ ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~ ubh)}(hhh]j)}(h xe_deviceh]h xe_device}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainjPreftypej reftargetj modnameN classnameNjj)}j]j)}jjh sb c.xe_pm_initasbuh1hhj~ ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~ ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~ ubj)}(hxeh]hxe}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~ ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjz ubah}(h]h ]h"]h$]h&]hhuh1jhjA hhhjS hMubeh}(h]h ]h"]h$]h&]hhj%uh1jj&j'hj= hhhjS hMubah}(h]j8 ah ](j+j,eh"]h$]h&]j0j1)j2huh1jhjS hMhj: hhubj4)}(hhh]h)}(hInitialize Xe Power Managementh]hInitialize Xe Power Management}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhjhhubah}(h]h ]h"]h$]h&]uh1j3hj: hhhjS hMubeh}(h]h ](jPfunctioneh"]h$]h&]jUjPjVjjWjjXjYjZuh1jhhhjhNhNubj\)}(h**Parameters** ``struct xe_device *xe`` xe device instance **Description** This component is responsible for System and Device sleep states. Returns 0 for success, negative error code otherwise.h](h)}(h**Parameters**h]jf)}(hj'h]h Parameters}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj%ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhj!ubj|)}(hhh]j)}(h,``struct xe_device *xe`` xe device instance h](j)}(h``struct xe_device *xe``h]j)}(hjFh]hstruct xe_device *xe}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhj@ubj)}(hhh]h)}(hxe device instanceh]hxe device instance}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj[hMhj\ubah}(h]h ]h"]h$]h&]uh1jhj@ubeh}(h]h ]h"]h$]h&]uh1jhj[hMhj=ubah}(h]h ]h"]h$]h&]uh1j{hj!ubh)}(h**Description**h]jf)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhj!ubh)}(hAThis component is responsible for System and Device sleep states.h]hAThis component is responsible for System and Device sleep states.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhj!ubh)}(h5Returns 0 for success, negative error code otherwise.h]h5Returns 0 for success, negative error code otherwise.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhj!ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jxe_pm_fini (C function) c.xe_pm_finihNtauh1jhjhhhNhNubj)}(hhh](j)}(h&void xe_pm_fini (struct xe_device *xe)h]j)}(h%void xe_pm_fini(struct xe_device *xe)h](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj)}(h xe_pm_finih]j)}(h xe_pm_finih]h xe_pm_fini}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhMubj)}(h(struct xe_device *xe)h]j)}(hstruct xe_device *xeh](jL)}(hjOh]hstruct}(hjhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h xe_deviceh]h xe_device}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-ubah}(h]h ]h"]h$]h&] refdomainjPreftypej reftargetj2modnameN classnameNjj)}j]j)}jjsb c.xe_pm_finiasbuh1hhjubj)}(h h]h }(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hj^hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hxeh]hxe}(hjkhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj%uh1jj&j'hjhhhjhMubah}(h]jah ](j+j,eh"]h$]h&]j0j1)j2huh1jhjhMhjhhubj4)}(hhh]h)}(h Finalize PMh]h Finalize PM}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhjhhubah}(h]h ]h"]h$]h&]uh1j3hjhhhjhMubeh}(h]h ](jPfunctioneh"]h$]h&]jUjPjVjjWjjXjYjZuh1jhhhjhNhNubj\)}(h=**Parameters** ``struct xe_device *xe`` xe device instanceh](h)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhjubj|)}(hhh]j)}(h+``struct xe_device *xe`` xe device instanceh](j)}(h``struct xe_device *xe``h]j)}(hjh]hstruct xe_device *xe}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhjubj)}(hhh]h)}(hxe device instanceh]hxe device instance}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1j{hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j$xe_pm_runtime_suspended (C function)c.xe_pm_runtime_suspendedhNtauh1jhjhhhNhNubj)}(hhh](j)}(h3bool xe_pm_runtime_suspended (struct xe_device *xe)h]j)}(h2bool xe_pm_runtime_suspended(struct xe_device *xe)h](j)}(hj h]hbool}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,hhhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chM/ubj)}(h h]h }(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,hhhj=hM/ubj)}(hxe_pm_runtime_suspendedh]j)}(hxe_pm_runtime_suspendedh]hxe_pm_runtime_suspended}(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjLubah}(h]h ](jjeh"]h$]h&]hhuh1jhj,hhhj=hM/ubj)}(h(struct xe_device *xe)h]j)}(hstruct xe_device *xeh](jL)}(hjOh]hstruct}(hjlhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjhubj)}(h h]h }(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhubh)}(hhh]j)}(h xe_deviceh]h xe_device}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjPreftypej reftargetjmodnameN classnameNjj)}j]j)}jjRsbc.xe_pm_runtime_suspendedasbuh1hhjhubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhubj)}(hxeh]hxe}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjdubah}(h]h ]h"]h$]h&]hhuh1jhj,hhhj=hM/ubeh}(h]h ]h"]h$]h&]hhj%uh1jj&j'hj(hhhj=hM/ubah}(h]j#ah ](j+j,eh"]h$]h&]j0j1)j2huh1jhj=hM/hj%hhubj4)}(hhh]h)}(h&Check if runtime_pm state is suspendedh]h&Check if runtime_pm state is suspended}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chM/hjhhubah}(h]h ]h"]h$]h&]uh1j3hj%hhhj=hM/ubeh}(h]h ](jPfunctioneh"]h$]h&]jUjPjVjjWjjXjYjZuh1jhhhjhNhNubj\)}(hX**Parameters** ``struct xe_device *xe`` xe device instance **Description** This does not provide any guarantee that the device is going to remain suspended as it might be racing with the runtime state transitions. It can be used only as a non-reliable assertion, to ensure that we are not in the sleep state while trying to access some memory for instance. Returns true if PCI device is suspended, false otherwise.h](h)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chM3hj ubj|)}(hhh]j)}(h,``struct xe_device *xe`` xe device instance h](j)}(h``struct xe_device *xe``h]j)}(hj0h]hstruct xe_device *xe}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chM0hj*ubj)}(hhh]h)}(hxe device instanceh]hxe device instance}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjEhM0hjFubah}(h]h ]h"]h$]h&]uh1jhj*ubeh}(h]h ]h"]h$]h&]uh1jhjEhM0hj'ubah}(h]h ]h"]h$]h&]uh1j{hj ubh)}(h**Description**h]jf)}(hjkh]h Description}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjiubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chM2hj ubh)}(hXThis does not provide any guarantee that the device is going to remain suspended as it might be racing with the runtime state transitions. It can be used only as a non-reliable assertion, to ensure that we are not in the sleep state while trying to access some memory for instance.h]hXThis does not provide any guarantee that the device is going to remain suspended as it might be racing with the runtime state transitions. It can be used only as a non-reliable assertion, to ensure that we are not in the sleep state while trying to access some memory for instance.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chM1hj ubh)}(h9Returns true if PCI device is suspended, false otherwise.h]h9Returns true if PCI device is suspended, false otherwise.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chM6hj ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j"xe_pm_runtime_suspend (C function)c.xe_pm_runtime_suspendhNtauh1jhjhhhNhNubj)}(hhh](j)}(h0int xe_pm_runtime_suspend (struct xe_device *xe)h]j)}(h/int xe_pm_runtime_suspend(struct xe_device *xe)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chM?ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhM?ubj)}(hxe_pm_runtime_suspendh]j)}(hxe_pm_runtime_suspendh]hxe_pm_runtime_suspend}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhM?ubj)}(h(struct xe_device *xe)h]j)}(hstruct xe_device *xeh](jL)}(hjOh]hstruct}(hjhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h xe_deviceh]h xe_device}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjPreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.xe_pm_runtime_suspendasbuh1hhjubj)}(h h]h }(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hxeh]hxe}(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhM?ubeh}(h]h ]h"]h$]h&]hhj%uh1jj&j'hjhhhjhM?ubah}(h]jah ](j+j,eh"]h$]h&]j0j1)j2huh1jhjhM?hjhhubj4)}(hhh]h)}(h#Prepare our device for D3hot/D3Coldh]h#Prepare our device for D3hot/D3Cold}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chM?hj|hhubah}(h]h ]h"]h$]h&]uh1j3hjhhhjhM?ubeh}(h]h ](jPfunctioneh"]h$]h&]jUjPjVjjWjjXjYjZuh1jhhhjhNhNubj\)}(h**Parameters** ``struct xe_device *xe`` xe device instance **Description** Returns 0 for success, negative error code otherwise.h](h)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMChjubj|)}(hhh]j)}(h,``struct xe_device *xe`` xe device instance h](j)}(h``struct xe_device *xe``h]j)}(hjh]hstruct xe_device *xe}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chM@hjubj)}(hhh]h)}(hxe device instanceh]hxe device instance}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM@hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM@hjubah}(h]h ]h"]h$]h&]uh1j{hjubh)}(h**Description**h]jf)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMBhjubh)}(h5Returns 0 for success, negative error code otherwise.h]h5Returns 0 for success, negative error code otherwise.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMAhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j!xe_pm_runtime_resume (C function)c.xe_pm_runtime_resumehNtauh1jhjhhhNhNubj)}(hhh](j)}(h/int xe_pm_runtime_resume (struct xe_device *xe)h]j)}(h.int xe_pm_runtime_resume(struct xe_device *xe)h](j)}(hinth]hint}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<hhhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMubj)}(h h]h }(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<hhhjNhMubj)}(hxe_pm_runtime_resumeh]j)}(hxe_pm_runtime_resumeh]hxe_pm_runtime_resume}(hjahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj<hhhjNhMubj)}(h(struct xe_device *xe)h]j)}(hstruct xe_device *xeh](jL)}(hjOh]hstruct}(hj}hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjyubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyubh)}(hhh]j)}(h xe_deviceh]h xe_device}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjPreftypej reftargetjmodnameN classnameNjj)}j]j)}jjcsbc.xe_pm_runtime_resumeasbuh1hhjyubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyubj)}(hxeh]hxe}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjuubah}(h]h ]h"]h$]h&]hhuh1jhj<hhhjNhMubeh}(h]h ]h"]h$]h&]hhj%uh1jj&j'hj8hhhjNhMubah}(h]j3ah ](j+j,eh"]h$]h&]j0j1)j2huh1jhjNhMhj5hhubj4)}(hhh]h)}(hWaking up from D3hot/D3Coldh]hWaking up from D3hot/D3Cold}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhjhhubah}(h]h ]h"]h$]h&]uh1j3hj5hhhjNhMubeh}(h]h ](jPfunctioneh"]h$]h&]jUjPjVjjWjjXjYjZuh1jhhhjhNhNubj\)}(h**Parameters** ``struct xe_device *xe`` xe device instance **Description** Returns 0 for success, negative error code otherwise.h](h)}(h**Parameters**h]jf)}(hj"h]h Parameters}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhjubj|)}(hhh]j)}(h,``struct xe_device *xe`` xe device instance h](j)}(h``struct xe_device *xe``h]j)}(hjAh]hstruct xe_device *xe}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhj;ubj)}(hhh]h)}(hxe device instanceh]hxe device instance}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjVhMhjWubah}(h]h ]h"]h$]h&]uh1jhj;ubeh}(h]h ]h"]h$]h&]uh1jhjVhMhj8ubah}(h]h ]h"]h$]h&]uh1j{hjubh)}(h**Description**h]jf)}(hj|h]h Description}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jehjzubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhjubh)}(h5Returns 0 for success, negative error code otherwise.h]h5Returns 0 for success, negative error code otherwise.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jxe_pm_runtime_get (C function)c.xe_pm_runtime_gethNtauh1jhjhhhNhNubj)}(hhh](j)}(h-void xe_pm_runtime_get (struct xe_device *xe)h]j)}(h,void xe_pm_runtime_get(struct xe_device *xe)h](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj)}(hxe_pm_runtime_geth]j)}(hxe_pm_runtime_geth]hxe_pm_runtime_get}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhMubj)}(h(struct xe_device *xe)h]j)}(hstruct xe_device *xeh](jL)}(hjOh]hstruct}(hjhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h xe_deviceh]h xe_device}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjPreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.xe_pm_runtime_getasbuh1hhjubj)}(h h]h }(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjJhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hxeh]hxe}(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj%uh1jj&j'hjhhhjhMubah}(h]jah ](j+j,eh"]h$]h&]j0j1)j2huh1jhjhMhjhhubj4)}(hhh]h)}(h3Get a runtime_pm reference and resume synchronouslyh]h3Get a runtime_pm reference and resume synchronously}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhj~hhubah}(h]h ]h"]h$]h&]uh1j3hjhhhjhMubeh}(h]h ](jPfunctioneh"]h$]h&]jUjPjVjjWjjXjYjZuh1jhhhjhNhNubj\)}(hX**Parameters** ``struct xe_device *xe`` xe device instance **Description** When possible, scope-based runtime PM (through guard(xe_pm_runtime)) is be preferred over direct usage of this function. Manual get/put handling should only be used when the function contains goto-based logic which can break scope-based handling, or when the lifetime of the runtime PM reference does not match a specific scope (e.g., runtime PM obtained in one function and released in a different one).h](h)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhjubj|)}(hhh]j)}(h,``struct xe_device *xe`` xe device instance h](j)}(h``struct xe_device *xe``h]j)}(hjh]hstruct xe_device *xe}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhjubj)}(hhh]h)}(hxe device instanceh]hxe device instance}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1j{hjubh)}(h**Description**h]jf)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhjubh)}(hXWhen possible, scope-based runtime PM (through guard(xe_pm_runtime)) is be preferred over direct usage of this function. Manual get/put handling should only be used when the function contains goto-based logic which can break scope-based handling, or when the lifetime of the runtime PM reference does not match a specific scope (e.g., runtime PM obtained in one function and released in a different one).h]hXWhen possible, scope-based runtime PM (through guard(xe_pm_runtime)) is be preferred over direct usage of this function. Manual get/put handling should only be used when the function contains goto-based logic which can break scope-based handling, or when the lifetime of the runtime PM reference does not match a specific scope (e.g., runtime PM obtained in one function and released in a different one).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jxe_pm_runtime_put (C function)c.xe_pm_runtime_puthNtauh1jhjhhhNhNubj)}(hhh](j)}(h-void xe_pm_runtime_put (struct xe_device *xe)h]j)}(h,void xe_pm_runtime_put(struct xe_device *xe)h](j)}(hvoidh]hvoid}(hjBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>hhhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chM%ubj)}(h h]h }(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>hhhjPhM%ubj)}(hxe_pm_runtime_puth]j)}(hxe_pm_runtime_puth]hxe_pm_runtime_put}(hjchhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj>hhhjPhM%ubj)}(h(struct xe_device *xe)h]j)}(hstruct xe_device *xeh](jL)}(hjOh]hstruct}(hjhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj{ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj{ubh)}(hhh]j)}(h xe_deviceh]h xe_device}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjPreftypej reftargetjmodnameN classnameNjj)}j]j)}jjesbc.xe_pm_runtime_putasbuh1hhj{ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj{ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj{ubj)}(hxeh]hxe}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj{ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjwubah}(h]h ]h"]h$]h&]hhuh1jhj>hhhjPhM%ubeh}(h]h ]h"]h$]h&]hhj%uh1jj&j'hj:hhhjPhM%ubah}(h]j5ah ](j+j,eh"]h$]h&]j0j1)j2huh1jhjPhM%hj7hhubj4)}(hhh]h)}(h2Put the runtime_pm reference back and mark as idleh]h2Put the runtime_pm reference back and mark as idle}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chM%hjhhubah}(h]h ]h"]h$]h&]uh1j3hj7hhhjPhM%ubeh}(h]h ](jPfunctioneh"]h$]h&]jUjPjVjjWjjXjYjZuh1jhhhjhNhNubj\)}(h=**Parameters** ``struct xe_device *xe`` xe device instanceh](h)}(h**Parameters**h]jf)}(hj$h]h Parameters}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj"ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chM)hjubj|)}(hhh]j)}(h+``struct xe_device *xe`` xe device instanceh](j)}(h``struct xe_device *xe``h]j)}(hjCh]hstruct xe_device *xe}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chM+hj=ubj)}(hhh]h)}(hxe device instanceh]hxe device instance}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chM&hjYubah}(h]h ]h"]h$]h&]uh1jhj=ubeh}(h]h ]h"]h$]h&]uh1jhjXhM+hj:ubah}(h]h ]h"]h$]h&]uh1j{hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j$xe_pm_runtime_get_ioctl (C function)c.xe_pm_runtime_get_ioctlhNtauh1jhjhhhNhNubj)}(hhh](j)}(h2int xe_pm_runtime_get_ioctl (struct xe_device *xe)h]j)}(h1int xe_pm_runtime_get_ioctl(struct xe_device *xe)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chM4ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhM4ubj)}(hxe_pm_runtime_get_ioctlh]j)}(hxe_pm_runtime_get_ioctlh]hxe_pm_runtime_get_ioctl}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhM4ubj)}(h(struct xe_device *xe)h]j)}(hstruct xe_device *xeh](jL)}(hjOh]hstruct}(hjhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h xe_deviceh]h xe_device}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjPreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.xe_pm_runtime_get_ioctlasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hxeh]hxe}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhM4ubeh}(h]h ]h"]h$]h&]hhj%uh1jj&j'hjhhhjhM4ubah}(h]jah ](j+j,eh"]h$]h&]j0j1)j2huh1jhjhM4hjhhubj4)}(hhh]h)}(h'Get a runtime_pm reference before ioctlh]h'Get a runtime_pm reference before ioctl}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chM4hjZhhubah}(h]h ]h"]h$]h&]uh1j3hjhhhjhM4ubeh}(h]h ](jPfunctioneh"]h$]h&]jUjPjVjujWjujXjYjZuh1jhhhjhNhNubj\)}(hXQ**Parameters** ``struct xe_device *xe`` xe device instance **Description** When possible, scope-based runtime PM (through ACQUIRE(xe_pm_runtime_ioctl, ...)) is be preferred over direct usage of this function. Manual get/put handling should only be used when the function contains goto-based logic which can break scope-based handling, or when the lifetime of the runtime PM reference does not match a specific scope (e.g., runtime PM obtained in one function and released in a different one). **Return** Any number greater than or equal to 0 for success, negative error code otherwise.h](h)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehj}ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chM8hjyubj|)}(hhh]j)}(h,``struct xe_device *xe`` xe device instance h](j)}(h``struct xe_device *xe``h]j)}(hjh]hstruct xe_device *xe}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chM5hjubj)}(hhh]h)}(hxe device instanceh]hxe device instance}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM5hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM5hjubah}(h]h ]h"]h$]h&]uh1j{hjyubh)}(h**Description**h]jf)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chM7hjyubh)}(hXWhen possible, scope-based runtime PM (through ACQUIRE(xe_pm_runtime_ioctl, ...)) is be preferred over direct usage of this function. Manual get/put handling should only be used when the function contains goto-based logic which can break scope-based handling, or when the lifetime of the runtime PM reference does not match a specific scope (e.g., runtime PM obtained in one function and released in a different one).h]hXWhen possible, scope-based runtime PM (through ACQUIRE(xe_pm_runtime_ioctl, ...)) is be preferred over direct usage of this function. Manual get/put handling should only be used when the function contains goto-based logic which can break scope-based handling, or when the lifetime of the runtime PM reference does not match a specific scope (e.g., runtime PM obtained in one function and released in a different one).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chM6hjyubh)}(h **Return**h]jf)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chM=hjyubh)}(hQAny number greater than or equal to 0 for success, negative error code otherwise.h]hQAny number greater than or equal to 0 for success, negative error code otherwise.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chM>hjyubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j(xe_pm_runtime_get_if_active (C function)c.xe_pm_runtime_get_if_activehNtauh1jhjhhhNhNubj)}(hhh](j)}(h7bool xe_pm_runtime_get_if_active (struct xe_device *xe)h]j)}(h6bool xe_pm_runtime_get_if_active(struct xe_device *xe)h](j)}(hj h]hbool}(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAhhhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMLubj)}(h h]h }(hjShhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAhhhjRhMLubj)}(hxe_pm_runtime_get_if_activeh]j)}(hxe_pm_runtime_get_if_activeh]hxe_pm_runtime_get_if_active}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjaubah}(h]h ](jjeh"]h$]h&]hhuh1jhjAhhhjRhMLubj)}(h(struct xe_device *xe)h]j)}(hstruct xe_device *xeh](jL)}(hjOh]hstruct}(hjhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj}ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubh)}(hhh]j)}(h xe_deviceh]h xe_device}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjPreftypej reftargetjmodnameN classnameNjj)}j]j)}jjgsbc.xe_pm_runtime_get_if_activeasbuh1hhj}ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubj)}(hxeh]hxe}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjyubah}(h]h ]h"]h$]h&]hhuh1jhjAhhhjRhMLubeh}(h]h ]h"]h$]h&]hhj%uh1jj&j'hj=hhhjRhMLubah}(h]j8ah ](j+j,eh"]h$]h&]j0j1)j2huh1jhjRhMLhj:hhubj4)}(hhh]h)}(h+Get a runtime_pm reference if device activeh]h+Get a runtime_pm reference if device active}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMLhjhhubah}(h]h ]h"]h$]h&]uh1j3hj:hhhjRhMLubeh}(h]h ](jPfunctioneh"]h$]h&]jUjPjVjjWjjXjYjZuh1jhhhjhNhNubj\)}(h**Parameters** ``struct xe_device *xe`` xe device instance **Return** True if device is awake (regardless the previous number of references) and a new reference was taken, false otherwise.h](h)}(h**Parameters**h]jf)}(hj&h]h Parameters}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj$ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMPhj ubj|)}(hhh]j)}(h,``struct xe_device *xe`` xe device instance h](j)}(h``struct xe_device *xe``h]j)}(hjEh]hstruct xe_device *xe}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMMhj?ubj)}(hhh]h)}(hxe device instanceh]hxe device instance}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZhMMhj[ubah}(h]h ]h"]h$]h&]uh1jhj?ubeh}(h]h ]h"]h$]h&]uh1jhjZhMMhj<ubah}(h]h ]h"]h$]h&]uh1j{hj ubh)}(h **Return**h]jf)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehj~ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMOhj ubh)}(hvTrue if device is awake (regardless the previous number of references) and a new reference was taken, false otherwise.h]hvTrue if device is awake (regardless the previous number of references) and a new reference was taken, false otherwise.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMOhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j(xe_pm_runtime_get_if_in_use (C function)c.xe_pm_runtime_get_if_in_usehNtauh1jhjhhhNhNubj)}(hhh](j)}(h7bool xe_pm_runtime_get_if_in_use (struct xe_device *xe)h]j)}(h6bool xe_pm_runtime_get_if_in_use(struct xe_device *xe)h](j)}(hj h]hbool}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMXubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMXubj)}(hxe_pm_runtime_get_if_in_useh]j)}(hxe_pm_runtime_get_if_in_useh]hxe_pm_runtime_get_if_in_use}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhMXubj)}(h(struct xe_device *xe)h]j)}(hstruct xe_device *xeh](jL)}(hjOh]hstruct}(hjhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h xe_deviceh]h xe_device}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjPreftypej reftargetj!modnameN classnameNjj)}j]j)}jjsbc.xe_pm_runtime_get_if_in_useasbuh1hhjubj)}(h h]h }(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjMhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hxeh]hxe}(hjZhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMXubeh}(h]h ]h"]h$]h&]hhj%uh1jj&j'hjhhhjhMXubah}(h]jah ](j+j,eh"]h$]h&]j0j1)j2huh1jhjhMXhjhhubj4)}(hhh]h)}(h?Get a new reference if device is active with previous ref takenh]h?Get a new reference if device is active with previous ref taken}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMXhjhhubah}(h]h ]h"]h$]h&]uh1j3hjhhhjhMXubeh}(h]h ](jPfunctioneh"]h$]h&]jUjPjVjjWjjXjYjZuh1jhhhjhNhNubj\)}(h**Parameters** ``struct xe_device *xe`` xe device instance **Return** True if device is awake, a previous reference had been already taken, and a new reference was now taken, false otherwise.h](h)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chM\hjubj|)}(hhh]j)}(h,``struct xe_device *xe`` xe device instance h](j)}(h``struct xe_device *xe``h]j)}(hjh]hstruct xe_device *xe}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMYhjubj)}(hhh]h)}(hxe device instanceh]hxe device instance}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMYhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMYhjubah}(h]h ]h"]h$]h&]uh1j{hjubh)}(h **Return**h]jf)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chM[hjubh)}(hyTrue if device is awake, a previous reference had been already taken, and a new reference was now taken, false otherwise.h]hyTrue if device is awake, a previous reference had been already taken, and a new reference was now taken, false otherwise.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chM[hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'xe_pm_runtime_get_noresume (C function)c.xe_pm_runtime_get_noresumehNtauh1jhjhhhNhNubj)}(hhh](j)}(h6void xe_pm_runtime_get_noresume (struct xe_device *xe)h]j)}(h5void xe_pm_runtime_get_noresume(struct xe_device *xe)h](j)}(hvoidh]hvoid}(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAhhhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chM{ubj)}(h h]h }(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAhhhjShM{ubj)}(hxe_pm_runtime_get_noresumeh]j)}(hxe_pm_runtime_get_noresumeh]hxe_pm_runtime_get_noresume}(hjfhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjbubah}(h]h ](jjeh"]h$]h&]hhuh1jhjAhhhjShM{ubj)}(h(struct xe_device *xe)h]j)}(hstruct xe_device *xeh](jL)}(hjOh]hstruct}(hjhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj~ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~ubh)}(hhh]j)}(h xe_deviceh]h xe_device}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjPreftypej reftargetjmodnameN classnameNjj)}j]j)}jjhsbc.xe_pm_runtime_get_noresumeasbuh1hhj~ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~ubj)}(hxeh]hxe}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjzubah}(h]h ]h"]h$]h&]hhuh1jhjAhhhjShM{ubeh}(h]h ]h"]h$]h&]hhj%uh1jj&j'hj=hhhjShM{ubah}(h]j8ah ](j+j,eh"]h$]h&]j0j1)j2huh1jhjShM{hj:hhubj4)}(hhh]h)}(h.Bump runtime PM usage counter without resumingh]h.Bump runtime PM usage counter without resuming}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chM{hjhhubah}(h]h ]h"]h$]h&]uh1j3hj:hhhjShM{ubeh}(h]h ](jPfunctioneh"]h$]h&]jUjPjVjjWjjXjYjZuh1jhhhjhNhNubj\)}(hX **Parameters** ``struct xe_device *xe`` xe device instance **Description** This function should be used in inner places where it is surely already protected by outer-bound callers of `xe_pm_runtime_get`. It will warn if not protected. The reference should be put back after this function regardless, since it will always bump the usage counter, regardless. When possible, scope-based runtime PM (through guard(xe_pm_runtime_noresume)) is be preferred over direct usage of this function. Manual get/put handling should only be used when the function contains goto-based logic which can break scope-based handling, or when the lifetime of the runtime PM reference does not match a specific scope (e.g., runtime PM obtained in one function and released in a different one).h](h)}(h**Parameters**h]jf)}(hj'h]h Parameters}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj%ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhj!ubj|)}(hhh]j)}(h,``struct xe_device *xe`` xe device instance h](j)}(h``struct xe_device *xe``h]j)}(hjFh]hstruct xe_device *xe}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chM|hj@ubj)}(hhh]h)}(hxe device instanceh]hxe device instance}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj[hM|hj\ubah}(h]h ]h"]h$]h&]uh1jhj@ubeh}(h]h ]h"]h$]h&]uh1jhj[hM|hj=ubah}(h]h ]h"]h$]h&]uh1j{hj!ubh)}(h**Description**h]jf)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chM~hj!ubh)}(hXThis function should be used in inner places where it is surely already protected by outer-bound callers of `xe_pm_runtime_get`. It will warn if not protected. The reference should be put back after this function regardless, since it will always bump the usage counter, regardless.h](hlThis function should be used in inner places where it is surely already protected by outer-bound callers of }(hjhhhNhNubh)}(h`xe_pm_runtime_get`h]hxe_pm_runtime_get}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh. It will warn if not protected. The reference should be put back after this function regardless, since it will always bump the usage counter, regardless.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chM}hj!ubh)}(hXWhen possible, scope-based runtime PM (through guard(xe_pm_runtime_noresume)) is be preferred over direct usage of this function. Manual get/put handling should only be used when the function contains goto-based logic which can break scope-based handling, or when the lifetime of the runtime PM reference does not match a specific scope (e.g., runtime PM obtained in one function and released in a different one).h]hXWhen possible, scope-based runtime PM (through guard(xe_pm_runtime_noresume)) is be preferred over direct usage of this function. Manual get/put handling should only be used when the function contains goto-based logic which can break scope-based handling, or when the lifetime of the runtime PM reference does not match a specific scope (e.g., runtime PM obtained in one function and released in a different one).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhj!ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j)xe_pm_runtime_resume_and_get (C function)c.xe_pm_runtime_resume_and_gethNtauh1jhjhhhNhNubj)}(hhh](j)}(h8bool xe_pm_runtime_resume_and_get (struct xe_device *xe)h]j)}(h7bool xe_pm_runtime_resume_and_get(struct xe_device *xe)h](j)}(hj h]hbool}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj)}(hxe_pm_runtime_resume_and_geth]j)}(hxe_pm_runtime_resume_and_geth]hxe_pm_runtime_resume_and_get}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhMubj)}(h(struct xe_device *xe)h]j)}(hstruct xe_device *xeh](jL)}(hjOh]hstruct}(hj#hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjubj)}(h h]h }(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h xe_deviceh]h xe_device}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>ubah}(h]h ]h"]h$]h&] refdomainjPreftypej reftargetjCmodnameN classnameNjj)}j]j)}jj sbc.xe_pm_runtime_resume_and_getasbuh1hhjubj)}(h h]h }(hjahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjohhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hxeh]hxe}(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj%uh1jj&j'hjhhhjhMubah}(h]jah ](j+j,eh"]h$]h&]j0j1)j2huh1jhjhMhjhhubj4)}(hhh]h)}(h+Resume, then get a runtime_pm ref if awake.h]h+Resume, then get a runtime_pm ref if awake.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhjhhubah}(h]h ]h"]h$]h&]uh1j3hjhhhjhMubeh}(h]h ](jPfunctioneh"]h$]h&]jUjPjVjjWjjXjYjZuh1jhhhjhNhNubj\)}(h**Parameters** ``struct xe_device *xe`` xe device instance **Return** True if device is awake and the reference was taken, false otherwise.h](h)}(h**Parameters**h]jf)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehjubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhjubj|)}(hhh]j)}(h,``struct xe_device *xe`` xe device instance h](j)}(h``struct xe_device *xe``h]j)}(hjh]hstruct xe_device *xe}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhjubj)}(hhh]h)}(hxe device instanceh]hxe device instance}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1j{hjubh)}(h **Return**h]jf)}(hj"h]hReturn}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhjubh)}(hETrue if device is awake and the reference was taken, false otherwise.h]hETrue if device is awake and the reference was taken, false otherwise.}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j*xe_pm_assert_unbounded_bridge (C function)c.xe_pm_assert_unbounded_bridgehNtauh1jhjhhhNhNubj)}(hhh](j)}(h9void xe_pm_assert_unbounded_bridge (struct xe_device *xe)h]j)}(h8void xe_pm_assert_unbounded_bridge(struct xe_device *xe)h](j)}(hvoidh]hvoid}(hjghhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjchhhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMubj)}(h h]h }(hjvhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjchhhjuhMubj)}(hxe_pm_assert_unbounded_bridgeh]j)}(hxe_pm_assert_unbounded_bridgeh]hxe_pm_assert_unbounded_bridge}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjchhhjuhMubj)}(h(struct xe_device *xe)h]j)}(hstruct xe_device *xeh](jL)}(hjOh]hstruct}(hjhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h xe_deviceh]h xe_device}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjPreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.xe_pm_assert_unbounded_bridgeasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hxeh]hxe}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjchhhjuhMubeh}(h]h ]h"]h$]h&]hhj%uh1jj&j'hj_hhhjuhMubah}(h]jZah ](j+j,eh"]h$]h&]j0j1)j2huh1jhjuhMhj\hhubj4)}(hhh]h)}(h*Disable PM on unbounded pcie parent bridgeh]h*Disable PM on unbounded pcie parent bridge}(hj' hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhj$ hhubah}(h]h ]h"]h$]h&]uh1j3hj\hhhjuhMubeh}(h]h ](jPfunctioneh"]h$]h&]jUjPjVj? jWj? jXjYjZuh1jhhhjhNhNubj\)}(h=**Parameters** ``struct xe_device *xe`` xe device instanceh](h)}(h**Parameters**h]jf)}(hjI h]h Parameters}(hjK hhhNhNubah}(h]h ]h"]h$]h&]uh1jehjG ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhjC ubj|)}(hhh]j)}(h+``struct xe_device *xe`` xe device instanceh](j)}(h``struct xe_device *xe``h]j)}(hjh h]hstruct xe_device *xe}(hjj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjf ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhjb ubj)}(hhh]h)}(hxe device instanceh]hxe device instance}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhj~ ubah}(h]h ]h"]h$]h&]uh1jhjb ubeh}(h]h ]h"]h$]h&]uh1jhj} hMhj_ ubah}(h]h ]h"]h$]h&]uh1j{hjC ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j%xe_pm_set_vram_threshold (C function)c.xe_pm_set_vram_thresholdhNtauh1jhjhhhNhNubj)}(hhh](j)}(hBint xe_pm_set_vram_threshold (struct xe_device *xe, u32 threshold)h]j)}(hAint xe_pm_set_vram_threshold(struct xe_device *xe, u32 threshold)h](j)}(hinth]hint}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhj hMubj)}(hxe_pm_set_vram_thresholdh]j)}(hxe_pm_set_vram_thresholdh]hxe_pm_set_vram_threshold}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj hhhj hMubj)}(h%(struct xe_device *xe, u32 threshold)h](j)}(hstruct xe_device *xeh](jL)}(hjOh]hstruct}(hj hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj ubj)}(h h]h }(hj !hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubh)}(hhh]j)}(h xe_deviceh]h xe_device}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&] refdomainjPreftypej reftargetj!modnameN classnameNjj)}j]j)}jj sbc.xe_pm_set_vram_thresholdasbuh1hhj ubj)}(h h]h }(hj=!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hjh]h*}(hjK!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hxeh]hxe}(hjX!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(h u32 thresholdh](h)}(hhh]j)}(hu32h]hu32}(hjt!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjq!ubah}(h]h ]h"]h$]h&] refdomainjPreftypej reftargetjv!modnameN classnameNjj)}j]j9!c.xe_pm_set_vram_thresholdasbuh1hhjm!ubj)}(h h]h }(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjm!ubj)}(h thresholdh]h threshold}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjm!ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubeh}(h]h ]h"]h$]h&]hhuh1jhj hhhj hMubeh}(h]h ]h"]h$]h&]hhj%uh1jj&j'hj hhhj hMubah}(h]j ah ](j+j,eh"]h$]h&]j0j1)j2huh1jhj hMhj hhubj4)}(hhh]h)}(h1Set a VRAM threshold for allowing/blocking D3Coldh]h1Set a VRAM threshold for allowing/blocking D3Cold}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhj!hhubah}(h]h ]h"]h$]h&]uh1j3hj hhhj hMubeh}(h]h ](jPfunctioneh"]h$]h&]jUjPjVj!jWj!jXjYjZuh1jhhhjhNhNubj\)}(h**Parameters** ``struct xe_device *xe`` xe device instance ``u32 threshold`` VRAM size in MiB for the D3cold threshold **Return** * 0 - success * -EINVAL - invalid argumenth](h)}(h**Parameters**h]jf)}(hj!h]h Parameters}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj!ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhj!ubj|)}(hhh](j)}(h,``struct xe_device *xe`` xe device instance h](j)}(h``struct xe_device *xe``h]j)}(hj "h]hstruct xe_device *xe}(hj "hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj "ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhj"ubj)}(hhh]h)}(hxe device instanceh]hxe device instance}(hj$"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj "hMhj!"ubah}(h]h ]h"]h$]h&]uh1jhj"ubeh}(h]h ]h"]h$]h&]uh1jhj "hMhj"ubj)}(h<``u32 threshold`` VRAM size in MiB for the D3cold threshold h](j)}(h``u32 threshold``h]j)}(hjD"h]h u32 threshold}(hjF"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjB"ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhj>"ubj)}(hhh]h)}(h)VRAM size in MiB for the D3cold thresholdh]h)VRAM size in MiB for the D3cold threshold}(hj]"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjY"hMhjZ"ubah}(h]h ]h"]h$]h&]uh1jhj>"ubeh}(h]h ]h"]h$]h&]uh1jhjY"hMhj"ubeh}(h]h ]h"]h$]h&]uh1j{hj!ubh)}(h **Return**h]jf)}(hj"h]hReturn}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj}"ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhj!ubh bullet_list)}(hhh](h list_item)}(h0 - successh]h)}(hj"h]h0 - success}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhj"ubah}(h]h ]h"]h$]h&]uh1j"hj"ubj")}(h-EINVAL - invalid argumenth]h option_list)}(hhh]hoption_list_item)}(hhh](h option_group)}(hhh]hoption)}(h-EINVALh](h option_string)}(h-Eh]h-E}hj"sbah}(h]h ]h"]h$]h&]uh1j"hj"ubhoption_argument)}(hINVALh]hINVAL}(hj"hhhNhNubah}(h]h ]h"]h$]h&] delimiterhuh1j"hj"ubeh}(h]h ]h"]h$]h&]uh1j"hj"ubah}(h]h ]h"]h$]h&]uh1j"hj"ubh description)}(h- invalid argumenth]j")}(hhh]j")}(hinvalid argumenth]h)}(hj#h]hinvalid argument}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhj#ubah}(h]h ]h"]h$]h&]uh1j"hj#ubah}(h]h ]h"]h$]h&]bullet-uh1j"hj#hMhj"ubah}(h]h ]h"]h$]h&]uh1j"hj"ubeh}(h]h ]h"]h$]h&]uh1j"hj"ubah}(h]h ]h"]h$]h&]uh1j"hj#hMhj"ubah}(h]h ]h"]h$]h&]uh1j"hj"ubeh}(h]h ]h"]h$]h&]j!#juh1j"hj"hMhj!ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j(xe_pm_d3cold_allowed_toggle (C function)c.xe_pm_d3cold_allowed_togglehNtauh1jhjhhhNhNubj)}(hhh](j)}(h7void xe_pm_d3cold_allowed_toggle (struct xe_device *xe)h]j)}(h6void xe_pm_d3cold_allowed_toggle(struct xe_device *xe)h](j)}(hvoidh]hvoid}(hja#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]#hhhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMubj)}(h h]h }(hjp#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]#hhhjo#hMubj)}(hxe_pm_d3cold_allowed_toggleh]j)}(hxe_pm_d3cold_allowed_toggleh]hxe_pm_d3cold_allowed_toggle}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~#ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj]#hhhjo#hMubj)}(h(struct xe_device *xe)h]j)}(hstruct xe_device *xeh](jL)}(hjOh]hstruct}(hj#hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj#ubj)}(h h]h }(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubh)}(hhh]j)}(h xe_deviceh]h xe_device}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubah}(h]h ]h"]h$]h&] refdomainjPreftypej reftargetj#modnameN classnameNjj)}j]j)}jj#sbc.xe_pm_d3cold_allowed_toggleasbuh1hhj#ubj)}(h h]h }(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubj)}(hjh]h*}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubj)}(hxeh]hxe}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj#ubah}(h]h ]h"]h$]h&]hhuh1jhj]#hhhjo#hMubeh}(h]h ]h"]h$]h&]hhj%uh1jj&j'hjY#hhhjo#hMubah}(h]jT#ah ](j+j,eh"]h$]h&]j0j1)j2huh1jhjo#hMhjV#hhubj4)}(hhh]h)}(h)Check conditions to toggle d3cold.allowedh]h)Check conditions to toggle d3cold.allowed}(hj!$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhj$hhubah}(h]h ]h"]h$]h&]uh1j3hjV#hhhjo#hMubeh}(h]h ](jPfunctioneh"]h$]h&]jUjPjVj9$jWj9$jXjYjZuh1jhhhjhNhNubj\)}(h**Parameters** ``struct xe_device *xe`` xe device instance **Description** To be called during runtime_pm idle callback. Check for all the D3Cold conditions ahead of runtime suspend.h](h)}(h**Parameters**h]jf)}(hjC$h]h Parameters}(hjE$hhhNhNubah}(h]h ]h"]h$]h&]uh1jehjA$ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhj=$ubj|)}(hhh]j)}(h,``struct xe_device *xe`` xe device instance h](j)}(h``struct xe_device *xe``h]j)}(hjb$h]hstruct xe_device *xe}(hjd$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`$ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhj\$ubj)}(hhh]h)}(hxe device instanceh]hxe device instance}(hj{$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjw$hMhjx$ubah}(h]h ]h"]h$]h&]uh1jhj\$ubeh}(h]h ]h"]h$]h&]uh1jhjw$hMhjY$ubah}(h]h ]h"]h$]h&]uh1j{hj=$ubh)}(h**Description**h]jf)}(hj$h]h Description}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj$ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhj=$ubh)}(hkTo be called during runtime_pm idle callback. Check for all the D3Cold conditions ahead of runtime suspend.h]hkTo be called during runtime_pm idle callback. Check for all the D3Cold conditions ahead of runtime suspend.}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhj=$ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jxe_pm_module_init (C function)c.xe_pm_module_inithNtauh1jhjhhhNhNubj)}(hhh](j)}(hint xe_pm_module_init (void)h]j)}(hint xe_pm_module_init(void)h](j)}(hinth]hint}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$hhhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMubj)}(h h]h }(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$hhhj$hMubj)}(hxe_pm_module_inith]j)}(hxe_pm_module_inith]hxe_pm_module_init}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj$hhhj$hMubj)}(h(void)h]j)}(hvoidh]j)}(hvoidh]hvoid}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&]noemphhhuh1jhj%ubah}(h]h ]h"]h$]h&]hhuh1jhj$hhhj$hMubeh}(h]h ]h"]h$]h&]hhj%uh1jj&j'hj$hhhj$hMubah}(h]j$ah ](j+j,eh"]h$]h&]j0j1)j2huh1jhj$hMhj$hhubj4)}(hhh]h)}(h-Perform xe_pm specific module initialization.h]h-Perform xe_pm specific module initialization.}(hjI%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhjF%hhubah}(h]h ]h"]h$]h&]uh1j3hj$hhhj$hMubeh}(h]h ](jPfunctioneh"]h$]h&]jUjPjVja%jWja%jXjYjZuh1jhhhjhNhNubj\)}(hZ**Parameters** ``void`` no arguments **Return** 0 on success. Currently doesn't fail.h](h)}(h**Parameters**h]jf)}(hjk%h]h Parameters}(hjm%hhhNhNubah}(h]h ]h"]h$]h&]uh1jehji%ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhje%ubj|)}(hhh]j)}(h``void`` no arguments h](j)}(h``void``h]j)}(hj%h]hvoid}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chKhj%ubj)}(hhh]h)}(h no argumentsh]h no arguments}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%hKhj%ubah}(h]h ]h"]h$]h&]uh1jhj%ubeh}(h]h ]h"]h$]h&]uh1jhj%hKhj%ubah}(h]h ]h"]h$]h&]uh1j{hje%ubh)}(h **Return**h]jf)}(hj%h]hReturn}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jehj%ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chKhje%ubh)}(h%0 on success. Currently doesn't fail.h]h'0 on success. Currently doesn’t fail.}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pm:13: ./drivers/gpu/drm/xe/xe_pm.chMhje%ubeh}(h]h ] kernelindentah"]h$]h&]uh1j[hjhhhNhNubeh}(h] internal-apiah ]h"] internal apiah$]h&]uh1hhhhhhhhK ubeh}(h]runtime-power-managementah ]h"]runtime power managementah$]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_handlerj$&error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourcehnj _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}refids}nameids}(j%j%j%j%u nametypes}(j%j%uh}(j%hj%jjjjjjjjjjj j j jm jr j8 j= jjj#j(jjj3j8jjj5j:jjj8j=jjj8j=jjjZj_j j jT#jY#j$j$u 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.