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/amdgpu/driver-coremodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget*/translations/zh_TW/gpu/amdgpu/driver-coremodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget*/translations/it_IT/gpu/amdgpu/driver-coremodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget*/translations/ja_JP/gpu/amdgpu/driver-coremodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget*/translations/ko_KR/gpu/amdgpu/driver-coremodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget*/translations/sp_SP/gpu/amdgpu/driver-coremodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhsection)}(hhh](htitle)}(hCore Driver Infrastructureh]hCore Driver Infrastructure}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhD/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core.rsthKubh)}(hhh](h)}(hGPU Hardware Structureh]hGPU Hardware Structure}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh paragraph)}(hXEach ASIC is a collection of hardware blocks. We refer to them as "IPs" (Intellectual Property blocks). Each IP encapsulates certain functionality. IPs are versioned and can also be mixed and matched. E.g., you might have two different ASICs that both have System DMA (SDMA) 5.x IPs. The driver is arranged by IPs. There are driver components to handle the initialization and operation of each IP. There are also a bunch of smaller IPs that don't really need much if any driver interaction. Those end up getting lumped into the common stuff in the soc files. The soc files (e.g., vi.c, soc15.c nv.c) contain code for aspects of the SoC itself rather than specific IPs. E.g., things like GPU resets and register access functions are SoC dependent.h]hXEach ASIC is a collection of hardware blocks. We refer to them as “IPs” (Intellectual Property blocks). Each IP encapsulates certain functionality. IPs are versioned and can also be mixed and matched. E.g., you might have two different ASICs that both have System DMA (SDMA) 5.x IPs. The driver is arranged by IPs. There are driver components to handle the initialization and operation of each IP. There are also a bunch of smaller IPs that don’t really need much if any driver interaction. Those end up getting lumped into the common stuff in the soc files. The soc files (e.g., vi.c, soc15.c nv.c) contain code for aspects of the SoC itself rather than specific IPs. E.g., things like GPU resets and register access functions are SoC dependent.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hXAn APU contains more than just CPU and GPU, it also contains all of the platform stuff (audio, usb, gpio, etc.). Also, a lot of components are shared between the CPU, platform, and the GPU (e.g., SMU, PSP, etc.). Specific components (CPU, GPU, etc.) usually have their interface to interact with those common components. For things like S0i3 there is a ton of coordination required across all the components, but that is probably a bit beyond the scope of this section.h]hXAn APU contains more than just CPU and GPU, it also contains all of the platform stuff (audio, usb, gpio, etc.). Also, a lot of components are shared between the CPU, platform, and the GPU (e.g., SMU, PSP, etc.). Specific components (CPU, GPU, etc.) usually have their interface to interact with those common components. For things like S0i3 there is a ton of coordination required across all the components, but that is probably a bit beyond the scope of this section.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(h9With respect to the GPU, we have the following major IPs:h]h9With respect to the GPU, we have the following major IPs:}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubhdefinition_list)}(hhh](hdefinition_list_item)}(hXGMC (Graphics Memory Controller) This was a dedicated IP on older pre-vega chips, but has since become somewhat decentralized on vega and newer chips. They now have dedicated memory hubs for specific IPs or groups of IPs. We still treat it as a single component in the driver however since the programming model is still pretty similar. This is how the different IPs on the GPU get the memory (VRAM or system memory). It also provides the support for per process GPU virtual address spaces. h](hterm)}(h GMC (Graphics Memory Controller)h]h GMC (Graphics Memory Controller)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK'hhubh definition)}(hhh]h)}(hXThis was a dedicated IP on older pre-vega chips, but has since become somewhat decentralized on vega and newer chips. They now have dedicated memory hubs for specific IPs or groups of IPs. We still treat it as a single component in the driver however since the programming model is still pretty similar. This is how the different IPs on the GPU get the memory (VRAM or system memory). It also provides the support for per process GPU virtual address spaces.h]hXThis was a dedicated IP on older pre-vega chips, but has since become somewhat decentralized on vega and newer chips. They now have dedicated memory hubs for specific IPs or groups of IPs. We still treat it as a single component in the driver however since the programming model is still pretty similar. This is how the different IPs on the GPU get the memory (VRAM or system memory). It also provides the support for per process GPU virtual address spaces.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hjubah}(h]h ]h"]h$]h&]uh1jhhubeh}(h]h ]h"]h$]h&]uh1hhhhK'hhubh)}(hIH (Interrupt Handler) This is the interrupt controller on the GPU. All of the IPs feed their interrupts into this IP and it aggregates them into a set of ring buffers that the driver can parse to handle interrupts from different IPs. h](j)}(hIH (Interrupt Handler)h]hIH (Interrupt Handler)}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK-hj.ubj)}(hhh]h)}(hThis is the interrupt controller on the GPU. All of the IPs feed their interrupts into this IP and it aggregates them into a set of ring buffers that the driver can parse to handle interrupts from different IPs.h]hThis is the interrupt controller on the GPU. All of the IPs feed their interrupts into this IP and it aggregates them into a set of ring buffers that the driver can parse to handle interrupts from different IPs.}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK*hj@ubah}(h]h ]h"]h$]h&]uh1jhj.ubeh}(h]h ]h"]h$]h&]uh1hhhhK-hhhhubh)}(hPSP (Platform Security Processor) This handles security policy for the SoC and executes trusted applications, and validates and loads firmwares for other blocks. h](j)}(h!PSP (Platform Security Processor)h]h!PSP (Platform Security Processor)}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK1hj]ubj)}(hhh]h)}(hThis handles security policy for the SoC and executes trusted applications, and validates and loads firmwares for other blocks.h]hThis handles security policy for the SoC and executes trusted applications, and validates and loads firmwares for other blocks.}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK0hjoubah}(h]h ]h"]h$]h&]uh1jhj]ubeh}(h]h ]h"]h$]h&]uh1hhhhK1hhhhubh)}(hSMU (System Management Unit) This is the power management microcontroller. It manages the entire SoC. The driver interacts with it to control power management features like clocks, voltages, power rails, etc. h](j)}(hSMU (System Management Unit)h]hSMU (System Management Unit)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK6hjubj)}(hhh]h)}(hThis is the power management microcontroller. It manages the entire SoC. The driver interacts with it to control power management features like clocks, voltages, power rails, etc.h]hThis is the power management microcontroller. It manages the entire SoC. The driver interacts with it to control power management features like clocks, voltages, power rails, etc.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK4hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhhhK6hhhhubh)}(hDCN (Display Controller Next) This is the display controller. It handles the display hardware. It is described in more details in :ref:`Display Core `. h](j)}(hDCN (Display Controller Next)h]hDCN (Display Controller Next)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK:hjubj)}(hhh]h)}(hThis is the display controller. It handles the display hardware. It is described in more details in :ref:`Display Core `.h](heThis is the display controller. It handles the display hardware. It is described in more details in }(hjhhhNhNubh)}(h):ref:`Display Core `h]hinline)}(hjh]h Display Core}(hjhhhNhNubah}(h]h ](xrefstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocgpu/amdgpu/driver-core refdomainjreftyperef refexplicitrefwarn reftargetamdgpu-display-coreuh1hhhhK9hjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK9hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhhhK:hhhhubh)}(hSDMA (System DMA) This is a multi-purpose DMA engine. The kernel driver uses it for various things including paging and GPU page table updates. It's also exposed to userspace for use by user mode drivers (OpenGL, Vulkan, etc.) h](j)}(hSDMA (System DMA)h]hSDMA (System DMA)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK@hjubj)}(hhh]h)}(hThis is a multi-purpose DMA engine. The kernel driver uses it for various things including paging and GPU page table updates. It's also exposed to userspace for use by user mode drivers (OpenGL, Vulkan, etc.)h]hThis is a multi-purpose DMA engine. The kernel driver uses it for various things including paging and GPU page table updates. It’s also exposed to userspace for use by user mode drivers (OpenGL, Vulkan, etc.)}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK=hj%ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhhhK@hhhhubh)}(hXGC (Graphics and Compute) This is the graphics and compute engine, i.e., the block that encompasses the 3D pipeline and shader blocks. This is by far the largest block on the GPU. The 3D pipeline has tons of sub-blocks. In addition to that, it also contains the CP microcontrollers (ME, PFP, CE, MEC) and the RLC microcontroller. It's exposed to userspace for user mode drivers (OpenGL, Vulkan, OpenCL, etc.). More details in :ref:`Graphics (GFX) and Compute `. h](j)}(hGC (Graphics and Compute)h]hGC (Graphics and Compute)}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKIhjBubj)}(hhh]h)}(hXThis is the graphics and compute engine, i.e., the block that encompasses the 3D pipeline and shader blocks. This is by far the largest block on the GPU. The 3D pipeline has tons of sub-blocks. In addition to that, it also contains the CP microcontrollers (ME, PFP, CE, MEC) and the RLC microcontroller. It's exposed to userspace for user mode drivers (OpenGL, Vulkan, OpenCL, etc.). More details in :ref:`Graphics (GFX) and Compute `.h](hXThis is the graphics and compute engine, i.e., the block that encompasses the 3D pipeline and shader blocks. This is by far the largest block on the GPU. The 3D pipeline has tons of sub-blocks. In addition to that, it also contains the CP microcontrollers (ME, PFP, CE, MEC) and the RLC microcontroller. It’s exposed to userspace for user mode drivers (OpenGL, Vulkan, OpenCL, etc.). More details in }(hjWhhhNhNubh)}(h-:ref:`Graphics (GFX) and Compute `h]j)}(hjah]hGraphics (GFX) and Compute}(hjchhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1jhj_ubah}(h]h ]h"]h$]h&]refdocj refdomainjmreftyperef refexplicitrefwarnj amdgpu-gcuh1hhhhKChjWubh.}(hjWhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKChjTubah}(h]h ]h"]h$]h&]uh1jhjBubeh}(h]h ]h"]h$]h&]uh1hhhhKIhhhhubh)}(hVCN (Video Core Next) This is the multi-media engine. It handles video and image encode and decode. It's exposed to userspace for user mode drivers (VA-API, OpenMAX, etc.) h](j)}(hVCN (Video Core Next)h]hVCN (Video Core Next)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKNhjubj)}(hhh]h)}(hThis is the multi-media engine. It handles video and image encode and decode. It's exposed to userspace for user mode drivers (VA-API, OpenMAX, etc.)h]hThis is the multi-media engine. It handles video and image encode and decode. It’s exposed to userspace for user mode drivers (VA-API, OpenMAX, etc.)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKLhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhhhKNhhhhubeh}(h]h ]h"]h$]h&]uh1hhhhhhhhNubhtarget)}(h!.. _pipes-and-queues-description:h]h}(h]h ]h"]h$]h&]refidpipes-and-queues-descriptionuh1jhKPhhhhhhubeh}(h]gpu-hardware-structureah ]h"]gpu hardware structureah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h'GFX, Compute, and SDMA Overall Behaviorh]h'GFX, Compute, and SDMA Overall Behavior}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKSubhnote)}(haFor simplicity, whenever the term block is used in this section, it means GFX, Compute, and SDMA.h]h)}(haFor simplicity, whenever the term block is used in this section, it means GFX, Compute, and SDMA.h]haFor simplicity, whenever the term block is used in this section, it means GFX, Compute, and SDMA.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKUhjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubh)}(hGFX, Compute and SDMA share a similar form of operation that can be abstracted to facilitate understanding of the behavior of these blocks. See the figure below illustrating the common components of these blocks:h]hGFX, Compute and SDMA share a similar form of operation that can be abstracted to facilitate understanding of the behavior of these blocks. See the figure below illustrating the common components of these blocks:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKXhjhhubkfigure kernel_figure)}(hhh]hfigure)}(hhh]himage)}(h2.. kernel-figure:: pipe_and_queue_abstraction.svg h]h}(h]h ]h"]h$]h&]uri)gpu/amdgpu/pipe_and_queue_abstraction.svg candidates}*j1suh1j$hj!hhhKubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhK]ubh)}(hXIn the central part of this figure, you can see two hardware elements, one called **Pipes** and another called **Queues**; it is important to highlight that Queues must be associated with a Pipe and vice-versa. Every specific hardware IP may have a different number of Pipes and, in turn, a different number of Queues; for example, GFX 11 has two Pipes and two Queues per Pipe for the GFX front end.h](hRIn the central part of this figure, you can see two hardware elements, one called }(hjAhhhNhNubhstrong)}(h **Pipes**h]hPipes}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjAubh and another called }(hjAhhhNhNubjJ)}(h **Queues**h]hQueues}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjAubhX; it is important to highlight that Queues must be associated with a Pipe and vice-versa. Every specific hardware IP may have a different number of Pipes and, in turn, a different number of Queues; for example, GFX 11 has two Pipes and two Queues per Pipe for the GFX front end.}(hjAhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK^hjhhubh)}(hXOPipe is the hardware that processes the instructions available in the Queues; in other words, it is a thread executing the operations inserted in the Queue. One crucial characteristic of Pipes is that they can only execute one Queue at a time; no matter if the hardware has multiple Queues in the Pipe, it only runs one Queue per Pipe.h]hXOPipe is the hardware that processes the instructions available in the Queues; in other words, it is a thread executing the operations inserted in the Queue. One crucial characteristic of Pipes is that they can only execute one Queue at a time; no matter if the hardware has multiple Queues in the Pipe, it only runs one Queue per Pipe.}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKdhjhhubh)}(hPipes have the mechanics of swapping between queues at the hardware level. Nonetheless, they only make use of Queues that are considered mapped. Pipes can switch between queues based on any of the following inputs:h]hPipes have the mechanics of swapping between queues at the hardware level. Nonetheless, they only make use of Queues that are considered mapped. Pipes can switch between queues based on any of the following inputs:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKjhjhhubhenumerated_list)}(hhh](h list_item)}(hCommand Stream;h]h)}(hjh]hCommand Stream;}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKnhjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hPacket by Packet;h]h)}(hjh]hPacket by Packet;}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKohjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(h0Other hardware requests the change (e.g., MES). h]h)}(h/Other hardware requests the change (e.g., MES).h]h/Other hardware requests the change (e.g., MES).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKphjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubeh}(h]h ]h"]h$]h&]enumtypearabicprefixhsuffix.uh1jhjhhhhhKnubh)}(hX>Queues within Pipes are defined by the Hardware Queue Descriptors (HQD). Associated with the HQD concept, we have the Memory Queue Descriptor (MQD), which is responsible for storing information about the state of each of the available Queues in the memory. The state of a Queue contains information such as the GPU virtual address of the queue itself, save areas, doorbell, etc. The MQD also stores the HQD registers, which are vital for activating or deactivating a given Queue. The scheduling firmware (e.g., MES) is responsible for loading HQDs from MQDs and vice versa.h]hX>Queues within Pipes are defined by the Hardware Queue Descriptors (HQD). Associated with the HQD concept, we have the Memory Queue Descriptor (MQD), which is responsible for storing information about the state of each of the available Queues in the memory. The state of a Queue contains information such as the GPU virtual address of the queue itself, save areas, doorbell, etc. The MQD also stores the HQD registers, which are vital for activating or deactivating a given Queue. The scheduling firmware (e.g., MES) is responsible for loading HQDs from MQDs and vice versa.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKrhjhhubh)}(hXThe Queue-switching process can also happen with the firmware requesting the preemption or unmapping of a Queue. The firmware waits for the HQD_ACTIVE bit to change to low before saving the state into the MQD. To make a different Queue become active, the firmware copies the MQD state into the HQD registers and loads any additional state. Finally, it sets the HQD_ACTIVE bit to high to indicate that the queue is active. The Pipe will then execute work from active Queues.h]hXThe Queue-switching process can also happen with the firmware requesting the preemption or unmapping of a Queue. The firmware waits for the HQD_ACTIVE bit to change to low before saving the state into the MQD. To make a different Queue become active, the firmware copies the MQD state into the HQD registers and loads any additional state. Finally, it sets the HQD_ACTIVE bit to high to indicate that the queue is active. The Pipe will then execute work from active Queues.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK{hjhhubeh}(h](%gfx-compute-and-sdma-overall-behaviorjeh ]h"]('gfx, compute, and sdma overall behaviorpipes-and-queues-descriptioneh$]h&]uh1hhhhhhhhKSexpect_referenced_by_name}j jsexpect_referenced_by_id}jjsubh)}(hhh](h)}(hDriver Structureh]hDriver Structure}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hIn general, the driver has a list of all of the IPs on a particular SoC and for things like init/fini/suspend/resume, more or less just walks the list and handles each IP.h]hIn general, the driver has a list of all of the IPs on a particular SoC and for things like init/fini/suspend/resume, more or less just walks the list and handles each IP.}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hSome useful constructs:h]hSome useful constructs:}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hhh](h)}(hKIQ (Kernel Interface Queue) This is a control queue used by the kernel driver to manage other gfx and compute queues on the GFX/compute engine. You can use it to map/unmap additional queues, etc. This is replaced by MES on GFX 11 and newer hardware. h](j)}(hKIQ (Kernel Interface Queue)h]hKIQ (Kernel Interface Queue)}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjBubj)}(hhh]h)}(hThis is a control queue used by the kernel driver to manage other gfx and compute queues on the GFX/compute engine. You can use it to map/unmap additional queues, etc. This is replaced by MES on GFX 11 and newer hardware.h]hThis is a control queue used by the kernel driver to manage other gfx and compute queues on the GFX/compute engine. You can use it to map/unmap additional queues, etc. This is replaced by MES on GFX 11 and newer hardware.}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjTubah}(h]h ]h"]h$]h&]uh1jhjBubeh}(h]h ]h"]h$]h&]uh1hhhhKhj?ubh)}(hXeIB (Indirect Buffer) A command buffer for a particular engine. Rather than writing commands directly to the queue, you can write the commands into a piece of memory and then put a pointer to the memory into the queue. The hardware will then follow the pointer and execute the commands in the memory, then returning to the rest of the commands in the ring. h](j)}(hIB (Indirect Buffer)h]hIB (Indirect Buffer)}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjqubj)}(hhh]h)}(hXOA command buffer for a particular engine. Rather than writing commands directly to the queue, you can write the commands into a piece of memory and then put a pointer to the memory into the queue. The hardware will then follow the pointer and execute the commands in the memory, then returning to the rest of the commands in the ring.h]hXOA command buffer for a particular engine. Rather than writing commands directly to the queue, you can write the commands into a piece of memory and then put a pointer to the memory into the queue. The hardware will then follow the pointer and execute the commands in the memory, then returning to the rest of the commands in the ring.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjqubeh}(h]h ]h"]h$]h&]uh1hhhhKhj?hhubeh}(h]h ]h"]h$]h&]uh1hhjhhhhhNubj)}(h.. _amdgpu_memory_domains:h]h}(h]h ]h"]h$]h&]jamdgpu-memory-domainsuh1jhKhjhhhhubeh}(h]driver-structureah ]h"]driver structureah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hMemory Domainsh]hMemory Domains}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(h``AMDGPU_GEM_DOMAIN_CPU`` System memory that is not GPU accessible. Memory in this pool could be swapped out to disk if there is pressure.h](hliteral)}(h``AMDGPU_GEM_DOMAIN_CPU``h]hAMDGPU_GEM_DOMAIN_CPU}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhw System memory that is not GPU accessible. Memory in this pool could be swapped out to disk if there is pressure.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:158: ./include/uapi/drm/amdgpu_drm.hhKThjhhubh)}(h``AMDGPU_GEM_DOMAIN_GTT`` GPU accessible system memory, mapped into the GPU's virtual address space via gart. Gart memory linearizes non-contiguous pages of system memory, allows GPU access system memory in a linearized fashion.h](j)}(h``AMDGPU_GEM_DOMAIN_GTT``h]hAMDGPU_GEM_DOMAIN_GTT}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh GPU accessible system memory, mapped into the GPU’s virtual address space via gart. Gart memory linearizes non-contiguous pages of system memory, allows GPU access system memory in a linearized fashion.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:158: ./include/uapi/drm/amdgpu_drm.hhKWhjhhubh)}(hb``AMDGPU_GEM_DOMAIN_VRAM`` Local video memory. For APUs, it is memory carved out by the BIOS.h](j)}(h``AMDGPU_GEM_DOMAIN_VRAM``h]hAMDGPU_GEM_DOMAIN_VRAM}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhH Local video memory. For APUs, it is memory carved out by the BIOS.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:158: ./include/uapi/drm/amdgpu_drm.hhK\hjhhubh)}(he``AMDGPU_GEM_DOMAIN_GDS`` Global on-chip data storage used to share data across shader threads.h](j)}(h``AMDGPU_GEM_DOMAIN_GDS``h]hAMDGPU_GEM_DOMAIN_GDS}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj#ubhL Global on-chip data storage used to share data across shader threads.}(hj#hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:158: ./include/uapi/drm/amdgpu_drm.hhK_hjhhubh)}(hq``AMDGPU_GEM_DOMAIN_GWS`` Global wave sync, used to synchronize the execution of all the waves on a device.h](j)}(h``AMDGPU_GEM_DOMAIN_GWS``h]hAMDGPU_GEM_DOMAIN_GWS}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@ubhX Global wave sync, used to synchronize the execution of all the waves on a device.}(hj@hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:158: ./include/uapi/drm/amdgpu_drm.hhKbhjhhubh)}(ha``AMDGPU_GEM_DOMAIN_OA`` Ordered append, used by 3D or Compute engines for appending data.h](j)}(h``AMDGPU_GEM_DOMAIN_OA``h]hAMDGPU_GEM_DOMAIN_OA}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubhI Ordered append, used by 3D or Compute engines for appending data.}(hj]hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:158: ./include/uapi/drm/amdgpu_drm.hhKehjhhubh)}(h_``AMDGPU_GEM_DOMAIN_DOORBELL`` Doorbell. It is an MMIO region for signalling user mode queues.h](j)}(h``AMDGPU_GEM_DOMAIN_DOORBELL``h]hAMDGPU_GEM_DOMAIN_DOORBELL}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjzubhA Doorbell. It is an MMIO region for signalling user mode queues.}(hjzhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:158: ./include/uapi/drm/amdgpu_drm.hhKhhjhhubh)}(h[``AMDGPU_GEM_DOMAIN_MMIO_REMAP`` MMIO remap page (special mapping for HDP flushing).h](j)}(h ``AMDGPU_GEM_DOMAIN_MMIO_REMAP``h]hAMDGPU_GEM_DOMAIN_MMIO_REMAP}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh; MMIO remap page (special mapping for HDP flushing).}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:158: ./include/uapi/drm/amdgpu_drm.hhKkhjhhubeh}(h](memory-domainsjeh ]h"](memory domainsamdgpu_memory_domainseh$]h&]uh1hhhhhhhhKj}jjsj}jjsubh)}(hhh](h)}(hBuffer Objectsh]hBuffer Objects}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hXThis defines the interfaces to operate on an :c:type:`amdgpu_bo` buffer object which represents memory used by driver (VRAM, system memory, etc.). The driver provides DRM/GEM APIs to userspace. DRM/GEM APIs then use these interfaces to create/destroy/set buffer object which are then managed by the kernel TTM memory manager. The interfaces are also used internally by kernel clients, including gfx, uvd, etc. for kernel managed allocations used by the GPU.h](h-This defines the interfaces to operate on an }(hjhhhNhNubh)}(h:c:type:`amdgpu_bo`h]j)}(hjh]h amdgpu_bo}(hjhhhNhNubah}(h]h ](jcc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj amdgpu_bouh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:164: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chK0hjubhX buffer object which represents memory used by driver (VRAM, system memory, etc.). The driver provides DRM/GEM APIs to userspace. DRM/GEM APIs then use these interfaces to create/destroy/set buffer object which are then managed by the kernel TTM memory manager. The interfaces are also used internally by kernel clients, including gfx, uvd, etc. for kernel managed allocations used by the GPU.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhK0hjhhubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](single#amdgpu_bo_is_amdgpu_bo (C function)c.amdgpu_bo_is_amdgpu_bohNtauh1jhjhhhNhNubhdesc)}(hhh](hdesc_signature)}(h:bool amdgpu_bo_is_amdgpu_bo (struct ttm_buffer_object *bo)h]hdesc_signature_line)}(h9bool amdgpu_bo_is_amdgpu_bo(struct ttm_buffer_object *bo)h](hdesc_sig_keyword_type)}(hboolh]hbool}(hj'hhhNhNubah}(h]h ]ktah"]h$]h&]uh1j%hj!hhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKTubhdesc_sig_space)}(h h]h }(hj9hhhNhNubah}(h]h ]wah"]h$]h&]uh1j7hj!hhhj6hKTubh desc_name)}(hamdgpu_bo_is_amdgpu_boh]h desc_sig_name)}(hamdgpu_bo_is_amdgpu_boh]hamdgpu_bo_is_amdgpu_bo}(hjPhhhNhNubah}(h]h ]nah"]h$]h&]uh1jNhjJubah}(h]h ](sig-namedescnameeh"]h$]h&] xml:spacepreserveuh1jHhj!hhhj6hKTubhdesc_parameterlist)}(h(struct ttm_buffer_object *bo)h]hdesc_parameter)}(hstruct ttm_buffer_object *boh](hdesc_sig_keyword)}(hstructh]hstruct}(hjwhhhNhNubah}(h]h ]kah"]h$]h&]uh1juhjqubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjqubh)}(hhh]jO)}(httm_buffer_objecth]httm_buffer_object}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftype identifier reftargetjmodnameN classnameN c:parent_keysphinx.domains.c LookupKey)}data]j ASTIdentifier)}jjRsbc.amdgpu_bo_is_amdgpu_boasbuh1hhjqubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjqubhdesc_sig_punctuation)}(hj4h]h*}(hjhhhNhNubah}(h]h ]pah"]h$]h&]uh1jhjqubjO)}(hboh]hbo}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjqubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjkubah}(h]h ]h"]h$]h&]jgjhuh1jihj!hhhj6hKTubeh}(h]h ]h"]h$]h&]jgjh add_permalinkuh1jsphinx_line_type declaratorhjhhhj6hKTubah}(h]jah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1jhj6hKThjhhubh desc_content)}(hhh]h)}(h4check if the buffer object is an :c:type:`amdgpu_bo`h](h!check if the buffer object is an }(hjhhhNhNubh)}(h:c:type:`amdgpu_bo`h]j)}(hjh]h amdgpu_bo}(hjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjj)}j]jc.amdgpu_bo_is_amdgpu_boasbj amdgpu_bouh1hhj6hKThjubeh}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKThjhhubah}(h]h ]h"]h$]h&]uh1j hjhhhj6hKTubeh}(h]h ](jfunctioneh"]h$]h&]domainjobjtypejMdesctypejMnoindex noindexentrynocontentsentryuh1jhhhjhNhNubh container)}(hX**Parameters** ``struct ttm_buffer_object *bo`` buffer object to be checked **Description** Uses destroy function associated with the object to determine if this is an :c:type:`amdgpu_bo`. **Return** true if the object belongs to :c:type:`amdgpu_bo`, false if not.h](h)}(h**Parameters**h]jJ)}(hj_h]h Parameters}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj]ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKXhjYubh)}(hhh]h)}(h=``struct ttm_buffer_object *bo`` buffer object to be checked h](j)}(h ``struct ttm_buffer_object *bo``h]j)}(hj~h]hstruct ttm_buffer_object *bo}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKUhjxubj)}(hhh]h)}(hbuffer object to be checkedh]hbuffer object to be checked}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKUhjubah}(h]h ]h"]h$]h&]uh1jhjxubeh}(h]h ]h"]h$]h&]uh1hhjhKUhjuubah}(h]h ]h"]h$]h&]uh1hhjYubh)}(h**Description**h]jJ)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKWhjYubh)}(h`Uses destroy function associated with the object to determine if this is an :c:type:`amdgpu_bo`.h](hLUses destroy function associated with the object to determine if this is an }(hjhhhNhNubh)}(h:c:type:`amdgpu_bo`h]j)}(hjh]h amdgpu_bo}(hjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjj)}j]sbj amdgpu_bouh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKVhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKVhjYubh)}(h **Return**h]jJ)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKYhjYubh)}(h@true if the object belongs to :c:type:`amdgpu_bo`, false if not.h](htrue if the object belongs to }(hjhhhNhNubh)}(h:c:type:`amdgpu_bo`h]j)}(hj&h]h amdgpu_bo}(hj(hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj amdgpu_bouh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKZhjubh, false if not.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjChKZhjYubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j,amdgpu_bo_placement_from_domain (C function)!c.amdgpu_bo_placement_from_domainhNtauh1jhjhhhNhNubj)}(hhh](j)}(hHvoid amdgpu_bo_placement_from_domain (struct amdgpu_bo *abo, u32 domain)h]j )}(hGvoid amdgpu_bo_placement_from_domain(struct amdgpu_bo *abo, u32 domain)h](j&)}(hvoidh]hvoid}(hjnhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjjhhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKgubj8)}(h h]h }(hj}hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjjhhhj|hKgubjI)}(hamdgpu_bo_placement_from_domainh]jO)}(hamdgpu_bo_placement_from_domainh]hamdgpu_bo_placement_from_domain}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjjhhhj|hKgubjj)}(h#(struct amdgpu_bo *abo, u32 domain)h](jp)}(hstruct amdgpu_bo *aboh](jv)}(hjyh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubh)}(hhh]jO)}(h amdgpu_boh]h amdgpu_bo}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsb!c.amdgpu_bo_placement_from_domainasbuh1hhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(haboh]habo}(hj hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(h u32 domainh](h)}(hhh]jO)}(hu32h]hu32}(hj hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj" modnameN classnameNjj)}j]j!c.amdgpu_bo_placement_from_domainasbuh1hhj ubj8)}(h h]h }(hj> hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj ubjO)}(hdomainh]hdomain}(hjL hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubeh}(h]h ]h"]h$]h&]jgjhuh1jihjjhhhj|hKgubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjfhhhj|hKgubah}(h]jaah ](jjeh"]h$]h&]j j )j huh1jhj|hKghjchhubj )}(hhh]h)}(hset buffer's placementh]hset buffer’s placement}(hjv hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKghjs hhubah}(h]h ]h"]h$]h&]uh1j hjchhhj|hKgubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRj jSj jTjUjVuh1jhhhjhNhNubjX)}(h**Parameters** ``struct amdgpu_bo *abo`` :c:type:`amdgpu_bo` buffer object whose placement is to be set ``u32 domain`` requested domain **Description** Sets buffer's placement according to requested domain and the buffer's flags.h](h)}(h**Parameters**h]jJ)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKkhj ubh)}(hhh](h)}(hY``struct amdgpu_bo *abo`` :c:type:`amdgpu_bo` buffer object whose placement is to be set h](j)}(h``struct amdgpu_bo *abo``h]j)}(hj h]hstruct amdgpu_bo *abo}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKhhj ubj)}(hhh]h)}(h>:c:type:`amdgpu_bo` buffer object whose placement is to be seth](h)}(h:c:type:`amdgpu_bo`h]j)}(hj h]h amdgpu_bo}(hj hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj amdgpu_bouh1hhj hKhhj ubh+ buffer object whose placement is to be set}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hKhhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1hhj hKhhj ubh)}(h ``u32 domain`` requested domain h](j)}(h``u32 domain``h]j)}(hj h]h u32 domain}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKihj ubj)}(hhh]h)}(hrequested domainh]hrequested domain}(hj( hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$ hKihj% ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1hhj$ hKihj ubeh}(h]h ]h"]h$]h&]uh1hhj ubh)}(h**Description**h]jJ)}(hjJ h]h Description}(hjL hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjH ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKkhj ubh)}(hMSets buffer's placement according to requested domain and the buffer's flags.h]hQSets buffer’s placement according to requested domain and the buffer’s flags.}(hj` hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKjhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j&amdgpu_bo_create_reserved (C function)c.amdgpu_bo_create_reservedhNtauh1jhjhhhNhNubj)}(hhh](j)}(hint amdgpu_bo_create_reserved (struct amdgpu_device *adev, unsigned long size, int align, u32 domain, struct amdgpu_bo **bo_ptr, u64 *gpu_addr, void **cpu_addr)h]j )}(hint amdgpu_bo_create_reserved(struct amdgpu_device *adev, unsigned long size, int align, u32 domain, struct amdgpu_bo **bo_ptr, u64 *gpu_addr, void **cpu_addr)h](j&)}(hinth]hint}(hj hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hj hhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKubj8)}(h h]h }(hj hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj hhhj hKubjI)}(hamdgpu_bo_create_reservedh]jO)}(hamdgpu_bo_create_reservedh]hamdgpu_bo_create_reserved}(hj hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj ubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhj hhhj hKubjj)}(h(struct amdgpu_device *adev, unsigned long size, int align, u32 domain, struct amdgpu_bo **bo_ptr, u64 *gpu_addr, void **cpu_addr)h](jp)}(hstruct amdgpu_device *adevh](jv)}(hjyh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj ubj8)}(h h]h }(hj hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj ubh)}(hhh]jO)}(h amdgpu_deviceh]h amdgpu_device}(hj hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jj sbc.amdgpu_bo_create_reservedasbuh1hhj ubj8)}(h h]h }(hj hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj ubj)}(hj4h]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubjO)}(hadevh]hadev}(hj% hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj ubjp)}(hunsigned long sizeh](j&)}(hunsignedh]hunsigned}(hj> hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hj: ubj8)}(h h]h }(hjL hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj: ubj&)}(hlongh]hlong}(hjZ hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hj: ubj8)}(h h]h }(hjh hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj: ubjO)}(hsizeh]hsize}(hjv hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj: ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj ubjp)}(h int alignh](j&)}(hinth]hint}(hj hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hj ubj8)}(h h]h }(hj hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj ubjO)}(halignh]halign}(hj hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj ubjp)}(h u32 domainh](h)}(hhh]jO)}(hu32h]hu32}(hj hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j c.amdgpu_bo_create_reservedasbuh1hhj ubj8)}(h h]h }(hj hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj ubjO)}(hdomainh]hdomain}(hj hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj ubjp)}(hstruct amdgpu_bo **bo_ptrh](jv)}(hjyh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj ubj8)}(h h]h }(hj hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj ubh)}(hhh]jO)}(h amdgpu_boh]h amdgpu_bo}(hj* hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj' ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj, modnameN classnameNjj)}j]j c.amdgpu_bo_create_reservedasbuh1hhj ubj8)}(h h]h }(hjH hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj ubj)}(hj4h]h*}(hjV hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hj4h]h*}(hjc hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubjO)}(hbo_ptrh]hbo_ptr}(hjp hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj ubjp)}(h u64 *gpu_addrh](h)}(hhh]jO)}(hu64h]hu64}(hj hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j c.amdgpu_bo_create_reservedasbuh1hhj ubj8)}(h h]h }(hj hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj ubj)}(hj4h]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubjO)}(hgpu_addrh]hgpu_addr}(hj hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj ubjp)}(hvoid **cpu_addrh](j&)}(hvoidh]hvoid}(hj hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hj ubj8)}(h h]h }(hj hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj ubj)}(hj4h]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hj4h]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubjO)}(hcpu_addrh]hcpu_addr}(hj hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj ubeh}(h]h ]h"]h$]h&]jgjhuh1jihj hhhj hKubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhj hhhj hKubah}(h]j ah ](jjeh"]h$]h&]j j )j huh1jhj hKhj hhubj )}(hhh]h)}(h!create reserved BO for kernel useh]h!create reserved BO for kernel use}(hj> hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKhj; hhubah}(h]h ]h"]h$]h&]uh1j hj hhhj hKubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjV jSjV jTjUjVuh1jhhhjhNhNubjX)}(hXM**Parameters** ``struct amdgpu_device *adev`` amdgpu device object ``unsigned long size`` size for the new BO ``int align`` alignment for the new BO ``u32 domain`` where to place it ``struct amdgpu_bo **bo_ptr`` used to initialize BOs in structures ``u64 *gpu_addr`` GPU addr of the pinned BO ``void **cpu_addr`` optional CPU address mapping **Description** Allocates and pins a BO for kernel internal use, and returns it still reserved. **Note** For bo_ptr new BO is only created if bo_ptr points to NULL. **Return** 0 on success, negative error code otherwise.h](h)}(h**Parameters**h]jJ)}(hj` h]h Parameters}(hjb hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj^ ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKhjZ ubh)}(hhh](h)}(h4``struct amdgpu_device *adev`` amdgpu device object h](j)}(h``struct amdgpu_device *adev``h]j)}(hj h]hstruct amdgpu_device *adev}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj} ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKhjy ubj)}(hhh]h)}(hamdgpu device objecth]hamdgpu device object}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1jhjy ubeh}(h]h ]h"]h$]h&]uh1hhj hKhjv ubh)}(h+``unsigned long size`` size for the new BO h](j)}(h``unsigned long size``h]j)}(hj h]hunsigned long size}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKhj ubj)}(hhh]h)}(hsize for the new BOh]hsize for the new BO}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1hhj hKhjv ubh)}(h'``int align`` alignment for the new BO h](j)}(h ``int align``h]j)}(hj h]h int align}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKhj ubj)}(hhh]h)}(halignment for the new BOh]halignment for the new BO}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1hhjhKhjv ubh)}(h!``u32 domain`` where to place it h](j)}(h``u32 domain``h]j)}(hj*h]h u32 domain}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKhj$ubj)}(hhh]h)}(hwhere to place ith]hwhere to place it}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhj?hKhj@ubah}(h]h ]h"]h$]h&]uh1jhj$ubeh}(h]h ]h"]h$]h&]uh1hhj?hKhjv ubh)}(hC``struct amdgpu_bo **bo_ptr`` used to initialize BOs in structures h](j)}(h``struct amdgpu_bo **bo_ptr``h]j)}(hjch]hstruct amdgpu_bo **bo_ptr}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jhjaubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKhj]ubj)}(hhh]h)}(h$used to initialize BOs in structuresh]h$used to initialize BOs in structures}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjxhKhjyubah}(h]h ]h"]h$]h&]uh1jhj]ubeh}(h]h ]h"]h$]h&]uh1hhjxhKhjv ubh)}(h,``u64 *gpu_addr`` GPU addr of the pinned BO h](j)}(h``u64 *gpu_addr``h]j)}(hjh]h u64 *gpu_addr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKhjubj)}(hhh]h)}(hGPU addr of the pinned BOh]hGPU addr of the pinned BO}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhKhjv ubh)}(h1``void **cpu_addr`` optional CPU address mapping h](j)}(h``void **cpu_addr``h]j)}(hjh]hvoid **cpu_addr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKhjubj)}(hhh]h)}(hoptional CPU address mappingh]hoptional CPU address mapping}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhKhjv ubeh}(h]h ]h"]h$]h&]uh1hhjZ ubh)}(h**Description**h]jJ)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKhjZ ubh)}(hOAllocates and pins a BO for kernel internal use, and returns it still reserved.h]hOAllocates and pins a BO for kernel internal use, and returns it still reserved.}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKhjZ ubh)}(h**Note**h]jJ)}(hj7h]hNote}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj5ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKhjZ ubh)}(h;For bo_ptr new BO is only created if bo_ptr points to NULL.h]h;For bo_ptr new BO is only created if bo_ptr points to NULL.}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKhjZ ubh)}(h **Return**h]jJ)}(hj^h]hReturn}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj\ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKhjZ ubh)}(h,0 on success, negative error code otherwise.h]h,0 on success, negative error code otherwise.}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKhjZ ubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j$amdgpu_bo_create_kernel (C function)c.amdgpu_bo_create_kernelhNtauh1jhjhhhNhNubj)}(hhh](j)}(hint amdgpu_bo_create_kernel (struct amdgpu_device *adev, unsigned long size, int align, u32 domain, struct amdgpu_bo **bo_ptr, u64 *gpu_addr, void **cpu_addr)h]j )}(hint amdgpu_bo_create_kernel(struct amdgpu_device *adev, unsigned long size, int align, u32 domain, struct amdgpu_bo **bo_ptr, u64 *gpu_addr, void **cpu_addr)h](j&)}(hinth]hint}(hjhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjhhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMEubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjhhhjhMEubjI)}(hamdgpu_bo_create_kernelh]jO)}(hamdgpu_bo_create_kernelh]hamdgpu_bo_create_kernel}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjhhhjhMEubjj)}(h(struct amdgpu_device *adev, unsigned long size, int align, u32 domain, struct amdgpu_bo **bo_ptr, u64 *gpu_addr, void **cpu_addr)h](jp)}(hstruct amdgpu_device *adevh](jv)}(hjyh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubh)}(hhh]jO)}(h amdgpu_deviceh]h amdgpu_device}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.amdgpu_bo_create_kernelasbuh1hhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(hadevh]hadev}(hj9hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(hunsigned long sizeh](j&)}(hunsignedh]hunsigned}(hjRhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjNubj8)}(h h]h }(hj`hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjNubj&)}(hlongh]hlong}(hjnhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjNubj8)}(h h]h }(hj|hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjNubjO)}(hsizeh]hsize}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjNubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(h int alignh](j&)}(hinth]hint}(hjhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubjO)}(halignh]halign}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(h u32 domainh](h)}(hhh]jO)}(hu32h]hu32}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.amdgpu_bo_create_kernelasbuh1hhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubjO)}(hdomainh]hdomain}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(hstruct amdgpu_bo **bo_ptrh](jv)}(hjyh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjubj8)}(h h]h }(hj-hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubh)}(hhh]jO)}(h amdgpu_boh]h amdgpu_bo}(hj>hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj;ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj@modnameN classnameNjj)}j]jc.amdgpu_bo_create_kernelasbuh1hhjubj8)}(h h]h }(hj\hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hj4h]h*}(hjwhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(hbo_ptrh]hbo_ptr}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(h u64 *gpu_addrh](h)}(hhh]jO)}(hu64h]hu64}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.amdgpu_bo_create_kernelasbuh1hhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hjhhhNhNubah}(h]8h ]jah"]h$]h&]uh1jhjubjO)}(hgpu_addrh]hgpu_addr}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(hvoid **cpu_addrh](j&)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(hcpu_addrh]hcpu_addr}(hj(hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubeh}(h]h ]h"]h$]h&]jgjhuh1jihjhhhjhMEubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjhhhjhMEubah}(h]jah ](jjeh"]h$]h&]j j )j huh1jhjhMEhjhhubj )}(hhh]h)}(hcreate BO for kernel useh]hcreate BO for kernel use}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMEhjOhhubah}(h]h ]h"]h$]h&]uh1j hjhhhjhMEubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjjjSjjjTjUjVuh1jhhhjhNhNubjX)}(hX**Parameters** ``struct amdgpu_device *adev`` amdgpu device object ``unsigned long size`` size for the new BO ``int align`` alignment for the new BO ``u32 domain`` where to place it ``struct amdgpu_bo **bo_ptr`` used to initialize BOs in structures ``u64 *gpu_addr`` GPU addr of the pinned BO ``void **cpu_addr`` optional CPU address mapping **Description** Allocates and pins a BO for kernel internal use. This function is exported to allow the V4L2 isp device external to drm device to create and access the kernel BO. **Note** For bo_ptr new BO is only created if bo_ptr points to NULL. **Return** 0 on success, negative error code otherwise.h](h)}(h**Parameters**h]jJ)}(hjth]h Parameters}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjrubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMIhjnubh)}(hhh](h)}(h4``struct amdgpu_device *adev`` amdgpu device object h](j)}(h``struct amdgpu_device *adev``h]j)}(hjh]hstruct amdgpu_device *adev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMGhjubj)}(hhh]h)}(hamdgpu device objecth]hamdgpu device object}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMGhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMGhjubh)}(h+``unsigned long size`` size for the new BO h](j)}(h``unsigned long size``h]j)}(hjh]hunsigned long size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMHhjubj)}(hhh]h)}(hsize for the new BOh]hsize for the new BO}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMHhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMHhjubh)}(h'``int align`` alignment for the new BO h](j)}(h ``int align``h]j)}(hjh]h int align}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMIhjubj)}(hhh]h)}(halignment for the new BOh]halignment for the new BO}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMIhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMIhjubh)}(h!``u32 domain`` where to place it h](j)}(h``u32 domain``h]j)}(hj>h]h u32 domain}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMJhj8ubj)}(hhh]h)}(hwhere to place ith]hwhere to place it}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjShMJhjTubah}(h]h ]h"]h$]h&]uh1jhj8ubeh}(h]h ]h"]h$]h&]uh1hhjShMJhjubh)}(hC``struct amdgpu_bo **bo_ptr`` used to initialize BOs in structures h](j)}(h``struct amdgpu_bo **bo_ptr``h]j)}(hjwh]hstruct amdgpu_bo **bo_ptr}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjuubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMKhjqubj)}(hhh]h)}(h$used to initialize BOs in structuresh]h$used to initialize BOs in structures}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMKhjubah}(h]h ]h"]h$]h&]uh1jhjqubeh}(h]h ]h"]h$]h&]uh1hhjhMKhjubh)}(h,``u64 *gpu_addr`` GPU addr of the pinned BO h](j)}(h``u64 *gpu_addr``h]j)}(hjh]h u64 *gpu_addr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMLhjubj)}(hhh]h)}(hGPU addr of the pinned BOh]hGPU addr of the pinned BO}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMLhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMLhjubh)}(h1``void **cpu_addr`` optional CPU address mapping h](j)}(h``void **cpu_addr``h]j)}(hjh]hvoid **cpu_addr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMMhjubj)}(hhh]h)}(hoptional CPU address mappingh]hoptional CPU address mapping}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMMhjubeh}(h]h ]h"]h$]h&]uh1hhjnubh)}(h**Description**h]jJ)}(hj$h]h Description}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj"ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMOhjnubh)}(h0Allocates and pins a BO for kernel internal use.h]h0Allocates and pins a BO for kernel internal use.}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMNhjnubh)}(hqThis function is exported to allow the V4L2 isp device external to drm device to create and access the kernel BO.h]hqThis function is exported to allow the V4L2 isp device external to drm device to create and access the kernel BO.}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMPhjnubh)}(h**Note**h]jJ)}(hjZh]hNote}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjXubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMShjnubh)}(h;For bo_ptr new BO is only created if bo_ptr points to NULL.h]h;For bo_ptr new BO is only created if bo_ptr points to NULL.}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMThjnubh)}(h **Return**h]jJ)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMVhjnubh)}(h,0 on success, negative error code otherwise.h]h,0 on success, negative error code otherwise.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMVhjnubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j&amdgpu_bo_create_isp_user (C function)c.amdgpu_bo_create_isp_userhNtauh1jhjhhhNhNubj)}(hhh](j)}(hint amdgpu_bo_create_isp_user (struct amdgpu_device *adev, struct dma_buf *dma_buf, u32 domain, struct amdgpu_bo **bo, u64 *gpu_addr)h]j )}(hint amdgpu_bo_create_isp_user(struct amdgpu_device *adev, struct dma_buf *dma_buf, u32 domain, struct amdgpu_bo **bo, u64 *gpu_addr)h](j&)}(hinth]hint}(hjhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjhhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMmubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjhhhjhMmubjI)}(hamdgpu_bo_create_isp_userh]jO)}(hamdgpu_bo_create_isp_userh]hamdgpu_bo_create_isp_user}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjhhhjhMmubjj)}(hg(struct amdgpu_device *adev, struct dma_buf *dma_buf, u32 domain, struct amdgpu_bo **bo, u64 *gpu_addr)h](jp)}(hstruct amdgpu_device *adevh](jv)}(hjyh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubh)}(hhh]jO)}(h amdgpu_deviceh]h amdgpu_device}(hj!hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj#modnameN classnameNjj)}j]j)}jjsbc.amdgpu_bo_create_isp_userasbuh1hhjubj8)}(h h]h }(hjAhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(hadevh]hadev}(hj\hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(hstruct dma_buf *dma_bufh](jv)}(hjyh]hstruct}(hjuhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjqubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjqubh)}(hhh]jO)}(hdma_bufh]hdma_buf}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j=c.amdgpu_bo_create_isp_userasbuh1hhjqubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjqubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjqubjO)}(hdma_bufh]hdma_buf}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjqubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(h u32 domainh](h)}(hhh]jO)}(hu32h]hu32}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j=c.amdgpu_bo_create_isp_userasbuh1hhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubjO)}(hdomainh]hdomain}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(hstruct amdgpu_bo **boh](jv)}(hjyh]hstruct}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj)ubj8)}(h h]h }(hj:hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj)ubh)}(hhh]jO)}(h amdgpu_boh]h amdgpu_bo}(hjKhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjHubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjMmodnameN classnameNjj)}j]j=c.amdgpu_bo_create_isp_userasbuh1hhj)ubj8)}(h h]h }(hjihhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj)ubj)}(hj4h]h*}(hjwhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubjO)}(hboh]hbo}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj)ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(h u64 *gpu_addrh](h)}(hhh]jO)}(hu64h]hu64}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j=c.amdgpu_bo_create_isp_userasbuh1hhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(hgpu_addrh]hgpu_addr}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubeh}(h]h ]h"]h$]h&]jgjhuh1jihjhhhjhMmubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjhhhjhMmubah}(h]jah ](jjeh"]h$]h&]j j )j huh1jhjhMmhjhhubj )}(hhh]h)}(hcreate user BO for isph]hcreate user BO for isp}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMmhj hhubah}(h]h ]h"]h$]h&]uh1j hjhhhjhMmubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRj(jSj(jTjUjVuh1jhhhjhNhNubjX)}(hX**Parameters** ``struct amdgpu_device *adev`` amdgpu device object ``struct dma_buf *dma_buf`` DMABUF handle for isp buffer ``u32 domain`` where to place it ``struct amdgpu_bo **bo`` used to initialize BOs in structures ``u64 *gpu_addr`` GPU addr of the pinned BO **Description** Imports isp DMABUF to allocate and pin a user BO for isp internal use. It does GART alloc to generate gpu_addr for BO to make it accessible through the GART aperture for ISP HW. This function is exported to allow the V4L2 isp device external to drm device to create and access the isp user BO. **Return** 0 on success, negative error code otherwise.h](h)}(h**Parameters**h]jJ)}(hj2h]h Parameters}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj0ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMqhj,ubh)}(hhh](h)}(h4``struct amdgpu_device *adev`` amdgpu device object h](j)}(h``struct amdgpu_device *adev``h]j)}(hjQh]hstruct amdgpu_device *adev}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMohjKubj)}(hhh]h)}(hamdgpu device objecth]hamdgpu device object}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfhMohjgubah}(h]h ]h"]h$]h&]uh1jhjKubeh}(h]h ]h"]h$]h&]uh1hhjfhMohjHubh)}(h9``struct dma_buf *dma_buf`` DMABUF handle for isp buffer h](j)}(h``struct dma_buf *dma_buf``h]j)}(hjh]hstruct dma_buf *dma_buf}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMphjubj)}(hhh]h)}(hDMABUF handle for isp bufferh]hDMABUF handle for isp buffer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMphjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMphjHubh)}(h!``u32 domain`` where to place it h](j)}(h``u32 domain``h]j)}(hjh]h u32 domain}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMqhjubj)}(hhh]h)}(hwhere to place ith]hwhere to place it}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMqhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMqhjHubh)}(h?``struct amdgpu_bo **bo`` used to initialize BOs in structures h](j)}(h``struct amdgpu_bo **bo``h]j)}(hjh]hstruct amdgpu_bo **bo}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMrhjubj)}(hhh]h)}(h$used to initialize BOs in structuresh]h$used to initialize BOs in structures}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMrhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMrhjHubh)}(h,``u64 *gpu_addr`` GPU addr of the pinned BO h](j)}(h``u64 *gpu_addr``h]j)}(hj5h]h u64 *gpu_addr}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMshj/ubj)}(hhh]h)}(hGPU addr of the pinned BOh]hGPU addr of the pinned BO}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJhMshjKubah}(h]h ]h"]h$]h&]uh1jhj/ubeh}(h]h ]h"]h$]h&]uh1hhjJhMshjHubeh}(h]h ]h"]h$]h&]uh1hhj,ubh)}(h**Description**h]jJ)}(hjph]h Description}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjnubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMuhj,ubh)}(hImports isp DMABUF to allocate and pin a user BO for isp internal use. It does GART alloc to generate gpu_addr for BO to make it accessible through the GART aperture for ISP HW.h]hImports isp DMABUF to allocate and pin a user BO for isp internal use. It does GART alloc to generate gpu_addr for BO to make it accessible through the GART aperture for ISP HW.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMthj,ubh)}(hsThis function is exported to allow the V4L2 isp device external to drm device to create and access the isp user BO.h]hsThis function is exported to allow the V4L2 isp device external to drm device to create and access the isp user BO.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMxhj,ubh)}(h **Return**h]jJ)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM{hj,ubh)}(h,0 on success, negative error code otherwise.h]h,0 on success, negative error code otherwise.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM|hj,ubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'amdgpu_bo_create_kernel_at (C function)c.amdgpu_bo_create_kernel_athNtauh1jhjhhhNhNubj)}(hhh](j)}(hint amdgpu_bo_create_kernel_at (struct amdgpu_device *adev, uint64_t offset, uint64_t size, struct amdgpu_bo **bo_ptr, void **cpu_addr)h]j )}(hint amdgpu_bo_create_kernel_at(struct amdgpu_device *adev, uint64_t offset, uint64_t size, struct amdgpu_bo **bo_ptr, void **cpu_addr)h](j&)}(hinth]hint}(hjhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjhhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjhhhjhMubjI)}(hamdgpu_bo_create_kernel_ath]jO)}(hamdgpu_bo_create_kernel_ath]hamdgpu_bo_create_kernel_at}(hj hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjhhhjhMubjj)}(hh(struct amdgpu_device *adev, uint64_t offset, uint64_t size, struct amdgpu_bo **bo_ptr, void **cpu_addr)h](jp)}(hstruct amdgpu_device *adevh](jv)}(hjyh]hstruct}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj$ubj8)}(h h]h }(hj5hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj$ubh)}(hhh]jO)}(h amdgpu_deviceh]h amdgpu_device}(hjFhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjCubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjHmodnameN classnameNjj)}j]j)}jjsbc.amdgpu_bo_create_kernel_atasbuh1hhj$ubj8)}(h h]h }(hjfhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj$ubj)}(hj4h]h*}(hjthhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubjO)}(hadevh]hadev}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj$ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj ubjp)}(huint64_t offseth](h)}(hhh]jO)}(huint64_th]huint64_t}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jbc.amdgpu_bo_create_kernel_atasbuh1hhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubjO)}(hoffseth]hoffset}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj ubjp)}(h uint64_t sizeh](h)}(hhh]jO)}(huint64_th]huint64_t}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jbc.amdgpu_bo_create_kernel_atasbuh1hhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubjO)}(hsizeh]hsize}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj ubjp)}(hstruct amdgpu_bo **bo_ptrh](jv)}(hjyh]hstruct}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj&ubj8)}(h h]h }(hj7hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj&ubh)}(hhh]jO)}(h amdgpu_boh]h amdgpu_bo}(hjHhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjEubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjJmodnameN classnameNjj)}j]jbc.amdgpu_bo_create_kernel_atasbuh1hhj&ubj8)}(h h]h }(hjfhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj&ubj)}(hj4h]h*}(hjthhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&ubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&ubjO)}(hbo_ptrh]hbo_ptr}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj&ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj ubjp)}(hvoid **cpu_addrh](j&)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(hcpu_addrh]hcpu_addr}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj ubeh}(h]h ]h"]h$]h&]jgjhuh1jihjhhhjhMubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjhhhjhMubah}(h]jah ](jjeh"]h$]h&]j j )j huh1jhjhMhjhhubj )}(hhh]h)}(h-create BO for kernel use at specific locationh]h-create BO for kernel use at specific location}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjhhubah}(h]h ]h"]h$]h&]uh1j hjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjjSjjTjUjVuh1jhhhjhNhNubjX)}(hX**Parameters** ``struct amdgpu_device *adev`` amdgpu device object ``uint64_t offset`` offset of the BO ``uint64_t size`` size of the BO ``struct amdgpu_bo **bo_ptr`` used to initialize BOs in structures ``void **cpu_addr`` optional CPU address mapping **Description** Creates a kernel BO at a specific offset in VRAM. **Return** 0 on success, negative error code otherwise.h](h)}(h**Parameters**h]jJ)}(hj)h]h Parameters}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj'ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj#ubh)}(hhh](h)}(h4``struct amdgpu_device *adev`` amdgpu device object h](j)}(h``struct amdgpu_device *adev``h]j)}(hjHh]hstruct amdgpu_device *adev}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjBubj)}(hhh]h)}(hamdgpu device objecth]hamdgpu device object}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhj]hMhj^ubah}(h]h ]h"]h$]h&]uh1jhjBubeh}(h]h ]h"]h$]h&]uh1hhj]hMhj?ubh)}(h%``uint64_t offset`` offset of the BO h](j)}(h``uint64_t offset``h]j)}(hjh]huint64_t offset}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj{ubj)}(hhh]h)}(hoffset of the BOh]hoffset of the BO}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhj{ubeh}(h]h ]h"]h$]h&]uh1hhjhMhj?ubh)}(h!``uint64_t size`` size of the BO h](j)}(h``uint64_t size``h]j)}(hjh]h uint64_t size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjubj)}(hhh]h)}(hsize of the BOh]hsize of the BO}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMhj?ubh)}(hC``struct amdgpu_bo **bo_ptr`` used to initialize BOs in structures h](j)}(h``struct amdgpu_bo **bo_ptr``h]j)}(hjh]hstruct amdgpu_bo **bo_ptr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjubj)}(hhh]h)}(h$used to initialize BOs in structuresh]h$used to initialize BOs in structures}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMhj?ubh)}(h1``void **cpu_addr`` optional CPU address mapping h](j)}(h``void **cpu_addr``h]j)}(hj,h]hvoid **cpu_addr}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj&ubj)}(hhh]h)}(hoptional CPU address mappingh]hoptional CPU address mapping}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjAhMhjBubah}(h]h ]h"]h$]h&]uh1jhj&ubeh}(h]h ]h"]h$]h&]uh1hhjAhMhj?ubeh}(h]h ]h"]h$]h&]uh1hhj#ubh)}(h**Description**h]jJ)}(hjgh]h Description}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjeubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj#ubh)}(h1Creates a kernel BO at a specific offset in VRAM.h]h1Creates a kernel BO at a specific offset in VRAM.}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj#ubh)}(h **Return**h]jJ)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj#ubh)}(h,0 on success, negative error code otherwise.h]h,0 on success, negative error code otherwise.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj#ubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j"amdgpu_bo_free_kernel (C function)c.amdgpu_bo_free_kernelhNtauh1jhjhhhNhNubj)}(hhh](j)}(hRvoid amdgpu_bo_free_kernel (struct amdgpu_bo **bo, u64 *gpu_addr, void **cpu_addr)h]j )}(hQvoid amdgpu_bo_free_kernel(struct amdgpu_bo **bo, u64 *gpu_addr, void **cpu_addr)h](j&)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjhhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjhhhjhMubjI)}(hamdgpu_bo_free_kernelh]jO)}(hamdgpu_bo_free_kernelh]hamdgpu_bo_free_kernel}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjhhhjhMubjj)}(h7(struct amdgpu_bo **bo, u64 *gpu_addr, void **cpu_addr)h](jp)}(hstruct amdgpu_bo **boh](jv)}(hjyh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj ubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj ubh)}(hhh]jO)}(h amdgpu_boh]h amdgpu_bo}(hj.hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj+ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj0modnameN classnameNjj)}j]j)}jjsbc.amdgpu_bo_free_kernelasbuh1hhj ubj8)}(h h]h }(hjNhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj ubj)}(hj4h]h*}(hj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hj4h]h*}(hjihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubjO)}(hboh]hbo}(hjvhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(h u64 *gpu_addrh](h)}(hhh]jO)}(hu64h]hu64}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jJc.amdgpu_bo_free_kernelasbuh1hhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(hgpu_addrh]hgpu_addr}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(hvoid **cpu_addrh](j&)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hj4h]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(hcpu_addrh]hcpu_addr}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubeh}(h]h ]h"]h$]h&]jgjhuh1jihjhhhjhMubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjhhhjhMubah}(h]jah ](jjeh"]h$]h&]j j )j huh1jhjhMhjhhubj )}(hhh]h)}(hfree BO for kernel useh]hfree BO for kernel use}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjAhhubah}(h]h ]h"]h$]h&]uh1j hjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRj\jSj\jTjUjVuh1jhhhjhNhNubjX)}(hX**Parameters** ``struct amdgpu_bo **bo`` amdgpu BO to free ``u64 *gpu_addr`` pointer to where the BO's GPU memory space address was stored ``void **cpu_addr`` pointer to where the BO's CPU memory space address was stored **Description** unmaps and unpin a BO for kernel internal use. This function is exported to allow the V4L2 isp device external to drm device to free the kernel BO.h](h)}(h**Parameters**h]jJ)}(hjfh]h Parameters}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjdubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj`ubh)}(hhh](h)}(h,``struct amdgpu_bo **bo`` amdgpu BO to free h](j)}(h``struct amdgpu_bo **bo``h]j)}(hjh]hstruct amdgpu_bo **bo}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjubj)}(hhh]h)}(hamdgpu BO to freeh]hamdgpu BO to free}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMhj|ubh)}(hP``u64 *gpu_addr`` pointer to where the BO's GPU memory space address was stored h](j)}(h``u64 *gpu_addr``h]j)}(hjh]h u64 *gpu_addr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjubj)}(hhh]h)}(h=pointer to where the BO's GPU memory space address was storedh]h?pointer to where the BO’s GPU memory space address was stored}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMhj|ubh)}(hR``void **cpu_addr`` pointer to where the BO's CPU memory space address was stored h](j)}(h``void **cpu_addr``h]j)}(hjh]hvoid **cpu_addr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjubj)}(hhh]h)}(h=pointer to where the BO's CPU memory space address was storedh]h?pointer to where the BO’s CPU memory space address was stored}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhj hMhj|ubeh}(h]h ]h"]h$]h&]uh1hhj`ubh)}(h**Description**h]jJ)}(hj2h]h Description}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj0ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj`ubh)}(h.unmaps and unpin a BO for kernel internal use.h]h.unmaps and unpin a BO for kernel internal use.}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj`ubh)}(hdThis function is exported to allow the V4L2 isp device external to drm device to free the kernel BO.h]hdThis function is exported to allow the V4L2 isp device external to drm device to free the kernel BO.}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj`ubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j$amdgpu_bo_free_isp_user (C function)c.amdgpu_bo_free_isp_userhNtauh1jhjhhhNhNubj)}(hhh](j)}(h3void amdgpu_bo_free_isp_user (struct amdgpu_bo *bo)h]j )}(h2void amdgpu_bo_free_isp_user(struct amdgpu_bo *bo)h](j&)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjhhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjhhhjhMubjI)}(hamdgpu_bo_free_isp_userh]jO)}(hamdgpu_bo_free_isp_userh]hamdgpu_bo_free_isp_user}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjhhhjhMubjj)}(h(struct amdgpu_bo *bo)h]jp)}(hstruct amdgpu_bo *boh](jv)}(hjyh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubh)}(hhh]jO)}(h amdgpu_boh]h amdgpu_bo}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.amdgpu_bo_free_isp_userasbuh1hhjubj8)}(h h]h }(hj hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(hboh]hbo}(hj hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubah}(h]h ]h"]h$]h&]jgjhuh1jihjhhhjhMubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhj~hhhjhMubah}(h]jyah ](jjeh"]h$]h&]j j )j huh1jhjhMhj{hhubj )}(hhh]h)}(hfree BO for isp useh]hfree BO for isp use}(hjF hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjC hhubah}(h]h ]h"]h$]h&]uh1j hj{hhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRj^ jSj^ jTjUjVuh1jhhhjhNhNubjX)}(h**Parameters** ``struct amdgpu_bo *bo`` amdgpu isp user BO to free **Description** unpin and unref BO for isp internal use. This function is exported to allow the V4L2 isp device external to drm device to free the isp user BO.h](h)}(h**Parameters**h]jJ)}(hjh h]h Parameters}(hjj hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjf ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjb ubh)}(hhh]h)}(h4``struct amdgpu_bo *bo`` amdgpu isp user BO to free h](j)}(h``struct amdgpu_bo *bo``h]j)}(hj h]hstruct amdgpu_bo *bo}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj ubj)}(hhh]h)}(hamdgpu isp user BO to freeh]hamdgpu isp user BO to free}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1hhj hMhj~ ubah}(h]h ]h"]h$]h&]uh1hhjb ubh)}(h**Description**h]jJ)}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjb ubh)}(h(unpin and unref BO for isp internal use.h]h(unpin and unref BO for isp internal use.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjb ubh)}(hfThis function is exported to allow the V4L2 isp device external to drm device to free the isp user BO.h]hfThis function is exported to allow the V4L2 isp device external to drm device to free the isp user BO.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjb ubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jamdgpu_bo_create (C function)c.amdgpu_bo_createhNtauh1jhjhhhNhNubj)}(hhh](j)}(hhint amdgpu_bo_create (struct amdgpu_device *adev, struct amdgpu_bo_param *bp, struct amdgpu_bo **bo_ptr)h]j )}(hgint amdgpu_bo_create(struct amdgpu_device *adev, struct amdgpu_bo_param *bp, struct amdgpu_bo **bo_ptr)h](j&)}(hinth]hint}(hj!hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hj!hhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMoubj8)}(h h]h }(hj%!hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj!hhhj$!hMoubjI)}(hamdgpu_bo_createh]jO)}(hamdgpu_bo_createh]hamdgpu_bo_create}(hj7!hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj3!ubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhj!hhhj$!hMoubjj)}(hS(struct amdgpu_device *adev, struct amdgpu_bo_param *bp, struct amdgpu_bo **bo_ptr)h](jp)}(hstruct amdgpu_device *adevh](jv)}(hjyh]hstruct}(hjS!hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjO!ubj8)}(h h]h }(hj`!hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjO!ubh)}(hhh]jO)}(h amdgpu_deviceh]h amdgpu_device}(hjq!hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjn!ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjs!modnameN classnameNjj)}j]j)}jj9!sbc.amdgpu_bo_createasbuh1hhjO!ubj8)}(h h]h }(hj!hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjO!ubj)}(hj4h]h*}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjO!ubjO)}(hadevh]hadev}(hj!hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjO!ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjK!ubjp)}(hstruct amdgpu_bo_param *bph](jv)}(hjyh]hstruct}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj!ubj8)}(h h]h }(hj!hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj!ubh)}(hhh]jO)}(hamdgpu_bo_paramh]hamdgpu_bo_param}(hj!hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj!ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj!modnameN classnameNjj)}j]j!c.amdgpu_bo_createasbuh1hhj!ubj8)}(h h]h }(hj"hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj!ubj)}(hj4h]h*}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubjO)}(hbph]hbp}(hj"hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj!ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjK!ubjp)}(hstruct amdgpu_bo **bo_ptrh](jv)}(hjyh]hstruct}(hj5"hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj1"ubj8)}(h h]h }(hjB"hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj1"ubh)}(hhh]jO)}(h amdgpu_boh]h amdgpu_bo}(hjS"hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjP"ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjU"modnameN classnameNjj)}j]j!c.amdgpu_bo_createasbuh1hhj1"ubj8)}(h h]h }(hjq"hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj1"ubj)}(hj4h]h*}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1"ubj)}(hj4h]h*}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1"ubjO)}(hbo_ptrh]hbo_ptr}(hj"hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj1"ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjK!ubeh}(h]h ]h"]h$]h&]jgjhuh1jihj!hhhj$!hMoubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhj!hhhj$!hMoubah}(h]j !ah ](jjeh"]h$]h&]j j )j huh1jhj$!hMohj !hhubj )}(hhh]h)}(h+create an :c:type:`amdgpu_bo` buffer objecth](h create an }(hj"hhhNhNubh)}(h:c:type:`amdgpu_bo`h]j)}(hj"h]h amdgpu_bo}(hj"hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjj)}j]j!c.amdgpu_bo_createasbj amdgpu_bouh1hhj6hKThj"ubh buffer object}(hj"hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMohj"hhubah}(h]h ]h"]h$]h&]uh1j hj !hhhj$!hMoubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRj#jSj#jTjUjVuh1jhhhjhNhNubjX)}(hXY**Parameters** ``struct amdgpu_device *adev`` amdgpu device object ``struct amdgpu_bo_param *bp`` parameters to be used for the buffer object ``struct amdgpu_bo **bo_ptr`` pointer to the buffer object pointer **Description** Creates an :c:type:`amdgpu_bo` buffer object. **Return** 0 for success or a negative error code on failure.h](h)}(h**Parameters**h]jJ)}(hj #h]h Parameters}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj #ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMshj#ubh)}(hhh](h)}(h4``struct amdgpu_device *adev`` amdgpu device object h](j)}(h``struct amdgpu_device *adev``h]j)}(hj,#h]hstruct amdgpu_device *adev}(hj.#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*#ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMphj&#ubj)}(hhh]h)}(hamdgpu device objecth]hamdgpu device object}(hjE#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjA#hMphjB#ubah}(h]h ]h"]h$]h&]uh1jhj&#ubeh}(h]h ]h"]h$]h&]uh1hhjA#hMphj##ubh)}(hK``struct amdgpu_bo_param *bp`` parameters to be used for the buffer object h](j)}(h``struct amdgpu_bo_param *bp``h]j)}(hje#h]hstruct amdgpu_bo_param *bp}(hjg#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjc#ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMqhj_#ubj)}(hhh]h)}(h+parameters to be used for the buffer objecth]h+parameters to be used for the buffer object}(hj~#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjz#hMqhj{#ubah}(h]h ]h"]h$]h&]uh1jhj_#ubeh}(h]h ]h"]h$]h&]uh1hhjz#hMqhj##ubh)}(hC``struct amdgpu_bo **bo_ptr`` pointer to the buffer object pointer h](j)}(h``struct amdgpu_bo **bo_ptr``h]j)}(hj#h]hstruct amdgpu_bo **bo_ptr}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj#ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMrhj#ubj)}(hhh]h)}(h$pointer to the buffer object pointerh]h$pointer to the buffer object pointer}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#hMrhj#ubah}(h]h ]h"]h$]h&]uh1jhj#ubeh}(h]h ]h"]h$]h&]uh1hhj#hMrhj##ubeh}(h]h ]h"]h$]h&]uh1hhj#ubh)}(h**Description**h]jJ)}(hj#h]h Description}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj#ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMthj#ubh)}(h-Creates an :c:type:`amdgpu_bo` buffer object.h](h Creates an }(hj#hhhNhNubh)}(h:c:type:`amdgpu_bo`h]j)}(hj#h]h amdgpu_bo}(hj#hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj#ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj amdgpu_bouh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMshj#ubh buffer object.}(hj#hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj$hMshj#ubh)}(h **Return**h]jJ)}(hj#$h]hReturn}(hj%$hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj!$ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMuhj#ubh)}(h20 for success or a negative error code on failure.h]h20 for success or a negative error code on failure.}(hj9$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMvhj#ubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j"amdgpu_bo_create_user (C function)c.amdgpu_bo_create_userhNtauh1jhjhhhNhNubj)}(hhh](j)}(hsint amdgpu_bo_create_user (struct amdgpu_device *adev, struct amdgpu_bo_param *bp, struct amdgpu_bo_user **ubo_ptr)h]j )}(hrint amdgpu_bo_create_user(struct amdgpu_device *adev, struct amdgpu_bo_param *bp, struct amdgpu_bo_user **ubo_ptr)h](j&)}(hinth]hint}(hjh$hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjd$hhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMubj8)}(h h]h }(hjw$hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjd$hhhjv$hMubjI)}(hamdgpu_bo_create_userh]jO)}(hamdgpu_bo_create_userh]hamdgpu_bo_create_user}(hj$hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj$ubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjd$hhhjv$hMubjj)}(hY(struct amdgpu_device *adev, struct amdgpu_bo_param *bp, struct amdgpu_bo_user **ubo_ptr)h](jp)}(hstruct amdgpu_device *adevh](jv)}(hjyh]hstruct}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj$ubj8)}(h h]h }(hj$hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj$ubh)}(hhh]jO)}(h amdgpu_deviceh]h amdgpu_device}(hj$hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj$ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj$modnameN classnameNjj)}j]j)}jj$sbc.amdgpu_bo_create_userasbuh1hhj$ubj8)}(h h]h }(hj$hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj$ubj)}(hj4h]h*}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubjO)}(hadevh]hadev}(hj$hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj$ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj$ubjp)}(hstruct amdgpu_bo_param *bph](jv)}(hjyh]hstruct}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj%ubj8)}(h h]h }(hj$%hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj%ubh)}(hhh]jO)}(hamdgpu_bo_paramh]hamdgpu_bo_param}(hj5%hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj2%ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj7%modnameN classnameNjj)}j]j$c.amdgpu_bo_create_userasbuh1hhj%ubj8)}(h h]h }(hjS%hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj%ubj)}(hj4h]h*}(hja%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubjO)}(hbph]hbp}(hjn%hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj%ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj$ubjp)}(hstruct amdgpu_bo_user **ubo_ptrh](jv)}(hjyh]hstruct}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj%ubj8)}(h h]h }(hj%hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj%ubh)}(hhh]jO)}(hamdgpu_bo_userh]hamdgpu_bo_user}(hj%hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj%ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj%modnameN classnameNjj)}j]j$c.amdgpu_bo_create_userasbuh1hhj%ubj8)}(h h]h }(hj%hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj%ubj)}(hj4h]h*}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubj)}(hj4h]h*}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubjO)}(hubo_ptrh]hubo_ptr}(hj%hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj%ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj$ubeh}(h]h ]h"]h$]h&]jgjhuh1jihjd$hhhjv$hMubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhj`$hhhjv$hMubah}(h]j[$ah ](jjeh"]h$]h&]j j )j huh1jhjv$hMhj]$hhubj )}(hhh]h)}(h0create an :c:type:`amdgpu_bo_user` buffer objecth](h create an }(hj&hhhNhNubh)}(h:c:type:`amdgpu_bo_user`h]j)}(hj&h]hamdgpu_bo_user}(hj!&hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjj)}j]j$c.amdgpu_bo_create_userasbjamdgpu_bo_useruh1hhj6hKThj&ubh buffer object}(hj&hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj&hhubah}(h]h ]h"]h$]h&]uh1j hj]$hhhjv$hMubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjU&jSjU&jTjUjVuh1jhhhjhNhNubjX)}(hX]**Parameters** ``struct amdgpu_device *adev`` amdgpu device object ``struct amdgpu_bo_param *bp`` parameters to be used for the buffer object ``struct amdgpu_bo_user **ubo_ptr`` pointer to the buffer object pointer **Description** Create a BO to be used by user application; **Return** 0 for success or a negative error code on failure.h](h)}(h**Parameters**h]jJ)}(hj_&h]h Parameters}(hja&hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj]&ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjY&ubh)}(hhh](h)}(h4``struct amdgpu_device *adev`` amdgpu device object h](j)}(h``struct amdgpu_device *adev``h]j)}(hj~&h]hstruct amdgpu_device *adev}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|&ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjx&ubj)}(hhh]h)}(hamdgpu device objecth]hamdgpu device object}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&hMhj&ubah}(h]h ]h"]h$]h&]uh1jhjx&ubeh}(h]h ]h"]h$]h&]uh1hhj&hMhju&ubh)}(hK``struct amdgpu_bo_param *bp`` parameters to be used for the buffer object h](j)}(h``struct amdgpu_bo_param *bp``h]j)}(hj&h]hstruct amdgpu_bo_param *bp}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj&ubj)}(hhh]h)}(h+parameters to be used for the buffer objecth]h+parameters to be used for the buffer object}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&hMhj&ubah}(h]h ]h"]h$]h&]uh1jhj&ubeh}(h]h ]h"]h$]h&]uh1hhj&hMhju&ubh)}(hI``struct amdgpu_bo_user **ubo_ptr`` pointer to the buffer object pointer h](j)}(h#``struct amdgpu_bo_user **ubo_ptr``h]j)}(hj&h]hstruct amdgpu_bo_user **ubo_ptr}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj&ubj)}(hhh]h)}(h$pointer to the buffer object pointerh]h$pointer to the buffer object pointer}(hj 'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj'hMhj'ubah}(h]h ]h"]h$]h&]uh1jhj&ubeh}(h]h ]h"]h$]h&]uh1hhj'hMhju&ubeh}(h]h ]h"]h$]h&]uh1hhjY&ubh)}(h**Description**h]jJ)}(hj+'h]h Description}(hj-'hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj)'ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjY&ubh)}(h+Create a BO to be used by user application;h]h+Create a BO to be used by user application;}(hjA'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjY&ubh)}(h **Return**h]jJ)}(hjR'h]hReturn}(hjT'hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjP'ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjY&ubh)}(h20 for success or a negative error code on failure.h]h20 for success or a negative error code on failure.}(hjh'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjY&ubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j amdgpu_bo_create_vm (C function)c.amdgpu_bo_create_vmhNtauh1jhjhhhNhNubj)}(hhh](j)}(hpint amdgpu_bo_create_vm (struct amdgpu_device *adev, struct amdgpu_bo_param *bp, struct amdgpu_bo_vm **vmbo_ptr)h]j )}(hoint amdgpu_bo_create_vm(struct amdgpu_device *adev, struct amdgpu_bo_param *bp, struct amdgpu_bo_vm **vmbo_ptr)h](j&)}(hinth]hint}(hj'hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hj'hhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMubj8)}(h h]h }(hj'hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj'hhhj'hMubjI)}(hamdgpu_bo_create_vmh]jO)}(hamdgpu_bo_create_vmh]hamdgpu_bo_create_vm}(hj'hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj'ubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhj'hhhj'hMubjj)}(hX(struct amdgpu_device *adev, struct amdgpu_bo_param *bp, struct amdgpu_bo_vm **vmbo_ptr)h](jp)}(hstruct amdgpu_device *adevh](jv)}(hjyh]hstruct}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj'ubj8)}(h h]h }(hj'hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj'ubh)}(hhh]jO)}(h amdgpu_deviceh]h amdgpu_device}(hj'hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj'ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj'modnameN classnameNjj)}j]j)}jj'sbc.amdgpu_bo_create_vmasbuh1hhj'ubj8)}(h h]h }(hj(hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj'ubj)}(hj4h]h*}(hj (hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubjO)}(hadevh]hadev}(hj-(hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj'ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj'ubjp)}(hstruct amdgpu_bo_param *bph](jv)}(hjyh]hstruct}(hjF(hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjB(ubj8)}(h h]h }(hjS(hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjB(ubh)}(hhh]jO)}(hamdgpu_bo_paramh]hamdgpu_bo_param}(hjd(hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhja(ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjf(modnameN classnameNjj)}j]j(c.amdgpu_bo_create_vmasbuh1hhjB(ubj8)}(h h]h }(hj(hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjB(ubj)}(hj4h]h*}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjB(ubjO)}(hbph]hbp}(hj(hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjB(ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj'ubjp)}(hstruct amdgpu_bo_vm **vmbo_ptrh](jv)}(hjyh]hstruct}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj(ubj8)}(h h]h }(hj(hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj(ubh)}(hhh]jO)}(h amdgpu_bo_vmh]h amdgpu_bo_vm}(hj(hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj(ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj(modnameN classnameNjj)}j]j(c.amdgpu_bo_create_vmasbuh1hhj(ubj8)}(h h]h }(hj(hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj(ubj)}(hj4h]h*}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubj)}(hj4h]h*}(hj )hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubjO)}(hvmbo_ptrh]hvmbo_ptr}(hj)hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj(ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj'ubeh}(h]h ]h"]h$]h&]jgjhuh1jihj'hhhj'hMubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhj'hhhj'hMubah}(h]j'ah ](jjeh"]h$]h&]j j )j huh1jhj'hMhj'hhubj )}(hhh]h)}(h.create an :c:type:`amdgpu_bo_vm` buffer objecth](h create an }(hjD)hhhNhNubh)}(h:c:type:`amdgpu_bo_vm`h]j)}(hjN)h]h amdgpu_bo_vm}(hjP)hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjL)ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjj)}j]j(c.amdgpu_bo_create_vmasbj amdgpu_bo_vmuh1hhj6hKThjD)ubh buffer object}(hjD)hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjA)hhubah}(h]h ]h"]h$]h&]uh1j hj'hhhj'hMubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRj)jSj)jTjUjVuh1jhhhjhNhNubjX)}(hXM**Parameters** ``struct amdgpu_device *adev`` amdgpu device object ``struct amdgpu_bo_param *bp`` parameters to be used for the buffer object ``struct amdgpu_bo_vm **vmbo_ptr`` pointer to the buffer object pointer **Description** Create a BO to be for GPUVM. **Return** 0 for success or a negative error code on failure.h](h)}(h**Parameters**h]jJ)}(hj)h]h Parameters}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj)ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj)ubh)}(hhh](h)}(h4``struct amdgpu_device *adev`` amdgpu device object h](j)}(h``struct amdgpu_device *adev``h]j)}(hj)h]hstruct amdgpu_device *adev}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj)ubj)}(hhh]h)}(hamdgpu device objecth]hamdgpu device object}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)hMhj)ubah}(h]h ]h"]h$]h&]uh1jhj)ubeh}(h]h ]h"]h$]h&]uh1hhj)hMhj)ubh)}(hK``struct amdgpu_bo_param *bp`` parameters to be used for the buffer object h](j)}(h``struct amdgpu_bo_param *bp``h]j)}(hj)h]hstruct amdgpu_bo_param *bp}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj)ubj)}(hhh]h)}(h+parameters to be used for the buffer objecth]h+parameters to be used for the buffer object}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)hMhj)ubah}(h]h ]h"]h$]h&]uh1jhj)ubeh}(h]h ]h"]h$]h&]uh1hhj)hMhj)ubh)}(hH``struct amdgpu_bo_vm **vmbo_ptr`` pointer to the buffer object pointer h](j)}(h"``struct amdgpu_bo_vm **vmbo_ptr``h]j)}(hj*h]hstruct amdgpu_bo_vm **vmbo_ptr}(hj!*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj*ubj)}(hhh]h)}(h$pointer to the buffer object pointerh]h$pointer to the buffer object pointer}(hj8*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4*hMhj5*ubah}(h]h ]h"]h$]h&]uh1jhj*ubeh}(h]h ]h"]h$]h&]uh1hhj4*hMhj)ubeh}(h]h ]h"]h$]h&]uh1hhj)ubh)}(h**Description**h]jJ)}(hjZ*h]h Description}(hj\*hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjX*ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj)ubh)}(hCreate a BO to be for GPUVM.h]hCreate a BO to be for GPUVM.}(hjp*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj)ubh)}(h **Return**h]jJ)}(hj*h]hReturn}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj*ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj)ubh)}(h20 for success or a negative error code on failure.h]h20 for success or a negative error code on failure.}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj)ubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jamdgpu_bo_kmap (C function)c.amdgpu_bo_kmaphNtauh1jhjhhhNhNubj)}(hhh](j)}(h5int amdgpu_bo_kmap (struct amdgpu_bo *bo, void **ptr)h]j )}(h4int amdgpu_bo_kmap(struct amdgpu_bo *bo, void **ptr)h](j&)}(hinth]hint}(hj*hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hj*hhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM0ubj8)}(h h]h }(hj*hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj*hhhj*hM0ubjI)}(hamdgpu_bo_kmaph]jO)}(hamdgpu_bo_kmaph]hamdgpu_bo_kmap}(hj*hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj*ubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhj*hhhj*hM0ubjj)}(h"(struct amdgpu_bo *bo, void **ptr)h](jp)}(hstruct amdgpu_bo *boh](jv)}(hjyh]hstruct}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj*ubj8)}(h h]h }(hj+hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj*ubh)}(hhh]jO)}(h amdgpu_boh]h amdgpu_bo}(hj!+hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj+ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj#+modnameN classnameNjj)}j]j)}jj*sbc.amdgpu_bo_kmapasbuh1hhj*ubj8)}(h h]h }(hjA+hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj*ubj)}(hj4h]h*}(hjO+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubjO)}(hboh]hbo}(hj\+hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj*ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj*ubjp)}(h void **ptrh](j&)}(hvoidh]hvoid}(hju+hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjq+ubj8)}(h h]h }(hj+hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjq+ubj)}(hj4h]h*}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjq+ubj)}(hj4h]h*}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjq+ubjO)}(hptrh]hptr}(hj+hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjq+ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj*ubeh}(h]h ]h"]h$]h&]jgjhuh1jihj*hhhj*hM0ubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhj*hhhj*hM0ubah}(h]j*ah ](jjeh"]h$]h&]j j )j huh1jhj*hM0hj*hhubj )}(hhh]h)}(h(map an :c:type:`amdgpu_bo` buffer objecth](hmap an }(hj+hhhNhNubh)}(h:c:type:`amdgpu_bo`h]j)}(hj+h]h amdgpu_bo}(hj+hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj+ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjj)}j]j=+c.amdgpu_bo_kmapasbj amdgpu_bouh1hhj6hKThj+ubh buffer object}(hj+hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM0hj+hhubah}(h]h ]h"]h$]h&]uh1j hj*hhhj*hM0ubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRj,jSj,jTjUjVuh1jhhhjhNhNubjX)}(hXW**Parameters** ``struct amdgpu_bo *bo`` :c:type:`amdgpu_bo` buffer object to be mapped ``void **ptr`` kernel virtual address to be returned **Description** Calls ttm_bo_kmap() to set up the kernel virtual mapping; calls amdgpu_bo_kptr() to get the kernel virtual address. **Return** 0 for success or a negative error code on failure.h](h)}(h**Parameters**h]jJ)}(hj,h]h Parameters}(hj!,hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj,ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM4hj,ubh)}(hhh](h)}(hH``struct amdgpu_bo *bo`` :c:type:`amdgpu_bo` buffer object to be mapped h](j)}(h``struct amdgpu_bo *bo``h]j)}(hj>,h]hstruct amdgpu_bo *bo}(hj@,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<,ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM1hj8,ubj)}(hhh]h)}(h.:c:type:`amdgpu_bo` buffer object to be mappedh](h)}(h:c:type:`amdgpu_bo`h]j)}(hj],h]h amdgpu_bo}(hj_,hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj[,ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj amdgpu_bouh1hhjS,hM1hjW,ubh buffer object to be mapped}(hjW,hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjS,hM1hjT,ubah}(h]h ]h"]h$]h&]uh1jhj8,ubeh}(h]h ]h"]h$]h&]uh1hhjS,hM1hj5,ubh)}(h5``void **ptr`` kernel virtual address to be returned h](j)}(h``void **ptr``h]j)}(hj,h]h void **ptr}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM2hj,ubj)}(hhh]h)}(h%kernel virtual address to be returnedh]h%kernel virtual address to be returned}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,hM2hj,ubah}(h]h ]h"]h$]h&]uh1jhj,ubeh}(h]h ]h"]h$]h&]uh1hhj,hM2hj5,ubeh}(h]h ]h"]h$]h&]uh1hhj,ubh)}(h**Description**h]jJ)}(hj,h]h Description}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj,ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM4hj,ubh)}(hsCalls ttm_bo_kmap() to set up the kernel virtual mapping; calls amdgpu_bo_kptr() to get the kernel virtual address.h]hsCalls ttm_bo_kmap() to set up the kernel virtual mapping; calls amdgpu_bo_kptr() to get the kernel virtual address.}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM3hj,ubh)}(h **Return**h]jJ)}(hj,h]hReturn}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj,ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM6hj,ubh)}(h20 for success or a negative error code on failure.h]h20 for success or a negative error code on failure.}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM7hj,ubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jamdgpu_bo_kptr (C function)c.amdgpu_bo_kptrhNtauh1jhjhhhNhNubj)}(hhh](j)}(h,void * amdgpu_bo_kptr (struct amdgpu_bo *bo)h]j )}(h*void *amdgpu_bo_kptr(struct amdgpu_bo *bo)h](j&)}(hvoidh]hvoid}(hj=-hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hj9-hhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMYubj8)}(h h]h }(hjL-hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj9-hhhjK-hMYubj)}(hj4h]h*}(hjZ-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9-hhhjK-hMYubjI)}(hamdgpu_bo_kptrh]jO)}(hamdgpu_bo_kptrh]hamdgpu_bo_kptr}(hjk-hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjg-ubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhj9-hhhjK-hMYubjj)}(h(struct amdgpu_bo *bo)h]jp)}(hstruct amdgpu_bo *boh](jv)}(hjyh]hstruct}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj-ubj8)}(h h]h }(hj-hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj-ubh)}(hhh]jO)}(h amdgpu_boh]h amdgpu_bo}(hj-hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj-ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj-modnameN classnameNjj)}j]j)}jjm-sbc.amdgpu_bo_kptrasbuh1hhj-ubj8)}(h h]h }(hj-hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj-ubj)}(hj4h]h*}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-ubjO)}(hboh]hbo}(hj-hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj-ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj-ubah}(h]h ]h"]h$]h&]jgjhuh1jihj9-hhhjK-hMYubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhj5-hhhjK-hMYubah}(h]j0-ah ](jjeh"]h$]h&]j j )j huh1jhjK-hMYhj2-hhubj )}(hhh]h)}(h5returns a kernel virtual address of the buffer objecth]h5returns a kernel virtual address of the buffer object}(hj .hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMYhj.hhubah}(h]h ]h"]h$]h&]uh1j hj2-hhhjK-hMYubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRj".jSj".jTjUjVuh1jhhhjhNhNubjX)}(h**Parameters** ``struct amdgpu_bo *bo`` :c:type:`amdgpu_bo` buffer object **Description** Calls ttm_kmap_obj_virtual() to get the kernel virtual address **Return** the virtual address of a buffer object area.h](h)}(h**Parameters**h]jJ)}(hj,.h]h Parameters}(hj..hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj*.ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM]hj&.ubh)}(hhh]h)}(h;``struct amdgpu_bo *bo`` :c:type:`amdgpu_bo` buffer object h](j)}(h``struct amdgpu_bo *bo``h]j)}(hjK.h]hstruct amdgpu_bo *bo}(hjM.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjI.ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMZhjE.ubj)}(hhh]h)}(h!:c:type:`amdgpu_bo` buffer objecth](h)}(h:c:type:`amdgpu_bo`h]j)}(hjj.h]h amdgpu_bo}(hjl.hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjh.ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj amdgpu_bouh1hhj`.hMZhjd.ubh buffer object}(hjd.hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj`.hMZhja.ubah}(h]h ]h"]h$]h&]uh1jhjE.ubeh}(h]h ]h"]h$]h&]uh1hhj`.hMZhjB.ubah}(h]h ]h"]h$]h&]uh1hhj&.ubh)}(h**Description**h]jJ)}(hj.h]h Description}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj.ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM\hj&.ubh)}(h>Calls ttm_kmap_obj_virtual() to get the kernel virtual addressh]h>Calls ttm_kmap_obj_virtual() to get the kernel virtual address}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM[hj&.ubh)}(h **Return**h]jJ)}(hj.h]hReturn}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj.ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM]hj&.ubh)}(h,the virtual address of a buffer object area.h]h,the virtual address of a buffer object area.}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM^hj&.ubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jamdgpu_bo_kunmap (C function)c.amdgpu_bo_kunmaphNtauh1jhjhhhNhNubj)}(hhh](j)}(h,void amdgpu_bo_kunmap (struct amdgpu_bo *bo)h]j )}(h+void amdgpu_bo_kunmap(struct amdgpu_bo *bo)h](j&)}(hvoidh]hvoid}(hj/hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hj /hhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMiubj8)}(h h]h }(hj /hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj /hhhj/hMiubjI)}(hamdgpu_bo_kunmaph]jO)}(hamdgpu_bo_kunmaph]hamdgpu_bo_kunmap}(hj2/hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj./ubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhj /hhhj/hMiubjj)}(h(struct amdgpu_bo *bo)h]jp)}(hstruct amdgpu_bo *boh](jv)}(hjyh]hstruct}(hjN/hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjJ/ubj8)}(h h]h }(hj[/hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjJ/ubh)}(hhh]jO)}(h amdgpu_boh]h amdgpu_bo}(hjl/hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhji/ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjn/modnameN classnameNjj)}j]j)}jj4/sbc.amdgpu_bo_kunmapasbuh1hhjJ/ubj8)}(h h]h }(hj/hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjJ/ubj)}(hj4h]h*}(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJ/ubjO)}(hboh]hbo}(hj/hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjJ/ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjF/ubah}(h]h ]h"]h$]h&]jgjhuh1jihj /hhhj/hMiubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhj /hhhj/hMiubah}(h]j/ah ](jjeh"]h$]h&]j j )j huh1jhj/hMihj/hhubj )}(hhh]h)}(h*unmap an :c:type:`amdgpu_bo` buffer objecth](h unmap an }(hj/hhhNhNubh)}(h:c:type:`amdgpu_bo`h]j)}(hj/h]h amdgpu_bo}(hj/hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj/ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjj)}j]j/c.amdgpu_bo_kunmapasbj amdgpu_bouh1hhj6hKThj/ubh buffer object}(hj/hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMihj/hhubah}(h]h ]h"]h$]h&]uh1j hj/hhhj/hMiubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRj0jSj0jTjUjVuh1jhhhjhNhNubjX)}(h**Parameters** ``struct amdgpu_bo *bo`` :c:type:`amdgpu_bo` buffer object to be unmapped **Description** Unmaps a kernel map set up by amdgpu_bo_kmap().h](h)}(h**Parameters**h]jJ)}(hj0h]h Parameters}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj0ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMmhj0ubh)}(hhh]h)}(hJ``struct amdgpu_bo *bo`` :c:type:`amdgpu_bo` buffer object to be unmapped h](j)}(h``struct amdgpu_bo *bo``h]j)}(hj:0h]hstruct amdgpu_bo *bo}(hj<0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj80ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMjhj40ubj)}(hhh]h)}(h0:c:type:`amdgpu_bo` buffer object to be unmappedh](h)}(h:c:type:`amdgpu_bo`h]j)}(hjY0h]h amdgpu_bo}(hj[0hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjW0ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj amdgpu_bouh1hhjO0hMjhjS0ubh buffer object to be unmapped}(hjS0hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjO0hMjhjP0ubah}(h]h ]h"]h$]h&]uh1jhj40ubeh}(h]h ]h"]h$]h&]uh1hhjO0hMjhj10ubah}(h]h ]h"]h$]h&]uh1hhj0ubh)}(h**Description**h]jJ)}(hj0h]h Description}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj0ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMlhj0ubh)}(h/Unmaps a kernel map set up by amdgpu_bo_kmap().h]h/Unmaps a kernel map set up by amdgpu_bo_kmap().}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMkhj0ubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jamdgpu_bo_ref (C function)c.amdgpu_bo_refhNtauh1jhjhhhNhNubj)}(hhh](j)}(h7struct amdgpu_bo * amdgpu_bo_ref (struct amdgpu_bo *bo)h]j )}(h5struct amdgpu_bo *amdgpu_bo_ref(struct amdgpu_bo *bo)h](jv)}(hjyh]hstruct}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj0hhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMuubj8)}(h h]h }(hj0hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj0hhhj0hMuubh)}(hhh]jO)}(h amdgpu_boh]h amdgpu_bo}(hj0hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj0ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj0modnameN classnameNjj)}j]j)}j amdgpu_bo_refsbc.amdgpu_bo_refasbuh1hhj0hhhj0hMuubj8)}(h h]h }(hj1hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj0hhhj0hMuubj)}(hj4h]h*}(hj'1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0hhhj0hMuubjI)}(h amdgpu_bo_refh]jO)}(hj1h]h amdgpu_bo_ref}(hj81hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj41ubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhj0hhhj0hMuubjj)}(h(struct amdgpu_bo *bo)h]jp)}(hstruct amdgpu_bo *boh](jv)}(hjyh]hstruct}(hjS1hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjO1ubj8)}(h h]h }(hj`1hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjO1ubh)}(hhh]jO)}(h amdgpu_boh]h amdgpu_bo}(hjq1hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjn1ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjs1modnameN classnameNjj)}j]j1c.amdgpu_bo_refasbuh1hhjO1ubj8)}(h h]h }(hj1hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjO1ubj)}(hj4h]h*}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjO1ubjO)}(hboh]hbo}(hj1hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjO1ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjK1ubah}(h]h ]h"]h$]h&]jgjhuh1jihj0hhhj0hMuubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhj0hhhj0hMuubah}(h]j0ah ](jjeh"]h$]h&]j j )j huh1jhj0hMuhj0hhubj )}(hhh]h)}(h.reference an :c:type:`amdgpu_bo` buffer objecth](h reference an }(hj1hhhNhNubh)}(h:c:type:`amdgpu_bo`h]j)}(hj1h]h amdgpu_bo}(hj1hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjj)}j]j1c.amdgpu_bo_refasbj amdgpu_bouh1hhj6hKThj1ubh buffer object}(hj1hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMuhj1hhubah}(h]h ]h"]h$]h&]uh1j hj0hhhj0hMuubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRj2jSj2jTjUjVuh1jhhhjhNhNubjX)}(h**Parameters** ``struct amdgpu_bo *bo`` :c:type:`amdgpu_bo` buffer object **Description** References the contained :c:type:`ttm_buffer_object`. **Return** a refcounted pointer to the :c:type:`amdgpu_bo` buffer object.h](h)}(h**Parameters**h]jJ)}(hj2h]h Parameters}(hj 2hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj2ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMyhj2ubh)}(hhh]h)}(h;``struct amdgpu_bo *bo`` :c:type:`amdgpu_bo` buffer object h](j)}(h``struct amdgpu_bo *bo``h]j)}(hj=2h]hstruct amdgpu_bo *bo}(hj?2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;2ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMvhj72ubj)}(hhh]h)}(h!:c:type:`amdgpu_bo` buffer objecth](h)}(h:c:type:`amdgpu_bo`h]j)}(hj\2h]h amdgpu_bo}(hj^2hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjZ2ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj amdgpu_bouh1hhjR2hMvhjV2ubh buffer object}(hjV2hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjR2hMvhjS2ubah}(h]h ]h"]h$]h&]uh1jhj72ubeh}(h]h ]h"]h$]h&]uh1hhjR2hMvhj42ubah}(h]h ]h"]h$]h&]uh1hhj2ubh)}(h**Description**h]jJ)}(hj2h]h Description}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj2ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMxhj2ubh)}(h5References the contained :c:type:`ttm_buffer_object`.h](hReferences the contained }(hj2hhhNhNubh)}(h:c:type:`ttm_buffer_object`h]j)}(hj2h]httm_buffer_object}(hj2hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjjttm_buffer_objectuh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMwhj2ubh.}(hj2hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj2hMwhj2ubh)}(h **Return**h]jJ)}(hj2h]hReturn}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj2ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMyhj2ubh)}(h>a refcounted pointer to the :c:type:`amdgpu_bo` buffer object.h](ha refcounted pointer to the }(hj2hhhNhNubh)}(h:c:type:`amdgpu_bo`h]j)}(hj3h]h amdgpu_bo}(hj3hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj amdgpu_bouh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMzhj2ubh buffer object.}(hj2hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj3hMzhj2ubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jamdgpu_bo_unref (C function)c.amdgpu_bo_unrefhNtauh1jhjhhhNhNubj)}(hhh](j)}(h,void amdgpu_bo_unref (struct amdgpu_bo **bo)h]j )}(h+void amdgpu_bo_unref(struct amdgpu_bo **bo)h](j&)}(hvoidh]hvoid}(hjI3hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjE3hhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMubj8)}(h h]h }(hjX3hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjE3hhhjW3hMubjI)}(hamdgpu_bo_unrefh]jO)}(hamdgpu_bo_unrefh]hamdgpu_bo_unref}(hjj3hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjf3ubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjE3hhhjW3hMubjj)}(h(struct amdgpu_bo **bo)h]jp)}(hstruct amdgpu_bo **boh](jv)}(hjyh]hstruct}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj3ubj8)}(h h]h }(hj3hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj3ubh)}(hhh]jO)}(h amdgpu_boh]h amdgpu_bo}(hj3hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj3ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj3modnameN classnameNjj)}j]j)}jjl3sbc.amdgpu_bo_unrefasbuh1hhj3ubj8)}(h h]h }(hj3hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj3ubj)}(hj4h]h*}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubj)}(hj4h]h*}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubjO)}(hboh]hbo}(hj3hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj3ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj~3ubah}(h]h ]h"]h$]h&]jgjhuh1jihjE3hhhjW3hMubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjA3hhhjW3hMubah}(h]j<3ah ](jjeh"]h$]h&]j j )j huh1jhjW3hMhj>3hhubj )}(hhh]h)}(h0unreference an :c:type:`amdgpu_bo` buffer objecth](hunreference an }(hj4hhhNhNubh)}(h:c:type:`amdgpu_bo`h]j)}(hj 4h]h amdgpu_bo}(hj"4hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjj)}j]j3c.amdgpu_bo_unrefasbj amdgpu_bouh1hhj6hKThj4ubh buffer object}(hj4hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj4hhubah}(h]h ]h"]h$]h&]uh1j hj>3hhhjW3hMubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjV4jSjV4jTjUjVuh1jhhhjhNhNubjX)}(h**Parameters** ``struct amdgpu_bo **bo`` :c:type:`amdgpu_bo` buffer object **Description** Unreferences the contained :c:type:`ttm_buffer_object` and clear the pointerh](h)}(h**Parameters**h]jJ)}(hj`4h]h Parameters}(hjb4hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj^4ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjZ4ubh)}(hhh]h)}(h<``struct amdgpu_bo **bo`` :c:type:`amdgpu_bo` buffer object h](j)}(h``struct amdgpu_bo **bo``h]j)}(hj4h]hstruct amdgpu_bo **bo}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}4ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjy4ubj)}(hhh]h)}(h!:c:type:`amdgpu_bo` buffer objecth](h)}(h:c:type:`amdgpu_bo`h]j)}(hj4h]h amdgpu_bo}(hj4hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj amdgpu_bouh1hhj4hMhj4ubh buffer object}(hj4hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj4hMhj4ubah}(h]h ]h"]h$]h&]uh1jhjy4ubeh}(h]h ]h"]h$]h&]uh1hhj4hMhjv4ubah}(h]h ]h"]h$]h&]uh1hhjZ4ubh)}(h**Description**h]jJ)}(hj4h]h Description}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj4ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjZ4ubh)}(hLUnreferences the contained :c:type:`ttm_buffer_object` and clear the pointerh](hUnreferences the contained }(hj4hhhNhNubh)}(h:c:type:`ttm_buffer_object`h]j)}(hj4h]httm_buffer_object}(hj4hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjjttm_buffer_objectuh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj4ubh and clear the pointer}(hj4hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj5hMhjZ4ubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jamdgpu_bo_pin (C function)c.amdgpu_bo_pinhNtauh1jhjhhhNhNubj)}(hhh](j)}(h4int amdgpu_bo_pin (struct amdgpu_bo *bo, u32 domain)h]j )}(h3int amdgpu_bo_pin(struct amdgpu_bo *bo, u32 domain)h](j&)}(hinth]hint}(hjA5hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hj=5hhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMubj8)}(h h]h }(hjP5hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj=5hhhjO5hMubjI)}(h amdgpu_bo_pinh]jO)}(h amdgpu_bo_pinh]h amdgpu_bo_pin}(hjb5hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj^5ubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhj=5hhhjO5hMubjj)}(h"(struct amdgpu_bo *bo, u32 domain)h](jp)}(hstruct amdgpu_bo *boh](jv)}(hjyh]hstruct}(hj~5hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjz5ubj8)}(h h]h }(hj5hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjz5ubh)}(hhh]jO)}(h amdgpu_boh]h amdgpu_bo}(hj5hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj5ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj5modnameN classnameNjj)}j]j)}jjd5sbc.amdgpu_bo_pinasbuh1hhjz5ubj8)}(h h]h }(hj5hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjz5ubj)}(hj4h]h*}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjz5ubjO)}(hboh]hbo}(hj5hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjz5ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjv5ubjp)}(h u32 domainh](h)}(hhh]jO)}(hu32h]hu32}(hj5hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj5ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj5modnameN classnameNjj)}j]j5c.amdgpu_bo_pinasbuh1hhj5ubj8)}(h h]h }(hj6hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj5ubjO)}(hdomainh]hdomain}(hj6hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj5ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjv5ubeh}(h]h ]h"]h$]h&]jgjhuh1jihj=5hhhjO5hMubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhj95hhhjO5hMubah}(h]j45ah ](jjeh"]h$]h&]j j )j huh1jhjO5hMhj65hhubj )}(hhh]h)}(h(pin an :c:type:`amdgpu_bo` buffer objecth](hpin an }(hjI6hhhNhNubh)}(h:c:type:`amdgpu_bo`h]j)}(hjS6h]h amdgpu_bo}(hjU6hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjQ6ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjj)}j]j5c.amdgpu_bo_pinasbj amdgpu_bouh1hhj6hKThjI6ubh buffer object}(hjI6hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjF6hhubah}(h]h ]h"]h$]h&]uh1j hj65hhhjO5hMubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRj6jSj6jTjUjVuh1jhhhjhNhNubjX)}(hX7**Parameters** ``struct amdgpu_bo *bo`` :c:type:`amdgpu_bo` buffer object to be pinned ``u32 domain`` domain to be pinned to **Description** Pins the buffer object according to requested domain. If the memory is unbound gart memory, binds the pages into gart table. Adjusts pin_count and pin_size accordingly. Pinning means to lock pages in memory along with keeping them at a fixed offset. It is required when a buffer can not be moved, for example, when a display buffer is being scanned out. **Return** 0 for success or a negative error code on failure.h](h)}(h**Parameters**h]jJ)}(hj6h]h Parameters}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj6ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj6ubh)}(hhh](h)}(hH``struct amdgpu_bo *bo`` :c:type:`amdgpu_bo` buffer object to be pinned h](j)}(h``struct amdgpu_bo *bo``h]j)}(hj6h]hstruct amdgpu_bo *bo}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj6ubj)}(hhh]h)}(h.:c:type:`amdgpu_bo` buffer object to be pinnedh](h)}(h:c:type:`amdgpu_bo`h]j)}(hj6h]h amdgpu_bo}(hj6hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj amdgpu_bouh1hhj6hMhj6ubh buffer object to be pinned}(hj6hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj6hMhj6ubah}(h]h ]h"]h$]h&]uh1jhj6ubeh}(h]h ]h"]h$]h&]uh1hhj6hMhj6ubh)}(h&``u32 domain`` domain to be pinned to h](j)}(h``u32 domain``h]j)}(hj 7h]h u32 domain}(hj 7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj7ubj)}(hhh]h)}(hdomain to be pinned toh]hdomain to be pinned to}(hj#7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj7hMhj 7ubah}(h]h ]h"]h$]h&]uh1jhj7ubeh}(h]h ]h"]h$]h&]uh1hhj7hMhj6ubeh}(h]h ]h"]h$]h&]uh1hhj6ubh)}(h**Description**h]jJ)}(hjE7h]h Description}(hjG7hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjC7ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj6ubh)}(hPins the buffer object according to requested domain. If the memory is unbound gart memory, binds the pages into gart table. Adjusts pin_count and pin_size accordingly.h]hPins the buffer object according to requested domain. If the memory is unbound gart memory, binds the pages into gart table. Adjusts pin_count and pin_size accordingly.}(hj[7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj6ubh)}(hPinning means to lock pages in memory along with keeping them at a fixed offset. It is required when a buffer can not be moved, for example, when a display buffer is being scanned out.h]hPinning means to lock pages in memory along with keeping them at a fixed offset. It is required when a buffer can not be moved, for example, when a display buffer is being scanned out.}(hjj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj6ubh)}(h **Return**h]jJ)}(hj{7h]hReturn}(hj}7hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjy7ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj6ubh)}(h20 for success or a negative error code on failure.h]h20 for success or a negative error code on failure.}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj6ubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jamdgpu_bo_unpin (C function)c.amdgpu_bo_unpinhNtauh1jhjhhhNhNubj)}(hhh](j)}(h+void amdgpu_bo_unpin (struct amdgpu_bo *bo)h]j )}(h*void amdgpu_bo_unpin(struct amdgpu_bo *bo)h](j&)}(hvoidh]hvoid}(hj7hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hj7hhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMubj8)}(h h]h }(hj7hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj7hhhj7hMubjI)}(hamdgpu_bo_unpinh]jO)}(hamdgpu_bo_unpinh]hamdgpu_bo_unpin}(hj7hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj7ubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhj7hhhj7hMubjj)}(h(struct amdgpu_bo *bo)h]jp)}(hstruct amdgpu_bo *boh](jv)}(hjyh]hstruct}(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj7ubj8)}(h h]h }(hj 8hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj7ubh)}(hhh]jO)}(h amdgpu_boh]h amdgpu_bo}(hj8hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj8ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj8modnameN classnameNjj)}j]j)}jj7sbc.amdgpu_bo_unpinasbuh1hhj7ubj8)}(h h]h }(hj;8hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj7ubj)}(hj4h]h*}(hjI8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7ubjO)}(hboh]hbo}(hjV8hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj7ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj7ubah}(h]h ]h"]h$]h&]jgjhuh1jihj7hhhj7hMubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhj7hhhj7hMubah}(h]j7ah ](jjeh"]h$]h&]j j )j huh1jhj7hMhj7hhubj )}(hhh]h)}(h*unpin an :c:type:`amdgpu_bo` buffer objecth](h unpin an }(hj8hhhNhNubh)}(h:c:type:`amdgpu_bo`h]j)}(hj8h]h amdgpu_bo}(hj8hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjj)}j]j78c.amdgpu_bo_unpinasbj amdgpu_bouh1hhj6hKThj8ubh buffer object}(hj8hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj}8hhubah}(h]h ]h"]h$]h&]uh1j hj7hhhj7hMubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRj8jSj8jTjUjVuh1jhhhjhNhNubjX)}(hX**Parameters** ``struct amdgpu_bo *bo`` :c:type:`amdgpu_bo` buffer object to be unpinned **Description** Decreases the pin_count, and clears the flags if pin_count reaches 0. Changes placement and pin size accordingly. **Return** 0 for success or a negative error code on failure.h](h)}(h**Parameters**h]jJ)}(hj8h]h Parameters}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj8ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj8ubh)}(hhh]h)}(hJ``struct amdgpu_bo *bo`` :c:type:`amdgpu_bo` buffer object to be unpinned h](j)}(h``struct amdgpu_bo *bo``h]j)}(hj8h]hstruct amdgpu_bo *bo}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj8ubj)}(hhh]h)}(h0:c:type:`amdgpu_bo` buffer object to be unpinnedh](h)}(h:c:type:`amdgpu_bo`h]j)}(hj9h]h amdgpu_bo}(hj 9hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj amdgpu_bouh1hhj8hMhj9ubh buffer object to be unpinned}(hj9hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj8hMhj8ubah}(h]h ]h"]h$]h&]uh1jhj8ubeh}(h]h ]h"]h$]h&]uh1hhj8hMhj8ubah}(h]h ]h"]h$]h&]uh1hhj8ubh)}(h**Description**h]jJ)}(hjC9h]h Description}(hjE9hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjA9ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj8ubh)}(hqDecreases the pin_count, and clears the flags if pin_count reaches 0. Changes placement and pin size accordingly.h]hqDecreases the pin_count, and clears the flags if pin_count reaches 0. Changes placement and pin size accordingly.}(hjY9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj8ubh)}(h **Return**h]jJ)}(hjj9h]hReturn}(hjl9hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjh9ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj8ubh)}(h20 for success or a negative error code on failure.h]h20 for success or a negative error code on failure.}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj8ubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jamdgpu_bo_init (C function)c.amdgpu_bo_inithNtauh1jhjhhhNhNubj)}(hhh](j)}(h/int amdgpu_bo_init (struct amdgpu_device *adev)h]j )}(h.int amdgpu_bo_init(struct amdgpu_device *adev)h](j&)}(hinth]hint}(hj9hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hj9hhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM!ubj8)}(h h]h }(hj9hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj9hhhj9hM!ubjI)}(hamdgpu_bo_inith]jO)}(hamdgpu_bo_inith]hamdgpu_bo_init}(hj9hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj9ubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhj9hhhj9hM!ubjj)}(h(struct amdgpu_device *adev)h]jp)}(hstruct amdgpu_device *adevh](jv)}(hjyh]hstruct}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj9ubj8)}(h h]h }(hj9hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj9ubh)}(hhh]jO)}(h amdgpu_deviceh]h amdgpu_device}(hj :hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj:ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj :modnameN classnameNjj)}j]j)}jj9sbc.amdgpu_bo_initasbuh1hhj9ubj8)}(h h]h }(hj*:hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj9ubj)}(hj4h]h*}(hj8:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9ubjO)}(hadevh]hadev}(hjE:hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj9ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj9ubah}(h]h ]h"]h$]h&]jgjhuh1jihj9hhhj9hM!ubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhj9hhhj9hM!ubah}(h]j9ah ](jjeh"]h$]h&]j j )j huh1jhj9hM!hj9hhubj )}(hhh]h)}(hinitialize memory managerh]hinitialize memory manager}(hjo:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM!hjl:hhubah}(h]h ]h"]h$]h&]uh1j hj9hhhj9hM!ubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRj:jSj:jTjUjVuh1jhhhjhNhNubjX)}(h**Parameters** ``struct amdgpu_device *adev`` amdgpu device object **Description** Calls amdgpu_ttm_init() to initialize amdgpu memory manager. **Return** 0 for success or a negative error code on failure.h](h)}(h**Parameters**h]jJ)}(hj:h]h Parameters}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj:ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM%hj:ubh)}(hhh]h)}(h4``struct amdgpu_device *adev`` amdgpu device object h](j)}(h``struct amdgpu_device *adev``h]j)}(hj:h]hstruct amdgpu_device *adev}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM"hj:ubj)}(hhh]h)}(hamdgpu device objecth]hamdgpu device object}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:hM"hj:ubah}(h]h ]h"]h$]h&]uh1jhj:ubeh}(h]h ]h"]h$]h&]uh1hhj:hM"hj:ubah}(h]h ]h"]h$]h&]uh1hhj:ubh)}(h**Description**h]jJ)}(hj:h]h Description}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj:ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM$hj:ubh)}(hh]h Parameters}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj>ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM]hj=ubh)}(hhh](h)}(h;``struct amdgpu_bo *bo`` :c:type:`amdgpu_bo` buffer object h](j)}(h``struct amdgpu_bo *bo``h]j)}(hj!>h]hstruct amdgpu_bo *bo}(hj#>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMZhj>ubj)}(hhh]h)}(h!:c:type:`amdgpu_bo` buffer objecth](h)}(h:c:type:`amdgpu_bo`h]j)}(hj@>h]h amdgpu_bo}(hjB>hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj>>ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj amdgpu_bouh1hhj6>hMZhj:>ubh buffer object}(hj:>hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj6>hMZhj7>ubah}(h]h ]h"]h$]h&]uh1jhj>ubeh}(h]h ]h"]h$]h&]uh1hhj6>hMZhj>ubh)}(h``u64 tiling_flags`` new flags h](j)}(h``u64 tiling_flags``h]j)}(hjy>h]hu64 tiling_flags}(hj{>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjw>ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM[hjs>ubj)}(hhh]h)}(h new flagsh]h new flags}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>hM[hj>ubah}(h]h ]h"]h$]h&]uh1jhjs>ubeh}(h]h ]h"]h$]h&]uh1hhj>hM[hj>ubeh}(h]h ]h"]h$]h&]uh1hhj=ubh)}(h**Description**h]jJ)}(hj>h]h Description}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj>ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM]hj=ubh)}(h{Sets buffer object's tiling flags with the new one. Used by GEM ioctl or kernel driver to set the tiling flags on a buffer.h]h}Sets buffer object’s tiling flags with the new one. Used by GEM ioctl or kernel driver to set the tiling flags on a buffer.}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM\hj=ubh)}(h **Return**h]jJ)}(hj>h]hReturn}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj>ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM_hj=ubh)}(h20 for success or a negative error code on failure.h]h20 for success or a negative error code on failure.}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM`hj=ubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'amdgpu_bo_get_tiling_flags (C function)c.amdgpu_bo_get_tiling_flagshNtauh1jhjhhhNhNubj)}(hhh](j)}(hIvoid amdgpu_bo_get_tiling_flags (struct amdgpu_bo *bo, u64 *tiling_flags)h]j )}(hHvoid amdgpu_bo_get_tiling_flags(struct amdgpu_bo *bo, u64 *tiling_flags)h](j&)}(hvoidh]hvoid}(hj ?hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hj?hhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMsubj8)}(h h]h }(hj/?hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj?hhhj.?hMsubjI)}(hamdgpu_bo_get_tiling_flagsh]jO)}(hamdgpu_bo_get_tiling_flagsh]hamdgpu_bo_get_tiling_flags}(hjA?hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj=?ubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhj?hhhj.?hMsubjj)}(h)(struct amdgpu_bo *bo, u64 *tiling_flags)h](jp)}(hstruct amdgpu_bo *boh](jv)}(hjyh]hstruct}(hj]?hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjY?ubj8)}(h h]h }(hjj?hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjY?ubh)}(hhh]jO)}(h amdgpu_boh]h amdgpu_bo}(hj{?hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjx?ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj}?modnameN classnameNjj)}j]j)}jjC?sbc.amdgpu_bo_get_tiling_flagsasbuh1hhjY?ubj8)}(h h]h }(hj?hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjY?ubj)}(hj4h]h*}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjY?ubjO)}(hboh]hbo}(hj?hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjY?ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjU?ubjp)}(hu64 *tiling_flagsh](h)}(hhh]jO)}(hu64h]hu64}(hj?hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj?ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj?modnameN classnameNjj)}j]j?c.amdgpu_bo_get_tiling_flagsasbuh1hhj?ubj8)}(h h]h }(hj?hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj?ubj)}(hj4h]h*}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?ubjO)}(h tiling_flagsh]h tiling_flags}(hj @hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj?ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjU?ubeh}(h]h ]h"]h$]h&]jgjhuh1jihj?hhhj.?hMsubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhj?hhhj.?hMsubah}(h]j?ah ](jjeh"]h$]h&]j j )j huh1jhj.?hMshj?hhubj )}(hhh]h)}(hget tiling flagsh]hget tiling flags}(hj5@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMshj2@hhubah}(h]h ]h"]h$]h&]uh1j hj?hhhj.?hMsubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjM@jSjM@jTjUjVuh1jhhhjhNhNubjX)}(h**Parameters** ``struct amdgpu_bo *bo`` :c:type:`amdgpu_bo` buffer object ``u64 *tiling_flags`` returned flags **Description** Gets buffer object's tiling flags. Used by GEM ioctl or kernel driver to set the tiling flags on a buffer.h](h)}(h**Parameters**h]jJ)}(hjW@h]h Parameters}(hjY@hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjU@ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMwhjQ@ubh)}(hhh](h)}(h;``struct amdgpu_bo *bo`` :c:type:`amdgpu_bo` buffer object h](j)}(h``struct amdgpu_bo *bo``h]j)}(hjv@h]hstruct amdgpu_bo *bo}(hjx@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjt@ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMthjp@ubj)}(hhh]h)}(h!:c:type:`amdgpu_bo` buffer objecth](h)}(h:c:type:`amdgpu_bo`h]j)}(hj@h]h amdgpu_bo}(hj@hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj@ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj amdgpu_bouh1hhj@hMthj@ubh buffer object}(hj@hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj@hMthj@ubah}(h]h ]h"]h$]h&]uh1jhjp@ubeh}(h]h ]h"]h$]h&]uh1hhj@hMthjm@ubh)}(h%``u64 *tiling_flags`` returned flags h](j)}(h``u64 *tiling_flags``h]j)}(hj@h]hu64 *tiling_flags}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMuhj@ubj)}(hhh]h)}(hreturned flagsh]hreturned flags}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj@hMuhj@ubah}(h]h ]h"]h$]h&]uh1jhj@ubeh}(h]h ]h"]h$]h&]uh1hhj@hMuhjm@ubeh}(h]h ]h"]h$]h&]uh1hhjQ@ubh)}(h**Description**h]jJ)}(hj Ah]h Description}(hj AhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjAubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMwhjQ@ubh)}(hjGets buffer object's tiling flags. Used by GEM ioctl or kernel driver to set the tiling flags on a buffer.h]hlGets buffer object’s tiling flags. Used by GEM ioctl or kernel driver to set the tiling flags on a buffer.}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMvhjQ@ubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j#amdgpu_bo_set_metadata (C function)c.amdgpu_bo_set_metadatahNtauh1jhjhhhNhNubj)}(hhh](j)}(hdint amdgpu_bo_set_metadata (struct amdgpu_bo *bo, void *metadata, u32 metadata_size, uint64_t flags)h]j )}(hcint amdgpu_bo_set_metadata(struct amdgpu_bo *bo, void *metadata, u32 metadata_size, uint64_t flags)h](j&)}(hinth]hint}(hjNAhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjJAhhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMubj8)}(h h]h }(hj]AhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjJAhhhj\AhMubjI)}(hamdgpu_bo_set_metadatah]jO)}(hamdgpu_bo_set_metadatah]hamdgpu_bo_set_metadata}(hjoAhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjkAubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjJAhhhj\AhMubjj)}(hI(struct amdgpu_bo *bo, void *metadata, u32 metadata_size, uint64_t flags)h](jp)}(hstruct amdgpu_bo *boh](jv)}(hjyh]hstruct}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjAubj8)}(h h]h }(hjAhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjAubh)}(hhh]jO)}(h amdgpu_boh]h amdgpu_bo}(hjAhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjAubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjAmodnameN classnameNjj)}j]j)}jjqAsbc.amdgpu_bo_set_metadataasbuh1hhjAubj8)}(h h]h }(hjAhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjAubj)}(hj4h]h*}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubjO)}(hboh]hbo}(hjAhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjAubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjAubjp)}(hvoid *metadatah](j&)}(hvoidh]hvoid}(hjAhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjAubj8)}(h h]h }(hj BhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjAubj)}(hj4h]h*}(hjBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubjO)}(hmetadatah]hmetadata}(hj&BhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjAubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjAubjp)}(hu32 metadata_sizeh](h)}(hhh]jO)}(hu32h]hu32}(hjBBhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj?Bubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjDBmodnameN classnameNjj)}j]jAc.amdgpu_bo_set_metadataasbuh1hhj;Bubj8)}(h h]h }(hj`BhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj;BubjO)}(h metadata_sizeh]h metadata_size}(hjnBhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj;Bubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjAubjp)}(huint64_t flagsh](h)}(hhh]jO)}(huint64_th]huint64_t}(hjBhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjBubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjBmodnameN classnameNjj)}j]jAc.amdgpu_bo_set_metadataasbuh1hhjBubj8)}(h h]h }(hjBhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjBubjO)}(hflagsh]hflags}(hjBhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjBubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjAubeh}(h]h ]h"]h$]h&]jgjhuh1jihjJAhhhj\AhMubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjFAhhhj\AhMubah}(h]jAAah ](jjeh"]h$]h&]j j )j huh1jhj\AhMhjCAhhubj )}(hhh]h)}(h set metadatah]h set metadata}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjBhhubah}(h]h ]h"]h$]h&]uh1j hjCAhhhj\AhMubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjBjSjBjTjUjVuh1jhhhjhNhNubjX)}(hXj**Parameters** ``struct amdgpu_bo *bo`` :c:type:`amdgpu_bo` buffer object ``void *metadata`` new metadata ``u32 metadata_size`` size of the new metadata ``uint64_t flags`` flags of the new metadata **Description** Sets buffer object's metadata, its size and flags. Used via GEM ioctl. **Return** 0 for success or a negative error code on failure.h](h)}(h**Parameters**h]jJ)}(hjCh]h Parameters}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjCubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjBubh)}(hhh](h)}(h;``struct amdgpu_bo *bo`` :c:type:`amdgpu_bo` buffer object h](j)}(h``struct amdgpu_bo *bo``h]j)}(hj!Ch]hstruct amdgpu_bo *bo}(hj#ChhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjCubj)}(hhh]h)}(h!:c:type:`amdgpu_bo` buffer objecth](h)}(h:c:type:`amdgpu_bo`h]j)}(hj@Ch]h amdgpu_bo}(hjBChhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj>Cubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj amdgpu_bouh1hhj6ChMhj:Cubh buffer object}(hj:ChhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj6ChMhj7Cubah}(h]h ]h"]h$]h&]uh1jhjCubeh}(h]h ]h"]h$]h&]uh1hhj6ChMhjCubh)}(h ``void *metadata`` new metadata h](j)}(h``void *metadata``h]j)}(hjyCh]hvoid *metadata}(hj{ChhhNhNubah}(h]h ]h"]h$]h&]uh1jhjwCubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjsCubj)}(hhh]h)}(h new metadatah]h new metadata}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhjChMhjCubah}(h]h ]h"]h$]h&]uh1jhjsCubeh}(h]h ]h"]h$]h&]uh1hhjChMhjCubh)}(h/``u32 metadata_size`` size of the new metadata h](j)}(h``u32 metadata_size``h]j)}(hjCh]hu32 metadata_size}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjCubj)}(hhh]h)}(hsize of the new metadatah]hsize of the new metadata}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhjChMhjCubah}(h]h ]h"]h$]h&]uh1jhjCubeh}(h]h ]h"]h$]h&]uh1hhjChMhjCubh)}(h-``uint64_t flags`` flags of the new metadata h](j)}(h``uint64_t flags``h]j)}(hjCh]huint64_t flags}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjCubj)}(hhh]h)}(hflags of the new metadatah]hflags of the new metadata}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjDhMhjDubah}(h]h ]h"]h$]h&]uh1jhjCubeh}(h]h ]h"]h$]h&]uh1hhjDhMhjCubeh}(h]h ]h"]h$]h&]uh1hhjBubh)}(h**Description**h]jJ)}(hj&Dh]h Description}(hj(DhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj$Dubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjBubh)}(hFSets buffer object's metadata, its size and flags. Used via GEM ioctl.h]hHSets buffer object’s metadata, its size and flags. Used via GEM ioctl.}(hjhjMubh)}(hhh]h)}(h<``struct ttm_buffer_object *bo`` pointer to a buffer object h](j)}(h ``struct ttm_buffer_object *bo``h]j)}(hjMh]hstruct ttm_buffer_object *bo}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM;hjMubj)}(hhh]h)}(hpointer to a buffer objecth]hpointer to a buffer object}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjMhM;hjMubah}(h]h ]h"]h$]h&]uh1jhjMubeh}(h]h ]h"]h$]h&]uh1hhjMhM;hjMubah}(h]h ]h"]h$]h&]uh1hhjMubh)}(h**Description**h]jJ)}(hjMh]h Description}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjMubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM=hjMubh)}(hNotifies the driver we are taking a fault on this BO and have reserved it, also performs bookkeeping. TTM driver callback for dealing with vm faults.h]hNotifies the driver we are taking a fault on this BO and have reserved it, also performs bookkeeping. TTM driver callback for dealing with vm faults.}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM<hjMubh)}(h **Return**h]jJ)}(hj"Nh]hReturn}(hj$NhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj Nubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM@hjMubh)}(h20 for success or a negative error code on failure.h]h20 for success or a negative error code on failure.}(hj8NhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMAhjMubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jamdgpu_bo_fence (C function)c.amdgpu_bo_fencehNtauh1jhjhhhNhNubj)}(hhh](j)}(hQvoid amdgpu_bo_fence (struct amdgpu_bo *bo, struct dma_fence *fence, bool shared)h]j )}(hPvoid amdgpu_bo_fence(struct amdgpu_bo *bo, struct dma_fence *fence, bool shared)h](j&)}(hvoidh]hvoid}(hjgNhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjcNhhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMmubj8)}(h h]h }(hjvNhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjcNhhhjuNhMmubjI)}(hamdgpu_bo_fenceh]jO)}(hamdgpu_bo_fenceh]hamdgpu_bo_fence}(hjNhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjNubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjcNhhhjuNhMmubjj)}(h<(struct amdgpu_bo *bo, struct dma_fence *fence, bool shared)h](jp)}(hstruct amdgpu_bo *boh](jv)}(hjyh]hstruct}(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjNubj8)}(h h]h }(hjNhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjNubh)}(hhh]jO)}(h amdgpu_boh]h amdgpu_bo}(hjNhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjNubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjNmodnameN classnameNjj)}j]j)}jjNsbc.amdgpu_bo_fenceasbuh1hhjNubj8)}(h h]h }(hjNhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjNubj)}(hj4h]h*}(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjNubjO)}(hboh]hbo}(hjNhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjNubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjNubjp)}(hstruct dma_fence *fenceh](jv)}(hjyh]hstruct}(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjOubj8)}(h h]h }(hj#OhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjOubh)}(hhh]jO)}(h dma_fenceh]h dma_fence}(hj4OhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj1Oubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj6OmodnameN classnameNjj)}j]jNc.amdgpu_bo_fenceasbuh1hhjOubj8)}(h h]h }(hjROhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjOubj)}(hj4h]h*}(hj`OhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjOubjO)}(hfenceh]hfence}(hjmOhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjOubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjNubjp)}(h bool sharedh](j&)}(hj)h]hbool}(hjOhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjOubj8)}(h h]h }(hjOhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjOubjO)}(hsharedh]hshared}(hjOhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjOubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjNubeh}(h]h ]h"]h$]h&]jgjhuh1jihjcNhhhjuNhMmubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhj_NhhhjuNhMmubah}(h]jZNah ](jjeh"]h$]h&]j j )j huh1jhjuNhMmhj\Nhhubj )}(hhh]h)}(hadd fence to buffer objecth]hadd fence to buffer object}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMmhjOhhubah}(h]h ]h"]h$]h&]uh1j hj\NhhhjuNhMmubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjOjSjOjTjUjVuh1jhhhjhNhNubjX)}(h**Parameters** ``struct amdgpu_bo *bo`` buffer object in question ``struct dma_fence *fence`` fence to add ``bool shared`` true if fence should be added sharedh](h)}(h**Parameters**h]jJ)}(hjOh]h Parameters}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjOubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMqhjOubh)}(hhh](h)}(h3``struct amdgpu_bo *bo`` buffer object in question h](j)}(h``struct amdgpu_bo *bo``h]j)}(hj Ph]hstruct amdgpu_bo *bo}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj Pubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMohjPubj)}(hhh]h)}(hbuffer object in questionh]hbuffer object in question}(hj%PhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!PhMohj"Pubah}(h]h ]h"]h$]h&]uh1jhjPubeh}(h]h ]h"]h$]h&]uh1hhj!PhMohjPubh)}(h)``struct dma_fence *fence`` fence to add h](j)}(h``struct dma_fence *fence``h]j)}(hjEPh]hstruct dma_fence *fence}(hjGPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCPubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMphj?Pubj)}(hhh]h)}(h fence to addh]h fence to add}(hj^PhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZPhMphj[Pubah}(h]h ]h"]h$]h&]uh1jhj?Pubeh}(h]h ]h"]h$]h&]uh1hhjZPhMphjPubh)}(h4``bool shared`` true if fence should be added sharedh](j)}(h``bool shared``h]j)}(hj~Ph]h bool shared}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|Pubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMrhjxPubj)}(hhh]h)}(h$true if fence should be added sharedh]h$true if fence should be added shared}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMqhjPubah}(h]h ]h"]h$]h&]uh1jhjxPubeh}(h]h ]h"]h$]h&]uh1hhjPhMrhjPubeh}(h]h ]h"]h$]h&]uh1hhjOubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j%amdgpu_bo_sync_wait_resv (C function)c.amdgpu_bo_sync_wait_resvhNtauh1jhjhhhNhNubj)}(hhh](j)}(hint amdgpu_bo_sync_wait_resv (struct amdgpu_device *adev, struct dma_resv *resv, enum amdgpu_sync_mode sync_mode, void *owner, bool intr)h]j )}(hint amdgpu_bo_sync_wait_resv(struct amdgpu_device *adev, struct dma_resv *resv, enum amdgpu_sync_mode sync_mode, void *owner, bool intr)h](j&)}(hinth]hint}(hjPhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjPhhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMubj8)}(h h]h }(hjPhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjPhhhjPhMubjI)}(hamdgpu_bo_sync_wait_resvh]jO)}(hamdgpu_bo_sync_wait_resvh]hamdgpu_bo_sync_wait_resv}(hjPhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjPubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjPhhhjPhMubjj)}(hl(struct amdgpu_device *adev, struct dma_resv *resv, enum amdgpu_sync_mode sync_mode, void *owner, bool intr)h](jp)}(hstruct amdgpu_device *adevh](jv)}(hjyh]hstruct}(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjQubj8)}(h h]h }(hj"QhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjQubh)}(hhh]jO)}(h amdgpu_deviceh]h amdgpu_device}(hj3QhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj0Qubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj5QmodnameN classnameNjj)}j]j)}jjPsbc.amdgpu_bo_sync_wait_resvasbuh1hhjQubj8)}(h h]h }(hjSQhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjQubj)}(hj4h]h*}(hjaQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQubjO)}(hadevh]hadev}(hjnQhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjQubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj Qubjp)}(hstruct dma_resv *resvh](jv)}(hjyh]hstruct}(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjQubj8)}(h h]h }(hjQhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjQubh)}(hhh]jO)}(hdma_resvh]hdma_resv}(hjQhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjQubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjQmodnameN classnameNjj)}j]jOQc.amdgpu_bo_sync_wait_resvasbuh1hhjQubj8)}(h h]h }(hjQhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjQubj)}(hj4h]h*}(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQubjO)}(hresvh]hresv}(hjQhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjQubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj Qubjp)}(henum amdgpu_sync_mode sync_modeh](jv)}(henumh]henum}(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjQubj8)}(h h]h }(hjRhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjQubh)}(hhh]jO)}(hamdgpu_sync_modeh]hamdgpu_sync_mode}(hjRhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjRubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjRmodnameN classnameNjj)}j]jOQc.amdgpu_bo_sync_wait_resvasbuh1hhjQubj8)}(h h]h }(hj4RhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjQubjO)}(h sync_modeh]h sync_mode}(hjBRhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjQubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj Qubjp)}(h void *ownerh](j&)}(hvoidh]hvoid}(hj[RhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjWRubj8)}(h h]h }(hjiRhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjWRubj)}(hj4h]h*}(hjwRhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWRubjO)}(hownerh]howner}(hjRhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjWRubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj Qubjp)}(h bool intrh](j&)}(hj)h]hbool}(hjRhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjRubj8)}(h h]h }(hjRhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjRubjO)}(hintrh]hintr}(hjRhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjRubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj Qubeh}(h]h ]h"]h$]h&]jgjhuh1jihjPhhhjPhMubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjPhhhjPhMubah}(h]jPah ](jjeh"]h$]h&]j j )j huh1jhjPhMhjPhhubj )}(hhh]h)}(hWait for BO reservation fencesh]hWait for BO reservation fences}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjRhhubah}(h]h ]h"]h$]h&]uh1j hjPhhhjPhMubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjRjSjRjTjUjVuh1jhhhjhNhNubjX)}(hX**Parameters** ``struct amdgpu_device *adev`` amdgpu device pointer ``struct dma_resv *resv`` reservation object to sync to ``enum amdgpu_sync_mode sync_mode`` synchronization mode ``void *owner`` fence owner ``bool intr`` Whether the wait is interruptible **Description** Extract the fences from the reservation object and waits for them to finish. **Return** 0 on success, errno otherwise.h](h)}(h**Parameters**h]jJ)}(hjSh]h Parameters}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjSubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjRubh)}(hhh](h)}(h5``struct amdgpu_device *adev`` amdgpu device pointer h](j)}(h``struct amdgpu_device *adev``h]j)}(hj#Sh]hstruct amdgpu_device *adev}(hj%ShhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!Subah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjSubj)}(hhh]h)}(hamdgpu device pointerh]hamdgpu device pointer}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:VhMhj;Vubah}(h]h ]h"]h$]h&]uh1jhjVubeh}(h]h ]h"]h$]h&]uh1hhj:VhMhjVubh)}(h``void *owner`` fence owner h](j)}(h``void *owner``h]j)}(hj^Vh]h void *owner}(hj`VhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj\Vubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjXVubj)}(hhh]h)}(h fence ownerh]h fence owner}(hjwVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjsVhMhjtVubah}(h]h ]h"]h$]h&]uh1jhjXVubeh}(h]h ]h"]h$]h&]uh1hhjsVhMhjVubh)}(h0``bool intr`` Whether the wait is interruptible h](j)}(h ``bool intr``h]j)}(hjVh]h bool intr}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjVubj)}(hhh]h)}(h!Whether the wait is interruptibleh]h!Whether the wait is interruptible}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjVhMhjVubah}(h]h ]h"]h$]h&]uh1jhjVubeh}(h]h ]h"]h$]h&]uh1hhjVhMhjVubeh}(h]h ]h"]h$]h&]uh1hhjVubh)}(h**Description**h]jJ)}(hjVh]h Description}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjVubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjVubh)}(h#Wrapper to wait for fences in a BO.h]h#Wrapper to wait for fences in a BO.}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjVubh)}(h **Return**h]jJ)}(hjVh]hReturn}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjVubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjVubh)}(h0 on success, errno otherwise.h]h0 on success, errno otherwise.}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjVubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j!amdgpu_bo_gpu_offset (C function)c.amdgpu_bo_gpu_offsethNtauh1jhjhhhNhNubj)}(hhh](j)}(h/u64 amdgpu_bo_gpu_offset (struct amdgpu_bo *bo)h]j )}(h.u64 amdgpu_bo_gpu_offset(struct amdgpu_bo *bo)h](h)}(hhh]jO)}(hu64h]hu64}(hjAWhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj>Wubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjCWmodnameN classnameNjj)}j]j)}jamdgpu_bo_gpu_offsetsbc.amdgpu_bo_gpu_offsetasbuh1hhj:Whhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMubj8)}(h h]h }(hjcWhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj:WhhhjbWhMubjI)}(hamdgpu_bo_gpu_offseth]jO)}(hj_Wh]hamdgpu_bo_gpu_offset}(hjuWhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjqWubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhj:WhhhjbWhMubjj)}(h(struct amdgpu_bo *bo)h]jp)}(hstruct amdgpu_bo *boh](jv)}(hjyh]hstruct}(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjWubj8)}(h h]h }(hjWhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjWubh)}(hhh]jO)}(h amdgpu_boh]h amdgpu_bo}(hjWhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjWubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjWmodnameN classnameNjj)}j]j]Wc.amdgpu_bo_gpu_offsetasbuh1hhjWubj8)}(h h]h }(hjWhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjWubj)}(hj4h]h*}(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWubjO)}(hboh]hbo}(hjWhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjWubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjWubah}(h]h ]h"]h$]h&]jgjhuh1jihj:WhhhjbWhMubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhj6WhhhjbWhMubah}(h]j1Wah ](jjeh"]h$]h&]j j )j huh1jhjbWhMhj3Whhubj )}(hhh]h)}(hreturn GPU offset of boh]hreturn GPU offset of bo}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjXhhubah}(h]h ]h"]h$]h&]uh1j hj3WhhhjbWhMubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRj)XjSj)XjTjUjVuh1jhhhjhNhNubjX)}(hX**Parameters** ``struct amdgpu_bo *bo`` amdgpu object for which we query the offset **Note** object should either be pinned or reserved when calling this function, it might be useful to add check for this for debugging. **Return** current GPU offset of the object.h](h)}(h**Parameters**h]jJ)}(hj3Xh]h Parameters}(hj5XhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj1Xubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj-Xubh)}(hhh]h)}(hE``struct amdgpu_bo *bo`` amdgpu object for which we query the offset h](j)}(h``struct amdgpu_bo *bo``h]j)}(hjRXh]hstruct amdgpu_bo *bo}(hjTXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPXubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjLXubj)}(hhh]h)}(h+amdgpu object for which we query the offseth]h+amdgpu object for which we query the offset}(hjkXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjgXhMhjhXubah}(h]h ]h"]h$]h&]uh1jhjLXubeh}(h]h ]h"]h$]h&]uh1hhjgXhMhjIXubah}(h]h ]h"]h$]h&]uh1hhj-Xubh)}(h**Note**h]jJ)}(hjXh]hNote}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjXubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj-Xubh)}(h~object should either be pinned or reserved when calling this function, it might be useful to add check for this for debugging.h]h~object should either be pinned or reserved when calling this function, it might be useful to add check for this for debugging.}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj-Xubh)}(h **Return**h]jJ)}(hjXh]hReturn}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjXubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj-Xubh)}(h!current GPU offset of the object.h]h!current GPU offset of the object.}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj-Xubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j#amdgpu_bo_fb_aper_addr (C function)c.amdgpu_bo_fb_aper_addrhNtauh1jhjhhhNhNubj)}(hhh](j)}(h1u64 amdgpu_bo_fb_aper_addr (struct amdgpu_bo *bo)h]j )}(h0u64 amdgpu_bo_fb_aper_addr(struct amdgpu_bo *bo)h](h)}(hhh]jO)}(hu64h]hu64}(hjXhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjXubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjXmodnameN classnameNjj)}j]j)}jamdgpu_bo_fb_aper_addrsbc.amdgpu_bo_fb_aper_addrasbuh1hhjXhhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMubj8)}(h h]h }(hjYhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjXhhhjYhMubjI)}(hamdgpu_bo_fb_aper_addrh]jO)}(hjYh]hamdgpu_bo_fb_aper_addr}(hj0YhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj,Yubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjXhhhjYhMubjj)}(h(struct amdgpu_bo *bo)h]jp)}(hstruct amdgpu_bo *boh](jv)}(hjyh]hstruct}(hjKYhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjGYubj8)}(h h]h }(hjXYhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjGYubh)}(hhh]jO)}(h amdgpu_boh]h amdgpu_bo}(hjiYhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjfYubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjkYmodnameN classnameNjj)}j]jYc.amdgpu_bo_fb_aper_addrasbuh1hhjGYubj8)}(h h]h }(hjYhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjGYubj)}(hj4h]h*}(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGYubjO)}(hboh]hbo}(hjYhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjGYubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjCYubah}(h]h ]h"]h$]h&]jgjhuh1jihjXhhhjYhMubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjXhhhjYhMubah}(h]jXah ](jjeh"]h$]h&]j j )j huh1jhjYhMhjXhhubj )}(hhh]h)}(h,return FB aperture GPU offset of the VRAM boh]h,return FB aperture GPU offset of the VRAM bo}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjYhhubah}(h]h ]h"]h$]h&]uh1j hjXhhhjYhMubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjYjSjYjTjUjVuh1jhhhjhNhNubjX)}(h**Parameters** ``struct amdgpu_bo *bo`` amdgpu VRAM buffer object for which we query the offset **Return** current FB aperture GPU offset of the object.h](h)}(h**Parameters**h]jJ)}(hjYh]h Parameters}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjYubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjYubh)}(hhh]h)}(hQ``struct amdgpu_bo *bo`` amdgpu VRAM buffer object for which we query the offset h](j)}(h``struct amdgpu_bo *bo``h]j)}(hj Zh]hstruct amdgpu_bo *bo}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj Zubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjZubj)}(hhh]h)}(h7amdgpu VRAM buffer object for which we query the offseth]h7amdgpu VRAM buffer object for which we query the offset}(hj&ZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj"ZhMhj#Zubah}(h]h ]h"]h$]h&]uh1jhjZubeh}(h]h ]h"]h$]h&]uh1hhj"ZhMhjZubah}(h]h ]h"]h$]h&]uh1hhjYubh)}(h **Return**h]jJ)}(hjHZh]hReturn}(hjJZhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjFZubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjYubh)}(h-current FB aperture GPU offset of the object.h]h-current FB aperture GPU offset of the object.}(hj^ZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjYubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j*amdgpu_bo_gpu_offset_no_check (C function)c.amdgpu_bo_gpu_offset_no_checkhNtauh1jhjhhhNhNubj)}(hhh](j)}(h8u64 amdgpu_bo_gpu_offset_no_check (struct amdgpu_bo *bo)h]j )}(h7u64 amdgpu_bo_gpu_offset_no_check(struct amdgpu_bo *bo)h](h)}(hhh]jO)}(hu64h]hu64}(hjZhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjZubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjZmodnameN classnameNjj)}j]j)}jamdgpu_bo_gpu_offset_no_checksbc.amdgpu_bo_gpu_offset_no_checkasbuh1hhjZhhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMubj8)}(h h]h }(hjZhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjZhhhjZhMubjI)}(hamdgpu_bo_gpu_offset_no_checkh]jO)}(hjZh]hamdgpu_bo_gpu_offset_no_check}(hjZhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjZubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjZhhhjZhMubjj)}(h(struct amdgpu_bo *bo)h]jp)}(hstruct amdgpu_bo *boh](jv)}(hjyh]hstruct}(hjZhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjZubj8)}(h h]h }(hjZhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjZubh)}(hhh]jO)}(h amdgpu_boh]h amdgpu_bo}(hjZhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjZubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjZmodnameN classnameNjj)}j]jZc.amdgpu_bo_gpu_offset_no_checkasbuh1hhjZubj8)}(h h]h }(hjhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjZubj)}(hj4h]h*}(hj)[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZubjO)}(hboh]hbo}(hj6[hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjZubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjZubah}(h]h ]h"]h$]h&]jgjhuh1jihjZhhhjZhMubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjZhhhjZhMubah}(h]jZah ](jjeh"]h$]h&]j j )j huh1jhjZhMhjZhhubj )}(hhh]h)}(hreturn GPU offset of boh]hreturn GPU offset of bo}(hj`[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj][hhubah}(h]h ]h"]h$]h&]uh1j hjZhhhjZhMubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjx[jSjx[jTjUjVuh1jhhhjhNhNubjX)}(h**Parameters** ``struct amdgpu_bo *bo`` amdgpu object for which we query the offset **Return** current GPU offset of the object without raising warnings.h](h)}(h**Parameters**h]jJ)}(hj[h]h Parameters}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj[ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj|[ubh)}(hhh]h)}(hE``struct amdgpu_bo *bo`` amdgpu object for which we query the offset h](j)}(h``struct amdgpu_bo *bo``h]j)}(hj[h]hstruct amdgpu_bo *bo}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj[ubj)}(hhh]h)}(h+amdgpu object for which we query the offseth]h+amdgpu object for which we query the offset}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj[hMhj[ubah}(h]h ]h"]h$]h&]uh1jhj[ubeh}(h]h ]h"]h$]h&]uh1hhj[hMhj[ubah}(h]h ]h"]h$]h&]uh1hhj|[ubh)}(h **Return**h]jJ)}(hj[h]hReturn}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj[ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj|[ubh)}(h:current GPU offset of the object without raising warnings.h]h:current GPU offset of the object without raising warnings.}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj|[ubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j*amdgpu_bo_mem_stats_placement (C function)c.amdgpu_bo_mem_stats_placementhNtauh1jhjhhhNhNubj)}(hhh](j)}(h=uint32_t amdgpu_bo_mem_stats_placement (struct amdgpu_bo *bo)h]j )}(h` **Return** Which of the allowed domains is preferred for allocating the BO.h](h)}(h**Parameters**h]jJ)}(hj_h]h Parameters}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj_ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM!hj_ubh)}(hhh](h)}(h4``struct amdgpu_device *adev`` amdgpu device object h](j)}(h``struct amdgpu_device *adev``h]j)}(hj8_h]hstruct amdgpu_device *adev}(hj:_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6_ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj2_ubj)}(hhh]h)}(hamdgpu device objecth]hamdgpu device object}(hjQ_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjM_hMhjN_ubah}(h]h ]h"]h$]h&]uh1jhj2_ubeh}(h]h ]h"]h$]h&]uh1hhjM_hMhj/_ubh)}(hJ``uint32_t domain`` allowed :ref:`memory domains ` h](j)}(h``uint32_t domain``h]j)}(hjq_h]huint32_t domain}(hjs_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjo_ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjk_ubj)}(hhh]h)}(h5allowed :ref:`memory domains `h](hallowed }(hj_hhhNhNubh)}(h-:ref:`memory domains `h]j)}(hj_h]hmemory domains}(hj_hhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1jhj_ubah}(h]h ]h"]h$]h&]refdocj refdomainj_reftyperef refexplicitrefwarnjamdgpu_memory_domainsuh1hhj_hMhj_ubeh}(h]h ]h"]h$]h&]uh1hhj_hMhj_ubah}(h]h ]h"]h$]h&]uh1jhjk_ubeh}(h]h ]h"]h$]h&]uh1hhj_hMhj/_ubeh}(h]h ]h"]h$]h&]uh1hhj_ubh)}(h **Return**h]jJ)}(hj_h]hReturn}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj_ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM!hj_ubh)}(h@Which of the allowed domains is preferred for allocating the BO.h]h@Which of the allowed domains is preferred for allocating the BO.}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM!hj_ubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j!amdgpu_bo_print_info (C function)c.amdgpu_bo_print_infohNtauh1jhjhhhNhNubj)}(hhh](j)}(hKu64 amdgpu_bo_print_info (int id, struct amdgpu_bo *bo, struct seq_file *m)h]j )}(hJu64 amdgpu_bo_print_info(int id, struct amdgpu_bo *bo, struct seq_file *m)h](h)}(hhh]jO)}(hu64h]hu64}(hj`hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj`ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj`modnameN classnameNjj)}j]j)}jamdgpu_bo_print_infosbc.amdgpu_bo_print_infoasbuh1hhj `hhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM9ubj8)}(h h]h }(hj6`hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj `hhhj5`hM9ubjI)}(hamdgpu_bo_print_infoh]jO)}(hj2`h]hamdgpu_bo_print_info}(hjH`hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjD`ubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhj `hhhj5`hM9ubjj)}(h2(int id, struct amdgpu_bo *bo, struct seq_file *m)h](jp)}(hint idh](j&)}(hinth]hint}(hjc`hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hj_`ubj8)}(h h]h }(hjq`hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj_`ubjO)}(hidh]hid}(hj`hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj_`ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj[`ubjp)}(hstruct amdgpu_bo *boh](jv)}(hjyh]hstruct}(hj`hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj`ubj8)}(h h]h }(hj`hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj`ubh)}(hhh]jO)}(h amdgpu_boh]h amdgpu_bo}(hj`hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj`ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj`modnameN classnameNjj)}j]j0`c.amdgpu_bo_print_infoasbuh1hhj`ubj8)}(h h]h }(hj`hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj`ubj)}(hj4h]h*}(hj`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`ubjO)}(hboh]hbo}(hj`hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj`ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj[`ubjp)}(hstruct seq_file *mh](jv)}(hjyh]hstruct}(hjahhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjaubj8)}(h h]h }(hjahhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjaubh)}(hhh]jO)}(hseq_fileh]hseq_file}(hj&ahhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj#aubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj(amodnameN classnameNjj)}j]j0`c.amdgpu_bo_print_infoasbuh1hhjaubj8)}(h h]h }(hjDahhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjaubj)}(hj4h]h*}(hjRahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjaubjO)}(hmh]hm}(hj_ahhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjaubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj[`ubeh}(h]h ]h"]h$]h&]jgjhuh1jihj `hhhj5`hM9ubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhj `hhhj5`hM9ubah}(h]j`ah ](jjeh"]h$]h&]j j )j huh1jhj5`hM9hj`hhubj )}(hhh]h)}(hprint BO info in debugfs fileh]hprint BO info in debugfs file}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM9hjahhubah}(h]h ]h"]h$]h&]uh1j hj`hhhj5`hM9ubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjajSjajTjUjVuh1jhhhjhNhNubjX)}(h**Parameters** ``int id`` Index or Id of the BO ``struct amdgpu_bo *bo`` Requested BO for printing info ``struct seq_file *m`` debugfs file **Description** Print BO information in debugfs file **Return** Size of the BO in bytes.h](h)}(h**Parameters**h]jJ)}(hjah]h Parameters}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjaubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM=hjaubh)}(hhh](h)}(h!``int id`` Index or Id of the BO h](j)}(h ``int id``h]j)}(hjah]hint id}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jhjaubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM;hjaubj)}(hhh]h)}(hIndex or Id of the BOh]hIndex or Id of the BO}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhjahM;hjaubah}(h]h ]h"]h$]h&]uh1jhjaubeh}(h]h ]h"]h$]h&]uh1hhjahM;hjaubh)}(h8``struct amdgpu_bo *bo`` Requested BO for printing info h](j)}(h``struct amdgpu_bo *bo``h]j)}(hjbh]hstruct amdgpu_bo *bo}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM<hjaubj)}(hhh]h)}(hRequested BO for printing infoh]hRequested BO for printing info}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjbhM<hjbubah}(h]h ]h"]h$]h&]uh1jhjaubeh}(h]h ]h"]h$]h&]uh1hhjbhM<hjaubh)}(h$``struct seq_file *m`` debugfs file h](j)}(h``struct seq_file *m``h]j)}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:bubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM=hj6bubj)}(hhh]h)}(h debugfs fileh]h debugfs file}(hjUbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQbhM=hjRbubah}(h]h ]h"]h$]h&]uh1jhj6bubeh}(h]h ]h"]h$]h&]uh1hhjQbhM=hjaubeh}(h]h ]h"]h$]h&]uh1hhjaubh)}(h**Description**h]jJ)}(hjwbh]h Description}(hjybhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjububah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM?hjaubh)}(h$Print BO information in debugfs fileh]h$Print BO information in debugfs file}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM>hjaubh)}(h **Return**h]jJ)}(hjbh]hReturn}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjbubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM@hjaubh)}(hSize of the BO in bytes.h]hSize of the BO in bytes.}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:167: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMAhjaubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjhhhNhNubeh}(h]buffer-objectsah ]h"]buffer objectsah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hPRIME Buffer Sharingh]hPRIME Buffer Sharing}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjbhhhhhKubh)}(hThe following callback implementations are used for :ref:`sharing GEM buffer objects between different devices via PRIME `.h](h4The following callback implementations are used for }(hjbhhhNhNubh)}(h\:ref:`sharing GEM buffer objects between different devices via PRIME `h]j)}(hjbh]h>sharing GEM buffer objects between different devices via PRIME}(hjbhhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&]refdocj refdomainjbreftyperef refexplicitrefwarnjprime_buffer_sharinguh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:173: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chKhjbubh.}(hjbhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj chKhjbhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j dma_buf_attach_adev (C function)c.dma_buf_attach_adevhNtauh1jhjbhhhNhNubj)}(hhh](j)}(hNstruct amdgpu_device * dma_buf_attach_adev (struct dma_buf_attachment *attach)h]j )}(hLstruct amdgpu_device *dma_buf_attach_adev(struct dma_buf_attachment *attach)h](jv)}(hjyh]hstruct}(hj/chhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj+chhhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:176: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chK1ubj8)}(h h]h }(hj=chhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj+chhhj` implementationh](h)}(h*:c:type:`dma_buf_ops.attach `h]j)}(hj!fh]hdma_buf_ops.attach}(hj#fhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjfubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjj)}j]jbec.amdgpu_dma_buf_attachasbj dma_buf_opsuh1hhj` implementationh](h)}(h':c:type:`dma_buf_ops.pin `h]j)}(hjgh]hdma_buf_ops.pin}(hjhhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjj)}j]jgc.amdgpu_dma_buf_pinasbj dma_buf_opsuh1hhj` implementationh](h)}(h):c:type:`dma_buf_ops.unpin `h]j)}(hjih]hdma_buf_ops.unpin}(hjihhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjiubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjj)}j]jUic.amdgpu_dma_buf_unpinasbj dma_buf_opsuh1hhjjh]h Description}(hj@jhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj:c:type:`dma_buf_ops.map_dma_buf ` implementationh](h)}(h/:c:type:`dma_buf_ops.map_dma_buf `h]j)}(hjkh]hdma_buf_ops.map_dma_buf}(hjkhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjkubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjj)}j]jjc.amdgpu_dma_buf_mapasbj dma_buf_opsuh1hhj` implementationh](h)}(h1:c:type:`dma_buf_ops.unmap_dma_buf `h]j)}(hjnh]hdma_buf_ops.unmap_dma_buf}(hjnhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjnubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjj)}j]jmc.amdgpu_dma_buf_unmapasbj dma_buf_opsuh1hhj` implementationh](h)}(h4:c:type:`dma_buf_ops.begin_cpu_access `h]j)}(hj9qh]hdma_buf_ops.begin_cpu_access}(hj;qhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj7qubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjj)}j]jp!c.amdgpu_dma_buf_begin_cpu_accessasbj dma_buf_opsuh1hhj` implementationh](h)}(h2:c:type:`drm_driver.gem_prime_export `h]j)}(hjsh]hdrm_driver.gem_prime_export}(hjshhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjsubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjj)}j]jrc.amdgpu_gem_prime_exportasbj drm_driveruh1hhj` implementationh](h)}(h%:c:type:`attach.move_notify `h]j)}(hjbxh]hattach.move_notify}(hjdxhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj`xubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjj)}j]jxc.amdgpu_dma_buf_move_notifyasbjattachuh1hhj` implementationh](h)}(h2:c:type:`drm_driver.gem_prime_import `h]j)}(hjzh]hdrm_driver.gem_prime_import}(hjzhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjzubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjj)}j]j|yc.amdgpu_gem_prime_importasbj drm_driveruh1hhjhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhj ~hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j&amdgpu_hmm_invalidate_hsa (C function)c.amdgpu_hmm_invalidate_hsahNtauh1jhj ~hhhNhNubj)}(hhh](j)}(hbool amdgpu_hmm_invalidate_hsa (struct mmu_interval_notifier *mni, const struct mmu_notifier_range *range, unsigned long cur_seq)h]j )}(hbool amdgpu_hmm_invalidate_hsa(struct mmu_interval_notifier *mni, const struct mmu_notifier_range *range, unsigned long cur_seq)h](j&)}(hj)h]hbool}(hj/hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hj+hhho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:185: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chK^ubj8)}(h h]h }(hj=hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj+hhhj<hK^ubjI)}(hamdgpu_hmm_invalidate_hsah]jO)}(hamdgpu_hmm_invalidate_hsah]hamdgpu_hmm_invalidate_hsa}(hjOhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjKubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhj+hhhj<hK^ubjj)}(hb(struct mmu_interval_notifier *mni, const struct mmu_notifier_range *range, unsigned long cur_seq)h](jp)}(h!struct mmu_interval_notifier *mnih](jv)}(hjyh]hstruct}(hjkhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjgubj8)}(h h]h }(hjxhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjgubh)}(hhh]jO)}(hmmu_interval_notifierh]hmmu_interval_notifier}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjQsbc.amdgpu_hmm_invalidate_hsaasbuh1hhjgubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjgubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjgubjO)}(hmnih]hmni}(hjāhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjgubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjcubjp)}(h&const struct mmu_notifier_range *rangeh](jv)}(hjh]hconst}(hj݁hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjفubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjفubjv)}(hjyh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjفubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjفubh)}(hhh]jO)}(hmmu_notifier_rangeh]hmmu_notifier_range}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.amdgpu_hmm_invalidate_hsaasbuh1hhjفubj8)}(h h]h }(hj4hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjفubj)}(hj4h]h*}(hjBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjفubjO)}(hrangeh]hrange}(hjOhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjفubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjcubjp)}(hunsigned long cur_seqh](j&)}(hunsignedh]hunsigned}(hjhhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjdubj8)}(h h]h }(hjvhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjdubj&)}(hlongh]hlong}(hjhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjdubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjdubjO)}(hcur_seqh]hcur_seq}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjdubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjcubeh}(h]h ]h"]h$]h&]jgjhuh1jihj+hhhj<hK^ubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhj'hhhj<hK^ubah}(h]j"ah ](jjeh"]h$]h&]j j )j huh1jhj<hK^hj$hhubj )}(hhh]h)}(h"callback to notify about mm changeh]h"callback to notify about mm change}(hjʂhhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:185: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chK^hjǂhhubah}(h]h ]h"]h$]h&]uh1j hj$hhhj<hK^ubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjjSjjTjUjVuh1jhhhj ~hNhNubjX)}(hXn**Parameters** ``struct mmu_interval_notifier *mni`` the range (mm) is about to update ``const struct mmu_notifier_range *range`` details on the invalidation ``unsigned long cur_seq`` Value to pass to mmu_interval_set_seq() **Description** We temporarily evict the BO attached to this range. This necessitates evicting all user-mode queues of the process.h](h)}(h**Parameters**h]jJ)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:185: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chKbhjubh)}(hhh](h)}(hH``struct mmu_interval_notifier *mni`` the range (mm) is about to update h](j)}(h%``struct mmu_interval_notifier *mni``h]j)}(hj h]h!struct mmu_interval_notifier *mni}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:185: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chK`hjubj)}(hhh]h)}(h!the range (mm) is about to updateh]h!the range (mm) is about to update}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hK`hj!ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhj hK`hjubh)}(hG``const struct mmu_notifier_range *range`` details on the invalidation h](j)}(h*``const struct mmu_notifier_range *range``h]j)}(hjDh]h&const struct mmu_notifier_range *range}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:185: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chKahj>ubj)}(hhh]h)}(hdetails on the invalidationh]hdetails on the invalidation}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjYhKahjZubah}(h]h ]h"]h$]h&]uh1jhj>ubeh}(h]h ]h"]h$]h&]uh1hhjYhKahjubh)}(hB``unsigned long cur_seq`` Value to pass to mmu_interval_set_seq() h](j)}(h``unsigned long cur_seq``h]j)}(hj}h]hunsigned long cur_seq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj{ubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:185: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chKbhjwubj)}(hhh]h)}(h'Value to pass to mmu_interval_set_seq()h]h'Value to pass to mmu_interval_set_seq()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKbhjubah}(h]h ]h"]h$]h&]uh1jhjwubeh}(h]h ]h"]h$]h&]uh1hhjhKbhjubeh}(h]h ]h"]h$]h&]uh1hhjubh)}(h**Description**h]jJ)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:185: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chKdhjubh)}(hsWe temporarily evict the BO attached to this range. This necessitates evicting all user-mode queues of the process.h]hsWe temporarily evict the BO attached to this range. This necessitates evicting all user-mode queues of the process.}(hj΃hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:185: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chKchjubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhj ~hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j amdgpu_hmm_register (C function)c.amdgpu_hmm_registerhNtauh1jhj ~hhhNhNubj)}(hhh](j)}(hBint amdgpu_hmm_register (struct amdgpu_bo *bo, unsigned long addr)h]j )}(hAint amdgpu_hmm_register(struct amdgpu_bo *bo, unsigned long addr)h](j&)}(hinth]hint}(hjhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjhhho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:185: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chKzubj8)}(h h]h }(hj hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjhhhj hKzubjI)}(hamdgpu_hmm_registerh]jO)}(hamdgpu_hmm_registerh]hamdgpu_hmm_register}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjhhhj hKzubjj)}(h*(struct amdgpu_bo *bo, unsigned long addr)h](jp)}(hstruct amdgpu_bo *boh](jv)}(hjyh]hstruct}(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj6ubj8)}(h h]h }(hjGhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj6ubh)}(hhh]jO)}(h amdgpu_boh]h amdgpu_bo}(hjXhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjUubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjZmodnameN classnameNjj)}j]j)}jj sbc.amdgpu_hmm_registerasbuh1hhj6ubj8)}(h h]h }(hjxhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj6ubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6ubjO)}(hboh]hbo}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj6ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj2ubjp)}(hunsigned long addrh](j&)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj&)}(hlongh]hlong}(hjȄhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjubj8)}(h h]h }(hjքhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubjO)}(haddrh]haddr}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj2ubeh}(h]h ]h"]h$]h&]jgjhuh1jihjhhhj hKzubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjhhhj hKzubah}(h]jah ](jjeh"]h$]h&]j j )j huh1jhj hKzhjhhubj )}(hhh]h)}(h"register a BO for notifier updatesh]h"register a BO for notifier updates}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:185: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chKzhj hhubah}(h]h ]h"]h$]h&]uh1j hjhhhj hKzubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRj&jSj&jTjUjVuh1jhhhj ~hNhNubjX)}(hX**Parameters** ``struct amdgpu_bo *bo`` amdgpu buffer object ``unsigned long addr`` userptr addr we should monitor **Description** Registers a mmu_notifier for the given BO at the specified address. Returns 0 on success, -ERRNO if anything goes wrong.h](h)}(h**Parameters**h]jJ)}(hj0h]h Parameters}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj.ubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:185: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chK~hj*ubh)}(hhh](h)}(h.``struct amdgpu_bo *bo`` amdgpu buffer object h](j)}(h``struct amdgpu_bo *bo``h]j)}(hjOh]hstruct amdgpu_bo *bo}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:185: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chK|hjIubj)}(hhh]h)}(hamdgpu buffer objecth]hamdgpu buffer object}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdhK|hjeubah}(h]h ]h"]h$]h&]uh1jhjIubeh}(h]h ]h"]h$]h&]uh1hhjdhK|hjFubh)}(h6``unsigned long addr`` userptr addr we should monitor h](j)}(h``unsigned long addr``h]j)}(hjh]hunsigned long addr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:185: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chK}hjubj)}(hhh]h)}(huserptr addr we should monitorh]huserptr addr we should monitor}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK}hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhK}hjFubeh}(h]h ]h"]h$]h&]uh1hhj*ubh)}(h**Description**h]jJ)}(hjÅh]h Description}(hjŅhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:185: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chKhj*ubh)}(hxRegisters a mmu_notifier for the given BO at the specified address. Returns 0 on success, -ERRNO if anything goes wrong.h]hxRegisters a mmu_notifier for the given BO at the specified address. Returns 0 on success, -ERRNO if anything goes wrong.}(hjمhhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:185: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chK~hj*ubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhj ~hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j"amdgpu_hmm_unregister (C function)c.amdgpu_hmm_unregisterhNtauh1jhj ~hhhNhNubj)}(hhh](j)}(h1void amdgpu_hmm_unregister (struct amdgpu_bo *bo)h]j )}(h0void amdgpu_hmm_unregister(struct amdgpu_bo *bo)h](j&)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjhhho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:185: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chKubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjhhhjhKubjI)}(hamdgpu_hmm_unregisterh]jO)}(hamdgpu_hmm_unregisterh]hamdgpu_hmm_unregister}(hj)hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj%ubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjhhhjhKubjj)}(h(struct amdgpu_bo *bo)h]jp)}(hstruct amdgpu_bo *boh](jv)}(hjyh]hstruct}(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjAubj8)}(h h]h }(hjRhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjAubh)}(hhh]jO)}(h amdgpu_boh]h amdgpu_bo}(hjchhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj`ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjemodnameN classnameNjj)}j]j)}jj+sbc.amdgpu_hmm_unregisterasbuh1hhjAubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjAubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubjO)}(hboh]hbo}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjAubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj=ubah}(h]h ]h"]h$]h&]jgjhuh1jihjhhhjhKubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]j j )j huh1jhjhKhjhhubj )}(hhh]h)}(h$unregister a BO for notifier updatesh]h$unregister a BO for notifier updates}(hjȆhhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:185: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chKhjņhhubah}(h]h ]h"]h$]h&]uh1j hjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjjSjjTjUjVuh1jhhhj ~hNhNubjX)}(h**Parameters** ``struct amdgpu_bo *bo`` amdgpu buffer object **Description** Remove any registration of mmu notifier updates from the buffer object.h](h)}(h**Parameters**h]jJ)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:185: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chKhjubh)}(hhh]h)}(h.``struct amdgpu_bo *bo`` amdgpu buffer object h](j)}(h``struct amdgpu_bo *bo``h]j)}(hj h]hstruct amdgpu_bo *bo}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:185: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chKhjubj)}(hhh]h)}(hamdgpu buffer objecth]hamdgpu buffer object}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h**Description**h]jJ)}(hjDh]h Description}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjBubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:185: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chKhjubh)}(hGRemove any registration of mmu notifier updates from the buffer object.h]hGRemove any registration of mmu notifier updates from the buffer object.}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:185: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhj ~hhhNhNubeh}(h] mmu-notifierah ]h"] mmu notifierah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hAMDGPU Virtual Memoryh]hAMDGPU Virtual Memory}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjxhhhhhKubh)}(hXGPUVM is the MMU functionality provided on the GPU. GPUVM is similar to the legacy GART on older asics, however rather than there being a single global GART table for the entire GPU, there can be multiple GPUVM page tables active at any given time. The GPUVM page tables can contain a mix VRAM pages and system pages (both memory and MMIO) and system pages can be mapped as snooped (cached system pages) or unsnooped (uncached system pages).h]hXGPUVM is the MMU functionality provided on the GPU. GPUVM is similar to the legacy GART on older asics, however rather than there being a single global GART table for the entire GPU, there can be multiple GPUVM page tables active at any given time. The GPUVM page tables can contain a mix VRAM pages and system pages (both memory and MMIO) and system pages can be mapped as snooped (cached system pages) or unsnooped (uncached system pages).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:191: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chK1hjxhhubh)}(hXEach active GPUVM has an ID associated with it and there is a page table linked with each VMID. When executing a command buffer, the kernel tells the engine what VMID to use for that command buffer. VMIDs are allocated dynamically as commands are submitted. The userspace drivers maintain their own address space and the kernel sets up their pages tables accordingly when they submit their command buffers and a VMID is assigned. The hardware supports up to 16 active GPUVMs at any given time.h]hXEach active GPUVM has an ID associated with it and there is a page table linked with each VMID. When executing a command buffer, the kernel tells the engine what VMID to use for that command buffer. VMIDs are allocated dynamically as commands are submitted. The userspace drivers maintain their own address space and the kernel sets up their pages tables accordingly when they submit their command buffers and a VMID is assigned. The hardware supports up to 16 active GPUVMs at any given time.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:191: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chK:hjxhhubh)}(hEach GPUVM is represented by a 1-2 or 1-5 level page table, depending on the ASIC family. GPUVM supports RWX attributes on each page as well as other features such as encryption and caching attributes.h]hEach GPUVM is represented by a 1-2 or 1-5 level page table, depending on the ASIC family. GPUVM supports RWX attributes on each page as well as other features such as encryption and caching attributes.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:191: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKChjxhhubh)}(hXVMID 0 is special. It is the GPUVM used for the kernel driver. In addition to an aperture managed by a page table, VMID 0 also has several other apertures. There is an aperture for direct access to VRAM and there is a legacy AGP aperture which just forwards accesses directly to the matching system physical addresses (or IOVAs when an IOMMU is present). These apertures provide direct access to these memories without incurring the overhead of a page table. VMID 0 is used by the kernel driver for tasks like memory management.h]hXVMID 0 is special. It is the GPUVM used for the kernel driver. In addition to an aperture managed by a page table, VMID 0 also has several other apertures. There is an aperture for direct access to VRAM and there is a legacy AGP aperture which just forwards accesses directly to the matching system physical addresses (or IOVAs when an IOMMU is present). These apertures provide direct access to these memories without incurring the overhead of a page table. VMID 0 is used by the kernel driver for tasks like memory management.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:191: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKGhjxhhubh)}(hXGPU clients (i.e., engines on the GPU) use GPUVM VMIDs to access memory. For user applications, each application can have their own unique GPUVM address space. The application manages the address space and the kernel driver manages the GPUVM page tables for each process. If an GPU client accesses an invalid page, it will generate a GPU page fault, similar to accessing an invalid page on a CPU.h]hXGPU clients (i.e., engines on the GPU) use GPUVM VMIDs to access memory. For user applications, each application can have their own unique GPUVM address space. The application manages the address space and the kernel driver manages the GPUVM page tables for each process. If an GPU client accesses an invalid page, it will generate a GPU page fault, similar to accessing an invalid page on a CPU.}(hjŇhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:191: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKPhjxhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jamdgpu_prt_cb (C struct)c.amdgpu_prt_cbhNtauh1jhjxhhhNhNubj)}(hhh](j)}(h amdgpu_prt_cbh]j )}(hstruct amdgpu_prt_cbh](jv)}(hjyh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjhhhjhKubjI)}(h amdgpu_prt_cbh]jO)}(hjh]h amdgpu_prt_cb}(hj hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj ubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjhhhjhKubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]j j )j huh1jhjhKhjhhubj )}(hhh]h)}(hHHelper to disable partial resident texture feature from a fence callbackh]hHHelper to disable partial resident texture feature from a fence callback}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKdhj,hhubah}(h]h ]h"]h$]h&]uh1j hjhhhjhKubeh}(h]h ](jstructeh"]h$]h&]jQjjRjGjSjGjTjUjVuh1jhhhjxhNhNubjX)}(h**Definition**:: struct amdgpu_prt_cb { struct amdgpu_device *adev; struct dma_fence_cb cb; }; **Members** ``adev`` amdgpu device ``cb`` callbackh](h)}(h**Definition**::h](jJ)}(h**Definition**h]h Definition}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjOubh:}(hjOhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhhjKubh literal_block)}(hUstruct amdgpu_prt_cb { struct amdgpu_device *adev; struct dma_fence_cb cb; };h]hUstruct amdgpu_prt_cb { struct amdgpu_device *adev; struct dma_fence_cb cb; };}hjnsbah}(h]h ]h"]h$]h&]jgjhuh1jlhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKjhjKubh)}(h **Members**h]jJ)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj}ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKohjKubh)}(hhh](h)}(h``adev`` amdgpu device h](j)}(h``adev``h]j)}(hjh]hadev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKjhjubj)}(hhh]h)}(h amdgpu deviceh]h amdgpu device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKjhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhKjhjubh)}(h``cb`` callbackh](j)}(h``cb``h]j)}(hj׈h]hcb}(hjوhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjՈubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKnhjшubj)}(hhh]h)}(hcallbackh]hcallback}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKohjubah}(h]h ]h"]h$]h&]uh1jhjшubeh}(h]h ]h"]h$]h&]uh1hhjhKnhjubeh}(h]h ]h"]h$]h&]uh1hhjKubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjxhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j#amdgpu_vm_tlb_seq_struct (C struct)c.amdgpu_vm_tlb_seq_structhNtauh1jhjxhhhNhNubj)}(hhh](j)}(hamdgpu_vm_tlb_seq_structh]j )}(hstruct amdgpu_vm_tlb_seq_structh](jv)}(hjyh]hstruct}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj-hhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKuubj8)}(h h]h }(hj?hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj-hhhj>hKuubjI)}(hamdgpu_vm_tlb_seq_structh]jO)}(hj+h]hamdgpu_vm_tlb_seq_struct}(hjQhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjMubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhj-hhhj>hKuubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhj)hhhj>hKuubah}(h]j$ah ](jjeh"]h$]h&]j j )j huh1jhj>hKuhj&hhubj )}(hhh]h)}(h*Helper to increment the TLB flush sequenceh]h*Helper to increment the TLB flush sequence}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKthjphhubah}(h]h ]h"]h$]h&]uh1j hj&hhhj>hKuubeh}(h]h ](jstructeh"]h$]h&]jQjjRjjSjjTjUjVuh1jhhhjxhNhNubjX)}(h**Definition**:: struct amdgpu_vm_tlb_seq_struct { struct amdgpu_vm *vm; struct dma_fence_cb cb; }; **Members** ``vm`` pointer to the amdgpu_vm structure to set the fence sequence on ``cb`` callbackh](h)}(h**Definition**::h](jJ)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKxhjubjm)}(hZstruct amdgpu_vm_tlb_seq_struct { struct amdgpu_vm *vm; struct dma_fence_cb cb; };h]hZstruct amdgpu_vm_tlb_seq_struct { struct amdgpu_vm *vm; struct dma_fence_cb cb; };}hjsbah}(h]h ]h"]h$]h&]jgjhuh1jlhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKzhjubh)}(h **Members**h]jJ)}(hjh]hMembers}(hjÉhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjubh)}(hhh](h)}(hG``vm`` pointer to the amdgpu_vm structure to set the fence sequence on h](j)}(h``vm``h]j)}(hjh]hvm}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjމubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKyhjډubj)}(hhh]h)}(h?pointer to the amdgpu_vm structure to set the fence sequence onh]h?pointer to the amdgpu_vm structure to set the fence sequence on}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKyhjubah}(h]h ]h"]h$]h&]uh1jhjډubeh}(h]h ]h"]h$]h&]uh1hhjhKyhj׉ubh)}(h``cb`` callbackh](j)}(h``cb``h]j)}(hjh]hcb}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chK}hjubj)}(hhh]h)}(hcallbackh]hcallback}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chK~hj/ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhj.hK}hj׉ubeh}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjxhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j$amdgpu_vm_assert_locked (C function)c.amdgpu_vm_assert_lockedhNtauh1jhjxhhhNhNubj)}(hhh](j)}(h3void amdgpu_vm_assert_locked (struct amdgpu_vm *vm)h]j )}(h2void amdgpu_vm_assert_locked(struct amdgpu_vm *vm)h](j&)}(hvoidh]hvoid}(hjshhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjohhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjohhhjhKubjI)}(hamdgpu_vm_assert_lockedh]jO)}(hamdgpu_vm_assert_lockedh]hamdgpu_vm_assert_locked}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjohhhjhKubjj)}(h(struct amdgpu_vm *vm)h]jp)}(hstruct amdgpu_vm *vmh](jv)}(hjyh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubh)}(hhh]jO)}(h amdgpu_vmh]h amdgpu_vm}(hjΊhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjˊubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjЊmodnameN classnameNjj)}j]j)}jjsbc.amdgpu_vm_assert_lockedasbuh1hhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(hvmh]hvm}(hj hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubah}(h]h ]h"]h$]h&]jgjhuh1jihjohhhjhKubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjkhhhjhKubah}(h]jfah ](jjeh"]h$]h&]j j )j huh1jhjhKhjhhhubj )}(hhh]h)}(hcheck if VM is correctly lockedh]hcheck if VM is correctly locked}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhj0hhubah}(h]h ]h"]h$]h&]uh1j hjhhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjKjSjKjTjUjVuh1jhhhjxhNhNubjX)}(h**Parameters** ``struct amdgpu_vm *vm`` the VM which schould be tested **Description** Asserts that the VM root PD is locked.h](h)}(h**Parameters**h]jJ)}(hjUh]h Parameters}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjSubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjOubh)}(hhh]h)}(h8``struct amdgpu_vm *vm`` the VM which schould be tested h](j)}(h``struct amdgpu_vm *vm``h]j)}(hjth]hstruct amdgpu_vm *vm}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjrubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjnubj)}(hhh]h)}(hthe VM which schould be testedh]hthe VM which schould be tested}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjnubeh}(h]h ]h"]h$]h&]uh1hhjhKhjkubah}(h]h ]h"]h$]h&]uh1hhjOubh)}(h**Description**h]jJ)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjOubh)}(h&Asserts that the VM root PD is locked.h]h&Asserts that the VM root PD is locked.}(hjŋhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjOubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjxhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j!amdgpu_vm_bo_evicted (C function)c.amdgpu_vm_bo_evictedhNtauh1jhjxhhhNhNubj)}(hhh](j)}(h;void amdgpu_vm_bo_evicted (struct amdgpu_vm_bo_base *vm_bo)h]j )}(h:void amdgpu_vm_bo_evicted(struct amdgpu_vm_bo_base *vm_bo)h](j&)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjhhhjhKubjI)}(hamdgpu_vm_bo_evictedh]jO)}(hamdgpu_vm_bo_evictedh]hamdgpu_vm_bo_evicted}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjhhhjhKubjj)}(h!(struct amdgpu_vm_bo_base *vm_bo)h]jp)}(hstruct amdgpu_vm_bo_base *vm_boh](jv)}(hjyh]hstruct}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj-ubj8)}(h h]h }(hj>hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj-ubh)}(hhh]jO)}(hamdgpu_vm_bo_baseh]hamdgpu_vm_bo_base}(hjOhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjLubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjQmodnameN classnameNjj)}j]j)}jjsbc.amdgpu_vm_bo_evictedasbuh1hhj-ubj8)}(h h]h }(hjohhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj-ubj)}(hj4h]h*}(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-ubjO)}(hvm_boh]hvm_bo}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj-ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj)ubah}(h]h ]h"]h$]h&]jgjhuh1jihjhhhjhKubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]j j )j huh1jhjhKhjhhubj )}(hhh]h)}(hvm_bo is evictedh]hvm_bo is evicted}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjhhubah}(h]h ]h"]h$]h&]uh1j hjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRǰjSǰjTjUjVuh1jhhhjxhNhNubjX)}(h**Parameters** ``struct amdgpu_vm_bo_base *vm_bo`` vm_bo which is evicted **Description** State for PDs/PTs and per VM BOs which are not at the location they should be.h](h)}(h**Parameters**h]jJ)}(hj֌h]h Parameters}(hj،hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjԌubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjЌubh)}(hhh]h)}(h;``struct amdgpu_vm_bo_base *vm_bo`` vm_bo which is evicted h](j)}(h#``struct amdgpu_vm_bo_base *vm_bo``h]j)}(hjh]hstruct amdgpu_vm_bo_base *vm_bo}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjubj)}(hhh]h)}(hvm_bo which is evictedh]hvm_bo which is evicted}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhj hKhjubah}(h]h ]h"]h$]h&]uh1hhjЌubh)}(h**Description**h]jJ)}(hj0h]h Description}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj.ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjЌubh)}(hNState for PDs/PTs and per VM BOs which are not at the location they should be.h]hNState for PDs/PTs and per VM BOs which are not at the location they should be.}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjЌubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjxhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jamdgpu_vm_bo_moved (C function)c.amdgpu_vm_bo_movedhNtauh1jhjxhhhNhNubj)}(hhh](j)}(h9void amdgpu_vm_bo_moved (struct amdgpu_vm_bo_base *vm_bo)h]j )}(h8void amdgpu_vm_bo_moved(struct amdgpu_vm_bo_base *vm_bo)h](j&)}(hvoidh]hvoid}(hjuhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjqhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjqhhhjhKubjI)}(hamdgpu_vm_bo_movedh]jO)}(hamdgpu_vm_bo_movedh]hamdgpu_vm_bo_moved}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjqhhhjhKubjj)}(h!(struct amdgpu_vm_bo_base *vm_bo)h]jp)}(hstruct amdgpu_vm_bo_base *vm_boh](jv)}(hjyh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubh)}(hhh]jO)}(hamdgpu_vm_bo_baseh]hamdgpu_vm_bo_base}(hjЍhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj͍ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjҍmodnameN classnameNjj)}j]j)}jjsbc.amdgpu_vm_bo_movedasbuh1hhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(hvm_boh]hvm_bo}(hj hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubah}(h]h ]h"]h$]h&]jgjhuh1jihjqhhhjhKubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjmhhhjhKubah}(h]jhah ](jjeh"]h$]h&]j j )j huh1jhjhKhjjhhubj )}(hhh]h)}(hvm_bo is movedh]hvm_bo is moved}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhj2hhubah}(h]h ]h"]h$]h&]uh1j hjjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjMjSjMjTjUjVuh1jhhhjxhNhNubjX)}(h**Parameters** ``struct amdgpu_vm_bo_base *vm_bo`` vm_bo which is moved **Description** State for per VM BOs which are moved, but that change is not yet reflected in the page tables.h](h)}(h**Parameters**h]jJ)}(hjWh]h Parameters}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjUubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjQubh)}(hhh]h)}(h9``struct amdgpu_vm_bo_base *vm_bo`` vm_bo which is moved h](j)}(h#``struct amdgpu_vm_bo_base *vm_bo``h]j)}(hjvh]hstruct amdgpu_vm_bo_base *vm_bo}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjpubj)}(hhh]h)}(hvm_bo which is movedh]hvm_bo which is moved}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjpubeh}(h]h ]h"]h$]h&]uh1hhjhKhjmubah}(h]h ]h"]h$]h&]uh1hhjQubh)}(h**Description**h]jJ)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjQubh)}(h^State for per VM BOs which are moved, but that change is not yet reflected in the page tables.h]h^State for per VM BOs which are moved, but that change is not yet reflected in the page tables.}(hjǎhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjQubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjxhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jamdgpu_vm_bo_idle (C function)c.amdgpu_vm_bo_idlehNtauh1jhjxhhhNhNubj)}(hhh](j)}(h8void amdgpu_vm_bo_idle (struct amdgpu_vm_bo_base *vm_bo)h]j )}(h7void amdgpu_vm_bo_idle(struct amdgpu_vm_bo_base *vm_bo)h](j&)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjhhhjhKubjI)}(hamdgpu_vm_bo_idleh]jO)}(hamdgpu_vm_bo_idleh]hamdgpu_vm_bo_idle}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjhhhjhKubjj)}(h!(struct amdgpu_vm_bo_base *vm_bo)h]jp)}(hstruct amdgpu_vm_bo_base *vm_boh](jv)}(hjyh]hstruct}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj/ubj8)}(h h]h }(hj@hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj/ubh)}(hhh]jO)}(hamdgpu_vm_bo_baseh]hamdgpu_vm_bo_base}(hjQhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjNubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjSmodnameN classnameNjj)}j]j)}jjsbc.amdgpu_vm_bo_idleasbuh1hhj/ubj8)}(h h]h }(hjqhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj/ubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj/ubjO)}(hvm_boh]hvm_bo}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj/ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj+ubah}(h]h ]h"]h$]h&]jgjhuh1jihjhhhjhKubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]j j )j huh1jhjhKhjhhubj )}(hhh]h)}(h vm_bo is idleh]h vm_bo is idle}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjhhubah}(h]h ]h"]h$]h&]uh1j hjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjΏjSjΏjTjUjVuh1jhhhjxhNhNubjX)}(h**Parameters** ``struct amdgpu_vm_bo_base *vm_bo`` vm_bo which is now idle **Description** State for PDs/PTs and per VM BOs which have gone through the state machine and are now idle.h](h)}(h**Parameters**h]jJ)}(hj؏h]h Parameters}(hjڏhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj֏ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjҏubh)}(hhh]h)}(h<``struct amdgpu_vm_bo_base *vm_bo`` vm_bo which is now idle h](j)}(h#``struct amdgpu_vm_bo_base *vm_bo``h]j)}(hjh]hstruct amdgpu_vm_bo_base *vm_bo}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjubj)}(hhh]h)}(hvm_bo which is now idleh]hvm_bo which is now idle}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhj hKhjubah}(h]h ]h"]h$]h&]uh1hhjҏubh)}(h**Description**h]jJ)}(hj2h]h Description}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj0ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjҏubh)}(h\State for PDs/PTs and per VM BOs which have gone through the state machine and are now idle.h]h\State for PDs/PTs and per VM BOs which have gone through the state machine and are now idle.}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjҏubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjxhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j%amdgpu_vm_bo_invalidated (C function)c.amdgpu_vm_bo_invalidatedhNtauh1jhjxhhhNhNubj)}(hhh](j)}(h?void amdgpu_vm_bo_invalidated (struct amdgpu_vm_bo_base *vm_bo)h]j )}(h>void amdgpu_vm_bo_invalidated(struct amdgpu_vm_bo_base *vm_bo)h](j&)}(hvoidh]hvoid}(hjwhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjshhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjshhhjhKubjI)}(hamdgpu_vm_bo_invalidatedh]jO)}(hamdgpu_vm_bo_invalidatedh]hamdgpu_vm_bo_invalidated}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjshhhjhKubjj)}(h!(struct amdgpu_vm_bo_base *vm_bo)h]jp)}(hstruct amdgpu_vm_bo_base *vm_boh](jv)}(hjyh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubh)}(hhh]jO)}(hamdgpu_vm_bo_baseh]hamdgpu_vm_bo_base}(hjҐhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjϐubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjԐmodnameN classnameNjj)}j]j)}jjsbc.amdgpu_vm_bo_invalidatedasbuh1hhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(hvm_boh]hvm_bo}(hj hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubah}(h]h ]h"]h$]h&]jgjhuh1jihjshhhjhKubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjohhhjhKubah}(h]jjah ](jjeh"]h$]h&]j j )j huh1jhjhKhjlhhubj )}(hhh]h)}(hvm_bo is invalidatedh]hvm_bo is invalidated}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhj4hhubah}(h]h ]h"]h$]h&]uh1j hjlhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjOjSjOjTjUjVuh1jhhhjxhNhNubjX)}(h**Parameters** ``struct amdgpu_vm_bo_base *vm_bo`` vm_bo which is now invalidated **Description** State for normal BOs which are invalidated and that change not yet reflected in the PTs.h](h)}(h**Parameters**h]jJ)}(hjYh]h Parameters}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjWubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjSubh)}(hhh]h)}(hC``struct amdgpu_vm_bo_base *vm_bo`` vm_bo which is now invalidated h](j)}(h#``struct amdgpu_vm_bo_base *vm_bo``h]j)}(hjxh]hstruct amdgpu_vm_bo_base *vm_bo}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjvubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjrubj)}(hhh]h)}(hvm_bo which is now invalidatedh]hvm_bo which is now invalidated}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjrubeh}(h]h ]h"]h$]h&]uh1hhjhKhjoubah}(h]h ]h"]h$]h&]uh1hhjSubh)}(h**Description**h]jJ)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjSubh)}(hXState for normal BOs which are invalidated and that change not yet reflected in the PTs.h]hXState for normal BOs which are invalidated and that change not yet reflected in the PTs.}(hjɑhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjSubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjxhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j&amdgpu_vm_bo_evicted_user (C function)c.amdgpu_vm_bo_evicted_userhNtauh1jhjxhhhNhNubj)}(hhh](j)}(h@void amdgpu_vm_bo_evicted_user (struct amdgpu_vm_bo_base *vm_bo)h]j )}(h?void amdgpu_vm_bo_evicted_user(struct amdgpu_vm_bo_base *vm_bo)h](j&)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjhhhjhKubjI)}(hamdgpu_vm_bo_evicted_userh]jO)}(hamdgpu_vm_bo_evicted_userh]hamdgpu_vm_bo_evicted_user}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjhhhjhKubjj)}(h!(struct amdgpu_vm_bo_base *vm_bo)h]jp)}(hstruct amdgpu_vm_bo_base *vm_boh](jv)}(hjyh]hstruct}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj1ubj8)}(h h]h }(hjBhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj1ubh)}(hhh]jO)}(hamdgpu_vm_bo_baseh]hamdgpu_vm_bo_base}(hjShhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjPubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjUmodnameN classnameNjj)}j]j)}jjsbc.amdgpu_vm_bo_evicted_userasbuh1hhj1ubj8)}(h h]h }(hjshhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj1ubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubjO)}(hvm_boh]hvm_bo}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj1ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj-ubah}(h]h ]h"]h$]h&]jgjhuh1jihjhhhjhKubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]j j )j huh1jhjhKhjhhubj )}(hhh]h)}(hvm_bo is evictedh]hvm_bo is evicted}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjhhubah}(h]h ]h"]h$]h&]uh1j hjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjВjSjВjTjUjVuh1jhhhjxhNhNubjX)}(h**Parameters** ``struct amdgpu_vm_bo_base *vm_bo`` vm_bo which is evicted **Description** State for BOs used by user mode queues which are not at the location they should be.h](h)}(h**Parameters**h]jJ)}(hjڒh]h Parameters}(hjܒhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjؒubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjԒubh)}(hhh]h)}(h;``struct amdgpu_vm_bo_base *vm_bo`` vm_bo which is evicted h](j)}(h#``struct amdgpu_vm_bo_base *vm_bo``h]j)}(hjh]hstruct amdgpu_vm_bo_base *vm_bo}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjubj)}(hhh]h)}(hvm_bo which is evictedh]hvm_bo which is evicted}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1hhjԒubh)}(h**Description**h]jJ)}(hj4h]h Description}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj2ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjԒubh)}(hTState for BOs used by user mode queues which are not at the location they should be.h]hTState for BOs used by user mode queues which are not at the location they should be.}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjԒubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjxhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j#amdgpu_vm_bo_relocated (C function)c.amdgpu_vm_bo_relocatedhNtauh1jhjxhhhNhNubj)}(hhh](j)}(h=void amdgpu_vm_bo_relocated (struct amdgpu_vm_bo_base *vm_bo)h]j )}(htbo.resource ``int sign`` if we should add (+1) or subtract (-1) from the stat **Description** Caller need to have the vm status_lock held. Useful for when multiple update need to happen at the same time.h](h)}(h**Parameters**h]jJ)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMYhjubh)}(hhh](h)}(hP``struct amdgpu_vm_bo_base *base`` base structure for tracking BO usage in a VM h](j)}(h"``struct amdgpu_vm_bo_base *base``h]j)}(hjh]hstruct amdgpu_vm_bo_base *base}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMVhjubj)}(hhh]h)}(h,base structure for tracking BO usage in a VMh]h,base structure for tracking BO usage in a VM}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMVhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMVhjubh)}(hw``struct ttm_resource *res`` the ttm_resource to use for the purpose of accounting, may or may not be bo->tbo.resource h](j)}(h``struct ttm_resource *res``h]j)}(hjݜh]hstruct ttm_resource *res}(hjߜhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjۜubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMXhjלubj)}(hhh]h)}(hYthe ttm_resource to use for the purpose of accounting, may or may not be bo->tbo.resourceh]hYthe ttm_resource to use for the purpose of accounting, may or may not be bo->tbo.resource}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMWhjubah}(h]h ]h"]h$]h&]uh1jhjלubeh}(h]h ]h"]h$]h&]uh1hhjhMXhjubh)}(hB``int sign`` if we should add (+1) or subtract (-1) from the stat h](j)}(h ``int sign``h]j)}(hjh]hint sign}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMYhjubj)}(hhh]h)}(h4if we should add (+1) or subtract (-1) from the stath]h4if we should add (+1) or subtract (-1) from the stat}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,hMYhj-ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhj,hMYhjubeh}(h]h ]h"]h$]h&]uh1hhjubh)}(h**Description**h]jJ)}(hjRh]h Description}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjPubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM[hjubh)}(hmCaller need to have the vm status_lock held. Useful for when multiple update need to happen at the same time.h]hmCaller need to have the vm status_lock held. Useful for when multiple update need to happen at the same time.}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMZhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjxhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j#amdgpu_vm_update_stats (C function)c.amdgpu_vm_update_statshNtauh1jhjxhhhNhNubj)}(hhh](j)}(h`void amdgpu_vm_update_stats (struct amdgpu_vm_bo_base *base, struct ttm_resource *res, int sign)h]j )}(h_void amdgpu_vm_update_stats(struct amdgpu_vm_bo_base *base, struct ttm_resource *res, int sign)h](j&)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM}ubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjhhhjhM}ubjI)}(hamdgpu_vm_update_statsh]jO)}(hamdgpu_vm_update_statsh]hamdgpu_vm_update_stats}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjhhhjhM}ubjj)}(hD(struct amdgpu_vm_bo_base *base, struct ttm_resource *res, int sign)h](jp)}(hstruct amdgpu_vm_bo_base *baseh](jv)}(hjyh]hstruct}(hjԝhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjНubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjНubh)}(hhh]jO)}(hamdgpu_vm_bo_baseh]hamdgpu_vm_bo_base}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.amdgpu_vm_update_statsasbuh1hhjНubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjНubj)}(hj4h]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjНubjO)}(hbaseh]hbase}(hj-hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjНubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj̝ubjp)}(hstruct ttm_resource *resh](jv)}(hjyh]hstruct}(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjBubj8)}(h h]h }(hjShhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjBubh)}(hhh]jO)}(h ttm_resourceh]h ttm_resource}(hjdhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjaubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjfmodnameN classnameNjj)}j]jc.amdgpu_vm_update_statsasbuh1hhjBubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjBubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjBubjO)}(hresh]hres}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjBubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj̝ubjp)}(hint signh](j&)}(hinth]hint}(hjhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjubj8)}(h h]h }(hjĞhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubjO)}(hsignh]hsign}(hjҞhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj̝ubeh}(h]h ]h"]h$]h&]jgjhuh1jihjhhhjhM}ubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjhhhjhM}ubah}(h]jah ](jjeh"]h$]h&]j j )j huh1jhjhM}hjhhubj )}(hhh]h)}(h#helper to update normal memory stath]h#helper to update normal memory stat}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM}hjhhubah}(h]h ]h"]h$]h&]uh1j hjhhhjhM}ubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjjSjjTjUjVuh1jhhhjxhNhNubjX)}(hXr**Parameters** ``struct amdgpu_vm_bo_base *base`` base structure for tracking BO usage in a VM ``struct ttm_resource *res`` the ttm_resource to use for the purpose of accounting, may or may not be bo->tbo.resource ``int sign`` if we should add (+1) or subtract (-1) from the stat **Description** Updates the basic memory stat when bo is added/deleted/moved.h](h)}(h**Parameters**h]jJ)}(hjh]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(hhh](h)}(hP``struct amdgpu_vm_bo_base *base`` base structure for tracking BO usage in a VM h](j)}(h"``struct amdgpu_vm_bo_base *base``h]j)}(hj=h]hstruct amdgpu_vm_bo_base *base}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM~hj7ubj)}(hhh]h)}(h,base structure for tracking BO usage in a VMh]h,base structure for tracking BO usage in a VM}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjRhM~hjSubah}(h]h ]h"]h$]h&]uh1jhj7ubeh}(h]h ]h"]h$]h&]uh1hhjRhM~hj4ubh)}(hw``struct ttm_resource *res`` the ttm_resource to use for the purpose of accounting, may or may not be bo->tbo.resource h](j)}(h``struct ttm_resource *res``h]j)}(hjvh]hstruct ttm_resource *res}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjpubj)}(hhh]h)}(hYthe ttm_resource to use for the purpose of accounting, may or may not be bo->tbo.resourceh]hYthe ttm_resource to use for the purpose of accounting, may or may not be bo->tbo.resource}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubah}(h]h ]h"]h$]h&]uh1jhjpubeh}(h]h ]h"]h$]h&]uh1hhjhMhj4ubh)}(hB``int sign`` if we should add (+1) or subtract (-1) from the stat h](j)}(h ``int sign``h]j)}(hjh]hint sign}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj)}(hhh]h)}(h4if we should add (+1) or subtract (-1) from the stath]h4if we should add (+1) or subtract (-1) from the stat}(hjɟhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjşhMhjƟubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjşhMhj4ubeh}(h]h ]h"]h$]h&]uh1hhjubh)}(h**Description**h]jJ)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(h=Updates the basic memory stat when bo is added/deleted/moved.h]h=Updates the basic memory stat when bo is added/deleted/moved.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjxhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j#amdgpu_vm_bo_base_init (C function)c.amdgpu_vm_bo_base_inithNtauh1jhjxhhhNhNubj)}(hhh](j)}(hhvoid amdgpu_vm_bo_base_init (struct amdgpu_vm_bo_base *base, struct amdgpu_vm *vm, struct amdgpu_bo *bo)h]j )}(hgvoid amdgpu_vm_bo_base_init(struct amdgpu_vm_bo_base *base, struct amdgpu_vm *vm, struct amdgpu_bo *bo)h](j&)}(hvoidh]hvoid}(hj0hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hj,hhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMubj8)}(h h]h }(hj?hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj,hhhj>hMubjI)}(hamdgpu_vm_bo_base_inith]jO)}(hamdgpu_vm_bo_base_inith]hamdgpu_vm_bo_base_init}(hjQhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjMubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhj,hhhj>hMubjj)}(hL(struct amdgpu_vm_bo_base *base, struct amdgpu_vm *vm, struct amdgpu_bo *bo)h](jp)}(hstruct amdgpu_vm_bo_base *baseh](jv)}(hjyh]hstruct}(hjmhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjiubj8)}(h h]h }(hjzhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjiubh)}(hhh]jO)}(hamdgpu_vm_bo_baseh]hamdgpu_vm_bo_base}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjSsbc.amdgpu_vm_bo_base_initasbuh1hhjiubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjiubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjiubjO)}(hbaseh]hbase}(hjƠhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjiubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjeubjp)}(hstruct amdgpu_vm *vmh](jv)}(hjyh]hstruct}(hjߠhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj۠ubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj۠ubh)}(hhh]jO)}(h amdgpu_vmh]h amdgpu_vm}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.amdgpu_vm_bo_base_initasbuh1hhj۠ubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj۠ubj)}(hj4h]h*}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj۠ubjO)}(hvmh]hvm}(hj6hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj۠ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjeubjp)}(hstruct amdgpu_bo *boh](jv)}(hjyh]hstruct}(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjKubj8)}(h h]h }(hj\hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjKubh)}(hhh]jO)}(h amdgpu_boh]h amdgpu_bo}(hjmhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjomodnameN classnameNjj)}j]jc.amdgpu_vm_bo_base_initasbuh1hhjKubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjKubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjKubjO)}(hboh]hbo}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjKubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjeubeh}(h]h ]h"]h$]h&]jgjhuh1jihj,hhhj>hMubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhj(hhhj>hMubah}(h]j#ah ](jjeh"]h$]h&]j j )j huh1jhj>hMhj%hhubj )}(hhh]h)}(h1Adds bo to the list of bos associated with the vmh]h1Adds bo to the list of bos associated with the vm}(hjСhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj͡hhubah}(h]h ]h"]h$]h&]uh1j hj%hhhj>hMubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjjSjjTjUjVuh1jhhhjxhNhNubjX)}(hX$**Parameters** ``struct amdgpu_vm_bo_base *base`` base structure for tracking BO usage in a VM ``struct amdgpu_vm *vm`` vm to which bo is to be added ``struct amdgpu_bo *bo`` amdgpu buffer object **Description** Initialize a bo_va_base structure and add it to the appropriate listsh](h)}(h**Parameters**h]jJ)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(hhh](h)}(hP``struct amdgpu_vm_bo_base *base`` base structure for tracking BO usage in a VM h](j)}(h"``struct amdgpu_vm_bo_base *base``h]j)}(hjh]hstruct amdgpu_vm_bo_base *base}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj ubj)}(hhh]h)}(h,base structure for tracking BO usage in a VMh]h,base structure for tracking BO usage in a VM}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&hMhj'ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1hhj&hMhjubh)}(h7``struct amdgpu_vm *vm`` vm to which bo is to be added h](j)}(h``struct amdgpu_vm *vm``h]j)}(hjJh]hstruct amdgpu_vm *vm}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjDubj)}(hhh]h)}(hvm to which bo is to be addedh]hvm to which bo is to be added}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhj_hMhj`ubah}(h]h ]h"]h$]h&]uh1jhjDubeh}(h]h ]h"]h$]h&]uh1hhj_hMhjubh)}(h.``struct amdgpu_bo *bo`` amdgpu buffer object h](j)}(h``struct amdgpu_bo *bo``h]j)}(hjh]hstruct amdgpu_bo *bo}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj}ubj)}(hhh]h)}(hamdgpu buffer objecth]hamdgpu buffer object}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhj}ubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubeh}(h]h ]h"]h$]h&]uh1hhjubh)}(h**Description**h]jJ)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(hEInitialize a bo_va_base structure and add it to the appropriate listsh]hEInitialize a bo_va_base structure and add it to the appropriate lists}(hjԢhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjxhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jamdgpu_vm_lock_pd (C function)c.amdgpu_vm_lock_pdhNtauh1jhjxhhhNhNubj)}(hhh](j)}(h\int amdgpu_vm_lock_pd (struct amdgpu_vm *vm, struct drm_exec *exec, unsigned int num_fences)h]j )}(h[int amdgpu_vm_lock_pd(struct amdgpu_vm *vm, struct drm_exec *exec, unsigned int num_fences)h](j&)}(hinth]hint}(hjhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjhhhjhMubjI)}(hamdgpu_vm_lock_pdh]jO)}(hamdgpu_vm_lock_pdh]hamdgpu_vm_lock_pd}(hj$hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj ubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjhhhjhMubjj)}(hF(struct amdgpu_vm *vm, struct drm_exec *exec, unsigned int num_fences)h](jp)}(hstruct amdgpu_vm *vmh](jv)}(hjyh]hstruct}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj<ubj8)}(h h]h }(hjMhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj<ubh)}(hhh]jO)}(h amdgpu_vmh]h amdgpu_vm}(hj^hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj[ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj`modnameN classnameNjj)}j]j)}jj&sbc.amdgpu_vm_lock_pdasbuh1hhj<ubj8)}(h h]h }(hj~hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj<ubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<ubjO)}(hvmh]hvm}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj<ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj8ubjp)}(hstruct drm_exec *exech](jv)}(hjyh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubh)}(hhh]jO)}(hdrm_exech]hdrm_exec}(hjУhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjͣubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjңmodnameN classnameNjj)}j]jzc.amdgpu_vm_lock_pdasbuh1hhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(hexech]hexec}(hj hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj8ubjp)}(hunsigned int num_fencesh](j&)}(hunsignedh]hunsigned}(hj"hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjubj8)}(h h]h }(hj0hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj&)}(hinth]hint}(hj>hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjubj8)}(h h]h }(hjLhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubjO)}(h num_fencesh]h num_fences}(hjZhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj8ubeh}(h]h ]h"]h$]h&]jgjhuh1jihjhhhjhMubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjhhhjhMubah}(h]jah ](jjeh"]h$]h&]j j )j huh1jhjhMhjhhubj )}(hhh]h)}(hlock PD in drm_exech]hlock PD in drm_exec}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjhhubah}(h]h ]h"]h$]h&]uh1j hjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjjSjjTjUjVuh1jhhhjxhNhNubjX)}(h**Parameters** ``struct amdgpu_vm *vm`` vm providing the BOs ``struct drm_exec *exec`` drm execution context ``unsigned int num_fences`` number of extra fences to reserve **Description** Lock the VM root PD in the DRM execution context.h](h)}(h**Parameters**h]jJ)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(hhh](h)}(h.``struct amdgpu_vm *vm`` vm providing the BOs h](j)}(h``struct amdgpu_vm *vm``h]j)}(hjŤh]hstruct amdgpu_vm *vm}(hjǤhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjäubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj)}(hhh]h)}(hvm providing the BOsh]hvm providing the BOs}(hjޤhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjڤhMhjۤubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjڤhMhjubh)}(h0``struct drm_exec *exec`` drm execution context h](j)}(h``struct drm_exec *exec``h]j)}(hjh]hstruct drm_exec *exec}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj)}(hhh]h)}(hdrm execution contexth]hdrm execution context}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubh)}(h>``unsigned int num_fences`` number of extra fences to reserve h](j)}(h``unsigned int num_fences``h]j)}(hj7h]hunsigned int num_fences}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj1ubj)}(hhh]h)}(h!number of extra fences to reserveh]h!number of extra fences to reserve}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjLhMhjMubah}(h]h ]h"]h$]h&]uh1jhj1ubeh}(h]h ]h"]h$]h&]uh1hhjLhMhjubeh}(h]h ]h"]h$]h&]uh1hhjubh)}(h**Description**h]jJ)}(hjrh]h Description}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjpubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(h1Lock the VM root PD in the DRM execution context.h]h1Lock the VM root PD in the DRM execution context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjxhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j%amdgpu_vm_lock_done_list (C function)c.amdgpu_vm_lock_done_listhNtauh1jhjxhhhNhNubj)}(hhh](j)}(hcint amdgpu_vm_lock_done_list (struct amdgpu_vm *vm, struct drm_exec *exec, unsigned int num_fences)h]j )}(hbint amdgpu_vm_lock_done_list(struct amdgpu_vm *vm, struct drm_exec *exec, unsigned int num_fences)h](j&)}(hinth]hint}(hjhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMubj8)}(h h]h }(hjƥhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjhhhjťhMubjI)}(hamdgpu_vm_lock_done_listh]jO)}(hamdgpu_vm_lock_done_listh]hamdgpu_vm_lock_done_list}(hjإhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjԥubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjhhhjťhMubjj)}(hF(struct amdgpu_vm *vm, struct drm_exec *exec, unsigned int num_fences)h](jp)}(hstruct amdgpu_vm *vmh](jv)}(hjyh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubh)}(hhh]jO)}(h amdgpu_vmh]h amdgpu_vm}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjڥsbc.amdgpu_vm_lock_done_listasbuh1hhjubj8)}(h h]h }(hj2hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(hvmh]hvm}(hjMhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(hstruct drm_exec *exech](jv)}(hjyh]hstruct}(hjfhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjbubj8)}(h h]h }(hjshhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjbubh)}(hhh]jO)}(hdrm_exech]hdrm_exec}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j.c.amdgpu_vm_lock_done_listasbuh1hhjbubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjbubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjbubjO)}(hexech]hexec}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjbubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(hunsigned int num_fencesh](j&)}(hunsignedh]hunsigned}(hj֦hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjҦubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjҦubj&)}(hinth]hint}(hjhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjҦubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjҦubjO)}(h num_fencesh]h num_fences}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjҦubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubeh}(h]h ]h"]h$]h&]jgjhuh1jihjhhhjťhMubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjhhhjťhMubah}(h]jah ](jjeh"]h$]h&]j j )j huh1jhjťhMhjhhubj )}(hhh]h)}(hlock all BOs on the done listh]hlock all BOs on the done list}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj5hhubah}(h]h ]h"]h$]h&]uh1j hjhhhjťhMubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjPjSjPjTjUjVuh1jhhhjxhNhNubjX)}(hX**Parameters** ``struct amdgpu_vm *vm`` vm providing the BOs ``struct drm_exec *exec`` drm execution context ``unsigned int num_fences`` number of extra fences to reserve **Description** Lock the BOs on the done list in the DRM execution context.h](h)}(h**Parameters**h]jJ)}(hjZh]h Parameters}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjXubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjTubh)}(hhh](h)}(h.``struct amdgpu_vm *vm`` vm providing the BOs h](j)}(h``struct amdgpu_vm *vm``h]j)}(hjyh]hstruct amdgpu_vm *vm}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjwubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjsubj)}(hhh]h)}(hvm providing the BOsh]hvm providing the BOs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjsubeh}(h]h ]h"]h$]h&]uh1hhjhMhjpubh)}(h0``struct drm_exec *exec`` drm execution context h](j)}(h``struct drm_exec *exec``h]j)}(hjh]hstruct drm_exec *exec}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj)}(hhh]h)}(hdrm execution contexth]hdrm execution context}(hj˧hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjǧhMhjȧubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjǧhMhjpubh)}(h>``unsigned int num_fences`` number of extra fences to reserve h](j)}(h``unsigned int num_fences``h]j)}(hjh]hunsigned int num_fences}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj)}(hhh]h)}(h!number of extra fences to reserveh]h!number of extra fences to reserve}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMhjpubeh}(h]h ]h"]h$]h&]uh1hhjTubh)}(h**Description**h]jJ)}(hj&h]h Description}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj$ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjTubh)}(h;Lock the BOs on the done list in the DRM execution context.h]h;Lock the BOs on the done list in the DRM execution context.}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjTubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjxhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'amdgpu_vm_move_to_lru_tail (C function)c.amdgpu_vm_move_to_lru_tailhNtauh1jhjxhhhNhNubj)}(hhh](j)}(hRvoid amdgpu_vm_move_to_lru_tail (struct amdgpu_device *adev, struct amdgpu_vm *vm)h]j )}(hQvoid amdgpu_vm_move_to_lru_tail(struct amdgpu_device *adev, struct amdgpu_vm *vm)h](j&)}(hvoidh]hvoid}(hjkhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjghhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMubj8)}(h h]h }(hjzhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjghhhjyhMubjI)}(hamdgpu_vm_move_to_lru_tailh]jO)}(hamdgpu_vm_move_to_lru_tailh]hamdgpu_vm_move_to_lru_tail}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjghhhjyhMubjj)}(h2(struct amdgpu_device *adev, struct amdgpu_vm *vm)h](jp)}(hstruct amdgpu_device *adevh](jv)}(hjyh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubh)}(hhh]jO)}(h amdgpu_deviceh]h amdgpu_device}(hjƨhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjèubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjȨmodnameN classnameNjj)}j]j)}jjsbc.amdgpu_vm_move_to_lru_tailasbuh1hhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(hadevh]hadev}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(hstruct amdgpu_vm *vmh](jv)}(hjyh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjubj8)}(h h]h }(hj'hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubh)}(hhh]jO)}(h amdgpu_vmh]h amdgpu_vm}(hj8hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj5ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj:modnameN classnameNjj)}j]jc.amdgpu_vm_move_to_lru_tailasbuh1hhjubj8)}(h h]h }(hjVhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(hvmh]hvm}(hjqhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubeh}(h]h ]h"]h$]h&]jgjhuh1jihjghhhjyhMubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjchhhjyhMubah}(h]j^ah ](jjeh"]h$]h&]j j )j huh1jhjyhMhj`hhubj )}(hhh]h)}(hmove all BOs to the end of LRUh]hmove all BOs to the end of LRU}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjhhubah}(h]h ]h"]h$]h&]uh1j hj`hhhjyhMubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjjSjjTjUjVuh1jhhhjxhNhNubjX)}(h**Parameters** ``struct amdgpu_device *adev`` amdgpu device pointer ``struct amdgpu_vm *vm`` vm providing the BOs **Description** Move all BOs to the end of LRU and remember their positions to put them together.h](h)}(h**Parameters**h]jJ)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(hhh](h)}(h5``struct amdgpu_device *adev`` amdgpu device pointer h](j)}(h``struct amdgpu_device *adev``h]j)}(hjܩh]hstruct amdgpu_device *adev}(hjީhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjکubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj֩ubj)}(hhh]h)}(hamdgpu device pointerh]hamdgpu device pointer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhj֩ubeh}(h]h ]h"]h$]h&]uh1hhjhMhjөubh)}(h.``struct amdgpu_vm *vm`` vm providing the BOs h](j)}(h``struct amdgpu_vm *vm``h]j)}(hjh]hstruct amdgpu_vm *vm}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj)}(hhh]h)}(hvm providing the BOsh]hvm providing the BOs}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*hMhj+ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhj*hMhjөubeh}(h]h ]h"]h$]h&]uh1hhjubh)}(h**Description**h]jJ)}(hjPh]h Description}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(hQMove all BOs to the end of LRU and remember their positions to put them together.h]hQMove all BOs to the end of LRU and remember their positions to put them together.}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjxhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j!amdgpu_vm_generation (C function)c.amdgpu_vm_generationhNtauh1jhjxhhhNhNubj)}(hhh](j)}(hPuint64_t amdgpu_vm_generation (struct amdgpu_device *adev, struct amdgpu_vm *vm)h]j )}(hOuint64_t amdgpu_vm_generation(struct amdgpu_device *adev, struct amdgpu_vm *vm)h](h)}(hhh]jO)}(huint64_th]huint64_t}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jamdgpu_vm_generationsbc.amdgpu_vm_generationasbuh1hhjhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM%ubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjhhhjhM%ubjI)}(hamdgpu_vm_generationh]jO)}(hjh]hamdgpu_vm_generation}(hj̪hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjȪubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjhhhjhM%ubjj)}(h2(struct amdgpu_device *adev, struct amdgpu_vm *vm)h](jp)}(hstruct amdgpu_device *adevh](jv)}(hjyh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubh)}(hhh]jO)}(h amdgpu_deviceh]h amdgpu_device}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.amdgpu_vm_generationasbuh1hhjubj8)}(h h]h }(hj#hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(hadevh]hadev}(hj>hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjߪubjp)}(hstruct amdgpu_vm *vmh](jv)}(hjyh]hstruct}(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjSubj8)}(h h]h }(hjdhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjSubh)}(hhh]jO)}(h amdgpu_vmh]h amdgpu_vm}(hjuhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjrubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjwmodnameN classnameNjj)}j]jc.amdgpu_vm_generationasbuh1hhjSubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjSubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjSubjO)}(hvmh]hvm}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjSubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjߪubeh}(h]h ]h"]h$]h&]jgjhuh1jihjhhhjhM%ubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjhhhjhM%ubah}(h]jah ](jjeh"]h$]h&]j j )j huh1jhjhM%hjhhubj )}(hhh]h)}(h+return the page table re-generation counterh]h+return the page table re-generation counter}(hjثhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM%hjիhhubah}(h]h ]h"]h$]h&]uh1j hjhhhjhM%ubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjjSjjTjUjVuh1jhhhjxhNhNubjX)}(hXT**Parameters** ``struct amdgpu_device *adev`` the amdgpu_device ``struct amdgpu_vm *vm`` optional VM to check, might be NULL **Description** Returns a page table re-generation token to allow checking if submissions are still valid to use this VM. The VM parameter might be NULL in which case just the VRAM lost counter will be used.h](h)}(h**Parameters**h]jJ)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM)hjubh)}(hhh](h)}(h1``struct amdgpu_device *adev`` the amdgpu_device h](j)}(h``struct amdgpu_device *adev``h]j)}(hjh]hstruct amdgpu_device *adev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM&hjubj)}(hhh]h)}(hthe amdgpu_deviceh]hthe amdgpu_device}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj.hM&hj/ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhj.hM&hjubh)}(h=``struct amdgpu_vm *vm`` optional VM to check, might be NULL h](j)}(h``struct amdgpu_vm *vm``h]j)}(hjRh]hstruct amdgpu_vm *vm}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM'hjLubj)}(hhh]h)}(h#optional VM to check, might be NULLh]h#optional VM to check, might be NULL}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjghM'hjhubah}(h]h ]h"]h$]h&]uh1jhjLubeh}(h]h ]h"]h$]h&]uh1hhjghM'hjubeh}(h]h ]h"]h$]h&]uh1hhjubh)}(h**Description**h]jJ)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM)hjubh)}(hReturns a page table re-generation token to allow checking if submissions are still valid to use this VM. The VM parameter might be NULL in which case just the VRAM lost counter will be used.h]hReturns a page table re-generation token to allow checking if submissions are still valid to use this VM. The VM parameter might be NULL in which case just the VRAM lost counter will be used.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM(hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjxhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jamdgpu_vm_validate (C function)c.amdgpu_vm_validatehNtauh1jhjxhhhNhNubj)}(hhh](j)}(hint amdgpu_vm_validate (struct amdgpu_device *adev, struct amdgpu_vm *vm, struct ww_acquire_ctx *ticket, int (*validate)(void *p, struct amdgpu_bo *bo), void *param)h]j )}(hint amdgpu_vm_validate(struct amdgpu_device *adev, struct amdgpu_vm *vm, struct ww_acquire_ctx *ticket, int (*validate)(void *p, struct amdgpu_bo *bo), void *param)h](j&)}(hinth]hint}(hjҬhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjάhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM=ubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjάhhhjhM=ubjI)}(hamdgpu_vm_validateh]jO)}(hamdgpu_vm_validateh]hamdgpu_vm_validate}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjάhhhjhM=ubjj)}(h(struct amdgpu_device *adev, struct amdgpu_vm *vm, struct ww_acquire_ctx *ticket, int (*validate)(void *p, struct amdgpu_bo *bo), void *param)h](jp)}(hstruct amdgpu_device *adevh](jv)}(hjyh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj ubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj ubh)}(hhh]jO)}(h amdgpu_deviceh]h amdgpu_device}(hj-hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj*ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj/modnameN classnameNjj)}j]j)}jjsbc.amdgpu_vm_validateasbuh1hhj ubj8)}(h h]h }(hjMhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj ubj)}(hj4h]h*}(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubjO)}(hadevh]hadev}(hjhhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(hstruct amdgpu_vm *vmh](jv)}(hjyh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj}ubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj}ubh)}(hhh]jO)}(h amdgpu_vmh]h amdgpu_vm}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jIc.amdgpu_vm_validateasbuh1hhj}ubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj}ubj)}(hj4h]h*}(hj˭hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubjO)}(hvmh]hvm}(hjحhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj}ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(hstruct ww_acquire_ctx *ticketh](jv)}(hjyh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubh)}(hhh]jO)}(hww_acquire_ctxh]hww_acquire_ctx}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jIc.amdgpu_vm_validateasbuh1hhjubj8)}(h h]h }(hj-hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hj;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(hticketh]hticket}(hjHhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(h.int (*validate)(void *p, struct amdgpu_bo *bo)h](j&)}(hinth]hint}(hjahhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hj]ubj8)}(h h]h }(hjohhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj]ubj)}(h(h]h(}(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubjO)}(hvalidateh]hvalidate}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj]ubj)}(h)h]h)}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubj)}(hjh]h(}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubj&)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hj]ubj8)}(h h]h }(hjϮhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj]ubj)}(hj4h]h*}(hjݮhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubjO)}(hjh]hp}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj]ubj)}(h,h]h,}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj]ubjv)}(hjyh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj]ubj8)}(h h]h }(hj hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj]ubh)}(hhh]jO)}(h amdgpu_boh]h amdgpu_bo}(hj1hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj.ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj3modnameN classnameNjj)}j]jIc.amdgpu_vm_validateasbuh1hhj]ubj8)}(h h]h }(hjOhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj]ubj)}(hj4h]h*}(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubjO)}(hboh]hbo}(hjjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj]ubj)}(hjh]h)}(hjxhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(h void *paramh](j&)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(hparamh]hparam}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubeh}(h]h ]h"]h$]h&]jgjhuh1jihjάhhhjhM=ubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjʬhhhjhM=ubah}(h]jŬah ](jjeh"]h$]h&]j j )j huh1jhjhM=hjǬhhubj )}(hhh]h)}(h&validate evicted BOs tracked in the VMh]h&validate evicted BOs tracked in the VM}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM=hjhhubah}(h]h ]h"]h$]h&]uh1j hjǬhhhjhM=ubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjjSjjTjUjVuh1jhhhjxhNhNubjX)}(hXU**Parameters** ``struct amdgpu_device *adev`` amdgpu device pointer ``struct amdgpu_vm *vm`` vm providing the BOs ``struct ww_acquire_ctx *ticket`` optional reservation ticket used to reserve the VM ``int (*validate)(void *p, struct amdgpu_bo *bo)`` callback to do the validation ``void *param`` parameter for the validation callback **Description** Validate the page table BOs and per-VM BOs on command submission if necessary. If a ticket is given, also try to validate evicted user queue BOs. They must already be reserved with the given ticket. **Return** Validation result.h](h)}(h**Parameters**h]jJ)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMAhjubh)}(hhh](h)}(h5``struct amdgpu_device *adev`` amdgpu device pointer h](j)}(h``struct amdgpu_device *adev``h]j)}(hj$h]hstruct amdgpu_device *adev}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM?hjubj)}(hhh]h)}(hamdgpu device pointerh]hamdgpu device pointer}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9hM?hj:ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhj9hM?hjubh)}(h.``struct amdgpu_vm *vm`` vm providing the BOs h](j)}(h``struct amdgpu_vm *vm``h]j)}(hj]h]hstruct amdgpu_vm *vm}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM@hjWubj)}(hhh]h)}(hvm providing the BOsh]hvm providing the BOs}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjrhM@hjsubah}(h]h ]h"]h$]h&]uh1jhjWubeh}(h]h ]h"]h$]h&]uh1hhjrhM@hjubh)}(hU``struct ww_acquire_ctx *ticket`` optional reservation ticket used to reserve the VM h](j)}(h!``struct ww_acquire_ctx *ticket``h]j)}(hjh]hstruct ww_acquire_ctx *ticket}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMAhjubj)}(hhh]h)}(h2optional reservation ticket used to reserve the VMh]h2optional reservation ticket used to reserve the VM}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMAhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMAhjubh)}(hQ``int (*validate)(void *p, struct amdgpu_bo *bo)`` callback to do the validation h](j)}(h2``int (*validate)(void *p, struct amdgpu_bo *bo)``h]j)}(hjϰh]h.int (*validate)(void *p, struct amdgpu_bo *bo)}(hjѰhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjͰubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMBhjɰubj)}(hhh]h)}(hcallback to do the validationh]hcallback to do the validation}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMBhjubah}(h]h ]h"]h$]h&]uh1jhjɰubeh}(h]h ]h"]h$]h&]uh1hhjhMBhjubh)}(h6``void *param`` parameter for the validation callback h](j)}(h``void *param``h]j)}(hjh]h void *param}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMChjubj)}(hhh]h)}(h%parameter for the validation callbackh]h%parameter for the validation callback}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMChjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMChjubeh}(h]h ]h"]h$]h&]uh1hhjubh)}(h**Description**h]jJ)}(hjCh]h Description}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjAubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMEhjubh)}(hValidate the page table BOs and per-VM BOs on command submission if necessary. If a ticket is given, also try to validate evicted user queue BOs. They must already be reserved with the given ticket.h]hValidate the page table BOs and per-VM BOs on command submission if necessary. If a ticket is given, also try to validate evicted user queue BOs. They must already be reserved with the given ticket.}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMDhjubh)}(h **Return**h]jJ)}(hjjh]hReturn}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjhubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMHhjubh)}(hValidation result.h]hValidation result.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMIhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjxhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jamdgpu_vm_ready (C function)c.amdgpu_vm_readyhNtauh1jhjxhhhNhNubj)}(hhh](j)}(h+bool amdgpu_vm_ready (struct amdgpu_vm *vm)h]j )}(h*bool amdgpu_vm_ready(struct amdgpu_vm *vm)h](j&)}(hj)h]hbool}(hjhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjhhhjhMubjI)}(hamdgpu_vm_readyh]jO)}(hamdgpu_vm_readyh]hamdgpu_vm_ready}(hjϱhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj˱ubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjhhhjhMubjj)}(h(struct amdgpu_vm *vm)h]jp)}(hstruct amdgpu_vm *vmh](jv)}(hjyh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubh)}(hhh]jO)}(h amdgpu_vmh]h amdgpu_vm}(hj hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jjѱsbc.amdgpu_vm_readyasbuh1hhjubj8)}(h h]h }(hj)hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(hvmh]hvm}(hjDhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubah}(h]h ]h"]h$]h&]jgjhuh1jihjhhhjhMubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjhhhjhMubah}(h]jah ](jjeh"]h$]h&]j j )j huh1jhjhMhjhhubj )}(hhh]h)}(hcheck VM is ready for updatesh]hcheck VM is ready for updates}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjkhhubah}(h]h ]h"]h$]h&]uh1j hjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjjSjjTjUjVuh1jhhhjxhNhNubjX)}(h**Parameters** ``struct amdgpu_vm *vm`` VM to check **Description** Check if all VM PDs/PTs are ready for updates **Return** True if VM is not evicting and all VM entities are not stoppedh](h)}(h**Parameters**h]jJ)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(hhh]h)}(h%``struct amdgpu_vm *vm`` VM to check h](j)}(h``struct amdgpu_vm *vm``h]j)}(hjh]hstruct amdgpu_vm *vm}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj)}(hhh]h)}(h VM to checkh]h VM to check}(hjȲhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjIJhMhjŲubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjIJhMhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h**Description**h]jJ)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(h-Check if all VM PDs/PTs are ready for updatesh]h-Check if all VM PDs/PTs are ready for updates}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(h **Return**h]jJ)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(h>True if VM is not evicting and all VM entities are not stoppedh]h>True if VM is not evicting and all VM entities are not stopped}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjxhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j(amdgpu_vm_check_compute_bug (C function)c.amdgpu_vm_check_compute_bughNtauh1jhjxhhhNhNubj)}(hhh](j)}(h=void amdgpu_vm_check_compute_bug (struct amdgpu_device *adev)h]j )}(hhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj;hhubah}(h]h ]h"]h$]h&]uh1j hj϶hhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjVjSjVjTjUjVuh1jhhhjxhNhNubjX)}(hX**Parameters** ``struct amdgpu_ring *ring`` ring to use for flush ``struct amdgpu_job *job`` related job ``bool need_pipe_sync`` is pipe sync needed **Description** Emit a VM flush when it is necessary. **Return** 0 on success, errno otherwise.h](h)}(h**Parameters**h]jJ)}(hj`h]h Parameters}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj^ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjZubh)}(hhh](h)}(h3``struct amdgpu_ring *ring`` ring to use for flush h](j)}(h``struct amdgpu_ring *ring``h]j)}(hjh]hstruct amdgpu_ring *ring}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjyubj)}(hhh]h)}(hring to use for flushh]hring to use for flush}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjyubeh}(h]h ]h"]h$]h&]uh1hhjhMhjvubh)}(h'``struct amdgpu_job *job`` related job h](j)}(h``struct amdgpu_job *job``h]j)}(hjh]hstruct amdgpu_job *job}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj)}(hhh]h)}(h related jobh]h related job}(hjѸhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj͸hMhjθubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhj͸hMhjvubh)}(h,``bool need_pipe_sync`` is pipe sync needed h](j)}(h``bool need_pipe_sync``h]j)}(hjh]hbool need_pipe_sync}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj)}(hhh]h)}(his pipe sync neededh]his pipe sync needed}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMhjvubeh}(h]h ]h"]h$]h&]uh1hhjZubh)}(h**Description**h]jJ)}(hj,h]h Description}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj*ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjZubh)}(h%Emit a VM flush when it is necessary.h]h%Emit a VM flush when it is necessary.}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjZubh)}(h **Return**h]jJ)}(hjSh]hReturn}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjQubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjZubh)}(h0 on success, errno otherwise.h]h0 on success, errno otherwise.}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjZubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjxhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jamdgpu_vm_bo_find (C function)c.amdgpu_vm_bo_findhNtauh1jhjxhhhNhNubj)}(hhh](j)}(hTstruct amdgpu_bo_va * amdgpu_vm_bo_find (struct amdgpu_vm *vm, struct amdgpu_bo *bo)h]j )}(hRstruct amdgpu_bo_va *amdgpu_vm_bo_find(struct amdgpu_vm *vm, struct amdgpu_bo *bo)h](jv)}(hjyh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjhhhjhMubh)}(hhh]jO)}(h amdgpu_bo_vah]h amdgpu_bo_va}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jamdgpu_vm_bo_findsbc.amdgpu_vm_bo_findasbuh1hhjhhhjhMubj8)}(h h]h }(hjعhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjhhhjhMubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubjI)}(hamdgpu_vm_bo_findh]jO)}(hjչh]hamdgpu_vm_bo_find}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjhhhjhMubjj)}(h,(struct amdgpu_vm *vm, struct amdgpu_bo *bo)h](jp)}(hstruct amdgpu_vm *vmh](jv)}(hjyh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubh)}(hhh]jO)}(h amdgpu_vmh]h amdgpu_vm}(hj0hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj-ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj2modnameN classnameNjj)}j]jӹc.amdgpu_vm_bo_findasbuh1hhjubj8)}(h h]h }(hjNhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(hvmh]hvm}(hjihhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj ubjp)}(hstruct amdgpu_bo *boh](jv)}(hjyh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj~ubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj~ubh)}(hhh]jO)}(h amdgpu_boh]h amdgpu_bo}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jӹc.amdgpu_vm_bo_findasbuh1hhj~ubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj~ubj)}(hj4h]h*}(hj̺hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~ubjO)}(hboh]hbo}(hjٺhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj~ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj ubeh}(h]h ]h"]h$]h&]jgjhuh1jihjhhhjhMubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjhhhjhMubah}(h]jah ](jjeh"]h$]h&]j j )j huh1jhjhMhjhhubj )}(hhh]h)}(h%find the bo_va for a specific vm & boh]h%find the bo_va for a specific vm & bo}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjhhubah}(h]h ]h"]h$]h&]uh1j hjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjjSjjTjUjVuh1jhhhjxhNhNubjX)}(hXH**Parameters** ``struct amdgpu_vm *vm`` requested vm ``struct amdgpu_bo *bo`` requested buffer object **Description** Find **bo** inside the requested vm. Search inside the **bos** vm list for the requested vm Returns the found bo_va or NULL if none is found Object has to be reserved! **Return** Found bo_va or NULL.h](h)}(h**Parameters**h]jJ)}(hj%h]h Parameters}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj#ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(hhh](h)}(h&``struct amdgpu_vm *vm`` requested vm h](j)}(h``struct amdgpu_vm *vm``h]j)}(hjDh]hstruct amdgpu_vm *vm}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj>ubj)}(hhh]h)}(h requested vmh]h requested vm}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjYhMhjZubah}(h]h ]h"]h$]h&]uh1jhj>ubeh}(h]h ]h"]h$]h&]uh1hhjYhMhj;ubh)}(h1``struct amdgpu_bo *bo`` requested buffer object h](j)}(h``struct amdgpu_bo *bo``h]j)}(hj}h]hstruct amdgpu_bo *bo}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj{ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjwubj)}(hhh]h)}(hrequested buffer objecth]hrequested buffer object}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjwubeh}(h]h ]h"]h$]h&]uh1hhjhMhj;ubeh}(h]h ]h"]h$]h&]uh1hhjubh)}(h**Description**h]jJ)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(hFind **bo** inside the requested vm. Search inside the **bos** vm list for the requested vm Returns the found bo_va or NULL if none is foundh](hFind }(hjλhhhNhNubjJ)}(h**bo**h]hbo}(hjֻhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjλubh, inside the requested vm. Search inside the }(hjλhhhNhNubjJ)}(h**bos**h]hbos}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjλubhN vm list for the requested vm Returns the found bo_va or NULL if none is found}(hjλhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(hObject has to be reserved!h]hObject has to be reserved!}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(h **Return**h]jJ)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(hFound bo_va or NULL.h]hFound bo_va or NULL.}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjxhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jamdgpu_vm_map_gart (C function)c.amdgpu_vm_map_garthNtauh1jhjxhhhNhNubj)}(hhh](j)}(hIuint64_t amdgpu_vm_map_gart (const dma_addr_t *pages_addr, uint64_t addr)h]j )}(hHuint64_t amdgpu_vm_map_gart(const dma_addr_t *pages_addr, uint64_t addr)h](h)}(hhh]jO)}(huint64_th]huint64_t}(hjZhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjWubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj\modnameN classnameNjj)}j]j)}jamdgpu_vm_map_gartsbc.amdgpu_vm_map_gartasbuh1hhjShhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMubj8)}(h h]h }(hj|hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjShhhj{hMubjI)}(hamdgpu_vm_map_garth]jO)}(hjxh]hamdgpu_vm_map_gart}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjShhhj{hMubjj)}(h-(const dma_addr_t *pages_addr, uint64_t addr)h](jp)}(hconst dma_addr_t *pages_addrh](jv)}(hjh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubh)}(hhh]jO)}(h dma_addr_th]h dma_addr_t}(hjǼhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjļubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjɼmodnameN classnameNjj)}j]jvc.amdgpu_vm_map_gartasbuh1hhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(h pages_addrh]h pages_addr}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(h uint64_t addrh](h)}(hhh]jO)}(huint64_th]huint64_t}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jvc.amdgpu_vm_map_gartasbuh1hhjubj8)}(h h]h }(hj:hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubjO)}(haddrh]haddr}(hjHhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubeh}(h]h ]h"]h$]h&]jgjhuh1jihjShhhj{hMubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjOhhhj{hMubah}(h]jJah ](jjeh"]h$]h&]j j )j huh1jhj{hMhjLhhubj )}(hhh]h)}(hResolve gart mapping of addrh]hResolve gart mapping of addr}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjohhubah}(h]h ]h"]h$]h&]uh1j hjLhhhj{hMubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjjSjjTjUjVuh1jhhhjxhNhNubjX)}(hX**Parameters** ``const dma_addr_t *pages_addr`` optional DMA address to use for lookup ``uint64_t addr`` the unmapped addr **Description** Look up the physical address of the page that the pte resolves to. **Return** The pointer for the page table entry.h](h)}(h**Parameters**h]jJ)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(hhh](h)}(hH``const dma_addr_t *pages_addr`` optional DMA address to use for lookup h](j)}(h ``const dma_addr_t *pages_addr``h]j)}(hjh]hconst dma_addr_t *pages_addr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj)}(hhh]h)}(h&optional DMA address to use for lookuph]h&optional DMA address to use for lookup}(hj̽hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjȽhMhjɽubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjȽhMhjubh)}(h$``uint64_t addr`` the unmapped addr h](j)}(h``uint64_t addr``h]j)}(hjh]h uint64_t addr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj)}(hhh]h)}(hthe unmapped addrh]hthe unmapped addr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubeh}(h]h ]h"]h$]h&]uh1hhjubh)}(h**Description**h]jJ)}(hj'h]h Description}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj%ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(hBLook up the physical address of the page that the pte resolves to.h]hBLook up the physical address of the page that the pte resolves to.}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(h **Return**h]jJ)}(hjNh]hReturn}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjLubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(h%The pointer for the page table entry.h]h%The pointer for the page table entry.}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjxhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j"amdgpu_vm_update_pdes (C function)c.amdgpu_vm_update_pdeshNtauh1jhjxhhhNhNubj)}(hhh](j)}(h\int amdgpu_vm_update_pdes (struct amdgpu_device *adev, struct amdgpu_vm *vm, bool immediate)h]j )}(h[int amdgpu_vm_update_pdes(struct amdgpu_device *adev, struct amdgpu_vm *vm, bool immediate)h](j&)}(hinth]hint}(hjhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjhhhjhMubjI)}(hamdgpu_vm_update_pdesh]jO)}(hamdgpu_vm_update_pdesh]hamdgpu_vm_update_pdes}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjhhhjhMubjj)}(hB(struct amdgpu_device *adev, struct amdgpu_vm *vm, bool immediate)h](jp)}(hstruct amdgpu_device *adevh](jv)}(hjyh]hstruct}(hjоhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj̾ubj8)}(h h]h }(hjݾhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj̾ubh)}(hhh]jO)}(h amdgpu_deviceh]h amdgpu_device}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.amdgpu_vm_update_pdesasbuh1hhj̾ubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj̾ubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj̾ubjO)}(hadevh]hadev}(hj)hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj̾ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjȾubjp)}(hstruct amdgpu_vm *vmh](jv)}(hjyh]hstruct}(hjBhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj>ubj8)}(h h]h }(hjOhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj>ubh)}(hhh]jO)}(h amdgpu_vmh]h amdgpu_vm}(hj`hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj]ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjbmodnameN classnameNjj)}j]j c.amdgpu_vm_update_pdesasbuh1hhj>ubj8)}(h h]h }(hj~hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj>ubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>ubjO)}(hvmh]hvm}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj>ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjȾubjp)}(hbool immediateh](j&)}(hj)h]hbool}(hjhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubjO)}(h immediateh]h immediate}(hjͿhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjȾubeh}(h]h ]h"]h$]h&]jgjhuh1jihjhhhjhMubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjhhhjhMubah}(h]jah ](jjeh"]h$]h&]j j )j huh1jhjhMhjhhubj )}(hhh]h)}(h(make sure that all directories are validh]h(make sure that all directories are valid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjhhubah}(h]h ]h"]h$]h&]uh1j hjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjjSjjTjUjVuh1jhhhjxhNhNubjX)}(hX**Parameters** ``struct amdgpu_device *adev`` amdgpu_device pointer ``struct amdgpu_vm *vm`` requested vm ``bool immediate`` submit immediately to the paging queue **Description** Makes sure all directories are up to date. **Return** 0 for success, error for failure.h](h)}(h**Parameters**h]jJ)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(hhh](h)}(h5``struct amdgpu_device *adev`` amdgpu_device pointer h](j)}(h``struct amdgpu_device *adev``h]j)}(hj8h]hstruct amdgpu_device *adev}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj2ubj)}(hhh]h)}(hamdgpu_device pointerh]hamdgpu_device pointer}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjMhMhjNubah}(h]h ]h"]h$]h&]uh1jhj2ubeh}(h]h ]h"]h$]h&]uh1hhjMhMhj/ubh)}(h&``struct amdgpu_vm *vm`` requested vm h](j)}(h``struct amdgpu_vm *vm``h]j)}(hjqh]hstruct amdgpu_vm *vm}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjkubj)}(hhh]h)}(h requested vmh]h requested vm}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjkubeh}(h]h ]h"]h$]h&]uh1hhjhMhj/ubh)}(h:``bool immediate`` submit immediately to the paging queue h](j)}(h``bool immediate``h]j)}(hjh]hbool immediate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj)}(hhh]h)}(h&submit immediately to the paging queueh]h&submit immediately to the paging queue}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMhj/ubeh}(h]h ]h"]h$]h&]uh1hhjubh)}(h**Description**h]jJ)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(h*Makes sure all directories are up to date.h]h*Makes sure all directories are up to date.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(h **Return**h]jJ)}(hj h]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(h!0 for success, error for failure.h]h!0 for success, error for failure.}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjxhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j!amdgpu_vm_tlb_seq_cb (C function)c.amdgpu_vm_tlb_seq_cbhNtauh1jhjxhhhNhNubj)}(hhh](j)}(hLvoid amdgpu_vm_tlb_seq_cb (struct dma_fence *fence, struct dma_fence_cb *cb)h]j )}(hKvoid amdgpu_vm_tlb_seq_cb(struct dma_fence *fence, struct dma_fence_cb *cb)h](j&)}(hvoidh]hvoid}(hjQhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjMhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMubj8)}(h h]h }(hj`hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjMhhhj_hMubjI)}(hamdgpu_vm_tlb_seq_cbh]jO)}(hamdgpu_vm_tlb_seq_cbh]hamdgpu_vm_tlb_seq_cb}(hjrhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjnubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjMhhhj_hMubjj)}(h2(struct dma_fence *fence, struct dma_fence_cb *cb)h](jp)}(hstruct dma_fence *fenceh](jv)}(hjyh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubh)}(hhh]jO)}(h dma_fenceh]h dma_fence}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjtsbc.amdgpu_vm_tlb_seq_cbasbuh1hhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(hfenceh]hfence}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(hstruct dma_fence_cb *cbh](jv)}(hjyh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjubj8)}(h h]h }(hj hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubh)}(hhh]jO)}(h dma_fence_cbh]h dma_fence_cb}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]jc.amdgpu_vm_tlb_seq_cbasbuh1hhjubj8)}(h h]h }(hj<hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hjJhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(hcbh]hcb}(hjWhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubeh}(h]h ]h"]h$]h&]jgjhuh1jihjMhhhj_hMubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjIhhhj_hMubah}(h]jDah ](jjeh"]h$]h&]j j )j huh1jhj_hMhjFhhubj )}(hhh]h)}(h#make sure to increment tlb sequenceh]h#make sure to increment tlb sequence}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj~hhubah}(h]h ]h"]h$]h&]uh1j hjFhhhj_hMubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjjSjjTjUjVuh1jhhhjxhNhNubjX)}(h**Parameters** ``struct dma_fence *fence`` unused ``struct dma_fence_cb *cb`` the callback structure **Description** Increments the tlb sequence to make sure that future CS execute a VM flush.h](h)}(h**Parameters**h]jJ)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(hhh](h)}(h#``struct dma_fence *fence`` unused h](j)}(h``struct dma_fence *fence``h]j)}(hjh]hstruct dma_fence *fence}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj)}(hhh]h)}(hunusedh]hunused}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubh)}(h3``struct dma_fence_cb *cb`` the callback structure h](j)}(h``struct dma_fence_cb *cb``h]j)}(hjh]hstruct dma_fence_cb *cb}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj)}(hhh]h)}(hthe callback structureh]hthe callback structure}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubeh}(h]h ]h"]h$]h&]uh1hhjubh)}(h**Description**h]jJ)}(hj6h]h Description}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj4ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(hKIncrements the tlb sequence to make sure that future CS execute a VM flush.h]hKIncrements the tlb sequence to make sure that future CS execute a VM flush.}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjxhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j amdgpu_vm_tlb_flush (C function)c.amdgpu_vm_tlb_flushhNtauh1jhjxhhhNhNubj)}(hhh](j)}(hvoid amdgpu_vm_tlb_flush (struct amdgpu_vm_update_params *params, struct dma_fence **fence, struct amdgpu_vm_tlb_seq_struct *tlb_cb)h]j )}(hvoid amdgpu_vm_tlb_flush(struct amdgpu_vm_update_params *params, struct dma_fence **fence, struct amdgpu_vm_tlb_seq_struct *tlb_cb)h](j&)}(hvoidh]hvoid}(hj{hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjwhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjwhhhjhMubjI)}(hamdgpu_vm_tlb_flushh]jO)}(hamdgpu_vm_tlb_flushh]hamdgpu_vm_tlb_flush}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjwhhhjhMubjj)}(hk(struct amdgpu_vm_update_params *params, struct dma_fence **fence, struct amdgpu_vm_tlb_seq_struct *tlb_cb)h](jp)}(h&struct amdgpu_vm_update_params *paramsh](jv)}(hjyh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubh)}(hhh]jO)}(hamdgpu_vm_update_paramsh]hamdgpu_vm_update_params}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.amdgpu_vm_tlb_flushasbuh1hhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(hparamsh]hparams}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(hstruct dma_fence **fenceh](jv)}(hjyh]hstruct}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj&ubj8)}(h h]h }(hj7hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj&ubh)}(hhh]jO)}(h dma_fenceh]h dma_fence}(hjHhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjEubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjJmodnameN classnameNjj)}j]jc.amdgpu_vm_tlb_flushasbuh1hhj&ubj8)}(h h]h }(hjfhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj&ubj)}(hj4h]h*}(hjthhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&ubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&ubjO)}(hfenceh]hfence}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj&ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(h'struct amdgpu_vm_tlb_seq_struct *tlb_cbh](jv)}(hjyh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubh)}(hhh]jO)}(hamdgpu_vm_tlb_seq_structh]hamdgpu_vm_tlb_seq_struct}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.amdgpu_vm_tlb_flushasbuh1hhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(htlb_cbh]htlb_cb}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubeh}(h]h ]h"]h$]h&]jgjhuh1jihjwhhhjhMubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjshhhjhMubah}(h]jnah ](jjeh"]h$]h&]j j )j huh1jhjhMhjphhubj )}(hhh]h)}(hprepare TLB flushh]hprepare TLB flush}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj%hhubah}(h]h ]h"]h$]h&]uh1j hjphhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRj@jSj@jTjUjVuh1jhhhjxhNhNubjX)}(hX9**Parameters** ``struct amdgpu_vm_update_params *params`` parameters for update ``struct dma_fence **fence`` input fence to sync TLB flush with ``struct amdgpu_vm_tlb_seq_struct *tlb_cb`` the callback structure **Description** Increments the tlb sequence to make sure that future CS execute a VM flush.h](h)}(h**Parameters**h]jJ)}(hjJh]h Parameters}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjHubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjDubh)}(hhh](h)}(hA``struct amdgpu_vm_update_params *params`` parameters for update h](j)}(h*``struct amdgpu_vm_update_params *params``h]j)}(hjih]h&struct amdgpu_vm_update_params *params}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjcubj)}(hhh]h)}(hparameters for updateh]hparameters for update}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj~hMhjubah}(h]h ]h"]h$]h&]uh1jhjcubeh}(h]h ]h"]h$]h&]uh1hhj~hMhj`ubh)}(h@``struct dma_fence **fence`` input fence to sync TLB flush with h](j)}(h``struct dma_fence **fence``h]j)}(hjh]hstruct dma_fence **fence}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj)}(hhh]h)}(h"input fence to sync TLB flush withh]h"input fence to sync TLB flush with}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMhj`ubh)}(hC``struct amdgpu_vm_tlb_seq_struct *tlb_cb`` the callback structure h](j)}(h+``struct amdgpu_vm_tlb_seq_struct *tlb_cb``h]j)}(hjh]h'struct amdgpu_vm_tlb_seq_struct *tlb_cb}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj)}(hhh]h)}(hthe callback structureh]hthe callback structure}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMhj`ubeh}(h]h ]h"]h$]h&]uh1hhjDubh)}(h**Description**h]jJ)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjDubh)}(hKIncrements the tlb sequence to make sure that future CS execute a VM flush.h]hKIncrements the tlb sequence to make sure that future CS execute a VM flush.}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjDubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjxhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j#amdgpu_vm_update_range (C function)c.amdgpu_vm_update_rangehNtauh1jhjxhhhNhNubj)}(hhh](j)}(hXKint amdgpu_vm_update_range (struct amdgpu_device *adev, struct amdgpu_vm *vm, bool immediate, bool unlocked, bool flush_tlb, bool allow_override, struct amdgpu_sync *sync, uint64_t start, uint64_t last, uint64_t flags, uint64_t offset, uint64_t vram_base, struct ttm_resource *res, dma_addr_t *pages_addr, struct dma_fence **fence)h]j )}(hXJint amdgpu_vm_update_range(struct amdgpu_device *adev, struct amdgpu_vm *vm, bool immediate, bool unlocked, bool flush_tlb, bool allow_override, struct amdgpu_sync *sync, uint64_t start, uint64_t last, uint64_t flags, uint64_t offset, uint64_t vram_base, struct ttm_resource *res, dma_addr_t *pages_addr, struct dma_fence **fence)h](j&)}(hinth]hint}(hj[hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjWhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM7ubj8)}(h h]h }(hjjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjWhhhjihM7ubjI)}(hamdgpu_vm_update_rangeh]jO)}(hamdgpu_vm_update_rangeh]hamdgpu_vm_update_range}(hj|hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjxubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjWhhhjihM7ubjj)}(hX0(struct amdgpu_device *adev, struct amdgpu_vm *vm, bool immediate, bool unlocked, bool flush_tlb, bool allow_override, struct amdgpu_sync *sync, uint64_t start, uint64_t last, uint64_t flags, uint64_t offset, uint64_t vram_base, struct ttm_resource *res, dma_addr_t *pages_addr, struct dma_fence **fence)h](jp)}(hstruct amdgpu_device *adevh](jv)}(hjyh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubh)}(hhh]jO)}(h amdgpu_deviceh]h amdgpu_device}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jj~sbc.amdgpu_vm_update_rangeasbuh1hhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(hadevh]hadev}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(hstruct amdgpu_vm *vmh](jv)}(hjyh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubh)}(hhh]jO)}(h amdgpu_vmh]h amdgpu_vm}(hj(hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj%ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj*modnameN classnameNjj)}j]jc.amdgpu_vm_update_rangeasbuh1hhjubj8)}(h h]h }(hjFhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(hvmh]hvm}(hjahhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(hbool immediateh](j&)}(hj)h]hbool}(hjzhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjvubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjvubjO)}(h immediateh]h immediate}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjvubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(h bool unlockedh](j&)}(hj)h]hbool}(hjhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubjO)}(hunlockedh]hunlocked}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(hbool flush_tlbh](j&)}(hj)h]hbool}(hjhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubjO)}(h flush_tlbh]h flush_tlb}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(hbool allow_overrideh](j&)}(hj)h]hbool}(hjhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjubj8)}(h h]h }(hj#hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubjO)}(hallow_overrideh]hallow_override}(hj1hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(hstruct amdgpu_sync *synch](jv)}(hjyh]hstruct}(hjJhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjFubj8)}(h h]h }(hjWhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjFubh)}(hhh]jO)}(h amdgpu_synch]h amdgpu_sync}(hjhhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjeubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjjmodnameN classnameNjj)}j]jc.amdgpu_vm_update_rangeasbuh1hhjFubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjFubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjFubjO)}(hsynch]hsync}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjFubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(huint64_t starth](h)}(hhh]jO)}(huint64_th]huint64_t}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.amdgpu_vm_update_rangeasbuh1hhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubjO)}(hstarth]hstart}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(h uint64_t lasth](h)}(hhh]jO)}(huint64_th]huint64_t}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.amdgpu_vm_update_rangeasbuh1hhjubj8)}(h h]h }(hj#hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubjO)}(hlasth]hlast}(hj1hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(huint64_t flagsh](h)}(hhh]jO)}(huint64_th]huint64_t}(hjMhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjJubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjOmodnameN classnameNjj)}j]jc.amdgpu_vm_update_rangeasbuh1hhjFubj8)}(h h]h }(hjkhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjFubjO)}(hflagsh]hflags}(hjyhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjFubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(huint64_t offseth](h)}(hhh]jO)}(huint64_th]huint64_t}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.amdgpu_vm_update_rangeasbuh1hhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubjO)}(hoffseth]hoffset}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(huint64_t vram_baseh](h)}(hhh]jO)}(huint64_th]huint64_t}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.amdgpu_vm_update_rangeasbuh1hhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubjO)}(h vram_baseh]h vram_base}(hj hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(hstruct ttm_resource *resh](jv)}(hjyh]hstruct}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjubj8)}(h h]h }(hj/hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubh)}(hhh]jO)}(h ttm_resourceh]h ttm_resource}(hj@hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj=ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjBmodnameN classnameNjj)}j]jc.amdgpu_vm_update_rangeasbuh1hhjubj8)}(h h]h }(hj^hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hjlhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(hresh]hres}(hjyhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(hdma_addr_t *pages_addrh](h)}(hhh]jO)}(h dma_addr_th]h dma_addr_t}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.amdgpu_vm_update_rangeasbuh1hhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(h pages_addrh]h pages_addr}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(hstruct dma_fence **fenceh](jv)}(hjyh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubh)}(hhh]jO)}(h dma_fenceh]h dma_fence}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.amdgpu_vm_update_rangeasbuh1hhjubj8)}(h h]h }(hj#hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hj4h]h*}(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(hfenceh]hfence}(hjKhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubeh}(h]h ]h"]h$]h&]jgjhuh1jihjWhhhjihM7ubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjShhhjihM7ubah}(h]jNah ](jjeh"]h$]h&]j j )j huh1jhjihM7hjPhhubj )}(hhh]h)}(h#update a range in the vm page tableh]h#update a range in the vm page table}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM7hjrhhubah}(h]h ]h"]h$]h&]uh1j hjPhhhjihM7ubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjjSjjTjUjVuh1jhhhjxhNhNubjX)}(hX**Parameters** ``struct amdgpu_device *adev`` amdgpu_device pointer to use for commands ``struct amdgpu_vm *vm`` the VM to update the range ``bool immediate`` immediate submission in a page fault ``bool unlocked`` unlocked invalidation during MM callback ``bool flush_tlb`` trigger tlb invalidation after update completed ``bool allow_override`` change MTYPE for local NUMA nodes ``struct amdgpu_sync *sync`` fences we need to sync to ``uint64_t start`` start of mapped range ``uint64_t last`` last mapped entry ``uint64_t flags`` flags for the entries ``uint64_t offset`` offset into nodes and pages_addr ``uint64_t vram_base`` base for vram mappings ``struct ttm_resource *res`` ttm_resource to map ``dma_addr_t *pages_addr`` DMA addresses to use for mapping ``struct dma_fence **fence`` optional resulting fence **Description** Fill in the page table entries between **start** and **last**. **Return** 0 for success, negative erro code for failure.h](h)}(h**Parameters**h]jJ)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM;hjubh)}(hhh](h)}(hI``struct amdgpu_device *adev`` amdgpu_device pointer to use for commands h](j)}(h``struct amdgpu_device *adev``h]j)}(hjh]hstruct amdgpu_device *adev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM9hjubj)}(hhh]h)}(h)amdgpu_device pointer to use for commandsh]h)amdgpu_device pointer to use for commands}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM9hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhM9hjubh)}(h4``struct amdgpu_vm *vm`` the VM to update the range h](j)}(h``struct amdgpu_vm *vm``h]j)}(hjh]hstruct amdgpu_vm *vm}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM:hjubj)}(hhh]h)}(hthe VM to update the rangeh]hthe VM to update the range}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM:hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhM:hjubh)}(h8``bool immediate`` immediate submission in a page fault h](j)}(h``bool immediate``h]j)}(hj(h]hbool immediate}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM;hj"ubj)}(hhh]h)}(h$immediate submission in a page faulth]h$immediate submission in a page fault}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=hM;hj>ubah}(h]h ]h"]h$]h&]uh1jhj"ubeh}(h]h ]h"]h$]h&]uh1hhj=hM;hjubh)}(h;``bool unlocked`` unlocked invalidation during MM callback h](j)}(h``bool unlocked``h]j)}(hjah]h bool unlocked}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM<hj[ubj)}(hhh]h)}(h(unlocked invalidation during MM callbackh]h(unlocked invalidation during MM callback}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjvhM<hjwubah}(h]h ]h"]h$]h&]uh1jhj[ubeh}(h]h ]h"]h$]h&]uh1hhjvhM<hjubh)}(hC``bool flush_tlb`` trigger tlb invalidation after update completed h](j)}(h``bool flush_tlb``h]j)}(hjh]hbool flush_tlb}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM=hjubj)}(hhh]h)}(h/trigger tlb invalidation after update completedh]h/trigger tlb invalidation after update completed}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM=hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhM=hjubh)}(h:``bool allow_override`` change MTYPE for local NUMA nodes h](j)}(h``bool allow_override``h]j)}(hjh]hbool allow_override}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM>hjubj)}(hhh]h)}(h!change MTYPE for local NUMA nodesh]h!change MTYPE for local NUMA nodes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM>hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhM>hjubh)}(h7``struct amdgpu_sync *sync`` fences we need to sync to h](j)}(h``struct amdgpu_sync *sync``h]j)}(hj h]hstruct amdgpu_sync *sync}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM?hjubj)}(hhh]h)}(hfences we need to sync toh]hfences we need to sync to}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!hM?hj"ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhj!hM?hjubh)}(h)``uint64_t start`` start of mapped range h](j)}(h``uint64_t start``h]j)}(hjEh]huint64_t start}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM@hj?ubj)}(hhh]h)}(hstart of mapped rangeh]hstart of mapped range}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZhM@hj[ubah}(h]h ]h"]h$]h&]uh1jhj?ubeh}(h]h ]h"]h$]h&]uh1hhjZhM@hjubh)}(h$``uint64_t last`` last mapped entry h](j)}(h``uint64_t last``h]j)}(hj~h]h uint64_t last}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMAhjxubj)}(hhh]h)}(hlast mapped entryh]hlast mapped entry}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMAhjubah}(h]h ]h"]h$]h&]uh1jhjxubeh}(h]h ]h"]h$]h&]uh1hhjhMAhjubh)}(h)``uint64_t flags`` flags for the entries h](j)}(h``uint64_t flags``h]j)}(hjh]huint64_t flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMBhjubj)}(hhh]h)}(hflags for the entriesh]hflags for the entries}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMBhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMBhjubh)}(h5``uint64_t offset`` offset into nodes and pages_addr h](j)}(h``uint64_t offset``h]j)}(hjh]huint64_t offset}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMChjubj)}(hhh]h)}(h offset into nodes and pages_addrh]h offset into nodes and pages_addr}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMChjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMChjubh)}(h.``uint64_t vram_base`` base for vram mappings h](j)}(h``uint64_t vram_base``h]j)}(hj)h]huint64_t vram_base}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMDhj#ubj)}(hhh]h)}(hbase for vram mappingsh]hbase for vram mappings}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>hMDhj?ubah}(h]h ]h"]h$]h&]uh1jhj#ubeh}(h]h ]h"]h$]h&]uh1hhj>hMDhjubh)}(h1``struct ttm_resource *res`` ttm_resource to map h](j)}(h``struct ttm_resource *res``h]j)}(hjbh]hstruct ttm_resource *res}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMEhj\ubj)}(hhh]h)}(httm_resource to maph]httm_resource to map}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjwhMEhjxubah}(h]h ]h"]h$]h&]uh1jhj\ubeh}(h]h ]h"]h$]h&]uh1hhjwhMEhjubh)}(h<``dma_addr_t *pages_addr`` DMA addresses to use for mapping h](j)}(h``dma_addr_t *pages_addr``h]j)}(hjh]hdma_addr_t *pages_addr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMFhjubj)}(hhh]h)}(h DMA addresses to use for mappingh]h DMA addresses to use for mapping}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMFhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMFhjubh)}(h6``struct dma_fence **fence`` optional resulting fence h](j)}(h``struct dma_fence **fence``h]j)}(hjh]hstruct dma_fence **fence}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMGhjubj)}(hhh]h)}(hoptional resulting fenceh]hoptional resulting fence}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMGhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMGhjubeh}(h]h ]h"]h$]h&]uh1hhjubh)}(h**Description**h]jJ)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMIhjubh)}(h>Fill in the page table entries between **start** and **last**.h](h'Fill in the page table entries between }(hj%hhhNhNubjJ)}(h **start**h]hstart}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj%ubh and }(hj%hhhNhNubjJ)}(h**last**h]hlast}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj%ubh.}(hj%hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMHhjubh)}(h **Return**h]jJ)}(hjZh]hReturn}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjXubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMJhjubh)}(h.0 for success, negative erro code for failure.h]h.0 for success, negative erro code for failure.}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjxhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j amdgpu_vm_bo_update (C function)c.amdgpu_vm_bo_updatehNtauh1jhjxhhhNhNubj)}(hhh](j)}(h\int amdgpu_vm_bo_update (struct amdgpu_device *adev, struct amdgpu_bo_va *bo_va, bool clear)h]j )}(h[int amdgpu_vm_bo_update(struct amdgpu_device *adev, struct amdgpu_bo_va *bo_va, bool clear)h](j&)}(hinth]hint}(hjhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjhhhjhMubjI)}(hamdgpu_vm_bo_updateh]jO)}(hamdgpu_vm_bo_updateh]hamdgpu_vm_bo_update}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjhhhjhMubjj)}(hD(struct amdgpu_device *adev, struct amdgpu_bo_va *bo_va, bool clear)h](jp)}(hstruct amdgpu_device *adevh](jv)}(hjyh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubh)}(hhh]jO)}(h amdgpu_deviceh]h amdgpu_device}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.amdgpu_vm_bo_updateasbuh1hhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(hadevh]hadev}(hj5hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(hstruct amdgpu_bo_va *bo_vah](jv)}(hjyh]hstruct}(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjJubj8)}(h h]h }(hj[hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjJubh)}(hhh]jO)}(h amdgpu_bo_vah]h amdgpu_bo_va}(hjlhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjiubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjnmodnameN classnameNjj)}j]jc.amdgpu_vm_bo_updateasbuh1hhjJubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjJubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJubjO)}(hbo_vah]hbo_va}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjJubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(h bool clearh](j&)}(hj)h]hbool}(hjhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubjO)}(hclearh]hclear}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubeh}(h]h ]h"]h$]h&]jgjhuh1jihjhhhjhMubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjhhhjhMubah}(h]jah ](jjeh"]h$]h&]j j )j huh1jhjhMhjhhubj )}(hhh]h)}(h+update all BO mappings in the vm page tableh]h+update all BO mappings in the vm page table}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjhhubah}(h]h ]h"]h$]h&]uh1j hjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjjSjjTjUjVuh1jhhhjxhNhNubjX)}(hX **Parameters** ``struct amdgpu_device *adev`` amdgpu_device pointer ``struct amdgpu_bo_va *bo_va`` requested BO and VM object ``bool clear`` if true clear the entries **Description** Fill in the page table entries for **bo_va**. **Return** 0 for success, -EINVAL for failure.h](h)}(h**Parameters**h]jJ)}(hj%h]h Parameters}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj#ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(hhh](h)}(h5``struct amdgpu_device *adev`` amdgpu_device pointer h](j)}(h``struct amdgpu_device *adev``h]j)}(hjDh]hstruct amdgpu_device *adev}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj>ubj)}(hhh]h)}(hamdgpu_device pointerh]hamdgpu_device pointer}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjYhMhjZubah}(h]h ]h"]h$]h&]uh1jhj>ubeh}(h]h ]h"]h$]h&]uh1hhjYhMhj;ubh)}(h:``struct amdgpu_bo_va *bo_va`` requested BO and VM object h](j)}(h``struct amdgpu_bo_va *bo_va``h]j)}(hj}h]hstruct amdgpu_bo_va *bo_va}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj{ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjwubj)}(hhh]h)}(hrequested BO and VM objecth]hrequested BO and VM object}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjwubeh}(h]h ]h"]h$]h&]uh1hhjhMhj;ubh)}(h)``bool clear`` if true clear the entries h](j)}(h``bool clear``h]j)}(hjh]h bool clear}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj)}(hhh]h)}(hif true clear the entriesh]hif true clear the entries}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMhj;ubeh}(h]h ]h"]h$]h&]uh1hhjubh)}(h**Description**h]jJ)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(h-Fill in the page table entries for **bo_va**.h](h#Fill in the page table entries for }(hjhhhNhNubjJ)}(h **bo_va**h]hbo_va}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(h **Return**h]jJ)}(hj*h]hReturn}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj(ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(h#0 for success, -EINVAL for failure.h]h#0 for success, -EINVAL for failure.}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjxhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'amdgpu_vm_update_prt_state (C function)c.amdgpu_vm_update_prt_statehNtauh1jhjxhhhNhNubj)}(hhh](j)}(hubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj:ubj)}(hhh]h)}(hamdgpu_device pointerh]hamdgpu_device pointer}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjUhMhjVubah}(h]h ]h"]h$]h&]uh1jhj:ubeh}(h]h ]h"]h$]h&]uh1hhjUhMhj7ubh)}(h&``struct amdgpu_vm *vm`` requested vm h](j)}(h``struct amdgpu_vm *vm``h]j)}(hjyh]hstruct amdgpu_vm *vm}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjwubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjsubj)}(hhh]h)}(h requested vmh]h requested vm}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjsubeh}(h]h ]h"]h$]h&]uh1hhjhMhj7ubh)}(h#``uint32_t flush_type`` flush type h](j)}(h``uint32_t flush_type``h]j)}(hjh]huint32_t flush_type}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj)}(hhh]h)}(h flush typeh]h flush type}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMhj7ubh)}(h```uint32_t xcc_mask`` mask of XCCs that belong to the compute partition in need of a TLB flush. h](j)}(h``uint32_t xcc_mask``h]j)}(hjh]huint32_t xcc_mask}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj)}(hhh]h)}(hImask of XCCs that belong to the compute partition in need of a TLB flush.h]hImask of XCCs that belong to the compute partition in need of a TLB flush.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMhj7ubeh}(h]h ]h"]h$]h&]uh1hhjubh)}(h**Description**h]jJ)}(hj&h]h Description}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj$ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(h%Flush TLB if needed for a compute VM.h]h%Flush TLB if needed for a compute VM.}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(h **Return**h]jJ)}(hjMh]hReturn}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjKubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(h0 for success.h]h0 for success.}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjxhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jamdgpu_vm_bo_add (C function)c.amdgpu_vm_bo_addhNtauh1jhjxhhhNhNubj)}(hhh](j)}(hostruct amdgpu_bo_va * amdgpu_vm_bo_add (struct amdgpu_device *adev, struct amdgpu_vm *vm, struct amdgpu_bo *bo)h]j )}(hmstruct amdgpu_bo_va *amdgpu_vm_bo_add(struct amdgpu_device *adev, struct amdgpu_vm *vm, struct amdgpu_bo *bo)h](jv)}(hjyh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjhhhjhMubh)}(hhh]jO)}(h amdgpu_bo_vah]h amdgpu_bo_va}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jamdgpu_vm_bo_addsbc.amdgpu_vm_bo_addasbuh1hhjhhhjhMubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjhhhjhMubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubjI)}(hamdgpu_vm_bo_addh]jO)}(hjh]hamdgpu_vm_bo_add}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjhhhjhMubjj)}(hH(struct amdgpu_device *adev, struct amdgpu_vm *vm, struct amdgpu_bo *bo)h](jp)}(hstruct amdgpu_device *adevh](jv)}(hjyh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubh)}(hhh]jO)}(h amdgpu_deviceh]h amdgpu_device}(hj*hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj'ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj,modnameN classnameNjj)}j]jc.amdgpu_vm_bo_addasbuh1hhjubj8)}(h h]h }(hjHhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(hadevh]hadev}(hjchhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(hstruct amdgpu_vm *vmh](jv)}(hjyh]hstruct}(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjxubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjxubh)}(hhh]jO)}(h amdgpu_vmh]h amdgpu_vm}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.amdgpu_vm_bo_addasbuh1hhjxubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjxubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjxubjO)}(hvmh]hvm}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjxubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(hstruct amdgpu_bo *boh](jv)}(hjyh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubh)}(hhh]jO)}(h amdgpu_boh]h amdgpu_bo}(hj hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]jc.amdgpu_vm_bo_addasbuh1hhjubj8)}(h h]h }(hj(hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(hboh]hbo}(hjChhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubeh}(h]h ]h"]h$]h&]jgjhuh1jihjhhhjhMubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjhhhjhMubah}(h]jah ](jjeh"]h$]h&]j j )j huh1jhjhMhjhhubj )}(hhh]h)}(hadd a bo to a specific vmh]hadd a bo to a specific vm}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjjhhubah}(h]h ]h"]h$]h&]uh1j hjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjjSjjTjUjVuh1jhhhjxhNhNubjX)}(hXY**Parameters** ``struct amdgpu_device *adev`` amdgpu_device pointer ``struct amdgpu_vm *vm`` requested vm ``struct amdgpu_bo *bo`` amdgpu buffer object **Description** Add **bo** into the requested vm. Add **bo** to the list of bos associated with the vm Object has to be reserved! **Return** Newly added bo_va or NULL for failureh](h)}(h**Parameters**h]jJ)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(hhh](h)}(h5``struct amdgpu_device *adev`` amdgpu_device pointer h](j)}(h``struct amdgpu_device *adev``h]j)}(hjh]hstruct amdgpu_device *adev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj)}(hhh]h)}(hamdgpu_device pointerh]hamdgpu_device pointer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubh)}(h&``struct amdgpu_vm *vm`` requested vm h](j)}(h``struct amdgpu_vm *vm``h]j)}(hjh]hstruct amdgpu_vm *vm}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj)}(hhh]h)}(h requested vmh]h requested vm}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubh)}(h.``struct amdgpu_bo *bo`` amdgpu buffer object h](j)}(h``struct amdgpu_bo *bo``h]j)}(hj h]hstruct amdgpu_bo *bo}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj)}(hhh]h)}(hamdgpu buffer objecth]hamdgpu buffer object}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5hMhj6ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhj5hMhjubeh}(h]h ]h"]h$]h&]uh1hhjubh)}(h**Description**h]jJ)}(hj[h]h Description}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjYubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(hVAdd **bo** into the requested vm. Add **bo** to the list of bos associated with the vmh](hAdd }(hjqhhhNhNubjJ)}(h**bo**h]hbo}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjqubh into the requested vm. Add }(hjqhhhNhNubjJ)}(h**bo**h]hbo}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjqubh* to the list of bos associated with the vm}(hjqhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(hObject has to be reserved!h]hObject has to be reserved!}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(h **Return**h]jJ)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(h%Newly added bo_va or NULL for failureh]h%Newly added bo_va or NULL for failure}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjxhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j$amdgpu_vm_bo_insert_map (C function)c.amdgpu_vm_bo_insert_maphNtauh1jhjxhhhNhNubj)}(hhh](j)}(h{void amdgpu_vm_bo_insert_map (struct amdgpu_device *adev, struct amdgpu_bo_va *bo_va, struct amdgpu_bo_va_mapping *mapping)h]j )}(hzvoid amdgpu_vm_bo_insert_map(struct amdgpu_device *adev, struct amdgpu_bo_va *bo_va, struct amdgpu_bo_va_mapping *mapping)h](j&)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMubj8)}(h h]h }(hj hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjhhhjhMubjI)}(hamdgpu_vm_bo_insert_maph]jO)}(hamdgpu_vm_bo_insert_maph]hamdgpu_vm_bo_insert_map}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjhhhjhMubjj)}(h^(struct amdgpu_device *adev, struct amdgpu_bo_va *bo_va, struct amdgpu_bo_va_mapping *mapping)h](jp)}(hstruct amdgpu_device *adevh](jv)}(hjyh]hstruct}(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj3ubj8)}(h h]h }(hjDhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj3ubh)}(hhh]jO)}(h amdgpu_deviceh]h amdgpu_device}(hjUhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjRubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjWmodnameN classnameNjj)}j]j)}jjsbc.amdgpu_vm_bo_insert_mapasbuh1hhj3ubj8)}(h h]h }(hjuhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj3ubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubjO)}(hadevh]hadev}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj3ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj/ubjp)}(hstruct amdgpu_bo_va *bo_vah](jv)}(hjyh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubh)}(hhh]jO)}(h amdgpu_bo_vah]h amdgpu_bo_va}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jqc.amdgpu_vm_bo_insert_mapasbuh1hhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(hbo_vah]hbo_va}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj/ubjp)}(h$struct amdgpu_bo_va_mapping *mappingh](jv)}(hjyh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjubj8)}(h h]h }(hj&hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubh)}(hhh]jO)}(hamdgpu_bo_va_mappingh]hamdgpu_bo_va_mapping}(hj7hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj4ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj9modnameN classnameNjj)}j]jqc.amdgpu_vm_bo_insert_mapasbuh1hhjubj8)}(h h]h }(hjUhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hjchhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(hmappingh]hmapping}(hjphhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj/ubeh}(h]h ]h"]h$]h&]jgjhuh1jihjhhhjhMubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjhhhjhMubah}(h]jah ](jjeh"]h$]h&]j j )j huh1jhjhMhjhhubj )}(hhh]h)}(hinsert a new mappingh]hinsert a new mapping}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjhhubah}(h]h ]h"]h$]h&]uh1j hjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjjSjjTjUjVuh1jhhhjxhNhNubjX)}(hX**Parameters** ``struct amdgpu_device *adev`` amdgpu_device pointer ``struct amdgpu_bo_va *bo_va`` bo_va to store the address ``struct amdgpu_bo_va_mapping *mapping`` the mapping to insert **Description** Insert a new mapping into all structures.h](h)}(h**Parameters**h]jJ)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(hhh](h)}(h5``struct amdgpu_device *adev`` amdgpu_device pointer h](j)}(h``struct amdgpu_device *adev``h]j)}(hjh]hstruct amdgpu_device *adev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj)}(hhh]h)}(hamdgpu_device pointerh]hamdgpu_device pointer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubh)}(h:``struct amdgpu_bo_va *bo_va`` bo_va to store the address h](j)}(h``struct amdgpu_bo_va *bo_va``h]j)}(hjh]hstruct amdgpu_bo_va *bo_va}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj)}(hhh]h)}(hbo_va to store the addressh]hbo_va to store the address}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)hMhj*ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhj)hMhjubh)}(h?``struct amdgpu_bo_va_mapping *mapping`` the mapping to insert h](j)}(h(``struct amdgpu_bo_va_mapping *mapping``h]j)}(hjMh]h$struct amdgpu_bo_va_mapping *mapping}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjGubj)}(hhh]h)}(hthe mapping to inserth]hthe mapping to insert}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjbhMhjcubah}(h]h ]h"]h$]h&]uh1jhjGubeh}(h]h ]h"]h$]h&]uh1hhjbhMhjubeh}(h]h ]h"]h$]h&]uh1hhjubh)}(h**Description**h]jJ)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(h)Insert a new mapping into all structures.h]h)Insert a new mapping into all structures.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjxhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jamdgpu_vm_bo_map (C function)c.amdgpu_vm_bo_maphNtauh1jhjxhhhNhNubj)}(hhh](j)}(hint amdgpu_vm_bo_map (struct amdgpu_device *adev, struct amdgpu_bo_va *bo_va, uint64_t saddr, uint64_t offset, uint64_t size, uint32_t flags)h]j )}(hint amdgpu_vm_bo_map(struct amdgpu_device *adev, struct amdgpu_bo_va *bo_va, uint64_t saddr, uint64_t offset, uint64_t size, uint32_t flags)h](j&)}(hinth]hint}(hjhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjhhhjhMubjI)}(hamdgpu_vm_bo_maph]jO)}(hamdgpu_vm_bo_maph]hamdgpu_vm_bo_map}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjhhhjhMubjj)}(hx(struct amdgpu_device *adev, struct amdgpu_bo_va *bo_va, uint64_t saddr, uint64_t offset, uint64_t size, uint32_t flags)h](jp)}(hstruct amdgpu_device *adevh](jv)}(hjyh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubh)}(hhh]jO)}(h amdgpu_deviceh]h amdgpu_device}(hj(hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj%ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj*modnameN classnameNjj)}j]j)}jjsbc.amdgpu_vm_bo_mapasbuh1hhjubj8)}(h h]h }(hjHhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(hadevh]hadev}(hjchhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(hstruct amdgpu_bo_va *bo_vah](jv)}(hjyh]hstruct}(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjxubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjxubh)}(hhh]jO)}(h amdgpu_bo_vah]h amdgpu_bo_va}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jDc.amdgpu_vm_bo_mapasbuh1hhjxubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjxubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjxubjO)}(hbo_vah]hbo_va}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjxubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(huint64_t saddrh](h)}(hhh]jO)}(huint64_th]huint64_t}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jDc.amdgpu_vm_bo_mapasbuh1hhjubj8)}(h h]h }(hj hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubjO)}(hsaddrh]hsaddr}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(huint64_t offseth](h)}(hhh]jO)}(huint64_th]huint64_t}(hj7hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj4ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj9modnameN classnameNjj)}j]jDc.amdgpu_vm_bo_mapasbuh1hhj0ubj8)}(h h]h }(hjUhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj0ubjO)}(hoffseth]hoffset}(hjchhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj0ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(h uint64_t sizeh](h)}(hhh]jO)}(huint64_th]huint64_t}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj|ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jDc.amdgpu_vm_bo_mapasbuh1hhjxubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjxubjO)}(hsizeh]hsize}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjxubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(huint32_t flagsh](h)}(hhh]jO)}(huint32_th]huint32_t}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jDc.amdgpu_vm_bo_mapasbuh1hhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubjO)}(hflagsh]hflags}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubeh}(h]h ]h"]h$]h&]jgjhuh1jihjhhhjhMubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjhhhjhMubah}(h]jah ](jjeh"]h$]h&]j j )j huh1jhjhMhjhhubj )}(hhh]h)}(hmap bo inside a vmh]hmap bo inside a vm}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjhhubah}(h]h ]h"]h$]h&]uh1j hjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRj5jSj5jTjUjVuh1jhhhjxhNhNubjX)}(hX**Parameters** ``struct amdgpu_device *adev`` amdgpu_device pointer ``struct amdgpu_bo_va *bo_va`` bo_va to store the address ``uint64_t saddr`` where to map the BO ``uint64_t offset`` requested offset in the BO ``uint64_t size`` BO size in bytes ``uint32_t flags`` attributes of pages (read/write/valid/etc.) **Description** Add a mapping of the BO at the specefied addr into the VM. Object has to be reserved and unreserved outside! **Return** 0 for success, error for failure.h](h)}(h**Parameters**h]jJ)}(hj?h]h Parameters}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj=ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM!hj9ubh)}(hhh](h)}(h5``struct amdgpu_device *adev`` amdgpu_device pointer h](j)}(h``struct amdgpu_device *adev``h]j)}(hj^h]hstruct amdgpu_device *adev}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj\ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjXubj)}(hhh]h)}(hamdgpu_device pointerh]hamdgpu_device pointer}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjshMhjtubah}(h]h ]h"]h$]h&]uh1jhjXubeh}(h]h ]h"]h$]h&]uh1hhjshMhjUubh)}(h:``struct amdgpu_bo_va *bo_va`` bo_va to store the address h](j)}(h``struct amdgpu_bo_va *bo_va``h]j)}(hjh]hstruct amdgpu_bo_va *bo_va}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hjubj)}(hhh]h)}(hbo_va to store the addressh]hbo_va to store the address}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhM hjUubh)}(h'``uint64_t saddr`` where to map the BO h](j)}(h``uint64_t saddr``h]j)}(hjh]huint64_t saddr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM!hjubj)}(hhh]h)}(hwhere to map the BOh]hwhere to map the BO}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM!hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhM!hjUubh)}(h/``uint64_t offset`` requested offset in the BO h](j)}(h``uint64_t offset``h]j)}(hj h]huint64_t offset}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM"hjubj)}(hhh]h)}(hrequested offset in the BOh]hrequested offset in the BO}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM"hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhM"hjUubh)}(h#``uint64_t size`` BO size in bytes h](j)}(h``uint64_t size``h]j)}(hjBh]h uint64_t size}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM#hj<ubj)}(hhh]h)}(hBO size in bytesh]hBO size in bytes}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjWhM#hjXubah}(h]h ]h"]h$]h&]uh1jhj<ubeh}(h]h ]h"]h$]h&]uh1hhjWhM#hjUubh)}(h?``uint32_t flags`` attributes of pages (read/write/valid/etc.) h](j)}(h``uint32_t flags``h]j)}(hj{h]huint32_t flags}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM$hjuubj)}(hhh]h)}(h+attributes of pages (read/write/valid/etc.)h]h+attributes of pages (read/write/valid/etc.)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM$hjubah}(h]h ]h"]h$]h&]uh1jhjuubeh}(h]h ]h"]h$]h&]uh1hhjhM$hjUubeh}(h]h ]h"]h$]h&]uh1hhj9ubh)}(h**Description**h]jJ)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM&hj9ubh)}(h:Add a mapping of the BO at the specefied addr into the VM.h]h:Add a mapping of the BO at the specefied addr into the VM.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM%hj9ubh)}(h1Object has to be reserved and unreserved outside!h]h1Object has to be reserved and unreserved outside!}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM(hj9ubh)}(h **Return**h]jJ)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM*hj9ubh)}(h!0 for success, error for failure.h]h!0 for success, error for failure.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM(hj9ubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjxhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j%amdgpu_vm_bo_replace_map (C function)c.amdgpu_vm_bo_replace_maphNtauh1jhjxhhhNhNubj)}(hhh](j)}(hint amdgpu_vm_bo_replace_map (struct amdgpu_device *adev, struct amdgpu_bo_va *bo_va, uint64_t saddr, uint64_t offset, uint64_t size, uint32_t flags)h]j )}(hint amdgpu_vm_bo_replace_map(struct amdgpu_device *adev, struct amdgpu_bo_va *bo_va, uint64_t saddr, uint64_t offset, uint64_t size, uint32_t flags)h](j&)}(hinth]hint}(hj1hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hj-hhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMWubj8)}(h h]h }(hj@hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj-hhhj?hMWubjI)}(hamdgpu_vm_bo_replace_maph]jO)}(hamdgpu_vm_bo_replace_maph]hamdgpu_vm_bo_replace_map}(hjRhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjNubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhj-hhhj?hMWubjj)}(hx(struct amdgpu_device *adev, struct amdgpu_bo_va *bo_va, uint64_t saddr, uint64_t offset, uint64_t size, uint32_t flags)h](jp)}(hstruct amdgpu_device *adevh](jv)}(hjyh]hstruct}(hjnhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjjubj8)}(h h]h }(hj{hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjjubh)}(hhh]jO)}(h amdgpu_deviceh]h amdgpu_device}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjTsbc.amdgpu_vm_bo_replace_mapasbuh1hhjjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjjubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjjubjO)}(hadevh]hadev}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjfubjp)}(hstruct amdgpu_bo_va *bo_vah](jv)}(hjyh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubh)}(hhh]jO)}(h amdgpu_bo_vah]h amdgpu_bo_va}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.amdgpu_vm_bo_replace_mapasbuh1hhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(hbo_vah]hbo_va}(hj7hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjfubjp)}(huint64_t saddrh](h)}(hhh]jO)}(huint64_th]huint64_t}(hjShhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjPubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjUmodnameN classnameNjj)}j]jc.amdgpu_vm_bo_replace_mapasbuh1hhjLubj8)}(h h]h }(hjqhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjLubjO)}(hsaddrh]hsaddr}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjLubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjfubjp)}(huint64_t offseth](h)}(hhh]jO)}(huint64_th]huint64_t}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.amdgpu_vm_bo_replace_mapasbuh1hhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubjO)}(hoffseth]hoffset}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjfubjp)}(h uint64_t sizeh](h)}(hhh]jO)}(huint64_th]huint64_t}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.amdgpu_vm_bo_replace_mapasbuh1hhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubjO)}(hsizeh]hsize}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjfubjp)}(huint32_t flagsh](h)}(hhh]jO)}(huint32_th]huint32_t}(hj+hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj(ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj-modnameN classnameNjj)}j]jc.amdgpu_vm_bo_replace_mapasbuh1hhj$ubj8)}(h h]h }(hjIhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj$ubjO)}(hflagsh]hflags}(hjWhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj$ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjfubeh}(h]h ]h"]h$]h&]jgjhuh1jihj-hhhj?hMWubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhj)hhhj?hMWubah}(h]j$ah ](jjeh"]h$]h&]j j )j huh1jhj?hMWhj&hhubj )}(hhh]h)}(h/map bo inside a vm, replacing existing mappingsh]h/map bo inside a vm, replacing existing mappings}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMWhj~hhubah}(h]h ]h"]h$]h&]uh1j hj&hhhj?hMWubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjjSjjTjUjVuh1jhhhjxhNhNubjX)}(hX**Parameters** ``struct amdgpu_device *adev`` amdgpu_device pointer ``struct amdgpu_bo_va *bo_va`` bo_va to store the address ``uint64_t saddr`` where to map the BO ``uint64_t offset`` requested offset in the BO ``uint64_t size`` BO size in bytes ``uint32_t flags`` attributes of pages (read/write/valid/etc.) **Description** Add a mapping of the BO at the specefied addr into the VM. Replace existing mappings as we do so. Object has to be reserved and unreserved outside! **Return** 0 for success, error for failure.h](h)}(h**Parameters**h]jJ)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM[hjubh)}(hhh](h)}(h5``struct amdgpu_device *adev`` amdgpu_device pointer h](j)}(h``struct amdgpu_device *adev``h]j)}(hjh]hstruct amdgpu_device *adev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMYhjubj)}(hhh]h)}(hamdgpu_device pointerh]hamdgpu_device pointer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMYhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMYhjubh)}(h:``struct amdgpu_bo_va *bo_va`` bo_va to store the address h](j)}(h``struct amdgpu_bo_va *bo_va``h]j)}(hjh]hstruct amdgpu_bo_va *bo_va}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMZhjubj)}(hhh]h)}(hbo_va to store the addressh]hbo_va to store the address}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMZhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMZhjubh)}(h'``uint64_t saddr`` where to map the BO h](j)}(h``uint64_t saddr``h]j)}(hj4h]huint64_t saddr}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM[hj.ubj)}(hhh]h)}(hwhere to map the BOh]hwhere to map the BO}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjIhM[hjJubah}(h]h ]h"]h$]h&]uh1jhj.ubeh}(h]h ]h"]h$]h&]uh1hhjIhM[hjubh)}(h/``uint64_t offset`` requested offset in the BO h](j)}(h``uint64_t offset``h]j)}(hjmh]huint64_t offset}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjkubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM\hjgubj)}(hhh]h)}(hrequested offset in the BOh]hrequested offset in the BO}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM\hjubah}(h]h ]h"]h$]h&]uh1jhjgubeh}(h]h ]h"]h$]h&]uh1hhjhM\hjubh)}(h#``uint64_t size`` BO size in bytes h](j)}(h``uint64_t size``h]j)}(hjh]h uint64_t size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM]hjubj)}(hhh]h)}(hBO size in bytesh]hBO size in bytes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM]hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhM]hjubh)}(h?``uint32_t flags`` attributes of pages (read/write/valid/etc.) h](j)}(h``uint32_t flags``h]j)}(hjh]huint32_t flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM^hjubj)}(hhh]h)}(h+attributes of pages (read/write/valid/etc.)h]h+attributes of pages (read/write/valid/etc.)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM^hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhM^hjubeh}(h]h ]h"]h$]h&]uh1hhjubh)}(h**Description**h]jJ)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM`hjubh)}(haAdd a mapping of the BO at the specefied addr into the VM. Replace existing mappings as we do so.h]haAdd a mapping of the BO at the specefied addr into the VM. Replace existing mappings as we do so.}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM_hjubh)}(h1Object has to be reserved and unreserved outside!h]h1Object has to be reserved and unreserved outside!}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMchjubh)}(h **Return**h]jJ)}(hjPh]hReturn}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMehjubh)}(h!0 for success, error for failure.h]h!0 for success, error for failure.}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMchjubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjxhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jamdgpu_vm_bo_unmap (C function)c.amdgpu_vm_bo_unmaphNtauh1jhjxhhhNhNubj)}(hhh](j)}(h_int amdgpu_vm_bo_unmap (struct amdgpu_device *adev, struct amdgpu_bo_va *bo_va, uint64_t saddr)h]j )}(h^int amdgpu_vm_bo_unmap(struct amdgpu_device *adev, struct amdgpu_bo_va *bo_va, uint64_t saddr)h](j&)}(hinth]hint}(hjhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjhhhjhMubjI)}(hamdgpu_vm_bo_unmaph]jO)}(hamdgpu_vm_bo_unmaph]hamdgpu_vm_bo_unmap}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjhhhjhMubjj)}(hH(struct amdgpu_device *adev, struct amdgpu_bo_va *bo_va, uint64_t saddr)h](jp)}(hstruct amdgpu_device *adevh](jv)}(hjyh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubh)}(hhh]jO)}(h amdgpu_deviceh]h amdgpu_device}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.amdgpu_vm_bo_unmapasbuh1hhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(hadevh]hadev}(hj+hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(hstruct amdgpu_bo_va *bo_vah](jv)}(hjyh]hstruct}(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj@ubj8)}(h h]h }(hjQhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj@ubh)}(hhh]jO)}(h amdgpu_bo_vah]h amdgpu_bo_va}(hjbhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj_ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjdmodnameN classnameNjj)}j]j c.amdgpu_vm_bo_unmapasbuh1hhj@ubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj@ubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubjO)}(hbo_vah]hbo_va}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj@ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(huint64_t saddrh](h)}(hhh]jO)}(huint64_th]huint64_t}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j c.amdgpu_vm_bo_unmapasbuh1hhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubjO)}(hsaddrh]hsaddr}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubeh}(h]h ]h"]h$]h&]jgjhuh1jihjhhhjhMubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjhhhjhMubah}(h]jah ](jjeh"]h$]h&]j j )j huh1jhjhMhjhhubj )}(hhh]h)}(hremove bo mapping from vmh]hremove bo mapping from vm}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj hhubah}(h]h ]h"]h$]h&]uh1j hjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRj%jSj%jTjUjVuh1jhhhjxhNhNubjX)}(hXl**Parameters** ``struct amdgpu_device *adev`` amdgpu_device pointer ``struct amdgpu_bo_va *bo_va`` bo_va to remove the address from ``uint64_t saddr`` where to the BO is mapped **Description** Remove a mapping of the BO at the specefied addr from the VM. Object has to be reserved and unreserved outside! **Return** 0 for success, error for failure.h](h)}(h**Parameters**h]jJ)}(hj/h]h Parameters}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj-ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj)ubh)}(hhh](h)}(h5``struct amdgpu_device *adev`` amdgpu_device pointer h](j)}(h``struct amdgpu_device *adev``h]j)}(hjNh]hstruct amdgpu_device *adev}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjHubj)}(hhh]h)}(hamdgpu_device pointerh]hamdgpu_device pointer}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhjchMhjdubah}(h]h ]h"]h$]h&]uh1jhjHubeh}(h]h ]h"]h$]h&]uh1hhjchMhjEubh)}(h@``struct amdgpu_bo_va *bo_va`` bo_va to remove the address from h](j)}(h``struct amdgpu_bo_va *bo_va``h]j)}(hjh]hstruct amdgpu_bo_va *bo_va}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj)}(hhh]h)}(h bo_va to remove the address fromh]h bo_va to remove the address from}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMhjEubh)}(h-``uint64_t saddr`` where to the BO is mapped h](j)}(h``uint64_t saddr``h]j)}(hjh]huint64_t saddr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj)}(hhh]h)}(hwhere to the BO is mappedh]hwhere to the BO is mapped}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMhjEubeh}(h]h ]h"]h$]h&]uh1hhj)ubh)}(h**Description**h]jJ)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj)ubh)}(h=Remove a mapping of the BO at the specefied addr from the VM.h]h=Remove a mapping of the BO at the specefied addr from the VM.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj)ubh)}(h1Object has to be reserved and unreserved outside!h]h1Object has to be reserved and unreserved outside!}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj)ubh)}(h **Return**h]jJ)}(hj1h]hReturn}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj/ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj)ubh)}(h!0 for success, error for failure.h]h!0 for success, error for failure.}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj)ubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjxhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j(amdgpu_vm_bo_clear_mappings (C function)c.amdgpu_vm_bo_clear_mappingshNtauh1jhjxhhhNhNubj)}(hhh](j)}(hqint amdgpu_vm_bo_clear_mappings (struct amdgpu_device *adev, struct amdgpu_vm *vm, uint64_t saddr, uint64_t size)h]j )}(hpint amdgpu_vm_bo_clear_mappings(struct amdgpu_device *adev, struct amdgpu_vm *vm, uint64_t saddr, uint64_t size)h](j&)}(hinth]hint}(hjvhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjrhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjrhhhjhMubjI)}(hamdgpu_vm_bo_clear_mappingsh]jO)}(hamdgpu_vm_bo_clear_mappingsh]hamdgpu_vm_bo_clear_mappings}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjrhhhjhMubjj)}(hQ(struct amdgpu_device *adev, struct amdgpu_vm *vm, uint64_t saddr, uint64_t size)h](jp)}(hstruct amdgpu_device *adevh](jv)}(hjyh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubh)}(hhh]jO)}(h amdgpu_deviceh]h amdgpu_device}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.amdgpu_vm_bo_clear_mappingsasbuh1hhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(hadevh]hadev}(hj hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(hstruct amdgpu_vm *vmh](jv)}(hjyh]hstruct}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj!ubj8)}(h h]h }(hj2hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj!ubh)}(hhh]jO)}(h amdgpu_vmh]h amdgpu_vm}(hjChhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj@ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjEmodnameN classnameNjj)}j]jc.amdgpu_vm_bo_clear_mappingsasbuh1hhj!ubj8)}(h h]h }(hjahhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj!ubj)}(hj4h]h*}(hjohhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubjO)}(hvmh]hvm}(hj|hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj!ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(huint64_t saddrh](h)}(hhh]jO)}(huint64_th]huint64_t}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.amdgpu_vm_bo_clear_mappingsasbuh1hhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubjO)}(hsaddrh]hsaddr}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(h uint64_t sizeh](h)}(hhh]jO)}(huint64_th]huint64_t}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.amdgpu_vm_bo_clear_mappingsasbuh1hhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubjO)}(hsizeh]hsize}(hj hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubeh}(h]h ]h"]h$]h&]jgjhuh1jihjrhhhjhMubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjnhhhjhMubah}(h]jiah ](jjeh"]h$]h&]j j )j huh1jhjhMhjkhhubj )}(hhh]h)}(h'remove all mappings in a specific rangeh]h'remove all mappings in a specific range}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj3hhubah}(h]h ]h"]h$]h&]uh1j hjkhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjNjSjNjTjUjVuh1jhhhjxhNhNubjX)}(hXB**Parameters** ``struct amdgpu_device *adev`` amdgpu_device pointer ``struct amdgpu_vm *vm`` VM structure to use ``uint64_t saddr`` start of the range ``uint64_t size`` size of the range **Description** Remove all mappings in a range, split them as appropriate. **Return** 0 for success, error for failure.h](h)}(h**Parameters**h]jJ)}(hjXh]h Parameters}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjVubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjRubh)}(hhh](h)}(h5``struct amdgpu_device *adev`` amdgpu_device pointer h](j)}(h``struct amdgpu_device *adev``h]j)}(hjwh]hstruct amdgpu_device *adev}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjuubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjqubj)}(hhh]h)}(hamdgpu_device pointerh]hamdgpu_device pointer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjqubeh}(h]h ]h"]h$]h&]uh1hhjhMhjnubh)}(h-``struct amdgpu_vm *vm`` VM structure to use h](j)}(h``struct amdgpu_vm *vm``h]j)}(hjh]hstruct amdgpu_vm *vm}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj)}(hhh]h)}(hVM structure to useh]hVM structure to use}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMhjnubh)}(h&``uint64_t saddr`` start of the range h](j)}(h``uint64_t saddr``h]j)}(hjh]huint64_t saddr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj)}(hhh]h)}(hstart of the rangeh]hstart of the range}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMhjnubh)}(h$``uint64_t size`` size of the range h](j)}(h``uint64_t size``h]j)}(hj"h]h uint64_t size}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj)}(hhh]h)}(hsize of the rangeh]hsize of the range}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj7hMhj8ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhj7hMhjnubeh}(h]h ]h"]h$]h&]uh1hhjRubh)}(h**Description**h]jJ)}(hj]h]h Description}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj[ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjRubh)}(h:Remove all mappings in a range, split them as appropriate.h]h:Remove all mappings in a range, split them as appropriate.}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjRubh)}(h **Return**h]jJ)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjRubh)}(h!0 for success, error for failure.h]h!0 for success, error for failure.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjRubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjxhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j(amdgpu_vm_bo_lookup_mapping (C function)c.amdgpu_vm_bo_lookup_mappinghNtauh1jhjxhhhNhNubj)}(hhh](j)}(h_struct amdgpu_bo_va_mapping * amdgpu_vm_bo_lookup_mapping (struct amdgpu_vm *vm, uint64_t addr)h]j )}(h]struct amdgpu_bo_va_mapping *amdgpu_vm_bo_lookup_mapping(struct amdgpu_vm *vm, uint64_t addr)h](jv)}(hjyh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM>ubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjhhhjhM>ubh)}(hhh]jO)}(hamdgpu_bo_va_mappingh]hamdgpu_bo_va_mapping}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jamdgpu_vm_bo_lookup_mappingsbc.amdgpu_vm_bo_lookup_mappingasbuh1hhjhhhjhM>ubj8)}(h h]h }(hj hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjhhhjhM>ubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhM>ubjI)}(hamdgpu_vm_bo_lookup_mappingh]jO)}(hjh]hamdgpu_vm_bo_lookup_mapping}(hj(hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj$ubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjhhhjhM>ubjj)}(h%(struct amdgpu_vm *vm, uint64_t addr)h](jp)}(hstruct amdgpu_vm *vmh](jv)}(hjyh]hstruct}(hjChhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj?ubj8)}(h h]h }(hjPhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj?ubh)}(hhh]jO)}(h amdgpu_vmh]h amdgpu_vm}(hjahhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj^ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjcmodnameN classnameNjj)}j]jc.amdgpu_vm_bo_lookup_mappingasbuh1hhj?ubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj?ubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?ubjO)}(hvmh]hvm}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj?ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj;ubjp)}(h uint64_t addrh](h)}(hhh]jO)}(huint64_th]huint64_t}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.amdgpu_vm_bo_lookup_mappingasbuh1hhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubjO)}(haddrh]haddr}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj;ubeh}(h]h ]h"]h$]h&]jgjhuh1jihjhhhjhM>ubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjhhhjhM>ubah}(h]jah ](jjeh"]h$]h&]j j )j huh1jhjhM>hjhhubj )}(hhh]h)}(hfind mapping by addressh]hfind mapping by address}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM>hj hhubah}(h]h ]h"]h$]h&]uh1j hjhhhjhM>ubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRj$jSj$jTjUjVuh1jhhhjxhNhNubjX)}(h**Parameters** ``struct amdgpu_vm *vm`` the requested VM ``uint64_t addr`` the address **Description** Find a mapping by it's address. **Return** The amdgpu_bo_va_mapping matching for addr or NULLh](h)}(h**Parameters**h]jJ)}(hj.h]h Parameters}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj,ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMBhj(ubh)}(hhh](h)}(h*``struct amdgpu_vm *vm`` the requested VM h](j)}(h``struct amdgpu_vm *vm``h]j)}(hjMh]hstruct amdgpu_vm *vm}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM@hjGubj)}(hhh]h)}(hthe requested VMh]hthe requested VM}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjbhM@hjcubah}(h]h ]h"]h$]h&]uh1jhjGubeh}(h]h ]h"]h$]h&]uh1hhjbhM@hjDubh)}(h``uint64_t addr`` the address h](j)}(h``uint64_t addr``h]j)}(hjh]h uint64_t addr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMAhjubj)}(hhh]h)}(h the addressh]h the address}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMAhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMAhjDubeh}(h]h ]h"]h$]h&]uh1hhj(ubh)}(h**Description**h]jJ)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMChj(ubh)}(hFind a mapping by it's address.h]h!Find a mapping by it’s address.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMBhj(ubh)}(h **Return**h]jJ)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMDhj(ubh)}(h2The amdgpu_bo_va_mapping matching for addr or NULLh]h2The amdgpu_bo_va_mapping matching for addr or NULL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMEhj(ubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjxhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j"amdgpu_vm_bo_trace_cs (C function)c.amdgpu_vm_bo_trace_cshNtauh1jhjxhhhNhNubj)}(hhh](j)}(hPvoid amdgpu_vm_bo_trace_cs (struct amdgpu_vm *vm, struct ww_acquire_ctx *ticket)h]j )}(hOvoid amdgpu_vm_bo_trace_cs(struct amdgpu_vm *vm, struct ww_acquire_ctx *ticket)h](j&)}(hvoidh]hvoid}(hj-hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hj)hhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMPubj8)}(h h]h }(hj<hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj)hhhj;hMPubjI)}(hamdgpu_vm_bo_trace_csh]jO)}(hamdgpu_vm_bo_trace_csh]hamdgpu_vm_bo_trace_cs}(hjNhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjJubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhj)hhhj;hMPubjj)}(h5(struct amdgpu_vm *vm, struct ww_acquire_ctx *ticket)h](jp)}(hstruct amdgpu_vm *vmh](jv)}(hjyh]hstruct}(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjfubj8)}(h h]h }(hjwhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjfubh)}(hhh]jO)}(h amdgpu_vmh]h amdgpu_vm}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjPsbc.amdgpu_vm_bo_trace_csasbuh1hhjfubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjfubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjfubjO)}(hvmh]hvm}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjfubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjbubjp)}(hstruct ww_acquire_ctx *ticketh](jv)}(hjyh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubh)}(hhh]jO)}(hww_acquire_ctxh]hww_acquire_ctx}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.amdgpu_vm_bo_trace_csasbuh1hhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(hticketh]hticket}(hj3hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjbubeh}(h]h ]h"]h$]h&]jgjhuh1jihj)hhhj;hMPubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhj%hhhj;hMPubah}(h]j ah ](jjeh"]h$]h&]j j )j huh1jhj;hMPhj"hhubj )}(hhh]h)}(htrace all reserved mappingsh]htrace all reserved mappings}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMPhjZhhubah}(h]h ]h"]h$]h&]uh1j hj"hhhj;hMPubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjujSjujTjUjVuh1jhhhjxhNhNubjX)}(h**Parameters** ``struct amdgpu_vm *vm`` the requested vm ``struct ww_acquire_ctx *ticket`` CS ticket **Description** Trace all mappings of BOs reserved during a command submission.h](h)}(h**Parameters**h]jJ)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj}ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMThjyubh)}(hhh](h)}(h*``struct amdgpu_vm *vm`` the requested vm h](j)}(h``struct amdgpu_vm *vm``h]j)}(hjh]hstruct amdgpu_vm *vm}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMRhjubj)}(hhh]h)}(hthe requested vmh]hthe requested vm}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMRhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMRhjubh)}(h,``struct ww_acquire_ctx *ticket`` CS ticket h](j)}(h!``struct ww_acquire_ctx *ticket``h]j)}(hjh]hstruct ww_acquire_ctx *ticket}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMShjubj)}(hhh]h)}(h CS ticketh]h CS ticket}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMShjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMShjubeh}(h]h ]h"]h$]h&]uh1hhjyubh)}(h**Description**h]jJ)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMUhjyubh)}(h?Trace all mappings of BOs reserved during a command submission.h]h?Trace all mappings of BOs reserved during a command submission.}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMThjyubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjxhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jamdgpu_vm_bo_del (C function)c.amdgpu_vm_bo_delhNtauh1jhjxhhhNhNubj)}(hhh](j)}(hNvoid amdgpu_vm_bo_del (struct amdgpu_device *adev, struct amdgpu_bo_va *bo_va)h]j )}(hMvoid amdgpu_vm_bo_del(struct amdgpu_device *adev, struct amdgpu_bo_va *bo_va)h](j&)}(hvoidh]hvoid}(hjWhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjShhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMnubj8)}(h h]h }(hjfhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjShhhjehMnubjI)}(hamdgpu_vm_bo_delh]jO)}(hamdgpu_vm_bo_delh]hamdgpu_vm_bo_del}(hjxhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjtubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjShhhjehMnubjj)}(h8(struct amdgpu_device *adev, struct amdgpu_bo_va *bo_va)h](jp)}(hstruct amdgpu_device *adevh](jv)}(hjyh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubh)}(hhh]jO)}(h amdgpu_deviceh]h amdgpu_device}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjzsbc.amdgpu_vm_bo_delasbuh1hhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(hadevh]hadev}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubjp)}(hstruct amdgpu_bo_va *bo_vah](jv)}(hjyh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubh)}(hhh]jO)}(h amdgpu_bo_vah]h amdgpu_bo_va}(hj$hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj!ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj&modnameN classnameNjj)}j]jc.amdgpu_vm_bo_delasbuh1hhjubj8)}(h h]h }(hjBhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(hbo_vah]hbo_va}(hj]hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubeh}(h]h ]h"]h$]h&]jgjhuh1jihjShhhjehMnubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjOhhhjehMnubah}(h]jJah ](jjeh"]h$]h&]j j )j huh1jhjehMnhjLhhubj )}(hhh]h)}(hremove a bo from a specific vmh]hremove a bo from a specific vm}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMnhjhhubah}(h]h ]h"]h$]h&]uh1j hjLhhhjehMnubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjjSjjTjUjVuh1jhhhjxhNhNubjX)}(h**Parameters** ``struct amdgpu_device *adev`` amdgpu_device pointer ``struct amdgpu_bo_va *bo_va`` requested bo_va **Description** Remove **bo_va->bo** from the requested vm. Object have to be reserved!h](h)}(h**Parameters**h]jJ)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMrhjubh)}(hhh](h)}(h5``struct amdgpu_device *adev`` amdgpu_device pointer h](j)}(h``struct amdgpu_device *adev``h]j)}(hjh]hstruct amdgpu_device *adev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMphjubj)}(hhh]h)}(hamdgpu_device pointerh]hamdgpu_device pointer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMphjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMphjubh)}(h/``struct amdgpu_bo_va *bo_va`` requested bo_va h](j)}(h``struct amdgpu_bo_va *bo_va``h]j)}(hjh]hstruct amdgpu_bo_va *bo_va}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMqhjubj)}(hhh]h)}(hrequested bo_vah]hrequested bo_va}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMqhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMqhjubeh}(h]h ]h"]h$]h&]uh1hhjubh)}(h**Description**h]jJ)}(hj<h]h Description}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj:ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMshjubh)}(h+Remove **bo_va->bo** from the requested vm.h](hRemove }(hjRhhhNhNubjJ)}(h **bo_va->bo**h]h bo_va->bo}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjRubh from the requested vm.}(hjRhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMrhjubh)}(hObject have to be reserved!h]hObject have to be reserved!}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMthjubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjxhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j amdgpu_vm_evictable (C function)c.amdgpu_vm_evictablehNtauh1jhjxhhhNhNubj)}(hhh](j)}(h/bool amdgpu_vm_evictable (struct amdgpu_bo *bo)h]j )}(h.bool amdgpu_vm_evictable(struct amdgpu_bo *bo)h](j&)}(hj)h]hbool}(hjhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjhhhjhMubjI)}(hamdgpu_vm_evictableh]jO)}(hamdgpu_vm_evictableh]hamdgpu_vm_evictable}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjhhhjhMubjj)}(h(struct amdgpu_bo *bo)h]jp)}(hstruct amdgpu_bo *boh](jv)}(hjyh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubh)}(hhh]jO)}(h amdgpu_boh]h amdgpu_bo}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.amdgpu_vm_evictableasbuh1hhjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(hj4h]h*}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(hboh]hbo}(hj7hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjubah}(h]h ]h"]h$]h&]jgjhuh1jihjhhhjhMubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjhhhjhMubah}(h]jah ](jjeh"]h$]h&]j j )j huh1jhjhMhjhhubj )}(hhh]h)}(hcheck if we can evict a VMh]hcheck if we can evict a VM}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj^hhubah}(h]h ]h"]h$]h&]uh1j hjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjyjSjyjTjUjVuh1jhhhjxhNhNubjX)}(h{**Parameters** ``struct amdgpu_bo *bo`` A page table of the VM. **Description** Check if it is possible to evict a VM.h](h)}(h**Parameters**h]jJ)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj}ubh)}(hhh]h)}(h1``struct amdgpu_bo *bo`` A page table of the VM. h](j)}(h``struct amdgpu_bo *bo``h]j)}(hjh]hstruct amdgpu_bo *bo}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj)}(hhh]h)}(hA page table of the VM.h]hA page table of the VM.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1hhj}ubh)}(h**Description**h]jJ)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj}ubh)}(h&Check if it is possible to evict a VM.h]h&Check if it is possible to evict a VM.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj}ubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjxhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j$amdgpu_vm_bo_invalidate (C function)c.amdgpu_vm_bo_invalidatehNtauh1jhjxhhhNhNubj)}(hhh](j)}(hAvoid amdgpu_vm_bo_invalidate (struct amdgpu_bo *bo, bool evicted)h]j )}(h@void amdgpu_vm_bo_invalidate(struct amdgpu_bo *bo, bool evicted)h](j&)}(hvoidh]hvoid}(hj"hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMubj8)}(h h]h }(hj1hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjhhhj0hMubjI)}(hamdgpu_vm_bo_invalidateh]jO)}(hamdgpu_vm_bo_invalidateh]hamdgpu_vm_bo_invalidate}(hjChhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj?ubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjhhhj0hMubjj)}(h$(struct amdgpu_bo *bo, bool evicted)h](jp)}(hstruct amdgpu_bo *boh](jv)}(hjyh]hstruct}(hj_hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj[ubj8)}(h h]h }(hjlhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj[ubh)}(hhh]jO)}(h amdgpu_boh]h amdgpu_bo}(hj}hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjzubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjEsbc.amdgpu_vm_bo_invalidateasbuh1hhj[ubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj[ubj)}(hj4h]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[ubjO)}(hboh]hbo}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj[ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjWubjp)}(h bool evictedh](j&)}(hj)h]hbool}(hjhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubjO)}(hevictedh]hevicted}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjWubeh}(h]h ]h"]h$]h&]jgjhuh1jihjhhhj0hMubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjhhhj0hMubah}(h]jah ](jjeh"]h$]h&]j j )j huh1jhj0hMhjhhubj )}(hhh]h)}(hmark the bo as invalidh]hmark the bo as invalid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjhhubah}(h]h ]h"]h$]h&]uh1j hjhhhj0hMubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRj.jSj.jTjUjVuh1jhhhjxhNhNubjX)}(h**Parameters** ``struct amdgpu_bo *bo`` amdgpu buffer object ``bool evicted`` is the BO evicted **Description** Mark **bo** as invalid.h](h)}(h**Parameters**h]jJ)}(hj8h]h Parameters}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj6ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj2ubh)}(hhh](h)}(h.``struct amdgpu_bo *bo`` amdgpu buffer object h](j)}(h``struct amdgpu_bo *bo``h]j)}(hjWh]hstruct amdgpu_bo *bo}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjQubj)}(hhh]h)}(hamdgpu buffer objecth]hamdgpu buffer object}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hhjlhMhjmubah}(h]h ]h"]h$]h&]uh1jhjQubeh}(h]h ]h"]h$]h&]uh1hhjlhMhjNubh)}(h#``bool evicted`` is the BO evicted h](j)}(h``bool evicted``h]j)}(hjh]h bool evicted}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj)}(hhh]h)}(his the BO evictedh]his the BO evicted}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMhjNubeh}(h]h ]h"]h$]h&]uh1hhj2ubh)}(h**Description**h]jJ)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj2ubh)}(hMark **bo** as invalid.h](hMark }(hjhhhNhNubjJ)}(h**bo**h]hbo}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubh as invalid.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj2ubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjxhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jamdgpu_vm_bo_move (C function)c.amdgpu_vm_bo_movehNtauh1jhjxhhhNhNubj)}(hhh](j)}(hYvoid amdgpu_vm_bo_move (struct amdgpu_bo *bo, struct ttm_resource *new_mem, bool evicted)h]j )}(hXvoid amdgpu_vm_bo_move(struct amdgpu_bo *bo, struct ttm_resource *new_mem, bool evicted)h](j&)}(hvoidh]hvoid}(hj" hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hj hhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMubj8)}(h h]h }(hj1 hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj hhhj0 hMubjI)}(hamdgpu_vm_bo_moveh]jO)}(hamdgpu_vm_bo_moveh]hamdgpu_vm_bo_move}(hjC hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj? ubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhj hhhj0 hMubjj)}(hB(struct amdgpu_bo *bo, struct ttm_resource *new_mem, bool evicted)h](jp)}(hstruct amdgpu_bo *boh](jv)}(hjyh]hstruct}(hj_ hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj[ ubj8)}(h h]h }(hjl hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj[ ubh)}(hhh]jO)}(h amdgpu_boh]h amdgpu_bo}(hj} hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjz ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jjE sbc.amdgpu_vm_bo_moveasbuh1hhj[ ubj8)}(h h]h }(hj hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj[ ubj)}(hj4h]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[ ubjO)}(hboh]hbo}(hj hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj[ ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjW ubjp)}(hstruct ttm_resource *new_memh](jv)}(hjyh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj ubj8)}(h h]h }(hj hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj ubh)}(hhh]jO)}(h ttm_resourceh]h ttm_resource}(hj hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j c.amdgpu_vm_bo_moveasbuh1hhj ubj8)}(h h]h }(hj hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj ubj)}(hj4h]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubjO)}(hnew_memh]hnew_mem}(hj( hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjW ubjp)}(h bool evictedh](j&)}(hj)h]hbool}(hjA hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hj= ubj8)}(h h]h }(hjN hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj= ubjO)}(hevictedh]hevicted}(hj\ hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj= ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjW ubeh}(h]h ]h"]h$]h&]jgjhuh1jihj hhhj0 hMubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhj hhhj0 hMubah}(h]j ah ](jjeh"]h$]h&]j j )j huh1jhj0 hMhj hhubj )}(hhh]h)}(hhandle BO moveh]hhandle BO move}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj hhubah}(h]h ]h"]h$]h&]uh1j hj hhhj0 hMubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRj jSj jTjUjVuh1jhhhjxhNhNubjX)}(hX**Parameters** ``struct amdgpu_bo *bo`` amdgpu buffer object ``struct ttm_resource *new_mem`` the new placement of the BO move ``bool evicted`` is the BO evicted **Description** Update the memory stats for the new placement and mark **bo** as invalid.h](h)}(h**Parameters**h]jJ)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj ubh)}(hhh](h)}(h.``struct amdgpu_bo *bo`` amdgpu buffer object h](j)}(h``struct amdgpu_bo *bo``h]j)}(hj h]hstruct amdgpu_bo *bo}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj ubj)}(hhh]h)}(hamdgpu buffer objecth]hamdgpu buffer object}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1hhj hMhj ubh)}(hB``struct ttm_resource *new_mem`` the new placement of the BO move h](j)}(h ``struct ttm_resource *new_mem``h]j)}(hj h]hstruct ttm_resource *new_mem}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj ubj)}(hhh]h)}(h the new placement of the BO moveh]h the new placement of the BO move}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1hhj hMhj ubh)}(h#``bool evicted`` is the BO evicted h](j)}(h``bool evicted``h]j)}(hj9 h]h bool evicted}(hj; hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7 ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj3 ubj)}(hhh]h)}(his the BO evictedh]his the BO evicted}(hjR hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjN hMhjO ubah}(h]h ]h"]h$]h&]uh1jhj3 ubeh}(h]h ]h"]h$]h&]uh1hhjN hMhj ubeh}(h]h ]h"]h$]h&]uh1hhj ubh)}(h**Description**h]jJ)}(hjt h]h Description}(hjv hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjr ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj ubh)}(hIUpdate the memory stats for the new placement and mark **bo** as invalid.h](h7Update the memory stats for the new placement and mark }(hj hhhNhNubjJ)}(h**bo**h]hbo}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj ubh as invalid.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjxhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j%amdgpu_vm_get_block_size (C function)c.amdgpu_vm_get_block_sizehNtauh1jhjxhhhNhNubj)}(hhh](j)}(h4uint32_t amdgpu_vm_get_block_size (uint64_t vm_size)h]j )}(h3uint32_t amdgpu_vm_get_block_size(uint64_t vm_size)h](h)}(hhh]jO)}(huint32_th]huint32_t}(hj hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jamdgpu_vm_get_block_sizesbc.amdgpu_vm_get_block_sizeasbuh1hhj hhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM ubj8)}(h h]h }(hj hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj hhhj hM ubjI)}(hamdgpu_vm_get_block_sizeh]jO)}(hj h]hamdgpu_vm_get_block_size}(hj hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj ubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhj hhhj hM ubjj)}(h(uint64_t vm_size)h]jp)}(huint64_t vm_sizeh](h)}(hhh]jO)}(huint64_th]huint64_t}(hj hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj" modnameN classnameNjj)}j]j c.amdgpu_vm_get_block_sizeasbuh1hhj ubj8)}(h h]h }(hj> hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj ubjO)}(hvm_sizeh]hvm_size}(hjL hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj ubah}(h]h ]h"]h$]h&]jgjhuh1jihj hhhj hM ubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhj hhhj hM ubah}(h]j ah ](jjeh"]h$]h&]j j )j huh1jhj hM hj hhubj )}(hhh]h)}(h,calculate VM page table size as power of twoh]h,calculate VM page table size as power of two}(hjv hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hjs hhubah}(h]h ]h"]h$]h&]uh1j hj hhhj hM ubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRj jSj jTjUjVuh1jhhhjxhNhNubjX)}(hY**Parameters** ``uint64_t vm_size`` VM size **Return** VM page table as power of twoh](h)}(h**Parameters**h]jJ)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hj ubh)}(hhh]h)}(h``uint64_t vm_size`` VM size h](j)}(h``uint64_t vm_size``h]j)}(hj h]huint64_t vm_size}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hj ubj)}(hhh]h)}(hVM sizeh]hVM size}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hM hj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1hhj hM hj ubah}(h]h ]h"]h$]h&]uh1hhj ubh)}(h **Return**h]jJ)}(hj h]hReturn}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hj ubh)}(hVM page table as power of twoh]hVM page table as power of two}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjxhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j"amdgpu_vm_adjust_size (C function)c.amdgpu_vm_adjust_sizehNtauh1jhjxhhhNhNubj)}(hhh](j)}(hvoid amdgpu_vm_adjust_size (struct amdgpu_device *adev, uint32_t min_vm_size, uint32_t fragment_size_default, unsigned max_level, unsigned max_bits)h]j )}(hvoid amdgpu_vm_adjust_size(struct amdgpu_device *adev, uint32_t min_vm_size, uint32_t fragment_size_default, unsigned max_level, unsigned max_bits)h](j&)}(hvoidh]hvoid}(hj7 hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hj3 hhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM ubj8)}(h h]h }(hjF hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj3 hhhjE hM ubjI)}(hamdgpu_vm_adjust_sizeh]jO)}(hamdgpu_vm_adjust_sizeh]hamdgpu_vm_adjust_size}(hjX hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjT ubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhj3 hhhjE hM ubjj)}(hy(struct amdgpu_device *adev, uint32_t min_vm_size, uint32_t fragment_size_default, unsigned max_level, unsigned max_bits)h](jp)}(hstruct amdgpu_device *adevh](jv)}(hjyh]hstruct}(hjt hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjp ubj8)}(h h]h }(hj hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjp ubh)}(hhh]jO)}(h amdgpu_deviceh]h amdgpu_device}(hj hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jjZ sbc.amdgpu_vm_adjust_sizeasbuh1hhjp ubj8)}(h h]h }(hj hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjp ubj)}(hj4h]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjp ubjO)}(hadevh]hadev}(hj hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjp ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjl ubjp)}(huint32_t min_vm_sizeh](h)}(hhh]jO)}(huint32_th]huint32_t}(hj hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j c.amdgpu_vm_adjust_sizeasbuh1hhj ubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj ubjO)}(h min_vm_sizeh]h min_vm_size}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjl ubjp)}(huint32_t fragment_size_defaulth](h)}(hhh]jO)}(huint32_th]huint32_t}(hj1hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj.ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj3modnameN classnameNjj)}j]j c.amdgpu_vm_adjust_sizeasbuh1hhj*ubj8)}(h h]h }(hjOhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj*ubjO)}(hfragment_size_defaulth]hfragment_size_default}(hj]hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj*ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjl ubjp)}(hunsigned max_levelh](j&)}(hunsignedh]hunsigned}(hjvhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjrubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjrubjO)}(h max_levelh]h max_level}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjrubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjl ubjp)}(hunsigned max_bitsh](j&)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjubj8)}(h h]h }(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubjO)}(hmax_bitsh]hmax_bits}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjl ubeh}(h]h ]h"]h$]h&]jgjhuh1jihj3 hhhjE hM ubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhj/ hhhjE hM ubah}(h]j* ah ](jjeh"]h$]h&]j j )j huh1jhjE hM hj, hhubj )}(hhh]h)}(h,adjust vm size, block size and fragment sizeh]h,adjust vm size, block size and fragment size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hjhhubah}(h]h ]h"]h$]h&]uh1j hj, hhhjE hM ubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRj jSj jTjUjVuh1jhhhjxhNhNubjX)}(hX.**Parameters** ``struct amdgpu_device *adev`` amdgpu_device pointer ``uint32_t min_vm_size`` the minimum vm size in GB if it's set auto ``uint32_t fragment_size_default`` Default PTE fragment size ``unsigned max_level`` max VMPT level ``unsigned max_bits`` max address space size in bitsh](h)}(h**Parameters**h]jJ)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM" hj ubh)}(hhh](h)}(h5``struct amdgpu_device *adev`` amdgpu_device pointer h](j)}(h``struct amdgpu_device *adev``h]j)}(hj2h]hstruct amdgpu_device *adev}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hj,ubj)}(hhh]h)}(hamdgpu_device pointerh]hamdgpu_device pointer}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjGhM hjHubah}(h]h ]h"]h$]h&]uh1jhj,ubeh}(h]h ]h"]h$]h&]uh1hhjGhM hj)ubh)}(hD``uint32_t min_vm_size`` the minimum vm size in GB if it's set auto h](j)}(h``uint32_t min_vm_size``h]j)}(hjkh]huint32_t min_vm_size}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM! hjeubj)}(hhh]h)}(h*the minimum vm size in GB if it's set autoh]h,the minimum vm size in GB if it’s set auto}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM! hjubah}(h]h ]h"]h$]h&]uh1jhjeubeh}(h]h ]h"]h$]h&]uh1hhjhM! hj)ubh)}(h=``uint32_t fragment_size_default`` Default PTE fragment size h](j)}(h"``uint32_t fragment_size_default``h]j)}(hjh]huint32_t fragment_size_default}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM" hjubj)}(hhh]h)}(hDefault PTE fragment sizeh]hDefault PTE fragment size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM" hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhM" hj)ubh)}(h&``unsigned max_level`` max VMPT level h](j)}(h``unsigned max_level``h]j)}(hjh]hunsigned max_level}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM# hjubj)}(hhh]h)}(hmax VMPT levelh]hmax VMPT level}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM# hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhM# hj)ubh)}(h4``unsigned max_bits`` max address space size in bitsh](j)}(h``unsigned max_bits``h]j)}(hjh]hunsigned max_bits}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM% hjubj)}(hhh]h)}(hmax address space size in bitsh]hmax address space size in bits}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM$ hj,ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhj+hM% hj)ubeh}(h]h ]h"]h$]h&]uh1hhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjxhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j amdgpu_vm_wait_idle (C function)c.amdgpu_vm_wait_idlehNtauh1jhjxhhhNhNubj)}(hhh](j)}(h=long amdgpu_vm_wait_idle (struct amdgpu_vm *vm, long timeout)h]j )}(h``bool write_fault`` true is write fault, false is read fault h](j)}(h``bool write_fault``h]j)}(hj*h]hbool write_fault}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMt hj*ubj)}(hhh]h)}(h(true is write fault, false is read faulth]h(true is write fault, false is read fault}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*hMt hj*ubah}(h]h ]h"]h$]h&]uh1jhj*ubeh}(h]h ]h"]h$]h&]uh1hhj*hMt hjX)ubeh}(h]h ]h"]h$]h&]uh1hhj<)ubh)}(h**Description**h]jJ)}(hj*h]h Description}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj*ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMv hj<)ubh)}(hmTry to gracefully handle a VM fault. Return true if the fault was handled and shouldn't be reported any more.h]hoTry to gracefully handle a VM fault. Return true if the fault was handled and shouldn’t be reported any more.}(hj +hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMu hj<)ubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjxhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j&amdgpu_debugfs_vm_bo_info (C function)c.amdgpu_debugfs_vm_bo_infohNtauh1jhjxhhhNhNubj)}(hhh](j)}(hIvoid amdgpu_debugfs_vm_bo_info (struct amdgpu_vm *vm, struct seq_file *m)h]j )}(hHvoid amdgpu_debugfs_vm_bo_info(struct amdgpu_vm *vm, struct seq_file *m)h](j&)}(hvoidh]hvoid}(hj8+hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hj4+hhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM ubj8)}(h h]h }(hjG+hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj4+hhhjF+hM ubjI)}(hamdgpu_debugfs_vm_bo_infoh]jO)}(hamdgpu_debugfs_vm_bo_infoh]hamdgpu_debugfs_vm_bo_info}(hjY+hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjU+ubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhj4+hhhjF+hM ubjj)}(h*(struct amdgpu_vm *vm, struct seq_file *m)h](jp)}(hstruct amdgpu_vm *vmh](jv)}(hjyh]hstruct}(hju+hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjq+ubj8)}(h h]h }(hj+hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjq+ubh)}(hhh]jO)}(h amdgpu_vmh]h amdgpu_vm}(hj+hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj+ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj+modnameN classnameNjj)}j]j)}jj[+sbc.amdgpu_debugfs_vm_bo_infoasbuh1hhjq+ubj8)}(h h]h }(hj+hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjq+ubj)}(hj4h]h*}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjq+ubjO)}(hvmh]hvm}(hj+hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjq+ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjm+ubjp)}(hstruct seq_file *mh](jv)}(hjyh]hstruct}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj+ubj8)}(h h]h }(hj+hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj+ubh)}(hhh]jO)}(hseq_fileh]hseq_file}(hj,hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj,ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj,modnameN classnameNjj)}j]j+c.amdgpu_debugfs_vm_bo_infoasbuh1hhj+ubj8)}(h h]h }(hj#,hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj+ubj)}(hj4h]h*}(hj1,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubjO)}(hjaah]hm}(hj>,hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj+ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjm+ubeh}(h]h ]h"]h$]h&]jgjhuh1jihj4+hhhjF+hM ubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhj0+hhhjF+hM ubah}(h]j++ah ](jjeh"]h$]h&]j j )j huh1jhjF+hM hj-+hhubj )}(hhh]h)}(hprint BO info for the VMh]hprint BO info for the VM}(hjg,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hjd,hhubah}(h]h ]h"]h$]h&]uh1j hj-+hhhjF+hM ubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRj,jSj,jTjUjVuh1jhhhjxhNhNubjX)}(h**Parameters** ``struct amdgpu_vm *vm`` Requested VM for printing BO info ``struct seq_file *m`` debugfs file **Description** Print BO information in debugfs file for the VMh](h)}(h**Parameters**h]jJ)}(hj,h]h Parameters}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj,ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hj,ubh)}(hhh](h)}(h;``struct amdgpu_vm *vm`` Requested VM for printing BO info h](j)}(h``struct amdgpu_vm *vm``h]j)}(hj,h]hstruct amdgpu_vm *vm}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hj,ubj)}(hhh]h)}(h!Requested VM for printing BO infoh]h!Requested VM for printing BO info}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,hM hj,ubah}(h]h ]h"]h$]h&]uh1jhj,ubeh}(h]h ]h"]h$]h&]uh1hhj,hM hj,ubh)}(h$``struct seq_file *m`` debugfs file h](j)}(h``struct seq_file *m``h]j)}(hj,h]hstruct seq_file *m}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hj,ubj)}(hhh]h)}(h debugfs fileh]h debugfs file}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,hM hj,ubah}(h]h ]h"]h$]h&]uh1jhj,ubeh}(h]h ]h"]h$]h&]uh1hhj,hM hj,ubeh}(h]h ]h"]h$]h&]uh1hhj,ubh)}(h**Description**h]jJ)}(hj-h]h Description}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj-ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hj,ubh)}(h/Print BO information in debugfs file for the VMh]h/Print BO information in debugfs file for the VM}(hj2-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hj,ubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjxhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j)amdgpu_vm_update_fault_cache (C function)c.amdgpu_vm_update_fault_cachehNtauh1jhjxhhhNhNubj)}(hhh](j)}(hvoid amdgpu_vm_update_fault_cache (struct amdgpu_device *adev, unsigned int pasid, uint64_t addr, uint32_t status, unsigned int vmhub)h]j )}(hvoid amdgpu_vm_update_fault_cache(struct amdgpu_device *adev, unsigned int pasid, uint64_t addr, uint32_t status, unsigned int vmhub)h](j&)}(hvoidh]hvoid}(hja-hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hj]-hhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM5 ubj8)}(h h]h }(hjp-hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj]-hhhjo-hM5 ubjI)}(hamdgpu_vm_update_fault_cacheh]jO)}(hamdgpu_vm_update_fault_cacheh]hamdgpu_vm_update_fault_cache}(hj-hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj~-ubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhj]-hhhjo-hM5 ubjj)}(hd(struct amdgpu_device *adev, unsigned int pasid, uint64_t addr, uint32_t status, unsigned int vmhub)h](jp)}(hstruct amdgpu_device *adevh](jv)}(hjyh]hstruct}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj-ubj8)}(h h]h }(hj-hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj-ubh)}(hhh]jO)}(h amdgpu_deviceh]h amdgpu_device}(hj-hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj-ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj-modnameN classnameNjj)}j]j)}jj-sbc.amdgpu_vm_update_fault_cacheasbuh1hhj-ubj8)}(h h]h }(hj-hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj-ubj)}(hj4h]h*}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-ubjO)}(hadevh]hadev}(hj-hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj-ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj-ubjp)}(hunsigned int pasidh](j&)}(hunsignedh]hunsigned}(hj.hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hj .ubj8)}(h h]h }(hj.hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj .ubj&)}(hinth]hint}(hj,.hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hj .ubj8)}(h h]h }(hj:.hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj .ubjO)}(hpasidh]hpasid}(hjH.hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj .ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj-ubjp)}(h uint64_t addrh](h)}(hhh]jO)}(huint64_th]huint64_t}(hjd.hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhja.ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjf.modnameN classnameNjj)}j]j-c.amdgpu_vm_update_fault_cacheasbuh1hhj].ubj8)}(h h]h }(hj.hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj].ubjO)}(haddrh]haddr}(hj.hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj].ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj-ubjp)}(huint32_t statush](h)}(hhh]jO)}(huint32_th]huint32_t}(hj.hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj.ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj.modnameN classnameNjj)}j]j-c.amdgpu_vm_update_fault_cacheasbuh1hhj.ubj8)}(h h]h }(hj.hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj.ubjO)}(hstatush]hstatus}(hj.hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj.ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj-ubjp)}(hunsigned int vmhubh](j&)}(hunsignedh]hunsigned}(hj.hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hj.ubj8)}(h h]h }(hj.hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj.ubj&)}(hinth]hint}(hj /hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hj.ubj8)}(h h]h }(hj/hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj.ubjO)}(hvmhubh]hvmhub}(hj)/hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj.ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj-ubeh}(h]h ]h"]h$]h&]jgjhuh1jihj]-hhhjo-hM5 ubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjY-hhhjo-hM5 ubah}(h]jT-ah ](jjeh"]h$]h&]j j )j huh1jhjo-hM5 hjV-hhubj )}(hhh]h)}(hupdate cached fault into.h]hupdate cached fault into.}(hjS/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM5 hjP/hhubah}(h]h ]h"]h$]h&]uh1j hjV-hhhjo-hM5 ubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjk/jSjk/jTjUjVuh1jhhhjxhNhNubjX)}(hXQ**Parameters** ``struct amdgpu_device *adev`` amdgpu device pointer ``unsigned int pasid`` PASID of the VM ``uint64_t addr`` Address of the fault ``uint32_t status`` GPUVM fault status register ``unsigned int vmhub`` which vmhub got the fault **Description** Cache the fault info for later use by userspace in debugging.h](h)}(h**Parameters**h]jJ)}(hju/h]h Parameters}(hjw/hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjs/ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM9 hjo/ubh)}(hhh](h)}(h5``struct amdgpu_device *adev`` amdgpu device pointer h](j)}(h``struct amdgpu_device *adev``h]j)}(hj/h]hstruct amdgpu_device *adev}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM6 hj/ubj)}(hhh]h)}(hamdgpu device pointerh]hamdgpu device pointer}(hj/hhhNhNubah}(h]h *]h"]h$]h&]uh1hhj/hM6 hj/ubah}(h]h ]h"]h$]h&]uh1jhj/ubeh}(h]h ]h"]h$]h&]uh1hhj/hM6 hj/ubh)}(h'``unsigned int pasid`` PASID of the VM h](j)}(h``unsigned int pasid``h]j)}(hj/h]hunsigned int pasid}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM7 hj/ubj)}(hhh]h)}(hPASID of the VMh]hPASID of the VM}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/hM7 hj/ubah}(h]h ]h"]h$]h&]uh1jhj/ubeh}(h]h ]h"]h$]h&]uh1hhj/hM7 hj/ubh)}(h'``uint64_t addr`` Address of the fault h](j)}(h``uint64_t addr``h]j)}(hj0h]h uint64_t addr}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM8 hj0ubj)}(hhh]h)}(hAddress of the faulth]hAddress of the fault}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj0hM8 hj0ubah}(h]h ]h"]h$]h&]uh1jhj0ubeh}(h]h ]h"]h$]h&]uh1hhj0hM8 hj/ubh)}(h0``uint32_t status`` GPUVM fault status register h](j)}(h``uint32_t status``h]j)}(hj?0h]huint32_t status}(hjA0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=0ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM9 hj90ubj)}(hhh]h)}(hGPUVM fault status registerh]hGPUVM fault status register}(hjX0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjT0hM9 hjU0ubah}(h]h ]h"]h$]h&]uh1jhj90ubeh}(h]h ]h"]h$]h&]uh1hhjT0hM9 hj/ubh)}(h1``unsigned int vmhub`` which vmhub got the fault h](j)}(h``unsigned int vmhub``h]j)}(hjx0h]hunsigned int vmhub}(hjz0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjv0ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM: hjr0ubj)}(hhh]h)}(hwhich vmhub got the faulth]hwhich vmhub got the fault}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj0hM: hj0ubah}(h]h ]h"]h$]h&]uh1jhjr0ubeh}(h]h ]h"]h$]h&]uh1hhj0hM: hj/ubeh}(h]h ]h"]h$]h&]uh1hhjo/ubh)}(h**Description**h]jJ)}(hj0h]h Description}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj0ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM< hjo/ubh)}(h=Cache the fault info for later use by userspace in debugging.h]h=Cache the fault info for later use by userspace in debugging.}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM; hjo/ubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjxhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j)amdgpu_vm_is_bo_always_valid (C function)c.amdgpu_vm_is_bo_always_validhNtauh1jhjxhhhNhNubj)}(hhh](j)}(hNbool amdgpu_vm_is_bo_always_valid (struct amdgpu_vm *vm, struct amdgpu_bo *bo)h]j )}(hMbool amdgpu_vm_is_bo_always_valid(struct amdgpu_vm *vm, struct amdgpu_bo *bo)h](j&)}(hj)h]hbool}(hj0hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hj0hhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMn ubj8)}(h h]h }(hj1hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj0hhhj1hMn ubjI)}(hamdgpu_vm_is_bo_always_validh]jO)}(hamdgpu_vm_is_bo_always_validh]hamdgpu_vm_is_bo_always_valid}(hj1hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj1ubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhj0hhhj1hMn ubjj)}(h,(struct amdgpu_vm *vm, struct amdgpu_bo *bo)h](jp)}(hstruct amdgpu_vm *vmh](jv)}(hjyh]hstruct}(hj41hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj01ubj8)}(h h]h }(hjA1hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj01ubh)}(hhh]jO)}(h amdgpu_vmh]h amdgpu_vm}(hjR1hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjO1ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjT1modnameN classnameNjj)}j]j)}jj1sbc.amdgpu_vm_is_bo_always_validasbuh1hhj01ubj8)}(h h]h }(hjr1hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj01ubj)}(hj4h]h*}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj01ubjO)}(hvmh]hvm}(hj1hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj01ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj,1ubjp)}(hstruct amdgpu_bo *boh](jv)}(hjyh]hstruct}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj1ubj8)}(h h]h }(hj1hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj1ubh)}(hhh]jO)}(h amdgpu_boh]h amdgpu_bo}(hj1hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj1ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj1modnameN classnameNjj)}j]jn1c.amdgpu_vm_is_bo_always_validasbuh1hhj1ubj8)}(h h]h }(hj1hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj1ubj)}(hj4h]h*}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubjO)}(hboh]hbo}(hj1hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj1ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj,1ubeh}(h]h ]h"]h$]h&]jgjhuh1jihj0hhhj1hMn ubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhj0hhhj1hMn ubah}(h]j0ah ](jjeh"]h$]h&]j j )j huh1jhj1hMn hj0hhubj )}(hhh]h)}(h"check if the BO is VM always validh]h"check if the BO is VM always valid}(hj'2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMn hj$2hhubah}(h]h ]h"]h$]h&]uh1j hj0hhhj1hMn ubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRj?2jSj?2jTjUjVuh1jhhhjxhNhNubjX)}(h**Parameters** ``struct amdgpu_vm *vm`` VM to test against. ``struct amdgpu_bo *bo`` BO to be tested. **Description** Returns true if the BO shares the dma_resv object with the root PD and is always guaranteed to be valid inside the VM.h](h)}(h**Parameters**h]jJ)}(hjI2h]h Parameters}(hjK2hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjG2ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMr hjC2ubh)}(hhh](h)}(h-``struct amdgpu_vm *vm`` VM to test against. h](j)}(h``struct amdgpu_vm *vm``h]j)}(hjh2h]hstruct amdgpu_vm *vm}(hjj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjf2ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMp hjb2ubj)}(hhh]h)}(hVM to test against.h]hVM to test against.}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj}2hMp hj~2ubah}(h]h ]h"]h$]h&]uh1jhjb2ubeh}(h]h ]h"]h$]h&]uh1hhj}2hMp hj_2ubh)}(h*``struct amdgpu_bo *bo`` BO to be tested. h](j)}(h``struct amdgpu_bo *bo``h]j)}(hj2h]hstruct amdgpu_bo *bo}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMq hj2ubj)}(hhh]h)}(hBO to be tested.h]hBO to be tested.}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj2hMq hj2ubah}(h]h ]h"]h$]h&]uh1jhj2ubeh}(h]h ]h"]h$]h&]uh1hhj2hMq hj_2ubeh}(h]h ]h"]h$]h&]uh1hhjC2ubh)}(h**Description**h]jJ)}(hj2h]h Description}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj2ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMs hjC2ubh)}(hvReturns true if the BO shares the dma_resv object with the root PD and is always guaranteed to be valid inside the VM.h]hvReturns true if the BO shares the dma_resv object with the root PD and is always guaranteed to be valid inside the VM.}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:194: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMr hjC2ubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhjxhhhNhNubeh}(h]amdgpu-virtual-memoryah ]h"]amdgpu virtual memoryah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hInterrupt Handlingh]hInterrupt Handling}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3hhhhhKubh)}(hXCInterrupts generated within GPU hardware raise interrupt requests that are passed to amdgpu IRQ handler which is responsible for detecting source and type of the interrupt and dispatching matching handlers. If handling an interrupt requires calling kernel functions that may sleep processing is dispatched to work handlers.h]hXCInterrupts generated within GPU hardware raise interrupt requests that are passed to amdgpu IRQ handler which is responsible for detecting source and type of the interrupt and dispatching matching handlers. If handling an interrupt requires calling kernel functions that may sleep processing is dispatched to work handlers.}(hj!3hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:200: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhj3hhubh)}(hZIf MSI functionality is not disabled by module parameter then MSI support will be enabled.h]hZIf MSI functionality is not disabled by module parameter then MSI support will be enabled.}(hj03hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:200: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chK$hj3hhubh)}(hFor GPU interrupt sources that may be driven by another driver, IRQ domain support is used (with mapping between virtual and hardware IRQs).h]hFor GPU interrupt sources that may be driven by another driver, IRQ domain support is used (with mapping between virtual and hardware IRQs).}(hj?3hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:200: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chK'hj3hhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j#amdgpu_irq_disable_all (C function)c.amdgpu_irq_disable_allhNtauh1jhj3hhhNhNubj)}(hhh](j)}(h8void amdgpu_irq_disable_all (struct amdgpu_device *adev)h]j )}(h7void amdgpu_irq_disable_all(struct amdgpu_device *adev)h](j&)}(hvoidh]hvoid}(hjg3hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjc3hhho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKvubj8)}(h h]h }(hjv3hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjc3hhhju3hKvubjI)}(hamdgpu_irq_disable_allh]jO)}(hamdgpu_irq_disable_allh]hamdgpu_irq_disable_all}(hj3hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj3ubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjc3hhhju3hKvubjj)}(h(struct amdgpu_device *adev)h]jp)}(hstruct amdgpu_device *adevh](jv)}(hjyh]hstruct}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj3ubj8)}(h h]h }(hj3hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj3ubh)}(hhh]jO)}(h amdgpu_deviceh]h amdgpu_device}(hj3hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj3ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj3modnameN classnameNjj)}j]j)}jj3sbc.amdgpu_irq_disable_allasbuh1hhj3ubj8)}(h h]h }(hj3hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj3ubj)}(hj4h]h*}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubjO)}(hadevh]hadev}(hj3hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj3ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj3ubah}(h]h ]h"]h$]h&]jgjhuh1jihjc3hhhju3hKvubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhj_3hhhju3hKvubah}(h]jZ3ah ](jjeh"]h$]h&]j j )j huh1jhju3hKvhj\3hhubj )}(hhh]h)}(hdisable *all* interruptsh](hdisable }(hj'4hhhNhNubhemphasis)}(h*all*h]hall}(hj14hhhNhNubah}(h]h ]h"]h$]h&]uh1j/4hj'4ubh interrupts}(hj'4hhhNhNubeh}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKvhj$4hhubah}(h]h ]h"]h$]h&]uh1j hj\3hhhju3hKvubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjS4jSjS4jTjUjVuh1jhhhj3hNhNubjX)}(h**Parameters** ``struct amdgpu_device *adev`` amdgpu device pointer **Description** Disable all types of interrupts from all sources.h](h)}(h**Parameters**h]jJ)}(hj]4h]h Parameters}(hj_4hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj[4ubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKzhjW4ubh)}(hhh]h)}(h5``struct amdgpu_device *adev`` amdgpu device pointer h](j)}(h``struct amdgpu_device *adev``h]j)}(hj|4h]hstruct amdgpu_device *adev}(hj~4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjz4ubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKxhjv4ubj)}(hhh]h)}(hamdgpu device pointerh]hamdgpu device pointer}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4hKxhj4ubah}(h]h ]h"]h$]h&]uh1jhjv4ubeh}(h]h ]h"]h$]h&]uh1hhj4hKxhjs4ubah}(h]h ]h"]h$]h&]uh1hhjW4ubh)}(h**Description**h]jJ)}(hj4h]h Description}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj4ubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKzhjW4ubh)}(h1Disable all types of interrupts from all sources.h]h1Disable all types of interrupts from all sources.}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKyhjW4ubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhj3hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jamdgpu_irq_handler (C function)c.amdgpu_irq_handlerhNtauh1jhj3hhhNhNubj)}(hhh](j)}(h3irqreturn_t amdgpu_irq_handler (int irq, void *arg)h]j )}(h2irqreturn_t amdgpu_irq_handler(int irq, void *arg)h](h)}(hhh]jO)}(h irqreturn_th]h irqreturn_t}(hj4hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj4ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj5modnameN classnameNjj)}j]j)}jamdgpu_irq_handlersbc.amdgpu_irq_handlerasbuh1hhj4hhho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKubj8)}(h h]h }(hj!5hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj4hhhj 5hKubjI)}(hamdgpu_irq_handlerh]jO)}(hj5h]hamdgpu_irq_handler}(hj35hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj/5ubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhj4hhhj 5hKubjj)}(h(int irq, void *arg)h](jp)}(hint irqh](j&)}(hinth]hint}(hjN5hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjJ5ubj8)}(h h]h }(hj\5hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjJ5ubjO)}(hirqh]hirq}(hjj5hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjJ5ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjF5ubjp)}(h void *argh](j&)}(hvoidh]hvoid}(hj5hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hj5ubj8)}(h h]h }(hj5hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj5ubj)}(hj4h]h*}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubjO)}(hargh]harg}(hj5hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj5ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjF5ubeh}(h]h ]h"]h$]h&]jgjhuh1jihj4hhhj 5hKubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhj4hhhj 5hKubah}(h]j4ah ](jjeh"]h$]h&]j j )j huh1jhj 5hKhj4hhubj )}(hhh]h)}(h IRQ handlerh]h IRQ handler}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhj5hhubah}(h]h ]h"]h$]h&]uh1j hj4hhhj 5hKubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRj5jSj5jTjUjVuh1jhhhj3hNhNubjX)}(h**Parameters** ``int irq`` IRQ number (unused) ``void *arg`` pointer to DRM device **Description** IRQ handler for amdgpu driver (all ASICs). **Return** result of handling the IRQ, as defined by :c:type:`irqreturn_t`h](h)}(h**Parameters**h]jJ)}(hj5h]h Parameters}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj5ubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhj5ubh)}(hhh](h)}(h ``int irq`` IRQ number (unused) h](j)}(h ``int irq``h]j)}(hj6h]hint irq}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhj6ubj)}(hhh]h)}(hIRQ number (unused)h]hIRQ number (unused)}(hj06hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,6hKhj-6ubah}(h]h ]h"]h$]h&]uh1jhj6ubeh}(h]h ]h"]h$]h&]uh1hhj,6hKhj6ubh)}(h$``void *arg`` pointer to DRM device h](j)}(h ``void *arg``h]j)}(hjP6h]h void *arg}(hjR6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjN6ubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhjJ6ubj)}(hhh]h)}(hpointer to DRM deviceh]hpointer to DRM device}(hji6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhje6hKhjf6ubah}(h]h ]h"]h$]h&]uh1jhjJ6ubeh}(h]h ]h"]h$]h&]uh1hhje6hKhj6ubeh}(h]h ]h"]h$]h&]uh1hhj5ubh)}(h**Description**h]jJ)}(hj6h]h Description}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj6ubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhj5ubh)}(h*IRQ handler for amdgpu driver (all ASICs).h]h*IRQ handler for amdgpu driver (all ASICs).}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhj5ubh)}(h **Return**h]jJ)}(hj6h]hReturn}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj6ubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhj5ubh)}(h?result of handling the IRQ, as defined by :c:type:`irqreturn_t`h](h*result of handling the IRQ, as defined by }(hj6hhhNhNubh)}(h:c:type:`irqreturn_t`h]j)}(hj6h]h irqreturn_t}(hj6hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj irqreturn_tuh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhj6ubeh}(h]h ]h"]h$]h&]uh1hhj6hKhj5ubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhj3hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j"amdgpu_irq_handle_ih1 (C function)c.amdgpu_irq_handle_ih1hNtauh1jhj3hhhNhNubj)}(hhh](j)}(h5void amdgpu_irq_handle_ih1 (struct work_struct *work)h]j )}(h4void amdgpu_irq_handle_ih1(struct work_struct *work)h](j&)}(hvoidh]hvoid}(hj7hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hj7hhho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKubj8)}(h h]h }(hj%7hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj7hhhj$7hKubjI)}(hamdgpu_irq_handle_ih1h]jO)}(hamdgpu_irq_handle_ih1h]hamdgpu_irq_handle_ih1}(hj77hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj37ubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhj7hhhj$7hKubjj)}(h(struct work_struct *work)h]jp)}(hstruct work_struct *workh](jv)}(hjyh]hstruct}(hjS7hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjO7ubj8)}(h h]h }(hj`7hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjO7ubh)}(hhh]jO)}(h work_structh]h work_struct}(hjq7hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjn7ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjs7modnameN classnameNjj)}j]j)}jj97sbc.amdgpu_irq_handle_ih1asbuh1hhjO7ubj8)}(h h]h }(hj7hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjO7ubj)}(hj4h]h*}(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjO7ubjO)}(hworkh]hwork}(hj7hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjO7ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjK7ubah}(h]h ]h"]h$]h&]jgjhuh1jihj7hhhj$7hKubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhj7hhhj$7hKubah}(h]j 7ah ](jjeh"]h$]h&]j j )j huh1jhj$7hKhj 7hhubj )}(hhh]h)}(hkick of processing for IH1h]hkick of processing for IH1}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhj7hhubah}(h]h ]h"]h$]h&]uh1j hj 7hhhj$7hKubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRj7jSj7jTjUjVuh1jhhhj3hNhNubjX)}(h**Parameters** ``struct work_struct *work`` work structure in struct amdgpu_irq **Description** Kick of processing IH ring 1.h](h)}(h**Parameters**h]jJ)}(hj7h]h Parameters}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj7ubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhj7ubh)}(hhh]h)}(hA``struct work_struct *work`` work structure in struct amdgpu_irq h](j)}(h``struct work_struct *work``h]j)}(hj8h]hstruct work_struct *work}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhj8ubj)}(hhh]h)}(h#work structure in struct amdgpu_irqh]h#work structure in struct amdgpu_irq}(hj08hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,8hKhj-8ubah}(h]h ]h"]h$]h&]uh1jhj8ubeh}(h]h ]h"]h$]h&]uh1hhj,8hKhj8ubah}(h]h ]h"]h$]h&]uh1hhj7ubh)}(h**Description**h]jJ)}(hjR8h]h Description}(hjT8hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjP8ubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhj7ubh)}(hKick of processing IH ring 1.h]hKick of processing IH ring 1.}(hjh8hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhj7ubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhj3hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j"amdgpu_irq_handle_ih2 (C function)c.amdgpu_irq_handle_ih2hNtauh1jhj3hhhNhNubj)}(hhh](j)}(h5void amdgpu_irq_handle_ih2 (struct work_struct *work)h]j )}(h4void amdgpu_irq_handle_ih2(struct work_struct *work)h](j&)}(hvoidh]hvoid}(hj8hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hj8hhho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKubj8)}(h h]h }(hj8hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj8hhhj8hKubjI)}(hamdgpu_irq_handle_ih2h]jO)}(hamdgpu_irq_handle_ih2h]hamdgpu_irq_handle_ih2}(hj8hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj8ubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhj8hhhj8hKubjj)}(h(struct work_struct *work)h]jp)}(hstruct work_struct *workh](jv)}(hjyh]hstruct}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj8ubj8)}(h h]h }(hj8hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj8ubh)}(hhh]jO)}(h work_structh]h work_struct}(hj8hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj8ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj8modnameN classnameNjj)}j]j)}jj8sbc.amdgpu_irq_handle_ih2asbuh1hhj8ubj8)}(h h]h }(hj9hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj8ubj)}(hj4h]h*}(hj 9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8ubjO)}(hworkh]hwork}(hj-9hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj8ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj8ubah}(h]h ]h"]h$]h&]jgjhuh1jihj8hhhj8hKubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhj8hhhj8hKubah}(h]j8ah ](jjeh"]h$]h&]j j )j huh1jhj8hKhj8hhubj )}(hhh]h)}(hkick of processing for IH2h]hkick of processing for IH2}(hjW9hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhjT9hhubah}(h]h ]h"]h$]h&]uh1j hj8hhhj8hKubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjo9jSjo9jTjUjVuh1jhhhj3hNhNubjX)}(h**Parameters** ``struct work_struct *work`` work structure in struct amdgpu_irq **Description** Kick of processing IH ring 2.h](h)}(h**Parameters**h]jJ)}(hjy9h]h Parameters}(hj{9hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjw9ubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhjs9ubh)}(hhh]h)}(hA``struct work_struct *work`` work structure in struct amdgpu_irq h](j)}(h``struct work_struct *work``h]j)}(hj9h]hstruct work_struct *work}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhj9ubj)}(hhh]h)}(h#work structure in struct amdgpu_irqh]h#work structure in struct amdgpu_irq}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9hKhj9ubah}(h]h ]h"]h$]h&]uh1jhj9ubeh}(h]h ]h"]h$]h&]uh1hhj9hKhj9ubah}(h]h ]h"]h$]h&]uh1hhjs9ubh)}(h**Description**h]jJ)}(hj9h]h Description}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj9ubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhjs9ubh)}(hKick of processing IH ring 2.h]hKick of processing IH ring 2.}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhjs9ubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhj3hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j&amdgpu_irq_handle_ih_soft (C function)c.amdgpu_irq_handle_ih_softhNtauh1jhj3hhhNhNubj)}(hhh](j)}(h9void amdgpu_irq_handle_ih_soft (struct work_struct *work)h]j )}(h8void amdgpu_irq_handle_ih_soft(struct work_struct *work)h](j&)}(hvoidh]hvoid}(hj:hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hj:hhho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKubj8)}(h h]h }(hj':hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj:hhhj&:hKubjI)}(hamdgpu_irq_handle_ih_softh]jO)}(hamdgpu_irq_handle_ih_softh]hamdgpu_irq_handle_ih_soft}(hj9:hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj5:ubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhj:hhhj&:hKubjj)}(h(struct work_struct *work)h]jp)}(hstruct work_struct *workh](jv)}(hjyh]hstruct}(hjU:hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjQ:ubj8)}(h h]h }(hjb:hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjQ:ubh)}(hhh]jO)}(h work_structh]h work_struct}(hjs:hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjp:ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetju:modnameN classnameNjj)}j]j)}jj;:sbc.amdgpu_irq_handle_ih_softasbuh1hhjQ:ubj8)}(h h]h }(hj:hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjQ:ubj)}(hj4h]h*}(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQ:ubjO)}(hworkh]hwork}(hj:hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjQ:ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjM:ubah}(h]h ]h"]h$]h&]jgjhuh1jihj:hhhj&:hKubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhj:hhhj&:hKubah}(h]j :ah ](jjeh"]h$]h&]j j )j huh1jhj&:hKhj :hhubj )}(hhh]h)}(hkick of processing for ih_softh]hkick of processing for ih_soft}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhj:hhubah}(h]h ]h"]h$]h&]uh1j hj :hhhj&:hKubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRj:jSj:jTjUjVuh1jhhhj3hNhNubjX)}(h**Parameters** ``struct work_struct *work`` work structure in struct amdgpu_irq **Description** Kick of processing IH soft ring.h](h)}(h**Parameters**h]jJ)}(hj:h]h Parameters}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj:ubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhj:ubh)}(hhh]h)}(hA``struct work_struct *work`` work structure in struct amdgpu_irq h](j)}(h``struct work_struct *work``h]j)}(hj;h]hstruct work_struct *work}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhj;ubj)}(hhh]h)}(h#work structure in struct amdgpu_irqh]h#work structure in struct amdgpu_irq}(hj2;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj.;hKhj/;ubah}(h]h ]h"]h$]h&]uh1jhj;ubeh}(h]h ]h"]h$]h&]uh1hhj.;hKhj;ubah}(h]h ]h"]h$]h&]uh1hhj:ubh)}(h**Description**h]jJ)}(hjT;h]h Description}(hjV;hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjR;ubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhj:ubh)}(h Kick of processing IH soft ring.h]h Kick of processing IH soft ring.}(hjj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhj:ubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhj3hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jamdgpu_msi_ok (C function)c.amdgpu_msi_okhNtauh1jhj3hhhNhNubj)}(hhh](j)}(h/bool amdgpu_msi_ok (struct amdgpu_device *adev)h]j )}(h.bool amdgpu_msi_ok(struct amdgpu_device *adev)h](j&)}(hj)h]hbool}(hj;hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hj;hhho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKubj8)}(h h]h }(hj;hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj;hhhj;hKubjI)}(h amdgpu_msi_okh]jO)}(h amdgpu_msi_okh]h amdgpu_msi_ok}(hj;hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj;ubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhj;hhhj;hKubjj)}(h(struct amdgpu_device *adev)h]jp)}(hstruct amdgpu_device *adevh](jv)}(hjyh]hstruct}(hj;hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj;ubj8)}(h h]h }(hj;hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj;ubh)}(hhh]jO)}(h amdgpu_deviceh]h amdgpu_device}(hj;hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj;ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj;modnameN classnameNjj)}j]j)}jj;sbc.amdgpu_msi_okasbuh1hhj;ubj8)}(h h]h }(hj<hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj;ubj)}(hj4h]h*}(hj!<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;ubjO)}(hadevh]hadev}(hj.<hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj;ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj;ubah}(h]h ]h"]h$]h&]jgjhuh1jihj;hhhj;hKubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhj;hhhj;hKubah}(h]j;ah ](jjeh"]h$]h&]j j )j huh1jhj;hKhj;hhubj )}(hhh]h)}(h*check whether MSI functionality is enabledh]h*check whether MSI functionality is enabled}(hjX<hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhjU<hhubah}(h]h ]h"]h$]h&]uh1j hj;hhhj;hKubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjp<jSjp<jTjUjVuh1jhhhj3hNhNubjX)}(hX**Parameters** ``struct amdgpu_device *adev`` amdgpu device pointer (unused) **Description** Checks whether MSI functionality has been disabled via module parameter (all ASICs). **Return** *true* if MSIs are allowed to be enabled or *false* otherwiseh](h)}(h**Parameters**h]jJ)}(hjz<h]h Parameters}(hj|<hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjx<ubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhjt<ubh)}(hhh]h)}(h>``struct amdgpu_device *adev`` amdgpu device pointer (unused) h](j)}(h``struct amdgpu_device *adev``h]j)}(hj<h]hstruct amdgpu_device *adev}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<ubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhj<ubj)}(hhh]h)}(hamdgpu device pointer (unused)h]hamdgpu device pointer (unused)}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj<hKhj<ubah}(h]h ]h"]h$]h&]uh1jhj<ubeh}(h]h ]h"]h$]h&]uh1hhj<hKhj<ubah}(h]h ]h"]h$]h&]uh1hhjt<ubh)}(h**Description**h]jJ)}(hj<h]h Description}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj<ubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhjt<ubh)}(hTChecks whether MSI functionality has been disabled via module parameter (all ASICs).h]hTChecks whether MSI functionality has been disabled via module parameter (all ASICs).}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhjt<ubh)}(h **Return**h]jJ)}(hj<h]hReturn}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj<ubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhjt<ubh)}(h=*true* if MSIs are allowed to be enabled or *false* otherwiseh](j04)}(h*true*h]htrue}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1j/4hj=ubh& if MSIs are allowed to be enabled or }(hj=hhhNhNubj04)}(h*false*h]hfalse}(hj'=hhhNhNubah}(h]h ]h"]h$]h&]uh1j/4hj=ubh otherwise}(hj=hhhNhNubeh}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhjt<ubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhj3hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jamdgpu_irq_init (C function)c.amdgpu_irq_inithNtauh1jhj3hhhNhNubj)}(hhh](j)}(h0int amdgpu_irq_init (struct amdgpu_device *adev)h]j )}(h/int amdgpu_irq_init(struct amdgpu_device *adev)h](j&)}(hinth]hint}(hj`=hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hj\=hhho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMubj8)}(h h]h }(hjo=hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj\=hhhjn=hMubjI)}(hamdgpu_irq_inith]jO)}(hamdgpu_irq_inith]hamdgpu_irq_init}(hj=hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj}=ubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhj\=hhhjn=hMubjj)}(h(struct amdgpu_device *adev)h]jp)}(hstruct amdgpu_device *adevh](jv)}(hjyh]hstruct}(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj=ubj8)}(h h]h }(hj=hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj=ubh)}(hhh]jO)}(h amdgpu_deviceh]h amdgpu_device}(hj=hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj=ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj=modnameN classnameNjj)}j]j)}jj=sbc.amdgpu_irq_initasbuh1hhj=ubj8)}(h h]h }(hj=hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj=ubj)}(hj4h]h*}(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=ubjO)}(hadevh]hadev}(hj=hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj=ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj=ubah}(h]h ]h"]h$]h&]jgjhuh1jihj\=hhhjn=hMubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjX=hhhjn=hMubah}(h]jS=ah ](jjeh"]h$]h&]j j )j huh1jhjn=hMhjU=hhubj )}(hhh]h)}(hinitialize interrupt handlingh]hinitialize interrupt handling}(hj >hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhj>hhubah}(h]h ]h"]h$]h&]uh1j hjU=hhhjn=hMubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRj8>jSj8>jTjUjVuh1jhhhj3hNhNubjX)}(hX**Parameters** ``struct amdgpu_device *adev`` amdgpu device pointer **Description** Sets up work functions for hotplug and reset interrupts, enables MSI functionality, initializes vblank, hotplug and reset interrupt handling. **Return** 0 on success or error code on failureh](h)}(h**Parameters**h]jJ)}(hjB>h]h Parameters}(hjD>hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj@>ubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chM hj<>ubh)}(hhh]h)}(h5``struct amdgpu_device *adev`` amdgpu device pointer h](j)}(h``struct amdgpu_device *adev``h]j)}(hja>h]hstruct amdgpu_device *adev}(hjc>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_>ubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhj[>ubj)}(hhh]h)}(hamdgpu device pointerh]hamdgpu device pointer}(hjz>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjv>hMhjw>ubah}(h]h ]h"]h$]h&]uh1jhj[>ubeh}(h]h ]h"]h$]h&]uh1hhjv>hMhjX>ubah}(h]h ]h"]h$]h&]uh1hhj<>ubh)}(h**Description**h]jJ)}(hj>h]h Description}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj>ubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chM hj<>ubh)}(hSets up work functions for hotplug and reset interrupts, enables MSI functionality, initializes vblank, hotplug and reset interrupt handling.h]hSets up work functions for hotplug and reset interrupts, enables MSI functionality, initializes vblank, hotplug and reset interrupt handling.}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chM hj<>ubh)}(h **Return**h]jJ)}(hj>h]hReturn}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj>ubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chM hj<>ubh)}(h%0 on success or error code on failureh]h%0 on success or error code on failure}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chM hj<>ubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhj3hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jamdgpu_irq_fini_sw (C function)c.amdgpu_irq_fini_swhNtauh1jhj3hhhNhNubj)}(hhh](j)}(h4void amdgpu_irq_fini_sw (struct amdgpu_device *adev)h]j )}(h3void amdgpu_irq_fini_sw(struct amdgpu_device *adev)h](j&)}(hvoidh]hvoid}(hj?hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hj?hhho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMZubj8)}(h h]h }(hj?hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj?hhhj?hMZubjI)}(hamdgpu_irq_fini_swh]jO)}(hamdgpu_irq_fini_swh]hamdgpu_irq_fini_sw}(hj)?hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj%?ubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhj?hhhj?hMZubjj)}(h(struct amdgpu_device *adev)h]jp)}(hstruct amdgpu_device *adevh](jv)}(hjyh]hstruct}(hjE?hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjA?ubj8)}(h h]h }(hjR?hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjA?ubh)}(hhh]jO)}(h amdgpu_deviceh]h amdgpu_device}(hjc?hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj`?ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetje?modnameN classnameNjj)}j]j)}jj+?sbc.amdgpu_irq_fini_swasbuh1hhjA?ubj8)}(h h]h }(hj?hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjA?ubj)}(hj4h]h*}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjA?ubjO)}(hadevh]hadev}(hj?hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjA?ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj=?ubah}(h]h ]h"]h$]h&]jgjhuh1jihj?hhhj?hMZubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhj?hhhj?hMZubah}(h]j>ah ](jjeh"]h$]h&]j j )j huh1jhj?hMZhj>hhubj )}(hhh]h)}(hshut down interrupt handlingh]hshut down interrupt handling}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMZhj?hhubah}(h]h ]h"]h$]h&]uh1j hj>hhhj?hMZubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRj?jSj?jTjUjVuh1jhhhj3hNhNubjX)}(hX**Parameters** ``struct amdgpu_device *adev`` amdgpu device pointer **Description** Tears down work functions for hotplug and reset interrupts, disables MSI functionality, shuts down vblank, hotplug and reset interrupt handling, turns off interrupts from all sources (all ASICs).h](h)}(h**Parameters**h]jJ)}(hj?h]h Parameters}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj?ubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chM^hj?ubh)}(hhh]h)}(h5``struct amdgpu_device *adev`` amdgpu device pointer h](j)}(h``struct amdgpu_device *adev``h]j)}(hj @h]hstruct amdgpu_device *adev}(hj @hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@ubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chM\hj@ubj)}(hhh]h)}(hamdgpu device pointerh]hamdgpu device pointer}(hj"@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj@hM\hj@ubah}(h]h ]h"]h$]h&]uh1jhj@ubeh}(h]h ]h"]h$]h&]uh1hhj@hM\hj@ubah}(h]h ]h"]h$]h&]uh1hhj?ubh)}(h**Description**h]jJ)}(hjD@h]h Description}(hjF@hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjB@ubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chM^hj?ubh)}(hTears down work functions for hotplug and reset interrupts, disables MSI functionality, shuts down vblank, hotplug and reset interrupt handling, turns off interrupts from all sources (all ASICs).h]hTears down work functions for hotplug and reset interrupts, disables MSI functionality, shuts down vblank, hotplug and reset interrupt handling, turns off interrupts from all sources (all ASICs).}(hjZ@hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chM]hj?ubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhj3hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jamdgpu_irq_add_id (C function)c.amdgpu_irq_add_idhNtauh1jhj3hhhNhNubj)}(hhh](j)}(h~int amdgpu_irq_add_id (struct amdgpu_device *adev, unsigned int client_id, unsigned int src_id, struct amdgpu_irq_src *source)h]j )}(h}int amdgpu_irq_add_id(struct amdgpu_device *adev, unsigned int client_id, unsigned int src_id, struct amdgpu_irq_src *source)h](j&)}(hinth]hint}(hj@hhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hj@hhho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMyubj8)}(h h]h }(hj@hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj@hhhj@hMyubjI)}(hamdgpu_irq_add_idh]jO)}(hamdgpu_irq_add_idh]hamdgpu_irq_add_id}(hj@hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj@ubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhj@hhhj@hMyubjj)}(hh(struct amdgpu_device *adev, unsigned int client_id, unsigned int src_id, struct amdgpu_irq_src *source)h](jp)}(hstruct amdgpu_device *adevh](jv)}(hjyh]hstruct}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj@ubj8)}(h h]h }(hj@hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj@ubh)}(hhh]jO)}(h amdgpu_deviceh]h amdgpu_device}(hj@hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj@ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj@modnameN classnameNjj)}j]j)}jj@sbc.amdgpu_irq_add_idasbuh1hhj@ubj8)}(h h]h }(hjAhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj@ubj)}(hj4h]h*}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubjO)}(hadevh]hadev}(hjAhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj@ubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj@ubjp)}(hunsigned int client_idh](j&)}(hunsignedh]hunsigned}(hj8AhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hj4Aubj8)}(h h]h }(hjFAhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj4Aubj&)}(hinth]hint}(hjTAhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hj4Aubj8)}(h h]h }(hjbAhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj4AubjO)}(h client_idh]h client_id}(hjpAhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj4Aubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj@ubjp)}(hunsigned int src_idh](j&)}(hunsignedh]hunsigned}(hjAhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjAubj8)}(h h]h }(hjAhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjAubj&)}(hinth]hint}(hjAhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjAubj8)}(h h]h }(hjAhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjAubjO)}(hsrc_idh]hsrc_id}(hjAhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjAubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj@ubjp)}(hstruct amdgpu_irq_src *sourceh](jv)}(hjyh]hstruct}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjAubj8)}(h h]h }(hjAhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjAubh)}(hhh]jO)}(hamdgpu_irq_srch]hamdgpu_irq_src}(hjAhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjAubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjAmodnameN classnameNjj)}j]jAc.amdgpu_irq_add_idasbuh1hhjAubj8)}(h h]h }(hjBhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjAubj)}(hj4h]h*}(hj$BhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubjO)}(hsourceh]hsource}(hj1BhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjAubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj@ubeh}(h]h ]h"]h$]h&]jgjhuh1jihj@hhhj@hMyubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhj@hhhj@hMyubah}(h]j|@ah ](jjeh"]h$]h&]j j )j huh1jhj@hMyhj~@hhubj )}(hhh]h)}(hregister IRQ sourceh]hregister IRQ source}(hj[BhhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMyhjXBhhubah}(h]h ]h"]h$]h&]uh1j hj~@hhhj@hMyubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjsBjSjsBjTjUjVuh1jhhhj3hNhNubjX)}(hX1**Parameters** ``struct amdgpu_device *adev`` amdgpu device pointer ``unsigned int client_id`` client id ``unsigned int src_id`` source id ``struct amdgpu_irq_src *source`` IRQ source pointer **Description** Registers IRQ source on a client. **Return** 0 on success or error code otherwiseh](h)}(h**Parameters**h]jJ)}(hj}Bh]h Parameters}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj{Bubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chM}hjwBubh)}(hhh](h)}(h5``struct amdgpu_device *adev`` amdgpu device pointer h](j)}(h``struct amdgpu_device *adev``h]j)}(hjBh]hstruct amdgpu_device *adev}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chM{hjBubj)}(hhh]h)}(hamdgpu device pointerh]hamdgpu device pointer}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBhM{hjBubah}(h]h ]h"]h$]h&]uh1jhjBubeh}(h]h ]h"]h$]h&]uh1hhjBhM{hjBubh)}(h%``unsigned int client_id`` client id h](j)}(h``unsigned int client_id``h]j)}(hjBh]hunsigned int client_id}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chM|hjBubj)}(hhh]h)}(h client idh]h client id}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBhM|hjBubah}(h]h ]h"]h$]h&]uh1jhjBubeh}(h]h ]h"]h$]h&]uh1hhjBhM|hjBubh)}(h"``unsigned int src_id`` source id h](j)}(h``unsigned int src_id``h]j)}(hjCh]hunsigned int src_id}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jhj Cubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chM}hjCubj)}(hhh]h)}(h source idh]h source id}(hj'ChhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#ChM}hj$Cubah}(h]h ]h"]h$]h&]uh1jhjCubeh}(h]h ]h"]h$]h&]uh1hhj#ChM}hjBubh)}(h5``struct amdgpu_irq_src *source`` IRQ source pointer h](j)}(h!``struct amdgpu_irq_src *source``h]j)}(hjGCh]hstruct amdgpu_irq_src *source}(hjIChhhNhNubah}(h]h ]h"]h$]h&]uh1jhjECubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chM~hjACubj)}(hhh]h)}(hIRQ source pointerh]hIRQ source pointer}(hj`ChhhNhNubah}(h]h ]h"]h$]h&]uh1hhj\ChM~hj]Cubah}(h]h ]h"]h$]h&]uh1jhjACubeh}(h]h ]h"]h$]h&]uh1hhj\ChM~hjBubeh}(h]h ]h"]h$]h&]uh1hhjwBubh)}(h**Description**h]jJ)}(hjCh]h Description}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjCubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhjwBubh)}(h!Registers IRQ source on a client.h]h!Registers IRQ source on a client.}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhjwBubh)}(h **Return**h]jJ)}(hjCh]hReturn}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjCubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhjwBubh)}(h$0 on success or error code otherwiseh]h$0 on success or error code otherwise}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhjwBubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhj3hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j amdgpu_irq_dispatch (C function)c.amdgpu_irq_dispatchhNtauh1jhj3hhhNhNubj)}(hhh](j)}(hPvoid amdgpu_irq_dispatch (struct amdgpu_device *adev, struct amdgpu_ih_ring *ih)h]j )}(hOvoid amdgpu_irq_dispatch(struct amdgpu_device *adev, struct amdgpu_ih_ring *ih)h](j&)}(hvoidh]hvoid}(hjChhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjChhho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMubj8)}(h h]h }(hjChhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjChhhjChMubjI)}(hamdgpu_irq_dispatchh]jO)}(hamdgpu_irq_dispatchh]hamdgpu_irq_dispatch}(hjDhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj Dubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjChhhjChMubjj)}(h7(struct amdgpu_device *adev, struct amdgpu_ih_ring *ih)h](jp)}(hstruct amdgpu_device *adevh](jv)}(hjyh]hstruct}(hj+DhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj'Dubj8)}(h h]h }(hj8DhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj'Dubh)}(hhh]jO)}(h amdgpu_deviceh]h amdgpu_device}(hjIDhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjFDubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjKDmodnameN classnameNjj)}j]j)}jjDsbc.amdgpu_irq_dispatchasbuh1hhj'Dubj8)}(h h]h }(hjiDhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj'Dubj)}(hj4h]h*}(hjwDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'DubjO)}(hadevh]hadev}(hjDhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj'Dubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj#Dubjp)}(hstruct amdgpu_ih_ring *ihh](jv)}(hjyh]hstruct}(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjDubj8)}(h h]h }(hjDhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjDubh)}(hhh]jO)}(hamdgpu_ih_ringh]hamdgpu_ih_ring}(hjDhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjDubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjDmodnameN classnameNjj)}j]jeDc.amdgpu_irq_dispatchasbuh1hhjDubj8)}(h h]h }(hjDhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjDubj)}(hj4h]h*}(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDubjO)}(hihh]hih}(hjDhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjDubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj#Dubeh}(h]h ]h"]h$]h&]jgjhuh1jihjChhhjChMubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjChhhjChMubah}(h]jCah ](jjeh"]h$]h&]j j )j huh1jhjChMhjChhubj )}(hhh]h)}(hdispatch IRQ to IP blocksh]hdispatch IRQ to IP blocks}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhjEhhubah}(h]h ]h"]h$]h&]uh1j hjChhhjChMubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRj6EjSj6EjTjUjVuh1jhhhj3hNhNubjX)}(h**Parameters** ``struct amdgpu_device *adev`` amdgpu device pointer ``struct amdgpu_ih_ring *ih`` interrupt ring instance **Description** Dispatches IRQ to IP blocks.h](h)}(h**Parameters**h]jJ)}(hj@Eh]h Parameters}(hjBEhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj>Eubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhj:Eubh)}(hhh](h)}(h5``struct amdgpu_device *adev`` amdgpu device pointer h](j)}(h``struct amdgpu_device *adev``h]j)}(hj_Eh]hstruct amdgpu_device *adev}(hjaEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]Eubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhjYEubj)}(hhh]h)}(hamdgpu device pointerh]hamdgpu device pointer}(hjxEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjtEhMhjuEubah}(h]h ]h"]h$]h&]uh1jhjYEubeh}(h]h ]h"]h$]h&]uh1hhjtEhMhjVEubh)}(h6``struct amdgpu_ih_ring *ih`` interrupt ring instance h](j)}(h``struct amdgpu_ih_ring *ih``h]j)}(hjEh]hstruct amdgpu_ih_ring *ih}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhjEubj)}(hhh]h)}(hinterrupt ring instanceh]hinterrupt ring instance}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjEhMhjEubah}(h]h ]h"]h$]h&]uh1jhjEubeh}(h]h ]h"]h$]h&]uh1hhjEhMhjVEubeh}(h]h ]h"]h$]h&]uh1hhj:Eubh)}(h**Description**h]jJ)}(hjEh]h Description}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjEubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhj:Eubh)}(hDispatches IRQ to IP blocks.h]hDispatches IRQ to IP blocks.}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhj:Eubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhj3hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j amdgpu_irq_delegate (C function)c.amdgpu_irq_delegatehNtauh1jhj3hhhNhNubj)}(hhh](j)}(hivoid amdgpu_irq_delegate (struct amdgpu_device *adev, struct amdgpu_iv_entry *entry, unsigned int num_dw)h]j )}(hhvoid amdgpu_irq_delegate(struct amdgpu_device *adev, struct amdgpu_iv_entry *entry, unsigned int num_dw)h](j&)}(hvoidh]hvoid}(hjFhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjFhhho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMubj8)}(h h]h }(hj'FhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjFhhhj&FhMubjI)}(hamdgpu_irq_delegateh]jO)}(hamdgpu_irq_delegateh]hamdgpu_irq_delegate}(hj9FhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj5Fubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjFhhhj&FhMubjj)}(hP(struct amdgpu_device *adev, struct amdgpu_iv_entry *entry, unsigned int num_dw)h](jp)}(hstruct amdgpu_device *adevh](jv)}(hjyh]hstruct}(hjUFhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjQFubj8)}(h h]h }(hjbFhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjQFubh)}(hhh]jO)}(h amdgpu_deviceh]h amdgpu_device}(hjsFhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjpFubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjuFmodnameN classnameNjj)}j]j)}jj;Fsbc.amdgpu_irq_delegateasbuh1hhjQFubj8)}(h h]h }(hjFhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjQFubj)}(hj4h]h*}(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQFubjO)}(hadevh]hadev}(hjFhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjQFubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjMFubjp)}(hstruct amdgpu_iv_entry *entryh](jv)}(hjyh]hstruct}(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjFubj8)}(h h]h }(hjFhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjFubh)}(hhh]jO)}(hamdgpu_iv_entryh]hamdgpu_iv_entry}(hjFhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjFubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjFmodnameN classnameNjj)}j]jFc.amdgpu_irq_delegateasbuh1hhjFubj8)}(h h]h }(hjGhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjFubj)}(hj4h]h*}(hjGhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjFubjO)}(hentryh]hentry}(hjGhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjFubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjMFubjp)}(hunsigned int num_dwh](j&)}(hunsignedh]hunsigned}(hj7GhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hj3Gubj8)}(h h]h }(hjEGhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj3Gubj&)}(hinth]hint}(hjSGhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hj3Gubj8)}(h h]h }(hjaGhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj3GubjO)}(hnum_dwh]hnum_dw}(hjoGhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj3Gubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjMFubeh}(h]h ]h"]h$]h&]jgjhuh1jihjFhhhj&FhMubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjFhhhj&FhMubah}(h]j Fah ](jjeh"]h$]h&]j j )j huh1jhj&FhMhj Fhhubj )}(hhh]h)}(hdelegate IV to soft IH ringh]hdelegate IV to soft IH ring}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhjGhhubah}(h]h ]h"]h$]h&]uh1j hj Fhhhj&FhMubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjGjSjGjTjUjVuh1jhhhj3hNhNubjX)}(hX;**Parameters** ``struct amdgpu_device *adev`` amdgpu device pointer ``struct amdgpu_iv_entry *entry`` IV entry ``unsigned int num_dw`` size of IV **Description** Delegate the IV to the soft IH ring and schedule processing of it. Used if the hardware delegation to IH1 or IH2 doesn't work for some reason.h](h)}(h**Parameters**h]jJ)}(hjGh]h Parameters}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjGubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhjGubh)}(hhh](h)}(h5``struct amdgpu_device *adev`` amdgpu device pointer h](j)}(h``struct amdgpu_device *adev``h]j)}(hjGh]hstruct amdgpu_device *adev}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhjGubj)}(hhh]h)}(hamdgpu device pointerh]hamdgpu device pointer}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjGhMhjGubah}(h]h ]h"]h$]h&]uh1jhjGubeh}(h]h ]h"]h$]h&]uh1hhjGhMhjGubh)}(h+``struct amdgpu_iv_entry *entry`` IV entry h](j)}(h!``struct amdgpu_iv_entry *entry``h]j)}(hjHh]hstruct amdgpu_iv_entry *entry}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhj Hubj)}(hhh]h)}(hIV entryh]hIV entry}(hj,HhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(HhMhj)Hubah}(h]h ]h"]h$]h&]uh1jhj Hubeh}(h]h ]h"]h$]h&]uh1hhj(HhMhjGubh)}(h#``unsigned int num_dw`` size of IV h](j)}(h``unsigned int num_dw``h]j)}(hjLHh]hunsigned int num_dw}(hjNHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJHubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhjFHubj)}(hhh]h)}(h size of IVh]h size of IV}(hjeHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjaHhMhjbHubah}(h]h ]h"]h$]h&]uh1jhjFHubeh}(h]h ]h"]h$]h&]uh1hhjaHhMhjGubeh}(h]h ]h"]h$]h&]uh1hhjGubh)}(h**Description**h]jJ)}(hjHh]h Description}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjHubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhjGubh)}(hDelegate the IV to the soft IH ring and schedule processing of it. Used if the hardware delegation to IH1 or IH2 doesn't work for some reason.h]hDelegate the IV to the soft IH ring and schedule processing of it. Used if the hardware delegation to IH1 or IH2 doesn’t work for some reason.}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhjGubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhj3hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jamdgpu_irq_update (C function)c.amdgpu_irq_updatehNtauh1jhj3hhhNhNubj)}(hhh](j)}(haint amdgpu_irq_update (struct amdgpu_device *adev, struct amdgpu_irq_src *src, unsigned int type)h]j )}(h`int amdgpu_irq_update(struct amdgpu_device *adev, struct amdgpu_irq_src *src, unsigned int type)h](j&)}(hinth]hint}(hjHhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjHhhho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chM ubj8)}(h h]h }(hjHhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjHhhhjHhM ubjI)}(hamdgpu_irq_updateh]jO)}(hamdgpu_irq_updateh]hamdgpu_irq_update}(hjHhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjHubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjHhhhjHhM ubjj)}(hK(struct amdgpu_device *adev, struct amdgpu_irq_src *src, unsigned int type)h](jp)}(hstruct amdgpu_device *adevh](jv)}(hjyh]hstruct}(hj IhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjIubj8)}(h h]h }(hjIhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjIubh)}(hhh]jO)}(h amdgpu_deviceh]h amdgpu_device}(hj'IhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj$Iubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj)ImodnameN classnameNjj)}j]j)}jjHsbc.amdgpu_irq_updateasbuh1hhjIubj8)}(h h]h }(hjGIhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjIubj)}(hj4h]h*}(hjUIhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjIubjO)}(hadevh]hadev}(hjbIhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjIubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjIubjp)}(hstruct amdgpu_irq_src *srch](jv)}(hjyh]hstruct}(hj{IhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjwIubj8)}(h h]h }(hjIhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjwIubh)}(hhh]jO)}(hamdgpu_irq_srch]hamdgpu_irq_src}(hjIhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjIubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjImodnameN classnameNjj)}j]jCIc.amdgpu_irq_updateasbuh1hhjwIubj8)}(h h]h }(hjIhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjwIubj)}(hj4h]h*}(hjIhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwIubjO)}(hsrch]hsrc}(hjIhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjwIubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjIubjp)}(hunsigned int typeh](j&)}(hunsignedh]hunsigned}(hjIhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjIubj8)}(h h]h }(hjIhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjIubj&)}(hinth]hint}(hjJhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjIubj8)}(h h]h }(hjJhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjIubjO)}(htypeh]htype}(hj#JhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjIubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johjIubeh}(h]h ]h"]h$]h&]jgjhuh1jihjHhhhjHhM ubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjHhhhjHhM ubah}(h]jHah ](jjeh"]h$]h&]j j )j huh1jhjHhM hjHhhubj )}(hhh]h)}(hupdate hardware interrupt stateh]hupdate hardware interrupt state}(hjMJhhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chM hjJJhhubah}(h]h ]h"]h$]h&]uh1j hjHhhhjHhM ubeh}(h]h ](jfunctioneh"]h$]h&]jQjjRjeJjSjeJjTjUjVuh1jhhhj3hNhNubjX)}(h**Parameters** ``struct amdgpu_device *adev`` amdgpu device pointer ``struct amdgpu_irq_src *src`` interrupt source pointer ``unsigned int type`` type of interrupt **Description** Updates interrupt state for the specific source (all ASICs).h](h)}(h**Parameters**h]jJ)}(hjoJh]h Parameters}(hjqJhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjmJubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chM hjiJubh)}(hhh](h)}(h5``struct amdgpu_device *adev`` amdgpu device pointer h](j)}(h``struct amdgpu_device *adev``h]j)}(hjJh]hstruct amdgpu_device *adev}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chM hjJubj)}(hhh]h)}(hamdgpu device pointerh]hamdgpu device pointer}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJhM hjJubah}(h]h ]h"]h$]h&]uh1jhjJubeh}(h]h ]h"]h$]h&]uh1hhjJhM hjJubh)}(h8``struct amdgpu_irq_src *src`` interrupt source pointer h](j)}(h``struct amdgpu_irq_src *src``h]j)}(hjJh]hstruct amdgpu_irq_src *src}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chM hjJubj)}(hhh]h)}(hinterrupt source pointerh]hinterrupt source pointer}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJhM hjJubah}(h]h ]h"]h$]h&]uh1jhjJubeh}(h]h ]h"]h$]h&]uh1hhjJhM hjJubh)}(h(``unsigned int type`` type of interrupt h](j)}(h``unsigned int type``h]j)}(hjKh]hunsigned int type}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chM hjJubj)}(hhh]h)}(htype of interrupth]htype of interrupt}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjKhM hjKubah}(h]h ]h"]h$]h&]uh1jhjJubeh}(h]h ]h"]h$]h&]uh1hhjKhM hjJubeh}(h]h ]h"]h$]h&]uh1hhjiJubh)}(h**Description**h]jJ)}(hj;Kh]h Description}(hj=KhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhj9Kubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:203: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhjiJubh)}(hMhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj:Mubj8)}(h h]h }(hjKMhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj:Mubh)}(hhh]jO)}(h amdgpu_deviceh]h amdgpu_device}(hj\MhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjYMubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj^MmodnameN classnameNjj)}j]j)}jj$Msbc.amdgpu_irq_getasbuh1hhj:Mubj8)}(h h]h }(hj|MhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj:Mubj)}(hj4h]h*}(hjMhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:MubjO)}(hadevh]hadev}(hjMhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj:Mubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj6Mubjp)}(hstruct amdgpu_irq_src *srch](jv)}(hjyh]hstruct}(hjMhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjMubj8)}(h h]h }(hjMhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjMubh)}(hhh]jO)}(hamdgpu_irq_srch]hamdgpu_irq_src}(hjMhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjMubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjMmodnameN classnameNjj)}j]jxMc.amdgpu_irq_getasbuh1hhjMubj8)}(h h]h }(hjMhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjMubj)}(hj4h]h*}(hjMhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjMubjO)}(hsrch]hsrc}(hjNhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjMubeh}(h]h ]h"]h$]h&]noemphjgjhuh1johj6Mubjp)}(hunsigned int typeh](j&)}(hunsignedh]hunsigned}(hj NhhhNhNubah}(h]h ]j2ah"]h$]h&]uh1j%hjNubj8)}(h h]h }(hj.NhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjNubj&)}(hinth]hint}(hj_v (E.g.: gfx_v6_0).h]hoIP block implementations are named using the following convention: _v (E.g.: gfx_v6_0).}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:209: ./drivers/gpu/drm/amd/include/amd_shared.hhKBhj]hhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jamd_ip_block_type (C enum)c.amd_ip_block_typehNtauh1jhj]hhhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhNubj)}(hhh](j)}(hamd_ip_block_typeh]j )}(henum amd_ip_block_typeh](jv)}(hjQh]henum}(hj^hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj^hhhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhKubj8)}(h h]h }(hj!^hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj^hhhj ^hKubjI)}(hamd_ip_block_typeh]jO)}(hj ^h]hamd_ip_block_type}(hj3^hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj/^ubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhj^hhhj ^hKubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhj ^hhhj ^hKubah}(h]j^ah ](jjeh"]h$]h&]j j )j huh1jhj ^hKhj^hhubj )}(hhh]h)}(h,Used to classify IP blocks by functionality.h]h,Used to classify IP blocks by functionality.}(hjU^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhKIhjR^hhubah}(h]h ]h"]h$]h&]uh1j hj^hhhj ^hKubeh}(h]h ](jenumeh"]h$]h&]jQjjRjm^jSjm^jTjUjVuh1jhhhj]hj^hNubjX)}(hX**Constants** ``AMD_IP_BLOCK_TYPE_COMMON`` GPU Family ``AMD_IP_BLOCK_TYPE_GMC`` Graphics Memory Controller ``AMD_IP_BLOCK_TYPE_IH`` Interrupt Handler ``AMD_IP_BLOCK_TYPE_SMC`` System Management Controller ``AMD_IP_BLOCK_TYPE_PSP`` Platform Security Processor ``AMD_IP_BLOCK_TYPE_DCE`` Display and Compositing Engine ``AMD_IP_BLOCK_TYPE_GFX`` Graphics and Compute Engine ``AMD_IP_BLOCK_TYPE_SDMA`` System DMA Engine ``AMD_IP_BLOCK_TYPE_UVD`` Unified Video Decoder ``AMD_IP_BLOCK_TYPE_VCE`` Video Compression Engine ``AMD_IP_BLOCK_TYPE_ACP`` Audio Co-Processor ``AMD_IP_BLOCK_TYPE_VCN`` Video Core/Codec Next ``AMD_IP_BLOCK_TYPE_MES`` Micro-Engine Scheduler ``AMD_IP_BLOCK_TYPE_JPEG`` JPEG Engine ``AMD_IP_BLOCK_TYPE_VPE`` Video Processing Engine ``AMD_IP_BLOCK_TYPE_UMSCH_MM`` User Mode Scheduler for Multimedia ``AMD_IP_BLOCK_TYPE_ISP`` Image Signal Processor ``AMD_IP_BLOCK_TYPE_NUM`` Total number of IP block typesh](h)}(h **Constants**h]jJ)}(hjw^h]h Constants}(hjy^hhhNhNubah}(h]h ]h"]h$]h&]uh1jIhju^ubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhKMhjq^ubh)}(hhh](h)}(h(``AMD_IP_BLOCK_TYPE_COMMON`` GPU Family h](j)}(h``AMD_IP_BLOCK_TYPE_COMMON``h]j)}(hj^h]hAMD_IP_BLOCK_TYPE_COMMON}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^ubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhKPhj^ubj)}(hhh]h)}(h GPU Familyh]h GPU Family}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj^hKPhj^ubah}(h]h ]h"]h$]h&]uh1jhj^ubeh}(h]h ]h"]h$]h&]uh1hhj^hKPhj^ubh)}(h5``AMD_IP_BLOCK_TYPE_GMC`` Graphics Memory Controller h](j)}(h``AMD_IP_BLOCK_TYPE_GMC``h]j)}(hj^h]hAMD_IP_BLOCK_TYPE_GMC}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^ubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhKShj^ubj)}(hhh]h)}(hGraphics Memory Controllerh]hGraphics Memory Controller}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj^hKShj^ubah}(h]h ]h"]h$]h&]uh1jhj^ubeh}(h]h ]h"]h$]h&]uh1hhj^hKShj^ubh)}(h+``AMD_IP_BLOCK_TYPE_IH`` Interrupt Handler h](j)}(h``AMD_IP_BLOCK_TYPE_IH``h]j)}(hj_h]hAMD_IP_BLOCK_TYPE_IH}(hj _hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_ubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhKVhj_ubj)}(hhh]h)}(hInterrupt Handlerh]hInterrupt Handler}(hj!_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj_hKVhj_ubah}(h]h ]h"]h$]h&]uh1jhj_ubeh}(h]h ]h"]h$]h&]uh1hhj_hKVhj^ubh)}(h7``AMD_IP_BLOCK_TYPE_SMC`` System Management Controller h](j)}(h``AMD_IP_BLOCK_TYPE_SMC``h]j)}(hjA_h]hAMD_IP_BLOCK_TYPE_SMC}(hjC_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?_ubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhKYhj;_ubj)}(hhh]h)}(hSystem Management Controllerh]hSystem Management Controller}(hjZ_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjV_hKYhjW_ubah}(h]h ]h"]h$]h&]uh1jhj;_ubeh}(h]h ]h"]h$]h&]uh1hhjV_hKYhj^ubh)}(h6``AMD_IP_BLOCK_TYPE_PSP`` Platform Security Processor h](j)}(h``AMD_IP_BLOCK_TYPE_PSP``h]j)}(hjz_h]hAMD_IP_BLOCK_TYPE_PSP}(hj|_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjx_ubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhK\hjt_ubj)}(hhh]h)}(hPlatform Security Processorh]hPlatform Security Processor}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj_hK\hj_ubah}(h]h ]h"]h$]h&]uh1jhjt_ubeh}(h]h ]h"]h$]h&]uh1hhj_hK\hj^ubh)}(h9``AMD_IP_BLOCK_TYPE_DCE`` Display and Compositing Engine h](j)}(h``AMD_IP_BLOCK_TYPE_DCE``h]j)}(hj_h]hAMD_IP_BLOCK_TYPE_DCE}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_ubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhK_hj_ubj)}(hhh]h)}(hDisplay and Compositing Engineh]hDisplay and Compositing Engine}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj_hK_hj_ubah}(h]h ]h"]h$]h&]uh1jhj_ubeh}(h]h ]h"]h$]h&]uh1hhj_hK_hj^ubh)}(h6``AMD_IP_BLOCK_TYPE_GFX`` Graphics and Compute Engine h](j)}(h``AMD_IP_BLOCK_TYPE_GFX``h]j)}(hj_h]hAMD_IP_BLOCK_TYPE_GFX}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_ubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhKbhj_ubj)}(hhh]h)}(hGraphics and Compute Engineh]hGraphics and Compute Engine}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj`hKbhj`ubah}(h]h ]h"]h$]h&]uh1jhj_ubeh}(h]h ]h"]h$]h&]uh1hhj`hKbhj^ubh)}(h-``AMD_IP_BLOCK_TYPE_SDMA`` System DMA Engine h](j)}(h``AMD_IP_BLOCK_TYPE_SDMA``h]j)}(hj%`h]hAMD_IP_BLOCK_TYPE_SDMA}(hj'`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj#`ubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhKehj`ubj)}(hhh]h)}(hSystem DMA Engineh]hSystem DMA Engine}(hj>`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:`hKehj;`ubah}(h]h ]h"]h$]h&]uh1jhj`ubeh}(h]h ]h"]h$]h&]uh1hhj:`hKehj^ubh)}(h0``AMD_IP_BLOCK_TYPE_UVD`` Unified Video Decoder h](j)}(h``AMD_IP_BLOCK_TYPE_UVD``h]j)}(hj^`h]hAMD_IP_BLOCK_TYPE_UVD}(hj``hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj\`ubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhKhhjX`ubj)}(hhh]h)}(hUnified Video Decoderh]hUnified Video Decoder}(hjw`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjs`hKhhjt`ubah}(h]h ]h"]h$]h&]uh1jhjX`ubeh}(h]h ]h"]h$]h&]uh1hhjs`hKhhj^ubh)}(h3``AMD_IP_BLOCK_TYPE_VCE`` Video Compression Engine h](j)}(h``AMD_IP_BLOCK_TYPE_VCE``h]j)}(hj`h]hAMD_IP_BLOCK_TYPE_VCE}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`ubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhKkhj`ubj)}(hhh]h)}(hVideo Compression Engineh]hVideo Compression Engine}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj`hKkhj`ubah}(h]h ]h"]h$]h&]uh1jhj`ubeh}(h]h ]h"]h$]h&]uh1hhj`hKkhj^ubh)}(h-``AMD_IP_BLOCK_TYPE_ACP`` Audio Co-Processor h](j)}(h``AMD_IP_BLOCK_TYPE_ACP``h]j)}(hj`h]hAMD_IP_BLOCK_TYPE_ACP}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`ubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhKnhj`ubj)}(hhh]h)}(hAudio Co-Processorh]hAudio Co-Processor}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj`hKnhj`ubah}(h]h ]h"]h$]h&]uh1jhj`ubeh}(h]h ]h"]h$]h&]uh1hhj`hKnhj^ubh)}(h0``AMD_IP_BLOCK_TYPE_VCN`` Video Core/Codec Next h](j)}(h``AMD_IP_BLOCK_TYPE_VCN``h]j)}(hj ah]hAMD_IP_BLOCK_TYPE_VCN}(hj ahhhNhNubah}(h]h ]h"]h$]h&]uh1jhjaubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhKqhjaubj)}(hhh]h)}(hVideo Core/Codec Nexth]hVideo Core/Codec Next}(hj"ahhhNhNubah}(h]h ]h"]h$]h&]uh1hhjahKqhjaubah}(h]h ]h"]h$]h&]uh1jhjaubeh}(h]h ]h"]h$]h&]uh1hhjahKqhj^ubh)}(h1``AMD_IP_BLOCK_TYPE_MES`` Micro-Engine Scheduler h](j)}(h``AMD_IP_BLOCK_TYPE_MES``h]j)}(hjBah]hAMD_IP_BLOCK_TYPE_MES}(hjDahhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@aubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhKthjchhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:cubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhKhj6cubj)}(hhh]h)}(h(0x1) disabled by defaulth]h(0x1) disabled by default}(hjUchhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQchKhjRcubah}(h]h ]h"]h$]h&]uh1jhj6cubeh}(h]h ]h"]h$]h&]uh1hhjQchKhj3cubh)}(h>``DC_MULTI_MON_PP_MCLK_SWITCH_MASK`` (0x2) enabled by default h](j)}(h$``DC_MULTI_MON_PP_MCLK_SWITCH_MASK``h]j)}(hjuch]h DC_MULTI_MON_PP_MCLK_SWITCH_MASK}(hjwchhhNhNubah}(h]h ]h"]h$]h&]uh1jhjscubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhKhjocubj)}(hhh]h)}(h(0x2) enabled by defaulth]h(0x2) enabled by default}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhjchKhjcubah}(h]h ]h"]h$]h&]uh1jhjocubeh}(h]h ]h"]h$]h&]uh1hhjchKhj3cubh)}(h=``DC_DISABLE_FRACTIONAL_PWM_MASK`` (0x4) disabled by default h](j)}(h"``DC_DISABLE_FRACTIONAL_PWM_MASK``h]j)}(hjch]hDC_DISABLE_FRACTIONAL_PWM_MASK}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jhjcubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjcubj)}(hhh]h)}(h(0x4) disabled by defaulth]h(0x4) disabled by default}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhjchMhjcubah}(h]h ]h"]h$]h&]uh1jhjcubeh}(h]h ]h"]h$]h&]uh1hhjchMhj3cubh)}(h8``DC_PSR_MASK`` (0x8) disabled by default for DCN < 3.1 h](j)}(h``DC_PSR_MASK``h]j)}(hjch]h DC_PSR_MASK}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jhjcubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjcubj)}(hhh]h)}(h'(0x8) disabled by default for DCN < 3.1h]h'(0x8) disabled by default for DCN < 3.1}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjchMhjcubah}(h]h ]h"]h$]h&]uh1jhjcubeh}(h]h ]h"]h$]h&]uh1hhjchMhj3cubh)}(h:``DC_EDP_NO_POWER_SEQUENCING`` (0x10) disabled by default h](j)}(h``DC_EDP_NO_POWER_SEQUENCING``h]j)}(hj dh]hDC_EDP_NO_POWER_SEQUENCING}(hj"dhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjdubj)}(hhh]h)}(h(0x10) disabled by defaulth]h(0x10) disabled by default}(hj9dhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5dhMhj6dubah}(h]h ]h"]h$]h&]uh1jhjdubeh}(h]h ]h"]h$]h&]uh1hhj5dhMhj3cubh)}(h7``DC_DISABLE_LTTPR_DP1_4A`` (0x20) disabled by default h](j)}(h``DC_DISABLE_LTTPR_DP1_4A``h]j)}(hjYdh]hDC_DISABLE_LTTPR_DP1_4A}(hj[dhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWdubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhM hjSdubj)}(hhh]h)}(h(0x20) disabled by defaulth]h(0x20) disabled by default}(hjrdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjndhM hjodubah}(h]h ]h"]h$]h&]uh1jhjSdubeh}(h]h ]h"]h$]h&]uh1hhjndhM hj3cubh)}(h6``DC_DISABLE_LTTPR_DP2_0`` (0x40) disabled by default h](j)}(h``DC_DISABLE_LTTPR_DP2_0``h]j)}(hjdh]hDC_DISABLE_LTTPR_DP2_0}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhM hjdubj)}(hhh]h)}(h(0x40) disabled by defaulth]h(0x40) disabled by default}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdhM hjdubah}(h]h ]h"]h$]h&]uh1jhjdubeh}(h]h ]h"]h$]h&]uh1hhjdhM hj3cubh)}(h4``DC_PSR_ALLOW_SMU_OPT`` (0x80) disabled by default h](j)}(h``DC_PSR_ALLOW_SMU_OPT``h]j)}(hjdh]hDC_PSR_ALLOW_SMU_OPT}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjdubj)}(hhh]h)}(h(0x80) disabled by defaulth]h(0x80) disabled by default}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdhMhjdubah}(h]h ]h"]h$]h&]uh1jhjdubeh}(h]h ]h"]h$]h&]uh1hhjdhMhj3cubh)}(h<``DC_PSR_ALLOW_MULTI_DISP_OPT`` (0x100) disabled by default h](j)}(h``DC_PSR_ALLOW_MULTI_DISP_OPT``h]j)}(hjeh]hDC_PSR_ALLOW_MULTI_DISP_OPT}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jhjeubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjdubj)}(hhh]h)}(h(0x100) disabled by defaulth]h(0x100) disabled by default}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhjehMhjeubah}(h]h ]h"]h$]h&]uh1jhjdubeh}(h]h ]h"]h$]h&]uh1hhjehMhj3cubh)}(h>``DC_REPLAY_MASK`` (0x200) disabled by default for DCN < 3.1.4h](j)}(h``DC_REPLAY_MASK``h]j)}(hj=eh]hDC_REPLAY_MASK}(hj?ehhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;eubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMhj7eubj)}(hhh]h)}(h+(0x200) disabled by default for DCN < 3.1.4h]h+(0x200) disabled by default for DCN < 3.1.4}(hjVehhhNhNubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjSeubah}(h]h ]h"]h$]h&]uh1jhj7eubeh}(h]h ]h"]h$]h&]uh1hhjRehMhj3cubeh}(h]h ]h"]h$]h&]uh1hhjcubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhj]hhhj^hNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jDC_DEBUG_MASK (C enum)c.DC_DEBUG_MASKhNtauh1jhj]hhhj^hNubj)}(hhh](j)}(h DC_DEBUG_MASKh]j )}(henum DC_DEBUG_MASKh](jv)}(hjQh]henum}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjehhhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMubj8)}(h h]h }(hjehhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjehhhjehMubjI)}(h DC_DEBUG_MASKh]jO)}(hjeh]h DC_DEBUG_MASK}(hjehhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjeubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhjehhhjehMubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhjehhhjehMubah}(h]jeah ](jjeh"]h$]h&]j j )j huh1jhjehMhjehhubj )}(hhh]h)}(h6Bits that are useful for debugging the Display Core IPh]h6Bits that are useful for debugging the Display Core IP}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhM"hjehhubah}(h]h ]h"]h$]h&]uh1j hjehhhjehMubeh}(h]h ](jenumeh"]h$]h&]jQjjRjejSjejTjUjVuh1jhhhj]hj^hNubjX)}(hX**Constants** ``DC_DISABLE_PIPE_SPLIT`` (0x1) If set, disable pipe-splitting ``DC_DISABLE_STUTTER`` (0x2) If set, disable memory stutter mode ``DC_DISABLE_DSC`` (0x4) If set, disable display stream compression ``DC_DISABLE_CLOCK_GATING`` (0x8) If set, disable clock gating optimizations ``DC_DISABLE_PSR`` (0x10) If set, disable Panel self refresh v1 and PSR-SU ``DC_FORCE_SUBVP_MCLK_SWITCH`` (0x20) If set, force mclk switch in subvp, even if mclk switch in vblank is possible ``DC_DISABLE_MPO`` (0x40) If set, disable multi-plane offloading ``DC_ENABLE_DPIA_TRACE`` (0x80) If set, enable trace logging for DPIA ``DC_ENABLE_DML2`` (0x100) If set, force usage of DML2, even if the DCN version does not default to it. ``DC_DISABLE_PSR_SU`` (0x200) If set, disable PSR SU ``DC_DISABLE_REPLAY`` (0x400) If set, disable Panel Replay ``DC_DISABLE_IPS`` (0x800) If set, disable all Idle Power States, all the time. If more than one IPS debug bit is set, the lowest bit takes precedence. For example, if DC_FORCE_IPS_ENABLE and DC_DISABLE_IPS_DYNAMIC are set, then DC_DISABLE_IPS_DYNAMIC takes precedence. ``DC_DISABLE_IPS_DYNAMIC`` (0x1000) If set, disable all IPS, all the time, *except* when driver goes into suspend. ``DC_DISABLE_IPS2_DYNAMIC`` (0x2000) If set, disable IPS2 (IPS1 allowed) if there is an enabled display. Otherwise, enable all IPS. ``DC_FORCE_IPS_ENABLE`` (0x4000) If set, force enable all IPS, all the time. ``DC_DISABLE_ACPI_EDID`` (0x8000) If set, don't attempt to fetch EDID for eDP display from ACPI _DDC method. ``DC_DISABLE_HDMI_CEC`` (0x10000) If set, disable HDMI-CEC feature in amdgpu driver. ``DC_DISABLE_SUBVP_FAMS`` (0x20000) If set, disable DCN Sub-Viewport & Firmware Assisted Memory Clock Switching (FAMS) feature in amdgpu driver. ``DC_DISABLE_CUSTOM_BRIGHTNESS_CURVE`` (0x40000) If set, disable support for custom brightness curves ``DC_HDCP_LC_FORCE_FW_ENABLE`` (0x80000) If set, use HDCP Locality Check FW path regardless of reported HW capabilities. ``DC_HDCP_LC_ENABLE_SW_FALLBACK`` (0x100000) If set, upon HDCP Locality Check FW path failure, retry using legacy SW path. ``DC_SKIP_DETECTION_LT`` (0x200000) If set, skip detection link trainingh](h)}(h **Constants**h]jJ)}(hjeh]h Constants}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjeubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhM&hjeubh)}(hhh](h)}(h?``DC_DISABLE_PIPE_SPLIT`` (0x1) If set, disable pipe-splitting h](j)}(h``DC_DISABLE_PIPE_SPLIT``h]j)}(hjfh]hDC_DISABLE_PIPE_SPLIT}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhM)hjfubj)}(hhh]h)}(h$(0x1) If set, disable pipe-splittingh]h$(0x1) If set, disable pipe-splitting}(hj3fhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/fhM)hj0fubah}(h]h ]h"]h$]h&]uh1jhjfubeh}(h]h ]h"]h$]h&]uh1hhj/fhM)hjfubh)}(hA``DC_DISABLE_STUTTER`` (0x2) If set, disable memory stutter mode h](j)}(h``DC_DISABLE_STUTTER``h]j)}(hjSfh]hDC_DISABLE_STUTTER}(hjUfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQfubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhM,hjMfubj)}(hhh]h)}(h)(0x2) If set, disable memory stutter modeh]h)(0x2) If set, disable memory stutter mode}(hjlfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhfhM,hjifubah}(h]h ]h"]h$]h&]uh1jhjMfubeh}(h]h ]h"]h$]h&]uh1hhjhfhM,hjfubh)}(hD``DC_DISABLE_DSC`` (0x4) If set, disable display stream compression h](j)}(h``DC_DISABLE_DSC``h]j)}(hjfh]hDC_DISABLE_DSC}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhM/hjfubj)}(hhh]h)}(h0(0x4) If set, disable display stream compressionh]h0(0x4) If set, disable display stream compression}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfhM/hjfubah}(h]h ]h"]h$]h&]uh1jhjfubeh}(h]h ]h"]h$]h&]uh1hhjfhM/hjfubh)}(hM``DC_DISABLE_CLOCK_GATING`` (0x8) If set, disable clock gating optimizations h](j)}(h``DC_DISABLE_CLOCK_GATING``h]j)}(hjfh]hDC_DISABLE_CLOCK_GATING}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhM2hjfubj)}(hhh]h)}(h0(0x8) If set, disable clock gating optimizationsh]h0(0x8) If set, disable clock gating optimizations}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfhM2hjfubah}(h]h ]h"]h$]h&]uh1jhjfubeh}(h]h ]h"]h$]h&]uh1hhjfhM2hjfubh)}(hK``DC_DISABLE_PSR`` (0x10) If set, disable Panel self refresh v1 and PSR-SU h](j)}(h``DC_DISABLE_PSR``h]j)}(hjfh]hDC_DISABLE_PSR}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhM5hjfubj)}(hhh]h)}(h7(0x10) If set, disable Panel self refresh v1 and PSR-SUh]h7(0x10) If set, disable Panel self refresh v1 and PSR-SU}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhjghM5hjgubah}(h]h ]h"]h$]h&]uh1jhjfubeh}(h]h ]h"]h$]h&]uh1hhjghM5hjfubh)}(ht``DC_FORCE_SUBVP_MCLK_SWITCH`` (0x20) If set, force mclk switch in subvp, even if mclk switch in vblank is possible h](j)}(h``DC_FORCE_SUBVP_MCLK_SWITCH``h]j)}(hj7gh]hDC_FORCE_SUBVP_MCLK_SWITCH}(hj9ghhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5gubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhM9hj1gubj)}(hhh]h)}(hT(0x20) If set, force mclk switch in subvp, even if mclk switch in vblank is possibleh]hT(0x20) If set, force mclk switch in subvp, even if mclk switch in vblank is possible}(hjPghhhNhNubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhM8hjMgubah}(h]h ]h"]h$]h&]uh1jhj1gubeh}(h]h ]h"]h$]h&]uh1hhjLghM9hjfubh)}(hA``DC_DISABLE_MPO`` (0x40) If set, disable multi-plane offloading h](j)}(h``DC_DISABLE_MPO``h]j)}(hjqgh]hDC_DISABLE_MPO}(hjsghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjogubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhM<hjkgubj)}(hhh]h)}(h-(0x40) If set, disable multi-plane offloadingh]h-(0x40) If set, disable multi-plane offloading}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhjghM<hjgubah}(h]h ]h"]h$]h&]uh1jhjkgubeh}(h]h ]h"]h$]h&]uh1hhjghM<hjfubh)}(hF``DC_ENABLE_DPIA_TRACE`` (0x80) If set, enable trace logging for DPIA h](j)}(h``DC_ENABLE_DPIA_TRACE``h]j)}(hjgh]hDC_ENABLE_DPIA_TRACE}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhM?hjgubj)}(hhh]h)}(h,(0x80) If set, enable trace logging for DPIAh]h,(0x80) If set, enable trace logging for DPIA}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhjghM?hjgubah}(h]h ]h"]h$]h&]uh1jhjgubeh}(h]h ]h"]h$]h&]uh1hhjghM?hjfubh)}(hh``DC_ENABLE_DML2`` (0x100) If set, force usage of DML2, even if the DCN version does not default to it. h](j)}(h``DC_ENABLE_DML2``h]j)}(hjgh]hDC_ENABLE_DML2}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMChjgubj)}(hhh]h)}(hT(0x100) If set, force usage of DML2, even if the DCN version does not default to it.h]hT(0x100) If set, force usage of DML2, even if the DCN version does not default to it.}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMBhjgubah}(h]h ]h"]h$]h&]uh1jhjgubeh}(h]h ]h"]h$]h&]uh1hhjghMChjfubh)}(h5``DC_DISABLE_PSR_SU`` (0x200) If set, disable PSR SU h](j)}(h``DC_DISABLE_PSR_SU``h]j)}(hjhh]hDC_DISABLE_PSR_SU}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMFhjhubj)}(hhh]h)}(h(0x200) If set, disable PSR SUh]h(0x200) If set, disable PSR SU}(hj6hhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj2hhMFhj3hubah}(h]h ]h"]h$]h&]uh1jhjhubeh}(h]h ]h"]h$]h&]uh1hhj2hhMFhjfubh)}(h;``DC_DISABLE_REPLAY`` (0x400) If set, disable Panel Replay h](j)}(h``DC_DISABLE_REPLAY``h]j)}(hjVhh]hDC_DISABLE_REPLAY}(hjXhhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjThubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMIhjPhubj)}(hhh]h)}(h$(0x400) If set, disable Panel Replayh]h$(0x400) If set, disable Panel Replay}(hjohhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjkhhMIhjlhubah}(h]h ]h"]h$]h&]uh1jhjPhubeh}(h]h ]h"]h$]h&]uh1hhjkhhMIhjfubh)}(hX``DC_DISABLE_IPS`` (0x800) If set, disable all Idle Power States, all the time. If more than one IPS debug bit is set, the lowest bit takes precedence. For example, if DC_FORCE_IPS_ENABLE and DC_DISABLE_IPS_DYNAMIC are set, then DC_DISABLE_IPS_DYNAMIC takes precedence. h](j)}(h``DC_DISABLE_IPS``h]j)}(hjhh]hDC_DISABLE_IPS}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMPhjhubj)}(hhh]h)}(h(0x800) If set, disable all Idle Power States, all the time. If more than one IPS debug bit is set, the lowest bit takes precedence. For example, if DC_FORCE_IPS_ENABLE and DC_DISABLE_IPS_DYNAMIC are set, then DC_DISABLE_IPS_DYNAMIC takes precedence.h]h(0x800) If set, disable all Idle Power States, all the time. If more than one IPS debug bit is set, the lowest bit takes precedence. For example, if DC_FORCE_IPS_ENABLE and DC_DISABLE_IPS_DYNAMIC are set, then DC_DISABLE_IPS_DYNAMIC takes precedence.}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMLhjhubah}(h]h ]h"]h$]h&]uh1jhjhubeh}(h]h ]h"]h$]h&]uh1hhjhhMPhjfubh)}(hs``DC_DISABLE_IPS_DYNAMIC`` (0x1000) If set, disable all IPS, all the time, *except* when driver goes into suspend. h](j)}(h``DC_DISABLE_IPS_DYNAMIC``h]j)}(hjhh]hDC_DISABLE_IPS_DYNAMIC}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMThjhubj)}(hhh]h)}(hW(0x1000) If set, disable all IPS, all the time, *except* when driver goes into suspend.h](h0(0x1000) If set, disable all IPS, all the time, }(hjhhhhNhNubj04)}(h*except*h]hexcept}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1j/4hjhubh when driver goes into suspend.}(hjhhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMShjhubah}(h]h ]h"]h$]h&]uh1jhjhubeh}(h]h ]h"]h$]h&]uh1hhjhhMThjfubh)}(h``DC_DISABLE_IPS2_DYNAMIC`` (0x2000) If set, disable IPS2 (IPS1 allowed) if there is an enabled display. Otherwise, enable all IPS. h](j)}(h``DC_DISABLE_IPS2_DYNAMIC``h]j)}(hjih]hDC_DISABLE_IPS2_DYNAMIC}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMXhjiubj)}(hhh]h)}(hg(0x2000) If set, disable IPS2 (IPS1 allowed) if there is an enabled display. Otherwise, enable all IPS.h]hg(0x2000) If set, disable IPS2 (IPS1 allowed) if there is an enabled display. Otherwise, enable all IPS.}(hj.ihhhNhNubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMWhj+iubah}(h]h ]h"]h$]h&]uh1jhjiubeh}(h]h ]h"]h$]h&]uh1hhj*ihMXhjfubh)}(hM``DC_FORCE_IPS_ENABLE`` (0x4000) If set, force enable all IPS, all the time. h](j)}(h``DC_FORCE_IPS_ENABLE``h]j)}(hjOih]hDC_FORCE_IPS_ENABLE}(hjQihhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMiubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhM[hjIiubj)}(hhh]h)}(h4(0x4000) If set, force enable all IPS, all the time.h]h4(0x4000) If set, force enable all IPS, all the time.}(hjhihhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdihM[hjeiubah}(h]h ]h"]h$]h&]uh1jhjIiubeh}(h]h ]h"]h$]h&]uh1hhjdihM[hjfubh)}(hm``DC_DISABLE_ACPI_EDID`` (0x8000) If set, don't attempt to fetch EDID for eDP display from ACPI _DDC method. h](j)}(h``DC_DISABLE_ACPI_EDID``h]j)}(hjih]hDC_DISABLE_ACPI_EDID}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhM_hjiubj)}(hhh]h)}(hS(0x8000) If set, don't attempt to fetch EDID for eDP display from ACPI _DDC method.h]hU(0x8000) If set, don’t attempt to fetch EDID for eDP display from ACPI _DDC method.}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhM^hjiubah}(h]h ]h"]h$]h&]uh1jhjiubeh}(h]h ]h"]h$]h&]uh1hhjihM_hjfubh)}(hU``DC_DISABLE_HDMI_CEC`` (0x10000) If set, disable HDMI-CEC feature in amdgpu driver. h](j)}(h``DC_DISABLE_HDMI_CEC``h]j)}(hjih]hDC_DISABLE_HDMI_CEC}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMbhjiubj)}(hhh]h)}(h<(0x10000) If set, disable HDMI-CEC feature in amdgpu driver.h]h<(0x10000) If set, disable HDMI-CEC feature in amdgpu driver.}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1hhjihMbhjiubah}(h]h ]h"]h$]h&]uh1jhjiubeh}(h]h ]h"]h$]h&]uh1hhjihMbhjfubh)}(h``DC_DISABLE_SUBVP_FAMS`` (0x20000) If set, disable DCN Sub-Viewport & Firmware Assisted Memory Clock Switching (FAMS) feature in amdgpu driver. h](j)}(h``DC_DISABLE_SUBVP_FAMS``h]j)}(hjih]hDC_DISABLE_SUBVP_FAMS}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMfhjiubj)}(hhh]h)}(hv(0x20000) If set, disable DCN Sub-Viewport & Firmware Assisted Memory Clock Switching (FAMS) feature in amdgpu driver.h]hv(0x20000) If set, disable DCN Sub-Viewport & Firmware Assisted Memory Clock Switching (FAMS) feature in amdgpu driver.}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMehjjubah}(h]h ]h"]h$]h&]uh1jhjiubeh}(h]h ]h"]h$]h&]uh1hhjjhMfhjfubh)}(hf``DC_DISABLE_CUSTOM_BRIGHTNESS_CURVE`` (0x40000) If set, disable support for custom brightness curves h](j)}(h&``DC_DISABLE_CUSTOM_BRIGHTNESS_CURVE``h]j)}(hj5jh]h"DC_DISABLE_CUSTOM_BRIGHTNESS_CURVE}(hj7jhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3jubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMjhj/jubj)}(hhh]h)}(h>(0x40000) If set, disable support for custom brightness curvesh]h>(0x40000) If set, disable support for custom brightness curves}(hjNjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMihjKjubah}(h]h ]h"]h$]h&]uh1jhj/jubeh}(h]h ]h"]h$]h&]uh1hhjJjhMjhjfubh)}(hy``DC_HDCP_LC_FORCE_FW_ENABLE`` (0x80000) If set, use HDCP Locality Check FW path regardless of reported HW capabilities. h](j)}(h``DC_HDCP_LC_FORCE_FW_ENABLE``h]j)}(hjojh]hDC_HDCP_LC_FORCE_FW_ENABLE}(hjqjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmjubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMnhjijubj)}(hhh]h)}(hY(0x80000) If set, use HDCP Locality Check FW path regardless of reported HW capabilities.h]hY(0x80000) If set, use HDCP Locality Check FW path regardless of reported HW capabilities.}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMmhjjubah}(h]h ]h"]h$]h&]uh1jhjijubeh}(h]h ]h"]h$]h&]uh1hhjjhMnhjfubh)}(h{``DC_HDCP_LC_ENABLE_SW_FALLBACK`` (0x100000) If set, upon HDCP Locality Check FW path failure, retry using legacy SW path. h](j)}(h!``DC_HDCP_LC_ENABLE_SW_FALLBACK``h]j)}(hjjh]hDC_HDCP_LC_ENABLE_SW_FALLBACK}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMrhjjubj)}(hhh]h)}(hX(0x100000) If set, upon HDCP Locality Check FW path failure, retry using legacy SW path.h]hX(0x100000) If set, upon HDCP Locality Check FW path failure, retry using legacy SW path.}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMqhjjubah}(h]h ]h"]h$]h&]uh1jhjjubeh}(h]h ]h"]h$]h&]uh1hhjjhMrhjfubh)}(hH``DC_SKIP_DETECTION_LT`` (0x200000) If set, skip detection link trainingh](j)}(h``DC_SKIP_DETECTION_LT``h]j)}(hjjh]hDC_SKIP_DETECTION_LT}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMthjjubj)}(hhh]h)}(h/(0x200000) If set, skip detection link trainingh]h/(0x200000) If set, skip detection link training}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMuhjjubah}(h]h ]h"]h$]h&]uh1jhjjubeh}(h]h ]h"]h$]h&]uh1hhjjhMthjfubeh}(h]h ]h"]h$]h&]uh1hhjeubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhj]hhhj^hNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jamd_ip_funcs (C struct)c.amd_ip_funcshNtauh1jhj]hhhj^hNubj)}(hhh](j)}(h amd_ip_funcsh]j )}(hstruct amd_ip_funcsh](jv)}(hjyh]hstruct}(hj=khhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj9khhhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMzubj8)}(h h]h }(hjKkhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj9khhhjJkhMzubjI)}(h amd_ip_funcsh]jO)}(hj7kh]h amd_ip_funcs}(hj]khhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjYkubah}(h]h ](jbjceh"]h$]h&]jgjhuh1jHhj9khhhjJkhMzubeh}(h]h ]h"]h$]h&]jgjhjuh1jjjhj5khhhjJkhMzubah}(h]j0kah ](jjeh"]h$]h&]j j )j huh1jhjJkhMzhj2khhubj )}(hhh]h)}(h+general hooks for managing amdgpu IP Blocksh]h+general hooks for managing amdgpu IP Blocks}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMhj|khhubah}(h]h ]h"]h$]h&]uh1j hj2khhhjJkhMzubeh}(h]h ](jstructeh"]h$]h&]jQjjRjkjSjkjTjUjVuh1jhhhj]hj^hNubjX)}(hX **Definition**:: struct amd_ip_funcs { char *name; int (*early_init)(struct amdgpu_ip_block *ip_block); int (*late_init)(struct amdgpu_ip_block *ip_block); int (*sw_init)(struct amdgpu_ip_block *ip_block); int (*sw_fini)(struct amdgpu_ip_block *ip_block); int (*early_fini)(struct amdgpu_ip_block *ip_block); int (*hw_init)(struct amdgpu_ip_block *ip_block); int (*hw_fini)(struct amdgpu_ip_block *ip_block); void (*late_fini)(struct amdgpu_ip_block *ip_block); int (*prepare_suspend)(struct amdgpu_ip_block *ip_block); int (*suspend)(struct amdgpu_ip_block *ip_block); int (*resume)(struct amdgpu_ip_block *ip_block); void (*complete)(struct amdgpu_ip_block *ip_block); bool (*is_idle)(struct amdgpu_ip_block *ip_block); int (*wait_for_idle)(struct amdgpu_ip_block *ip_block); bool (*check_soft_reset)(struct amdgpu_ip_block *ip_block); int (*pre_soft_reset)(struct amdgpu_ip_block *ip_block); int (*soft_reset)(struct amdgpu_ip_block *ip_block); int (*post_soft_reset)(struct amdgpu_ip_block *ip_block); int (*set_clockgating_state)(struct amdgpu_ip_block *ip_block, enum amd_clockgating_state state); int (*set_powergating_state)(struct amdgpu_ip_block *ip_block, enum amd_powergating_state state); void (*get_clockgating_state)(struct amdgpu_ip_block *ip_block, u64 *flags); void (*dump_ip_state)(struct amdgpu_ip_block *ip_block); void (*print_ip_state)(struct amdgpu_ip_block *ip_block, struct drm_printer *p); }; **Members** ``name`` Name of IP block ``early_init`` sets up early driver state (pre sw_init), does not configure hw - Optional ``late_init`` sets up late driver/hw state (post hw_init) - Optional ``sw_init`` sets up driver state, does not configure hw ``sw_fini`` tears down driver state, does not configure hw ``early_fini`` tears down stuff before dev detached from driver ``hw_init`` sets up the hw state ``hw_fini`` tears down the hw state ``late_fini`` final cleanup ``prepare_suspend`` handle IP specific changes to prepare for suspend (such as allocating any required memory) ``suspend`` handles IP specific hw/sw changes for suspend ``resume`` handles IP specific hw/sw changes for resume ``complete`` handles IP specific changes after resume ``is_idle`` returns current IP block idle status ``wait_for_idle`` poll for idle ``check_soft_reset`` check soft reset the IP block ``pre_soft_reset`` pre soft reset the IP block ``soft_reset`` soft reset the IP block ``post_soft_reset`` post soft reset the IP block ``set_clockgating_state`` enable/disable cg for the IP block ``set_powergating_state`` enable/disable pg for the IP block ``get_clockgating_state`` get current clockgating status ``dump_ip_state`` dump the IP state of the ASIC during a gpu hang ``print_ip_state`` print the IP state in devcoredump for each IP of the ASICh](h)}(h**Definition**::h](jJ)}(h**Definition**h]h Definition}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjkubh:}(hjkhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjkubjm)}(hXstruct amd_ip_funcs { char *name; int (*early_init)(struct amdgpu_ip_block *ip_block); int (*late_init)(struct amdgpu_ip_block *ip_block); int (*sw_init)(struct amdgpu_ip_block *ip_block); int (*sw_fini)(struct amdgpu_ip_block *ip_block); int (*early_fini)(struct amdgpu_ip_block *ip_block); int (*hw_init)(struct amdgpu_ip_block *ip_block); int (*hw_fini)(struct amdgpu_ip_block *ip_block); void (*late_fini)(struct amdgpu_ip_block *ip_block); int (*prepare_suspend)(struct amdgpu_ip_block *ip_block); int (*suspend)(struct amdgpu_ip_block *ip_block); int (*resume)(struct amdgpu_ip_block *ip_block); void (*complete)(struct amdgpu_ip_block *ip_block); bool (*is_idle)(struct amdgpu_ip_block *ip_block); int (*wait_for_idle)(struct amdgpu_ip_block *ip_block); bool (*check_soft_reset)(struct amdgpu_ip_block *ip_block); int (*pre_soft_reset)(struct amdgpu_ip_block *ip_block); int (*soft_reset)(struct amdgpu_ip_block *ip_block); int (*post_soft_reset)(struct amdgpu_ip_block *ip_block); int (*set_clockgating_state)(struct amdgpu_ip_block *ip_block, enum amd_clockgating_state state); int (*set_powergating_state)(struct amdgpu_ip_block *ip_block, enum amd_powergating_state state); void (*get_clockgating_state)(struct amdgpu_ip_block *ip_block, u64 *flags); void (*dump_ip_state)(struct amdgpu_ip_block *ip_block); void (*print_ip_state)(struct amdgpu_ip_block *ip_block, struct drm_printer *p); };h]hXstruct amd_ip_funcs { char *name; int (*early_init)(struct amdgpu_ip_block *ip_block); int (*late_init)(struct amdgpu_ip_block *ip_block); int (*sw_init)(struct amdgpu_ip_block *ip_block); int (*sw_fini)(struct amdgpu_ip_block *ip_block); int (*early_fini)(struct amdgpu_ip_block *ip_block); int (*hw_init)(struct amdgpu_ip_block *ip_block); int (*hw_fini)(struct amdgpu_ip_block *ip_block); void (*late_fini)(struct amdgpu_ip_block *ip_block); int (*prepare_suspend)(struct amdgpu_ip_block *ip_block); int (*suspend)(struct amdgpu_ip_block *ip_block); int (*resume)(struct amdgpu_ip_block *ip_block); void (*complete)(struct amdgpu_ip_block *ip_block); bool (*is_idle)(struct amdgpu_ip_block *ip_block); int (*wait_for_idle)(struct amdgpu_ip_block *ip_block); bool (*check_soft_reset)(struct amdgpu_ip_block *ip_block); int (*pre_soft_reset)(struct amdgpu_ip_block *ip_block); int (*soft_reset)(struct amdgpu_ip_block *ip_block); int (*post_soft_reset)(struct amdgpu_ip_block *ip_block); int (*set_clockgating_state)(struct amdgpu_ip_block *ip_block, enum amd_clockgating_state state); int (*set_powergating_state)(struct amdgpu_ip_block *ip_block, enum amd_powergating_state state); void (*get_clockgating_state)(struct amdgpu_ip_block *ip_block, u64 *flags); void (*dump_ip_state)(struct amdgpu_ip_block *ip_block); void (*print_ip_state)(struct amdgpu_ip_block *ip_block, struct drm_printer *p); };}hjksbah}(h]h ]h"]h$]h&]jgjhuh1jlhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjkubh)}(h **Members**h]jJ)}(hjkh]hMembers}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjkubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjkubh)}(hhh](h)}(h``name`` Name of IP block h](j)}(h``name``h]j)}(hjkh]hname}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjkubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjkubj)}(hhh]h)}(hName of IP blockh]hName of IP block}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjlhMhjlubah}(h]h ]h"]h$]h&]uh1jhjkubeh}(h]h ]h"]h$]h&]uh1hhjlhMhjkubh)}(hZ``early_init`` sets up early driver state (pre sw_init), does not configure hw - Optional h](j)}(h``early_init``h]j)}(hj%lh]h early_init}(hj'lhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj#lubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjlubj)}(hhh]h)}(hJsets up early driver state (pre sw_init), does not configure hw - Optionalh]hJsets up early driver state (pre sw_init), does not configure hw - OptionalQ}(hj>lhhhNhNubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMhj;lubah}(h]h ]h"]h$]h&]uh1jhjlubeh}(h]h ]h"]h$]h&]uh1hhj:lhMhjkubh)}(hE``late_init`` sets up late driver/hw state (post hw_init) - Optional h](j)}(h ``late_init``h]j)}(hj_lh]h late_init}(hjalhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]lubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjYlubj)}(hhh]h)}(h6sets up late driver/hw state (post hw_init) - Optionalh]h6sets up late driver/hw state (post hw_init) - Optional}(hjxlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjtlhMhjulubah}(h]h ]h"]h$]h&]uh1jhjYlubeh}(h]h ]h"]h$]h&]uh1hhjtlhMhjkubh)}(h8``sw_init`` sets up driver state, does not configure hw h](j)}(h ``sw_init``h]j)}(hjlh]hsw_init}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjlubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjlubj)}(hhh]h)}(h+sets up driver state, does not configure hwh]h+sets up driver state, does not configure hw}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjlhMhjlubah}(h]h ]h"]h$]h&]uh1jhjlubeh}(h]h ]h"]h$]h&]uh1hhjlhMhjkubh)}(h;``sw_fini`` tears down driver state, does not configure hw h](j)}(h ``sw_fini``h]j)}(hjlh]hsw_fini}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjlubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjlubj)}(hhh]h)}(h.tears down driver state, does not configure hwh]h.tears down driver state, does not configure hw}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjlhMhjlubah}(h]h ]h"]h$]h&]uh1jhjlubeh}(h]h ]h"]h$]h&]uh1hhjlhMhjkubh)}(h@``early_fini`` tears down stuff before dev detached from driver h](j)}(h``early_fini``h]j)}(hj mh]h early_fini}(hj mhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjmubj)}(hhh]h)}(h0tears down stuff before dev detached from driverh]h0tears down stuff before dev detached from driver}(hj#mhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjmhMhj mubah}(h]h ]h"]h$]h&]uh1jhjmubeh}(h]h ]h"]h$]h&]uh1hhjmhMhjkubh)}(h!``hw_init`` sets up the hw state h](j)}(h ``hw_init``h]j)}(hjCmh]hhw_init}(hjEmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjAmubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMhj=mubj)}(hhh]h)}(hsets up the hw stateh]hsets up the hw state}(hj\mhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjXmhMhjYmubah}(h]h ]h"]h$]h&]uh1jhj=mubeh}(h]h ]h"]h$]h&]uh1hhjXmhMhjkubh)}(h$``hw_fini`` tears down the hw state h](j)}(h ``hw_fini``h]j)}(hj|mh]hhw_fini}(hj~mhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjzmubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjvmubj)}(hhh]h)}(htears down the hw stateh]htears down the hw state}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjmhMhjmubah}(h]h ]h"]h$]h&]uh1jhjvmubeh}(h]h ]h"]h$]h&]uh1hhjmhMhjkubh)}(h``late_fini`` final cleanup h](j)}(h ``late_fini``h]j)}(hjmh]h late_fini}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjmubj)}(hhh]h)}(h final cleanuph]h final cleanup}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjmhMhjmubah}(h]h ]h"]h$]h&]uh1jhjmubeh}(h]h ]h"]h$]h&]uh1hhjmhMhjkubh)}(ho``prepare_suspend`` handle IP specific changes to prepare for suspend (such as allocating any required memory) h](j)}(h``prepare_suspend``h]j)}(hjmh]hprepare_suspend}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjmubj)}(hhh]h)}(hZhandle IP specific changes to prepare for suspend (such as allocating any required memory)h]hZhandle IP specific changes to prepare for suspend (such as allocating any required memory)}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjnubah}(h]h ]h"]h$]h&]uh1jhjmubeh}(h]h ]h"]h$]h&]uh1hhjnhMhjkubh)}(h:``suspend`` handles IP specific hw/sw changes for suspend h](j)}(h ``suspend``h]j)}(hj(nh]hsuspend}(hj*nhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&nubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMhj"nubj)}(hhh]h)}(h-handles IP specific hw/sw changes for suspendh]h-handles IP specific hw/sw changes for suspend}(hjAnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=nhMhj>nubah}(h]h ]h"]h$]h&]uh1jhj"nubeh}(h]h ]h"]h$]h&]uh1hhj=nhMhjkubh)}(h8``resume`` handles IP specific hw/sw changes for resume h](j)}(h ``resume``h]j)}(hjanh]hresume}(hjcnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_nubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMhj[nubj)}(hhh]h)}(h,handles IP specific hw/sw changes for resumeh]h,handles IP specific hw/sw changes for resume}(hjznhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjvnhMhjwnubah}(h]h ]h"]h$]h&]uh1jhj[nubeh}(h]h ]h"]h$]h&]uh1hhjvnhMhjkubh)}(h6``complete`` handles IP specific changes after resume h](j)}(h ``complete``h]j)}(hjnh]hcomplete}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjnubj)}(hhh]h)}(h(handles IP specific changes after resumeh]h(handles IP specific changes after resume}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjnhMhjnubah}(h]h ]h"]h$]h&]uh1jhjnubeh}(h]h ]h"]h$]h&]uh1hhjnhMhjkubh)}(h1``is_idle`` returns current IP block idle status h](j)}(h ``is_idle``h]j)}(hjnh]his_idle}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjnubj)}(hhh]h)}(h$returns current IP block idle statush]h$returns current IP block idle status}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjnhMhjnubah}(h]h ]h"]h$]h&]uh1jhjnubeh}(h]h ]h"]h$]h&]uh1hhjnhMhjkubh)}(h ``wait_for_idle`` poll for idle h](j)}(h``wait_for_idle``h]j)}(hj oh]h wait_for_idle}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhj oubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjoubj)}(hhh]h)}(h poll for idleh]h poll for idle}(hj%ohhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!ohMhj"oubah}(h]h ]h"]h$]h&]uh1jhjoubeh}(h]h ]h"]h$]h&]uh1hhj!ohMhjkubh)}(h3``check_soft_reset`` check soft reset the IP block h](j)}(h``check_soft_reset``h]j)}(hjEoh]hcheck_soft_reset}(hjGohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCoubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMhj?oubj)}(hhh]h)}(hcheck soft reset the IP blockh]hcheck soft reset the IP block}(hj^ohhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZohMhj[oubah}(h]h ]h"]h$]h&]uh1jhj?oubeh}(h]h ]h"]h$]h&]uh1hhjZohMhjkubh)}(h/``pre_soft_reset`` pre soft reset the IP block h](j)}(h``pre_soft_reset``h]j)}(hj~oh]hpre_soft_reset}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|oubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjxoubj)}(hhh]h)}(hpre soft reset the IP blockh]hpre soft reset the IP block}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhjohMhjoubah}(h]h ]h"]h$]h&]uh1jhjxoubeh}(h]h ]h"]h$]h&]uh1hhjohMhjkubh)}(h'``soft_reset`` soft reset the IP block h](j)}(h``soft_reset``h]j)}(hjoh]h soft_reset}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjoubj)}(hhh]h)}(hsoft reset the IP blockh]hsoft reset the IP block}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhjohMhjoubah}(h]h ]h"]h$]h&]uh1jhjoubeh}(h]h ]h"]h$]h&]uh1hhjohMhjkubh)}(h1``post_soft_reset`` post soft reset the IP block h](j)}(h``post_soft_reset``h]j)}(hjoh]hpost_soft_reset}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjoubj)}(hhh]h)}(hpost soft reset the IP blockh]hpost soft reset the IP block}(hj phhhNhNubah}(h]h ]h"]h$]h&]uh1hhjphMhjpubah}(h]h ]h"]h$]h&]uh1jhjoubeh}(h]h ]h"]h$]h&]uh1hhjphMhjkubh)}(h=``set_clockgating_state`` enable/disable cg for the IP block h](j)}(h``set_clockgating_state``h]j)}(hj)ph]hset_clockgating_state}(hj+phhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'pubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMhj#pubj)}(hhh]h)}(h"enable/disable cg for the IP blockh]h"enable/disable cg for the IP block}(hjBphhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>phMhj?pubah}(h]h ]h"]h$]h&]uh1jhj#pubeh}(h]h ]h"]h$]h&]uh1hhj>phMhjkubh)}(h=``set_powergating_state`` enable/disable pg for the IP block h](j)}(h``set_powergating_state``h]j)}(hjbph]hset_powergating_state}(hjdphhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`pubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMhj\pubj)}(hhh]h)}(h"enable/disable pg for the IP blockh]h"enable/disable pg for the IP block}(hj{phhhNhNubah}(h]h ]h"]h$]h&]uh1hhjwphMhjxpubah}(h]h ]h"]h$]h&]uh1jhj\pubeh}(h]h ]h"]h$]h&]uh1hhjwphMhjkubh)}(h9``get_clockgating_state`` get current clockgating status h](j)}(h``get_clockgating_state``h]j)}(hjph]hget_clockgating_state}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jhjpubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjpubj)}(hhh]h)}(hget current clockgating statush]hget current clockgating status}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hhjphMhjpubah}(h]h ]h"]h$]h&]uh1jhjpubeh}(h]h ]h"]h$]h&]uh1hhjphMhjkubh)}(hB``dump_ip_state`` dump the IP state of the ASIC during a gpu hang h](j)}(h``dump_ip_state``h]j)}(hjph]h dump_ip_state}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jhjpubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjpubj)}(hhh]h)}(h/dump the IP state of the ASIC during a gpu hangh]h/dump the IP state of the ASIC during a gpu hang}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hhjphMhjpubah}(h]h ]h"]h$]h&]uh1jhjpubeh}(h]h ]h"]h$]h&]uh1hhjphMhjkubh)}(hL``print_ip_state`` print the IP state in devcoredump for each IP of the ASICh](j)}(h``print_ip_state``h]j)}(hj qh]hprint_ip_state}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj qubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjqubj)}(hhh]h)}(h9print the IP state in devcoredump for each IP of the ASICh]h9print the IP state in devcoredump for each IP of the ASIC}(hj&qhhhNhNubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMhj#qubah}(h]h ]h"]h$]h&]uh1jhjqubeh}(h]h ]h"]h$]h&]uh1hhj"qhMhjkubeh}(h]h ]h"]h$]h&]uh1hhjkubeh}(h]h ] kernelindentah"]h$]h&]uh1jWhj]hhhj^hNubh)}(h**Description**h]jJ)}(hjPqh]h Description}(hjRqhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjNqubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMhj]hhubh)}(hXXThese hooks provide an interface for controlling the operational state of IP blocks. After acquiring a list of IP blocks for the GPU in use, the driver can make chip-wide state changes by walking this list and making calls to hooks from each IP block. This list is ordered to ensure that the driver initializes the IP blocks in a safe sequence.h]hXXThese hooks provide an interface for controlling the operational state of IP blocks. After acquiring a list of IP blocks for the GPU in use, the driver can make chip-wide state changes by walking this list and making calls to hooks from each IP block. This list is ordered to ensure that the driver initializes the IP blocks in a safe sequence.}(hjfqhhhNhNubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:212: ./drivers/gpu/drm/amd/include/amd_shared.hhMhj]hhubeh}(h] ip-blocksah ]h"] ip blocksah$]h&]uh1hhhhhhhhKubeh}(h]core-driver-infrastructureah ]h"]core driver infrastructureah$]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_handlerjqerror_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}refids}(j]jaj]jaunameids}(jqjqjjj jj jjjjjjjjbjbj~j~jujrj 3j 3j]j]jzqjwqu nametypes}(jqjj j jjjjbj~juj 3j]jzquh}(jqhjhjjjjjjjjjjjbjjjjajfj j jjjjjjjjjyj~j !j!j[$j`$j'j'j*j*j0-j5-j/j /j0j0j<3jA3j45j95j7j7j9j9jJ;jO;j<j<j?j?jAAjFAjDjDjdHjiHjKj#KjLjLjZNj_NjPjPjTjTj1Wj6WjXjXjZjZj\j\j]j]j`j `j~jbj"cj'cjdjdj,gj1gjhjhjvjj{jjmjmjpjpjkrjprjujujwjwj4yj9yj{j{jrj ~jS~jX~j"j'jjjjj 3jxjjj$j)jfjkjjjhjmjjjjjojjjljqjjjnjsjjjpjujjjjj#j(jjjjj^jcjjjŬjʬjjjIjNjjjͶjҶjjjJjOjjjDjIjnjsjNjSjjjbjgjjjjjsjxjwj|j{jjjj!j&j)j.j2j7jjjjjjj$j)jjjijnjjj j%jJjOjjjjj j j j j* j/ jcjhj,j1jjjijnjjjjjfjkjjj!j!j"j"j$j$j&j&j++j0+jT-jY-j0j0j]j3jZ3j_3j4j4j 7j7j8j8j :j:j;j;jS=jX=j>j?j|@j@jCjCj FjFjHjHjsKjxKjLjLjOjOjRjRjUjUjWXj\XjYjZj[j[jwqj]j^j ^jbjbjejej0kj5ku 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](hsystem_message)}(hhh]h)}(hhh]hBHyperlink target "pipes-and-queues-description" is not referenced.}hjrsbah}(h]h ]h"]h$]h&]uh1hhjrubah}(h]h ]h"]h$]h&]levelKtypeINFOsourcehlineKPuh1jrubjr)}(hhh]h)}(hhh]h;Hyperlink target "amdgpu-memory-domains" is not referenced.}hj.rsbah}(h]h ]h"]h$]h&]uh1hhj+rubah}(h]h ]h"]h$]h&]levelKtypej(rsourcehlineKuh1jrube transformerN include_log] decorationNhhub.