ksphinx.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]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget*/translations/pt_BR/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&]uh1jhhhK'hjubh 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.}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hj%ubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hhhK'hj ubj)}(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)}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhK-hjBubj$)}(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.}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK*hjTubah}(h]h ]h"]h$]h&]uh1j#hjBubeh}(h]h ]h"]h$]h&]uh1j hhhK-hj hhubj)}(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)}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhK1hjqubj$)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK0hjubah}(h]h ]h"]h$]h&]uh1j#hjqubeh}(h]h ]h"]h$]h&]uh1j hhhK1hj hhubj)}(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&]uh1jhhhK6hjubj$)}(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&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hhhK6hj hhubj)}(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&]uh1jhhhK: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&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hhhK:hj hhubj)}(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)}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhK@hj'ubj$)}(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=hj9ubah}(h]h ]h"]h$]h&]uh1j#hj'ubeh}(h]h ]h"]h$]h&]uh1j hhhK@hj hhubj)}(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)}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKIhjVubj$)}(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 }(hjkhhhNhNubh)}(h-:ref:`Graphics (GFX) and Compute `h]j)}(hjuh]hGraphics (GFX) and Compute}(hjwhhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1jhjsubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnj amdgpu-gcuh1hhhhKChjkubh.}(hjkhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKChjhubah}(h]h ]h"]h$]h&]uh1j#hjVubeh}(h]h ]h"]h$]h&]uh1j hhhKIhj hhubj)}(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&]uh1jhhhKNhjubj$)}(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&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hhhKNhj hhubeh}(h]h ]h"]h$]h&]uh1jhhhhhhhNubh)}(hIt is important to note that these blocks can interact with each other. The picture below illustrates some of the components and their interconnection:h]hIt is important to note that these blocks can interact with each other. The picture below illustrates some of the components and their interconnection:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKPhhhhubkfigure kernel_figure)}(hhh]hfigure)}(hhh]himage)}(h*.. kernel-figure:: amd_overview_block.svg h]h}(h]h ]h"]h$]h&]uri!gpu/amdgpu/amd_overview_block.svg candidates}*jsuh1jhjhhhKubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhhhhhhhKTubh)}(hXJIn the diagram, memory-related blocks are shown in green. Notice that specific IPs have a green square that represents a small hardware block named 'hub', which is responsible for interfacing with memory. All memory hubs are connected in the UMCs, which in turn are connected to memory blocks. As a note, pre-vega devices have a dedicated block for the Graphic Memory Controller (GMC), which was replaced by UMC and hubs in new architectures. In the driver code, you can identify this component by looking for the suffix hub, for example: gfxhub, dchub, mmhub, vmhub, etc. Keep in mind that the component's interaction with the memory block may vary across architectures. For example, on Navi and newer, GC and SDMA are both attached to GCHUB; on pre-Navi, SDMA goes through MMHUB; VCN, JPEG, and VPE go through MMHUB; DCN goes through DCHUB.h]hXPIn the diagram, memory-related blocks are shown in green. Notice that specific IPs have a green square that represents a small hardware block named ‘hub’, which is responsible for interfacing with memory. All memory hubs are connected in the UMCs, which in turn are connected to memory blocks. As a note, pre-vega devices have a dedicated block for the Graphic Memory Controller (GMC), which was replaced by UMC and hubs in new architectures. In the driver code, you can identify this component by looking for the suffix hub, for example: gfxhub, dchub, mmhub, vmhub, etc. Keep in mind that the component’s interaction with the memory block may vary across architectures. For example, on Navi and newer, GC and SDMA are both attached to GCHUB; on pre-Navi, SDMA goes through MMHUB; VCN, JPEG, and VPE go through MMHUB; DCN goes through DCHUB.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKUhhhhubh)}(hXlThere is some protection for certain memory elements, and the PSP plays an essential role in this area. When a specific firmware is loaded into memory, the PSP takes steps to ensure it has a valid signature. It also stores firmware images in a protected memory area named Trusted Memory Area (TMR), so the OS or driver can't corrupt them at runtime. Another use of PSP is to support Trusted Applications (TA), which are basically small applications that run on the trusted processor and handles a trusted operation (e.g., HDCP). PSP is also used for encrypted memory for content protection via Trusted Memory Zone (TMZ).h]hXnThere is some protection for certain memory elements, and the PSP plays an essential role in this area. When a specific firmware is loaded into memory, the PSP takes steps to ensure it has a valid signature. It also stores firmware images in a protected memory area named Trusted Memory Area (TMR), so the OS or driver can’t corrupt them at runtime. Another use of PSP is to support Trusted Applications (TA), which are basically small applications that run on the trusted processor and handles a trusted operation (e.g., HDCP). PSP is also used for encrypted memory for content protection via Trusted Memory Zone (TMZ).}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKbhhhhubh)}(hAnother critical IP is the SMU. It handles reset distribution, as well as clock, thermal, and power management for all IPs on the SoC. SMU also helps to balance performance and power consumption.h]hAnother critical IP is the SMU. It handles reset distribution, as well as clock, thermal, and power management for all IPs on the SoC. SMU also helps to balance performance and power consumption.}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKkhhhhubhtarget)}(h!.. _pipes-and-queues-description:h]h}(h]h ]h"]h$]h&]refidpipes-and-queues-descriptionuh1j>hKohhhhhhubeh}(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}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjThhhhhKrubhnote)}(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.}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKthjgubah}(h]h ]h"]h$]h&]uh1jehjThhhhhNubh)}(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:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKwhjThhubj)}(hhh]j)}(hhh]j)}(h2.. kernel-figure:: pipe_and_queue_abstraction.svg h]h}(h]h ]h"]h$]h&]uri)gpu/amdgpu/pipe_and_queue_abstraction.svgj}jjsuh1jhjhhhKubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhjThhhhhK|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 }(hjhhhNhNubhstrong)}(h **Pipes**h]hPipes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh and another called }(hjhhhNhNubj)}(h **Queues**h]hQueues}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhX; 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.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK}hjThhubh)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjThhubh)}(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&]uh1hhhhKhjThhubhenumerated_list)}(hhh](h list_item)}(hCommand Stream;h]h)}(hjh]hCommand Stream;}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hPacket by Packet;h]h)}(hjh]hPacket by Packet;}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(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).}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj1ubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubeh}(h]h ]h"]h$]h&]enumtypearabicprefixhsuffix.uh1jhjThhhhhKubh)}(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.}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjThhubh)}(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.}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjThhubeh}(h](%gfx-compute-and-sdma-overall-behaviorjKeh ]h"]('gfx, compute, and sdma overall behaviorpipes-and-queues-descriptioneh$]h&]uh1hhhhhhhhKrexpect_referenced_by_name}jvj@sexpect_referenced_by_id}jKj@subh)}(hhh](h)}(hDriver Structureh]hDriver Structure}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj}hhhhhKubh)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj}hhubh)}(hSome useful constructs:h]hSome useful constructs:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj}hhubj )}(hhh](j)}(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)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKhjubj$)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hhhKhjubj)}(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)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKhjubj$)}(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&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hhhKhjhhubeh}(h]h ]h"]h$]h&]uh1jhj}hhhhhNubj?)}(h.. _amdgpu_memory_domains:h]h}(h]h ]h"]h$]h&]jJamdgpu-memory-domainsuh1j>hKhj}hhhhubeh}(h]driver-structureah ]h"]driver structureah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hMemory Domainsh]hMemory Domains}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$hhhhhKubh)}(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}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj5ubhw System memory that is not GPU accessible. Memory in this pool could be swapped out to disk if there is pressure.}(hj5hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:189: ./include/uapi/drm/amdgpu_drm.hhKVhj$hhubh)}(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}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjTubh 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.}(hjThhhNhNubeh}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:189: ./include/uapi/drm/amdgpu_drm.hhKYhj$hhubh)}(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}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjqubhH Local video memory. For APUs, it is memory carved out by the BIOS.}(hjqhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:189: ./include/uapi/drm/amdgpu_drm.hhK^hj$hhubh)}(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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjubhL Global on-chip data storage used to share data across shader threads.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:189: ./include/uapi/drm/amdgpu_drm.hhKahj$hhubh)}(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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjubhX Global wave sync, used to synchronize the execution of all the waves on a device.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:189: ./include/uapi/drm/amdgpu_drm.hhKdhj$hhubh)}(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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjubhI Ordered append, used by 3D or Compute engines for appending data.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:189: ./include/uapi/drm/amdgpu_drm.hhKghj$hhubh)}(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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjubhA Doorbell. It is an MMIO region for signalling user mode queues.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:189: ./include/uapi/drm/amdgpu_drm.hhKjhj$hhubeh}(h](memory-domainsjeh ]h"](memory domainsamdgpu_memory_domainseh$]h&]uh1hhhhhhhhKjy}jjsj{}jjsubh)}(hhh](h)}(hBuffer Objectsh]hBuffer Objects}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhKubh)}(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:)}(hj(h]h amdgpu_bo}(hj*hhhNhNubah}(h]h ](jcc-typeeh"]h$]h&]uh1j9hj&ubah}(h]h ]h"]h$]h&]refdocj  refdomainj4reftypetype refexplicitrefwarnj amdgpu_bouh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:195: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chK1hjubhX 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&]uh1hhjFhK1hj hhubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](single#amdgpu_bo_is_amdgpu_bo (C function)c.amdgpu_bo_is_amdgpu_bohNtauh1jQhj hhhNhNubhdesc)}(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}(hjuhhhNhNubah}(h]h ]ktah"]h$]h&]uh1jshjohhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKUubhdesc_sig_space)}(h h]h }(hjhhhNhNubah}(h]h ]wah"]h$]h&]uh1jhjohhhjhKUubh desc_name)}(hamdgpu_bo_is_amdgpu_boh]h desc_sig_name)}(hamdgpu_bo_is_amdgpu_boh]hamdgpu_bo_is_amdgpu_bo}(hjhhhNhNubah}(h]h ]nah"]h$]h&]uh1jhjubah}(h]h ](sig-namedescnameeh"]h$]h&] xml:spacepreserveuh1jhjohhhjhKUubhdesc_parameterlist)}(h(struct ttm_buffer_object *bo)h]hdesc_parameter)}(hstruct ttm_buffer_object *boh](hdesc_sig_keyword)}(hstructh]hstruct}(hjhhhNhNubah}(h]h ]kah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(httm_buffer_objecth]httm_buffer_object}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftype identifier reftargetjmodnameN classnameN c:parent_keysphinx.domains.c LookupKey)}data]j ASTIdentifier)}jjsbc.amdgpu_bo_is_amdgpu_boasbuh1hhjubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubhdesc_sig_punctuation)}(hjh]h*}(hjhhhNhNubah}(h]h ]pah"]h$]h&]uh1jhjubj)}(hboh]hbo}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubah}(h]h ]h"]h$]h&]jjuh1jhjohhhjhKUubeh}(h]h ]h"]h$]h&]jj add_permalinkuh1jmsphinx_line_type declaratorhjihhhjhKUubah}(h]j`ah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1jghjhKUhjdhhubh desc_content)}(hhh]h)}(h4check if the buffer object is an :c:type:`amdgpu_bo`h](h!check if the buffer object is an }(hj_hhhNhNubh)}(h:c:type:`amdgpu_bo`h]j:)}(hjih]h amdgpu_bo}(hjkhhhNhNubah}(h]h ](jj4c-typeeh"]h$]h&]uh1j9hjgubah}(h]h ]h"]h$]h&]refdocj  refdomainj4reftypetype refexplicitrefwarnjj)}j]j c.amdgpu_bo_is_amdgpu_boasbj amdgpu_bouh1hhjhKUhj_ubeh}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKUhj\hhubah}(h]h ]h"]h$]h&]uh1jZhjdhhhjhKUubeh}(h]h ](j4functioneh"]h$]h&]domainj4objtypejdesctypejnoindex noindexentrynocontentsentryuh1jbhhhj hNhNubh 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]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKYhjubj )}(hhh]j)}(h=``struct ttm_buffer_object *bo`` buffer object to be checked h](j)}(h ``struct ttm_buffer_object *bo``h]j:)}(hjh]hstruct ttm_buffer_object *bo}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKVhjubj$)}(hhh]h)}(hbuffer object to be checkedh]hbuffer object to be checked}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKVhjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhKVhjubah}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKXhjubh)}(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:)}(hj'h]h amdgpu_bo}(hj)hhhNhNubah}(h]h ](jj4c-typeeh"]h$]h&]uh1j9hj%ubah}(h]h ]h"]h$]h&]refdocj  refdomainj4reftypetype refexplicitrefwarnjj)}j]sbj amdgpu_bouh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKWhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjGhKWhjubh)}(h **Return**h]j)}(hjTh]hReturn}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKZhjubh)}(h@true if the object belongs to :c:type:`amdgpu_bo`, false if not.h](htrue if the object belongs to }(hjjhhhNhNubh)}(h:c:type:`amdgpu_bo`h]j:)}(hjth]h amdgpu_bo}(hjvhhhNhNubah}(h]h ](jj4c-typeeh"]h$]h&]uh1j9hjrubah}(h]h ]h"]h$]h&]refdocj  refdomainj4reftypetype refexplicitrefwarnjjCj amdgpu_bouh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chK[hjjubh, false if not.}(hjjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhK[hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^,amdgpu_bo_placement_from_domain (C function)!c.amdgpu_bo_placement_from_domainhNtauh1jQhj hhhNhNubjc)}(hhh](jh)}(hHvoid amdgpu_bo_placement_from_domain (struct amdgpu_bo *abo, u32 domain)h]jn)}(hGvoid amdgpu_bo_placement_from_domain(struct amdgpu_bo *abo, u32 domain)h](jt)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjhhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKiubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKiubj)}(hamdgpu_bo_placement_from_domainh]j)}(hamdgpu_bo_placement_from_domainh]hamdgpu_bo_placement_from_domain}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhKiubj)}(h#(struct amdgpu_bo *abo, u32 domain)h](j)}(hstruct amdgpu_bo *aboh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h amdgpu_boh]h amdgpu_bo}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj modnameN classnameNjj)}j]j)}jjsb!c.amdgpu_bo_placement_from_domainasbuh1hhjubj)}(h h]h }(hj7 hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjE hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(haboh]habo}(hjR hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(h u32 domainh](h)}(hhh]j)}(hu32h]hu32}(hjn hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjk ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjp modnameN classnameNjj)}j]j3 !c.amdgpu_bo_placement_from_domainasbuh1hhjg ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjg ubj)}(hdomainh]hdomain}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjg ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhjhKiubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjhhhjhKiubah}(h]jah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjhKihjhhubj[)}(hhh]h)}(hset buffer's placementh]hset buffer’s placement}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKihj hhubah}(h]h ]h"]h$]h&]uh1jZhjhhhjhKiubeh}(h]h ](j4functioneh"]h$]h&]jj4jj jj jjjuh1jbhhhj hNhNubj)}(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]j)}(hj h]h Parameters}(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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKmhj ubj )}(hhh](j)}(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&]uh1j9hj ubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKjhj 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 ](jj4c-typeeh"]h$]h&]uh1j9hj" ubah}(h]h ]h"]h$]h&]refdocj  refdomainj4reftypetype refexplicitrefwarnjjCj amdgpu_bouh1hhj hKjhj ubh+ buffer object whose placement is to be set}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hKjhj ubah}(h]h ]h"]h$]h&]uh1j#hj ubeh}(h]h ]h"]h$]h&]uh1j hj hKjhj ubj)}(h ``u32 domain`` requested domain h](j)}(h``u32 domain``h]j:)}(hj] h]h u32 domain}(hj_ hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj[ ubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKkhjW ubj$)}(hhh]h)}(hrequested domainh]hrequested domain}(hjv hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjr hKkhjs ubah}(h]h ]h"]h$]h&]uh1j#hjW ubeh}(h]h ]h"]h$]h&]uh1j hjr hKkhj ubeh}(h]h ]h"]h$]h&]uh1jhj ubh)}(h**Description**h]j)}(hj h]h Description}(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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKmhj 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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKlhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^&amdgpu_bo_create_reserved (C function)c.amdgpu_bo_create_reservedhNtauh1jQhj hhhNhNubjc)}(hhh](jh)}(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]jn)}(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](jt)}(hinth]hint}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj hhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhj hKubj)}(hamdgpu_bo_create_reservedh]j)}(hamdgpu_bo_create_reservedh]hamdgpu_bo_create_reserved}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj hhhj hKubj)}(h(struct amdgpu_device *adev, unsigned long size, int align, u32 domain, struct amdgpu_bo **bo_ptr, u64 *gpu_addr, void **cpu_addr)h](j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(h h]h }(hj' hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hj8 hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5 ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj: modnameN classnameNjj)}j]j)}jj sbc.amdgpu_bo_create_reservedasbuh1hhj ubj)}(h h]h }(hjX hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hjh]h*}(hjf hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj ubj)}(hadevh]hadev}(hjs hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj ubj)}(hunsigned long sizeh](jt)}(hunsignedh]hunsigned}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubjt)}(hlongh]hlong}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hsizeh]hsize}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj ubj)}(h int alignh](jt)}(hinth]hint}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(halignh]halign}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj ubj)}(h u32 domainh](h)}(hhh]j)}(hu32h]hu32}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj modnameN classnameNjj)}j]jT c.amdgpu_bo_create_reservedasbuh1hhj ubj)}(h h]h }(hj3 hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hdomainh]hdomain}(hjA hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj ubj)}(hstruct amdgpu_bo **bo_ptrh](j)}(hjh]hstruct}(hjZ hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjV ubj)}(h h]h }(hjg hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjV ubh)}(hhh]j)}(h amdgpu_boh]h amdgpu_bo}(hjx hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhju ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjz modnameN classnameNjj)}j]jT c.amdgpu_bo_create_reservedasbuh1hhjV ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjV ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjV ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjV ubj)}(hbo_ptrh]hbo_ptr}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjV ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj ubj)}(h u64 *gpu_addrh](h)}(hhh]j)}(hu64h]hu64}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj modnameN classnameNjj)}j]jT c.amdgpu_bo_create_reservedasbuh1hhj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj ubj)}(hgpu_addrh]hgpu_addr}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj ubj)}(hvoid **cpu_addrh](jt)}(hvoidh]hvoid}(hj, hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj( ubj)}(h h]h }(hj: hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj( ubj)}(hjh]h*}(hjH hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj( ubj)}(hjh]h*}(hjU hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj( ubj)}(hcpu_addrh]hcpu_addr}(hjb hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj( ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj ubeh}(h]h ]h"]h$]h&]jjuh1jhj hhhj hKubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhj hhhj hKubah}(h]j ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghj 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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKhj hhubah}(h]h ]h"]h$]h&]uh1jZhj hhhj hKubeh}(h]h ](j4functioneh"]h$]h&]jj4jj jj jjjuh1jbhhhj hNhNubj)}(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]j)}(hj h]h Parameters}(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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKhj ubj )}(hhh](j)}(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&]uh1j9hj ubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKhj ubj$)}(hhh]h)}(hamdgpu device objecth]hamdgpu device object}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1j#hj ubeh}(h]h ]h"]h$]h&]uh1j hj hKhj ubj)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKhjubj$)}(hhh]h)}(hsize for the new BOh]hsize for the new BO}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhKhj ubj)}(h'``int align`` alignment for the new BO h](j)}(h ``int align``h]j:)}(hj?h]h int align}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj=ubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKhj9ubj$)}(hhh]h)}(halignment for the new BOh]halignment for the new BO}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjThKhjUubah}(h]h ]h"]h$]h&]uh1j#hj9ubeh}(h]h ]h"]h$]h&]uh1j hjThKhj ubj)}(h!``u32 domain`` where to place it h](j)}(h``u32 domain``h]j:)}(hjxh]h u32 domain}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjvubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKhjrubj$)}(hhh]h)}(hwhere to place ith]hwhere to place it}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j#hjrubeh}(h]h ]h"]h$]h&]uh1j hjhKhj ubj)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKhjubj$)}(hhh]h)}(h$used to initialize BOs in structuresh]h$used to initialize BOs in structures}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhKhj ubj)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./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&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhKhj ubj)}(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&]uh1j9hj!ubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKhjubj$)}(hhh]h)}(hoptional CPU address mappingh]hoptional CPU address mapping}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8hKhj9ubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hj8hKhj ubeh}(h]h ]h"]h$]h&]uh1jhj ubh)}(h**Description**h]j)}(hj^h]h Description}(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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKhj 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.}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKhj ubh)}(h**Note**h]j)}(hjh]hNote}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKhj 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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKhj ubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKhj 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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chKhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^$amdgpu_bo_create_kernel (C function)c.amdgpu_bo_create_kernelhNtauh1jQhj hhhNhNubjc)}(hhh](jh)}(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]jn)}(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](jt)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjhhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMBubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMBubj)}(hamdgpu_bo_create_kernelh]j)}(hamdgpu_bo_create_kernelh]hamdgpu_bo_create_kernel}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhMBubj)}(h(struct amdgpu_device *adev, unsigned long size, int align, u32 domain, struct amdgpu_bo **bo_ptr, u64 *gpu_addr, void **cpu_addr)h](j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubj)}(h h]h }(hj;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hjLhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjNmodnameN classnameNjj)}j]j)}jjsbc.amdgpu_bo_create_kernelasbuh1hhj*ubj)}(h h]h }(hjlhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubj)}(hjh]h*}(hjzhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj*ubj)}(hadevh]hadev}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj&ubj)}(hunsigned long sizeh](jt)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjt)}(hlongh]hlong}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hsizeh]hsize}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj&ubj)}(h int alignh](jt)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(halignh]halign}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj&ubj)}(h u32 domainh](h)}(hhh]j)}(hu32h]hu32}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj+modnameN classnameNjj)}j]jhc.amdgpu_bo_create_kernelasbuh1hhj"ubj)}(h h]h }(hjGhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubj)}(hdomainh]hdomain}(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj&ubj)}(hstruct amdgpu_bo **bo_ptrh](j)}(hjh]hstruct}(hjnhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjjubj)}(h h]h }(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjjubh)}(hhh]j)}(h amdgpu_boh]h amdgpu_bo}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]jhc.amdgpu_bo_create_kernelasbuh1hhjjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjjubj)}(hbo_ptrh]hbo_ptr}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj&ubj)}(h u64 *gpu_addrh](h)}(hhh]j)}(hu64h]hu64}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]jhc.amdgpu_bo_create_kernelasbuh1hhjubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hgpu_addrh]hgpu_addr}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj&ubj)}(hvoid **cpu_addrh](jt)}(hvoidh]hvoid}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj<ubj)}(h h]h }(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<ubj)}(hjh]h*}(hj\hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj<ubj)}(hjh]h*}(hjihhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj<ubj)}(hcpu_addrh]hcpu_addr}(hjvhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj&ubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhjhMBubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjhhhjhMBubah}(h]jah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjhMBhjhhubj[)}(hhh]h)}(hcreate BO for kernel useh]hcreate BO for kernel use}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMBhjhhubah}(h]h ]h"]h$]h&]uh1jZhjhhhjhMBubeh}(h]h ](j4functioneh"]h$]h&]jj4jjjjjjjuh1jbhhhj hNhNubj)}(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]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMFhjubj )}(hhh](j)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMDhjubj$)}(hhh]h)}(hamdgpu device objecth]hamdgpu device object}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMDhjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMDhjubj)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMEhjubj$)}(hhh]h)}(hsize for the new BOh]hsize for the new BO}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/hMEhj0ubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hj/hMEhjubj)}(h'``int align`` alignment for the new BO h](j)}(h ``int align``h]j:)}(hjSh]h int align}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjQubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMFhjMubj$)}(hhh]h)}(halignment for the new BOh]halignment for the new BO}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhMFhjiubah}(h]h ]h"]h$]h&]uh1j#hjMubeh}(h]h ]h"]h$]h&]uh1j hjhhMFhjubj)}(h!``u32 domain`` where to place it h](j)}(h``u32 domain``h]j:)}(hjh]h u32 domain}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMGhjubj$)}(hhh]h)}(hwhere to place ith]hwhere to place it}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMGhjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMGhjubj)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMHhjubj$)}(hhh]h)}(h$used to initialize BOs in structuresh]h$used to initialize BOs in structures}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMHhjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMHhjubj)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMIhjubj$)}(hhh]h)}(hGPU addr of the pinned BOh]hGPU addr of the pinned BO}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMIhjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMIhjubj)}(h1``void **cpu_addr`` optional CPU address mapping h](j)}(h``void **cpu_addr``h]j:)}(hj7h]hvoid **cpu_addr}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj5ubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMJhj1ubj$)}(hhh]h)}(hoptional CPU address mappingh]hoptional CPU address mapping}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjLhMJhjMubah}(h]h ]h"]h$]h&]uh1j#hj1ubeh}(h]h ]h"]h$]h&]uh1j hjLhMJhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjrh]h Description}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jhjpubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMLhjubh)}(h0Allocates and pins a BO for kernel internal use.h]h0Allocates and pins a BO for kernel internal use.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMKhjubh)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMMhjubh)}(h**Note**h]j)}(hjh]hNote}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMPhjubh)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMQhjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMShjubh)}(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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMShjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^&amdgpu_bo_create_isp_user (C function)c.amdgpu_bo_create_isp_userhNtauh1jQhj hhhNhNubjc)}(hhh](jh)}(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]jn)}(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](jt)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjhhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMjubj)}(h h]h }(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhj"hMjubj)}(hamdgpu_bo_create_isp_userh]j)}(hamdgpu_bo_create_isp_userh]hamdgpu_bo_create_isp_user}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhj"hMjubj)}(hg(struct amdgpu_device *adev, struct dma_buf *dma_buf, u32 domain, struct amdgpu_bo **bo, u64 *gpu_addr)h](j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjMubj)}(h h]h }(hj^hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjMubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hjohhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjlubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjqmodnameN classnameNjj)}j]j)}jj7sbc.amdgpu_bo_create_isp_userasbuh1hhjMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjMubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjMubj)}(hadevh]hadev}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjMubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjIubj)}(hstruct dma_buf *dma_bufh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(hdma_bufh]hdma_buf}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]jc.amdgpu_bo_create_isp_userasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hdma_bufh]hdma_buf}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjIubj)}(h u32 domainh](h)}(hhh]j)}(hu32h]hu32}(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj8modnameN classnameNjj)}j]jc.amdgpu_bo_create_isp_userasbuh1hhj/ubj)}(h h]h }(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj/ubj)}(hdomainh]hdomain}(hjbhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj/ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjIubj)}(hstruct amdgpu_bo **boh](j)}(hjh]hstruct}(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwubh)}(hhh]j)}(h amdgpu_boh]h amdgpu_bo}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]jc.amdgpu_bo_create_isp_userasbuh1hhjwubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjwubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjwubj)}(hboh]hbo}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjIubj)}(h u64 *gpu_addrh](h)}(hhh]j)}(hu64h]hu64}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]jc.amdgpu_bo_create_isp_userasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hj'hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hgpu_addrh]hgpu_addr}(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjIubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhj"hMjubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhj hhhj"hMjubah}(h]jah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghj"hMjhj hhubj[)}(hhh]h)}(hcreate user BO for isph]hcreate user BO for isp}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMjhj[hhubah}(h]h ]h"]h$]h&]uh1jZhj hhhj"hMjubeh}(h]h ](j4functioneh"]h$]h&]jj4jjvjjvjjjuh1jbhhhj hNhNubj)}(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]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMnhjzubj )}(hhh](j)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMlhjubj$)}(hhh]h)}(hamdgpu device objecth]hamdgpu device object}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMlhjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMlhjubj)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMmhjubj$)}(hhh]h)}(hDMABUF handle for isp bufferh]hDMABUF handle for isp buffer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMmhjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMmhjubj)}(h!``u32 domain`` where to place it h](j)}(h``u32 domain``h]j:)}(hjh]h u32 domain}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMnhj ubj$)}(hhh]h)}(hwhere to place ith]hwhere to place it}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&hMnhj'ubah}(h]h ]h"]h$]h&]uh1j#hj ubeh}(h]h ]h"]h$]h&]uh1j hj&hMnhjubj)}(h?``struct amdgpu_bo **bo`` used to initialize BOs in structures h](j)}(h``struct amdgpu_bo **bo``h]j:)}(hjJh]hstruct amdgpu_bo **bo}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjHubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMohjDubj$)}(hhh]h)}(h$used to initialize BOs in structuresh]h$used to initialize BOs in structures}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhj_hMohj`ubah}(h]h ]h"]h$]h&]uh1j#hjDubeh}(h]h ]h"]h$]h&]uh1j hj_hMohjubj)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMphj}ubj$)}(hhh]h)}(hGPU addr of the pinned BOh]hGPU addr of the pinned BO}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMphjubah}(h]h ]h"]h$]h&]uh1j#hj}ubeh}(h]h ]h"]h$]h&]uh1j hjhMphjubeh}(h]h ]h"]h$]h&]uh1jhjzubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMrhjzubh)}(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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMqhjzubh)}(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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMuhjzubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMxhjzubh)}(h,0 on success, negative error code otherwise.h]h,0 on success, negative error code otherwise.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMyhjzubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^'amdgpu_bo_create_kernel_at (C function)c.amdgpu_bo_create_kernel_athNtauh1jQhj hhhNhNubjc)}(hhh](jh)}(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]jn)}(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](jt)}(hinth]hint}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj5hhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMubj)}(h h]h }(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5hhhjGhMubj)}(hamdgpu_bo_create_kernel_ath]j)}(hamdgpu_bo_create_kernel_ath]hamdgpu_bo_create_kernel_at}(hjZhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVubah}(h]h ](jjeh"]h$]h&]jjuh1jhj5hhhjGhMubj)}(hh(struct amdgpu_device *adev, uint64_t offset, uint64_t size, struct amdgpu_bo **bo_ptr, void **cpu_addr)h](j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hjvhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjrubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjrubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j)}jj\sbc.amdgpu_bo_create_kernel_atasbuh1hhjrubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjrubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjrubj)}(hadevh]hadev}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjrubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjnubj)}(huint64_t offseth](h)}(hhh]j)}(huint64_th]huint64_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]jc.amdgpu_bo_create_kernel_atasbuh1hhjubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hoffseth]hoffset}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjnubj)}(h uint64_t sizeh](h)}(hhh]j)}(huint64_th]huint64_t}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj5modnameN classnameNjj)}j]jc.amdgpu_bo_create_kernel_atasbuh1hhj,ubj)}(h h]h }(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,ubj)}(hsizeh]hsize}(hj_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjnubj)}(hstruct amdgpu_bo **bo_ptrh](j)}(hjh]hstruct}(hjxhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjtubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjtubh)}(hhh]j)}(h amdgpu_boh]h amdgpu_bo}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]jc.amdgpu_bo_create_kernel_atasbuh1hhjtubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjtubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjtubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjtubj)}(hbo_ptrh]hbo_ptr}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjtubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjnubj)}(hvoid **cpu_addrh](jt)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hcpu_addrh]hcpu_addr}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjnubeh}(h]h ]h"]h$]h&]jjuh1jhj5hhhjGhMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhj1hhhjGhMubah}(h]j,ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjGhMhj.hhubj[)}(hhh]h)}(h-create BO for kernel use at specific locationh]h-create BO for kernel use at specific location}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjRhhubah}(h]h ]h"]h$]h&]uh1jZhj.hhhjGhMubeh}(h]h ](j4functioneh"]h$]h&]jj4jjmjjmjjjuh1jbhhhj hNhNubj)}(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]j)}(hjwh]h Parameters}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjuubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjqubj )}(hhh](j)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjubj$)}(hhh]h)}(hamdgpu device objecth]hamdgpu device object}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjubj$)}(hhh]h)}(hoffset of the BOh]hoffset of the BO}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj)}(h!``uint64_t size`` size of the BO h](j)}(h``uint64_t size``h]j:)}(hjh]h uint64_t size}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjubj$)}(hhh]h)}(hsize of the BOh]hsize of the BO}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj)}(hC``struct amdgpu_bo **bo_ptr`` used to initialize BOs in structures h](j)}(h``struct amdgpu_bo **bo_ptr``h]j:)}(hjAh]hstruct amdgpu_bo **bo_ptr}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj?ubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj;ubj$)}(hhh]h)}(h$used to initialize BOs in structuresh]h$used to initialize BOs in structures}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjVhMhjWubah}(h]h ]h"]h$]h&]uh1j#hj;ubeh}(h]h ]h"]h$]h&]uh1j hjVhMhjubj)}(h1``void **cpu_addr`` optional CPU address mapping h](j)}(h``void **cpu_addr``h]j:)}(hjzh]hvoid **cpu_addr}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjxubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjtubj$)}(hhh]h)}(hoptional CPU address mappingh]hoptional CPU address mapping}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j#hjtubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubeh}(h]h ]h"]h$]h&]uh1jhjqubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjqubh)}(h1Creates a kernel BO at a specific offset in VRAM.h]h1Creates a kernel BO at a specific offset in VRAM.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjqubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjqubh)}(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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjqubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^"amdgpu_bo_free_kernel (C function)c.amdgpu_bo_free_kernelhNtauh1jQhj hhhNhNubjc)}(hhh](jh)}(hRvoid amdgpu_bo_free_kernel (struct amdgpu_bo **bo, u64 *gpu_addr, void **cpu_addr)h]jn)}(hQvoid amdgpu_bo_free_kernel(struct amdgpu_bo **bo, u64 *gpu_addr, void **cpu_addr)h](jt)}(hvoidh]hvoid}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjhhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMubj)}(h h]h }(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhj/hMubj)}(hamdgpu_bo_free_kernelh]j)}(hamdgpu_bo_free_kernelh]hamdgpu_bo_free_kernel}(hjBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhj/hMubj)}(h7(struct amdgpu_bo **bo, u64 *gpu_addr, void **cpu_addr)h](j)}(hstruct amdgpu_bo **boh](j)}(hjh]hstruct}(hj^hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZubj)}(h h]h }(hjkhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZubh)}(hhh]j)}(h amdgpu_boh]h amdgpu_bo}(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj~modnameN classnameNjj)}j]j)}jjDsbc.amdgpu_bo_free_kernelasbuh1hhjZubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjZubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjZubj)}(hboh]hbo}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjVubj)}(h u64 *gpu_addrh](h)}(hhh]j)}(hu64h]hu64}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]jc.amdgpu_bo_free_kernelasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hgpu_addrh]hgpu_addr}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjVubj)}(hvoid **cpu_addrh](jt)}(hvoidh]hvoid}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj.ubj)}(h h]h }(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.ubj)}(hjh]h*}(hjNhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj.ubj)}(hjh]h*}(hj[hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj.ubj)}(hcpu_addrh]hcpu_addr}(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjVubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhj/hMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjhhhj/hMubah}(h]jah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghj/hMhjhhubj[)}(hhh]h)}(hfree BO for kernel useh]hfree BO for kernel use}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjhhubah}(h]h ]h"]h$]h&]uh1jZhjhhhj/hMubeh}(h]h ](j4functioneh"]h$]h&]jj4jjjjjjjuh1jbhhhj hNhNubj)}(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]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjubj )}(hhh](j)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./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&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj)}(hP``u64 *gpu_addr`` pointer to where the BO's GPU memory space address was stored h](j)}(h``u64 *gpu_addr``h]j:)}(hj h]h u64 *gpu_addr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj ubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./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}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!hMhj"ubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hj!hMhjubj)}(hR``void **cpu_addr`` pointer to where the BO's CPU memory space address was stored h](j)}(h``void **cpu_addr``h]j:)}(hjEh]hvoid **cpu_addr}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjCubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj?ubj$)}(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}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZhMhj[ubah}(h]h ]h"]h$]h&]uh1j#hj?ubeh}(h]h ]h"]h$]h&]uh1j hjZhMhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjubh)}(h.unmaps and unpin a BO for kernel internal use.h]h.unmaps and unpin a BO for kernel internal use.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjubh)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^$amdgpu_bo_free_isp_user (C function)c.amdgpu_bo_free_isp_userhNtauh1jQhj hhhNhNubjc)}(hhh](jh)}(h3void amdgpu_bo_free_isp_user (struct amdgpu_bo *bo)h]jn)}(h2void amdgpu_bo_free_isp_user(struct amdgpu_bo *bo)h](jt)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjhhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj)}(hamdgpu_bo_free_isp_userh]j)}(hamdgpu_bo_free_isp_userh]hamdgpu_bo_free_isp_user}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhMubj)}(h(struct amdgpu_bo *bo)h]j)}(hstruct amdgpu_bo *boh](j)}(hjh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubh)}(hhh]j)}(h amdgpu_boh]h amdgpu_bo}(hj/ hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj, ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj1 modnameN classnameNjj)}j]j)}jjsbc.amdgpu_bo_free_isp_userasbuh1hhj ubj)}(h h]h }(hjO hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hjh]h*}(hj] hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj ubj)}(hboh]hbo}(hjj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj ubah}(h]h ]h"]h$]h&]jjuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjhhhjhMubah}(h]jah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjhMhjhhubj[)}(hhh]h)}(hfree BO for isp useh]hfree BO for isp use}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj hhubah}(h]h ]h"]h$]h&]uh1jZhjhhhjhMubeh}(h]h ](j4functioneh"]h$]h&]jj4jj jj jjjuh1jbhhhj hNhNubj)}(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]j)}(hj h]h Parameters}(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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj ubj )}(hhh]j)}(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&]uh1j9hj ubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./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&]uh1j#hj ubeh}(h]h ]h"]h$]h&]uh1j hj hMhj ubah}(h]h ]h"]h$]h&]uh1jhj ubh)}(h**Description**h]j)}(hj!h]h Description}(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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj 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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj 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.}(hj5!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^amdgpu_bo_create (C function)c.amdgpu_bo_createhNtauh1jQhj hhhNhNubjc)}(hhh](jh)}(hhint amdgpu_bo_create (struct amdgpu_device *adev, struct amdgpu_bo_param *bp, struct amdgpu_bo **bo_ptr)h]jn)}(hgint amdgpu_bo_create(struct amdgpu_device *adev, struct amdgpu_bo_param *bp, struct amdgpu_bo **bo_ptr)h](jt)}(hinth]hint}(hjd!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj`!hhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMlubj)}(h h]h }(hjs!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`!hhhjr!hMlubj)}(hamdgpu_bo_createh]j)}(hamdgpu_bo_createh]hamdgpu_bo_create}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj`!hhhjr!hMlubj)}(hS(struct amdgpu_device *adev, struct amdgpu_bo_param *bp, struct amdgpu_bo **bo_ptr)h](j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubj)}(h h]h }(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj!modnameN classnameNjj)}j]j)}jj!sbc.amdgpu_bo_createasbuh1hhj!ubj)}(h h]h }(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubj)}(hjh]h*}(hj!hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj!ubj)}(hadevh]hadev}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj!ubj)}(hstruct amdgpu_bo_param *bph](j)}(hjh]hstruct}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubj)}(h h]h }(hj "hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubh)}(hhh]j)}(hamdgpu_bo_paramh]hamdgpu_bo_param}(hj1"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj."ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj3"modnameN classnameNjj)}j]j!c.amdgpu_bo_createasbuh1hhj"ubj)}(h h]h }(hjO"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubj)}(hjh]h*}(hj]"hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj"ubj)}(hbph]hbp}(hjj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj!ubj)}(hstruct amdgpu_bo **bo_ptrh](j)}(hjh]hstruct}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubj)}(h h]h }(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubh)}(hhh]j)}(h amdgpu_boh]h amdgpu_bo}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj"modnameN classnameNjj)}j]j!c.amdgpu_bo_createasbuh1hhj"ubj)}(h h]h }(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubj)}(hjh]h*}(hj"hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj"ubj)}(hjh]h*}(hj"hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj"ubj)}(hbo_ptrh]hbo_ptr}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj!ubeh}(h]h ]h"]h$]h&]jjuh1jhj`!hhhjr!hMlubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhj\!hhhjr!hMlubah}(h]jW!ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjr!hMlhjY!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 ](jj4c-typeeh"]h$]h&]uh1j9hj#ubah}(h]h ]h"]h$]h&]refdocj  refdomainj4reftypetype refexplicitrefwarnjj)}j]j!c.amdgpu_bo_createasbj amdgpu_bouh1hhjhKUhj#ubh buffer object}(hj#hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMlhj#hhubah}(h]h ]h"]h$]h&]uh1jZhjY!hhhjr!hMlubeh}(h]h ](j4functioneh"]h$]h&]jj4jjQ#jjQ#jjjuh1jbhhhj hNhNubj)}(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]j)}(hj[#h]h Parameters}(hj]#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjY#ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMphjU#ubj )}(hhh](j)}(h4``struct amdgpu_device *adev`` amdgpu device object h](j)}(h``struct amdgpu_device *adev``h]j:)}(hjz#h]hstruct amdgpu_device *adev}(hj|#hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjx#ubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMmhjt#ubj$)}(hhh]h)}(hamdgpu device objecth]hamdgpu device object}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#hMmhj#ubah}(h]h ]h"]h$]h&]uh1j#hjt#ubeh}(h]h ]h"]h$]h&]uh1j hj#hMmhjq#ubj)}(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&]uh1j9hj#ubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMnhj#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#hMnhj#ubah}(h]h ]h"]h$]h&]uh1j#hj#ubeh}(h]h ]h"]h$]h&]uh1j hj#hMnhjq#ubj)}(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&]uh1j9hj#ubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMohj#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$hMohj$ubah}(h]h ]h"]h$]h&]uh1j#hj#ubeh}(h]h ]h"]h$]h&]uh1j hj$hMohjq#ubeh}(h]h ]h"]h$]h&]uh1jhjU#ubh)}(h**Description**h]j)}(hj'$h]h Description}(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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMqhjU#ubh)}(h-Creates an :c:type:`amdgpu_bo` buffer object.h](h Creates an }(hj=$hhhNhNubh)}(h:c:type:`amdgpu_bo`h]j:)}(hjG$h]h amdgpu_bo}(hjI$hhhNhNubah}(h]h ](jj4c-typeeh"]h$]h&]uh1j9hjE$ubah}(h]h ]h"]h$]h&]refdocj  refdomainj4reftypetype refexplicitrefwarnjjCj amdgpu_bouh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMphj=$ubh buffer object.}(hj=$hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjd$hMphjU#ubh)}(h **Return**h]j)}(hjq$h]hReturn}(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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMrhjU#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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMshjU#ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^"amdgpu_bo_create_user (C function)c.amdgpu_bo_create_userhNtauh1jQhj hhhNhNubjc)}(hhh](jh)}(hsint amdgpu_bo_create_user (struct amdgpu_device *adev, struct amdgpu_bo_param *bp, struct amdgpu_bo_user **ubo_ptr)h]jn)}(hrint amdgpu_bo_create_user(struct amdgpu_device *adev, struct amdgpu_bo_param *bp, struct amdgpu_bo_user **ubo_ptr)h](jt)}(hinth]hint}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj$hhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMubj)}(h h]h }(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$hhhj$hMubj)}(hamdgpu_bo_create_userh]j)}(hamdgpu_bo_create_userh]hamdgpu_bo_create_user}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj$hhhj$hMubj)}(hY(struct amdgpu_device *adev, struct amdgpu_bo_param *bp, struct amdgpu_bo_user **ubo_ptr)h](j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubj)}(h h]h }(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj%modnameN classnameNjj)}j]j)}jj$sbc.amdgpu_bo_create_userasbuh1hhj$ubj)}(h h]h }(hj1%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubj)}(hjh]h*}(hj?%hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj$ubj)}(hadevh]hadev}(hjL%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj$ubj)}(hstruct amdgpu_bo_param *bph](j)}(hjh]hstruct}(hje%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhja%ubj)}(h h]h }(hjr%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhja%ubh)}(hhh]j)}(hamdgpu_bo_paramh]hamdgpu_bo_param}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj%modnameN classnameNjj)}j]j-%c.amdgpu_bo_create_userasbuh1hhja%ubj)}(h h]h }(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhja%ubj)}(hjh]h*}(hj%hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhja%ubj)}(hbph]hbp}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhja%ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj$ubj)}(hstruct amdgpu_bo_user **ubo_ptrh](j)}(hjh]hstruct}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubj)}(h h]h }(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubh)}(hhh]j)}(hamdgpu_bo_userh]hamdgpu_bo_user}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj%modnameN classnameNjj)}j]j-%c.amdgpu_bo_create_userasbuh1hhj%ubj)}(h h]h }(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubj)}(hjh]h*}(hj&hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj%ubj)}(hjh]h*}(hj,&hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj%ubj)}(hubo_ptrh]hubo_ptr}(hj9&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj$ubeh}(h]h ]h"]h$]h&]jjuh1jhj$hhhj$hMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhj$hhhj$hMubah}(h]j$ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghj$hMhj$hhubj[)}(hhh]h)}(h0create an :c:type:`amdgpu_bo_user` buffer objecth](h create an }(hjc&hhhNhNubh)}(h:c:type:`amdgpu_bo_user`h]j:)}(hjm&h]hamdgpu_bo_user}(hjo&hhhNhNubah}(h]h ](jj4c-typeeh"]h$]h&]uh1j9hjk&ubah}(h]h ]h"]h$]h&]refdocj  refdomainj4reftypetype refexplicitrefwarnjj)}j]j-%c.amdgpu_bo_create_userasbjamdgpu_bo_useruh1hhjhKUhjc&ubh buffer object}(hjc&hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj`&hhubah}(h]h ]h"]h$]h&]uh1jZhj$hhhj$hMubeh}(h]h ](j4functioneh"]h$]h&]jj4jj&jj&jjjuh1jbhhhj hNhNubj)}(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]j)}(hj&h]h Parameters}(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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj&ubj )}(hhh](j)}(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&]uh1j9hj&ubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./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&]uh1j#hj&ubeh}(h]h ]h"]h$]h&]uh1j hj&hMhj&ubj)}(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&]uh1j9hj'ubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./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&]uh1j#hj&ubeh}(h]h ]h"]h$]h&]uh1j hj'hMhj&ubj)}(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&]uh1j9hj<'ubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj8'ubj$)}(hhh]h)}(h$pointer to the buffer object pointerh]h$pointer to the buffer object pointer}(hjW'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjS'hMhjT'ubah}(h]h ]h"]h$]h&]uh1j#hj8'ubeh}(h]h ]h"]h$]h&]uh1j hjS'hMhj&ubeh}(h]h ]h"]h$]h&]uh1jhj&ubh)}(h**Description**h]j)}(hjy'h]h Description}(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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj&ubh)}(h+Create a BO to be used by user application;h]h+Create a BO to be used by user application;}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj&ubh)}(h **Return**h]j)}(hj'h]hReturn}(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:198: ./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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj&ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^ amdgpu_bo_create_vm (C function)c.amdgpu_bo_create_vmhNtauh1jQhj hhhNhNubjc)}(hhh](jh)}(hpint amdgpu_bo_create_vm (struct amdgpu_device *adev, struct amdgpu_bo_param *bp, struct amdgpu_bo_vm **vmbo_ptr)h]jn)}(hoint amdgpu_bo_create_vm(struct amdgpu_device *adev, struct amdgpu_bo_param *bp, struct amdgpu_bo_vm **vmbo_ptr)h](jt)}(hinth]hint}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj'hhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMubj)}(h h]h }(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'hhhj'hMubj)}(hamdgpu_bo_create_vmh]j)}(hamdgpu_bo_create_vmh]hamdgpu_bo_create_vm}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj'hhhj'hMubj)}(hX(struct amdgpu_device *adev, struct amdgpu_bo_param *bp, struct amdgpu_bo_vm **vmbo_ptr)h](j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hj"(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubj)}(h h]h }(hj/(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hj@(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=(ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjB(modnameN classnameNjj)}j]j)}jj(sbc.amdgpu_bo_create_vmasbuh1hhj(ubj)}(h h]h }(hj`(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubj)}(hjh]h*}(hjn(hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj(ubj)}(hadevh]hadev}(hj{(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj(ubj)}(hstruct amdgpu_bo_param *bph](j)}(hjh]hstruct}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubj)}(h h]h }(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubh)}(hhh]j)}(hamdgpu_bo_paramh]hamdgpu_bo_param}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj(modnameN classnameNjj)}j]j\(c.amdgpu_bo_create_vmasbuh1hhj(ubj)}(h h]h }(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubj)}(hjh]h*}(hj(hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj(ubj)}(hbph]hbp}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj(ubj)}(hstruct amdgpu_bo_vm **vmbo_ptrh](j)}(hjh]hstruct}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubj)}(h h]h }(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubh)}(hhh]j)}(h amdgpu_bo_vmh]h amdgpu_bo_vm}(hj")hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj$)modnameN classnameNjj)}j]j\(c.amdgpu_bo_create_vmasbuh1hhj)ubj)}(h h]h }(hj@)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubj)}(hjh]h*}(hjN)hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj)ubj)}(hjh]h*}(hj[)hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj)ubj)}(hvmbo_ptrh]hvmbo_ptr}(hjh)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj(ubeh}(h]h ]h"]h$]h&]jjuh1jhj'hhhj'hMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhj'hhhj'hMubah}(h]j'ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghj'hMhj'hhubj[)}(hhh]h)}(h.create an :c:type:`amdgpu_bo_vm` buffer objecth](h create an }(hj)hhhNhNubh)}(h:c:type:`amdgpu_bo_vm`h]j:)}(hj)h]h amdgpu_bo_vm}(hj)hhhNhNubah}(h]h ](jj4c-typeeh"]h$]h&]uh1j9hj)ubah}(h]h ]h"]h$]h&]refdocj  refdomainj4reftypetype refexplicitrefwarnjj)}j]j\(c.amdgpu_bo_create_vmasbj amdgpu_bo_vmuh1hhjhKUhj)ubh buffer object}(hj)hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj)hhubah}(h]h ]h"]h$]h&]uh1jZhj'hhhj'hMubeh}(h]h ](j4functioneh"]h$]h&]jj4jj)jj)jjjuh1jbhhhj hNhNubj)}(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]j)}(hj)h]h Parameters}(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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj)ubj )}(hhh](j)}(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&]uh1j9hj)ubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./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&]uh1j#hj)ubeh}(h]h ]h"]h$]h&]uh1j hj*hMhj)ubj)}(hK``struct amdgpu_bo_param *bp`` parameters to be used for the buffer object h](j)}(h``struct amdgpu_bo_param *bp``h]j:)}(hj4*h]hstruct amdgpu_bo_param *bp}(hj6*hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj2*ubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./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}(hjM*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjI*hMhjJ*ubah}(h]h ]h"]h$]h&]uh1j#hj.*ubeh}(h]h ]h"]h$]h&]uh1j hjI*hMhj)ubj)}(hH``struct amdgpu_bo_vm **vmbo_ptr`` pointer to the buffer object pointer h](j)}(h"``struct amdgpu_bo_vm **vmbo_ptr``h]j:)}(hjm*h]hstruct amdgpu_bo_vm **vmbo_ptr}(hjo*hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjk*ubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjg*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&]uh1j#hjg*ubeh}(h]h ]h"]h$]h&]uh1j hj*hMhj)ubeh}(h]h ]h"]h$]h&]uh1jhj)ubh)}(h**Description**h]j)}(hj*h]h Description}(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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj)ubh)}(hCreate a BO to be for GPUVM.h]hCreate a BO to be for GPUVM.}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj)ubh)}(h **Return**h]j)}(hj*h]hReturn}(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:198: ./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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj)ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^amdgpu_bo_kmap (C function)c.amdgpu_bo_kmaphNtauh1jQhj hhhNhNubjc)}(hhh](jh)}(h5int amdgpu_bo_kmap (struct amdgpu_bo *bo, void **ptr)h]jn)}(h4int amdgpu_bo_kmap(struct amdgpu_bo *bo, void **ptr)h](jt)}(hinth]hint}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj+hhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM1ubj)}(h h]h }(hj#+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+hhhj"+hM1ubj)}(hamdgpu_bo_kmaph]j)}(hamdgpu_bo_kmaph]hamdgpu_bo_kmap}(hj5+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1+ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj+hhhj"+hM1ubj)}(h"(struct amdgpu_bo *bo, void **ptr)h](j)}(hstruct amdgpu_bo *boh](j)}(hjh]hstruct}(hjQ+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjM+ubj)}(h h]h }(hj^+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjM+ubh)}(hhh]j)}(h amdgpu_boh]h amdgpu_bo}(hjo+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjl+ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjq+modnameN classnameNjj)}j]j)}jj7+sbc.amdgpu_bo_kmapasbuh1hhjM+ubj)}(h h]h }(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjM+ubj)}(hjh]h*}(hj+hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjM+ubj)}(hboh]hbo}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjM+ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjI+ubj)}(h void **ptrh](jt)}(hvoidh]hvoid}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj+ubj)}(h h]h }(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubj)}(hjh]h*}(hj+hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj+ubj)}(hjh]h*}(hj+hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj+ubj)}(hptrh]hptr}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjI+ubeh}(h]h ]h"]h$]h&]jjuh1jhj+hhhj"+hM1ubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhj +hhhj"+hM1ubah}(h]j+ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghj"+hM1hj +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 ](jj4c-typeeh"]h$]h&]uh1j9hj+,ubah}(h]h ]h"]h$]h&]refdocj  refdomainj4reftypetype refexplicitrefwarnjj)}j]j+c.amdgpu_bo_kmapasbj amdgpu_bouh1hhjhKUhj#,ubh buffer object}(hj#,hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM1hj ,hhubah}(h]h ]h"]h$]h&]uh1jZhj +hhhj"+hM1ubeh}(h]h ](j4functioneh"]h$]h&]jj4jjc,jjc,jjjuh1jbhhhj hNhNubj)}(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]j)}(hjm,h]h Parameters}(hjo,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjk,ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM5hjg,ubj )}(hhh](j)}(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&]uh1j9hj,ubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM2hj,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 ](jj4c-typeeh"]h$]h&]uh1j9hj,ubah}(h]h ]h"]h$]h&]refdocj  refdomainj4reftypetype refexplicitrefwarnjjCj amdgpu_bouh1hhj,hM2hj,ubh buffer object to be mapped}(hj,hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj,hM2hj,ubah}(h]h ]h"]h$]h&]uh1j#hj,ubeh}(h]h ]h"]h$]h&]uh1j hj,hM2hj,ubj)}(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&]uh1j9hj,ubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM3hj,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,hM3hj,ubah}(h]h ]h"]h$]h&]uh1j#hj,ubeh}(h]h ]h"]h$]h&]uh1j hj,hM3hj,ubeh}(h]h ]h"]h$]h&]uh1jhjg,ubh)}(h**Description**h]j)}(hj-h]h Description}(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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM5hjg,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.}(hj5-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM4hjg,ubh)}(h **Return**h]j)}(hjF-h]hReturn}(hjH-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjD-ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM7hjg,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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM8hjg,ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^amdgpu_bo_kptr (C function)c.amdgpu_bo_kptrhNtauh1jQhj hhhNhNubjc)}(hhh](jh)}(h,void * amdgpu_bo_kptr (struct amdgpu_bo *bo)h]jn)}(h*void *amdgpu_bo_kptr(struct amdgpu_bo *bo)h](jt)}(hvoidh]hvoid}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj-hhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMZubj)}(h h]h }(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-hhhj-hMZubj)}(hjh]h*}(hj-hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj-hhhj-hMZubj)}(hamdgpu_bo_kptrh]j)}(hamdgpu_bo_kptrh]hamdgpu_bo_kptr}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj-hhhj-hMZubj)}(h(struct amdgpu_bo *bo)h]j)}(hstruct amdgpu_bo *boh](j)}(hjh]hstruct}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-ubj)}(h h]h }(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-ubh)}(hhh]j)}(h amdgpu_boh]h amdgpu_bo}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj-modnameN classnameNjj)}j]j)}jj-sbc.amdgpu_bo_kptrasbuh1hhj-ubj)}(h h]h }(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-ubj)}(hjh]h*}(hj!.hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj-ubj)}(hboh]hbo}(hj..hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj-ubah}(h]h ]h"]h$]h&]jjuh1jhj-hhhj-hMZubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhj-hhhj-hMZubah}(h]j~-ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghj-hMZhj-hhubj[)}(hhh]h)}(h5returns a kernel virtual address of the buffer objecth]h5returns a kernel virtual address of the buffer object}(hjX.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMZhjU.hhubah}(h]h ]h"]h$]h&]uh1jZhj-hhhj-hMZubeh}(h]h ](j4functioneh"]h$]h&]jj4jjp.jjp.jjjuh1jbhhhj hNhNubj)}(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]j)}(hjz.h]h Parameters}(hj|.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjx.ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM^hjt.ubj )}(hhh]j)}(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&]uh1j9hj.ubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM[hj.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 ](jj4c-typeeh"]h$]h&]uh1j9hj.ubah}(h]h ]h"]h$]h&]refdocj  refdomainj4reftypetype refexplicitrefwarnjjCj amdgpu_bouh1hhj.hM[hj.ubh buffer object}(hj.hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj.hM[hj.ubah}(h]h ]h"]h$]h&]uh1j#hj.ubeh}(h]h ]h"]h$]h&]uh1j hj.hM[hj.ubah}(h]h ]h"]h$]h&]uh1jhjt.ubh)}(h**Description**h]j)}(hj.h]h Description}(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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM]hjt.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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM\hjt.ubh)}(h **Return**h]j)}(hj/h]hReturn}(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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM^hjt.ubh)}(h,the virtual address of a buffer object area.h]h,the virtual address of a buffer object area.}(hj0/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM_hjt.ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^amdgpu_bo_kunmap (C function)c.amdgpu_bo_kunmaphNtauh1jQhj hhhNhNubjc)}(hhh](jh)}(h,void amdgpu_bo_kunmap (struct amdgpu_bo *bo)h]jn)}(h+void amdgpu_bo_kunmap(struct amdgpu_bo *bo)h](jt)}(hvoidh]hvoid}(hj_/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj[/hhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMjubj)}(h h]h }(hjn/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[/hhhjm/hMjubj)}(hamdgpu_bo_kunmaph]j)}(hamdgpu_bo_kunmaph]hamdgpu_bo_kunmap}(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|/ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj[/hhhjm/hMjubj)}(h(struct amdgpu_bo *bo)h]j)}(hstruct amdgpu_bo *boh](j)}(hjh]hstruct}(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj/ubj)}(h h]h }(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj/ubh)}(hhh]j)}(h amdgpu_boh]h amdgpu_bo}(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj/ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj/modnameN classnameNjj)}j]j)}jj/sbc.amdgpu_bo_kunmapasbuh1hhj/ubj)}(h h]h }(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj/ubj)}(hjh]h*}(hj/hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj/ubj)}(hboh]hbo}(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj/ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj/ubah}(h]h ]h"]h$]h&]jjuh1jhj[/hhhjm/hMjubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjW/hhhjm/hMjubah}(h]jR/ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjm/hMjhjT/hhubj[)}(hhh]h)}(h*unmap an :c:type:`amdgpu_bo` buffer objecth](h unmap an }(hj0hhhNhNubh)}(h:c:type:`amdgpu_bo`h]j:)}(hj)0h]h amdgpu_bo}(hj+0hhhNhNubah}(h]h ](jj4c-typeeh"]h$]h&]uh1j9hj'0ubah}(h]h ]h"]h$]h&]refdocj  refdomainj4reftypetype refexplicitrefwarnjj)}j]j/c.amdgpu_bo_kunmapasbj amdgpu_bouh1hhjhKUhj0ubh buffer object}(hj0hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMjhj0hhubah}(h]h ]h"]h$]h&]uh1jZhjT/hhhjm/hMjubeh}(h]h ](j4functioneh"]h$]h&]jj4jj_0jj_0jjjuh1jbhhhj hNhNubj)}(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]j)}(hji0h]h Parameters}(hjk0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjg0ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMnhjc0ubj )}(hhh]j)}(hJ``struct amdgpu_bo *bo`` :c:type:`amdgpu_bo` buffer object to be unmapped h](j)}(h``struct amdgpu_bo *bo``h]j:)}(hj0h]hstruct amdgpu_bo *bo}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj0ubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMkhj0ubj$)}(hhh]h)}(h0:c:type:`amdgpu_bo` buffer object to be unmappedh](h)}(h:c:type:`amdgpu_bo`h]j:)}(hj0h]h amdgpu_bo}(hj0hhhNhNubah}(h]h ](jj4c-typeeh"]h$]h&]uh1j9hj0ubah}(h]h ]h"]h$]h&]refdocj  refdomainj4reftypetype refexplicitrefwarnjjCj amdgpu_bouh1hhj0hMkhj0ubh buffer object to be unmapped}(hj0hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj0hMkhj0ubah}(h]h ]h"]h$]h&]uh1j#hj0ubeh}(h]h ]h"]h$]h&]uh1j hj0hMkhj0ubah}(h]h ]h"]h$]h&]uh1jhjc0ubh)}(h**Description**h]j)}(hj0h]h Description}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMmhjc0ubh)}(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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMlhjc0ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^amdgpu_bo_ref (C function)c.amdgpu_bo_refhNtauh1jQhj hhhNhNubjc)}(hhh](jh)}(h7struct amdgpu_bo * amdgpu_bo_ref (struct amdgpu_bo *bo)h]jn)}(h5struct amdgpu_bo *amdgpu_bo_ref(struct amdgpu_bo *bo)h](j)}(hjh]hstruct}(hj'1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#1hhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMvubj)}(h h]h }(hj51hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#1hhhj41hMvubh)}(hhh]j)}(h amdgpu_boh]h amdgpu_bo}(hjF1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjC1ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjH1modnameN classnameNjj)}j]j)}j amdgpu_bo_refsbc.amdgpu_bo_refasbuh1hhj#1hhhj41hMvubj)}(h h]h }(hjg1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#1hhhj41hMvubj)}(hjh]h*}(hju1hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj#1hhhj41hMvubj)}(h amdgpu_bo_refh]j)}(hjd1h]h amdgpu_bo_ref}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj#1hhhj41hMvubj)}(h(struct amdgpu_bo *bo)h]j)}(hstruct amdgpu_bo *boh](j)}(hjh]hstruct}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubj)}(h h]h }(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubh)}(hhh]j)}(h amdgpu_boh]h amdgpu_bo}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj1modnameN classnameNjj)}j]jb1c.amdgpu_bo_refasbuh1hhj1ubj)}(h h]h }(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubj)}(hjh]h*}(hj1hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj1ubj)}(hboh]hbo}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj1ubah}(h]h ]h"]h$]h&]jjuh1jhj#1hhhj41hMvubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhj1hhhj41hMvubah}(h]j1ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghj41hMvhj1hhubj[)}(hhh]h)}(h.reference an :c:type:`amdgpu_bo` buffer objecth](h reference an }(hj"2hhhNhNubh)}(h:c:type:`amdgpu_bo`h]j:)}(hj,2h]h amdgpu_bo}(hj.2hhhNhNubah}(h]h ](jj4c-typeeh"]h$]h&]uh1j9hj*2ubah}(h]h ]h"]h$]h&]refdocj  refdomainj4reftypetype refexplicitrefwarnjj)}j]jb1c.amdgpu_bo_refasbj amdgpu_bouh1hhjhKUhj"2ubh buffer object}(hj"2hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMvhj2hhubah}(h]h ]h"]h$]h&]uh1jZhj1hhhj41hMvubeh}(h]h ](j4functioneh"]h$]h&]jj4jjb2jjb2jjjuh1jbhhhj hNhNubj)}(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]j)}(hjl2h]h Parameters}(hjn2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjj2ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMzhjf2ubj )}(hhh]j)}(h;``struct amdgpu_bo *bo`` :c:type:`amdgpu_bo` buffer object h](j)}(h``struct amdgpu_bo *bo``h]j:)}(hj2h]hstruct amdgpu_bo *bo}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj2ubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMwhj2ubj$)}(hhh]h)}(h!:c:type:`amdgpu_bo` buffer objecth](h)}(h:c:type:`amdgpu_bo`h]j:)}(hj2h]h amdgpu_bo}(hj2hhhNhNubah}(h]h ](jj4c-typeeh"]h$]h&]uh1j9hj2ubah}(h]h ]h"]h$]h&]refdocj  refdomainj4reftypetype refexplicitrefwarnjjCj amdgpu_bouh1hhj2hMwhj2ubh buffer object}(hj2hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj2hMwhj2ubah}(h]h ]h"]h$]h&]uh1j#hj2ubeh}(h]h ]h"]h$]h&]uh1j hj2hMwhj2ubah}(h]h ]h"]h$]h&]uh1jhjf2ubh)}(h**Description**h]j)}(hj2h]h Description}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMyhjf2ubh)}(h5References the contained :c:type:`ttm_buffer_object`.h](hReferences the contained }(hj2hhhNhNubh)}(h:c:type:`ttm_buffer_object`h]j:)}(hj3h]httm_buffer_object}(hj3hhhNhNubah}(h]h ](jj4c-typeeh"]h$]h&]uh1j9hj3ubah}(h]h ]h"]h$]h&]refdocj  refdomainj4reftypetype refexplicitrefwarnjjCjttm_buffer_objectuh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMxhj2ubh.}(hj2hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj"3hMxhjf2ubh)}(h **Return**h]j)}(hj/3h]hReturn}(hj13hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-3ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMzhjf2ubh)}(h>a refcounted pointer to the :c:type:`amdgpu_bo` buffer object.h](ha refcounted pointer to the }(hjE3hhhNhNubh)}(h:c:type:`amdgpu_bo`h]j:)}(hjO3h]h amdgpu_bo}(hjQ3hhhNhNubah}(h]h ](jj4c-typeeh"]h$]h&]uh1j9hjM3ubah}(h]h ]h"]h$]h&]refdocj  refdomainj4reftypetype refexplicitrefwarnjjCj amdgpu_bouh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM{hjE3ubh buffer object.}(hjE3hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjl3hM{hjf2ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^amdgpu_bo_unref (C function)c.amdgpu_bo_unrefhNtauh1jQhj hhhNhNubjc)}(hhh](jh)}(h,void amdgpu_bo_unref (struct amdgpu_bo **bo)h]jn)}(h+void amdgpu_bo_unref(struct amdgpu_bo **bo)h](jt)}(hvoidh]hvoid}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj3hhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMubj)}(h h]h }(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3hhhj3hMubj)}(hamdgpu_bo_unrefh]j)}(hamdgpu_bo_unrefh]hamdgpu_bo_unref}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj3hhhj3hMubj)}(h(struct amdgpu_bo **bo)h]j)}(hstruct amdgpu_bo **boh](j)}(hjh]hstruct}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubj)}(h h]h }(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubh)}(hhh]j)}(h amdgpu_boh]h amdgpu_bo}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj3modnameN classnameNjj)}j]j)}jj3sbc.amdgpu_bo_unrefasbuh1hhj3ubj)}(h h]h }(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubj)}(hjh]h*}(hj 4hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj3ubj)}(hjh]h*}(hj-4hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj3ubj)}(hboh]hbo}(hj:4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj3ubah}(h]h ]h"]h$]h&]jjuh1jhj3hhhj3hMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhj3hhhj3hMubah}(h]j3ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghj3hMhj3hhubj[)}(hhh]h)}(h0unreference an :c:type:`amdgpu_bo` buffer objecth](hunreference an }(hjd4hhhNhNubh)}(h:c:type:`amdgpu_bo`h]j:)}(hjn4h]h amdgpu_bo}(hjp4hhhNhNubah}(h]h ](jj4c-typeeh"]h$]h&]uh1j9hjl4ubah}(h]h ]h"]h$]h&]refdocj  refdomainj4reftypetype refexplicitrefwarnjj)}j]j4c.amdgpu_bo_unrefasbj amdgpu_bouh1hhjhKUhjd4ubh buffer object}(hjd4hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhja4hhubah}(h]h ]h"]h$]h&]uh1jZhj3hhhj3hMubeh}(h]h ](j4functioneh"]h$]h&]jj4jj4jj4jjjuh1jbhhhj hNhNubj)}(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]j)}(hj4h]h Parameters}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj4ubj )}(hhh]j)}(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&]uh1j9hj4ubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj4ubj$)}(hhh]h)}(h!:c:type:`amdgpu_bo` buffer objecth](h)}(h:c:type:`amdgpu_bo`h]j:)}(hj4h]h amdgpu_bo}(hj4hhhNhNubah}(h]h ](jj4c-typeeh"]h$]h&]uh1j9hj4ubah}(h]h ]h"]h$]h&]refdocj  refdomainj4reftypetype refexplicitrefwarnjjCj amdgpu_bouh1hhj4hMhj4ubh buffer object}(hj4hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj4hMhj4ubah}(h]h ]h"]h$]h&]uh1j#hj4ubeh}(h]h ]h"]h$]h&]uh1j hj4hMhj4ubah}(h]h ]h"]h$]h&]uh1jhj4ubh)}(h**Description**h]j)}(hj'5h]h Description}(hj)5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%5ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj4ubh)}(hLUnreferences the contained :c:type:`ttm_buffer_object` and clear the pointerh](hUnreferences the contained }(hj=5hhhNhNubh)}(h:c:type:`ttm_buffer_object`h]j:)}(hjG5h]httm_buffer_object}(hjI5hhhNhNubah}(h]h ](jj4c-typeeh"]h$]h&]uh1j9hjE5ubah}(h]h ]h"]h$]h&]refdocj  refdomainj4reftypetype refexplicitrefwarnjjCjttm_buffer_objectuh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj=5ubh and clear the pointer}(hj=5hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjd5hMhj4ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^amdgpu_bo_pin (C function)c.amdgpu_bo_pinhNtauh1jQhj hhhNhNubjc)}(hhh](jh)}(h4int amdgpu_bo_pin (struct amdgpu_bo *bo, u32 domain)h]jn)}(h3int amdgpu_bo_pin(struct amdgpu_bo *bo, u32 domain)h](jt)}(hinth]hint}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj5hhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMubj)}(h h]h }(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5hhhj5hMubj)}(h amdgpu_bo_pinh]j)}(h amdgpu_bo_pinh]h amdgpu_bo_pin}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj5hhhj5hMubj)}(h"(struct amdgpu_bo *bo, u32 domain)h](j)}(hstruct amdgpu_bo *boh](j)}(hjh]hstruct}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubj)}(h h]h }(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubh)}(hhh]j)}(h amdgpu_boh]h amdgpu_bo}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj5modnameN classnameNjj)}j]j)}jj5sbc.amdgpu_bo_pinasbuh1hhj5ubj)}(h h]h }(hj 6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubj)}(hjh]h*}(hj6hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj5ubj)}(hboh]hbo}(hj%6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj5ubj)}(h u32 domainh](h)}(hhh]j)}(hu32h]hu32}(hjA6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>6ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjC6modnameN classnameNjj)}j]j6c.amdgpu_bo_pinasbuh1hhj:6ubj)}(h h]h }(hj_6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:6ubj)}(hdomainh]hdomain}(hjm6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:6ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj5ubeh}(h]h ]h"]h$]h&]jjuh1jhj5hhhj5hMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhj5hhhj5hMubah}(h]j5ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghj5hMhj5hhubj[)}(hhh]h)}(h(pin an :c:type:`amdgpu_bo` buffer objecth](hpin an }(hj6hhhNhNubh)}(h:c:type:`amdgpu_bo`h]j:)}(hj6h]h amdgpu_bo}(hj6hhhNhNubah}(h]h ](jj4c-typeeh"]h$]h&]uh1j9hj6ubah}(h]h ]h"]h$]h&]refdocj  refdomainj4reftypetype refexplicitrefwarnjj)}j]j6c.amdgpu_bo_pinasbj amdgpu_bouh1hhjhKUhj6ubh buffer object}(hj6hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj6hhubah}(h]h ]h"]h$]h&]uh1jZhj5hhhj5hMubeh}(h]h ](j4functioneh"]h$]h&]jj4jj6jj6jjjuh1jbhhhj hNhNubj)}(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]j)}(hj6h]h Parameters}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj6ubj )}(hhh](j)}(hH``struct amdgpu_bo *bo`` :c:type:`amdgpu_bo` buffer object to be pinned h](j)}(h``struct amdgpu_bo *bo``h]j:)}(hj7h]hstruct amdgpu_bo *bo}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj6ubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./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:)}(hj7h]h amdgpu_bo}(hj!7hhhNhNubah}(h]h ](jj4c-typeeh"]h$]h&]uh1j9hj7ubah}(h]h ]h"]h$]h&]refdocj  refdomainj4reftypetype refexplicitrefwarnjjCj amdgpu_bouh1hhj7hMhj7ubh buffer object to be pinned}(hj7hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj7hMhj7ubah}(h]h ]h"]h$]h&]uh1j#hj6ubeh}(h]h ]h"]h$]h&]uh1j hj7hMhj6ubj)}(h&``u32 domain`` domain to be pinned to h](j)}(h``u32 domain``h]j:)}(hjX7h]h u32 domain}(hjZ7hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjV7ubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjR7ubj$)}(hhh]h)}(hdomain to be pinned toh]hdomain to be pinned to}(hjq7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjm7hMhjn7ubah}(h]h ]h"]h$]h&]uh1j#hjR7ubeh}(h]h ]h"]h$]h&]uh1j hjm7hMhj6ubeh}(h]h ]h"]h$]h&]uh1jhj6ubh)}(h**Description**h]j)}(hj7h]h Description}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./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.}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./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.}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj6ubh)}(h **Return**h]j)}(hj7h]hReturn}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj6ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^amdgpu_bo_unpin (C function)c.amdgpu_bo_unpinhNtauh1jQhj hhhNhNubjc)}(hhh](jh)}(h+void amdgpu_bo_unpin (struct amdgpu_bo *bo)h]jn)}(h*void amdgpu_bo_unpin(struct amdgpu_bo *bo)h](jt)}(hvoidh]hvoid}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj 8hhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMubj)}(h h]h }(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj 8hhhj8hMubj)}(hamdgpu_bo_unpinh]j)}(hamdgpu_bo_unpinh]hamdgpu_bo_unpin}(hj/8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+8ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj 8hhhj8hMubj)}(h(struct amdgpu_bo *bo)h]j)}(hstruct amdgpu_bo *boh](j)}(hjh]hstruct}(hjK8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjG8ubj)}(h h]h }(hjX8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjG8ubh)}(hhh]j)}(h amdgpu_boh]h amdgpu_bo}(hji8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjf8ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjk8modnameN classnameNjj)}j]j)}jj18sbc.amdgpu_bo_unpinasbuh1hhjG8ubj)}(h h]h }(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjG8ubj)}(hjh]h*}(hj8hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjG8ubj)}(hboh]hbo}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjG8ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjC8ubah}(h]h ]h"]h$]h&]jjuh1jhj 8hhhj8hMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhj8hhhj8hMubah}(h]j8ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghj8hMhj8hhubj[)}(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 ](jj4c-typeeh"]h$]h&]uh1j9hj8ubah}(h]h ]h"]h$]h&]refdocj  refdomainj4reftypetype refexplicitrefwarnjj)}j]j8c.amdgpu_bo_unpinasbj amdgpu_bouh1hhjhKUhj8ubh buffer object}(hj8hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj8hhubah}(h]h ]h"]h$]h&]uh1jZhj8hhhj8hMubeh}(h]h ](j4functioneh"]h$]h&]jj4jj9jj9jjjuh1jbhhhj hNhNubj)}(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]j)}(hj9h]h Parameters}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj9ubj )}(hhh]j)}(hJ``struct amdgpu_bo *bo`` :c:type:`amdgpu_bo` buffer object to be unpinned h](j)}(h``struct amdgpu_bo *bo``h]j:)}(hj79h]hstruct amdgpu_bo *bo}(hj99hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj59ubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj19ubj$)}(hhh]h)}(h0:c:type:`amdgpu_bo` buffer object to be unpinnedh](h)}(h:c:type:`amdgpu_bo`h]j:)}(hjV9h]h amdgpu_bo}(hjX9hhhNhNubah}(h]h ](jj4c-typeeh"]h$]h&]uh1j9hjT9ubah}(h]h ]h"]h$]h&]refdocj  refdomainj4reftypetype refexplicitrefwarnjjCj amdgpu_bouh1hhjL9hMhjP9ubh buffer object to be unpinned}(hjP9hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjL9hMhjM9ubah}(h]h ]h"]h$]h&]uh1j#hj19ubeh}(h]h ]h"]h$]h&]uh1j hjL9hMhj.9ubah}(h]h ]h"]h$]h&]uh1jhj9ubh)}(h**Description**h]j)}(hj9h]h Description}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj9ubh)}(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.}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj9ubh)}(h **Return**h]j)}(hj9h]hReturn}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj9ubh)}(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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj9ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^amdgpu_bo_init (C function)c.amdgpu_bo_inithNtauh1jQhj hhhNhNubjc)}(hhh](jh)}(h/int amdgpu_bo_init (struct amdgpu_device *adev)h]jn)}(h.int amdgpu_bo_init(struct amdgpu_device *adev)h](jt)}(hinth]hint}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj9hhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM#ubj)}(h h]h }(hj :hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9hhhj :hM#ubj)}(hamdgpu_bo_inith]j)}(hamdgpu_bo_inith]hamdgpu_bo_init}(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj9hhhj :hM#ubj)}(h(struct amdgpu_device *adev)h]j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hj::hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6:ubj)}(h h]h }(hjG:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6:ubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hjX:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjU:ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjZ:modnameN classnameNjj)}j]j)}jj :sbc.amdgpu_bo_initasbuh1hhj6:ubj)}(h h]h }(hjx:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6:ubj)}(hjh]h*}(hj:hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj6:ubj)}(hadevh]hadev}(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6:ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj2:ubah}(h]h ]h"]h$]h&]jjuh1jhj9hhhj :hM#ubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhj9hhhj :hM#ubah}(h]j9ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghj :hM#hj9hhubj[)}(hhh]h)}(hinitialize memory managerh]hinitialize memory manager}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM#hj:hhubah}(h]h ]h"]h$]h&]uh1jZhj9hhhj :hM#ubeh}(h]h ](j4functioneh"]h$]h&]jj4jj:jj:jjjuh1jbhhhj hNhNubj)}(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]j)}(hj:h]h Parameters}(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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM'hj:ubj )}(hhh]j)}(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&]uh1j9hj:ubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./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&]uh1j#hj:ubeh}(h]h ]h"]h$]h&]uh1j hj;hM$hj:ubah}(h]h ]h"]h$]h&]uh1jhj:ubh)}(h**Description**h]j)}(hj9;h]h Description}(hj;;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7;ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM&hj:ubh)}(hhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj[=ubeh}(h]h ]h"]h$]h&]jjuh1jhj"=hhhj4=hM[ubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhj=hhhj4=hM[ubah}(h]j=ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghj4=hM[hj=hhubj[)}(hhh]h)}(hset tiling flagsh]hset tiling flags}(hj.>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM[hj+>hhubah}(h]h ]h"]h$]h&]uh1jZhj=hhhj4=hM[ubeh}(h]h ](j4functioneh"]h$]h&]jj4jjF>jjF>jjjuh1jbhhhj hNhNubj)}(hX<**Parameters** ``struct amdgpu_bo *bo`` :c:type:`amdgpu_bo` buffer object ``u64 tiling_flags`` new flags **Description** 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. **Return** 0 for success or a negative error code on failure.h](h)}(h**Parameters**h]j)}(hjP>h]h Parameters}(hjR>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjN>ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM_hjJ>ubj )}(hhh](j)}(h;``struct amdgpu_bo *bo`` :c:type:`amdgpu_bo` buffer object h](j)}(h``struct amdgpu_bo *bo``h]j:)}(hjo>h]hstruct amdgpu_bo *bo}(hjq>hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjm>ubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM\hji>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 ](jj4c-typeeh"]h$]h&]uh1j9hj>ubah}(h]h ]h"]h$]h&]refdocj  refdomainj4reftypetype refexplicitrefwarnjjCj amdgpu_bouh1hhj>hM\hj>ubh buffer object}(hj>hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj>hM\hj>ubah}(h]h ]h"]h$]h&]uh1j#hji>ubeh}(h]h ]h"]h$]h&]uh1j hj>hM\hjf>ubj)}(h``u64 tiling_flags`` new flags h](j)}(h``u64 tiling_flags``h]j:)}(hj>h]hu64 tiling_flags}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj>ubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM]hj>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&]uh1j#hj>ubeh}(h]h ]h"]h$]h&]uh1j hj>hM]hjf>ubeh}(h]h ]h"]h$]h&]uh1jhjJ>ubh)}(h**Description**h]j)}(hj?h]h Description}(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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM_hjJ>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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM^hjJ>ubh)}(h **Return**h]j)}(hj)?h]hReturn}(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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMahjJ>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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMbhjJ>ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^'amdgpu_bo_get_tiling_flags (C function)c.amdgpu_bo_get_tiling_flagshNtauh1jQhj hhhNhNubjc)}(hhh](jh)}(hIvoid amdgpu_bo_get_tiling_flags (struct amdgpu_bo *bo, u64 *tiling_flags)h]jn)}(hHvoid amdgpu_bo_get_tiling_flags(struct amdgpu_bo *bo, u64 *tiling_flags)h](jt)}(hvoidh]hvoid}(hjn?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjj?hhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMyubj)}(h h]h }(hj}?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjj?hhhj|?hMyubj)}(hamdgpu_bo_get_tiling_flagsh]j)}(hamdgpu_bo_get_tiling_flagsh]hamdgpu_bo_get_tiling_flags}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjj?hhhj|?hMyubj)}(h)(struct amdgpu_bo *bo, u64 *tiling_flags)h](j)}(hstruct amdgpu_bo *boh](j)}(hjh]hstruct}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?ubj)}(h h]h }(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?ubh)}(hhh]j)}(h amdgpu_boh]h amdgpu_bo}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj?modnameN classnameNjj)}j]j)}jj?sbc.amdgpu_bo_get_tiling_flagsasbuh1hhj?ubj)}(h h]h }(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?ubj)}(hjh]h*}(hj?hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj?ubj)}(hboh]hbo}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj?ubj)}(hu64 *tiling_flagsh](h)}(hhh]j)}(hu64h]hu64}(hj @hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj"@modnameN classnameNjj)}j]j?c.amdgpu_bo_get_tiling_flagsasbuh1hhj@ubj)}(h h]h }(hj>@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubj)}(hjh]h*}(hjL@hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj@ubj)}(h tiling_flagsh]h tiling_flags}(hjY@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj?ubeh}(h]h ]h"]h$]h&]jjuh1jhjj?hhhj|?hMyubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjf?hhhj|?hMyubah}(h]ja?ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghj|?hMyhjc?hhubj[)}(hhh]h)}(hget tiling flagsh]hget tiling flags}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMyhj@hhubah}(h]h ]h"]h$]h&]uh1jZhjc?hhhj|?hMyubeh}(h]h ](j4functioneh"]h$]h&]jj4jj@jj@jjjuh1jbhhhj hNhNubj)}(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]j)}(hj@h]h Parameters}(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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM}hj@ubj )}(hhh](j)}(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&]uh1j9hj@ubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./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}(hj@hhhNhNubah}(h]h ](jj4c-typeeh"]h$]h&]uh1j9hj@ubah}(h]h ]h"]h$]h&]refdocj  refdomainj4reftypetype refexplicitrefwarnjjCj amdgpu_bouh1hhj@hMzhj@ubh buffer object}(hj@hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj@hMzhj@ubah}(h]h ]h"]h$]h&]uh1j#hj@ubeh}(h]h ]h"]h$]h&]uh1j hj@hMzhj@ubj)}(h%``u64 *tiling_flags`` returned flags h](j)}(h``u64 *tiling_flags``h]j:)}(hjAh]hu64 *tiling_flags}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjAubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM{hjAubj$)}(hhh]h)}(hreturned flagsh]hreturned flags}(hj5AhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj1AhM{hj2Aubah}(h]h ]h"]h$]h&]uh1j#hjAubeh}(h]h ]h"]h$]h&]uh1j hj1AhM{hj@ubeh}(h]h ]h"]h$]h&]uh1jhj@ubh)}(h**Description**h]j)}(hjWAh]h Description}(hjYAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUAubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM}hj@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.}(hjmAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM|hj@ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^#amdgpu_bo_set_metadata (C function)c.amdgpu_bo_set_metadatahNtauh1jQhj hhhNhNubjc)}(hhh](jh)}(hdint amdgpu_bo_set_metadata (struct amdgpu_bo *bo, void *metadata, u32 metadata_size, uint64_t flags)h]jn)}(hcint amdgpu_bo_set_metadata(struct amdgpu_bo *bo, void *metadata, u32 metadata_size, uint64_t flags)h](jt)}(hinth]hint}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjAhhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMubj)}(h h]h }(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAhhhjAhMubj)}(hamdgpu_bo_set_metadatah]j)}(hamdgpu_bo_set_metadatah]hamdgpu_bo_set_metadata}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubah}(h]h ](jjeh"]h$]h&]jjuh1jhjAhhhjAhMubj)}(hI(struct amdgpu_bo *bo, void *metadata, u32 metadata_size, uint64_t flags)h](j)}(hstruct amdgpu_bo *boh](j)}(hjh]hstruct}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubj)}(h h]h }(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubh)}(hhh]j)}(h amdgpu_boh]h amdgpu_bo}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjAmodnameN classnameNjj)}j]j)}jjAsbc.amdgpu_bo_set_metadataasbuh1hhjAubj)}(h h]h }(hjBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubj)}(hjh]h*}(hj%BhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjAubj)}(hboh]hbo}(hj2BhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjAubj)}(hvoid *metadatah](jt)}(hvoidh]hvoid}(hjKBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjGBubj)}(h h]h }(hjYBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGBubj)}(hjh]h*}(hjgBhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjGBubj)}(hmetadatah]hmetadata}(hjtBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGBubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjAubj)}(hu32 metadata_sizeh](h)}(hhh]j)}(hu32h]hu32}(hjBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjBmodnameN classnameNjj)}j]jBc.amdgpu_bo_set_metadataasbuh1hhjBubj)}(h h]h }(hjBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjBubj)}(h metadata_sizeh]h metadata_size}(hjBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjBubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjAubj)}(huint64_t flagsh](h)}(hhh]j)}(huint64_th]huint64_t}(hjBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjBmodnameN classnameNjj)}j]jBc.amdgpu_bo_set_metadataasbuh1hhjBubj)}(h h]h }(hjBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjBubj)}(hflagsh]hflags}(hjChhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjBubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjAubeh}(h]h ]h"]h$]h&]jjuh1jhjAhhhjAhMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjAhhhjAhMubah}(h]jAah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjAhMhjAhhubj[)}(hhh]h)}(h set metadatah]h set metadata}(hj.ChhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj+Chhubah}(h]h ]h"]h$]h&]uh1jZhjAhhhjAhMubeh}(h]h ](j4functioneh"]h$]h&]jj4jjFCjjFCjjjuh1jbhhhj hNhNubj)}(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]j)}(hjPCh]h Parameters}(hjRChhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNCubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjJCubj )}(hhh](j)}(h;``struct amdgpu_bo *bo`` :c:type:`amdgpu_bo` buffer object h](j)}(h``struct amdgpu_bo *bo``h]j:)}(hjoCh]hstruct amdgpu_bo *bo}(hjqChhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjmCubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjiCubj$)}(hhh]h)}(h!:c:type:`amdgpu_bo` buffer objecth](h)}(h:c:type:`amdgpu_bo`h]j:)}(hjCh]h amdgpu_bo}(hjChhhNhNubah}(h]h ](jj4c-typeeh"]h$]h&]uh1j9hjCubah}(h]h ]h"]h$]h&]refdocj  refdomainj4reftypetype refexplicitrefwarnjjCj amdgpu_bouh1hhjChMhjCubh buffer object}(hjChhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjChMhjCubah}(h]h ]h"]h$]h&]uh1j#hjiCubeh}(h]h ]h"]h$]h&]uh1j hjChMhjfCubj)}(h ``void *metadata`` new metadata h](j)}(h``void *metadata``h]j:)}(hjCh]hvoid *metadata}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjCubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjCubj$)}(hhh]h)}(h new metadatah]h new metadata}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhjChMhjCubah}(h]h ]h"]h$]h&]uh1j#hjCubeh}(h]h ]h"]h$]h&]uh1j hjChMhjfCubj)}(h/``u32 metadata_size`` size of the new metadata h](j)}(h``u32 metadata_size``h]j:)}(hjDh]hu32 metadata_size}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjCubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjCubj$)}(hhh]h)}(hsize of the new metadatah]hsize of the new metadata}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjDhMhjDubah}(h]h ]h"]h$]h&]uh1j#hjCubeh}(h]h ]h"]h$]h&]uh1j hjDhMhjfCubj)}(h-``uint64_t flags`` flags of the new metadata h](j)}(h``uint64_t flags``h]j:)}(hj9Dh]huint64_t flags}(hj;DhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj7Dubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj3Dubj$)}(hhh]h)}(hflags of the new metadatah]hflags of the new metadata}(hjRDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjNDhMhjODubah}(h]h ]h"]h$]h&]uh1j#hj3Dubeh}(h]h ]h"]h$]h&]uh1j hjNDhMhjfCubeh}(h]h ]h"]h$]h&]uh1jhjJCubh)}(h**Description**h]j)}(hjtDh]h Description}(hjvDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjrDubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjJCubh)}(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.}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjJCubh)}(h **Return**h]j)}(hjDh]hReturn}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjJCubh)}(h20 for success or a negative error code on failure.h]h20 for success or a negative error code on failure.}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjJCubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^#amdgpu_bo_get_metadata (C function)c.amdgpu_bo_get_metadatahNtauh1jQhj hhhNhNubjc)}(hhh](jh)}(h}int amdgpu_bo_get_metadata (struct amdgpu_bo *bo, void *buffer, size_t buffer_size, uint32_t *metadata_size, uint64_t *flags)h]jn)}(h|int amdgpu_bo_get_metadata(struct amdgpu_bo *bo, void *buffer, size_t buffer_size, uint32_t *metadata_size, uint64_t *flags)h](jt)}(hinth]hint}(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjDhhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMubj)}(h h]h }(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDhhhjDhMubj)}(hamdgpu_bo_get_metadatah]j)}(hamdgpu_bo_get_metadatah]hamdgpu_bo_get_metadata}(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDubah}(h]h ](jjeh"]h$]h&]jjuh1jhjDhhhjDhMubj)}(hb(struct amdgpu_bo *bo, void *buffer, size_t buffer_size, uint32_t *metadata_size, uint64_t *flags)h](j)}(hstruct amdgpu_bo *boh](j)}(hjh]hstruct}(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubj)}(h h]h }(hj*EhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubh)}(hhh]j)}(h amdgpu_boh]h amdgpu_bo}(hj;EhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8Eubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj=EmodnameN classnameNjj)}j]j)}jjEsbc.amdgpu_bo_get_metadataasbuh1hhjEubj)}(h h]h }(hj[EhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubj)}(hjh]h*}(hjiEhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjEubj)}(hboh]hbo}(hjvEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjEubj)}(h void *bufferh](jt)}(hvoidh]hvoid}(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjEubj)}(h h]h }(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubj)}(hjh]h*}(hjEhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjEubj)}(hbufferh]hbuffer}(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjEubj)}(hsize_t buffer_sizeh](h)}(hhh]j)}(hsize_th]hsize_t}(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjEmodnameN classnameNjj)}j]jWEc.amdgpu_bo_get_metadataasbuh1hhjEubj)}(h h]h }(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubj)}(h buffer_sizeh]h buffer_size}(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjEubj)}(huint32_t *metadata_sizeh](h)}(hhh]j)}(huint32_th]huint32_t}(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjFmodnameN classnameNjj)}j]jWEc.amdgpu_bo_get_metadataasbuh1hhjFubj)}(h h]h }(hj:FhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjFubj)}(hjh]h*}(hjHFhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjFubj)}(h metadata_sizeh]h metadata_size}(hjUFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjFubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjEubj)}(huint64_t *flagsh](h)}(hhh]j)}(huint64_th]huint64_t}(hjqFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjnFubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjsFmodnameN classnameNjj)}j]jWEc.amdgpu_bo_get_metadataasbuh1hhjjFubj)}(h h]h }(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjjFubj)}(hjh]h*}(hjFhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjjFubj)}(hflagsh]hflags}(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjjFubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjEubeh}(h]h ]h"]h$]h&]jjuh1jhjDhhhjDhMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjDhhhjDhMubah}(h]jDah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjDhMhjDhhubj[)}(hhh]h)}(h get metadatah]h get metadata}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjFhhubah}(h]h ]h"]h$]h&]uh1jZhjDhhhjDhMubeh}(h]h ](j4functioneh"]h$]h&]jj4jjFjjFjjjuh1jbhhhj hNhNubj)}(hX**Parameters** ``struct amdgpu_bo *bo`` :c:type:`amdgpu_bo` buffer object ``void *buffer`` returned metadata ``size_t buffer_size`` size of the buffer ``uint32_t *metadata_size`` size of the returned metadata ``uint64_t *flags`` flags of the returned metadata **Description** Gets buffer object's metadata, its size and flags. buffer_size shall not be less than metadata_size. Used via GEM ioctl. **Return** 0 for success or a negative error code on failure.h](h)}(h**Parameters**h]j)}(hjFh]h Parameters}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjFubj )}(hhh](j)}(h;``struct amdgpu_bo *bo`` :c:type:`amdgpu_bo` buffer object h](j)}(h``struct amdgpu_bo *bo``h]j:)}(hjGh]hstruct amdgpu_bo *bo}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjGubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjGubj$)}(hhh]h)}(h!:c:type:`amdgpu_bo` buffer objecth](h)}(h:c:type:`amdgpu_bo`h]j:)}(hj4Gh]h amdgpu_bo}(hj6GhhhNhNubah}(h]h ](jj4c-typeeh"]h$]h&]uh1j9hj2Gubah}(h]h ]h"]h$]h&]refdocj  refdomainj4reftypetype refexplicitrefwarnjjCj amdgpu_bouh1hhj*GhMhj.Gubh buffer object}(hj.GhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj*GhMhj+Gubah}(h]h ]h"]h$]h&]uh1j#hjGubeh}(h]h ]h"]h$]h&]uh1j hj*GhMhj Gubj)}(h#``void *buffer`` returned metadata h](j)}(h``void *buffer``h]j:)}(hjmGh]h void *buffer}(hjoGhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjkGubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjgGubj$)}(hhh]h)}(hreturned metadatah]hreturned metadata}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjGhMhjGubah}(h]h ]h"]h$]h&]uh1j#hjgGubeh}(h]h ]h"]h$]h&]uh1j hjGhMhj Gubj)}(h*``size_t buffer_size`` size of the buffer h](j)}(h``size_t buffer_size``h]j:)}(hjGh]hsize_t buffer_size}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjGubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjGubj$)}(hhh]h)}(hsize of the bufferh]hsize of the buffer}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjGhMhjGubah}(h]h ]h"]h$]h&]uh1j#hjGubeh}(h]h ]h"]h$]h&]uh1j hjGhMhj Gubj)}(h:``uint32_t *metadata_size`` size of the returned metadata h](j)}(h``uint32_t *metadata_size``h]j:)}(hjGh]huint32_t *metadata_size}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjGubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjGubj$)}(hhh]h)}(hsize of the returned metadatah]hsize of the returned metadata}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjGhMhjGubah}(h]h ]h"]h$]h&]uh1j#hjGubeh}(h]h ]h"]h$]h&]uh1j hjGhMhj Gubj)}(h3``uint64_t *flags`` flags of the returned metadata h](j)}(h``uint64_t *flags``h]j:)}(hjHh]huint64_t *flags}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjHubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjHubj$)}(hhh]h)}(hflags of the returned metadatah]hflags of the returned metadata}(hj1HhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj-HhMhj.Hubah}(h]h ]h"]h$]h&]uh1j#hjHubeh}(h]h ]h"]h$]h&]uh1j hj-HhMhj Gubeh}(h]h ]h"]h$]h&]uh1jhjFubh)}(h**Description**h]j)}(hjSHh]h Description}(hjUHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQHubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjFubh)}(hxGets buffer object's metadata, its size and flags. buffer_size shall not be less than metadata_size. Used via GEM ioctl.h]hzGets buffer object’s metadata, its size and flags. buffer_size shall not be less than metadata_size. Used via GEM ioctl.}(hjiHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjFubh)}(h **Return**h]j)}(hjzHh]hReturn}(hj|HhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjxHubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjFubh)}(h20 for success or a negative error code on failure.h]h20 for success or a negative error code on failure.}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjFubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^"amdgpu_bo_move_notify (C function)c.amdgpu_bo_move_notifyhNtauh1jQhj hhhNhNubjc)}(hhh](jh)}(hcvoid amdgpu_bo_move_notify (struct ttm_buffer_object *bo, bool evict, struct ttm_resource *new_mem)h]jn)}(hbvoid amdgpu_bo_move_notify(struct ttm_buffer_object *bo, bool evict, struct ttm_resource *new_mem)h](jt)}(hvoidh]hvoid}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjHhhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMubj)}(h h]h }(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjHhhhjHhMubj)}(hamdgpu_bo_move_notifyh]j)}(hamdgpu_bo_move_notifyh]hamdgpu_bo_move_notify}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjHubah}(h]h ](jjeh"]h$]h&]jjuh1jhjHhhhjHhMubj)}(hH(struct ttm_buffer_object *bo, bool evict, struct ttm_resource *new_mem)h](j)}(hstruct ttm_buffer_object *boh](j)}(hjh]hstruct}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjHubj)}(h h]h }(hj IhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjHubh)}(hhh]j)}(httm_buffer_objecth]httm_buffer_object}(hjIhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjImodnameN classnameNjj)}j]j)}jjHsbc.amdgpu_bo_move_notifyasbuh1hhjHubj)}(h h]h }(hj:IhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjHubj)}(hjh]h*}(hjHIhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjHubj)}(hboh]hbo}(hjUIhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjHubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjHubj)}(h bool evicth](jt)}(hjwh]hbool}(hjnIhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjjIubj)}(h h]h }(hj{IhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjjIubj)}(hevicth]hevict}(hjIhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjjIubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjHubj)}(hstruct ttm_resource *new_memh](j)}(hjh]hstruct}(hjIhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjIubj)}(h h]h }(hjIhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjIubh)}(hhh]j)}(h ttm_resourceh]h ttm_resource}(hjIhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjImodnameN classnameNjj)}j]j6Ic.amdgpu_bo_move_notifyasbuh1hhjIubj)}(h h]h }(hjIhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjIubj)}(hjh]h*}(hjIhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjIubj)}(hnew_memh]hnew_mem}(hjIhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjIubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjHubeh}(h]h ]h"]h$]h&]jjuh1jhjHhhhjHhMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjHhhhjHhMubah}(h]jHah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjHhMhjHhhubj[)}(hhh]h)}(h notification about a memory moveh]h notification about a memory move}(hj#JhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj Jhhubah}(h]h ]h"]h$]h&]uh1jZhjHhhhjHhMubeh}(h]h ](j4functioneh"]h$]h&]jj4jj;Jjj;Jjjjuh1jbhhhj hNhNubj)}(hX**Parameters** ``struct ttm_buffer_object *bo`` pointer to a buffer object ``bool evict`` if this move is evicting the buffer from the graphics address space ``struct ttm_resource *new_mem`` new resource for backing the BO **Description** Marks the corresponding :c:type:`amdgpu_bo` buffer object as invalid, also performs bookkeeping. TTM driver callback which is called when ttm moves a buffer.h](h)}(h**Parameters**h]j)}(hjEJh]h Parameters}(hjGJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCJubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj?Jubj )}(hhh](j)}(h<``struct ttm_buffer_object *bo`` pointer to a buffer object h](j)}(h ``struct ttm_buffer_object *bo``h]j:)}(hjdJh]hstruct ttm_buffer_object *bo}(hjfJhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjbJubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj^Jubj$)}(hhh]h)}(hpointer to a buffer objecth]hpointer to a buffer object}(hj}JhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjyJhMhjzJubah}(h]h ]h"]h$]h&]uh1j#hj^Jubeh}(h]h ]h"]h$]h&]uh1j hjyJhMhj[Jubj)}(hS``bool evict`` if this move is evicting the buffer from the graphics address space h](j)}(h``bool evict``h]j:)}(hjJh]h bool evict}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjJubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjJubj$)}(hhh]h)}(hCif this move is evicting the buffer from the graphics address spaceh]hCif this move is evicting the buffer from the graphics address space}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJhMhjJubah}(h]h ]h"]h$]h&]uh1j#hjJubeh}(h]h ]h"]h$]h&]uh1j hjJhMhj[Jubj)}(hA``struct ttm_resource *new_mem`` new resource for backing the BO h](j)}(h ``struct ttm_resource *new_mem``h]j:)}(hjJh]hstruct ttm_resource *new_mem}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjJubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjJubj$)}(hhh]h)}(hnew resource for backing the BOh]hnew resource for backing the BO}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJhMhjJubah}(h]h ]h"]h$]h&]uh1j#hjJubeh}(h]h ]h"]h$]h&]uh1j hjJhMhj[Jubeh}(h]h ]h"]h$]h&]uh1jhj?Jubh)}(h**Description**h]j)}(hjKh]h Description}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj?Jubh)}(hMarks the corresponding :c:type:`amdgpu_bo` buffer object as invalid, also performs bookkeeping. TTM driver callback which is called when ttm moves a buffer.h](hMarks the corresponding }(hj'KhhhNhNubh)}(h:c:type:`amdgpu_bo`h]j:)}(hj1Kh]h amdgpu_bo}(hj3KhhhNhNubah}(h]h ](jj4c-typeeh"]h$]h&]uh1j9hj/Kubah}(h]h ]h"]h$]h&]refdocj  refdomainj4reftypetype refexplicitrefwarnjjCj amdgpu_bouh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj'Kubhr buffer object as invalid, also performs bookkeeping. TTM driver callback which is called when ttm moves a buffer.}(hj'KhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjNKhMhj?Jubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^%amdgpu_bo_release_notify (C function)c.amdgpu_bo_release_notifyhNtauh1jQhj hhhNhNubjc)}(hhh](jh)}(hOhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjNubj)}(hboh]hbo}(hjKOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjNubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjNubj)}(hstruct dma_fence *fenceh](j)}(hjh]hstruct}(hjdOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`Oubj)}(h h]h }(hjqOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`Oubh)}(hhh]j)}(h dma_fenceh]h dma_fence}(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjOubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjOmodnameN classnameNjj)}j]j,Oc.amdgpu_bo_fenceasbuh1hhj`Oubj)}(h h]h }(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`Oubj)}(hjh]h*}(hjOhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj`Oubj)}(hfenceh]hfence}(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`Oubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjNubj)}(h bool sharedh](jt)}(hjwh]hbool}(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjOubj)}(h h]h }(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjOubj)}(hsharedh]hshared}(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjOubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjNubeh}(h]h ]h"]h$]h&]jjuh1jhjNhhhjNhM{ubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjNhhhjNhM{ubah}(h]jNah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjNhM{hjNhhubj[)}(hhh]h)}(hadd fence to buffer objecth]hadd fence to buffer object}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM{hjPhhubah}(h]h ]h"]h$]h&]uh1jZhjNhhhjNhM{ubeh}(h]h ](j4functioneh"]h$]h&]jj4jj1Pjj1Pjjjuh1jbhhhj hNhNubj)}(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]j)}(hj;Ph]h Parameters}(hj=PhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9Pubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj5Pubj )}(hhh](j)}(h3``struct amdgpu_bo *bo`` buffer object in question h](j)}(h``struct amdgpu_bo *bo``h]j:)}(hjZPh]hstruct amdgpu_bo *bo}(hj\PhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjXPubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM}hjTPubj$)}(hhh]h)}(hbuffer object in questionh]hbuffer object in question}(hjsPhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjoPhM}hjpPubah}(h]h ]h"]h$]h&]uh1j#hjTPubeh}(h]h ]h"]h$]h&]uh1j hjoPhM}hjQPubj)}(h)``struct dma_fence *fence`` fence to add h](j)}(h``struct dma_fence *fence``h]j:)}(hjPh]hstruct dma_fence *fence}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjPubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM~hjPubj$)}(hhh]h)}(h fence to addh]h fence to add}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjPhM~hjPubah}(h]h ]h"]h$]h&]uh1j#hjPubeh}(h]h ]h"]h$]h&]uh1j hjPhM~hjQPubj)}(h4``bool shared`` true if fence should be added sharedh](j)}(h``bool shared``h]j:)}(hjPh]h bool shared}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjPubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjPubj$)}(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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjPubah}(h]h ]h"]h$]h&]uh1j#hjPubeh}(h]h ]h"]h$]h&]uh1j hjPhMhjQPubeh}(h]h ]h"]h$]h&]uh1jhj5Pubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^%amdgpu_bo_sync_wait_resv (C function)c.amdgpu_bo_sync_wait_resvhNtauh1jQhj hhhNhNubjc)}(hhh](jh)}(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]jn)}(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](jt)}(hinth]hint}(hj&QhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj"Qhhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMubj)}(h h]h }(hj5QhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"Qhhhj4QhMubj)}(hamdgpu_bo_sync_wait_resvh]j)}(hamdgpu_bo_sync_wait_resvh]hamdgpu_bo_sync_wait_resv}(hjGQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjCQubah}(h]h ](jjeh"]h$]h&]jjuh1jhj"Qhhhj4QhMubj)}(hl(struct amdgpu_device *adev, struct dma_resv *resv, enum amdgpu_sync_mode sync_mode, void *owner, bool intr)h](j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hjcQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_Qubj)}(h h]h }(hjpQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_Qubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~Qubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjQmodnameN classnameNjj)}j]j)}jjIQsbc.amdgpu_bo_sync_wait_resvasbuh1hhj_Qubj)}(h h]h }(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_Qubj)}(hjh]h*}(hjQhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj_Qubj)}(hadevh]hadev}(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_Qubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj[Qubj)}(hstruct dma_resv *resvh](j)}(hjh]hstruct}(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQubj)}(h h]h }(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQubh)}(hhh]j)}(hdma_resvh]hdma_resv}(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjQmodnameN classnameNjj)}j]jQc.amdgpu_bo_sync_wait_resvasbuh1hhjQubj)}(h h]h }(hjRhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQubj)}(hjh]h*}(hjRhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjQubj)}(hresvh]hresv}(hj,RhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj[Qubj)}(henum amdgpu_sync_mode sync_modeh](j)}(henumh]henum}(hjERhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjARubj)}(h h]h }(hjSRhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjARubh)}(hhh]j)}(hamdgpu_sync_modeh]hamdgpu_sync_mode}(hjdRhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjaRubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjfRmodnameN classnameNjj)}j]jQc.amdgpu_bo_sync_wait_resvasbuh1hhjARubj)}(h h]h }(hjRhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjARubj)}(h sync_modeh]h sync_mode}(hjRhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjARubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj[Qubj)}(h void *ownerh](jt)}(hvoidh]hvoid}(hjRhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjRubj)}(h h]h }(hjRhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjRubj)}(hjh]h*}(hjRhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjRubj)}(hownerh]howner}(hjRhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjRubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj[Qubj)}(h bool intrh](jt)}(hjwh]hbool}(hjRhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjRubj)}(h h]h }(hjRhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjRubj)}(hintrh]hintr}(hjShhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjRubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj[Qubeh}(h]h ]h"]h$]h&]jjuh1jhj"Qhhhj4QhMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjQhhhj4QhMubah}(h]jQah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghj4QhMhjQhhubj[)}(hhh]h)}(hWait for BO reservation fencesh]hWait for BO reservation fences}(hj0ShhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj-Shhubah}(h]h ]h"]h$]h&]uh1jZhjQhhhj4QhMubeh}(h]h ](j4functioneh"]h$]h&]jj4jjHSjjHSjjjuh1jbhhhj hNhNubj)}(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]j)}(hjRSh]h Parameters}(hjTShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPSubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjLSubj )}(hhh](j)}(h5``struct amdgpu_device *adev`` amdgpu device pointer h](j)}(h``struct amdgpu_device *adev``h]j:)}(hjqSh]hstruct amdgpu_device *adev}(hjsShhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjoSubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjkSubj$)}(hhh]h)}(hamdgpu device pointerh]hamdgpu device pointer}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhjShMhjSubah}(h]h ]h"]h$]h&]uh1j#hjkSubeh}(h]h ]h"]h$]h&]uh1j hjShMhjhSubj)}(h8``struct dma_resv *resv`` reservation object to sync to h](j)}(h``struct dma_resv *resv``h]j:)}(hjSh]hstruct dma_resv *resv}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjSubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjSubj$)}(hhh]h)}(hreservation object to sync toh]hreservation object to sync to}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhjShMhjSubah}(h]h ]h"]h$]h&]uh1j#hjSubeh}(h]h ]h"]h$]h&]uh1j hjShMhjhSubj)}(h9``enum amdgpu_sync_mode sync_mode`` synchronization mode h](j)}(h#``enum amdgpu_sync_mode sync_mode``h]j:)}(hjSh]henum amdgpu_sync_mode sync_mode}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjSubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjSubj$)}(hhh]h)}(hsynchronization modeh]hsynchronization mode}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhjShMhjSubah}(h]h ]h"]h$]h&]uh1j#hjSubeh}(h]h ]h"]h$]h&]uh1j hjShMhjhSubj)}(h``void *owner`` fence owner h](j)}(h``void *owner``h]j:)}(hjTh]h void *owner}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjTubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjTubj$)}(hhh]h)}(h fence ownerh]h fence owner}(hj5ThhhNhNubah}(h]h ]h"]h$]h&]uh1hhj1ThMhj2Tubah}(h]h ]h"]h$]h&]uh1j#hjTubeh}(h]h ]h"]h$]h&]uh1j hj1ThMhjhSubj)}(h0``bool intr`` Whether the wait is interruptible h](j)}(h ``bool intr``h]j:)}(hjUTh]h bool intr}(hjWThhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjSTubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjOTubj$)}(hhh]h)}(h!Whether the wait is interruptibleh]h!Whether the wait is interruptible}(hjnThhhNhNubah}(h]h ]h"]h$]h&]uh1hhjjThMhjkTubah}(h]h ]h"]h$]h&]uh1j#hjOTubeh}(h]h ]h"]h$]h&]uh1j hjjThMhjhSubeh}(h]h ]h"]h$]h&]uh1jhjLSubh)}(h**Description**h]j)}(hjTh]h Description}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjLSubh)}(hLExtract the fences from the reservation object and waits for them to finish.h]hLExtract the fences from the reservation object and waits for them to finish.}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjLSubh)}(h **Return**h]j)}(hjTh]hReturn}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjLSubh)}(h0 on success, errno otherwise.h]h0 on success, errno otherwise.}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjLSubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^ amdgpu_bo_sync_wait (C function)c.amdgpu_bo_sync_waithNtauh1jQhj hhhNhNubjc)}(hhh](jh)}(hFint amdgpu_bo_sync_wait (struct amdgpu_bo *bo, void *owner, bool intr)h]jn)}(hEint amdgpu_bo_sync_wait(struct amdgpu_bo *bo, void *owner, bool intr)h](jt)}(hinth]hint}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjThhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMubj)}(h h]h }(hj UhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjThhhj UhMubj)}(hamdgpu_bo_sync_waith]j)}(hamdgpu_bo_sync_waith]hamdgpu_bo_sync_wait}(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjUubah}(h]h ](jjeh"]h$]h&]jjuh1jhjThhhj UhMubj)}(h.(struct amdgpu_bo *bo, void *owner, bool intr)h](j)}(hstruct amdgpu_bo *boh](j)}(hjh]hstruct}(hj9UhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5Uubj)}(h h]h }(hjFUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5Uubh)}(hhh]j)}(h amdgpu_boh]h amdgpu_bo}(hjWUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjTUubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjYUmodnameN classnameNjj)}j]j)}jjUsbc.amdgpu_bo_sync_waitasbuh1hhj5Uubj)}(h h]h }(hjwUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5Uubj)}(hjh]h*}(hjUhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj5Uubj)}(hboh]hbo}(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5Uubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj1Uubj)}(h void *ownerh](jt)}(hvoidh]hvoid}(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjUubj)}(h h]h }(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjUubj)}(hjh]h*}(hjUhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjUubj)}(hownerh]howner}(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjUubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj1Uubj)}(h bool intrh](jt)}(hjwh]hbool}(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjUubj)}(h h]h }(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjUubj)}(hintrh]hintr}(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjUubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj1Uubeh}(h]h ]h"]h$]h&]jjuh1jhjThhhj UhMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjThhhj UhMubah}(h]jTah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghj UhMhjThhubj[)}(hhh]h)}(h$Wrapper for amdgpu_bo_sync_wait_resvh]h$Wrapper for amdgpu_bo_sync_wait_resv}(hj2VhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj/Vhhubah}(h]h ]h"]h$]h&]uh1jZhjThhhj UhMubeh}(h]h ](j4functioneh"]h$]h&]jj4jjJVjjJVjjjuh1jbhhhj hNhNubj)}(h**Parameters** ``struct amdgpu_bo *bo`` buffer object to wait for ``void *owner`` fence owner ``bool intr`` Whether the wait is interruptible **Description** Wrapper to wait for fences in a BO. **Return** 0 on success, errno otherwise.h](h)}(h**Parameters**h]j)}(hjTVh]h Parameters}(hjVVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRVubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjNVubj )}(hhh](j)}(h3``struct amdgpu_bo *bo`` buffer object to wait for h](j)}(h``struct amdgpu_bo *bo``h]j:)}(hjsVh]hstruct amdgpu_bo *bo}(hjuVhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjqVubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjmVubj$)}(hhh]h)}(hbuffer object to wait forh]hbuffer object to wait for}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjVhMhjVubah}(h]h ]h"]h$]h&]uh1j#hjmVubeh}(h]h ]h"]h$]h&]uh1j hjVhMhjjVubj)}(h``void *owner`` fence owner h](j)}(h``void *owner``h]j:)}(hjVh]h void *owner}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjVubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjVubj$)}(hhh]h)}(h fence ownerh]h fence owner}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjVhMhjVubah}(h]h ]h"]h$]h&]uh1j#hjVubeh}(h]h ]h"]h$]h&]uh1j hjVhMhjjVubj)}(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&]uh1j9hjVubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./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&]uh1j#hjVubeh}(h]h ]h"]h$]h&]uh1j hjVhMhjjVubeh}(h]h ]h"]h$]h&]uh1jhjNVubh)}(h**Description**h]j)}(hj Wh]h Description}(hj"WhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjNVubh)}(h#Wrapper to wait for fences in a BO.h]h#Wrapper to wait for fences in a BO.}(hj6WhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjNVubh)}(h **Return**h]j)}(hjGWh]hReturn}(hjIWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEWubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjNVubh)}(h0 on success, errno otherwise.h]h0 on success, errno otherwise.}(hj]WhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjNVubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^!amdgpu_bo_gpu_offset (C function)c.amdgpu_bo_gpu_offsethNtauh1jQhj hhhNhNubjc)}(hhh](jh)}(h/u64 amdgpu_bo_gpu_offset (struct amdgpu_bo *bo)h]jn)}(h.u64 amdgpu_bo_gpu_offset(struct amdgpu_bo *bo)h](h)}(hhh]j)}(hu64h]hu64}(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjWmodnameN classnameNjj)}j]j)}jamdgpu_bo_gpu_offsetsbc.amdgpu_bo_gpu_offsetasbuh1hhjWhhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMubj)}(h h]h }(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWhhhjWhMubj)}(hamdgpu_bo_gpu_offseth]j)}(hjWh]hamdgpu_bo_gpu_offset}(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWubah}(h]h ](jjeh"]h$]h&]jjuh1jhjWhhhjWhMubj)}(h(struct amdgpu_bo *bo)h]j)}(hstruct amdgpu_bo *boh](j)}(hjh]hstruct}(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWubj)}(h h]h }(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWubh)}(hhh]j)}(h amdgpu_boh]h amdgpu_bo}(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjWmodnameN classnameNjj)}j]jWc.amdgpu_bo_gpu_offsetasbuh1hhjWubj)}(h h]h }(hjXhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWubj)}(hjh]h*}(hj(XhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjWubj)}(hboh]hbo}(hj5XhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjWubah}(h]h ]h"]h$]h&]jjuh1jhjWhhhjWhMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjWhhhjWhMubah}(h]jWah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjWhMhjWhhubj[)}(hhh]h)}(hreturn GPU offset of boh]hreturn GPU offset of bo}(hj_XhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj\Xhhubah}(h]h ]h"]h$]h&]uh1jZhjWhhhjWhMubeh}(h]h ](j4functioneh"]h$]h&]jj4jjwXjjwXjjjuh1jbhhhj hNhNubj)}(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]j)}(hjXh]h Parameters}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj{Xubj )}(hhh]j)}(hE``struct amdgpu_bo *bo`` amdgpu object for which we query the offset h](j)}(h``struct amdgpu_bo *bo``h]j:)}(hjXh]hstruct amdgpu_bo *bo}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjXubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjXubj$)}(hhh]h)}(h+amdgpu object for which we query the offseth]h+amdgpu object for which we query the offset}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjXhMhjXubah}(h]h ]h"]h$]h&]uh1j#hjXubeh}(h]h ]h"]h$]h&]uh1j hjXhMhjXubah}(h]h ]h"]h$]h&]uh1jhj{Xubh)}(h**Note**h]j)}(hjXh]hNote}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj{Xubh)}(h **Return**h]j)}(hjYh]hReturn}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjYubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj{Xubh)}(h!current GPU offset of the object.h]h!current GPU offset of the object.}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj{Xubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^#amdgpu_bo_fb_aper_addr (C function)c.amdgpu_bo_fb_aper_addrhNtauh1jQhj hhhNhNubjc)}(hhh](jh)}(h1u64 amdgpu_bo_fb_aper_addr (struct amdgpu_bo *bo)h]jn)}(h0u64 amdgpu_bo_fb_aper_addr(struct amdgpu_bo *bo)h](h)}(hhh]j)}(hu64h]hu64}(hjJYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGYubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjLYmodnameN classnameNjj)}j]j)}jamdgpu_bo_fb_aper_addrsbc.amdgpu_bo_fb_aper_addrasbuh1hhjCYhhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMubj)}(h h]h }(hjlYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjCYhhhjkYhMubj)}(hamdgpu_bo_fb_aper_addrh]j)}(hjhYh]hamdgpu_bo_fb_aper_addr}(hj~YhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjzYubah}(h]h ](jjeh"]h$]h&]jjuh1jhjCYhhhjkYhMubj)}(h(struct amdgpu_bo *bo)h]j)}(hstruct amdgpu_bo *boh](j)}(hjh]hstruct}(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubj)}(h h]h }(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubh)}(hhh]j)}(h amdgpu_boh]h amdgpu_bo}(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjYmodnameN classnameNjj)}j]jfYc.amdgpu_bo_fb_aper_addrasbuh1hhjYubj)}(h h]h }(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubj)}(hjh]h*}(hjYhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjYubj)}(hboh]hbo}(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjYubah}(h]h ]h"]h$]h&]jjuh1jhjCYhhhjkYhMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhj?YhhhjkYhMubah}(h]j:Yah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjkYhMhjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:Zubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj6Zubj )}(hhh]j)}(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}(hj]ZhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjYZubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhjUZubj$)}(hhh]h)}(h7amdgpu VRAM buffer object for which we query the offseth]h7amdgpu VRAM buffer object for which we query the offset}(hjtZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjpZhMhjqZubah}(h]h ]h"]h$]h&]uh1j#hjUZubeh}(h]h ]h"]h$]h&]uh1j hjpZhMhjRZubah}(h]h ]h"]h$]h&]uh1jhj6Zubh)}(h **Return**h]j)}(hjZh]hReturn}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj6Zubh)}(h-current FB aperture GPU offset of the object.h]h-current FB aperture GPU offset of the object.}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj6Zubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^*amdgpu_bo_gpu_offset_no_check (C function)c.amdgpu_bo_gpu_offset_no_checkhNtauh1jQhj hhhNhNubjc)}(hhh](jh)}(h8u64 amdgpu_bo_gpu_offset_no_check (struct amdgpu_bo *bo)h]jn)}(h7u64 amdgpu_bo_gpu_offset_no_check(struct amdgpu_bo *bo)h](h)}(hhh]j)}(hu64h]hu64}(hjZhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZubah}(h]h ]h"]h$]h&] refdomainj4reftypej 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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMubj)}(h h]h }(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZhhhjZhMubj)}(hamdgpu_bo_gpu_offset_no_checkh]j)}(hjZh]hamdgpu_bo_gpu_offset_no_check}(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjZhhhjZhMubj)}(h(struct amdgpu_bo *bo)h]j)}(hstruct amdgpu_bo *boh](j)}(hjh]hstruct}(hj-[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)[ubj)}(h h]h }(hj:[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)[ubh)}(hhh]j)}(h amdgpu_boh]h amdgpu_bo}(hjK[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjH[ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjM[modnameN classnameNjj)}j]jZc.amdgpu_bo_gpu_offset_no_checkasbuh1hhj)[ubj)}(h h]h }(hji[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)[ubj)}(hjh]h*}(hjw[hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj)[ubj)}(hboh]hbo}(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)[ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj%[ubah}(h]h ]h"]h$]h&]jjuh1jhjZhhhjZhMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjZhhhjZhMubah}(h]jZah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjZhMhjZhhubj[)}(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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj[hhubah}(h]h ]h"]h$]h&]uh1jZhjZhhhjZhMubeh}(h]h ](j4functioneh"]h$]h&]jj4jj[jj[jjjuh1jbhhhj hNhNubj)}(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]j)}(hj[h]h Parameters}(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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj[ubj )}(hhh]j)}(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&]uh1j9hj[ubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./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&]uh1j#hj[ubeh}(h]h ]h"]h$]h&]uh1j hj\hMhj[ubah}(h]h ]h"]h$]h&]uh1jhj[ubh)}(h **Return**h]j)}(hj*\h]hReturn}(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:198: ./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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMhj[ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^*amdgpu_bo_mem_stats_placement (C function)c.amdgpu_bo_mem_stats_placementhNtauh1jQhj hhhNhNubjc)}(hhh](jh)}(h=uint32_t amdgpu_bo_mem_stats_placement (struct amdgpu_bo *bo)h]jn)}(h` **Return** Which of the allowed domains is preferred for allocating the BO.h](h)}(h**Parameters**h]j)}(hjg_h]h Parameters}(hji_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhje_ubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM6hja_ubj )}(hhh](j)}(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&]uh1j9hj_ubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM3hj_ubj$)}(hhh]h)}(hamdgpu device objecth]hamdgpu device object}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj_hM3hj_ubah}(h]h ]h"]h$]h&]uh1j#hj_ubeh}(h]h ]h"]h$]h&]uh1j hj_hM3hj}_ubj)}(hJ``uint32_t domain`` allowed :ref:`memory domains ` h](j)}(h``uint32_t domain``h]j:)}(hj_h]huint32_t domain}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj_ubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM4hj_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_hM4hj_ubeh}(h]h ]h"]h$]h&]uh1hhj_hM4hj_ubah}(h]h ]h"]h$]h&]uh1j#hj_ubeh}(h]h ]h"]h$]h&]uh1j hj_hM4hj}_ubeh}(h]h ]h"]h$]h&]uh1jhja_ubh)}(h **Return**h]j)}(hj`h]hReturn}(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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM6hja_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.}(hj0`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chM6hja_ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^!amdgpu_bo_print_info (C function)c.amdgpu_bo_print_infohNtauh1jQhj hhhNhNubjc)}(hhh](jh)}(hKu64 amdgpu_bo_print_info (int id, struct amdgpu_bo *bo, struct seq_file *m)h]jn)}(hJu64 amdgpu_bo_print_info(int id, struct amdgpu_bo *bo, struct seq_file *m)h](h)}(hhh]j)}(hu64h]hu64}(hjb`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_`ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjd`modnameN classnameNjj)}j]j)}jamdgpu_bo_print_infosbc.amdgpu_bo_print_infoasbuh1hhj[`hhhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMNubj)}(h h]h }(hj`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[`hhhj`hMNubj)}(hamdgpu_bo_print_infoh]j)}(hj`h]hamdgpu_bo_print_info}(hj`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj[`hhhj`hMNubj)}(h2(int id, struct amdgpu_bo *bo, struct seq_file *m)h](j)}(hint idh](jt)}(hinth]hint}(hj`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj`ubj)}(h h]h }(hj`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`ubj)}(hidh]hid}(hj`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj`ubj)}(hstruct amdgpu_bo *boh](j)}(hjh]hstruct}(hj`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`ubj)}(h h]h }(hj`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`ubh)}(hhh]j)}(h amdgpu_boh]h amdgpu_bo}(hjahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjaubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjamodnameN classnameNjj)}j]j~`c.amdgpu_bo_print_infoasbuh1hhj`ubj)}(h h]h }(hj"ahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`ubj)}(hjh]h*}(hj0ahhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj`ubj)}(hboh]hbo}(hj=ahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj`ubj)}(hstruct seq_file *mh](j)}(hjh]hstruct}(hjVahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjRaubj)}(h h]h }(hjcahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjRaubh)}(hhh]j)}(hseq_fileh]hseq_file}(hjtahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjqaubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjvamodnameN classnameNjj)}j]j~`c.amdgpu_bo_print_infoasbuh1hhjRaubj)}(h h]h }(hjahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjRaubj)}(hjh]h*}(hjahhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjRaubj)}(hmh]hm}(hjahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjRaubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj`ubeh}(h]h ]h"]h$]h&]jjuh1jhj[`hhhj`hMNubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjW`hhhj`hMNubah}(h]jR`ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghj`hMNhjT`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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMNhjahhubah}(h]h ]h"]h$]h&]uh1jZhjT`hhhj`hMNubeh}(h]h ](j4functioneh"]h$]h&]jj4jjajjajjjuh1jbhhhj hNhNubj)}(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]j)}(hjah]h Parameters}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jhjaubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMRhjaubj )}(hhh](j)}(h!``int id`` Index or Id of the BO h](j)}(h ``int id``h]j:)}(hjbh]hint id}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjbubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMPhjbubj$)}(hhh]h)}(hIndex or Id of the BOh]hIndex or Id of the BO}(hj1bhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj-bhMPhj.bubah}(h]h ]h"]h$]h&]uh1j#hjbubeh}(h]h ]h"]h$]h&]uh1j hj-bhMPhjbubj)}(h8``struct amdgpu_bo *bo`` Requested BO for printing info h](j)}(h``struct amdgpu_bo *bo``h]j:)}(hjQbh]hstruct amdgpu_bo *bo}(hjSbhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjObubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMQhjKbubj$)}(hhh]h)}(hRequested BO for printing infoh]hRequested BO for printing info}(hjjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfbhMQhjgbubah}(h]h ]h"]h$]h&]uh1j#hjKbubeh}(h]h ]h"]h$]h&]uh1j hjfbhMQhjbubj)}(h$``struct seq_file *m`` debugfs file h](j)}(h``struct seq_file *m``h]j:)}(hjbh]hstruct seq_file *m}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjbubah}(h]h ]h"]h$]h&]uh1jhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMRhjbubj$)}(hhh]h)}(h debugfs fileh]h debugfs file}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjbhMRhjbubah}(h]h ]h"]h$]h&]uh1j#hjbubeh}(h]h ]h"]h$]h&]uh1j hjbhMRhjbubeh}(h]h ]h"]h$]h&]uh1jhjaubh)}(h**Description**h]j)}(hjbh]h Description}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMThjaubh)}(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:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMShjaubh)}(h **Return**h]j)}(hjbh]hReturn}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMUhjaubh)}(hSize of the BO in bytes.h]hSize of the BO in bytes.}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhr/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:198: ./drivers/gpu/drm/amd/amdgpu/amdgpu_object.chMVhjaubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj hhhNhNubeh}(h]buffer-objectsah ]h"]buffer objectsah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hPRIME Buffer Sharingh]hPRIME Buffer Sharing}(hj#chhhNhNubah}(h]h ]h"]h$]h&]uh1hhj chhhhhKubh)}(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 }(hj1chhhNhNubh)}(h\:ref:`sharing GEM buffer objects between different devices via PRIME `h]j)}(hj;ch]h>sharing GEM buffer objects between different devices via PRIME}(hj=chhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1jhj9cubah}(h]h ]h"]h$]h&]refdocj  refdomainjGcreftyperef refexplicitrefwarnjprime_buffer_sharinguh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:204: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chKhj1cubh.}(hj1chhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjYchKhj chhubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^ dma_buf_attach_adev (C function)c.dma_buf_attach_adevhNtauh1jQhj chhhNhNubjc)}(hhh](jh)}(hNstruct amdgpu_device * dma_buf_attach_adev (struct dma_buf_attachment *attach)h]jn)}(hLstruct amdgpu_device *dma_buf_attach_adev(struct dma_buf_attachment *attach)h](j)}(hjh]hstruct}(hj}chhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjychhhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chK2ubj)}(h h]h }(hjchhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjychhhjchK2ubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hjchhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjcubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjcmodnameN classnameNjj)}j]j)}jdma_buf_attach_adevsbc.dma_buf_attach_adevasbuh1hhjychhhjchK2ubj)}(h h]h }(hjchhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjychhhjchK2ubj)}(hjh]h*}(hjchhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjychhhjchK2ubj)}(hdma_buf_attach_adevh]j)}(hjch]hdma_buf_attach_adev}(hjchhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjcubah}(h]h ](jjeh"]h$]h&]jjuh1jhjychhhjchK2ubj)}(h#(struct dma_buf_attachment *attach)h]j)}(h!struct dma_buf_attachment *attachh](j)}(hjh]hstruct}(hjchhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjcubj)}(h h]h }(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjcubh)}(hhh]j)}(hdma_buf_attachmenth]hdma_buf_attachment}(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjdubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjdmodnameN classnameNjj)}j]jcc.dma_buf_attach_adevasbuh1hhjcubj)}(h h]h }(hj3dhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjcubj)}(hjh]h*}(hjAdhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjcubj)}(hattachh]hattach}(hjNdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjcubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjcubah}(h]h ]h"]h$]h&]jjuh1jhjychhhjchK2ubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjuchhhjchK2ubah}(h]jpcah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjchK2hjrchhubj[)}(hhh]h)}(h#Helper to get adev of an attachmenth]h#Helper to get adev of an attachment}(hjxdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chK2hjudhhubah}(h]h ]h"]h$]h&]uh1jZhjrchhhjchK2ubeh}(h]h ](j4functioneh"]h$]h&]jj4jjdjjdjjjuh1jbhhhj chNhNubj)}(h**Parameters** ``struct dma_buf_attachment *attach`` attachment **Return** A struct amdgpu_device * if the attaching device is an amdgpu device or partition, NULL otherwise.h](h)}(h**Parameters**h]j)}(hjdh]h Parameters}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chK6hjdubj )}(hhh]j)}(h1``struct dma_buf_attachment *attach`` attachment h](j)}(h%``struct dma_buf_attachment *attach``h]j:)}(hjdh]h!struct dma_buf_attachment *attach}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjdubah}(h]h ]h"]h$]h&]uh1jhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chK4hjdubj$)}(hhh]h)}(h attachmenth]h attachment}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdhK4hjdubah}(h]h ]h"]h$]h&]uh1j#hjdubeh}(h]h ]h"]h$]h&]uh1j hjdhK4hjdubah}(h]h ]h"]h$]h&]uh1jhjdubh)}(h **Return**h]j)}(hjdh]hReturn}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chK6hjdubh)}(hbA struct amdgpu_device * if the attaching device is an amdgpu device or partition, NULL otherwise.h]hbA struct amdgpu_device * if the attaching device is an amdgpu device or partition, NULL otherwise.}(hj ehhhNhNubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chK6hjdubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj chhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^"amdgpu_dma_buf_attach (C function)c.amdgpu_dma_buf_attachhNtauh1jQhj chhhNhNubjc)}(hhh](jh)}(hUint amdgpu_dma_buf_attach (struct dma_buf *dmabuf, struct dma_buf_attachment *attach)h]jn)}(hTint amdgpu_dma_buf_attach(struct dma_buf *dmabuf, struct dma_buf_attachment *attach)h](jt)}(hinth]hint}(hj9ehhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj5ehhhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chKGubj)}(h h]h }(hjHehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ehhhjGehKGubj)}(hamdgpu_dma_buf_attachh]j)}(hamdgpu_dma_buf_attachh]hamdgpu_dma_buf_attach}(hjZehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVeubah}(h]h ](jjeh"]h$]h&]jjuh1jhj5ehhhjGehKGubj)}(h;(struct dma_buf *dmabuf, struct dma_buf_attachment *attach)h](j)}(hstruct dma_buf *dmabufh](j)}(hjh]hstruct}(hjvehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjreubj)}(h h]h }(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjreubh)}(hhh]j)}(hdma_bufh]hdma_buf}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjeubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjemodnameN classnameNjj)}j]j)}jj\esbc.amdgpu_dma_buf_attachasbuh1hhjreubj)}(h h]h }(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjreubj)}(hjh]h*}(hjehhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjreubj)}(hdmabufh]hdmabuf}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjreubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjneubj)}(h!struct dma_buf_attachment *attachh](j)}(hjh]hstruct}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjeubj)}(h h]h }(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjeubh)}(hhh]j)}(hdma_buf_attachmenth]hdma_buf_attachment}(hjfhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjfubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjfmodnameN classnameNjj)}j]jec.amdgpu_dma_buf_attachasbuh1hhjeubj)}(h h]h }(hj$fhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjeubj)}(hjh]h*}(hj2fhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjeubj)}(hattachh]hattach}(hj?fhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjeubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjneubeh}(h]h ]h"]h$]h&]jjuh1jhj5ehhhjGehKGubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhj1ehhhjGehKGubah}(h]j,eah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjGehKGhj.ehhubj[)}(hhh]h)}(h9:c:type:`dma_buf_ops.attach ` implementationh](h)}(h*:c:type:`dma_buf_ops.attach `h]j:)}(hjofh]hdma_buf_ops.attach}(hjqfhhhNhNubah}(h]h ](jj4c-typeeh"]h$]h&]uh1j9hjmfubah}(h]h ]h"]h$]h&]refdocj  refdomainj4reftypetype refexplicitrefwarnjj)}j]jec.amdgpu_dma_buf_attachasbj dma_buf_opsuh1hhjchK2hjifubh implementation}(hjifhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chKGhjffhhubah}(h]h ]h"]h$]h&]uh1jZhj.ehhhjGehKGubeh}(h]h ](j4functioneh"]h$]h&]jj4jjfjjfjjjuh1jbhhhj chNhNubj)}(h**Parameters** ``struct dma_buf *dmabuf`` DMA-buf where we attach to ``struct dma_buf_attachment *attach`` attachment to add **Description** Add the attachment as user to the exported DMA-buf.h](h)}(h**Parameters**h]j)}(hjfh]h Parameters}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chKKhjfubj )}(hhh](j)}(h6``struct dma_buf *dmabuf`` DMA-buf where we attach to h](j)}(h``struct dma_buf *dmabuf``h]j:)}(hjfh]hstruct dma_buf *dmabuf}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjfubah}(h]h ]h"]h$]h&]uh1jhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chKIhjfubj$)}(hhh]h)}(hDMA-buf where we attach toh]hDMA-buf where we attach to}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfhKIhjfubah}(h]h ]h"]h$]h&]uh1j#hjfubeh}(h]h ]h"]h$]h&]uh1j hjfhKIhjfubj)}(h8``struct dma_buf_attachment *attach`` attachment to add h](j)}(h%``struct dma_buf_attachment *attach``h]j:)}(hjgh]h!struct dma_buf_attachment *attach}(hj ghhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjgubah}(h]h ]h"]h$]h&]uh1jhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chKJhjgubj$)}(hhh]h)}(hattachment to addh]hattachment to add}(hj ghhhNhNubah}(h]h ]h"]h$]h&]uh1hhjghKJhjgubah}(h]h ]h"]h$]h&]uh1j#hjgubeh}(h]h ]h"]h$]h&]uh1j hjghKJhjfubeh}(h]h ]h"]h$]h&]uh1jhjfubh)}(h**Description**h]j)}(hjBgh]h Description}(hjDghhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@gubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chKLhjfubh)}(h3Add the attachment as user to the exported DMA-buf.h]h3Add the attachment as user to the exported DMA-buf.}(hjXghhhNhNubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chKKhjfubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj chhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^amdgpu_dma_buf_pin (C function)c.amdgpu_dma_buf_pinhNtauh1jQhj chhhNhNubjc)}(hhh](jh)}(h:int amdgpu_dma_buf_pin (struct dma_buf_attachment *attach)h]jn)}(h9int amdgpu_dma_buf_pin(struct dma_buf_attachment *attach)h](jt)}(hinth]hint}(hjghhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjghhhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chKsubj)}(h h]h }(hjghhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjghhhjghKsubj)}(hamdgpu_dma_buf_pinh]j)}(hamdgpu_dma_buf_pinh]hamdgpu_dma_buf_pin}(hjghhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjgubah}(h]h ](jjeh"]h$]h&]jjuh1jhjghhhjghKsubj)}(h#(struct dma_buf_attachment *attach)h]j)}(h!struct dma_buf_attachment *attachh](j)}(hjh]hstruct}(hjghhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjgubj)}(h h]h }(hjghhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjgubh)}(hhh]j)}(hdma_buf_attachmenth]hdma_buf_attachment}(hjghhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjgmodnameN classnameNjj)}j]j)}jjgsbc.amdgpu_dma_buf_pinasbuh1hhjgubj)}(h h]h }(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjgubj)}(hjh]h*}(hjhhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjgubj)}(hattachh]hattach}(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjgubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjgubah}(h]h ]h"]h$]h&]jjuh1jhjghhhjghKsubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjghhhjghKsubah}(h]jzgah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjghKshj|ghhubj[)}(hhh]h)}(h6:c:type:`dma_buf_ops.pin ` implementationh](h)}(h':c:type:`dma_buf_ops.pin `h]j:)}(hjMhh]hdma_buf_ops.pin}(hjOhhhhNhNubah}(h]h ](jj4c-typeeh"]h$]h&]uh1j9hjKhubah}(h]h ]h"]h$]h&]refdocj  refdomainj4reftypetype refexplicitrefwarnjj)}j]jgc.amdgpu_dma_buf_pinasbj dma_buf_opsuh1hhjchK2hjGhubh implementation}(hjGhhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chKshjDhhhubah}(h]h ]h"]h$]h&]uh1jZhj|ghhhjghKsubeh}(h]h ](j4functioneh"]h$]h&]jj4jjhjjhjjjuh1jbhhhj chNhNubj)}(h**Parameters** ``struct dma_buf_attachment *attach`` attachment to pin down **Description** Pin the BO which is backing the DMA-buf so that it can't move any more.h](h)}(h**Parameters**h]j)}(hjhh]h Parameters}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chKwhjhubj )}(hhh]j)}(h=``struct dma_buf_attachment *attach`` attachment to pin down h](j)}(h%``struct dma_buf_attachment *attach``h]j:)}(hjhh]h!struct dma_buf_attachment *attach}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjhubah}(h]h ]h"]h$]h&]uh1jhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chKuhjhubj$)}(hhh]h)}(hattachment to pin downh]hattachment to pin down}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhKuhjhubah}(h]h ]h"]h$]h&]uh1j#hjhubeh}(h]h ]h"]h$]h&]uh1j hjhhKuhjhubah}(h]h ]h"]h$]h&]uh1jhjhubh)}(h**Description**h]j)}(hjhh]h Description}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chKwhjhubh)}(hGPin the BO which is backing the DMA-buf so that it can't move any more.h]hIPin the BO which is backing the DMA-buf so that it can’t move any more.}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chKvhjhubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj chhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^!amdgpu_dma_buf_unpin (C function)c.amdgpu_dma_buf_unpinhNtauh1jQhj chhhNhNubjc)}(hhh](jh)}(h=void amdgpu_dma_buf_unpin (struct dma_buf_attachment *attach)h]jn)}(h` implementationh](h)}(h):c:type:`dma_buf_ops.unpin `h]j:)}(hjih]hdma_buf_ops.unpin}(hjihhhNhNubah}(h]h ](jj4c-typeeh"]h$]h&]uh1j9hjiubah}(h]h ]h"]h$]h&]refdocj  refdomainj4reftypetype refexplicitrefwarnjj)}j]jic.amdgpu_dma_buf_unpinasbj dma_buf_opsuh1hhjchK2hjiubh implementation}(hjihhhNhNubeh}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chKhjihhubah}(h]h ]h"]h$]h&]uh1jZhj!ihhhj:ihKubeh}(h]h ](j4functioneh"]h$]h&]jj4jj(jjj(jjjjuh1jbhhhj chNhNubj)}(h**Parameters** ``struct dma_buf_attachment *attach`` attachment to unpin **Description** Unpin a previously pinned BO to make it movable again.h](h)}(h**Parameters**h]j)}(hj2jh]h Parameters}(hj4jhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0jubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chKhj,jubj )}(hhh]j)}(h:``struct dma_buf_attachment *attach`` attachment to unpin h](j)}(h%``struct dma_buf_attachment *attach``h]j:)}(hjQjh]h!struct dma_buf_attachment *attach}(hjSjhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjOjubah}(h]h ]h"]h$]h&]uh1jhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chKhjKjubj$)}(hhh]h)}(hattachment to unpinh]hattachment to unpin}(hjjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfjhKhjgjubah}(h]h ]h"]h$]h&]uh1j#hjKjubeh}(h]h ]h"]h$]h&]uh1j hjfjhKhjHjubah}(h]h ]h"]h$]h&]uh1jhj,jubh)}(h**Description**h]j)}(hjjh]h Description}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chKhj,jubh)}(h6Unpin a previously pinned BO to make it movable again.h]h6Unpin a previously pinned BO to make it movable again.}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chKhj,jubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj chhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^amdgpu_dma_buf_map (C function)c.amdgpu_dma_buf_maphNtauh1jQhj chhhNhNubjc)}(hhh](jh)}(hestruct sg_table * amdgpu_dma_buf_map (struct dma_buf_attachment *attach, enum dma_data_direction dir)h]jn)}(hcstruct sg_table *amdgpu_dma_buf_map(struct dma_buf_attachment *attach, enum dma_data_direction dir)h](j)}(hjh]hstruct}(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjjhhhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chKubj)}(h h]h }(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjjhhhjjhKubh)}(hhh]j)}(hsg_tableh]hsg_table}(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjjmodnameN classnameNjj)}j]j)}jamdgpu_dma_buf_mapsbc.amdgpu_dma_buf_mapasbuh1hhjjhhhjjhKubj)}(h h]h }(hjkhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjjhhhjjhKubj)}(hjh]h*}(hjkhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjjhhhjjhKubj)}(hamdgpu_dma_buf_maph]j)}(hjkh]hamdgpu_dma_buf_map}(hj0khhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,kubah}(h]h ](jjeh"]h$]h&]jjuh1jhjjhhhjjhKubj)}(h@(struct dma_buf_attachment *attach, enum dma_data_direction dir)h](j)}(h!struct dma_buf_attachment *attachh](j)}(hjh]hstruct}(hjKkhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGkubj)}(h h]h }(hjXkhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGkubh)}(hhh]j)}(hdma_buf_attachmenth]hdma_buf_attachment}(hjikhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjfkubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjkkmodnameN classnameNjj)}j]j kc.amdgpu_dma_buf_mapasbuh1hhjGkubj)}(h h]h }(hjkhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGkubj)}(hjh]h*}(hjkhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjGkubj)}(hattachh]hattach}(hjkhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGkubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjCkubj)}(henum dma_data_direction dirh](j)}(hjGRh]henum}(hjkhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjkubj)}(h h]h }(hjkhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjkubh)}(hhh]j)}(hdma_data_directionh]hdma_data_direction}(hjkhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjkubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjkmodnameN classnameNjj)}j]j kc.amdgpu_dma_buf_mapasbuh1hhjkubj)}(h h]h }(hjkhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjkubj)}(hdirh]hdir}(hjlhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjkubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjCkubeh}(h]h ]h"]h$]h&]jjuh1jhjjhhhjjhKubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjjhhhjjhKubah}(h]jjah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjjhKhjjhhubj[)}(hhh]h)}(h>:c:type:`dma_buf_ops.map_dma_buf ` implementationh](h)}(h/:c:type:`dma_buf_ops.map_dma_buf `h]j:)}(hj5lh]hdma_buf_ops.map_dma_buf}(hj7lhhhNhNubah}(h]h ](jj4c-typeeh"]h$]h&]uh1j9hj3lubah}(h]h ]h"]h$]h&]refdocj  refdomainj4reftypetype refexplicitrefwarnjj)}j]j kc.amdgpu_dma_buf_mapasbj dma_buf_opsuh1hhjchK2hj/lubh implementation}(hj/lhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chKhj,lhhubah}(h]h ]h"]h$]h&]uh1jZhjjhhhjjhKubeh}(h]h ](j4functioneh"]h$]h&]jj4jjkljjkljjjuh1jbhhhj chNhNubj)}(hX**Parameters** ``struct dma_buf_attachment *attach`` DMA-buf attachment ``enum dma_data_direction dir`` DMA direction **Description** Makes sure that the shared DMA buffer can be accessed by the target device. For now, simply pins it to the GTT domain, where it should be accessible by all DMA devices. **Return** sg_table filled with the DMA addresses to use or ERR_PRT with negative error code.h](h)}(h**Parameters**h]j)}(hjulh]h Parameters}(hjwlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjslubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chKhjolubj )}(hhh](j)}(h9``struct dma_buf_attachment *attach`` DMA-buf attachment h](j)}(h%``struct dma_buf_attachment *attach``h]j:)}(hjlh]h!struct dma_buf_attachment *attach}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjlubah}(h]h ]h"]h$]h&]uh1jhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chKhjlubj$)}(hhh]h)}(hDMA-buf attachmenth]hDMA-buf attachment}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjlhKhjlubah}(h]h ]h"]h$]h&]uh1j#hjlubeh}(h]h ]h"]h$]h&]uh1j hjlhKhjlubj)}(h.``enum dma_data_direction dir`` DMA direction h](j)}(h``enum dma_data_direction dir``h]j:)}(hjlh]henum dma_data_direction dir}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjlubah}(h]h ]h"]h$]h&]uh1jhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chKhjlubj$)}(hhh]h)}(h DMA directionh]h DMA direction}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjlhKhjlubah}(h]h ]h"]h$]h&]uh1j#hjlubeh}(h]h ]h"]h$]h&]uh1j hjlhKhjlubeh}(h]h ]h"]h$]h&]uh1jhjolubh)}(h**Description**h]j)}(hjmh]h Description}(hj mhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chKhjolubh)}(hMakes sure that the shared DMA buffer can be accessed by the target device. For now, simply pins it to the GTT domain, where it should be accessible by all DMA devices.h]hMakes sure that the shared DMA buffer can be accessed by the target device. For now, simply pins it to the GTT domain, where it should be accessible by all DMA devices.}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chKhjolubh)}(h **Return**h]j)}(hj/mh]hReturn}(hj1mhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-mubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chKhjolubh)}(hRsg_table filled with the DMA addresses to use or ERR_PRT with negative error code.h]hRsg_table filled with the DMA addresses to use or ERR_PRT with negative error code.}(hjEmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chKhjolubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj chhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^!amdgpu_dma_buf_unmap (C function)c.amdgpu_dma_buf_unmaphNtauh1jQhj chhhNhNubjc)}(hhh](jh)}(hpvoid amdgpu_dma_buf_unmap (struct dma_buf_attachment *attach, struct sg_table *sgt, enum dma_data_direction dir)h]jn)}(hovoid amdgpu_dma_buf_unmap(struct dma_buf_attachment *attach, struct sg_table *sgt, enum dma_data_direction dir)h](jt)}(hvoidh]hvoid}(hjtmhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjpmhhhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chKubj)}(h h]h }(hjmhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjpmhhhjmhKubj)}(hamdgpu_dma_buf_unmaph]j)}(hamdgpu_dma_buf_unmaph]hamdgpu_dma_buf_unmap}(hjmhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjmubah}(h]h ](jjeh"]h$]h&]jjuh1jhjpmhhhjmhKubj)}(hV(struct dma_buf_attachment *attach, struct sg_table *sgt, enum dma_data_direction dir)h](j)}(h!struct dma_buf_attachment *attachh](j)}(hjh]hstruct}(hjmhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjmubj)}(h h]h }(hjmhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjmubh)}(hhh]j)}(hdma_buf_attachmenth]hdma_buf_attachment}(hjmhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjmubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmmodnameN classnameNjj)}j]j)}jjmsbc.amdgpu_dma_buf_unmapasbuh1hhjmubj)}(h h]h }(hjmhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjmubj)}(hjh]h*}(hjmhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjmubj)}(hattachh]hattach}(hj nhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjmubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjmubj)}(hstruct sg_table *sgth](j)}(hjh]hstruct}(hj#nhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjnubj)}(h h]h }(hj0nhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjnubh)}(hhh]j)}(hsg_tableh]hsg_table}(hjAnhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>nubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjCnmodnameN classnameNjj)}j]jmc.amdgpu_dma_buf_unmapasbuh1hhjnubj)}(h h]h }(hj_nhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjnubj)}(hjh]h*}(hjmnhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjnubj)}(hsgth]hsgt}(hjznhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjnubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjmubj)}(henum dma_data_direction dirh](j)}(hjGRh]henum}(hjnhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjnubj)}(h h]h }(hjnhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjnubh)}(hhh]j)}(hdma_data_directionh]hdma_data_direction}(hjnhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjnubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjnmodnameN classnameNjj)}j]jmc.amdgpu_dma_buf_unmapasbuh1hhjnubj)}(h h]h }(hjnhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjnubj)}(hdirh]hdir}(hjnhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjnubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjmubeh}(h]h ]h"]h$]h&]jjuh1jhjpmhhhjmhKubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjlmhhhjmhKubah}(h]jgmah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjmhKhjimhhubj[)}(hhh]h)}(h@:c:type:`dma_buf_ops.unmap_dma_buf ` implementationh](h)}(h1:c:type:`dma_buf_ops.unmap_dma_buf `h]j:)}(hj oh]hdma_buf_ops.unmap_dma_buf}(hjohhhNhNubah}(h]h ](jj4c-typeeh"]h$]h&]uh1j9hj oubah}(h]h ]h"]h$]h&]refdocj  refdomainj4reftypetype refexplicitrefwarnjj)}j]jmc.amdgpu_dma_buf_unmapasbj dma_buf_opsuh1hhjchK2hjoubh implementation}(hjohhhNhNubeh}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chKhjohhubah}(h]h ]h"]h$]h&]uh1jZhjimhhhjmhKubeh}(h]h ](j4functioneh"]h$]h&]jj4jjCojjCojjjuh1jbhhhj chNhNubj)}(hXC**Parameters** ``struct dma_buf_attachment *attach`` DMA-buf attachment ``struct sg_table *sgt`` sg_table to unmap ``enum dma_data_direction dir`` DMA direction **Description** This is called when a shared DMA buffer no longer needs to be accessible by another device. For now, simply unpins the buffer from GTT.h](h)}(h**Parameters**h]j)}(hjMoh]h Parameters}(hjOohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKoubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chKhjGoubj )}(hhh](j)}(h9``struct dma_buf_attachment *attach`` DMA-buf attachment h](j)}(h%``struct dma_buf_attachment *attach``h]j:)}(hjloh]h!struct dma_buf_attachment *attach}(hjnohhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjjoubah}(h]h ]h"]h$]h&]uh1jhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chKhjfoubj$)}(hhh]h)}(hDMA-buf attachmenth]hDMA-buf attachment}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhjohKhjoubah}(h]h ]h"]h$]h&]uh1j#hjfoubeh}(h]h ]h"]h$]h&]uh1j hjohKhjcoubj)}(h+``struct sg_table *sgt`` sg_table to unmap h](j)}(h``struct sg_table *sgt``h]j:)}(hjoh]hstruct sg_table *sgt}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjoubah}(h]h ]h"]h$]h&]uh1jhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chKhjoubj$)}(hhh]h)}(hsg_table to unmaph]hsg_table to unmap}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhjohKhjoubah}(h]h ]h"]h$]h&]uh1j#hjoubeh}(h]h ]h"]h$]h&]uh1j hjohKhjcoubj)}(h.``enum dma_data_direction dir`` DMA direction h](j)}(h``enum dma_data_direction dir``h]j:)}(hjoh]henum dma_data_direction dir}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjoubah}(h]h ]h"]h$]h&]uh1jhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chKhjoubj$)}(hhh]h)}(h DMA directionh]h DMA direction}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhjohKhjoubah}(h]h ]h"]h$]h&]uh1j#hjoubeh}(h]h ]h"]h$]h&]uh1j hjohKhjcoubeh}(h]h ]h"]h$]h&]uh1jhjGoubh)}(h**Description**h]j)}(hjph]h Description}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jhjpubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chKhjGoubh)}(hThis is called when a shared DMA buffer no longer needs to be accessible by another device. For now, simply unpins the buffer from GTT.h]hThis is called when a shared DMA buffer no longer needs to be accessible by another device. For now, simply unpins the buffer from GTT.}(hj/phhhNhNubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chKhjGoubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj chhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^,amdgpu_dma_buf_begin_cpu_access (C function)!c.amdgpu_dma_buf_begin_cpu_accesshNtauh1jQhj chhhNhNubjc)}(hhh](jh)}(h`int amdgpu_dma_buf_begin_cpu_access (struct dma_buf *dma_buf, enum dma_data_direction direction)h]jn)}(h_int amdgpu_dma_buf_begin_cpu_access(struct dma_buf *dma_buf, enum dma_data_direction direction)h](jt)}(hinth]hint}(hj^phhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjZphhhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMubj)}(h h]h }(hjmphhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZphhhjlphMubj)}(hamdgpu_dma_buf_begin_cpu_accessh]j)}(hamdgpu_dma_buf_begin_cpu_accessh]hamdgpu_dma_buf_begin_cpu_access}(hjphhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj{pubah}(h]h ](jjeh"]h$]h&]jjuh1jhjZphhhjlphMubj)}(h<(struct dma_buf *dma_buf, enum dma_data_direction direction)h](j)}(hstruct dma_buf *dma_bufh](j)}(hjh]hstruct}(hjphhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjpubj)}(h h]h }(hjphhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjpubh)}(hhh]j)}(hdma_bufh]hdma_buf}(hjphhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjpubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjpmodnameN classnameNjj)}j]j)}jjpsb!c.amdgpu_dma_buf_begin_cpu_accessasbuh1hhjpubj)}(h h]h }(hjphhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjpubj)}(hjh]h*}(hjphhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjpubj)}(hdma_bufh]hdma_buf}(hjphhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjpubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjpubj)}(h!enum dma_data_direction directionh](j)}(hjGRh]henum}(hj qhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj qubj)}(h h]h }(hjqhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj qubh)}(hhh]j)}(hdma_data_directionh]hdma_data_direction}(hj+qhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(qubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj-qmodnameN classnameNjj)}j]jp!c.amdgpu_dma_buf_begin_cpu_accessasbuh1hhj qubj)}(h h]h }(hjIqhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj qubj)}(h directionh]h direction}(hjWqhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj qubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjpubeh}(h]h ]h"]h$]h&]jjuh1jhjZphhhjlphMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjVphhhjlphMubah}(h]jQpah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjlphMhjSphhubj[)}(hhh]h)}(hC:c:type:`dma_buf_ops.begin_cpu_access ` implementationh](h)}(h4:c:type:`dma_buf_ops.begin_cpu_access `h]j:)}(hjqh]hdma_buf_ops.begin_cpu_access}(hjqhhhNhNubah}(h]h ](jj4c-typeeh"]h$]h&]uh1j9hjqubah}(h]h ]h"]h$]h&]refdocj  refdomainj4reftypetype refexplicitrefwarnjj)}j]jp!c.amdgpu_dma_buf_begin_cpu_accessasbj dma_buf_opsuh1hhjchK2hjqubh implementation}(hjqhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMhj~qhhubah}(h]h ]h"]h$]h&]uh1jZhjSphhhjlphMubeh}(h]h ](j4functioneh"]h$]h&]jj4jjqjjqjjjuh1jbhhhj chNhNubj)}(hX**Parameters** ``struct dma_buf *dma_buf`` Shared DMA buffer ``enum dma_data_direction direction`` Direction of DMA transfer **Description** This is called before CPU access to the shared DMA buffer's memory. If it's a read access, the buffer is moved to the GTT domain if possible, for optimal CPU read performance. **Return** 0 on success or a negative error code on failure.h](h)}(h**Parameters**h]j)}(hjqh]h Parameters}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjqubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMhjqubj )}(hhh](j)}(h.``struct dma_buf *dma_buf`` Shared DMA buffer h](j)}(h``struct dma_buf *dma_buf``h]j:)}(hjqh]hstruct dma_buf *dma_buf}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjqubah}(h]h ]h"]h$]h&]uh1jhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMhjqubj$)}(hhh]h)}(hShared DMA bufferh]hShared DMA buffer}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjqhMhjqubah}(h]h ]h"]h$]h&]uh1j#hjqubeh}(h]h ]h"]h$]h&]uh1j hjqhMhjqubj)}(h@``enum dma_data_direction direction`` Direction of DMA transfer h](j)}(h%``enum dma_data_direction direction``h]j:)}(hjrh]h!enum dma_data_direction direction}(hj!rhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjrubah}(h]h ]h"]h$]h&]uh1jhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMhjrubj$)}(hhh]h)}(hDirection of DMA transferh]hDirection of DMA transfer}(hj8rhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4rhMhj5rubah}(h]h ]h"]h$]h&]uh1j#hjrubeh}(h]h ]h"]h$]h&]uh1j hj4rhMhjqubeh}(h]h ]h"]h$]h&]uh1jhjqubh)}(h**Description**h]j)}(hjZrh]h Description}(hj\rhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXrubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMhjqubh)}(hThis is called before CPU access to the shared DMA buffer's memory. If it's a read access, the buffer is moved to the GTT domain if possible, for optimal CPU read performance.h]hThis is called before CPU access to the shared DMA buffer’s memory. If it’s a read access, the buffer is moved to the GTT domain if possible, for optimal CPU read performance.}(hjprhhhNhNubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMhjqubh)}(h **Return**h]j)}(hjrh]hReturn}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjrubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chM hjqubh)}(h10 on success or a negative error code on failure.h]h10 on success or a negative error code on failure.}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chM!hjqubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj chhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^$amdgpu_gem_prime_export (C function)c.amdgpu_gem_prime_exporthNtauh1jQhj chhhNhNubjc)}(hhh](jh)}(hQstruct dma_buf * amdgpu_gem_prime_export (struct drm_gem_object *gobj, int flags)h]jn)}(hOstruct dma_buf *amdgpu_gem_prime_export(struct drm_gem_object *gobj, int flags)h](j)}(hjh]hstruct}(hjrhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjrhhhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMmubj)}(h h]h }(hjrhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjrhhhjrhMmubh)}(hhh]j)}(hdma_bufh]hdma_buf}(hjrhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjrubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjrmodnameN classnameNjj)}j]j)}jamdgpu_gem_prime_exportsbc.amdgpu_gem_prime_exportasbuh1hhjrhhhjrhMmubj)}(h h]h }(hjshhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjrhhhjrhMmubj)}(hjh]h*}(hjshhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjrhhhjrhMmubj)}(hamdgpu_gem_prime_exporth]j)}(hjsh]hamdgpu_gem_prime_export}(hj%shhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!subah}(h]h ](jjeh"]h$]h&]jjuh1jhjrhhhjrhMmubj)}(h((struct drm_gem_object *gobj, int flags)h](j)}(hstruct drm_gem_object *gobjh](j)}(hjh]hstruct}(hj@shhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj` implementationh](h)}(h2:c:type:`drm_driver.gem_prime_export `h]j:)}(hjsh]hdrm_driver.gem_prime_export}(hjshhhNhNubah}(h]h ](jj4c-typeeh"]h$]h&]uh1j9hjsubah}(h]h ]h"]h$]h&]refdocj  refdomainj4reftypetype refexplicitrefwarnjj)}j]jsc.amdgpu_gem_prime_exportasbj drm_driveruh1hhjchK2hjsubh implementation}(hjshhhNhNubeh}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMmhjshhubah}(h]h ]h"]h$]h&]uh1jZhjrhhhjrhMmubeh}(h]h ](j4functioneh"]h$]h&]jj4jj2tjj2tjjjuh1jbhhhj chNhNubj)}(hX**Parameters** ``struct drm_gem_object *gobj`` GEM BO ``int flags`` Flags such as DRM_CLOEXEC and DRM_RDWR. **Description** The main work is done by the :c:type:`drm_gem_prime_export` helper. **Return** Shared DMA buffer representing the GEM BO from the given device.h](h)}(h**Parameters**h]j)}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:tubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMqhj6tubj )}(hhh](j)}(h'``struct drm_gem_object *gobj`` GEM BO h](j)}(h``struct drm_gem_object *gobj``h]j:)}(hj[th]hstruct drm_gem_object *gobj}(hj]thhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjYtubah}(h]h ]h"]h$]h&]uh1jhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMnhjUtubj$)}(hhh]h)}(hGEM BOh]hGEM BO}(hjtthhhNhNubah}(h]h ]h"]h$]h&]uh1hhjpthMnhjqtubah}(h]h ]h"]h$]h&]uh1j#hjUtubeh}(h]h ]h"]h$]h&]uh1j hjpthMnhjRtubj)}(h6``int flags`` Flags such as DRM_CLOEXEC and DRM_RDWR. h](j)}(h ``int flags``h]j:)}(hjth]h int flags}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjtubah}(h]h ]h"]h$]h&]uh1jhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMohjtubj$)}(hhh]h)}(h'Flags such as DRM_CLOEXEC and DRM_RDWR.h]h'Flags such as DRM_CLOEXEC and DRM_RDWR.}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1hhjthMohjtubah}(h]h ]h"]h$]h&]uh1j#hjtubeh}(h]h ]h"]h$]h&]uh1j hjthMohjRtubeh}(h]h ]h"]h$]h&]uh1jhj6tubh)}(h**Description**h]j)}(hjth]h Description}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMqhj6tubh)}(hCThe main work is done by the :c:type:`drm_gem_prime_export` helper.h](hThe main work is done by the }(hjthhhNhNubh)}(h:c:type:`drm_gem_prime_export`h]j:)}(hjth]hdrm_gem_prime_export}(hjthhhNhNubah}(h]h ](jj4c-typeeh"]h$]h&]uh1j9hjtubah}(h]h ]h"]h$]h&]refdocj  refdomainj4reftypetype refexplicitrefwarnjjCjdrm_gem_prime_exportuh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMphjtubh helper.}(hjthhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj uhMphj6tubh)}(h **Return**h]j)}(hjuh]hReturn}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjuubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMrhj6tubh)}(h@Shared DMA buffer representing the GEM BO from the given device.h]h@Shared DMA buffer representing the GEM BO from the given device.}(hj/uhhhNhNubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMshj6tubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj chhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^&amdgpu_dma_buf_create_obj (C function)c.amdgpu_dma_buf_create_objhNtauh1jQhj chhhNhNubjc)}(hhh](jh)}(hcstruct drm_gem_object * amdgpu_dma_buf_create_obj (struct drm_device *dev, struct dma_buf *dma_buf)h]jn)}(hastruct drm_gem_object *amdgpu_dma_buf_create_obj(struct drm_device *dev, struct dma_buf *dma_buf)h](j)}(hjh]hstruct}(hj^uhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZuhhhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMubj)}(h h]h }(hjluhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZuhhhjkuhMubh)}(hhh]j)}(hdrm_gem_objecth]hdrm_gem_object}(hj}uhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjzuubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjumodnameN classnameNjj)}j]j)}jamdgpu_dma_buf_create_objsbc.amdgpu_dma_buf_create_objasbuh1hhjZuhhhjkuhMubj)}(h h]h }(hjuhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZuhhhjkuhMubj)}(hjh]h*}(hjuhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjZuhhhjkuhMubj)}(hamdgpu_dma_buf_create_objh]j)}(hjuh]hamdgpu_dma_buf_create_obj}(hjuhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjuubah}(h]h ](jjeh"]h$]h&]jjuh1jhjZuhhhjkuhMubj)}(h1(struct drm_device *dev, struct dma_buf *dma_buf)h](j)}(hstruct drm_device *devh](j)}(hjh]hstruct}(hjuhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjuubj)}(h h]h }(hjuhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjuubh)}(hhh]j)}(h drm_deviceh]h drm_device}(hjuhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjuubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjumodnameN classnameNjj)}j]juc.amdgpu_dma_buf_create_objasbuh1hhjuubj)}(h h]h }(hjvhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjuubj)}(hjh]h*}(hj"vhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjuubj)}(hdevh]hdev}(hj/vhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjuubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjuubj)}(hstruct dma_buf *dma_bufh](j)}(hjh]hstruct}(hjHvhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDvubj)}(h h]h }(hjUvhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDvubh)}(hhh]j)}(hdma_bufh]hdma_buf}(hjfvhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjcvubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjhvmodnameN classnameNjj)}j]juc.amdgpu_dma_buf_create_objasbuh1hhjDvubj)}(h h]h }(hjvhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDvubj)}(hjh]h*}(hjvhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjDvubj)}(hdma_bufh]hdma_buf}(hjvhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDvubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjuubeh}(h]h ]h"]h$]h&]jjuh1jhjZuhhhjkuhMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjVuhhhjkuhMubah}(h]jQuah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjkuhMhjSuhhubj[)}(hhh]h)}(hcreate BO for DMA-buf importh]hcreate BO for DMA-buf import}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMhjvhhubah}(h]h ]h"]h$]h&]uh1jZhjSuhhhjkuhMubeh}(h]h ](j4functioneh"]h$]h&]jj4jjvjjvjjjuh1jbhhhj chNhNubj)}(hX***Parameters** ``struct drm_device *dev`` DRM device ``struct dma_buf *dma_buf`` DMA-buf **Description** Creates an empty SG BO for DMA-buf import. **Return** A new GEM BO of the given DRM device, representing the memory described by the given DMA-buf attachment and scatter/gather table.h](h)}(h**Parameters**h]j)}(hjvh]h Parameters}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjvubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMhjvubj )}(hhh](j)}(h&``struct drm_device *dev`` DRM device h](j)}(h``struct drm_device *dev``h]j:)}(hj wh]hstruct drm_device *dev}(hj whhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjwubah}(h]h ]h"]h$]h&]uh1jhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMhjwubj$)}(hhh]h)}(h DRM deviceh]h DRM device}(hj#whhhNhNubah}(h]h ]h"]h$]h&]uh1hhjwhMhj wubah}(h]h ]h"]h$]h&]uh1j#hjwubeh}(h]h ]h"]h$]h&]uh1j hjwhMhjwubj)}(h$``struct dma_buf *dma_buf`` DMA-buf h](j)}(h``struct dma_buf *dma_buf``h]j:)}(hjCwh]hstruct dma_buf *dma_buf}(hjEwhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjAwubah}(h]h ]h"]h$]h&]uh1jhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMhj=wubj$)}(hhh]h)}(hDMA-bufh]hDMA-buf}(hj\whhhNhNubah}(h]h ]h"]h$]h&]uh1hhjXwhMhjYwubah}(h]h ]h"]h$]h&]uh1j#hj=wubeh}(h]h ]h"]h$]h&]uh1j hjXwhMhjwubeh}(h]h ]h"]h$]h&]uh1jhjvubh)}(h**Description**h]j)}(hj~wh]h Description}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|wubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMhjvubh)}(h*Creates an empty SG BO for DMA-buf import.h]h*Creates an empty SG BO for DMA-buf import.}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMhjvubh)}(h **Return**h]j)}(hjwh]hReturn}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjwubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMhjvubh)}(hA new GEM BO of the given DRM device, representing the memory described by the given DMA-buf attachment and scatter/gather table.h]hA new GEM BO of the given DRM device, representing the memory described by the given DMA-buf attachment and scatter/gather table.}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMhjvubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj chhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^'amdgpu_dma_buf_move_notify (C function)c.amdgpu_dma_buf_move_notifyhNtauh1jQhj chhhNhNubjc)}(hhh](jh)}(hCvoid amdgpu_dma_buf_move_notify (struct dma_buf_attachment *attach)h]jn)}(hBvoid amdgpu_dma_buf_move_notify(struct dma_buf_attachment *attach)h](jt)}(hvoidh]hvoid}(hjwhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjwhhhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMubj)}(h h]h }(hjwhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwhhhjwhMubj)}(hamdgpu_dma_buf_move_notifyh]j)}(hamdgpu_dma_buf_move_notifyh]hamdgpu_dma_buf_move_notify}(hj xhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjxubah}(h]h ](jjeh"]h$]h&]jjuh1jhjwhhhjwhMubj)}(h#(struct dma_buf_attachment *attach)h]j)}(h!struct dma_buf_attachment *attachh](j)}(hjh]hstruct}(hj'xhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#xubj)}(h h]h }(hj4xhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#xubh)}(hhh]j)}(hdma_buf_attachmenth]hdma_buf_attachment}(hjExhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjBxubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjGxmodnameN classnameNjj)}j]j)}jj xsbc.amdgpu_dma_buf_move_notifyasbuh1hhj#xubj)}(h h]h }(hjexhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#xubj)}(hjh]h*}(hjsxhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj#xubj)}(hattachh]hattach}(hjxhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#xubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjxubah}(h]h ]h"]h$]h&]jjuh1jhjwhhhjwhMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjwhhhjwhMubah}(h]jwah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjwhMhjwhhubj[)}(hhh]h)}(h<:c:type:`attach.invalidate_mappings ` implementationh](h)}(h-:c:type:`attach.invalidate_mappings `h]j:)}(hjxh]hattach.invalidate_mappings}(hjxhhhNhNubah}(h]h ](jj4c-typeeh"]h$]h&]uh1j9hjxubah}(h]h ]h"]h$]h&]refdocj  refdomainj4reftypetype refexplicitrefwarnjj)}j]jaxc.amdgpu_dma_buf_move_notifyasbjattachuh1hhjchK2hjxubh implementation}(hjxhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMhjxhhubah}(h]h ]h"]h$]h&]uh1jZhjwhhhjwhMubeh}(h]h ](j4functioneh"]h$]h&]jj4jjxjjxjjjuh1jbhhhj chNhNubj)}(h**Parameters** ``struct dma_buf_attachment *attach`` the DMA-buf attachment **Description** Invalidate the DMA-buf attachment, making sure that the we re-create the mapping before the next use.h](h)}(h**Parameters**h]j)}(hjxh]h Parameters}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjxubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMhjxubj )}(hhh]j)}(h=``struct dma_buf_attachment *attach`` the DMA-buf attachment h](j)}(h%``struct dma_buf_attachment *attach``h]j:)}(hjyh]h!struct dma_buf_attachment *attach}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj yubah}(h]h ]h"]h$]h&]uh1jhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMhj yubj$)}(hhh]h)}(hthe DMA-buf attachmenth]hthe DMA-buf attachment}(hj(yhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$yhMhj%yubah}(h]h ]h"]h$]h&]uh1j#hj yubeh}(h]h ]h"]h$]h&]uh1j hj$yhMhjyubah}(h]h ]h"]h$]h&]uh1jhjxubh)}(h**Description**h]j)}(hjJyh]h Description}(hjLyhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHyubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMhjxubh)}(heInvalidate the DMA-buf attachment, making sure that the we re-create the mapping before the next use.h]heInvalidate the DMA-buf attachment, making sure that the we re-create the mapping before the next use.}(hj`yhhhNhNubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMhjxubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj chhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^$amdgpu_gem_prime_import (C function)c.amdgpu_gem_prime_importhNtauh1jQhj chhhNhNubjc)}(hhh](jh)}(hastruct drm_gem_object * amdgpu_gem_prime_import (struct drm_device *dev, struct dma_buf *dma_buf)h]jn)}(h_struct drm_gem_object *amdgpu_gem_prime_import(struct drm_device *dev, struct dma_buf *dma_buf)h](j)}(hjh]hstruct}(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyhhhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMubj)}(h h]h }(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyhhhjyhMubh)}(hhh]j)}(hdrm_gem_objecth]hdrm_gem_object}(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjymodnameN classnameNjj)}j]j)}jamdgpu_gem_prime_importsbc.amdgpu_gem_prime_importasbuh1hhjyhhhjyhMubj)}(h h]h }(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyhhhjyhMubj)}(hjh]h*}(hjyhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjyhhhjyhMubj)}(hamdgpu_gem_prime_importh]j)}(hjyh]hamdgpu_gem_prime_import}(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyubah}(h]h ](jjeh"]h$]h&]jjuh1jhjyhhhjyhMubj)}(h1(struct drm_device *dev, struct dma_buf *dma_buf)h](j)}(hstruct drm_device *devh](j)}(hjh]hstruct}(hj zhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjzubj)}(h h]h }(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjzubh)}(hhh]j)}(h drm_deviceh]h drm_device}(hj'zhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$zubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj)zmodnameN classnameNjj)}j]jyc.amdgpu_gem_prime_importasbuh1hhjzubj)}(h h]h }(hjEzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjzubj)}(hjh]h*}(hjSzhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjzubj)}(hdevh]hdev}(hj`zhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjzubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjzubj)}(hstruct dma_buf *dma_bufh](j)}(hjh]hstruct}(hjyzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjuzubj)}(h h]h }(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjuzubh)}(hhh]j)}(hdma_bufh]hdma_buf}(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjzubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjzmodnameN classnameNjj)}j]jyc.amdgpu_gem_prime_importasbuh1hhjuzubj)}(h h]h }(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjuzubj)}(hjh]h*}(hjzhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjuzubj)}(hdma_bufh]hdma_buf}(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjuzubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjzubeh}(h]h ]h"]h$]h&]jjuh1jhjyhhhjyhMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjyhhhjyhMubah}(h]jyah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjyhMhjyhhubj[)}(hhh]h)}(hA:c:type:`drm_driver.gem_prime_import ` implementationh](h)}(h2:c:type:`drm_driver.gem_prime_import `h]j:)}(hj{h]hdrm_driver.gem_prime_import}(hj{hhhNhNubah}(h]h ](jj4c-typeeh"]h$]h&]uh1j9hjzubah}(h]h ]h"]h$]h&]refdocj  refdomainj4reftypetype refexplicitrefwarnjj)}j]jyc.amdgpu_gem_prime_importasbj drm_driveruh1hhjchK2hjzubh implementation}(hjzhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMhjzhhubah}(h]h ]h"]h$]h&]uh1jZhjyhhhjyhMubeh}(h]h ](j4functioneh"]h$]h&]jj4jj6{jj6{jjjuh1jbhhhj chNhNubj)}(hX**Parameters** ``struct drm_device *dev`` DRM device ``struct dma_buf *dma_buf`` Shared DMA buffer **Description** Import a dma_buf into a the driver and potentially create a new GEM object. **Return** GEM BO representing the shared DMA buffer for the given device.h](h)}(h**Parameters**h]j)}(hj@{h]h Parameters}(hjB{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>{ubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMhj:{ubj )}(hhh](j)}(h&``struct drm_device *dev`` DRM device h](j)}(h``struct drm_device *dev``h]j:)}(hj_{h]hstruct drm_device *dev}(hja{hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj]{ubah}(h]h ]h"]h$]h&]uh1jhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMhjY{ubj$)}(hhh]h)}(h DRM deviceh]h DRM device}(hjx{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjt{hMhju{ubah}(h]h ]h"]h$]h&]uh1j#hjY{ubeh}(h]h ]h"]h$]h&]uh1j hjt{hMhjV{ubj)}(h.``struct dma_buf *dma_buf`` Shared DMA buffer h](j)}(h``struct dma_buf *dma_buf``h]j:)}(hj{h]hstruct dma_buf *dma_buf}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj{ubah}(h]h ]h"]h$]h&]uh1jhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMhj{ubj$)}(hhh]h)}(hShared DMA bufferh]hShared DMA buffer}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj{hMhj{ubah}(h]h ]h"]h$]h&]uh1j#hj{ubeh}(h]h ]h"]h$]h&]uh1j hj{hMhjV{ubeh}(h]h ]h"]h$]h&]uh1jhj:{ubh)}(h**Description**h]j)}(hj{h]h Description}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj{ubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMhj:{ubh)}(hKImport a dma_buf into a the driver and potentially create a new GEM object.h]hKImport a dma_buf into a the driver and potentially create a new GEM object.}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMhj:{ubh)}(h **Return**h]j)}(hj{h]hReturn}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj{ubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMhj:{ubh)}(h?GEM BO representing the shared DMA buffer for the given device.h]h?GEM BO representing the shared DMA buffer for the given device.}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMhj:{ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj chhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^-amdgpu_dmabuf_is_xgmi_accessible (C function)"c.amdgpu_dmabuf_is_xgmi_accessiblehNtauh1jQhj chhhNhNubjc)}(hhh](jh)}(hXbool amdgpu_dmabuf_is_xgmi_accessible (struct amdgpu_device *adev, struct amdgpu_bo *bo)h]jn)}(hWbool amdgpu_dmabuf_is_xgmi_accessible(struct amdgpu_device *adev, struct amdgpu_bo *bo)h](jt)}(hjwh]hbool}(hj?|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj;|hhhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMEubj)}(h h]h }(hjM|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;|hhhjL|hMEubj)}(h amdgpu_dmabuf_is_xgmi_accessibleh]j)}(h amdgpu_dmabuf_is_xgmi_accessibleh]h amdgpu_dmabuf_is_xgmi_accessible}(hj_|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[|ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj;|hhhjL|hMEubj)}(h2(struct amdgpu_device *adev, struct amdgpu_bo *bo)h](j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hj{|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjw|ubj)}(h h]h }(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjw|ubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj|modnameN classnameNjj)}j]j)}jja|sb"c.amdgpu_dmabuf_is_xgmi_accessibleasbuh1hhjw|ubj)}(h h]h }(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjw|ubj)}(hjh]h*}(hj|hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjw|ubj)}(hadevh]hadev}(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjw|ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjs|ubj)}(hstruct amdgpu_bo *boh](j)}(hjh]hstruct}(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|ubj)}(h h]h }(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|ubh)}(hhh]j)}(h amdgpu_boh]h amdgpu_bo}(hj }hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj }modnameN classnameNjj)}j]j|"c.amdgpu_dmabuf_is_xgmi_accessibleasbuh1hhj|ubj)}(h h]h }(hj)}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|ubj)}(hjh]h*}(hj7}hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj|ubj)}(hboh]hbo}(hjD}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjs|ubeh}(h]h ]h"]h$]h&]jjuh1jhj;|hhhjL|hMEubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhj7|hhhjL|hMEubah}(h]j2|ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjL|hMEhj4|hhubj[)}(hhh]h)}(h(Check if xgmi available for P2P transferh]h(Check if xgmi available for P2P transfer}(hjn}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMEhjk}hhubah}(h]h ]h"]h$]h&]uh1jZhj4|hhhjL|hMEubeh}(h]h ](j4functioneh"]h$]h&]jj4jj}jj}jjjuh1jbhhhj chNhNubj)}(h**Parameters** ``struct amdgpu_device *adev`` amdgpu_device pointer of the importer ``struct amdgpu_bo *bo`` amdgpu buffer object **Return** True if dmabuf accessible over xgmi, false otherwise.h](h)}(h**Parameters**h]j)}(hj}h]h Parameters}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}ubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMIhj}ubj )}(hhh](j)}(hE``struct amdgpu_device *adev`` amdgpu_device pointer of the importer h](j)}(h``struct amdgpu_device *adev``h]j:)}(hj}h]hstruct amdgpu_device *adev}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj}ubah}(h]h ]h"]h$]h&]uh1jhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMGhj}ubj$)}(hhh]h)}(h%amdgpu_device pointer of the importerh]h%amdgpu_device pointer of the importer}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj}hMGhj}ubah}(h]h ]h"]h$]h&]uh1j#hj}ubeh}(h]h ]h"]h$]h&]uh1j hj}hMGhj}ubj)}(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&]uh1j9hj}ubah}(h]h ]h"]h$]h&]uh1jhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMHhj}ubj$)}(hhh]h)}(hamdgpu buffer objecth]hamdgpu buffer object}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj}hMHhj}ubah}(h]h ]h"]h$]h&]uh1j#hj}ubeh}(h]h ]h"]h$]h&]uh1j hj}hMHhj}ubeh}(h]h ]h"]h$]h&]uh1jhj}ubh)}(h **Return**h]j)}(hj#~h]hReturn}(hj%~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!~ubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMJhj}ubh)}(h5True if dmabuf accessible over xgmi, false otherwise.h]h5True if dmabuf accessible over xgmi, false otherwise.}(hj9~hhhNhNubah}(h]h ]h"]h$]h&]uh1hhs/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:207: ./drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.chMJhj}ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj chhhNhNubeh}(h]prime-buffer-sharingah ]h"]prime buffer sharingah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h MMU Notifierh]h MMU Notifier}(hjZ~hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjW~hhhhhKubh)}(h{For coherent userptr handling registers an MMU notifier to inform the driver about updates on the page tables of a process.h]h{For coherent userptr handling registers an MMU notifier to inform the driver about updates on the page tables of a process.}(hjh~hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:213: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chK hjW~hhubh)}(hWhen somebody tries to invalidate the page tables we block the update until all operations on the pages in question are completed, then those pages are marked as accessed and also dirty if it wasn't a read only access.h]hWhen somebody tries to invalidate the page tables we block the update until all operations on the pages in question are completed, then those pages are marked as accessed and also dirty if it wasn’t a read only access.}(hjw~hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:213: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chK#hjW~hhubh)}(hNew command submissions using the userptrs in question are delayed until all page table invalidation are completed and we once more see a coherent process address space.h]hNew command submissions using the userptrs in question are delayed until all page table invalidation are completed and we once more see a coherent process address space.}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:213: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chK'hjW~hhubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^&amdgpu_hmm_invalidate_gfx (C function)c.amdgpu_hmm_invalidate_gfxhNtauh1jQhjW~hhhNhNubjc)}(hhh](jh)}(hbool amdgpu_hmm_invalidate_gfx (struct mmu_interval_notifier *mni, const struct mmu_notifier_range *range, unsigned long cur_seq)h]jn)}(hbool amdgpu_hmm_invalidate_gfx(struct mmu_interval_notifier *mni, const struct mmu_notifier_range *range, unsigned long cur_seq)h](jt)}(hjwh]hbool}(hj~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj~hhho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:216: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chK7ubj)}(h h]h }(hj~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~hhhj~hK7ubj)}(hamdgpu_hmm_invalidate_gfxh]j)}(hamdgpu_hmm_invalidate_gfxh]hamdgpu_hmm_invalidate_gfx}(hj~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj~hhhj~hK7ubj)}(hb(struct mmu_interval_notifier *mni, const struct mmu_notifier_range *range, unsigned long cur_seq)h](j)}(h!struct mmu_interval_notifier *mnih](j)}(hjh]hstruct}(hj~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~ubj)}(h h]h }(hj~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~ubh)}(hhh]j)}(hmmu_interval_notifierh]hmmu_interval_notifier}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj modnameN classnameNjj)}j]j)}jj~sbc.amdgpu_hmm_invalidate_gfxasbuh1hhj~ubj)}(h h]h }(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~ubj)}(hjh]h*}(hj6hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj~ubj)}(hmnih]hmni}(hjChhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj~ubj)}(h&const struct mmu_notifier_range *rangeh](j)}(hconsth]hconst}(hj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjXubj)}(h h]h }(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjXubj)}(hjh]hstruct}(hjxhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjXubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjXubh)}(hhh]j)}(hmmu_notifier_rangeh]hmmu_notifier_range}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j$c.amdgpu_hmm_invalidate_gfxasbuh1hhjXubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjXubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjXubj)}(hrangeh]hrange}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjXubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj~ubj)}(hunsigned long cur_seqh](jt)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjt)}(hlongh]hlong}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hcur_seqh]hcur_seq}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj~ubeh}(h]h ]h"]h$]h&]jjuh1jhj~hhhj~hK7ubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhj~hhhj~hK7ubah}(h]j~ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghj~hK7hj~hhubj[)}(hhh]h)}(h"callback to notify about mm changeh]h"callback to notify about mm change}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:216: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chK7hjGhhubah}(h]h ]h"]h$]h&]uh1jZhj~hhhj~hK7ubeh}(h]h ](j4functioneh"]h$]h&]jj4jjbjjbjjjuh1jbhhhjW~hNhNubj)}(hXR**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** Block for operations on BOs to finish and mark pages as accessed and potentially dirty.h](h)}(h**Parameters**h]j)}(hjlh]h Parameters}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:216: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chK;hjfubj )}(hhh](j)}(hH``struct mmu_interval_notifier *mni`` the range (mm) is about to update h](j)}(h%``struct mmu_interval_notifier *mni``h]j:)}(hjh]h!struct mmu_interval_notifier *mni}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:216: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chK9hjubj$)}(hhh]h)}(h!the range (mm) is about to updateh]h!the range (mm) is about to update}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK9hjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhK9hjubj)}(hG``const struct mmu_notifier_range *range`` details on the invalidation h](j)}(h*``const struct mmu_notifier_range *range``h]j:)}(hjĀh]h&const struct mmu_notifier_range *range}(hjƀhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj€ubah}(h]h ]h"]h$]h&]uh1jho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:216: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chK:hjubj$)}(hhh]h)}(hdetails on the invalidationh]hdetails on the invalidation}(hj݀hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjـhK:hjڀubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjـhK:hjubj)}(hB``unsigned long cur_seq`` Value to pass to mmu_interval_set_seq() h](j)}(h``unsigned long cur_seq``h]j:)}(hjh]hunsigned long cur_seq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:216: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chK;hjubj$)}(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&]uh1hhjhK;hjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhK;hjubeh}(h]h ]h"]h$]h&]uh1jhjfubh)}(h**Description**h]j)}(hj8h]h Description}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:216: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chK=hjfubh)}(hWBlock for operations on BOs to finish and mark pages as accessed and potentially dirty.h]hWBlock for operations on BOs to finish and mark pages as accessed and potentially dirty.}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:216: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chKah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjYhKzhj@hhubj[)}(hhh]h)}(h"register a BO for notifier updatesh]h"register a BO for notifier updates}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:216: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chKzhjYhhubah}(h]h ]h"]h$]h&]uh1jZhj@hhhjYhKzubeh}(h]h ](j4functioneh"]h$]h&]jj4jjtjjtjjjuh1jbhhhjW~hNhNubj)}(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]j)}(hj~h]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|ubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:216: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chK~hjxubj )}(hhh](j)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:216: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chK|hjubj$)}(hhh]h)}(hamdgpu buffer objecth]hamdgpu buffer object}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK|hjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhK|hjubj)}(h6``unsigned long addr`` userptr addr we should monitor h](j)}(h``unsigned long addr``h]j:)}(hjօh]hunsigned long addr}(hj؅hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjԅubah}(h]h ]h"]h$]h&]uh1jho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:216: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chK}hjЅubj$)}(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&]uh1j#hjЅubeh}(h]h ]h"]h$]h&]uh1j hjhK}hjubeh}(h]h ]h"]h$]h&]uh1jhjxubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:216: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chKhjxubh)}(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:216: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chK~hjxubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjW~hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^"amdgpu_hmm_unregister (C function)c.amdgpu_hmm_unregisterhNtauh1jQhjW~hhhNhNubjc)}(hhh](jh)}(h1void amdgpu_hmm_unregister (struct amdgpu_bo *bo)h]jn)}(h0void amdgpu_hmm_unregister(struct amdgpu_bo *bo)h](jt)}(hvoidh]hvoid}(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjRhhho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:216: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chKubj)}(h h]h }(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjRhhhjdhKubj)}(hamdgpu_hmm_unregisterh]j)}(hamdgpu_hmm_unregisterh]hamdgpu_hmm_unregister}(hjwhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjsubah}(h]h ](jjeh"]h$]h&]jjuh1jhjRhhhjdhKubj)}(h(struct amdgpu_bo *bo)h]j)}(hstruct amdgpu_bo *boh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h amdgpu_boh]h amdgpu_bo}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j)}jjysbc.amdgpu_hmm_unregisterasbuh1hhjubj)}(h h]h }(hjцhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hj߆hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hboh]hbo}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubah}(h]h ]h"]h$]h&]jjuh1jhjRhhhjdhKubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjNhhhjdhKubah}(h]jIah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjdhKhjKhhubj[)}(hhh]h)}(h$unregister a BO for notifier updatesh]h$unregister a BO for notifier updates}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:216: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chKhjhhubah}(h]h ]h"]h$]h&]uh1jZhjKhhhjdhKubeh}(h]h ](j4functioneh"]h$]h&]jj4jj.jj.jjjuh1jbhhhjW~hNhNubj)}(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]j)}(hj8h]h Parameters}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:216: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chKhj2ubj )}(hhh]j)}(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&]uh1j9hjUubah}(h]h ]h"]h$]h&]uh1jho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:216: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chKhjQubj$)}(hhh]h)}(hamdgpu buffer objecth]hamdgpu buffer object}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hhjlhKhjmubah}(h]h ]h"]h$]h&]uh1j#hjQubeh}(h]h ]h"]h$]h&]uh1j hjlhKhjNubah}(h]h ]h"]h$]h&]uh1jhj2ubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:216: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chKhj2ubh)}(hGRemove any registration of mmu notifier updates from the buffer object.h]hGRemove any registration of mmu notifier updates from the buffer object.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:216: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chKhj2ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjW~hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^#amdgpu_hmm_range_valid (C function)c.amdgpu_hmm_range_validhNtauh1jQhjW~hhhNhNubjc)}(hhh](jh)}(h` to validate **Description** Determines whether the given HMM range **range** is still valid by checking for invalidations via the MMU notifier sequence. This is typically used to verify that the range has not been invalidated by concurrent address space updates before it is accessed. **Return** * true if **range** is valid and can be used safely * false if **range** is NULL or has been invalidatedh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:216: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chKhjubj )}(hhh]j)}(hs``struct amdgpu_hmm_range *range`` pointer to the :c:type:`struct amdgpu_hmm_range ` to validate h](j)}(h"``struct amdgpu_hmm_range *range``h]j:)}(hj׈h]hstruct amdgpu_hmm_range *range}(hjوhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjՈubah}(h]h ]h"]h$]h&]uh1jho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:216: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chKhjшubj$)}(hhh]h)}(hOpointer to the :c:type:`struct amdgpu_hmm_range ` to validateh](hpointer to the }(hjhhhNhNubh)}(h4:c:type:`struct amdgpu_hmm_range `h]j:)}(hjh]hstruct amdgpu_hmm_range}(hjhhhNhNubah}(h]h ](jj4c-typeeh"]h$]h&]uh1j9hjubah}(h]h ]h"]h$]h&]refdocj  refdomainj4reftypetype refexplicitrefwarnjjCjamdgpu_hmm_rangeuh1hhjhKhjubh to validate}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j#hjшubeh}(h]h ]h"]h$]h&]uh1j hjhKhjΈubah}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hj5h]h Description}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3ubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:216: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chKhjubh)}(hXDetermines whether the given HMM range **range** is still valid by checking for invalidations via the MMU notifier sequence. This is typically used to verify that the range has not been invalidated by concurrent address space updates before it is accessed.h](h'Determines whether the given HMM range }(hjKhhhNhNubj)}(h **range**h]hrange}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubh is still valid by checking for invalidations via the MMU notifier sequence. This is typically used to verify that the range has not been invalidated by concurrent address space updates before it is accessed.}(hjKhhhNhNubeh}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:216: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chKhjubh)}(h **Return**h]j)}(hjnh]hReturn}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jhjlubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:216: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chKhjubh bullet_list)}(hhh](j)}(h1true if **range** is valid and can be used safelyh]h)}(hjh](htrue if }(hjhhhNhNubj)}(h **range**h]hrange}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh is valid and can be used safely}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:216: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(h2false if **range** is NULL or has been invalidatedh]h)}(hjh](h false if }(hjhhhNhNubj)}(h **range**h]hrange}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh is NULL or has been invalidated}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:216: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]bulletjuh1jhjhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjW~hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^#amdgpu_hmm_range_alloc (C function)c.amdgpu_hmm_range_allochNtauh1jQhjW~hhhNhNubjc)}(hhh](jh)}(hGstruct amdgpu_hmm_range * amdgpu_hmm_range_alloc (struct amdgpu_bo *bo)h]jn)}(hEstruct amdgpu_hmm_range *amdgpu_hmm_range_alloc(struct amdgpu_bo *bo)h](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:216: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chKubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKubh)}(hhh]j)}(hamdgpu_hmm_rangeh]hamdgpu_hmm_range}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj%modnameN classnameNjj)}j]j)}jamdgpu_hmm_range_allocsbc.amdgpu_hmm_range_allocasbuh1hhjhhhjhKubj)}(h h]h }(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKubj)}(hjh]h*}(hjRhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjhhhjhKubj)}(hamdgpu_hmm_range_alloch]j)}(hjAh]hamdgpu_hmm_range_alloc}(hjchhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhKubj)}(h(struct amdgpu_bo *bo)h]j)}(hstruct amdgpu_bo *boh](j)}(hjh]hstruct}(hj~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjzubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjzubh)}(hhh]j)}(h amdgpu_boh]h amdgpu_bo}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j?c.amdgpu_hmm_range_allocasbuh1hhjzubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjzubj)}(hjh]h*}(hjȊhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjzubj)}(hboh]hbo}(hjՊhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjzubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjvubah}(h]h ]h"]h$]h&]jjuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjhhhjhKubah}(h]jah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjhKhjhhubj[)}(hhh]h)}(h+allocate and initialize an AMDGPU HMM rangeh]h+allocate and initialize an AMDGPU HMM range}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:216: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chKhjhhubah}(h]h ]h"]h$]h&]uh1jZhjhhhjhKubeh}(h]h ](j4functioneh"]h$]h&]jj4jjjjjjjuh1jbhhhjW~hNhNubj)}(hXh**Parameters** ``struct amdgpu_bo *bo`` optional buffer object to associate with this HMM range **Description** Allocates memory for amdgpu_hmm_range and associates it with the **bo** passed. The reference count of the **bo** is incremented. **Return** Pointer to a newly allocated struct amdgpu_hmm_range on success, or NULL if memory allocation fails.h](h)}(h**Parameters**h]j)}(hj!h]h Parameters}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:216: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chKhjubj )}(hhh]j)}(hQ``struct amdgpu_bo *bo`` optional buffer object to associate with this HMM range h](j)}(h``struct amdgpu_bo *bo``h]j:)}(hj@h]hstruct amdgpu_bo *bo}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj>ubah}(h]h ]h"]h$]h&]uh1jho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:216: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chKhj:ubj$)}(hhh]h)}(h7optional buffer object to associate with this HMM rangeh]h7optional buffer object to associate with this HMM range}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjUhKhjVubah}(h]h ]h"]h$]h&]uh1j#hj:ubeh}(h]h ]h"]h$]h&]uh1j hjUhKhj7ubah}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hj{h]h Description}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:216: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chKhjubh)}(hAllocates memory for amdgpu_hmm_range and associates it with the **bo** passed. The reference count of the **bo** is incremented.h](hAAllocates memory for amdgpu_hmm_range and associates it with the }(hjhhhNhNubj)}(h**bo**h]hbo}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh$ passed. The reference count of the }(hjhhhNhNubj)}(h**bo**h]hbo}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh is incremented.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:216: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chKhjubh)}(h **Return**h]j)}(hjƋh]hReturn}(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:216: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chKhjubh)}(hdPointer to a newly allocated struct amdgpu_hmm_range on success, or NULL if memory allocation fails.h]hdPointer to a newly allocated struct amdgpu_hmm_range on success, or NULL if memory allocation fails.}(hj܋hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:216: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjW~hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^"amdgpu_hmm_range_free (C function)c.amdgpu_hmm_range_freehNtauh1jQhjW~hhhNhNubjc)}(hhh](jh)}(h;void amdgpu_hmm_range_free (struct amdgpu_hmm_range *range)h]jn)}(h:void amdgpu_hmm_range_free(struct amdgpu_hmm_range *range)h](jt)}(hvoidh]hvoid}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjhhho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:216: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj)}(hamdgpu_hmm_range_freeh]j)}(hamdgpu_hmm_range_freeh]hamdgpu_hmm_range_free}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhMubj)}(h (struct amdgpu_hmm_range *range)h]j)}(hstruct amdgpu_hmm_range *rangeh](j)}(hjh]hstruct}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDubj)}(h h]h }(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDubh)}(hhh]j)}(hamdgpu_hmm_rangeh]hamdgpu_hmm_range}(hjfhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjcubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjhmodnameN classnameNjj)}j]j)}jj.sbc.amdgpu_hmm_range_freeasbuh1hhjDubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjDubj)}(hrangeh]hrange}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj@ubah}(h]h ]h"]h$]h&]jjuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjhhhjhMubah}(h]jah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjhMhjhhubj[)}(hhh]h)}(hrelease an AMDGPU HMM rangeh]hrelease an AMDGPU HMM range}(hjˌhhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:216: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chMhjȌhhubah}(h]h ]h"]h$]h&]uh1jZhjhhhjhMubeh}(h]h ](j4functioneh"]h$]h&]jj4jjjjjjjuh1jbhhhjW~hNhNubj)}(h**Parameters** ``struct amdgpu_hmm_range *range`` pointer to the range object to free **Description** Releases all resources held by **range**, including the associated hmm_pfns and the dropping reference of associated bo if any. **Return** voidh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:216: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chMhjubj )}(hhh]j)}(hG``struct amdgpu_hmm_range *range`` pointer to the range object to free h](j)}(h"``struct amdgpu_hmm_range *range``h]j:)}(hj h]hstruct amdgpu_hmm_range *range}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj ubah}(h]h ]h"]h$]h&]uh1jho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:216: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chMhjubj$)}(hhh]h)}(h#pointer to the range object to freeh]h#pointer to the range object to free}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!hMhj"ubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hj!hMhjubah}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjGh]h Description}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:216: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chMhjubh)}(hReleases all resources held by **range**, including the associated hmm_pfns and the dropping reference of associated bo if any.h](hReleases all resources held by }(hj]hhhNhNubj)}(h **range**h]hrange}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubhW, including the associated hmm_pfns and the dropping reference of associated bo if any.}(hj]hhhNhNubeh}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:216: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chMhjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~ubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:216: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chMhjubh)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:216: ./drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjW~hhhNhNubeh}(h] mmu-notifierah ]h"] mmu notifierah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hAMDGPU Virtual Memoryh]hAMDGPU Virtual Memory}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(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).}(hjōhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:222: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chK1hjhhubh)}(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.}(hjԍhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:222: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chK:hjhhubh)}(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:222: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKChjhhubh)}(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:222: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKGhjhhubh)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:222: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKPhjhhubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^amdgpu_prt_cb (C struct)c.amdgpu_prt_cbhNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(h amdgpu_prt_cbh]jn)}(hstruct amdgpu_prt_cbh](j)}(hjh]hstruct}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%hhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKubj)}(h h]h }(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%hhhj6hKubj)}(h amdgpu_prt_cbh]j)}(hj#h]h amdgpu_prt_cb}(hjIhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubah}(h]h ](jjeh"]h$]h&]jjuh1jhj%hhhj6hKubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhj!hhhj6hKubah}(h]jah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghj6hKhjhhubj[)}(hhh]h)}(hHHelper to disable partial resident texture feature from a fence callbackh]hHHelper to disable partial resident texture feature from a fence callback}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKdhjhhhubah}(h]h ]h"]h$]h&]uh1jZhjhhhj6hKubeh}(h]h ](j4structeh"]h$]h&]jj4jjjjjjjuh1jbhhhjhNhNubj)}(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](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhhjubh 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; };}hjsbah}(h]h ]h"]h$]h&]jjuh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKjhjubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKohjubj )}(hhh](j)}(h``adev`` amdgpu device h](j)}(h``adev``h]j:)}(hjڎh]hadev}(hj܎hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj؎ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKjhjԎubj$)}(hhh]h)}(h amdgpu deviceh]h amdgpu device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKjhjubah}(h]h ]h"]h$]h&]uh1j#hjԎubeh}(h]h ]h"]h$]h&]uh1j hjhKjhjюubj)}(h``cb`` callbackh](j)}(h``cb``h]j:)}(hjh]hcb}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKnhj ubj$)}(hhh]h)}(hcallbackh]hcallback}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKohj)ubah}(h]h ]h"]h$]h&]uh1j#hj ubeh}(h]h ]h"]h$]h&]uh1j hj(hKnhjюubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^#amdgpu_vm_tlb_seq_struct (C struct)c.amdgpu_vm_tlb_seq_structhNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(hamdgpu_vm_tlb_seq_structh]jn)}(hstruct amdgpu_vm_tlb_seq_structh](j)}(hjh]hstruct}(hjmhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjihhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKuubj)}(h h]h }(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjihhhjzhKuubj)}(hamdgpu_vm_tlb_seq_structh]j)}(hjgh]hamdgpu_vm_tlb_seq_struct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjihhhjzhKuubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjehhhjzhKuubah}(h]j`ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjzhKuhjbhhubj[)}(hhh]h)}(h*Helper to increment the TLB flush sequenceh]h*Helper to increment the TLB flush sequence}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKthjhhubah}(h]h ]h"]h$]h&]uh1jZhjbhhhjzhKuubeh}(h]h ](j4structeh"]h$]h&]jj4jjǏjjǏjjjuh1jbhhhjhNhNubj)}(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](j)}(h**Definition**h]h Definition}(hjӏhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjϏubh:}(hjϏhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKxhjˏubj)}(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&]jjuh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKzhjˏub"h)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjˏubj )}(hhh](j)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKyhjubj$)}(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}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj1hKyhj2ubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hj1hKyhjubj)}(h``cb`` callbackh](j)}(h``cb``h]j:)}(hjUh]hcb}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjSubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chK}hjOubj$)}(hhh]h)}(hcallbackh]hcallback}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chK~hjkubah}(h]h ]h"]h$]h&]uh1j#hjOubeh}(h]h ]h"]h$]h&]uh1j hjjhK}hjubeh}(h]h ]h"]h$]h&]uh1jhjˏubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^$amdgpu_vm_assert_locked (C function)c.amdgpu_vm_assert_lockedhNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(h3void amdgpu_vm_assert_locked (struct amdgpu_vm *vm)h]jn)}(h2void amdgpu_vm_assert_locked(struct amdgpu_vm *vm)h](jt)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKubj)}(hamdgpu_vm_assert_lockedh]j)}(hamdgpu_vm_assert_lockedh]hamdgpu_vm_assert_locked}(hjАhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj̐ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhKubj)}(h(struct amdgpu_vm *vm)h]j)}(hstruct amdgpu_vm *vmh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h amdgpu_vmh]h amdgpu_vm}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj modnameN classnameNjj)}j]j)}jjҐsbc.amdgpu_vm_assert_lockedasbuh1hhjubj)}(h h]h }(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hj8hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hvmh]hvm}(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubah}(h]h ]h"]h$]h&]jjuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjhhhjhKubah}(h]jah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjhKhjhhubj[)}(hhh]h)}(hcheck if VM is correctly lockedh]hcheck if VM is correctly locked}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjlhhubah}(h]h ]h"]h$]h&]uh1jZhjhhhjhKubeh}(h]h ](j4functioneh"]h$]h&]jj4jjjjjjjuh1jbhhhjhNhNubj)}(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]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjubj )}(hhh]j)}(h8``struct amdgpu_vm *vm`` the VM which schould be tested h](j)}(h``struct amdgpu_vm *vm``h]j:)}(hjh]hstruct amdgpu_vm *vm}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjubj$)}(hhh]h)}(hthe VM which schould be testedh]hthe VM which schould be tested}(hjɑhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjőhKhjƑubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjőhKhjubah}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjubh)}(h&Asserts that the VM root PD is locked.h]h&Asserts that the VM root PD is locked.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^)amdgpu_vm_is_bo_always_valid (C function)c.amdgpu_vm_is_bo_always_validhNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(hNbool amdgpu_vm_is_bo_always_valid (struct amdgpu_vm *vm, struct amdgpu_bo *bo)h]jn)}(hMbool amdgpu_vm_is_bo_always_valid(struct amdgpu_vm *vm, struct amdgpu_bo *bo)h](jt)}(hjwh]hbool}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj,hhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKubj)}(h h]h }(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,hhhj=hKubj)}(hamdgpu_vm_is_bo_always_validh]j)}(hamdgpu_vm_is_bo_always_validh]hamdgpu_vm_is_bo_always_valid}(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjLubah}(h]h ](jjeh"]h$]h&]jjuh1jhj,hhhj=hKubj)}(h,(struct amdgpu_vm *vm, struct amdgpu_bo *bo)h](j)}(hstruct amdgpu_vm *vmh](j)}(hjh]hstruct}(hjlhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhubj)}(h h]h }(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhubh)}(hhh]j)}(h amdgpu_vmh]h amdgpu_vm}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j)}jjRsbc.amdgpu_vm_is_bo_always_validasbuh1hhjhubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjhubj)}(hvmh]hvm}(hjŒhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjdubj)}(hstruct amdgpu_bo *boh](j)}(hjh]hstruct}(hjޒhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjڒubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjڒubh)}(hhh]j)}(h amdgpu_boh]h amdgpu_bo}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]jc.amdgpu_vm_is_bo_always_validasbuh1hhjڒubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjڒubj)}(hjh]h*}(hj(hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjڒubj)}(hboh]hbo}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjڒubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjdubeh}(h]h ]h"]h$]h&]jjuh1jhj,hhhj=hKubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhj(hhhj=hKubah}(h]j#ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghj=hKhj%hhubj[)}(hhh]h)}(h"check if the BO is VM always validh]h"check if the BO is VM always valid}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhj\hhubah}(h]h ]h"]h$]h&]uh1jZhj%hhhj=hKubeh}(h]h ](j4functioneh"]h$]h&]jj4jjwjjwjjjuh1jbhhhjhNhNubj)}(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]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhj{ubj )}(hhh](j)}(h-``struct amdgpu_vm *vm`` VM to test against. h](j)}(h``struct amdgpu_vm *vm``h]j:)}(hjh]hstruct amdgpu_vm *vm}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjubj$)}(hhh]h)}(hVM to test against.h]hVM to test against.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhKhjubj)}(h*``struct amdgpu_bo *bo`` BO to be tested. h](j)}(h``struct amdgpu_bo *bo``h]j:)}(hjٓh]hstruct amdgpu_bo *bo}(hjۓhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjדubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjӓubj$)}(hhh]h)}(hBO to be tested.h]hBO to be tested.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j#hjӓubeh}(h]h ]h"]h$]h&]uh1j hjhKhjubeh}(h]h ]h"]h$]h&]uh1jhj{ubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhj{ubh)}(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.}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhj{ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^!amdgpu_vm_bo_evicted (C function)c.amdgpu_vm_bo_evictedhNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(h;void amdgpu_vm_bo_evicted (struct amdgpu_vm_bo_base *vm_bo)h]jn)}(h:void amdgpu_vm_bo_evicted(struct amdgpu_vm_bo_base *vm_bo)h](jt)}(hvoidh]hvoid}(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjUhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKubj)}(h h]h }(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjUhhhjghKubj)}(hamdgpu_vm_bo_evictedh]j)}(hamdgpu_vm_bo_evictedh]hamdgpu_vm_bo_evicted}(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjvubah}(h]h ](jjeh"]h$]h&]jjuh1jhjUhhhjghKubj)}(h!(struct amdgpu_vm_bo_base *vm_bo)h]j)}(hstruct amdgpu_vm_bo_base *vm_boh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(hamdgpu_vm_bo_baseh]hamdgpu_vm_bo_base}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j)}jj|sbc.amdgpu_vm_bo_evictedasbuh1hhjubj)}(h h]h }(hjԔhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hvm_boh]hvm_bo}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubah}(h]h ]h"]h$]h&]jjuh1jhjUhhhjghKubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjQhhhjghKubah}(h]jLah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjghKhjNhhubj[)}(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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjhhubah}(h]h ]h"]h$]h&]uh1jZhjNhhhjghKubeh}(h]h ](j4functioneh"]h$]h&]jj4jj1jj1jjjuh1jbhhhjhNhNubj)}(h**Parameters** ``struct amdgpu_vm_bo_base *vm_bo`` vm_bo which is evicted **Description** State for vm_bo objects meaning the underlying BO was evicted and need to move in place again.h](h)}(h**Parameters**h]j)}(hj;h]h Parameters}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhj5ubj )}(hhh]j)}(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:)}(hjZh]hstruct amdgpu_vm_bo_base *vm_bo}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjXubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjTubj$)}(hhh]h)}(hvm_bo which is evictedh]hvm_bo which is evicted}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhjohKhjpubah}(h]h ]h"]h$]h&]uh1j#hjTubeh}(h]h ]h"]h$]h&]uh1j hjohKhjQubah}(h]h ]h"]h$]h&]uh1jhj5ubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhj5ubh)}(h^State for vm_bo objects meaning the underlying BO was evicted and need to move in place again.h]h^State for vm_bo objects meaning the underlying BO was evicted and need to move in place again.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhj5ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^&amdgpu_vm_bo_needs_update (C function)c.amdgpu_vm_bo_needs_updatehNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(h@void amdgpu_vm_bo_needs_update (struct amdgpu_vm_bo_base *vm_bo)h]jn)}(h?void amdgpu_vm_bo_needs_update(struct amdgpu_vm_bo_base *vm_bo)h](jt)}(hvoidh]hvoid}(hjڕhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj֕hhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj֕hhhjhKubj)}(hamdgpu_vm_bo_needs_updateh]j)}(hamdgpu_vm_bo_needs_updateh]hamdgpu_vm_bo_needs_update}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhj֕hhhjhKubj)}(h!(struct amdgpu_vm_bo_base *vm_bo)h]j)}(hstruct amdgpu_vm_bo_base *vm_boh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(hamdgpu_vm_bo_baseh]hamdgpu_vm_bo_base}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj7modnameN classnameNjj)}j]j)}jjsbc.amdgpu_vm_bo_needs_updateasbuh1hhjubj)}(h h]h }(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjchhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hvm_boh]hvm_bo}(hjphhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubah}(h]h ]h"]h$]h&]jjuh1jhj֕hhhjhKubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjҕhhhjhKubah}(h]j͕ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjhKhjϕhhubj[)}(hhh]h)}(hvm_bo needs pagetable updateh]hvm_bo needs pagetable update}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjhhubah}(h]h ]h"]h$]h&]uh1jZhjϕhhhjhKubeh}(h]h ](j4functioneh"]h$]h&]jj4jjjjjjjuh1jbhhhjhNhNubj)}(h**Parameters** ``struct amdgpu_vm_bo_base *vm_bo`` vm_bo which is out of date **Description** State for vm_bo objects meaning the underlying BO had mapping changes (move, PRT bind/unbind) but the new location is not yet reflected in the page tables.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjubj )}(hhh]j)}(h?``struct amdgpu_vm_bo_base *vm_bo`` vm_bo which is out of date h](j)}(h#``struct amdgpu_vm_bo_base *vm_bo``h]j:)}(hjۖh]hstruct amdgpu_vm_bo_base *vm_bo}(hjݖhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjٖubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjՖubj$)}(hhh]h)}(hvm_bo which is out of dateh]hvm_bo which is out of date}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j#hjՖubeh}(h]h ]h"]h$]h&]uh1j hjhKhjҖubah}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjubh)}(hState for vm_bo objects meaning the underlying BO had mapping changes (move, PRT bind/unbind) but the new location is not yet reflected in the page tables.h]hState for vm_bo objects meaning the underlying BO had mapping changes (move, PRT bind/unbind) but the new location 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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^amdgpu_vm_bo_idle (C function)c.amdgpu_vm_bo_idlehNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(h8void amdgpu_vm_bo_idle (struct amdgpu_vm_bo_base *vm_bo)h]jn)}(h7void amdgpu_vm_bo_idle(struct amdgpu_vm_bo_base *vm_bo)h](jt)}(hvoidh]hvoid}(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjWhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKubj)}(h h]h }(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWhhhjihKubj)}(hamdgpu_vm_bo_idleh]j)}(hamdgpu_vm_bo_idleh]hamdgpu_vm_bo_idle}(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjxubah}(h]h ](jjeh"]h$]h&]jjuh1jhjWhhhjihKubj)}(h!(struct amdgpu_vm_bo_base *vm_bo)h]j)}(hstruct amdgpu_vm_bo_base *vm_boh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(hamdgpu_vm_bo_baseh]hamdgpu_vm_bo_base}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j)}jj~sbc.amdgpu_vm_bo_idleasbuh1hhjubj)}(h h]h }(hj֗hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hvm_boh]hvm_bo}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubah}(h]h ]h"]h$]h&]jjuh1jhjWhhhjihKubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjShhhjihKubah}(h]jNah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjihKhjPhhubj[)}(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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjhhubah}(h]h ]h"]h$]h&]uh1jZhjPhhhjihKubeh}(h]h ](j4functioneh"]h$]h&]jj4jj3jj3jjjuh1jbhhhjhNhNubj)}(h**Parameters** ``struct amdgpu_vm_bo_base *vm_bo`` vm_bo which is now idle **Description** State for vm_bo objects meaning we are done with the state machine and no further action is necessary.h](h)}(h**Parameters**h]j)}(hj=h]h Parameters}(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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhj7ubj )}(hhh]j)}(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:)}(hj\h]hstruct amdgpu_vm_bo_base *vm_bo}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjZubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhjVubj$)}(hhh]h)}(hvm_bo which is now idleh]hvm_bo which is now idle}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjqhKhjrubah}(h]h ]h"]h$]h&]uh1j#hjVubeh}(h]h ]h"]h$]h&]uh1j hjqhKhjSubah}(h]h ]h"]h$]h&]uh1jhj7ubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhj7ubh)}(hfState for vm_bo objects meaning we are done with the state machine and no further action is necessary.h]hfState for vm_bo objects meaning we are done with the state machine and no further action is necessary.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chKhj7ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^-amdgpu_vm_bo_reset_state_machine (C function)"c.amdgpu_vm_bo_reset_state_machinehNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(htbo.resource ``int sign`` if we should add (+1) or subtract (-1) from the stat **Description** Caller need to have the vm stats_lock held. Useful for when multiple update need to happen at the same time.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMThjubj )}(hhh](j)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMQhjubj$)}(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&]uh1hhjhMQhjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMQhjubj)}(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&]uh1j9hj<ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMShj8ubj$)}(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}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMRhjTubah}(h]h ]h"]h$]h&]uh1j#hj8ubeh}(h]h ]h"]h$]h&]uh1j hjShMShjubj)}(hB``int sign`` if we should add (+1) or subtract (-1) from the stat h](j)}(h ``int sign``h]j:)}(hjxh]hint sign}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjvubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMThjrubj$)}(hhh]h)}(h4if we should add (+1) or subtract (-1) from the stath]h4if we should add (+1) or subtract (-1) from the stat}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMThjubah}(h]h ]h"]h$]h&]uh1j#hjrubeh}(h]h ]h"]h$]h&]uh1j hjhMThjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMVhjubh)}(hlCaller need to have the vm stats_lock held. Useful for when multiple update need to happen at the same time.h]hlCaller need to have the vm stats_lock held. Useful for when multiple update need to happen at the same time.}(hjɟhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMUhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^#amdgpu_vm_update_stats (C function)c.amdgpu_vm_update_statshNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(h`void amdgpu_vm_update_stats (struct amdgpu_vm_bo_base *base, struct ttm_resource *res, int sign)h]jn)}(h_void amdgpu_vm_update_stats(struct amdgpu_vm_bo_base *base, struct ttm_resource *res, int sign)h](jt)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMyubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMyubj)}(hamdgpu_vm_update_statsh]j)}(hamdgpu_vm_update_statsh]hamdgpu_vm_update_stats}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhMyubj)}(hD(struct amdgpu_vm_bo_base *base, struct ttm_resource *res, int sign)h](j)}(hstruct amdgpu_vm_bo_base *baseh](j)}(hjh]hstruct}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubj)}(h h]h }(hjBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubh)}(hhh]j)}(hamdgpu_vm_bo_baseh]hamdgpu_vm_bo_base}(hjShhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjUmodnameN classnameNjj)}j]j)}jjsbc.amdgpu_vm_update_statsasbuh1hhj1ubj)}(h h]h }(hjshhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj1ubj)}(hbaseh]hbase}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj-ubj)}(hstruct ttm_resource *resh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h ttm_resourceh]h ttm_resource}(hjŠhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjǠmodnameN classnameNjj)}j]joc.amdgpu_vm_update_statsasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hresh]hres}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj-ubj)}(hint signh](jt)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjubj)}(h h]h }(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hsignh]hsign}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj-ubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhjhMyubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjhhhjhMyubah}(h]jah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjhMyhjhhubj[)}(hhh]h)}(h#helper to update normal memory stath]h#helper to update normal memory stat}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMyhjZhhubah}(h]h ]h"]h$]h&]uh1jZhjhhhjhMyubeh}(h]h ](j4functioneh"]h$]h&]jj4jjujjujjjuh1jbhhhjhNhNubj)}(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]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM}hjyubj )}(hhh](j)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMzhjubj$)}(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&]uh1hhjhMzhjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMzhjubj)}(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&]uh1j9hjաubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM|hjѡ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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM{hjubah}(h]h ]h"]h$]h&]uh1j#hjѡubeh}(h]h ]h"]h$]h&]uh1j hjhM|hjubj)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM}hj ubj$)}(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&hM}hj'ubah}(h]h ]h"]h$]h&]uh1j#hj ubeh}(h]h ]h"]h$]h&]uh1j hj&hM}hjubeh}(h]h ]h"]h$]h&]uh1jhjyubh)}(h**Description**h]j)}(hjLh]h Description}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjyubh)}(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.}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM~hjyubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^#amdgpu_vm_bo_base_init (C function)c.amdgpu_vm_bo_base_inithNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(hhvoid amdgpu_vm_bo_base_init (struct amdgpu_vm_bo_base *base, struct amdgpu_vm *vm, struct amdgpu_bo *bo)h]jn)}(hgvoid amdgpu_vm_bo_base_init(struct amdgpu_vm_bo_base *base, struct amdgpu_vm *vm, struct amdgpu_bo *bo)h](jt)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj)}(hamdgpu_vm_bo_base_inith]j)}(hamdgpu_vm_bo_base_inith]hamdgpu_vm_bo_base_init}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhMubj)}(hL(struct amdgpu_vm_bo_base *base, struct amdgpu_vm *vm, struct amdgpu_bo *bo)h](j)}(hstruct amdgpu_vm_bo_base *baseh](j)}(hjh]hstruct}(hj΢hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjʢubj)}(h h]h }(hjۢhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjʢubh)}(hhh]j)}(hamdgpu_vm_bo_baseh]hamdgpu_vm_bo_base}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.amdgpu_vm_bo_base_initasbuh1hhjʢubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjʢubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjʢubj)}(hbaseh]hbase}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjʢubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjƢubj)}(hstruct amdgpu_vm *vmh](j)}(hjh]hstruct}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<ubj)}(h h]h }(hjMhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<ubh)}(hhh]j)}(h amdgpu_vmh]h amdgpu_vm}(hj^hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj`modnameN classnameNjj)}j]jc.amdgpu_vm_bo_base_initasbuh1hhj<ubj)}(h h]h }(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj<ubj)}(hvmh]hvm}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjƢubj)}(hstruct amdgpu_bo *boh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h amdgpu_boh]h amdgpu_bo}(hjΣhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjˣubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjУmodnameN classnameNjj)}j]jc.amdgpu_vm_bo_base_initasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hboh]hbo}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjƢubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjhhhjhMubah}(h]jah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjhMhjhhubj[)}(hhh]h)}(h1Adds bo to the list of bos associated with the vmh]h1Adds bo to the list of bos associated with the vm}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj.hhubah}(h]h ]h"]h$]h&]uh1jZhjhhhjhMubeh}(h]h ](j4functioneh"]h$]h&]jj4jjIjjIjjjuh1jbhhhjhNhNubj)}(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]j)}(hjSh]h Parameters}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjMubj )}(hhh](j)}(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:)}(hjrh]hstruct amdgpu_vm_bo_base *base}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjpubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjlubj$)}(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&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j#hjlubeh}(h]h ]h"]h$]h&]uh1j hjhMhjiubj)}(h7``struct amdgpu_vm *vm`` vm to which bo is to be added h](j)}(h``struct amdgpu_vm *vm``h]j:)}(hjh]hstruct amdgpu_vm *vm}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj$)}(hhh]h)}(hvm to which bo is to be addedh]hvm to which bo is to be added}(hjĤhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjiubj)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./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&]uh1j#hjޤubeh}(h]h ]h"]h$]h&]uh1j hjhMhjiubeh}(h]h ]h"]h$]h&]uh1jhjMubh)}(h**Description**h]j)}(hjh]h Description}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjMubh)}(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}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjMubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^amdgpu_vm_lock_pd (C function)c.amdgpu_vm_lock_pdhNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(h\int amdgpu_vm_lock_pd (struct amdgpu_vm *vm, struct drm_exec *exec, unsigned int num_fences)h]jn)}(h[int amdgpu_vm_lock_pd(struct amdgpu_vm *vm, struct drm_exec *exec, unsigned int num_fences)h](jt)}(hinth]hint}(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj`hhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMubj)}(h h]h }(hjshhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`hhhjrhMubj)}(hamdgpu_vm_lock_pdh]j)}(hamdgpu_vm_lock_pdh]hamdgpu_vm_lock_pd}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhj`hhhjrhMubj)}(hF(struct amdgpu_vm *vm, struct drm_exec *exec, unsigned int num_fences)h](j)}(hstruct amdgpu_vm *vmh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h amdgpu_vmh]h amdgpu_vm}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.amdgpu_vm_lock_pdasbuh1hhjubj)}(h h]h }(hjߥhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hvmh]hvm}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hstruct drm_exec *exech](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(hdrm_exech]hdrm_exec}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj3modnameN classnameNjj)}j]jۥc.amdgpu_vm_lock_pdasbuh1hhjubj)}(h h]h }(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hj]hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hexech]hexec}(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hunsigned int num_fencesh](jt)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjt)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h num_fencesh]h num_fences}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhj`hhhjrhMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhj\hhhjrhMubah}(h]jWah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjrhMhjYhhubj[)}(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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjhhubah}(h]h ]h"]h$]h&]uh1jZhjYhhhjrhMubeh}(h]h ](j4functioneh"]h$]h&]jj4jjjjjjjuh1jbhhhjhNhNubj)}(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]j)}(hjh]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj )}(hhh](j)}(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&]uh1j9hj$ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj ubj$)}(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&]uh1j#hj ubeh}(h]h ]h"]h$]h&]uh1j hj;hMhjubj)}(h0``struct drm_exec *exec`` drm execution context h](j)}(h``struct drm_exec *exec``h]j:)}(hj_h]hstruct drm_exec *exec}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj]ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjYubj$)}(hhh]h)}(hdrm execution contexth]hdrm execution context}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjthMhjuubah}(h]h ]h"]h$]h&]uh1j#hjYubeh}(h]h ]h"]h$]h&]uh1j hjthMhjubj)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./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&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjӧh]h Description}(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:225: ./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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^&amdgpu_vm_lock_individual (C function)c.amdgpu_vm_lock_individualhNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(hdint amdgpu_vm_lock_individual (struct amdgpu_vm *vm, struct drm_exec *exec, unsigned int num_fences)h]jn)}(hcint amdgpu_vm_lock_individual(struct amdgpu_vm *vm, struct drm_exec *exec, unsigned int num_fences)h](jt)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMubj)}(h h]h }(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhj&hMubj)}(hamdgpu_vm_lock_individualh]j)}(hamdgpu_vm_lock_individualh]hamdgpu_vm_lock_individual}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhj&hMubj)}(hF(struct amdgpu_vm *vm, struct drm_exec *exec, unsigned int num_fences)h](j)}(hstruct amdgpu_vm *vmh](j)}(hjh]hstruct}(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQubj)}(h h]h }(hjbhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQubh)}(hhh]j)}(h amdgpu_vmh]h amdgpu_vm}(hjshhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjpubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjumodnameN classnameNjj)}j]j)}jj;sbc.amdgpu_vm_lock_individualasbuh1hhjQubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjQubj)}(hvmh]hvm}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjMubj)}(hstruct drm_exec *exech](j)}(hjh]hstruct}(hjǨhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjèubj)}(h h]h }(hjԨhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjèubh)}(hhh]j)}(hdrm_exech]hdrm_exec}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]jc.amdgpu_vm_lock_individualasbuh1hhjèubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjèubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjèubj)}(hexech]hexec}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjèubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjMubj)}(hunsigned int num_fencesh](jt)}(hunsignedh]hunsigned}(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj3ubj)}(h h]h }(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubjt)}(hinth]hint}(hjShhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj3ubj)}(h h]h }(hjahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubj)}(h num_fencesh]h num_fences}(hjohhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjMubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhj&hMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjhhhj&hMubah}(h]j ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghj&hMhj hhubj[)}(hhh]h)}(h(lock all BOs on the individual idle listh]h(lock all BOs on the individual idle list}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjhhubah}(h]h ]h"]h$]h&]uh1jZhj hhhj&hMubeh}(h]h ](j4functioneh"]h$]h&]jj4jjjjjjjuh1jbhhhjhNhNubj)}(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 individual idle list in the DRM execution context.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj )}(hhh](j)}(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&]uh1j9hjةubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjԩubj$)}(hhh]h)}(hvm providing the BOsh]hvm providing the BOs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j#hjԩubeh}(h]h ]h"]h$]h&]uh1j hjhMhjѩubj)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj ubj$)}(hhh]h)}(hdrm execution contexth]hdrm execution context}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(hMhj)ubah}(h]h ]h"]h$]h&]uh1j#hj ubeh}(h]h ]h"]h$]h&]uh1j hj(hMhjѩubj)}(h>``unsigned int num_fences`` number of extra fences to reserve h](j)}(h``unsigned int num_fences``h]j:)}(hjLh]hunsigned int num_fences}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjJubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjFubj$)}(hhh]h)}(h!number of extra fences to reserveh]h!number of extra fences to reserve}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhjahMhjbubah}(h]h ]h"]h$]h&]uh1j#hjFubeh}(h]h ]h"]h$]h&]uh1j hjahMhjѩubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(hFLock the BOs on the individual idle list in the DRM execution context.h]hFLock the BOs on the individual idle list in the DRM execution context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^'amdgpu_vm_move_to_lru_tail (C function)c.amdgpu_vm_move_to_lru_tailhNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(hRvoid amdgpu_vm_move_to_lru_tail (struct amdgpu_device *adev, struct amdgpu_vm *vm)h]jn)}(hQvoid amdgpu_vm_move_to_lru_tail(struct amdgpu_device *adev, struct amdgpu_vm *vm)h](jt)}(hvoidh]hvoid}(hj̪hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjȪhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMubj)}(h h]h }(hj۪hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjȪhhhjڪhMubj)}(hamdgpu_vm_move_to_lru_tailh]j)}(hamdgpu_vm_move_to_lru_tailh]hamdgpu_vm_move_to_lru_tail}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjȪhhhjڪhMubj)}(h2(struct amdgpu_device *adev, struct amdgpu_vm *vm)h](j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj)modnameN classnameNjj)}j]j)}jjsbc.amdgpu_vm_move_to_lru_tailasbuh1hhjubj)}(h h]h }(hjGhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjUhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hadevh]hadev}(hjbhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hstruct amdgpu_vm *vmh](j)}(hjh]hstruct}(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwubh)}(hhh]j)}(h amdgpu_vmh]h amdgpu_vm}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]jCc.amdgpu_vm_move_to_lru_tailasbuh1hhjwubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwubj)}(hjh]h*}(hjūhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjwubj)}(hvmh]hvm}(hjҫhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhjȪhhhjڪhMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjĪhhhjڪhMubah}(h]jah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjڪhMhjhhubj[)}(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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjhhubah}(h]h ]h"]h$]h&]uh1jZhjhhhjڪhMubeh}(h]h ](j4functioneh"]h$]h&]jj4jjjjjjjuh1jbhhhjhNhNubj)}(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]j)}(hjh]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj )}(hhh](j)}(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&]uh1j9hj;ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj7ubj$)}(hhh]h)}(hamdgpu device pointerh]hamdgpu device pointer}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjRhMhjSubah}(h]h ]h"]h$]h&]uh1j#hj7ubeh}(h]h ]h"]h$]h&]uh1j hjRhMhj4ubj)}(h.``struct amdgpu_vm *vm`` vm providing the BOs h](j)}(h``struct amdgpu_vm *vm``h]j:)}(hjvh]hstruct amdgpu_vm *vm}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjtubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjpubj$)}(hhh]h)}(hvm providing the BOsh]hvm providing the BOs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j#hjpubeh}(h]h ]h"]h$]h&]uh1j hjhMhj4ubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./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.}(hjǬhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^!amdgpu_vm_generation (C function)c.amdgpu_vm_generationhNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(hPuint64_t amdgpu_vm_generation (struct amdgpu_device *adev, struct amdgpu_vm *vm)h]jn)}(hOuint64_t amdgpu_vm_generation(struct amdgpu_device *adev, struct amdgpu_vm *vm)h](h)}(hhh]j)}(huint64_th]huint64_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j)}jamdgpu_vm_generationsbc.amdgpu_vm_generationasbuh1hhjhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM"ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhM"ubj)}(hamdgpu_vm_generationh]j)}(hjh]hamdgpu_vm_generation}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhM"ubj)}(h2(struct amdgpu_device *adev, struct amdgpu_vm *vm)h](j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDubj)}(h h]h }(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hjfhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjcubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjhmodnameN classnameNjj)}j]jc.amdgpu_vm_generationasbuh1hhjDubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjDubj)}(hadevh]hadev}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj@ubj)}(hstruct amdgpu_vm *vmh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjŭhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h amdgpu_vmh]h amdgpu_vm}(hj֭hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjӭubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjحmodnameN classnameNjj)}j]jc.amdgpu_vm_generationasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hvmh]hvm}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj@ubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhjhM"ubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjhhhjhM"ubah}(h]jah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjhM"hjhhubj[)}(hhh]h)}(h+return the page table re-generation counterh]h+return the page table re-generation counter}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM"hj6hhubah}(h]h ]h"]h$]h&]uh1jZhjhhhjhM"ubeh}(h]h ](j4functioneh"]h$]h&]jj4jjQjjQjjjuh1jbhhhjhNhNubj)}(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]j)}(hj[h]h Parameters}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjYubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM&hjUubj )}(hhh](j)}(h1``struct amdgpu_device *adev`` the amdgpu_device h](j)}(h``struct amdgpu_device *adev``h]j:)}(hjzh]hstruct amdgpu_device *adev}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjxubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM#hjtubj$)}(hhh]h)}(hthe amdgpu_deviceh]hthe amdgpu_device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM#hjubah}(h]h ]h"]h$]h&]uh1j#hjtubeh}(h]h ]h"]h$]h&]uh1j hjhM#hjqubj)}(h=``struct amdgpu_vm *vm`` optional VM to check, might be NULL h](j)}(h``struct amdgpu_vm *vm``h]j:)}(hjh]hstruct amdgpu_vm *vm}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM$hjubj$)}(hhh]h)}(h#optional VM to check, might be NULLh]h#optional VM to check, might be NULL}(hj̮hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjȮhM$hjɮubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjȮhM$hjqubeh}(h]h ]h"]h$]h&]uh1jhjUubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM&hjUubh)}(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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM%hjUubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^amdgpu_vm_validate (C function)c.amdgpu_vm_validatehNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(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]jn)}(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](jt)}(hinth]hint}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj/hhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM:ubj)}(h h]h }(hjBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj/hhhjAhM:ubj)}(hamdgpu_vm_validateh]j)}(hamdgpu_vm_validateh]hamdgpu_vm_validate}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPubah}(h]h ](jjeh"]h$]h&]jjuh1jhj/hhhjAhM:ubj)}(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](j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hjphhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjlubj)}(h h]h }(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjlubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j)}jjVsbc.amdgpu_vm_validateasbuh1hhjlubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjlubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjlubj)}(hadevh]hadev}(hjɯhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjlubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjhubj)}(hstruct amdgpu_vm *vmh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjޯubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjޯubh)}(hhh]j)}(h amdgpu_vmh]h amdgpu_vm}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]jc.amdgpu_vm_validateasbuh1hhjޯubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjޯubj)}(hjh]h*}(hj,hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjޯubj)}(hvmh]hvm}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjޯubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjhubj)}(hstruct ww_acquire_ctx *ticketh](j)}(hjh]hstruct}(hjRhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjNubj)}(h h]h }(hj_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjNubh)}(hhh]j)}(hww_acquire_ctxh]hww_acquire_ctx}(hjphhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjmubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjrmodnameN classnameNjj)}j]jc.amdgpu_vm_validateasbuh1hhjNubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjNubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjNubj)}(hticketh]hticket}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjNubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjhubj)}(h.int (*validate)(void *p, struct amdgpu_bo *bo)h](jt)}(hinth]hint}(hj°hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjubj)}(h h]h }(hjаhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h(h]h(}(hjްhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hvalidateh]hvalidate}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h)h]h)}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hjh]h(}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubjt)}(hvoidh]hvoid}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjubj)}(h h]h }(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hj>hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hj'h]hp}(hjKhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h,h]h,}(hjXhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(h h]h }(hjfhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]hstruct}(hjthhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h amdgpu_boh]h amdgpu_bo}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]jc.amdgpu_vm_validateasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hboh]hbo}(hj˱hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hj h]h)}(hjٱhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjhubj)}(h void *paramh](jt)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hparamh]hparam}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjhubeh}(h]h ]h"]h$]h&]jjuh1jhj/hhhjAhM:ubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhj+hhhjAhM:ubah}(h]j&ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjAhM:hj(hhubj[)}(hhh]h)}(h&validate evicted BOs tracked in the VMh]h&validate evicted BOs tracked in the VM}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM:hjAhhubah}(h]h ]h"]h$]h&]uh1jZhj(hhhjAhM:ubeh}(h]h ](j4functioneh"]h$]h&]jj4jj\jj\jjjuh1jbhhhjhNhNubj)}(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]j)}(hjfh]h Parameters}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM>hj`ubj )}(hhh](j)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM<hjubj$)}(hhh]h)}(hamdgpu device pointerh]hamdgpu device pointer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM<hjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhM<hj|ubj)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM=hjubj$)}(hhh]h)}(hvm providing the BOsh]hvm providing the BOs}(hjײhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjӲhM=hjԲubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjӲhM=hj|ubj)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM>hjubj$)}(hhh]h)}(h2optional reservation ticket used to reserve the VMh]h2optional reservation ticket used to reserve the VM}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hM>hj ubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hj hM>hj|ubj)}(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:)}(hj0h]h.int (*validate)(void *p, struct amdgpu_bo *bo)}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj.ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM?hj*ubj$)}(hhh]h)}(hcallback to do the validationh]hcallback to do the validation}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjEhM?hjFubah}(h]h ]h"]h$]h&]uh1j#hj*ubeh}(h]h ]h"]h$]h&]uh1j hjEhM?hj|ubj)}(h6``void *param`` parameter for the validation callback h](j)}(h``void *param``h]j:)}(hjih]h void *param}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjgubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM@hjcubj$)}(hhh]h)}(h%parameter for the validation callbackh]h%parameter for the validation callback}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj~hM@hjubah}(h]h ]h"]h$]h&]uh1j#hjcubeh}(h]h ]h"]h$]h&]uh1j hj~hM@hj|ubeh}(h]h ]h"]h$]h&]uh1jhj`ubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMBhj`ubh)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMAhj`ubh)}(h **Return**h]j)}(hj˳h]hReturn}(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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMEhj`ubh)}(hValidation result.h]hValidation result.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMFhj`ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^amdgpu_vm_ready (C function)c.amdgpu_vm_readyhNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(h+bool amdgpu_vm_ready (struct amdgpu_vm *vm)h]jn)}(h*bool amdgpu_vm_ready(struct amdgpu_vm *vm)h](jt)}(hjwh]hbool}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj hhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhjhMubj)}(hamdgpu_vm_readyh]j)}(hamdgpu_vm_readyh]hamdgpu_vm_ready}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj hhhjhMubj)}(h(struct amdgpu_vm *vm)h]j)}(hstruct amdgpu_vm *vmh](j)}(hjh]hstruct}(hjLhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjHubj)}(h h]h }(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjHubh)}(hhh]j)}(h amdgpu_vmh]h amdgpu_vm}(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjlmodnameN classnameNjj)}j]j)}jj2sbc.amdgpu_vm_readyasbuh1hhjHubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjHubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjHubj)}(hvmh]hvm}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjHubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjDubah}(h]h ]h"]h$]h&]jjuh1jhj hhhjhMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjhhhjhMubah}(h]jah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjhMhjhhubj[)}(hhh]h)}(hcheck VM is ready for updatesh]hcheck VM is ready for updates}(hjϴhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj̴hhubah}(h]h ]h"]h$]h&]uh1jZhjhhhjhMubeh}(h]h ](j4functioneh"]h$]h&]jj4jjjjjjjuh1jbhhhjhNhNubj)}(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]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj )}(hhh]j)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj ubj$)}(hhh]h)}(h VM to checkh]h VM to check}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%hMhj&ubah}(h]h ]h"]h$]h&]uh1j#hj ubeh}(h]h ]h"]h$]h&]uh1j hj%hMhjubah}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjKh]h Description}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./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}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(h **Return**h]j)}(hjrh]hReturn}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jhjpubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^(amdgpu_vm_check_compute_bug (C function)c.amdgpu_vm_check_compute_bughNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(h=void amdgpu_vm_check_compute_bug (struct amdgpu_device *adev)h]jn)}(hhhubah}(h]h ]h"]h$]h&]uh1jZhjhhhjhMubeh}(h]h ](j4functioneh"]h$]h&]jj4jjYjjYjjjuh1jbhhhjhNhNubj)}(h**Parameters** ``struct amdgpu_ring *ring`` ring on which the job will be submitted ``struct amdgpu_job *job`` job to submit **Return** True if sync is needed.h](h)}(h**Parameters**h]j)}(hjch]h Parameters}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jhjaubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj]ubj )}(hhh](j)}(hE``struct amdgpu_ring *ring`` ring on which the job will be submitted h](j)}(h``struct amdgpu_ring *ring``h]j:)}(hjh]hstruct amdgpu_ring *ring}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj|ubj$)}(hhh]h)}(h'ring on which the job will be submittedh]h'ring on which the job will be submitted}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j#hj|ubeh}(h]h ]h"]h$]h&]uh1j hjhMhjyubj)}(h)``struct amdgpu_job *job`` job to submit h](j)}(h``struct amdgpu_job *job``h]j:)}(hjh]hstruct amdgpu_job *job}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj$)}(hhh]h)}(h job to submith]h job to submit}(hjԸhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjиhMhjѸubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjиhMhjyubeh}(h]h ]h"]h$]h&]uh1jhj]ubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj]ubh)}(hTrue if sync is needed.h]hTrue if sync is needed.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj]ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^amdgpu_vm_flush (C function)c.amdgpu_vm_flushhNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(hvoid amdgpu_vm_flush (struct amdgpu_ring *ring, struct amdgpu_job *job, bool *need_pipe_sync, bool *emit_spm_needed, bool *emit_gds_needed)h]jn)}(hvoid amdgpu_vm_flush(struct amdgpu_ring *ring, struct amdgpu_job *job, bool *need_pipe_sync, bool *emit_spm_needed, bool *emit_gds_needed)h](jt)}(hvoidh]hvoid}(hj;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj7hhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMubj)}(h h]h }(hjJhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7hhhjIhMubj)}(hamdgpu_vm_flushh]j)}(hamdgpu_vm_flushh]hamdgpu_vm_flush}(hj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjXubah}(h]h ](jjeh"]h$]h&]jjuh1jhj7hhhjIhMubj)}(hv(struct amdgpu_ring *ring, struct amdgpu_job *job, bool *need_pipe_sync, bool *emit_spm_needed, bool *emit_gds_needed)h](j)}(hstruct amdgpu_ring *ringh](j)}(hjh]hstruct}(hjxhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjtubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjtubh)}(hhh]j)}(h amdgpu_ringh]h amdgpu_ring}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j)}jj^sbc.amdgpu_vm_flushasbuh1hhjtubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjtubj)}(hjh]h*}(hjĹhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjtubj)}(hringh]hring}(hjѹhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjtubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjpubj)}(hstruct amdgpu_job *jobh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h amdgpu_jobh]h amdgpu_job}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj modnameN classnameNjj)}j]jc.amdgpu_vm_flushasbuh1hhjubj)}(h h]h }(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hj4hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hjobh]hjob}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjpubj)}(hbool *need_pipe_synch](jt)}(hjwh]hbool}(hjZhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjVubj)}(h h]h }(hjghhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVubj)}(hjh]h*}(hjuhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjVubj)}(hneed_pipe_synch]hneed_pipe_sync}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjpubj)}(hbool *emit_spm_neededh](jt)}(hjwh]hbool}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hemit_spm_neededh]hemit_spm_needed}(hjúhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjpubj)}(hbool *emit_gds_neededh](jt)}(hjwh]hbool}(hjܺhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjغubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjغubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjغubj)}(hemit_gds_neededh]hemit_gds_needed}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjغubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjpubeh}(h]h ]h"]h$]h&]jjuh1jhj7hhhjIhMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhj3hhhjIhMubah}(h]j.ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjIhMhj0hhubj[)}(hhh]h)}(hhardware flush the vmh]hhardware flush the vm}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj+hhubah}(h]h ]h"]h$]h&]uh1jZhj0hhhjIhMubeh}(h]h ](j4functioneh"]h$]h&]jj4jjFjjFjjjuh1jbhhhjhNhNubj)}(hXR**Parameters** ``struct amdgpu_ring *ring`` ring to use for flush ``struct amdgpu_job *job`` related job ``bool *need_pipe_sync`` is pipe sync needed ``bool *emit_spm_needed`` does the caller need to emit spm ``bool *emit_gds_needed`` does the caller need to emit gds **Description** Emit a VM flush when it is necessary.h](h)}(h**Parameters**h]j)}(hjPh]h Parameters}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjJubj )}(hhh](j)}(h3``struct amdgpu_ring *ring`` ring to use for flush h](j)}(h``struct amdgpu_ring *ring``h]j:)}(hjoh]hstruct amdgpu_ring *ring}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjmubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjiubj$)}(hhh]h)}(hring to use for flushh]hring to use for flush}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j#hjiubeh}(h]h ]h"]h$]h&]uh1j hjhMhjfubj)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj$)}(hhh]h)}(h related jobh]h related job}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjfubj)}(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&]uh1j9hj߻ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjۻubj$)}(hhh]h)}(his pipe sync neededh]his pipe sync needed}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j#hjۻubeh}(h]h ]h"]h$]h&]uh1j hjhMhjfubj)}(h;``bool *emit_spm_needed`` does the caller need to emit spm h](j)}(h``bool *emit_spm_needed``h]j:)}(hjh]hbool *emit_spm_needed}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj$)}(hhh]h)}(h does the caller need to emit spmh]h does the caller need to emit spm}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/hMhj0ubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hj/hMhjfubj)}(h;``bool *emit_gds_needed`` does the caller need to emit gds h](j)}(h``bool *emit_gds_needed``h]j:)}(hjSh]hbool *emit_gds_needed}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjQubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjMubj$)}(hhh]h)}(h does the caller need to emit gdsh]h does the caller need to emit gds}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhMhjiubah}(h]h ]h"]h$]h&]uh1j#hjMubeh}(h]h ]h"]h$]h&]uh1j hjhhMhjfubeh}(h]h ]h"]h$]h&]uh1jhjJubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjJubh)}(h%Emit a VM flush when it is necessary.h]h%Emit a VM flush when it is necessary.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjJubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^amdgpu_vm_bo_find (C function)c.amdgpu_vm_bo_findhNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(hTstruct amdgpu_bo_va * amdgpu_vm_bo_find (struct amdgpu_vm *vm, struct amdgpu_bo *bo)h]jn)}(hRstruct amdgpu_bo_va *amdgpu_vm_bo_find(struct amdgpu_vm *vm, struct amdgpu_bo *bo)h](j)}(hjh]hstruct}(hjӼhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjϼhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjϼhhhjhMubh)}(hhh]j)}(h amdgpu_bo_vah]h amdgpu_bo_va}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j)}jamdgpu_vm_bo_findsbc.amdgpu_vm_bo_findasbuh1hhjϼhhhjhMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjϼhhhjhMubj)}(hjh]h*}(hj!hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjϼhhhjhMubj)}(hamdgpu_vm_bo_findh]j)}(hjh]hamdgpu_vm_bo_find}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjϼhhhjhMubj)}(h,(struct amdgpu_vm *vm, struct amdgpu_bo *bo)h](j)}(hstruct amdgpu_vm *vmh](j)}(hjh]hstruct}(hjMhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjIubj)}(h h]h }(hjZhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjIubh)}(hhh]j)}(h amdgpu_vmh]h amdgpu_vm}(hjkhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmmodnameN classnameNjj)}j]jc.amdgpu_vm_bo_findasbuh1hhjIubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjIubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjIubj)}(hvmh]hvm}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjIubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjEubj)}(hstruct amdgpu_bo *boh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjʽhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h amdgpu_boh]h amdgpu_bo}(hj۽hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjؽubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjݽmodnameN classnameNjj)}j]jc.amdgpu_vm_bo_findasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hboh]hbo}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjEubeh}(h]h ]h"]h$]h&]jjuh1jhjϼhhhjhMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhj˼hhhjhMubah}(h]jƼah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjhMhjȼhhubj[)}(hhh]h)}(h%find the bo_va for a specific vm & boh]h%find the bo_va for a specific vm & bo}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj;hhubah}(h]h ]h"]h$]h&]uh1jZhjȼhhhjhMubeh}(h]h ](j4functioneh"]h$]h&]jj4jjVjjVjjjuh1jbhhhjhNhNubj)}(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]j)}(hj`h]h Parameters}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjZubj )}(hhh](j)}(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&]uh1j9hj}ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjyubj$)}(hhh]h)}(h requested vmh]h requested vm}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j#hjyubeh}(h]h ]h"]h$]h&]uh1j hjhMhjvubj)}(h1``struct amdgpu_bo *bo`` requested buffer object h](j)}(h``struct amdgpu_bo *bo``h]j:)}(hjh]hstruct amdgpu_bo *bo}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj$)}(hhh]h)}(hrequested buffer objecth]hrequested buffer object}(hjѾhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj;hMhjξubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hj;hMhjvubeh}(h]h ]h"]h$]h&]uh1jhjZubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjZubh)}(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 hhhNhNubj)}(h**bo**h]hbo}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh, inside the requested vm. Search inside the }(hj hhhNhNubj)}(h**bos**h]hbos}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj 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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjZubh)}(hObject has to be reserved!h]hObject has to be reserved!}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjZubh)}(h **Return**h]j)}(hjMh]hReturn}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjZubh)}(hFound bo_va or NULL.h]hFound bo_va or NULL.}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjZubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^amdgpu_vm_map_gart (C function)c.amdgpu_vm_map_garthNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(hIuint64_t amdgpu_vm_map_gart (const dma_addr_t *pages_addr, uint64_t addr)h]jn)}(hHuint64_t amdgpu_vm_map_gart(const dma_addr_t *pages_addr, uint64_t addr)h](h)}(hhh]j)}(huint64_th]huint64_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j)}jamdgpu_vm_map_gartsbc.amdgpu_vm_map_gartasbuh1hhjhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj)}(hamdgpu_vm_map_garth]j)}(hjh]hamdgpu_vm_map_gart}(hjɿhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjſubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhMubj)}(h-(const dma_addr_t *pages_addr, uint64_t addr)h](j)}(hconst dma_addr_t *pages_addrh](j)}(hj^h]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h dma_addr_th]h dma_addr_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]jc.amdgpu_vm_map_gartasbuh1hhjubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hj.hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(h pages_addrh]h pages_addr}(hj;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjܿubj)}(h uint64_t addrh](h)}(hhh]j)}(huint64_th]huint64_t}(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjTubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjYmodnameN classnameNjj)}j]jc.amdgpu_vm_map_gartasbuh1hhjPubj)}(h h]h }(hjuhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPubj)}(haddrh]haddr}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjܿubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjhhhjhMubah}(h]jah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjhMhjhhubj[)}(hhh]h)}(hResolve gart mapping of addrh]hResolve gart mapping of addr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjhhubah}(h]h ]h"]h$]h&]uh1jZhjhhhjhMubeh}(h]h ](j4functioneh"]h$]h&]jj4jjjjjjjuh1jbhhhjhNhNubj)}(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]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj )}(hhh](j)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj)}(h$``uint64_t addr`` the unmapped addr h](j)}(h``uint64_t addr``h]j:)}(hj'h]h uint64_t addr}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj%ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj!ubj$)}(hhh]h)}(hthe unmapped addrh]hthe unmapped addr}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj<hMhj=ubah}(h]h ]h"]h$]h&]uh1j#hj!ubeh}(h]h ]h"]h$]h&]uh1j hj<hMhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjbh]h Description}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./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.}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^"amdgpu_vm_update_pdes (C function)c.amdgpu_vm_update_pdeshNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(h\int amdgpu_vm_update_pdes (struct amdgpu_device *adev, struct amdgpu_vm *vm, bool immediate)h]jn)}(h[int amdgpu_vm_update_pdes(struct amdgpu_device *adev, struct amdgpu_vm *vm, bool immediate)h](jt)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj)}(hamdgpu_vm_update_pdesh]j)}(hamdgpu_vm_update_pdesh]hamdgpu_vm_update_pdes}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhMubj)}(hB(struct amdgpu_device *adev, struct amdgpu_vm *vm, bool immediate)h](j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj+modnameN classnameNjj)}j]j)}jjsbc.amdgpu_vm_update_pdesasbuh1hhjubj)}(h h]h }(hjIhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjWhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hadevh]hadev}(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hstruct amdgpu_vm *vmh](j)}(hjh]hstruct}(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyubh)}(hhh]j)}(h amdgpu_vmh]h amdgpu_vm}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]jEc.amdgpu_vm_update_pdesasbuh1hhjyubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjyubj)}(hvmh]hvm}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hbool immediateh](jt)}(hjwh]hbool}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h immediateh]h immediate}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjhhhjhMubah}(h]jah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjhMhjhhubj[)}(hhh]h)}(h(make sure that all directories are validh]h(make sure that all directories are valid}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj/hhubah}(h]h ]h"]h$]h&]uh1jZhjhhhjhMubeh}(h]h ](j4functioneh"]h$]h&]jj4jjJjjJjjjuh1jbhhhjhNhNubj)}(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]j)}(hjTh]h Parameters}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjNubj )}(hhh](j)}(h5``struct amdgpu_device *adev`` amdgpu_device pointer h](j)}(h``struct amdgpu_device *adev``h]j:)}(hjsh]hstruct amdgpu_device *adev}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjqubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjmubj$)}(hhh]h)}(hamdgpu_device pointerh]hamdgpu_device pointer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j#hjmubeh}(h]h ]h"]h$]h&]uh1j hjhMhjjubj)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./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&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjjubj)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./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&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjjubeh}(h]h ]h"]h$]h&]uh1jhjNubh)}(h**Description**h]j)}(hj h]h Description}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjNubh)}(h*Makes sure all directories are up to date.h]h*Makes sure all directories are up to date.}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjNubh)}(h **Return**h]j)}(hjGh]hReturn}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjNubh)}(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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjNubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^!amdgpu_vm_tlb_seq_cb (C function)c.amdgpu_vm_tlb_seq_cbhNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(hLvoid amdgpu_vm_tlb_seq_cb (struct dma_fence *fence, struct dma_fence_cb *cb)h]jn)}(hKvoid amdgpu_vm_tlb_seq_cb(struct dma_fence *fence, struct dma_fence_cb *cb)h](jt)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj)}(hamdgpu_vm_tlb_seq_cbh]j)}(hamdgpu_vm_tlb_seq_cbh]hamdgpu_vm_tlb_seq_cb}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhMubj)}(h2(struct dma_fence *fence, struct dma_fence_cb *cb)h](j)}(hstruct dma_fence *fenceh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h dma_fenceh]h dma_fence}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.amdgpu_vm_tlb_seq_cbasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hfenceh]hfence}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hstruct dma_fence_cb *cbh](j)}(hjh]hstruct}(hj;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7ubj)}(h h]h }(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7ubh)}(hhh]j)}(h dma_fence_cbh]h dma_fence_cb}(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj[modnameN classnameNjj)}j]jc.amdgpu_vm_tlb_seq_cbasbuh1hhj7ubj)}(h h]h }(hjwhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj7ubj)}(hcbh]hcb}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjhhhjhMubah}(h]jah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjhMhjhhubj[)}(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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjhhubah}(h]h ]h"]h$]h&]uh1jZhjhhhjhMubeh}(h]h ](j4functioneh"]h$]h&]jj4jjjjjjjuh1jbhhhjhNhNubj)}(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]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj )}(hhh](j)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj$)}(hhh]h)}(hunusedh]hunused}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj)}(h3``struct dma_fence_cb *cb`` the callback structure h](j)}(h``struct dma_fence_cb *cb``h]j:)}(hj6h]hstruct dma_fence_cb *cb}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj4ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj0ubj$)}(hhh]h)}(hthe callback structureh]hthe callback structure}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjKhMhjLubah}(h]h ]h"]h$]h&]uh1j#hj0ubeh}(h]h ]h"]h$]h&]uh1j hjKhMhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjqh]h Description}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^ amdgpu_vm_tlb_flush (C function)c.amdgpu_vm_tlb_flushhNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(hvoid amdgpu_vm_tlb_flush (struct amdgpu_vm_update_params *params, struct dma_fence **fence, struct amdgpu_vm_tlb_seq_struct *tlb_cb)h]jn)}(hvoid amdgpu_vm_tlb_flush(struct amdgpu_vm_update_params *params, struct dma_fence **fence, struct amdgpu_vm_tlb_seq_struct *tlb_cb)h](jt)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM(ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhM(ubj)}(hamdgpu_vm_tlb_flushh]j)}(hamdgpu_vm_tlb_flushh]hamdgpu_vm_tlb_flush}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhM(ubj)}(hk(struct amdgpu_vm_update_params *params, struct dma_fence **fence, struct amdgpu_vm_tlb_seq_struct *tlb_cb)h](j)}(h&struct amdgpu_vm_update_params *paramsh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(hamdgpu_vm_update_paramsh]hamdgpu_vm_update_params}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.amdgpu_vm_tlb_flushasbuh1hhjubj)}(h h]h }(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hj?hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hparamsh]hparams}(hjLhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hstruct dma_fence **fenceh](j)}(hjh]hstruct}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjaubj)}(h h]h }(hjrhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjaubh)}(hhh]j)}(h dma_fenceh]h dma_fence}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j-c.amdgpu_vm_tlb_flushasbuh1hhjaubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjaubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjaubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjaubj)}(hfenceh]hfence}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjaubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(h'struct amdgpu_vm_tlb_seq_struct *tlb_cbh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(hamdgpu_vm_tlb_seq_structh]hamdgpu_vm_tlb_seq_struct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j-c.amdgpu_vm_tlb_flushasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hj,hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(htlb_cbh]htlb_cb}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhjhM(ubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjhhhjhM(ubah}(h]jah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjhM(hjhhubj[)}(hhh]h)}(hprepare TLB flushh]hprepare TLB flush}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM(hj`hhubah}(h]h ]h"]h$]h&]uh1jZhjhhhjhM(ubeh}(h]h ](j4functioneh"]h$]h&]jj4jj{jj{jjjuh1jbhhhjhNhNubj)}(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]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM,hjubj )}(hhh](j)}(hA``struct amdgpu_vm_update_params *params`` parameters for update h](j)}(h*``struct amdgpu_vm_update_params *params``h]j:)}(hjh]h&struct amdgpu_vm_update_params *params}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM*hjubj$)}(hhh]h)}(hparameters for updateh]hparameters for update}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM*hjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhM*hjubj)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM+hjubj$)}(hhh]h)}(h"input fence to sync TLB flush withh]h"input fence to sync TLB flush with}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM+hjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhM+hjubj)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM,hjubj$)}(hhh]h)}(hthe callback structureh]hthe callback structure}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+hM,hj,ubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hj+hM,hjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjQh]h Description}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM.hjubh)}(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.}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM-hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^#amdgpu_vm_update_range (C function)c.amdgpu_vm_update_rangehNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(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]jn)}(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](jt)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMSubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMSubj)}(hamdgpu_vm_update_rangeh]j)}(hamdgpu_vm_update_rangeh]hamdgpu_vm_update_range}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhMSubj)}(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](j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.amdgpu_vm_update_rangeasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hadevh]hadev}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hstruct amdgpu_vm *vmh](j)}(hjh]hstruct}(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubj)}(h h]h }(hjRhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubh)}(hhh]j)}(h amdgpu_vmh]h amdgpu_vm}(hjchhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjemodnameN classnameNjj)}j]j c.amdgpu_vm_update_rangeasbuh1hhjAubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjAubj)}(hvmh]hvm}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hbool immediateh](jt)}(hjwh]hbool}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h immediateh]h immediate}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(h bool unlockedh](jt)}(hjwh]hbool}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hunlockedh]hunlocked}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hbool flush_tlbh](jt)}(hjwh]hbool}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjubj)}(h h]h }(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h flush_tlbh]h flush_tlb}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hbool allow_overrideh](jt)}(hjwh]hbool}(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjMubj)}(h h]h }(hj^hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjMubj)}(hallow_overrideh]hallow_override}(hjlhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjMubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hstruct amdgpu_sync *synch](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h amdgpu_synch]h amdgpu_sync}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j c.amdgpu_vm_update_rangeasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hsynch]hsync}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(huint64_t starth](h)}(hhh]j)}(huint64_th]huint64_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j c.amdgpu_vm_update_rangeasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hstarth]hstart}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(h uint64_t lasth](h)}(hhh]j)}(huint64_th]huint64_t}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjBmodnameN classnameNjj)}j]j c.amdgpu_vm_update_rangeasbuh1hhj9ubj)}(h h]h }(hj^hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9ubj)}(hlasth]hlast}(hjlhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(huint64_t flagsh](h)}(hhh]j)}(huint64_th]huint64_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j c.amdgpu_vm_update_rangeasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hflagsh]hflags}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(huint64_t offseth](h)}(hhh]j)}(huint64_th]huint64_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j c.amdgpu_vm_update_rangeasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hoffseth]hoffset}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(huint64_t vram_baseh](h)}(hhh]j)}(huint64_th]huint64_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j c.amdgpu_vm_update_rangeasbuh1hhjubj)}(h h]h }(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h vram_baseh]h vram_base}(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hstruct ttm_resource *resh](j)}(hjh]hstruct}(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubj)}(h h]h }(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubh)}(hhh]j)}(h ttm_resourceh]h ttm_resource}(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjxubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj}modnameN classnameNjj)}j]j c.amdgpu_vm_update_rangeasbuh1hhjYubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjYubj)}(hresh]hres}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hdma_addr_t *pages_addrh](h)}(hhh]j)}(h dma_addr_th]h dma_addr_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j c.amdgpu_vm_update_rangeasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(h pages_addrh]h pages_addr}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hstruct dma_fence **fenceh](j)}(hjh]hstruct}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h dma_fenceh]h dma_fence}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjBmodnameN classnameNjj)}j]j c.amdgpu_vm_update_rangeasbuh1hhjubj)}(h h]h }(hj^hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjlhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjyhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hfenceh]hfence}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhjhMSubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjhhhjhMSubah}(h]jah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjhMShjhhubj[)}(hhh]h)}(h#update a range in the vm page tableh]h#update a range in the vm page table}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMShjhhubah}(h]h ]h"]h$]h&]uh1jZhjhhhjhMSubeh}(h]h ](j4functioneh"]h$]h&]jj4jjjjjjjuh1jbhhhjhNhNubj)}(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]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMWhjubj )}(hhh](j)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMUhjubj$)}(hhh]h)}(h)amdgpu_device pointer to use for commandsh]h)amdgpu_device pointer to use for commands}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMUhjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMUhjubj)}(h4``struct amdgpu_vm *vm`` the VM to update the range h](j)}(h``struct amdgpu_vm *vm``h]j:)}(hj*h]hstruct amdgpu_vm *vm}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj(ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMVhj$ubj$)}(hhh]h)}(hthe VM to update the rangeh]hthe VM to update the range}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhj?hMVhj@ubah}(h]h ]h"]h$]h&]uh1j#hj$ubeh}(h]h ]h"]h$]h&]uh1j hj?hMVhjubj)}(h8``bool immediate`` immediate submission in a page fault h](j)}(h``bool immediate``h]j:)}(hjch]hbool immediate}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjaubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMWhj]ubj$)}(hhh]h)}(h$immediate submission in a page faulth]h$immediate submission in a page fault}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjxhMWhjyubah}(h]h ]h"]h$]h&]uh1j#hj]ubeh}(h]h ]h"]h$]h&]uh1j hjxhMWhjubj)}(h;``bool unlocked`` unlocked invalidation during MM callback h](j)}(h``bool unlocked``h]j:)}(hjh]h bool unlocked}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMXhjubj$)}(hhh]h)}(h(unlocked invalidation during MM callbackh]h(unlocked invalidation during MM callback}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMXhjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMXhjubj)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMYhjubj$)}(hhh]h)}(h/trigger tlb invalidation after update completedh]h/trigger tlb invalidation after update completed}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMYhjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMYhjubj)}(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&]uh1j9hj ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMZhjubj$)}(hhh]h)}(h!change MTYPE for local NUMA nodesh]h!change MTYPE for local NUMA nodes}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#hMZhj$ubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hj#hMZhjubj)}(h7``struct amdgpu_sync *sync`` fences we need to sync to h](j)}(h``struct amdgpu_sync *sync``h]j:)}(hjGh]hstruct amdgpu_sync *sync}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjEubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM[hjAubj$)}(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&]uh1j#hjAubeh}(h]h ]h"]h$]h&]uh1j hj\hM[hjubj)}(h)``uint64_t start`` start of mapped range h](j)}(h``uint64_t start``h]j:)}(hjh]huint64_t start}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj~ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM\hjzubj$)}(hhh]h)}(hstart of mapped rangeh]hstart of mapped range}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM\hjubah}(h]h ]h"]h$]h&]uh1j#hjzubeh}(h]h ]h"]h$]h&]uh1j hjhM\hjubj)}(h$``uint64_t last`` last mapped entry h](j)}(h``uint64_t last``h]j:)}(hjh]h uint64_t last}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM]hjubj$)}(hhh]h)}(hlast mapped entryh]hlast mapped entry}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM]hjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhM]hjubj)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM^hjubj$)}(hhh]h)}(hflags for the entriesh]hflags for the entries}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM^hjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhM^hjubj)}(h5``uint64_t offset`` offset into nodes and pages_addr h](j)}(h``uint64_t offset``h]j:)}(hj+h]huint64_t offset}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj)ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM_hj%ubj$)}(hhh]h)}(h offset into nodes and pages_addrh]h offset into nodes and pages_addr}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj@hM_hjAubah}(h]h ]h"]h$]h&]uh1j#hj%ubeh}(h]h ]h"]h$]h&]uh1j hj@hM_hjubj)}(h.``uint64_t vram_base`` base for vram mappings h](j)}(h``uint64_t vram_base``h]j:)}(hjdh]huint64_t vram_base}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjbubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM`hj^ubj$)}(hhh]h)}(hbase for vram mappingsh]hbase for vram mappings}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjyhM`hjzubah}(h]h ]h"]h$]h&]uh1j#hj^ubeh}(h]h ]h"]h$]h&]uh1j hjyhM`hjubj)}(h1``struct ttm_resource *res`` ttm_resource to map h](j)}(h``struct ttm_resource *res``h]j:)}(hjh]hstruct ttm_resource *res}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMahjubj$)}(hhh]h)}(httm_resource to maph]httm_resource to map}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMahjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMahjubj)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMbhjubj$)}(hhh]h)}(h DMA addresses to use for mappingh]h DMA addresses to use for mapping}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMbhjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMbhjubj)}(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&]uh1j9hj ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMchj ubj$)}(hhh]h)}(hoptional resulting fenceh]hoptional resulting fence}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$hMchj%ubah}(h]h ]h"]h$]h&]uh1j#hj ubeh}(h]h ]h"]h$]h&]uh1j hj$hMchjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjJh]h Description}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMehjubh)}(h>Fill in the page table entries between **start** and **last**.h](h'Fill in the page table entries between }(hj`hhhNhNubj)}(h **start**h]hstart}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`ubh and }(hj`hhhNhNubj)}(h**last**h]hlast}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`ubh.}(hj`hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMdhjubh) }(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMfhjubh)}(h.0 for success, negative erro code for failure.h]h.0 for success, negative erro code for failure.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMghjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^ amdgpu_vm_bo_update (C function)c.amdgpu_vm_bo_updatehNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(h\int amdgpu_vm_bo_update (struct amdgpu_device *adev, struct amdgpu_bo_va *bo_va, bool clear)h]jn)}(h[int amdgpu_vm_bo_update(struct amdgpu_device *adev, struct amdgpu_bo_va *bo_va, bool clear)h](jt)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj)}(hamdgpu_vm_bo_updateh]j)}(hamdgpu_vm_bo_updateh]hamdgpu_vm_bo_update}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhMubj)}(hD(struct amdgpu_device *adev, struct amdgpu_bo_va *bo_va, bool clear)h](j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj7modnameN classnameNjj)}j]j)}jjsbc.amdgpu_vm_bo_updateasbuh1hhjubj)}(h h]h }(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjchhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hadevh]hadev}(hjphhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hstruct amdgpu_bo_va *bo_vah](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h amdgpu_bo_vah]h amdgpu_bo_va}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]jQc.amdgpu_vm_bo_updateasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hbo_vah]hbo_va}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(h bool clearh](jt)}(hjwh]hbool}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hclearh]hclear}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjhhhjhMubah}(h]jah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjhMhjhhubj[)}(hhh]h)}(h+update all BO mappings in the vm page tableh]h+update all BO mappings in the vm page table}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj;hhubah}(h]h ]h"]h$]h&]uh1jZhjhhhjhMubeh}(h]h ](j4functioneh"]h$]h&]jj4jjVjjVjjjuh1jbhhhjhNhNubj)}(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]j)}(hj`h]h Parameters}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjZubj )}(hhh](j)}(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&]uh1j9hj}ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjyubj$)}(hhh]h)}(hamdgpu_device pointerh]hamdgpu_device pointer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j#hjyubeh}(h]h ]h"]h$]h&]uh1j hjhMhjvubj)}(h:``struct amdgpu_bo_va *bo_va`` requested BO and VM object h](j)}(h``struct amdgpu_bo_va *bo_va``h]j:)}(hjh]hstruct amdgpu_bo_va *bo_va}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj$)}(hhh]h)}(hrequested BO and VM objecth]hrequested BO and VM object}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjvubj)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj$)}(hhh]h)}(hif true clear the entriesh]hif true clear the entries}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjvubeh}(h]h ]h"]h$]h&]uh1jhjZubh)}(h**Description**h]j)}(hj,h]h Description}(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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjZubh)}(h-Fill in the page table entries for **bo_va**.h](h#Fill in the page table entries for }(hjBhhhNhNubj)}(h **bo_va**h]hbo_va}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubh.}(hjBhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjZubh)}(h **Return**h]j)}(hjeh]hReturn}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjcubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjZubh)}(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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjZubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^'amdgpu_vm_update_prt_state (C function)c.amdgpu_vm_update_prt_statehNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(hubj)}(h h]h }(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>ubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hj`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjbmodnameN classnameNjj)}j]j)}jj(sbc.amdgpu_vm_prt_getasbuh1hhj>ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj>ubj)}(hadevh]hadev}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj:ubah}(h]h ]h"]h$]h&]jjuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjhhhjhMubah}(h]jah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjhMhjhhubj[)}(hhh]h)}(hadd a PRT userh]hadd a PRT user}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjhhubah}(h]h ]h"]h$]h&]uh1jZhjhhhjhMubeh}(h]h ](j4functioneh"]h$]h&]jj4jjjjjjjuh1jbhhhjhNhNubj)}(hF**Parameters** ``struct amdgpu_device *adev`` amdgpu_device pointerh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj )}(hhh]j)}(h4``struct amdgpu_device *adev`` amdgpu_device pointerh](j)}(h``struct amdgpu_device *adev``h]j:)}(hjh]hstruct amdgpu_device *adev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj$)}(hhh]h)}(hamdgpu_device pointerh]hamdgpu_device pointer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^amdgpu_vm_prt_put (C function)c.amdgpu_vm_prt_puthNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(h3void amdgpu_vm_prt_put (struct amdgpu_device *adev)h]jn)}(h2void amdgpu_vm_prt_put(struct amdgpu_device *adev)h](jt)}(hvoidh]hvoid}(hj`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj\hhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMubj)}(h h]h }(hjohhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\hhhjnhMubj)}(hamdgpu_vm_prt_puth]j)}(hamdgpu_vm_prt_puth]hamdgpu_vm_prt_put}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj\hhhjnhMubj)}(h(struct amdgpu_device *adev)h]j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.amdgpu_vm_prt_putasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hadevh]hadev}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubah}(h]h ]h"]h$]h&]jjuh1jhj\hhhjnhMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjXhhhjnhMubah}(h]jSah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjnhMhjUhhubj[)}(hhh]h)}(hdrop a PRT userh]hdrop a PRT user}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjhhubah}(h]h ]h"]h$]h&]uh1jZhjUhhhjnhMubeh}(h]h ](j4functioneh"]h$]h&]jj4jj8jj8jjjuh1jbhhhjhNhNubj)}(hF**Parameters** ``struct amdgpu_device *adev`` amdgpu_device pointerh](h)}(h**Parameters**h]j)}(hjBh]h Parameters}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj<ubj )}(hhh]j)}(h4``struct amdgpu_device *adev`` amdgpu_device pointerh](j)}(h``struct amdgpu_device *adev``h]j:)}(hjah]hstruct amdgpu_device *adev}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj_ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj[ubj$)}(hhh]h)}(hamdgpu_device pointerh]hamdgpu_device pointer}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjwubah}(h]h ]h"]h$]h&]uh1j#hj[ubeh}(h]h ]h"]h$]h&]uh1j hjvhMhjXubah}(h]h ]h"]h$]h&]uh1jhj<ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^amdgpu_vm_prt_cb (C function)c.amdgpu_vm_prt_cbhNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(hIvoid amdgpu_vm_prt_cb (struct dma_fence *fence, struct dma_fence_cb *_cb)h]jn)}(hHvoid amdgpu_vm_prt_cb(struct dma_fence *fence, struct dma_fence_cb *_cb)h](jt)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj)}(hamdgpu_vm_prt_cbh]j)}(hamdgpu_vm_prt_cbh]hamdgpu_vm_prt_cb}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhMubj)}(h3(struct dma_fence *fence, struct dma_fence_cb *_cb)h](j)}(hstruct dma_fence *fenceh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h dma_fenceh]h dma_fence}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.amdgpu_vm_prt_cbasbuh1hhjubj)}(h h]h }(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjDhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hfenceh]hfence}(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hstruct dma_fence_cb *_cbh](j)}(hjh]hstruct}(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjfubj)}(h h]h }(hjwhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjfubh)}(hhh]j)}(h dma_fence_cbh]h dma_fence_cb}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j2c.amdgpu_vm_prt_cbasbuh1hhjfubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjfubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjfubj)}(h_cbh]h_cb}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjfubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjhhhjhMubah}(h]jah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjhMhjhhubj[)}(hhh]h)}(h$callback for updating the PRT statush]h$callback for updating the PRT status}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjhhubah}(h]h ]h"]h$]h&]uh1jZhjhhhjhMubeh}(h]h ](j4functioneh"]h$]h&]jj4jjjjjjjuh1jbhhhjhNhNubj)}(hz**Parameters** ``struct dma_fence *fence`` fence for the callback ``struct dma_fence_cb *_cb`` the callback functionh](h)}(h**Parameters**h]j)}(hj h]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj )}(hhh](j)}(h3``struct dma_fence *fence`` fence for the callback h](j)}(h``struct dma_fence *fence``h]j:)}(hj,h]hstruct dma_fence *fence}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj*ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj&ubj$)}(hhh]h)}(hfence for the callbackh]hfence for the callback}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjAhMhjBubah}(h]h ]h"]h$]h&]uh1j#hj&ubeh}(h]h ]h"]h$]h&]uh1j hjAhMhj#ubj)}(h2``struct dma_fence_cb *_cb`` the callback functionh](j)}(h``struct dma_fence_cb *_cb``h]j:)}(hjeh]hstruct dma_fence_cb *_cb}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjcubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj_ubj$)}(hhh]h)}(hthe callback functionh]hthe callback function}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj{ubah}(h]h ]h"]h$]h&]uh1j#hj_ubeh}(h]h ]h"]h$]h&]uh1j hjzhMhj#ubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^!amdgpu_vm_add_prt_cb (C function)c.amdgpu_vm_add_prt_cbhNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(hOvoid amdgpu_vm_add_prt_cb (struct amdgpu_device *adev, struct dma_fence *fence)h]jn)}(hNvoid amdgpu_vm_add_prt_cb(struct amdgpu_device *adev, struct dma_fence *fence)h](jt)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj)}(hamdgpu_vm_add_prt_cbh]j)}(hamdgpu_vm_add_prt_cbh]hamdgpu_vm_add_prt_cb}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhMubj)}(h5(struct amdgpu_device *adev, struct dma_fence *fence)h](j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.amdgpu_vm_add_prt_cbasbuh1hhjubj)}(h h]h }(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjHhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hadevh]hadev}(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hstruct dma_fence *fenceh](j)}(hjh]hstruct}(hjnhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjjubj)}(h h]h }(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjjubh)}(hhh]j)}(h dma_fenceh]h dma_fence}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j6c.amdgpu_vm_add_prt_cbasbuh1hhjjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjjubj)}(hfenceh]hfence}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjhhhjhMubah}(h]jah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjhMhjhhubj[)}(hhh]h)}(h(add callback for updating the PRT statush]h(add callback for updating the PRT status}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjhhubah}(h]h ]h"]h$]h&]uh1jZhjhhhjhMubeh}(h]h ](j4functioneh"]h$]h&]jj4jjjjjjjuh1jbhhhjhNhNubj)}(h|**Parameters** ``struct amdgpu_device *adev`` amdgpu_device pointer ``struct dma_fence *fence`` fence for the callbackh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj ubj )}(hhh](j)}(h5``struct amdgpu_device *adev`` amdgpu_device pointer h](j)}(h``struct amdgpu_device *adev``h]j:)}(hj0h]hstruct amdgpu_device *adev}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj.ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj*ubj$)}(hhh]h)}(hamdgpu_device pointerh]hamdgpu_device pointer}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjEhMhjFubah}(h]h ]h"]h$]h&]uh1j#hj*ubeh}(h]h ]h"]h$]h&]uh1j hjEhMhj'ubj)}(h2``struct dma_fence *fence`` fence for the callbackh](j)}(h``struct dma_fence *fence``h]j:)}(hjih]hstruct dma_fence *fence}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjgubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjcubj$)}(hhh]h)}(hfence for the callbackh]hfence for the callback}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubah}(h]h ]h"]h$]h&]uh1j#hjcubeh}(h]h ]h"]h$]h&]uh1j hj~hMhj'ubeh}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^#amdgpu_vm_free_mapping (C function)c.amdgpu_vm_free_mappinghNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(hvoid amdgpu_vm_free_mapping (struct amdgpu_device *adev, struct amdgpu_vm *vm, struct amdgpu_bo_va_mapping *mapping, struct dma_fence *fence)h]jn)}(hvoid amdgpu_vm_free_mapping(struct amdgpu_device *adev, struct amdgpu_vm *vm, struct amdgpu_bo_va_mapping *mapping, struct dma_fence *fence)h](jt)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj)}(hamdgpu_vm_free_mappingh]j)}(hamdgpu_vm_free_mappingh]hamdgpu_vm_free_mapping}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhMubj)}(hq(struct amdgpu_device *adev, struct amdgpu_vm *vm, struct amdgpu_bo_va_mapping *mapping, struct dma_fence *fence)h](j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj modnameN classnameNjj)}j]j)}jjsbc.amdgpu_vm_free_mappingasbuh1hhjubj)}(h h]h }(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjLhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hadevh]hadev}(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hstruct amdgpu_vm *vmh](j)}(hjh]hstruct}(hjrhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjnubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjnubh)}(hhh]j)}(h amdgpu_vmh]h amdgpu_vm}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j:c.amdgpu_vm_free_mappingasbuh1hhjnubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjnubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjnubj)}(hvmh]hvm}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjnubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(h$struct amdgpu_bo_va_mapping *mappingh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(hamdgpu_bo_va_mappingh]hamdgpu_bo_va_mapping}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j:c.amdgpu_vm_free_mappingasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hj,hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hmappingh]hmapping}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hstruct dma_fence *fenceh](j)}(hjh]hstruct}(hjRhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjNubj)}(h h]h }(hj_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjNubh)}(hhh]j)}(h dma_fenceh]h dma_fence}(hjphhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjmubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjrmodnameN classnameNjj)}j]j:c.amdgpu_vm_free_mappingasbuh1hhjNubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjNubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjNubj)}(hfenceh]hfence}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjNubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjhhhjhMubah}(h]jah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjhMhjhhubj[)}(hhh]h)}(hfree a mappingh]hfree a mapping}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjhhubah}(h]h ]h"]h$]h&]uh1jZhjhhhjhMubeh}(h]h ](j4functioneh"]h$]h&]jj4jjjjjjjuh1jbhhhjhNhNubj)}(hXI**Parameters** ``struct amdgpu_device *adev`` amdgpu_device pointer ``struct amdgpu_vm *vm`` requested vm ``struct amdgpu_bo_va_mapping *mapping`` mapping to be freed ``struct dma_fence *fence`` fence of the unmap operation **Description** Free a mapping and make sure we decrease the PRT usage count if applicable.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj )}(hhh](j)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj$)}(hhh]h)}(hamdgpu_device pointerh]hamdgpu_device pointer}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)hMhj*ubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hj)hMhj ubj)}(h&``struct amdgpu_vm *vm`` requested vm h](j)}(h``struct amdgpu_vm *vm``h]j:)}(hjMh]hstruct amdgpu_vm *vm}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjKubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjGubj$)}(hhh]h)}(h requested vmh]h requested vm}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjbhMhjcubah}(h]h ]h"]h$]h&]uh1j#hjGubeh}(h]h ]h"]h$]h&]uh1j hjbhMhj ubj)}(h=``struct amdgpu_bo_va_mapping *mapping`` mapping to be freed h](j)}(h(``struct amdgpu_bo_va_mapping *mapping``h]j:)}(hjh]h$struct amdgpu_bo_va_mapping *mapping}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj$)}(hhh]h)}(hmapping to be freedh]hmapping to be freed}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhj ubj)}(h9``struct dma_fence *fence`` fence of the unmap operation h](j)}(h``struct dma_fence *fence``h]j:)}(hjh]hstruct dma_fence *fence}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj$)}(hhh]h)}(hfence of the unmap operationh]hfence of the unmap operation}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhj ubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(hKFree a mapping and make sure we decrease the PRT usage count if applicable.h]hKFree a mapping and make sure we decrease the PRT usage count if applicable.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^amdgpu_vm_prt_fini (C function)c.amdgpu_vm_prt_finihNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(hJvoid amdgpu_vm_prt_fini (struct amdgpu_device *adev, struct amdgpu_vm *vm)h]jn)}(hIvoid amdgpu_vm_prt_fini(struct amdgpu_device *adev, struct amdgpu_vm *vm)h](jt)}(hvoidh]hvoid}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj;hhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMubj)}(h h]h }(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;hhhjMhMubj)}(hamdgpu_vm_prt_finih]j)}(hamdgpu_vm_prt_finih]hamdgpu_vm_prt_fini}(hj`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj;hhhjMhMubj)}(h2(struct amdgpu_device *adev, struct amdgpu_vm *vm)h](j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjxubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjxubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j)}jjbsbc.amdgpu_vm_prt_finiasbuh1hhjxubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjxubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjxubj)}(hadevh]hadev}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjxubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjtubj)}(hstruct amdgpu_vm *vmh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h amdgpu_vmh]h amdgpu_vm}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]jc.amdgpu_vm_prt_finiasbuh1hhjubj)}(h h]h }(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hj8hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hvmh]hvm}(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjtubeh}(h]h ]h"]h$]h&]jjuh1jhj;hhhjMhMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhj7hhhjMhMubah}(h]j2ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjMhMhj4hhubj[)}(hhh]h)}(hfinish all prt mappingsh]hfinish all prt mappings}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjlhhubah}(h]h ]h"]h$]h&]uh1jZhj4hhhjMhMubeh}(h]h ](j4functioneh"]h$]h&]jj4jjjjjjjuh1jbhhhjhNhNubj)}(h**Parameters** ``struct amdgpu_device *adev`` amdgpu_device pointer ``struct amdgpu_vm *vm`` requested vm **Description** Register a cleanup callback to disable PRT support after VM dies.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hjubj )}(hhh](j)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./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&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./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&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hj$h]h Description}(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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hjubh)}(hARegister a cleanup callback to disable PRT support after VM dies.h]hARegister a cleanup callback to disable PRT support after VM dies.}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^"amdgpu_vm_clear_freed (C function)c.amdgpu_vm_clear_freedhNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(hfint amdgpu_vm_clear_freed (struct amdgpu_device *adev, struct amdgpu_vm *vm, struct dma_fence **fence)h]jn)}(heint amdgpu_vm_clear_freed(struct amdgpu_device *adev, struct amdgpu_vm *vm, struct dma_fence **fence)h](jt)}(hinth]hint}(hjihhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjehhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMubj)}(h h]h }(hjxhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjehhhjwhMubj)}(hamdgpu_vm_clear_freedh]j)}(hamdgpu_vm_clear_freedh]hamdgpu_vm_clear_freed}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjehhhjwhMubj)}(hL(struct amdgpu_device *adev, struct amdgpu_vm *vm, struct dma_fence **fence)h](j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.amdgpu_vm_clear_freedasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hadevh]hadev}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hstruct amdgpu_vm *vmh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h amdgpu_vmh]h amdgpu_vm}(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj8modnameN classnameNjj)}j]jc.amdgpu_vm_clear_freedasbuh1hhjubj)}(h h]h }(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjbhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hvmh]hvm}(hjohhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hstruct dma_fence **fenceh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h dma_fenceh]h dma_fence}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]jc.amdgpu_vm_clear_freedasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hfenceh]hfence}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhjehhhjwhMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjahhhjwhMubah}(h]j\ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjwhMhj^hhubj[)}(hhh]h)}(hclear freed BOs in the PTh]hclear freed BOs in the PT}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjhhubah}(h]h ]h"]h$]h&]uh1jZhj^hhhjwhMubeh}(h]h ](j4functioneh"]h$]h&]jj4jj.jj.jjjuh1jbhhhjhNhNubj)}(hXz**Parameters** ``struct amdgpu_device *adev`` amdgpu_device pointer ``struct amdgpu_vm *vm`` requested vm ``struct dma_fence **fence`` optional resulting fence (unchanged if no work needed to be done or if an error occurred) **Description** Make sure all freed BOs are cleared in the PT. PTs have to be reserved and mutex must be locked! **Return** 0 for success.h](h)}(h**Parameters**h]j)}(hj8h]h Parameters}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj2ubj )}(hhh](j)}(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&]uh1j9hjUubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjQubj$)}(hhh]h)}(hamdgpu_device pointerh]hamdgpu_device pointer}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hhjlhMhjmubah}(h]h ]h"]h$]h&]uh1j#hjQubeh}(h]h ]h"]h$]h&]uh1j hjlhMhjNubj)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./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&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjNubj)}(hw``struct dma_fence **fence`` optional resulting fence (unchanged if no work needed to be done or if an error occurred) h](j)}(h``struct dma_fence **fence``h]j:)}(hjh]hstruct dma_fence **fence}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj$)}(hhh]h)}(hYoptional resulting fence (unchanged if no work needed to be done or if an error occurred)h]hYoptional resulting fence (unchanged if no work needed to be done or if an error occurred)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjNubeh}(h]h ]h"]h$]h&]uh1jhj2ubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM!hj2ubh)}(h`Make sure all freed BOs are cleared in the PT. PTs have to be reserved and mutex must be locked!h]h`Make sure all freed BOs are cleared in the PT. PTs have to be reserved and mutex must be locked!}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hj2ubh)}(h **Return**h]j)}(hj,h]hReturn}(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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM#hj2ubh)}(h0 for success.h]h0 for success.}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM$hj2ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^#amdgpu_vm_handle_moved (C function)c.amdgpu_vm_handle_movedhNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(hlint amdgpu_vm_handle_moved (struct amdgpu_device *adev, struct amdgpu_vm *vm, struct ww_acquire_ctx *ticket)h]jn)}(hkint amdgpu_vm_handle_moved(struct amdgpu_device *adev, struct amdgpu_vm *vm, struct ww_acquire_ctx *ticket)h](jt)}(hinth]hint}(hjqhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjmhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM[ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjmhhhjhM[ubj)}(hamdgpu_vm_handle_movedh]j)}(hamdgpu_vm_handle_movedh]hamdgpu_vm_handle_moved}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjmhhhjhM[ubj)}(hQ(struct amdgpu_device *adev, struct amdgpu_vm *vm, struct ww_acquire_ctx *ticket)h](j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.amdgpu_vm_handle_movedasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hadevh]hadev}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hstruct amdgpu_vm *vmh](j)}(hjh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h amdgpu_vmh]h amdgpu_vm}(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj@modnameN classnameNjj)}j]jc.amdgpu_vm_handle_movedasbuh1hhjubj)}(h h]h }(hj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hvmh]hvm}(hjwhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hstruct ww_acquire_ctx *ticketh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(hww_acquire_ctxh]hww_acquire_ctx}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]jc.amdgpu_vm_handle_movedasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hticketh]hticket}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhjmhhhjhM[ubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjihhhjhM[ubah}(h]jdah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjhM[hjfhhubj[)}(hhh]h)}(hhandle moved BOs in the PTh]hhandle moved BOs in the PT}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM[hjhhubah}(h]h ]h"]h$]h&]uh1jZhjfhhhjhM[ubeh}(h]h ](j4functioneh"]h$]h&]jj4jj)jj)jjjuh1jbhhhjhNhNubj)}(hXJ**Parameters** ``struct amdgpu_device *adev`` amdgpu_device pointer ``struct amdgpu_vm *vm`` requested vm ``struct ww_acquire_ctx *ticket`` optional reservation ticket used to reserve the VM **Description** Make sure all BOs which are moved are updated in the PTs. PTs have to be reserved! **Return** 0 for success.h](h)}(h**Parameters**h]j)}(hj3h]h Parameters}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM_hj-ubj )}(hhh](j)}(h5``struct amdgpu_device *adev`` amdgpu_device pointer h](j)}(h``struct amdgpu_device *adev``h]j:)}(hjRh]hstruct amdgpu_device *adev}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjPubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM]hjLubj$)}(hhh]h)}(hamdgpu_device pointerh]hamdgpu_device pointer}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjghM]hjhubah}(h]h ]h"]h$]h&]uh1j#hjLubeh}(h]h ]h"]h$]h&]uh1j hjghM]hjIubj)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM^hjubj$)}(hhh]h)}(h requested vmh]h requested vm}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM^hjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhM^hjIubj)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM_hjubj$)}(hhh]h)}(h2optional reservation ticket used to reserve the VMh]h2optional reservation ticket used to reserve the VM}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM_hjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhM_hjIubeh}(h]h ]h"]h$]h&]uh1jhj-ubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMahj-ubh)}(h9Make sure all BOs which are moved are updated in the PTs.h]h9Make sure all BOs which are moved are updated in the PTs.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM`hj-ubh)}(hPTs have to be reserved!h]hPTs have to be reserved!}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMchj-ubh)}(h **Return**h]j)}(hj5h]hReturn}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMehj-ubh)}(h0 for success.h]h0 for success.}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMchj-ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^(amdgpu_vm_flush_compute_tlb (C function)c.amdgpu_vm_flush_compute_tlbhNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(hzint amdgpu_vm_flush_compute_tlb (struct amdgpu_device *adev, struct amdgpu_vm *vm, uint32_t flush_type, uint32_t xcc_mask)h]jn)}(hyint amdgpu_vm_flush_compute_tlb(struct amdgpu_device *adev, struct amdgpu_vm *vm, uint32_t flush_type, uint32_t xcc_mask)h](jt)}(hinth]hint}(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjvhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjvhhhjhMubj)}(hamdgpu_vm_flush_compute_tlbh]j)}(hamdgpu_vm_flush_compute_tlbh]hamdgpu_vm_flush_compute_tlb}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjvhhhjhMubj)}(hZ(struct amdgpu_device *adev, struct amdgpu_vm *vm, uint32_t flush_type, uint32_t xcc_mask)h](j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.amdgpu_vm_flush_compute_tlbasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hadevh]hadev}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hstruct amdgpu_vm *vmh](j)}(hjh]hstruct}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubj)}(h h]h }(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubh)}(hhh]j)}(h amdgpu_vmh]h amdgpu_vm}(hjGhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjImodnameN classnameNjj)}j]jc.amdgpu_vm_flush_compute_tlbasbuh1hhj%ubj)}(h h]h }(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubj)}(hjh]h*}(hjshhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj%ubj)}(hvmh]hvm}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(huint32_t flush_typeh](h)}(hhh]j)}(huint32_th]huint32_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]jc.amdgpu_vm_flush_compute_tlbasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h flush_typeh]h flush_type}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(huint32_t xcc_maskh](h)}(hhh]j)}(huint32_th]huint32_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]jc.amdgpu_vm_flush_compute_tlbasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hxcc_maskh]hxcc_mask}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhjvhhhjhMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjrhhhjhMubah}(h]jmah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjhMhjohhubj[)}(hhh]h)}(hFlush TLB on compute VMh]hFlush TLB on compute VM}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj7hhubah}(h]h ]h"]h$]h&]uh1jZhjohhhjhMubeh}(h]h ](j4functioneh"]h$]h&]jj4jjRjjRjjjuh1jbhhhjhNhNubj)}(hXL**Parameters** ``struct amdgpu_device *adev`` amdgpu_device pointer ``struct amdgpu_vm *vm`` requested vm ``uint32_t flush_type`` flush type ``uint32_t xcc_mask`` mask of XCCs that belong to the compute partition in need of a TLB flush. **Description** Flush TLB if needed for a compute VM. **Return** 0 for success.h](h)}(h**Parameters**h]j)}(hj\h]h Parameters}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjVubj )}(hhh](j)}(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&]uh1j9hjyubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjuubj$)}(hhh]h)}(hamdgpu_device pointerh]hamdgpu_device pointer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j#hjuubeh}(h]h ]h"]h$]h&]uh1j hjhMhjrubj)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./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&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjrubj)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./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&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjrubj)}(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:)}(hj&h]huint32_t xcc_mask}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj$ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj ubj$)}(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.}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj;hMhj<ubah}(h]h ]h"]h$]h&]uh1j#hj ubeh}(h]h ]h"]h$]h&]uh1j hj;hMhjrubeh}(h]h ]h"]h$]h&]uh1jhjVubh)}(h**Description**h]j)}(hjah]h Description}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjVubh)}(h%Flush TLB if needed for a compute VM.h]h%Flush TLB if needed for a compute VM.}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjVubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjVubh)}(h0 for success.h]h0 for success.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjVubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^amdgpu_vm_bo_add (C function)c.amdgpu_vm_bo_addhNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(hostruct amdgpu_bo_va * amdgpu_vm_bo_add (struct amdgpu_device *adev, struct amdgpu_vm *vm, struct amdgpu_bo *bo)h]jn)}(hmstruct amdgpu_bo_va *amdgpu_vm_bo_add(struct amdgpu_device *adev, struct amdgpu_vm *vm, struct amdgpu_bo *bo)h](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubh)}(hhh]j)}(h amdgpu_bo_vah]h amdgpu_bo_va}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j)}jamdgpu_vm_bo_addsbc.amdgpu_vm_bo_addasbuh1hhjhhhjhMubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjhhhjhMubj)}(hamdgpu_vm_bo_addh]j)}(hj h]hamdgpu_vm_bo_add}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhMubj)}(hH(struct amdgpu_device *adev, struct amdgpu_vm *vm, struct amdgpu_bo *bo)h](j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hjGhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjCubj)}(h h]h }(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjCubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjgmodnameN classnameNjj)}j]jc.amdgpu_vm_bo_addasbuh1hhjCubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjCubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjCubj)}(hadevh]hadev}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjCubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj?ubj)}(hstruct amdgpu_vm *vmh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h amdgpu_vmh]h amdgpu_vm}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]jc.amdgpu_vm_bo_addasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hvmh]hvm}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj?ubj)}(hstruct amdgpu_bo *boh](j)}(hjh]hstruct}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubj)}(h h]h }(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubh)}(hhh]j)}(h amdgpu_boh]h amdgpu_bo}(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjGmodnameN classnameNjj)}j]jc.amdgpu_vm_bo_addasbuh1hhj#ubj)}(h h]h }(hjchhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubj)}(hjh]h*}(hjqhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj#ubj)}(hboh]hbo}(hj~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj?ubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjhhhjhMubah}(h]jah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjhMhjhhubj[)}(hhh]h)}(hadd a bo to a specific vmh]hadd a bo to a specific vm}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjhhubah}(h]h ]h"]h$]h&]uh1jZhjhhhjhMubeh}(h]h ](j4functioneh"]h$]h&]jj4jjjjjjjuh1jbhhhjhNhNubj)}(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]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj )}(hhh](j)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./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&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj)}(h&``struct amdgpu_vm *vm`` requested vm h](j)}(h``struct amdgpu_vm *vm``h]j:)}(hj"h]hstruct amdgpu_vm *vm}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj$)}(hhh]h)}(h requested vmh]h requested vm}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj7hMhj8ubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hj7hMhjubj)}(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&]uh1j9hjYubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjUubj$)}(hhh]h)}(hamdgpu buffer objecth]hamdgpu buffer object}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1hhjphMhjqubah}(h]h ]h"]h$]h&]uh1j#hjUubeh}(h]h ]h"]h$]h&]uh1j hjphMhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./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 }(hjhhhNhNubj)}(h**bo**h]hbo}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh into the requested vm. Add }(hjhhhNhNubj)}(h**bo**h]hbo}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh* to the list of bos associated with the vm}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^$amdgpu_vm_bo_insert_map (C function)c.amdgpu_vm_bo_insert_maphNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(h{void amdgpu_vm_bo_insert_map (struct amdgpu_device *adev, struct amdgpu_bo_va *bo_va, struct amdgpu_bo_va_mapping *mapping)h]jn)}(hzvoid amdgpu_vm_bo_insert_map(struct amdgpu_device *adev, struct amdgpu_bo_va *bo_va, struct amdgpu_bo_va_mapping *mapping)h](jt)}(hvoidh]hvoid}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj1hhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMubj)}(h h]h }(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1hhhjChMubj)}(hamdgpu_vm_bo_insert_maph]j)}(hamdgpu_vm_bo_insert_maph]hamdgpu_vm_bo_insert_map}(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjRubah}(h]h ](jjeh"]h$]h&]jjuh1jhj1hhhjChMubj)}(h^(struct amdgpu_device *adev, struct amdgpu_bo_va *bo_va, struct amdgpu_bo_va_mapping *mapping)h](j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hjrhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjnubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjnubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j)}jjXsbc.amdgpu_vm_bo_insert_mapasbuh1hhjnubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjnubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjnubj)}(hadevh]hadev}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjnubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjjubj)}(hstruct amdgpu_bo_va *bo_vah](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h amdgpu_bo_vah]h amdgpu_bo_va}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]jc.amdgpu_vm_bo_insert_mapasbuh1hhjubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hj.hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hbo_vah]hbo_va}(hj;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjjubj)}(h$struct amdgpu_bo_va_mapping *mappingh](j)}(hjh]hstruct}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPubj)}(h h]h }(hjahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPubh)}(hhh]j)}(hamdgpu_bo_va_mappingh]hamdgpu_bo_va_mapping}(hjrhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjoubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjtmodnameN classnameNjj)}j]jc.amdgpu_vm_bo_insert_mapasbuh1hhjPubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjPubj)}(hmappingh]hmapping}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjjubeh}(h]h ]h"]h$]h&]jjuh1jhj1hhhjChMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhj-hhhjChMubah}(h]j(ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjChMhj*hhubj[)}(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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjhhubah}(h]h ]h"]h$]h&]uh1jZhj*hhhjChMubeh}(h]h ](j4functioneh"]h$]h&]jj4jjjjjjjuh1jbhhhjhNhNubj)}(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]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hjubj )}(hhh](j)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj$)}(hhh]h)}(hamdgpu_device pointerh]hamdgpu_device pointer}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+hMhj,ubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hj+hMhj ubj)}(h:``struct amdgpu_bo_va *bo_va`` bo_va to store the address h](j)}(h``struct amdgpu_bo_va *bo_va``h]j:)}(hjOh]hstruct amdgpu_bo_va *bo_va}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjMubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hjIubj$)}(hhh]h)}(hbo_va to store the addressh]hbo_va to store the address}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdhM hjeubah}(h]h ]h"]h$]h&]uh1j#hjIubeh}(h]h ]h"]h$]h&]uh1j hjdhM hj ubj)}(h?``struct amdgpu_bo_va_mapping *mapping`` the mapping to insert h](j)}(h(``struct amdgpu_bo_va_mapping *mapping``h]j:)}(hjh]h$struct amdgpu_bo_va_mapping *mapping}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hjubj$)}(hhh]h)}(hthe mapping to inserth]hthe mapping to insert}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM hjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhM hj ubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hjubh)}(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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^amdgpu_vm_bo_map (C function)c.amdgpu_vm_bo_maphNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(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]jn)}(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](jt)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMBubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMBubj)}(hamdgpu_vm_bo_maph]j)}(hamdgpu_vm_bo_maph]hamdgpu_vm_bo_map}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhMBubj)}(hx(struct amdgpu_device *adev, struct amdgpu_bo_va *bo_va, uint64_t saddr, uint64_t offset, uint64_t size, uint32_t flags)h](j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubj)}(h h]h }(hjRhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hjchhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjemodnameN classnameNjj)}j]j)}jj+sbc.amdgpu_vm_bo_mapasbuh1hhjAubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjAubj)}(hadevh]hadev}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj=ubj)}(hstruct amdgpu_bo_va *bo_vah](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h amdgpu_bo_vah]h amdgpu_bo_va}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]jc.amdgpu_vm_bo_mapasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hbo_vah]hbo_va}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj=ubj)}(huint64_t saddrh](h)}(hhh]j)}(huint64_th]huint64_t}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj,modnameN classnameNjj)}j]jc.amdgpu_vm_bo_mapasbuh1hhj#ubj)}(h h]h }(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubj)}(hsaddrh]hsaddr}(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj=ubj)}(huint64_t offseth](h)}(hhh]j)}(huint64_th]huint64_t}(hjrhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjoubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjtmodnameN classnameNjj)}j]jc.amdgpu_vm_bo_mapasbuh1hhjkubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjkubj)}(hoffseth]hoffset}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjkubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj=ubj)}(h uint64_t sizeh](h)}(hhh]j)}(huint64_th]huint64_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]jc.amdgpu_vm_bo_mapasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hsizeh]hsize}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj=ubj)}(huint32_t flagsh](h)}(hhh]j)}(huint32_th]huint32_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]jc.amdgpu_vm_bo_mapasbuh1hhjubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hflagsh]hflags}(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj=ubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhjhMBubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjhhhjhMBubah}(h]jah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjhMBhjhhubj[)}(hhh]h)}(hmap bo inside a vmh]hmap bo inside a vm}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMBhjUhhubah}(h]h ]h"]h$]h&]uh1jZhjhhhjhMBubeh}(h]h ](j4functioneh"]h$]h&]jj4jjpjjpjjjuh1jbhhhjhNhNubj)}(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]j)}(hjzh]h Parameters}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjxubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMFhjtubj )}(hhh](j)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMDhjubj$)}(hhh]h)}(hamdgpu_device pointerh]hamdgpu_device pointer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMDhjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMDhjubj)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMEhjubj$)}(hhh]h)}(hbo_va to store the addressh]hbo_va to store the address}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMEhjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMEhjubj)}(h'``uint64_t saddr`` where to map the BO h](j)}(h``uint64_t saddr``h]j:)}(hj h]huint64_t saddr}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMFhjubj$)}(hhh]h)}(hwhere to map the BOh]hwhere to map the BO}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMFhj!ubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hj hMFhjubj)}(h/``uint64_t offset`` requested offset in the BO h](j)}(h``uint64_t offset``h]j:)}(hjDh]huint64_t offset}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjBubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMGhj>ubj$)}(hhh]h)}(hrequested offset in the BOh]hrequested offset in the BO}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjYhMGhjZubah}(h]h ]h"]h$]h&]uh1j#hj>ubeh}(h]h ]h"]h$]h&]uh1j hjYhMGhjubj)}(h#``uint64_t size`` BO size in bytes h](j)}(h``uint64_t size``h]j:)}(hj}h]h uint64_t size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj{ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMHhjwubj$)}(hhh]h)}(hBO size in bytesh]hBO size in bytes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMHhjubah}(h]h ]h"]h$]h&]uh1j#hjwubeh}(h]h ]h"]h$]h&]uh1j hjhMHhjubj)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMIhjubj$)}(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&]uh1hhjhMIhjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMIhjubeh}(h]h ]h"]h$]h&]uh1jhjtubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMKhjtubh)}(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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMJhjtubh)}(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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMMhjtubh)}(h **Return**h]j)}(hj'h]hReturn}(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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMOhjtubh)}(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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMMhjtubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^%amdgpu_vm_bo_replace_map (C function)c.amdgpu_vm_bo_replace_maphNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(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]jn)}(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](jt)}(hinth]hint}(hjlhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjhhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM|ubj)}(h h]h }(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhhjzhM|ubj)}(hamdgpu_vm_bo_replace_maph]j)}(hamdgpu_vm_bo_replace_maph]hamdgpu_vm_bo_replace_map}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhhjzhM|ubj)}(hx(struct amdgpu_device *adev, struct amdgpu_bo_va *bo_va, uint64_t saddr, uint64_t offset, uint64_t size, uint32_t flags)h](j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.amdgpu_vm_bo_replace_mapasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hadevh]hadev}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hstruct amdgpu_bo_va *bo_vah](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h amdgpu_bo_vah]h amdgpu_bo_va}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj;modnameN classnameNjj)}j]jc.amdgpu_vm_bo_replace_mapasbuh1hhjubj)}(h h]h }(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjehhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hbo_vah]hbo_va}(hjrhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(huint64_t saddrh](h)}(hhh]j)}(huint64_th]huint64_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]jc.amdgpu_vm_bo_replace_mapasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hsaddrh]hsaddr}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(huint64_t offseth](h)}(hhh]j)}(huint64_th]huint64_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]jc.amdgpu_vm_bo_replace_mapasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hoffseth]hoffset}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(h uint64_t sizeh](h)}(hhh]j)}(huint64_th]huint64_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj modnameN classnameNjj)}j]jc.amdgpu_vm_bo_replace_mapasbuh1hhjubj)}(h h]h }(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hsizeh]hsize}(hjJhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(huint32_t flagsh](h)}(hhh]j)}(huint32_th]huint32_t}(hjfhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjcubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjhmodnameN classnameNjj)}j]jc.amdgpu_vm_bo_replace_mapasbuh1hhj_ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_ubj)}(hflagsh]hflags}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhhjzhM|ubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjdhhhjzhM|ubah}(h]j_ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjzhM|hjahhubj[)}(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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM|hjhhubah}(h]h ]h"]h$]h&]uh1jZhjahhhjzhM|ubeh}(h]h ](j4functioneh"]h$]h&]jj4jjjjjjjuh1jbhhhjhNhNubj)}(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]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj )}(hhh](j)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM~hjubj$)}(hhh]h)}(hamdgpu_device pointerh]hamdgpu_device pointer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM~hjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhM~hjubj)}(h:``struct amdgpu_bo_va *bo_va`` bo_va to store the address h](j)}(h``struct amdgpu_bo_va *bo_va``h]j:)}(hj6h]hstruct amdgpu_bo_va *bo_va}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj4ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj0ubj$)}(hhh]h)}(hbo_va to store the addressh]hbo_va to store the address}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjKhMhjLubah}(h]h ]h"]h$]h&]uh1j#hj0ubeh}(h]h ]h"]h$]h&]uh1j hjKhMhjubj)}(h'``uint64_t saddr`` where to map the BO h](j)}(h``uint64_t saddr``h]j:)}(hjoh]huint64_t saddr}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjmubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjiubj$)}(hhh]h)}(hwhere to map the BOh]hwhere to map the BO}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j#hjiubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj)}(h/``uint64_t offset`` requested offset in the BO h](j)}(h``uint64_t offset``h]j:)}(hjh]huint64_t offset}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj$)}(hhh]h)}(hrequested offset in the BOh]hrequested offset in the BO}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj$)}(hhh]h)}(hBO size in bytesh]hBO size in bytes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj$)}(hhh]h)}(h+attributes of pages (read/write/valid/etc.)h]h+attributes of pages (read/write/valid/etc.)}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/hMhj0ubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hj/hMhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjUh]h Description}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(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.}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(h1Object has to be reserved and unreserved outside!h]h1Object has to be reserved and unreserved outside!}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^amdgpu_vm_bo_unmap (C function)c.amdgpu_vm_bo_unmaphNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(h_int amdgpu_vm_bo_unmap (struct amdgpu_device *adev, struct amdgpu_bo_va *bo_va, uint64_t saddr)h]jn)}(h^int amdgpu_vm_bo_unmap(struct amdgpu_device *adev, struct amdgpu_bo_va *bo_va, uint64_t saddr)h](jt)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj)}(hamdgpu_vm_bo_unmaph]j)}(hamdgpu_vm_bo_unmaph]hamdgpu_vm_bo_unmap}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhMubj)}(hH(struct amdgpu_device *adev, struct amdgpu_bo_va *bo_va, uint64_t saddr)h](j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj-modnameN classnameNjj)}j]j)}jjsbc.amdgpu_vm_bo_unmapasbuh1hhj ubj)}(h h]h }(hjKhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hjh]h*}(hjYhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj ubj)}(hadevh]hadev}(hjfhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hstruct amdgpu_bo_va *bo_vah](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj{ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj{ubh)}(hhh]j)}(h amdgpu_bo_vah]h amdgpu_bo_va}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]jGc.amdgpu_vm_bo_unmapasbuh1hhj{ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj{ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj{ubj)}(hbo_vah]hbo_va}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj{ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(huint64_t saddrh](h)}(hhh]j)}(huint64_th]huint64_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]jGc.amdgpu_vm_bo_unmapasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hsaddrh]hsaddr}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjhhhjhMubah}(h]jah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjhMhjhhubj[)}(hhh]h)}(hremove bo mapping from vmh]hremove bo mapping from vm}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjEhhubah}(h]h ]h"]h$]h&]uh1jZhjhhhjhMubeh}(h]h ](j4functioneh"]h$]h&]jj4jj`jj`jjjuh1jbhhhjhNhNubj)}(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]j)}(hjjh]h Parameters}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjdubj )}(hhh](j)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./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&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./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&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./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&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubeh}(h]h ]h"]h$]h&]uh1jhjdubh)}(h**Description**h]j)}(hj6h]h Description}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjdubh)}(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.}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjdubh)}(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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjdubh)}(h **Return**h]j)}(hjlh]hReturn}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjdubh)}(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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjdubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^(amdgpu_vm_bo_clear_mappings (C function)c.amdgpu_vm_bo_clear_mappingshNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(hqint amdgpu_vm_bo_clear_mappings (struct amdgpu_device *adev, struct amdgpu_vm *vm, uint64_t saddr, uint64_t size)h]jn)}(hpint amdgpu_vm_bo_clear_mappings(struct amdgpu_device *adev, struct amdgpu_vm *vm, uint64_t saddr, uint64_t size)h](jt)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj)}(hamdgpu_vm_bo_clear_mappingsh]j)}(hamdgpu_vm_bo_clear_mappingsh]hamdgpu_vm_bo_clear_mappings}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhMubj)}(hQ(struct amdgpu_device *adev, struct amdgpu_vm *vm, uint64_t saddr, uint64_t size)h](j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.amdgpu_vm_bo_clear_mappingsasbuh1hhjubj)}(h h]h }(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hj:hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hadevh]hadev}(hjGhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hstruct amdgpu_vm *vmh](j)}(hjh]hstruct}(hj`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\ubj)}(h h]h }(hjmhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\ubh)}(hhh]j)}(h amdgpu_vmh]h amdgpu_vm}(hj~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj{ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j(c.amdgpu_vm_bo_clear_mappingsasbuh1hhj\ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj\ubj)}(hvmh]hvm}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(huint64_t saddrh](h)}(hhh]j)}(huint64_th]huint64_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j(c.amdgpu_vm_bo_clear_mappingsasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hsaddrh]hsaddr}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(h uint64_t sizeh](h)}(hhh]j)}(huint64_th]huint64_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j(c.amdgpu_vm_bo_clear_mappingsasbuh1hhjubj)}(h h]h }(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hsizeh]hsize}(hjGhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjhhhjhMubah}(h]jah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjhMhjhhubj[)}(hhh]h)}(h'remove all mappings in a specific rangeh]h'remove all mappings in a specific range}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjnhhubah}(h]h ]h"]h$]h&]uh1jZhjhhhjhMubeh}(h]h ](j4functioneh"]h$]h&]jj4jjjjjjjuh1jbhhhjhNhNubj)}(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]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj )}(hhh](j)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./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&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./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&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj)}(h&``uint64_t saddr`` start of the range h](j)}(h``uint64_t saddr``h]j:)}(hj$h]huint64_t saddr}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj"ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj$)}(hhh]h)}(hstart of the rangeh]hstart of the range}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9hMhj:ubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hj9hMhjubj)}(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&]uh1j9hj[ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjWubj$)}(hhh]h)}(hsize of the rangeh]hsize of the range}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjrhMhjsubah}(h]h ]h"]h$]h&]uh1j#hjWubeh}(h]h ]h"]h$]h&]uh1j hjrhMhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(h:Remove all mappings in a range, split them as appropriate.h]h:Remove all mappings in a range, split them as appropriate.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^(amdgpu_vm_bo_lookup_mapping (C function)c.amdgpu_vm_bo_lookup_mappinghNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(h_struct amdgpu_bo_va_mapping * amdgpu_vm_bo_lookup_mapping (struct amdgpu_vm *vm, uint64_t addr)h]jn)}(h]struct amdgpu_bo_va_mapping *amdgpu_vm_bo_lookup_mapping(struct amdgpu_vm *vm, uint64_t addr)h](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMjubh)}(hhh]j)}(hamdgpu_bo_va_mappingh]hamdgpu_bo_va_mapping}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj%modnameN classnameNjj)}j]j)}jamdgpu_vm_bo_lookup_mappingsbc.amdgpu_vm_bo_lookup_mappingasbuh1hhjhhhjhMjubj)}(h h]h }(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMjubj)}(hjh]h*}(hjRhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjhhhjhMjubj)}(hamdgpu_vm_bo_lookup_mappingh]j)}(hjAh]hamdgpu_vm_bo_lookup_mapping}(hjchhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhMjubj)}(h%(struct amdgpu_vm *vm, uint64_t addr)h](j)}(hstruct amdgpu_vm *vmh](j)}(hjh]hstruct}(hj~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjzubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjzubh)}(hhh]j)}(h amdgpu_vmh]h amdgpu_vm}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j?c.amdgpu_vm_bo_lookup_mappingasbuh1hhjzubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjzubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjzubj)}(hvmh]hvm}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjzubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjvubj)}(h uint64_t addrh](h)}(hhh]j)}(huint64_th]huint64_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j?c.amdgpu_vm_bo_lookup_mappingasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(haddrh]haddr}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjvubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhjhMjubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjhhhjhMjubah}(h]jah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjhMjhjhhubj[)}(hhh]h)}(hfind mapping by addressh]hfind mapping by address}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMjhjDhhubah}(h]h ]h"]h$]h&]uh1jZhjhhhjhMjubeh}(h]h ](j4functioneh"]h$]h&]jj4jj_jj_jjjuh1jbhhhjhNhNubj)}(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]j)}(hjih]h Parameters}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMnhjcubj )}(hhh](j)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMlhjubj$)}(hhh]h)}(hthe requested VMh]hthe requested VM}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMlhjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMlhjubj)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMmhjubj$)}(hhh]h)}(h the addressh]h the address}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMmhjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMmhjubeh}(h]h ]h"]h$]h&]uh1jhjcubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMohjcubh)}(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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMnhjcubh)}(h **Return**h]j)}(hj#h]hReturn}(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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMphjcubh)}(h2The amdgpu_bo_va_mapping matching for addr or NULLh]h2The amdgpu_bo_va_mapping matching for addr or NULL}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMqhjcubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^"amdgpu_vm_bo_trace_cs (C function)c.amdgpu_vm_bo_trace_cshNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(hPvoid amdgpu_vm_bo_trace_cs (struct amdgpu_vm *vm, struct ww_acquire_ctx *ticket)h]jn)}(hOvoid amdgpu_vm_bo_trace_cs(struct amdgpu_vm *vm, struct ww_acquire_ctx *ticket)h](jt)}(hvoidh]hvoid}(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjdhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM|ubj)}(h h]h }(hjwhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjdhhhjvhM|ubj)}(hamdgpu_vm_bo_trace_csh]j)}(hamdgpu_vm_bo_trace_csh]hamdgpu_vm_bo_trace_cs}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjdhhhjvhM|ubj)}(h5(struct amdgpu_vm *vm, struct ww_acquire_ctx *ticket)h](j)}(hstruct amdgpu_vm *vmh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h amdgpu_vmh]h amdgpu_vm}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.amdgpu_vm_bo_trace_csasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hvmh]hvm}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hstruct ww_acquire_ctx *ticketh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(hww_acquire_ctxh]hww_acquire_ctx}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj7modnameN classnameNjj)}j]jc.amdgpu_vm_bo_trace_csasbuh1hhjubj)}(h h]h }(hjShhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjahhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hticketh]hticket}(hjnhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhjdhhhjvhM|ubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhj`hhhjvhM|ubah}(h]j[ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjvhM|hj]hhubj[)}(hhh]h)}(htrace all reserved mappingsh]htrace all reserved mappings}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM|hjhhubah}(h]h ]h"]h$]h&]uh1jZhj]hhhjvhM|ubeh}(h]h ](j4functioneh"]h$]h&]jj4jjjjjjjuh1jbhhhjhNhNubj)}(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]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj )}(hhh](j)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM~hjubj$)}(hhh]h)}(hthe requested vmh]hthe requested vm}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM~hjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhM~hjubj)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj ubj$)}(hhh]h)}(h CS ticketh]h CS ticket}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj'hMhj(ubah}(h]h ]h"]h$]h&]uh1j#hj ubeh}(h]h ]h"]h$]h&]uh1j hj'hMhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjMh]h Description}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(h?Trace all mappings of BOs reserved during a command submission.h]h?Trace all mappings of BOs reserved during a command submission.}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^amdgpu_vm_bo_del (C function)c.amdgpu_vm_bo_delhNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(hNvoid amdgpu_vm_bo_del (struct amdgpu_device *adev, struct amdgpu_bo_va *bo_va)h]jn)}(hMvoid amdgpu_vm_bo_del(struct amdgpu_device *adev, struct amdgpu_bo_va *bo_va)h](jt)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj)}(hamdgpu_vm_bo_delh]j)}(hamdgpu_vm_bo_delh]hamdgpu_vm_bo_del}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhMubj)}(h8(struct amdgpu_device *adev, struct amdgpu_bo_va *bo_va)h](j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.amdgpu_vm_bo_delasbuh1hhjubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hadevh]hadev}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hstruct amdgpu_bo_va *bo_vah](j)}(hjh]hstruct}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=ubj)}(h h]h }(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=ubh)}(hhh]j)}(h amdgpu_bo_vah]h amdgpu_bo_va}(hj_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjamodnameN classnameNjj)}j]j c.amdgpu_vm_bo_delasbuh1hhj=ubj)}(h h]h }(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj=ubj)}(hbo_vah]hbo_va}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjhhhjhMubah}(h]jah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjhMhjhhubj[)}(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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjhhubah}(h]h ]h"]h$]h&]uh1jZhjhhhjhMubeh}(h]h ](j4functioneh"]h$]h&]jj4jjjjjjjuh1jbhhhjhNhNubj)}(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]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubj )}(hhh](j)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./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&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj)}(h/``struct amdgpu_bo_va *bo_va`` requested bo_va h](j)}(h``struct amdgpu_bo_va *bo_va``h]j:)}(hj<h]hstruct amdgpu_bo_va *bo_va}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj:ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj6ubj$)}(hhh]h)}(hrequested bo_vah]hrequested bo_va}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQhMhjRubah}(h]h ]h"]h$]h&]uh1j#hj6ubeh}(h]h ]h"]h$]h&]uh1j hjQhMhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjwh]h Description}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjuubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(h+Remove **bo_va->bo** from the requested vm.h](hRemove }(hjhhhNhNubj)}(h **bo_va->bo**h]h bo_va->bo}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh from the requested vm.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubh)}(hObject have to be reserved!h]hObject have to be reserved!}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^ amdgpu_vm_evictable (C function)c.amdgpu_vm_evictablehNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(h/bool amdgpu_vm_evictable (struct amdgpu_bo *bo)h]jn)}(h.bool amdgpu_vm_evictable(struct amdgpu_bo *bo)h](jt)}(hjwh]hbool}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj)}(hamdgpu_vm_evictableh]j)}(hamdgpu_vm_evictableh]hamdgpu_vm_evictable}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhMubj)}(h(struct amdgpu_bo *bo)h]j)}(hstruct amdgpu_bo *boh](j)}(hjh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(h h]h }(hj& hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubh)}(hhh]j)}(h amdgpu_boh]h amdgpu_bo}(hj7 hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj4 ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj9 modnameN classnameNjj)}j]j)}jjsbc.amdgpu_vm_evictableasbuh1hhj ubj)}(h h]h }(hjW hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hjh]h*}(hje hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj ubj)}(hboh]hbo}(hjr hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj ubah}(h]h ]h"]h$]h&]jjuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjhhhjhMubah}(h]jah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjhMhjhhubj[)}(hhh]h)}(hcheck if we can evict a VMh]hcheck if we can evict a VM}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj hhubah}(h]h ]h"]h$]h&]uh1jZhjhhhjhMubeh}(h]h ](j4functioneh"]h$]h&]jj4jj jj jjjuh1jbhhhjhNhNubj)}(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]j)}(hj h]h Parameters}(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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj ubj )}(hhh]j)}(h1``struct amdgpu_bo *bo`` A page table of the VM. h](j)}(h``struct amdgpu_bo *bo``h]j:)}(hj h]hstruct amdgpu_bo *bo}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj ubj$)}(hhh]h)}(hA page table of the VM.h]hA page table of the VM.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMhj ubah}(h]h ]h"]h$]h&]uh1j#hj ubeh}(h]h ]h"]h$]h&]uh1j hj hMhj ubah}(h]h ]h"]h$]h&]uh1jhj ubh)}(h**Description**h]j)}(hj h]h Description}(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:225: ./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.}(hj. hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^$amdgpu_vm_bo_invalidate (C function)c.amdgpu_vm_bo_invalidatehNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(hAvoid amdgpu_vm_bo_invalidate (struct amdgpu_bo *bo, bool evicted)h]jn)}(h@void amdgpu_vm_bo_invalidate(struct amdgpu_bo *bo, bool evicted)h](jt)}(hvoidh]hvoid}(hj] hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjY hhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMubj)}(h h]h }(hjl hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjY hhhjk hMubj)}(hamdgpu_vm_bo_invalidateh]j)}(hamdgpu_vm_bo_invalidateh]hamdgpu_vm_bo_invalidate}(hj~ hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjz ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjY hhhjk hMubj)}(h$(struct amdgpu_bo *bo, bool evicted)h](j)}(hstruct amdgpu_bo *boh](j)}(hjh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubh)}(hhh]j)}(h amdgpu_boh]h amdgpu_bo}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj modnameN classnameNjj)}j]j)}jj sbc.amdgpu_vm_bo_invalidateasbuh1hhj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj ubj)}(hboh]hbo}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj ubj)}(h bool evictedh](jt)}(hjwh]hbool}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hevictedh]hevicted}(hj' hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj ubeh}(h]h ]h"]h$]h&]jjuh1jhjY hhhjk hMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjU hhhjk hMubah}(h]jP ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjk hMhjR hhubj[)}(hhh]h)}(hmark the bo as invalidh]hmark the bo as invalid}(hjQ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjN hhubah}(h]h ]h"]h$]h&]uh1jZhjR hhhjk hMubeh}(h]h ](j4functioneh"]h$]h&]jj4jji jji jjjuh1jbhhhjhNhNubj)}(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]j)}(hjs h]h Parameters}(hju hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjq ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjm ubj )}(hhh](j)}(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&]uh1j9hj ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./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&]uh1j#hj ubeh}(h]h ]h"]h$]h&]uh1j hj hMhj ubj)}(h#``bool evicted`` is the BO evicted h](j)}(h``bool evicted``h]j:)}(hj h]h bool evicted}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhj ubj$)}(hhh]h)}(his the BO evictedh]his the BO evicted}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMhj ubah}(h]h ]h"]h$]h&]uh1j#hj ubeh}(h]h ]h"]h$]h&]uh1j hj hMhj ubeh}(h]h ]h"]h$]h&]uh1jhjm ubh)}(h**Description**h]j)}(hj h]h Description}(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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjm ubh)}(hMark **bo** as invalid.h](hMark }(hj hhhNhNubj)}(h**bo**h]hbo}(hj$ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh as invalid.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMhjm ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^amdgpu_vm_bo_move (C function)c.amdgpu_vm_bo_movehNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(hYvoid amdgpu_vm_bo_move (struct amdgpu_bo *bo, struct ttm_resource *new_mem, bool evicted)h]jn)}(hXvoid amdgpu_vm_bo_move(struct amdgpu_bo *bo, struct ttm_resource *new_mem, bool evicted)h](jt)}(hvoidh]hvoid}(hj] hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjY hhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM ubj)}(h h]h }(hjl hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjY hhhjk hM ubj)}(hamdgpu_vm_bo_moveh]j)}(hamdgpu_vm_bo_moveh]hamdgpu_vm_bo_move}(hj~ hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjz ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjY hhhjk hM ubj)}(hB(struct amdgpu_bo *bo, struct ttm_resource *new_mem, bool evicted)h](j)}(hstruct amdgpu_bo *boh](j)}(hjh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubh)}(hhh]j)}(h amdgpu_boh]h amdgpu_bo}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj modnameN classnameNjj)}j]j)}jj sbc.amdgpu_vm_bo_moveasbuh1hhj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj ubj)}(hboh]hbo}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj ubj)}(hstruct ttm_resource *new_memh](j)}(hjh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubh)}(hhh]j)}(h ttm_resourceh]h ttm_resource}(hj* hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj' ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj, modnameN classnameNjj)}j]j c.amdgpu_vm_bo_moveasbuh1hhj ubj)}(h h]h }(hjH hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hjh]h*}(hjV hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj ubj)}(hnew_memh]hnew_mem}(hjc hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj ubj)}(h bool evictedh](jt)}(hjwh]hbool}(hj| hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjx ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjx ubj)}(hevictedh]hevicted}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjx ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj ubeh}(h]h ]h"]h$]h&]jjuh1jhjY hhhjk hM ubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjU hhhjk hM ubah}(h]jP ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjk hM hjR 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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hj hhubah}(h]h ]h"]h$]h&]uh1jZhjR hhhjk hM ubeh}(h]h ](j4functioneh"]h$]h&]jj4jj jj jjjuh1jbhhhjhNhNubj)}(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]j)}(hj h]h Parameters}(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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hj ubj )}(hhh](j)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hj ubj$)}(hhh]h)}(hamdgpu buffer objecth]hamdgpu buffer object}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM hjubah}(h]h ]h"]h$]h&]uh1j#hj ubeh}(h]h ]h"]h$]h&]uh1j hjhM hj ubj)}(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&]uh1j9hj9ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hj5ubj$)}(hhh]h)}(h the new placement of the BO moveh]h the new placement of the BO move}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhjPhM hjQubah}(h]h ]h"]h$]h&]uh1j#hj5ubeh}(h]h ]h"]h$]h&]uh1j hjPhM hj ubj)}(h#``bool evicted`` is the BO evicted h](j)}(h``bool evicted``h]j:)}(hjth]h bool evicted}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjrubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hjnubj$)}(hhh]h)}(his the BO evictedh]his the BO evicted}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM hjubah}(h]h ]h"]h$]h&]uh1j#hjnubeh}(h]h ]h"]h$]h&]uh1j hjhM hj ubeh}(h]h ]h"]h$]h&]uh1jhj ubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hj 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 }(hjhhhNhNubj)}(h**bo**h]hbo}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh as invalid.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^%amdgpu_vm_get_block_size (C function)c.amdgpu_vm_get_block_sizehNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(h4uint32_t amdgpu_vm_get_block_size (uint64_t vm_size)h]jn)}(h3uint32_t amdgpu_vm_get_block_size(uint64_t vm_size)h](h)}(hhh]j)}(huint32_th]huint32_t}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj modnameN classnameNjj)}j]j)}jamdgpu_vm_get_block_sizesbc.amdgpu_vm_get_block_sizeasbuh1hhjhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM/ ubj)}(h h]h }(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhj*hM/ ubj)}(hamdgpu_vm_get_block_sizeh]j)}(hj'h]hamdgpu_vm_get_block_size}(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhj*hM/ ubj)}(h(uint64_t vm_size)h]j)}(huint64_t vm_sizeh](h)}(hhh]j)}(huint64_th]huint64_t}(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj]modnameN classnameNjj)}j]j%c.amdgpu_vm_get_block_sizeasbuh1hhjTubj)}(h h]h }(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjTubj)}(hvm_sizeh]hvm_size}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjTubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjPubah}(h]h ]h"]h$]h&]jjuh1jhjhhhj*hM/ ubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjhhhj*hM/ ubah}(h]jah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghj*hM/ hjhhubj[)}(hhh]h)}(h,calculate VM page table size as power of twoh]h,calculate VM page table size as power of two}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM/ hjhhubah}(h]h ]h"]h$]h&]uh1jZhjhhhj*hM/ ubeh}(h]h ](j4functioneh"]h$]h&]jj4jjjjjjjuh1jbhhhjhNhNubj)}(hY**Parameters** ``uint64_t vm_size`` VM size **Return** VM page table as power of twoh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM3 hjubj )}(hhh]j)}(h``uint64_t vm_size`` VM size h](j)}(h``uint64_t vm_size``h]j:)}(hjh]huint64_t vm_size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM1 hjubj$)}(hhh]h)}(hVM sizeh]hVM size}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM1 hjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhM1 hjubah}(h]h ]h"]h$]h&]uh1jhjubh)}(h **Return**h]j)}(hj-h]hReturn}(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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM3 hjubh)}(hVM page table as power of twoh]hVM page table as power of two}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM3 hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^"amdgpu_vm_adjust_size (C function)c.amdgpu_vm_adjust_sizehNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(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]jn)}(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](jt)}(hvoidh]hvoid}(hjrhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjnhhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMD ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjnhhhjhMD ubj)}(hamdgpu_vm_adjust_sizeh]j)}(hamdgpu_vm_adjust_sizeh]hamdgpu_vm_adjust_size}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjnhhhjhMD ubj)}(hy(struct amdgpu_device *adev, uint32_t min_vm_size, uint32_t fragment_size_default, unsigned max_level, unsigned max_bits)h](j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.amdgpu_vm_adjust_sizeasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hadevh]hadev}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(huint32_t min_vm_sizeh](h)}(hhh]j)}(huint32_th]huint32_t}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj&modnameN classnameNjj)}j]jc.amdgpu_vm_adjust_sizeasbuh1hhjubj)}(h h]h }(hjBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h min_vm_sizeh]h min_vm_size}(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(huint32_t fragment_size_defaulth](h)}(hhh]j)}(huint32_th]huint32_t}(hjlhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjiubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjnmodnameN classnameNjj)}j]jc.amdgpu_vm_adjust_sizeasbuh1hhjeubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjeubj)}(hfragment_size_defaulth]hfragment_size_default}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjeubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hunsigned max_levelh](jt)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h max_levelh]h max_level}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hunsigned max_bitsh](jt)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hmax_bitsh]hmax_bits}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhjnhhhjhMD ubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjjhhhjhMD ubah}(h]jeah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjhMD hjghhubj[)}(hhh]h)}(h,adjust vm size, block size and fragment sizeh]h,adjust vm size, block size and fragment size}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMD hj)hhubah}(h]h ]h"]h$]h&]uh1jZhjghhhjhMD ubeh}(h]h ](j4functioneh"]h$]h&]jj4jjDjjDjjjuh1jbhhhjhNhNubj)}(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]j)}(hjNh]h Parameters}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMH hjHubj )}(hhh](j)}(h5``struct amdgpu_device *adev`` amdgpu_device pointer h](j)}(h``struct amdgpu_device *adev``h]j:)}(hjmh]hstruct amdgpu_device *adev}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjkubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMF hjgubj$)}(hhh]h)}(hamdgpu_device pointerh]hamdgpu_device pointer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMF hjubah}(h]h ]h"]h$]h&]uh1j#hjgubeh}(h]h ]h"]h$]h&]uh1j hjhMF hjdubj)}(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:)}(hjh]huint32_t min_vm_size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMG hjubj$)}(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&]uh1hhjhMG hjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMG hjdubj)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMH hjubj$)}(hhh]h)}(hDefault PTE fragment sizeh]hDefault PTE fragment size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMH hjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhMH hjdubj)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMI hjubj$)}(hhh]h)}(hmax VMPT levelh]hmax VMPT level}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj-hMI hj.ubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hj-hMI hjdubj)}(h4``unsigned max_bits`` max address space size in bitsh](j)}(h``unsigned max_bits``h]j:)}(hjQh]hunsigned max_bits}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjOubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMK hjKubj$)}(hhh]h)}(hmax address space size in bitsh]hmax address space size in bits}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMJ hjgubah}(h]h ]h"]h$]h&]uh1j#hjKubeh}(h]h ]h"]h$]h&]uh1j hjfhMK hjdubeh}(h]h ]h"]h$]h&]uh1jhjHubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^ amdgpu_vm_wait_idle (C function)c.amdgpu_vm_wait_idlehNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(h=long amdgpu_vm_wait_idle (struct amdgpu_vm *vm, long timeout)h]jn)}(hhhubj[)}(hhh]h)}(hinitialize a vm instanceh]hinitialize a vm instance}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hjhhubah}(h]h ]h"]h$]h&]uh1jZhj>hhhjWhM ubeh}(h]h ](j4functioneh"]h$]h&]jj4jjjjjjjuh1jbhhhjhNhNubj)}(h**Parameters** ``struct amdgpu_device *adev`` amdgpu_device pointer ``struct amdgpu_vm *vm`` requested vm ``int32_t xcp_id`` GPU partition selection id **Description** Init **vm** fields. **Return** 0 for success, error for failure.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hjubj )}(hhh](j)}(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&]uh1j9hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hjubj$)}(hhh]h)}(hamdgpu_device pointerh]hamdgpu_device pointer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM hjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1j hjhM hjubj)}(h&``struct amdgpu_vm *vm`` requested vm h](j)}(h``struct amdgpu_vm *vm``h]j:)}(hj;h]hstruct amdgpu_vm *vm}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj9ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hj5ubj$)}(hhh]h)}(h requested vmh]h requested vm}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhjPhM hjQubah}(h]h ]h"]h$]h&]uh1j#hj5ubeh}(h]h ]h"]h$]h&]uh1j hjPhM hjubj)}(h.``int32_t xcp_id`` GPU partition selection id h](j)}(h``int32_t xcp_id``h]j:)}(hjth]hint32_t xcp_id}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjrubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hjnubj$)}(hhh]h)}(hGPU partition selection idh]hGPU partition selection id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM hjubah}(h]h ]h"]h$]h&]uh1j#hjnubeh}(h]h ]h"]h$]h&]uh1j hjhM hjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hjubh)}(hInit **vm** fields.h](hInit }(hjhhhNhNubj)}(h**vm**h]hvm}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh fields.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hjubh)}(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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^#amdgpu_vm_make_compute (C function)c.amdgpu_vm_make_computehNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(hMint amdgpu_vm_make_compute (struct amdgpu_device *adev, struct amdgpu_vm *vm)h]jn)}(hLint amdgpu_vm_make_compute(struct amdgpu_device *adev, struct amdgpu_vm *vm)h](jt)}(hinth]hint}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj)hhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM ubj)}(h h]h }(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)hhhj;hM ubj)}(hamdgpu_vm_make_computeh]j)}(hamdgpu_vm_make_computeh]hamdgpu_vm_make_compute}(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJubah}(h]h ](jjeh"]h$]h&]jjuh1jhj)hhhj;hM ubj)}(h2(struct amdgpu_device *adev, struct amdgpu_vm *vm)h](j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjfubj)}(h h]h }(hjwhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjfubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]j)}jjPsbc.amdgpu_vm_make_computeasbuh1hhjfubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjfubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjfubj)}(hadevh]hadev}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjfubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjbubj)}(hstruct amdgpu_vm *vmh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h amdgpu_vmh]h amdgpu_vm}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjmodnameN classnameNjj)}j]jc.amdgpu_vm_make_computeasbuh1hhjubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hj& hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj)}(hvmh]hvm}(hj3 hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjbubeh}(h]h ]h"]h$]h&]jjuh1jhj)hhhj;hM ubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhj%hhhj;hM ubah}(h]j ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghj;hM hj"hhubj[)}(hhh]h)}(hTurn a GFX VM into a compute VMh]hTurn a GFX VM into a compute VM}(hj] hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hjZ hhubah}(h]h ]h"]h$]h&]uh1jZhj"hhhj;hM ubeh}(h]h ](j4functioneh"]h$]h&]jj4jju jju jjjuh1jbhhhjhNhNubj)}(hX**Parameters** ``struct amdgpu_device *adev`` amdgpu_device pointer ``struct amdgpu_vm *vm`` requested vm **Description** This only works on GFX VMs that don't have any BOs added and no page tables allocated yet. Changes the following VM parameters: - use_cpu_for_update - pte_supports_ats Reinitializes the page directory to reflect the changed ATS setting. **Return** 0 for success, -errno for errors.h](h)}(h**Parameters**h]j)}(hj h]h Parameters}(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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hjy ubj )}(hhh](j)}(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&]uh1j9hj ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.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&]uh1j#hj ubeh}(h]h ]h"]h$]h&]uh1j hj hM hj ubj)}(h&``struct amdgpu_vm *vm`` requested vm h](j)}(h``struct amdgpu_vm *vm``h]j:)}(hj h]hstruct amdgpu_vm *vm}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hj ubj$)}(hhh]h)}(h requested vmh]h requested vm}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hM hj ubah}(h]h ]h"]h$]h&]uh1j#hj ubeh}(h]h ]h"]h$]h&]uh1j hj hM hj ubeh}(h]h ]h"]h$]h&]uh1jhjy ubh)}(h**Description**h]j)}(hj!h]h Description}(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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hjy ubh)}(hZThis only works on GFX VMs that don't have any BOs added and no page tables allocated yet.h]h\This only works on GFX VMs that don’t have any BOs added and no page tables allocated yet.}(hj(!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hjy ubh)}(hLChanges the following VM parameters: - use_cpu_for_update - pte_supports_atsh]hLChanges the following VM parameters: - use_cpu_for_update - pte_supports_ats}(hj7!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hjy ubh)}(hDReinitializes the page directory to reflect the changed ATS setting.h]hDReinitializes the page directory to reflect the changed ATS setting.}(hjF!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hjy ubh)}(h **Return**h]j)}(hjW!h]hReturn}(hjY!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjU!ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hjy ubh)}(h!0 for success, -errno for errors.h]h!0 for success, -errno for errors.}(hjm!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hjy ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^amdgpu_vm_fini (C function)c.amdgpu_vm_finihNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(hFvoid amdgpu_vm_fini (struct amdgpu_device *adev, struct amdgpu_vm *vm)h]jn)}(hEvoid amdgpu_vm_fini(struct amdgpu_device *adev, struct amdgpu_vm *vm)h](jt)}(hvoidh]hvoid}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj!hhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM ubj)}(h h]h }(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!hhhj!hM ubj)}(hamdgpu_vm_finih]j)}(hamdgpu_vm_finih]hamdgpu_vm_fini}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj!hhhj!hM ubj)}(h2(struct amdgpu_device *adev, struct amdgpu_vm *vm)h](j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubj)}(h h]h }(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj!modnameN classnameNjj)}j]j)}jj!sbc.amdgpu_vm_finiasbuh1hhj!ubj)}(h h]h }(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubj)}(hjh]h*}(hj%"hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj!ubj)}(hadevh]hadev}(hj2"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj!ubj)}(hstruct amdgpu_vm *vmh](j)}(hjh]hstruct}(hjK"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjG"ubj)}(h h]h }(hjX"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjG"ubh)}(hhh]j)}(h amdgpu_vmh]h amdgpu_vm}(hji"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjf"ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjk"modnameN classnameNjj)}j]j"c.amdgpu_vm_finiasbuh1hhjG"ubj)}(h h]h }(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjG"ubj)}(hjh]h*}(hj"hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjG"ubj)}(hvmh]hvm}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjG"ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj!ubeh}(h]h ]h"]h$]h&]jjuh1jhj!hhhj!hM ubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhj!hhhj!hM ubah}(h]j!ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghj!hM hj!hhubj[)}(hhh]h)}(htear down a vm instanceh]htear down a vm instance}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hj"hhubah}(h]h ]h"]h$]h&]uh1jZhj!hhhj!hM ubeh}(h]h ](j4functioneh"]h$]h&]jj4jj"jj"jjjuh1jbhhhjhNhNubj)}(h**Parameters** ``struct amdgpu_device *adev`` amdgpu_device pointer ``struct amdgpu_vm *vm`` requested vm **Description** Tear down **vm**. Unbind the VM and remove all bos from the vm bo listh](h)}(h**Parameters**h]j)}(hj"h]h Parameters}(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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hj"ubj )}(hhh](j)}(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&]uh1j9hj #ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.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&]uh1j#hj#ubeh}(h]h ]h"]h$]h&]uh1j hj"#hM hj#ubj)}(h&``struct amdgpu_vm *vm`` requested vm h](j)}(h``struct amdgpu_vm *vm``h]j:)}(hjF#h]hstruct amdgpu_vm *vm}(hjH#hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjD#ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hj@#ubj$)}(hhh]h)}(h requested vmh]h requested vm}(hj_#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj[#hM hj\#ubah}(h]h ]h"]h$]h&]uh1j#hj@#ubeh}(h]h ]h"]h$]h&]uh1j hj[#hM hj#ubeh}(h]h ]h"]h$]h&]uh1jhj"ubh)}(h**Description**h]j)}(hj#h]h Description}(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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hj"ubh)}(hFTear down **vm**. Unbind the VM and remove all bos from the vm bo listh](h Tear down }(hj#hhhNhNubj)}(h**vm**h]hvm}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj#ubh6. Unbind the VM and remove all bos from the vm bo list}(hj#hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hj"ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^#amdgpu_vm_manager_init (C function)c.amdgpu_vm_manager_inithNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(h8void amdgpu_vm_manager_init (struct amdgpu_device *adev)h]jn)}(h7void amdgpu_vm_manager_init(struct amdgpu_device *adev)h](jt)}(hvoidh]hvoid}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj#hhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM ubj)}(h h]h }(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#hhhj#hM ubj)}(hamdgpu_vm_manager_inith]j)}(hamdgpu_vm_manager_inith]hamdgpu_vm_manager_init}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj#hhhj#hM ubj)}(h(struct amdgpu_device *adev)h]j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubj)}(h h]h }(hj"$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hj3$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0$ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj5$modnameN classnameNjj)}j]j)}jj#sbc.amdgpu_vm_manager_initasbuh1hhj$ubj)}(h h]h }(hjS$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubj)}(hjh]h*}(hja$hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj$ubj)}(hadevh]hadev}(hjn$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj $ubah}(h]h ]h"]h$]h&]jjuh1jhj#hhhj#hM ubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhj#hhhj#hM ubah}(h]j#ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghj#hM hj#hhubj[)}(hhh]h)}(hinit the VM managerh]hinit the VM manager}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hj$hhubah}(h]h ]h"]h$]h&]uh1jZhj#hhhj#hM ubeh}(h]h ](j4functioneh"]h$]h&]jj4jj$jj$jjjuh1jbhhhjhNhNubj)}(h}**Parameters** ``struct amdgpu_device *adev`` amdgpu_device pointer **Description** Initialize the VM manager structuresh](h)}(h**Parameters**h]j)}(hj$h]h Parameters}(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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hj$ubj )}(hhh]j)}(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&]uh1j9hj$ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.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&]uh1j#hj$ubeh}(h]h ]h"]h$]h&]uh1j hj$hM hj$ubah}(h]h ]h"]h$]h&]uh1jhj$ubh)}(h**Description**h]j)}(hj%h]h Description}(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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hj$ubh)}(h$Initialize the VM manager structuresh]h$Initialize the VM manager structures}(hj*%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hj$ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^#amdgpu_vm_manager_fini (C function)c.amdgpu_vm_manager_finihNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(h8void amdgpu_vm_manager_fini (struct amdgpu_device *adev)h]jn)}(h7void amdgpu_vm_manager_fini(struct amdgpu_device *adev)h](jt)}(hvoidh]hvoid}(hjY%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjU%hhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM@ ubj)}(h h]h }(hjh%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjU%hhhjg%hM@ ubj)}(hamdgpu_vm_manager_finih]j)}(hamdgpu_vm_manager_finih]hamdgpu_vm_manager_fini}(hjz%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjv%ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjU%hhhjg%hM@ ubj)}(h(struct amdgpu_device *adev)h]j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubj)}(h h]h }(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj%modnameN classnameNjj)}j]j)}jj|%sbc.amdgpu_vm_manager_finiasbuh1hhj%ubj)}(h h]h }(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubj)}(hjh]h*}(hj%hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj%ubj)}(hadevh]hadev}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj%ubah}(h]h ]h"]h$]h&]jjuh1jhjU%hhhjg%hM@ ubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjQ%hhhjg%hM@ ubah}(h]jL%ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjg%hM@ hjN%hhubj[)}(hhh]h)}(hcleanup VM managerh]hcleanup VM manager}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM@ hj&hhubah}(h]h ]h"]h$]h&]uh1jZhjN%hhhjg%hM@ ubeh}(h]h ](j4functioneh"]h$]h&]jj4jj1&jj1&jjjuh1jbhhhjhNhNubj)}(h**Parameters** ``struct amdgpu_device *adev`` amdgpu_device pointer **Description** Cleanup the VM manager and free resources.h](h)}(h**Parameters**h]j)}(hj;&h]h Parameters}(hj=&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9&ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMD hj5&ubj )}(hhh]j)}(h5``struct amdgpu_device *adev`` amdgpu_device pointer h](j)}(h``struct amdgpu_device *adev``h]j:)}(hjZ&h]hstruct amdgpu_device *adev}(hj\&hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjX&ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMB hjT&ubj$)}(hhh]h)}(hamdgpu_device pointerh]hamdgpu_device pointer}(hjs&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjo&hMB hjp&ubah}(h]h ]h"]h$]h&]uh1j#hjT&ubeh}(h]h ]h"]h$]h&]uh1j hjo&hMB hjQ&ubah}(h]h ]h"]h$]h&]uh1jhj5&ubh)}(h**Description**h]j)}(hj&h]h Description}(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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMD hj5&ubh)}(h*Cleanup the VM manager and free resources.h]h*Cleanup the VM manager and free resources.}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMC hj5&ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^amdgpu_vm_ioctl (C function)c.amdgpu_vm_ioctlhNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(hOint amdgpu_vm_ioctl (struct drm_device *dev, void *data, struct drm_file *filp)h]jn)}(hNint amdgpu_vm_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)h](jt)}(hinth]hint}(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj&hhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMM ubj)}(h h]h }(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&hhhj&hMM ubj)}(hamdgpu_vm_ioctlh]j)}(hamdgpu_vm_ioctlh]hamdgpu_vm_ioctl}(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj&hhhj&hMM ubj)}(h;(struct drm_device *dev, void *data, struct drm_file *filp)h](j)}(hstruct drm_device *devh](j)}(hjh]hstruct}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubj)}(h h]h }(hj$'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubh)}(hhh]j)}(h drm_deviceh]h drm_device}(hj5'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2'ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj7'modnameN classnameNjj)}j]j)}jj&sbc.amdgpu_vm_ioctlasbuh1hhj'ubj)}(h h]h }(hjU'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubj)}(hjh]h*}(hjc'hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj'ubj)}(hdevh]hdev}(hjp'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj'ubj)}(h void *datah](jt)}(hvoidh]hvoid}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj'ubj)}(h h]h }(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubj)}(hjh]h*}(hj'hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj'ubj)}(hdatah]hdata}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj'ubj)}(hstruct drm_file *filph](j)}(hjh]hstruct}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubj)}(h h]h }(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubh)}(hhh]j)}(hdrm_fileh]hdrm_file}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj'modnameN classnameNjj)}j]jQ'c.amdgpu_vm_ioctlasbuh1hhj'ubj)}(h h]h }(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubj)}(hjh]h*}(hj(hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj'ubj)}(hfilph]hfilp}(hj"(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj'ubeh}(h]h ]h"]h$]h&]jjuh1jhj&hhhj&hMM ubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhj&hhhj&hMM ubah}(h]j&ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghj&hMM hj&hhubj[)}(hhh]h)}(h%Manages VMID reservation for vm hubs.h]h%Manages VMID reservation for vm hubs.}(hjL(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMM hjI(hhubah}(h]h ]h"]h$]h&]uh1jZhj&hhhj&hMM ubeh}(h]h ](j4functioneh"]h$]h&]jj4jjd(jjd(jjjuh1jbhhhjhNhNubj)}(h**Parameters** ``struct drm_device *dev`` drm device pointer ``void *data`` drm_amdgpu_vm ``struct drm_file *filp`` drm file pointer **Return** 0 for success, -errno for errors.h](h)}(h**Parameters**h]j)}(hjn(h]h Parameters}(hjp(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjl(ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMQ hjh(ubj )}(hhh](j)}(h.``struct drm_device *dev`` drm device pointer h](j)}(h``struct drm_device *dev``h]j:)}(hj(h]hstruct drm_device *dev}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj(ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMO hj(ubj$)}(hhh]h)}(hdrm device pointerh]hdrm device pointer}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(hMO hj(ubah}(h]h ]h"]h$]h&]uh1j#hj(ubeh}(h]h ]h"]h$]h&]uh1j hj(hMO hj(ubj)}(h``void *data`` drm_amdgpu_vm h](j)}(h``void *data``h]j:)}(hj(h]h void *data}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj(ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMP hj(ubj$)}(hhh]h)}(h drm_amdgpu_vmh]h drm_amdgpu_vm}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(hMP hj(ubah}(h]h ]h"]h$]h&]uh1j#hj(ubeh}(h]h ]h"]h$]h&]uh1j hj(hMP hj(ubj)}(h+``struct drm_file *filp`` drm file pointer h](j)}(h``struct drm_file *filp``h]j:)}(hj(h]hstruct drm_file *filp}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj(ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMQ hj(ubj$)}(hhh]h)}(hdrm file pointerh]hdrm file pointer}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)hMQ hj)ubah}(h]h ]h"]h$]h&]uh1j#hj(ubeh}(h]h ]h"]h$]h&]uh1j hj)hMQ hj(ubeh}(h]h ]h"]h$]h&]uh1jhjh(ubh)}(h **Return**h]j)}(hj:)h]hReturn}(hj<)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8)ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMS hjh(ubh)}(h!0 for success, -errno for errors.h]h!0 for success, -errno for errors.}(hjP)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMS hjh(ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^$amdgpu_vm_lock_by_pasid (C function)c.amdgpu_vm_lock_by_pasidhNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(histruct amdgpu_vm * amdgpu_vm_lock_by_pasid (struct amdgpu_device *adev, u32 pasid, struct drm_exec *exec)h]jn)}(hgstruct amdgpu_vm *amdgpu_vm_lock_by_pasid(struct amdgpu_device *adev, u32 pasid, struct drm_exec *exec)h](j)}(hjh]hstruct}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj{)hhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMp ubj)}(h h]h }(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj{)hhhj)hMp ubh)}(hhh]j)}(h amdgpu_vmh]h amdgpu_vm}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj)modnameN classnameNjj)}j]j)}jamdgpu_vm_lock_by_pasidsbc.amdgpu_vm_lock_by_pasidasbuh1hhj{)hhhj)hMp ubj)}(h h]h }(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj{)hhhj)hMp ubj)}(hjh]h*}(hj)hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj{)hhhj)hMp ubj)}(hamdgpu_vm_lock_by_pasidh]j)}(hj)h]hamdgpu_vm_lock_by_pasid}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj{)hhhj)hMp ubj)}(h>(struct amdgpu_device *adev, u32 pasid, struct drm_exec *exec)h](j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubj)}(h h]h }(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj*modnameN classnameNjj)}j]j)c.amdgpu_vm_lock_by_pasidasbuh1hhj)ubj)}(h h]h }(hj5*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubj)}(hjh]h*}(hjC*hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj)ubj)}(hadevh]hadev}(hjP*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj)ubj)}(h u32 pasidh](h)}(hhh]j)}(hu32h]hu32}(hjl*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhji*ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjn*modnameN classnameNjj)}j]j)c.amdgpu_vm_lock_by_pasidasbuh1hhje*ubj)}(h h]h }(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhje*ubj)}(hpasidh]hpasid}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhje*ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj)ubj)}(hstruct drm_exec *exech](j)}(hjh]hstruct}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubj)}(h h]h }(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubh)}(hhh]j)}(hdrm_exech]hdrm_exec}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj*modnameN classnameNjj)}j]j)c.amdgpu_vm_lock_by_pasidasbuh1hhj*ubj)}(h h]h }(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubj)}(hjh]h*}(hj*hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj*ubj)}(hexech]hexec}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj)ubeh}(h]h ]h"]h$]h&]jjuh1jhj{)hhhj)hMp ubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjw)hhhj)hMp ubah}(h]jr)ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghj)hMp hjt)hhubj[)}(hhh]h)}(h*look up a VM by PASID and lock its root PDh]h*look up a VM by PASID and lock its root PD}(hj2+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMp hj/+hhubah}(h]h ]h"]h$]h&]uh1jZhjt)hhhj)hMp ubeh}(h]h ](j4functioneh"]h$]h&]jj4jjJ+jjJ+jjjuh1jbhhhjhNhNubj)}(hX**Parameters** ``struct amdgpu_device *adev`` amdgpu device pointer ``u32 pasid`` PASID of the VM ``struct drm_exec *exec`` drm_exec context to lock the root PD in **Description** Must be called from within a drm_exec_until_all_locked() loop; the caller runs drm_exec_retry_on_contention() afterwards. The drm_exec context holds a reference on the root BO until it is finalised. **Return** the VM on success, or NULL if the PASID has no VM, the VM is being torn down, or locking the root PD failed.h](h)}(h**Parameters**h]j)}(hjT+h]h Parameters}(hjV+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjR+ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMt hjN+ubj )}(hhh](j)}(h5``struct amdgpu_device *adev`` amdgpu device pointer h](j)}(h``struct amdgpu_device *adev``h]j:)}(hjs+h]hstruct amdgpu_device *adev}(hju+hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjq+ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMq hjm+ubj$)}(hhh]h)}(hamdgpu device pointerh]hamdgpu device pointer}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+hMq hj+ubah}(h]h ]h"]h$]h&]uh1j#hjm+ubeh}(h]h ]h"]h$]h&]uh1j hj+hMq hjj+ubj)}(h``u32 pasid`` PASID of the VM h](j)}(h ``u32 pasid``h]j:)}(hj+h]h u32 pasid}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj+ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMr hj+ubj$)}(hhh]h)}(hPASID of the VMh]hPASID of the VM}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+hMr hj+ubah}(h]h ]h"]h$]h&]uh1j#hj+ubeh}(h]h ]h"]h$]h&]uh1j hj+hMr hjj+ubj)}(hB``struct drm_exec *exec`` drm_exec context to lock the root PD in h](j)}(h``struct drm_exec *exec``h]j:)}(hj+h]hstruct drm_exec *exec}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj+ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMs hj+ubj$)}(hhh]h)}(h'drm_exec context to lock the root PD inh]h'drm_exec context to lock the root PD in}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+hMs hj+ubah}(h]h ]h"]h$]h&]uh1j#hj+ubeh}(h]h ]h"]h$]h&]uh1j hj+hMs hjj+ubeh}(h]h ]h"]h$]h&]uh1jhjN+ubh)}(h**Description**h]j)}(hj ,h]h Description}(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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMu hjN+ubh)}(hMust be called from within a drm_exec_until_all_locked() loop; the caller runs drm_exec_retry_on_contention() afterwards. The drm_exec context holds a reference on the root BO until it is finalised.h]hMust be called from within a drm_exec_until_all_locked() loop; the caller runs drm_exec_retry_on_contention() afterwards. The drm_exec context holds a reference on the root BO until it is finalised.}(hj6,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMt hjN+ubh)}(h **Return**h]j)}(hjG,h]hReturn}(hjI,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjE,ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMx hjN+ubh)}(hlthe VM on success, or NULL if the PASID has no VM, the VM is being torn down, or locking the root PD failed.h]hlthe VM on success, or NULL if the PASID has no VM, the VM is being torn down, or locking the root PD failed.}(hj],hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMy hjN+ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^#amdgpu_vm_handle_fault (C function)<c.amdgpu_vm_handle_faulthNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(hbool amdgpu_vm_handle_fault (struct amdgpu_device *adev, u32 pasid, u32 vmid, u32 node_id, uint64_t addr, uint64_t ts, bool write_fault)h]jn)}(hbool amdgpu_vm_handle_fault(struct amdgpu_device *adev, u32 pasid, u32 vmid, u32 node_id, uint64_t addr, uint64_t ts, bool write_fault)h](jt)}(hjwh]hbool}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj,hhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM ubj)}(h h]h }(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,hhhj,hM ubj)}(hamdgpu_vm_handle_faulth]j)}(hamdgpu_vm_handle_faulth]hamdgpu_vm_handle_fault}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj,hhhj,hM ubj)}(hl(struct amdgpu_device *adev, u32 pasid, u32 vmid, u32 node_id, uint64_t addr, uint64_t ts, bool write_fault)h](j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,ubj)}(h h]h }(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,ubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj,modnameN classnameNjj)}j]j)}jj,sbc.amdgpu_vm_handle_faultasbuh1hhj,ubj)}(h h]h }(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,ubj)}(hjh]h*}(hj-hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj,ubj)}(hadevh]hadev}(hj!-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj,ubj)}(h u32 pasidh](h)}(hhh]j)}(hu32h]hu32}(hj=-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:-ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj?-modnameN classnameNjj)}j]j-c.amdgpu_vm_handle_faultasbuh1hhj6-ubj)}(h h]h }(hj[-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6-ubj)}(hpasidh]hpasid}(hji-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6-ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj,ubj)}(hu32 vmidh](h)}(hhh]j)}(hu32h]hu32}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj-modnameN classnameNjj)}j]j-c.amdgpu_vm_handle_faultasbuh1hhj~-ubj)}(h h]h }(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~-ubj)}(hvmidh]hvmid}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~-ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj,ubj)}(h u32 node_idh](h)}(hhh]j)}(hu32h]hu32}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj-modnameN classnameNjj)}j]j-c.amdgpu_vm_handle_faultasbuh1hhj-ubj)}(h h]h }(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-ubj)}(hnode_idh]hnode_id}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj,ubj)}(h uint64_t addrh](h)}(hhh]j)}(huint64_th]huint64_t}(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj.modnameN classnameNjj)}j]j-c.amdgpu_vm_handle_faultasbuh1hhj.ubj)}(h h]h }(hj3.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.ubj)}(haddrh]haddr}(hjA.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj,ubj)}(h uint64_t tsh](h)}(hhh]j)}(huint64_th]huint64_t}(hj].hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZ.ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj_.modnameN classnameNjj)}j]j-c.amdgpu_vm_handle_faultasbuh1hhjV.ubj)}(h h]h }(hj{.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjV.ubj)}(htsh]hts}(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjV.ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj,ubj)}(hbool write_faulth](jt)}(hjwh]hbool}(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj.ubj)}(h h]h }(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.ubj)}(h write_faulth]h write_fault}(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj,ubeh}(h]h ]h"]h$]h&]jjuh1jhj,hhhj,hM ubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhj,hhhj,hM ubah}(h]j,ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghj,hM hj,hhubj[)}(hhh]h)}(hgraceful handling of VM faults.h]hgraceful handling of VM faults.}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hj.hhubah}(h]h ]h"]h$]h&]uh1jZhj,hhhj,hM ubeh}(h]h ](j4functioneh"]h$]h&]jj4jj.jj.jjjuh1jbhhhjhNhNubj)}(hX**Parameters** ``struct amdgpu_device *adev`` amdgpu device pointer ``u32 pasid`` PASID of the VM ``u32 vmid`` VMID, only used for GFX 9.4.3. ``u32 node_id`` Node_id received in IH cookie. Only applicable for GFX 9.4.3. ``uint64_t addr`` Address of the fault ``uint64_t ts`` Timestamp of the fault ``bool write_fault`` true is write fault, false is read fault **Description** Try to gracefully handle a VM fault. Return true if the fault was handled and shouldn't be reported any more.h](h)}(h**Parameters**h]j)}(hj /h]h Parameters}(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:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hj/ubj )}(hhh](j)}(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&]uh1j9hj&/ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hj"/ubj$)}(hhh]h)}(hamdgpu device pointerh]hamdgpu device pointer}(hjA/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=/hM hj>/ubah}(h]h ]h"]h$]h&]uh1j#hj"/ubeh}(h]h ]h"]h$]h&]uh1j hj=/hM hj/ubj)}(h``u32 pasid`` PASID of the VM h](j)}(h ``u32 pasid``h]j:)}(hja/h]h u32 pasid}(hjc/hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj_/ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hj[/ubj$)}(hhh]h)}(hPASID of the VMh]hPASID of the VM}(hjz/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjv/hM hjw/ubah}(h]h ]h"]h$]h&]uh1j#hj[/ubeh}(h]h ]h"]h$]h&]uh1j hjv/hM hj/ubj)}(h,``u32 vmid`` VMID, only used for GFX 9.4.3. h](j)}(h ``u32 vmid``h]j:)}(hj/h]hu32 vmid}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj/ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hj/ubj$)}(hhh]h)}(hVMID, only used for GFX 9.4.3.h]hVMID, only used for GFX 9.4.3.}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/hM hj/ubah}(h]h ]h"]h$]h&]uh1j#hj/ubeh}(h]h ]h"]h$]h&]uh1j hj/hM hj/ubj)}(hN``u32 node_id`` Node_id received in IH cookie. Only applicable for GFX 9.4.3. h](j)}(h``u32 node_id``h]j:)}(hj/h]h u32 node_id}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj/ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hj/ubj$)}(hhh]h)}(h=Node_id received in IH cookie. Only applicable for GFX 9.4.3.h]h=Node_id received in IH cookie. Only applicable for GFX 9.4.3.}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hj/ubah}(h]h ]h"]h$]h&]uh1j#hj/ubeh}(h]h ]h"]h$]h&]uh1j hj/hM hj/ubj)}(h'``uint64_t addr`` Address of the fault h](j)}(h``uint64_t addr``h]j:)}(hj 0h]h uint64_t addr}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj 0ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hj0ubj$)}(hhh]h)}(hAddress of the faulth]hAddress of the fault}(hj&0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj"0hM hj#0ubah}(h]h ]h"]h$]h&]uh1j#hj0ubeh}(h]h ]h"]h$]h&]uh1j hj"0hM hj/ubj)}(h'``uint64_t ts`` Timestamp of the fault h](j)}(h``uint64_t ts``h]j:)}(hjF0h]h uint64_t ts}(hjH0hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjD0ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hj@0ubj$)}(hhh]h)}(hTimestamp of the faulth]hTimestamp of the fault}(hj_0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj[0hM hj\0ubah}(h]h ]h"]h$]h&]uh1j#hj@0ubeh}(h]h ]h"]h$]h&]uh1j hj[0hM hj/ubj)}(h>``bool write_fault`` true is write fault, false is read fault h](j)}(h``bool write_fault``h]j:)}(hj0h]hbool write_fault}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj}0ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hjy0ubj$)}(hhh]h)}(h(true is write fault, false is read faulth]h(true is write fault, false is read fault}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj0hM hj0ubah}(h]h ]h"]h$]h&]uh1j#hjy0ubeh}(h]h ]h"]h$]h&]uh1j hj0hM hj/ubeh}(h]h ]h"]h$]h&]uh1jhj/ubh)}(h**Description**h]j)}(hj0h]h Description}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM 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.}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM hj/ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^&amdgpu_debugfs_vm_bo_info (C function)c.amdgpu_debugfs_vm_bo_infohNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(hIvoid amdgpu_debugfs_vm_bo_info (struct amdgpu_vm *vm, struct seq_file *m)h]jn)}(hHvoid amdgpu_debugfs_vm_bo_info(struct amdgpu_vm *vm, struct seq_file *m)h](jt)}(hvoidh]hvoid}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj0hhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM> ubj)}(h h]h }(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0hhhj 1hM> ubj)}(hamdgpu_debugfs_vm_bo_infoh]j)}(hamdgpu_debugfs_vm_bo_infoh]hamdgpu_debugfs_vm_bo_info}(hj 1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj0hhhj 1hM> ubj)}(h*(struct amdgpu_vm *vm, struct seq_file *m)h](j)}(hstruct amdgpu_vm *vmh](j)}(hjh]hstruct}(hj<1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj81ubj)}(h h]h }(hjI1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj81ubh)}(hhh]j)}(h amdgpu_vmh]h amdgpu_vm}(hjZ1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjW1ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj\1modnameN classnameNjj)}j]j)}jj"1sbc.amdgpu_debugfs_vm_bo_infoasbuh1hhj81ubj)}(h h]h }(hjz1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj81ubj)}(hjh]h*}(hj1hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj81ubj)}(hvmh]hvm}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj81ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj41ubj)}(hstruct seq_file *mh](j)}(hjh]hstruct}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubj)}(h h]h }(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubh)}(hhh]j)}(hseq_fileh]hseq_file}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj1modnameN classnameNjj)}j]jv1c.amdgpu_debugfs_vm_bo_infoasbuh1hhj1ubj)}(h h]h }(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubj)}(hjh]h*}(hj1hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj1ubj)}(hjah]hm}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj41ubeh}(h]h ]h"]h$]h&]jjuh1jhj0hhhj 1hM> ubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhj0hhhj 1hM> ubah}(h]j0ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghj 1hM> hj0hhubj[)}(hhh]h)}(hprint BO info for the VMh]hprint BO info for the VM}(hj.2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM> hj+2hhubah}(h]h ]h"]h$]h&]uh1jZhj0hhhj 1hM> ubeh}(h]h ](j4functioneh"]h$]h&]jj4jjF2jjF2jjjuh1jbhhhjhNhNubj)}(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]j)}(hjP2h]h Parameters}(hjR2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjN2ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMB hjJ2ubj )}(hhh](j)}(h;``struct amdgpu_vm *vm`` Requested VM for printing BO info h](j)}(h``struct amdgpu_vm *vm``h]j:)}(hjo2h]hstruct amdgpu_vm *vm}(hjq2hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjm2ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM@ hji2ubj$)}(hhh]h)}(h!Requested VM for printing BO infoh]h!Requested VM for printing BO info}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj2hM@ hj2ubah}(h]h ]h"]h$]h&]uh1j#hji2ubeh}(h]h ]h"]h$]h&]uh1j hj2hM@ hjf2ubj)}(h$``struct seq_file *m`` debugfs file h](j)}(h``struct seq_file *m``h]j:)}(hj2h]hstruct seq_file *m}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj2ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMA hj2ubj$)}(hhh]h)}(h debugfs fileh]h debugfs file}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj2hMA hj2ubah}(h]h ]h"]h$]h&]uh1j#hj2ubeh}(h]h ]h"]h$]h&]uh1j hj2hMA hjf2ubeh}(h]h ]h"]h$]h&]uh1jhjJ2ubh)}(h**Description**h]j)}(hj2h]h Description}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMC hjJ2ubh)}(h/Print BO information in debugfs file for the VMh]h/Print BO information in debugfs file for the VM}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMB hjJ2ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^)amdgpu_vm_update_fault_cache (C function)c.amdgpu_vm_update_fault_cachehNtauh1jQhjhhhNhNubjc)}(hhh](jh)}(hvoid amdgpu_vm_update_fault_cache (struct amdgpu_device *adev, unsigned int pasid, uint64_t addr, uint32_t status, unsigned int vmhub)h]jn)}(hvoid amdgpu_vm_update_fault_cache(struct amdgpu_device *adev, unsigned int pasid, uint64_t addr, uint32_t status, unsigned int vmhub)h](jt)}(hvoidh]hvoid}(hj(3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj$3hhhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMW ubj)}(h h]h }(hj73hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$3hhhj63hMW ubj)}(hamdgpu_vm_update_fault_cacheh]j)}(hamdgpu_vm_update_fault_cacheh]hamdgpu_vm_update_fault_cache}(hjI3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjE3ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj$3hhhj63hMW ubj)}(hd(struct amdgpu_device *adev, unsigned int pasid, uint64_t addr, uint32_t status, unsigned int vmhub)h](j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hje3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhja3ubj)}(h h]h }(hjr3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhja3ubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj3modnameN classnameNjj)}j]j)}jjK3sbc.amdgpu_vm_update_fault_cacheasbuh1hhja3ubj)}(h h]h }(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhja3ubj)}(hjh]h*}(hj3hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhja3ubj)}(hadevh]hadev}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhja3ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj]3ubj)}(hunsigned int pasidh](jt)}(hunsignedh]hunsigned}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj3ubj)}(h h]h }(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubjt)}(hinth]hint}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj3ubj)}(h h]h }(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubj)}(hpasidh]hpasid}(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj]3ubj)}(h uint64_t addrh](h)}(hhh]j)}(huint64_th]huint64_t}(hj+4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(4ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj-4modnameN classnameNjj)}j]j3c.amdgpu_vm_update_fault_cacheasbuh1hhj$4ubj)}(h h]h }(hjI4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$4ubj)}(haddrh]haddr}(hjW4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$4ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj]3ubj)}(huint32_t statush](h)}(hhh]j)}(huint32_th]huint32_t}(hjs4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjp4ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetju4modnameN classnameNjj)}j]j3c.amdgpu_vm_update_fault_cacheasbuh1hhjl4ubj)}(h h]h }(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjl4ubj)}(hstatush]hstatus}(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjl4ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj]3ubj)}(hunsigned int vmhubh](jt)}(hunsignedh]hunsigned}(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj4ubj)}(h h]h }(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj4ubjt)}(hinth]hint}(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj4ubj)}(h h]h }(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj4ubj)}(hvmhubh]hvmhub}(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj4ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj]3ubeh}(h]h ]h"]h$]h&]jjuh1jhj$3hhhj63hMW ubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhj 3hhhj63hMW ubah}(h]j3ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghj63hMW hj3hhubj[)}(hhh]h)}(hupdate cached fault into.h]hupdate cached fault into.}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMW hj5hhubah}(h]h ]h"]h$]h&]uh1jZhj3hhhj63hMW ubeh}(h]h ](j4functioneh"]h$]h&]jj4jj25jj25jjjuh1jbhhhjhNhNubj)}(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]j)}(hj<5h]h Parameters}(hj>5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:5ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM[ hj65ubj )}(hhh](j)}(h5``struct amdgpu_device *adev`` amdgpu device pointer h](j)}(h``struct amdgpu_device *adev``h]j:)}(hj[5h]hstruct amdgpu_device *adev}(hj]5hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjY5ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMX hjU5ubj$)}(hhh]h)}(hamdgpu device pointerh]hamdgpu device pointer}(hjt5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjp5hMX hjq5ubah}(h]h ]h"]h$]h&]uh1j#hjU5ubeh}(h]h ]h"]h$]h&]uh1j hjp5hMX hjR5ubj)}(h'``unsigned int pasid`` PASID of the VM h](j)}(h``unsigned int pasid``h]j:)}(hj5h]hunsigned int pasid}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj5ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMY hj5ubj$)}(hhh]h)}(hPASID of the VMh]hPASID of the VM}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5hMY hj5ubah}(h]h ]h"]h$]h&]uh1j#hj5ubeh}(h]h ]h"]h$]h&]uh1j hj5hMY hjR5ubj)}(h'``uint64_t addr`` Address of the fault h](j)}(h``uint64_t addr``h]j:)}(hj5h]h uint64_t addr}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj5ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chMZ hj5ubj$)}(hhh]h)}(hAddress of the faulth]hAddress of the fault}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5hMZ hj5ubah}(h]h ]h"]h$]h&]uh1j#hj5ubeh}(h]h ]h"]h$]h&]uh1j hj5hMZ hjR5ubj)}(h0``uint32_t status`` GPUVM fault status register h](j)}(h``uint32_t status``h]j:)}(hj6h]huint32_t status}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj6ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM[ hj6ubj$)}(hhh]h)}(hGPUVM fault status registerh]hGPUVM fault status register}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6hM[ hj6ubah}(h]h ]h"]h$]h&]uh1j#hj6ubeh}(h]h ]h"]h$]h&]uh1j hj6hM[ hjR5ubj)}(h1``unsigned int vmhub`` which vmhub got the fault h](j)}(h``unsigned int vmhub``h]j:)}(hj?6h]hunsigned int vmhub}(hjA6hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj=6ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM\ hj96ubj$)}(hhh]h)}(hwhich vmhub got the faulth]hwhich vmhub got the fault}(hjX6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjT6hM\ hjU6ubah}(h]h ]h"]h$]h&]uh1j#hj96ubeh}(h]h ]h"]h$]h&]uh1j hjT6hM\ hjR5ubeh}(h]h ]h"]h$]h&]uh1jhj65ubh)}(h**Description**h]j)}(hjz6h]h Description}(hj|6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjx6ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM^ hj65ubh)}(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.}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:225: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.chM] hj65ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubeh}(h]amdgpu-virtual-memoryah ]h"]amdgpu virtual memoryah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hInterrupt Handlingh]hInterrupt Handling}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6hhhhhKubh)}(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.}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:231: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhj6hhubh)}(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.}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:231: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chK$hj6hhubh)}(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).}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:231: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chK'hj6hhubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^#amdgpu_irq_disable_all (C function)c.amdgpu_irq_disable_allhNtauh1jQhj6hhhNhNubjc)}(hhh](jh)}(h8void amdgpu_irq_disable_all (struct amdgpu_device *adev)h]jn)}(h7void amdgpu_irq_disable_all(struct amdgpu_device *adev)h](jt)}(hvoidh]hvoid}(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj7hhho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKubj)}(h h]h }(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7hhhj7hKubj)}(hamdgpu_irq_disable_allh]j)}(hamdgpu_irq_disable_allh]hamdgpu_irq_disable_all}(hj&7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"7ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj7hhhj7hKubj)}(h(struct amdgpu_device *adev)h]j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hjB7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>7ubj)}(h h]h }(hjO7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>7ubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hj`7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]7ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjb7modnameN classnameNjj)}j]j)}jj(7sbc.amdgpu_irq_disable_allasbuh1hhj>7ubj)}(h h]h }(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>7ubj)}(hjh]h*}(hj7hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj>7ubj)}(hadevh]hadev}(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>7ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj:7ubah}(h]h ]h"]h$]h&]jjuh1jhj7hhhj7hKubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhj6hhhj7hKubah}(h]j6ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghj7hKhj6hhubj[)}(hhh]h)}(hdisable *all* interruptsh](hdisable }(hj7hhhNhNubhemphasis)}(h*all*h]hall}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj7ubh interrupts}(hj7hhhNhNubeh}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhj7hhubah}(h]h ]h"]h$]h&]uh1jZhj6hhhj7hKubeh}(h]h ](j4functioneh"]h$]h&]jj4jj7jj7jjjuh1jbhhhj6hNhNubj)}(h**Parameters** ``struct amdgpu_device *adev`` amdgpu device pointer **Description** Disable all types of interrupts from all sources.h](h)}(h**Parameters**h]j)}(hj7h]h Parameters}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7ubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhj7ubj )}(hhh]j)}(h5``struct amdgpu_device *adev`` amdgpu device pointer h](j)}(h``struct amdgpu_device *adev``h]j:)}(hj8h]hstruct amdgpu_device *adev}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj8ubah}(h]h ]h"]h$]h&]uh1jho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhj8ubj$)}(hhh]h)}(hamdgpu device pointerh]hamdgpu device pointer}(hj38hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/8hKhj08ubah}(h]h ]h"]h$]h&]uh1j#hj8ubeh}(h]h ]h"]h$]h&]uh1j hj/8hKhj8ubah}(h]h ]h"]h$]h&]uh1jhj7ubh)}(h**Description**h]j)}(hjU8h]h Description}(hjW8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjS8ubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhj7ubh)}(h1Disable all types of interrupts from all sources.h]h1Disable all types of interrupts from all sources.}(hjk8hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhj7ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj6hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^amdgpu_irq_handler (C function)c.amdgpu_irq_handlerhNtauh1jQhj6hhhNhNubjc)}(hhh](jh)}(h3irqreturn_t amdgpu_irq_handler (int irq, void *arg)h]jn)}(h2irqreturn_t amdgpu_irq_handler(int irq, void *arg)h](h)}(hhh]j)}(h irqreturn_th]h irqreturn_t}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj8modnameN classnameNjj)}j]j)}jamdgpu_irq_handlersbc.amdgpu_irq_handlerasbuh1hhj8hhho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKubj)}(h h]h }(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8hhhj8hKubj)}(hamdgpu_irq_handlerh]j)}(hj8h]hamdgpu_irq_handler}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj8hhhj8hKubj)}(h(int irq, void *arg)h](j)}(hint irqh](jt)}(hinth]hint}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj8ubj)}(h h]h }(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8ubj)}(hirqh]hirq}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj8ubj)}(h void *argh](jt)}(hvoidh]hvoid}(hj!9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj9ubj)}(h h]h }(hj/9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9ubj)}(hjh]h*}(hj=9hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj9ubj)}(hargh]harg}(hjJ9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj8ubeh}(h]h ]h"]h$]h&]jjuh1jhj8hhhj8hKubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhj8hhhj8hKubah}(h]j8ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghj8hKhj8hhubj[)}(hhh]h)}(h IRQ handlerh]h IRQ handler}(hjt9hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhjq9hhubah}(h]h ]h"]h$]h&]uh1jZhj8hhhj8hKubeh}(h]h ](j4functioneh"]h$]h&]jj4jj9jj9jjjuh1jbhhhj6hNhNubj)}(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]j)}(hj9h]h Parameters}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhj9ubj )}(hhh](j)}(h ``int irq`` IRQ number (unused) h](j)}(h ``int irq``h]j:)}(hj9h]hint irq}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj9ubah}(h]h ]h"]h$]h&]uh1jho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhj9ubj$)}(hhh]h)}(hIRQ number (unused)h]hIRQ number (unused)}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9hKhj9ubah}(h]h ]h"]h$]h&]uh1j#hj9ubeh}(h]h ]h"]h$]h&]uh1j hj9hKhj9ubj)}(h$``void *arg`` pointer to DRM device h](j)}(h ``void *arg``h]j:)}(hj9h]h void *arg}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj9ubah}(h]h ]h"]h$]h&]uh1jho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhj9ubj$)}(hhh]h)}(hpointer to DRM deviceh]hpointer to DRM device}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:hKhj:ubah}(h]h ]h"]h$]h&]uh1j#hj9ubeh}(h]h ]h"]h$]h&]uh1j hj:hKhj9ubeh}(h]h ]h"]h$]h&]uh1jhj9ubh)}(h**Description**h]j)}(hj):h]h Description}(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:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhj9ubh)}(h*IRQ handler for amdgpu driver (all ASICs).h]h*IRQ handler for amdgpu driver (all ASICs).}(hj?:hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhj9ubh)}(h **Return**h]j)}(hjP:h]hReturn}(hjR:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjN:ubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhj9ubh)}(h?result of handling the IRQ, as defined by :c:type:`irqreturn_t`h](h*result of handling the IRQ, as defined by }(hjf:hhhNhNubh)}(h:c:type:`irqreturn_t`h]j:)}(hjp:h]h irqreturn_t}(hjr:hhhNhNubah}(h]h ](jj4c-typeeh"]h$]h&]uh1j9hjn:ubah}(h]h ]h"]h$]h&]refdocj  refdomainj4reftypetype refexplicitrefwarnjjCj irqreturn_tuh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhjf:ubeh}(h]h ]h"]h$]h&]uh1hhj:hKhj9ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj6hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^"amdgpu_irq_handle_ih1 (C function)c.amdgpu_irq_handle_ih1hNtauh1jQhj6hhhNhNubjc)}(hhh](jh)}(h5void amdgpu_irq_handle_ih1 (struct work_struct *work)h]jn)}(h4void amdgpu_irq_handle_ih1(struct work_struct *work)h](jt)}(hvoidh]hvoid}(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj:hhho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKubj)}(h h]h }(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:hhhj:hKubj)}(hamdgpu_irq_handle_ih1h]j)}(hamdgpu_irq_handle_ih1h]hamdgpu_irq_handle_ih1}(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj:hhhj:hKubj)}(h(struct work_struct *work)h]j)}(hstruct work_struct *workh](j)}(hjh]hstruct}(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubj)}(h h]h }(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubh)}(hhh]j)}(h work_structh]h work_struct}(hj;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ;ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj;modnameN classnameNjj)}j]j)}jj:sbc.amdgpu_irq_handle_ih1asbuh1hhj:ubj)}(h h]h }(hj/;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubj)}(hjh]h*}(hj=;hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj:ubj)}(hworkh]hwork}(hjJ;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj:ubah}(h]h ]h"]h$]h&]jjuh1jhj:hhhj:hKubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhj:hhhj:hKubah}(h]j:ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghj:hKhj:hhubj[)}(hhh]h)}(hkick of processing for IH1h]hkick of processing for IH1}(hjt;hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhjq;hhubah}(h]h ]h"]h$]h&]uh1jZhj:hhhj:hKubeh}(h]h ](j4functioneh"]h$]h&]jj4jj;jj;jjjuh1jbhhhj6hNhNubj)}(h**Parameters** ``struct work_struct *work`` work structure in struct amdgpu_irq **Description** Kick of processing IH ring 1.h](h)}(h**Parameters**h]j)}(hj;h]h Parameters}(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:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhj;ubj )}(hhh]j)}(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&]uh1j9hj;ubah}(h]h ]h"]h$]h&]uh1jho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./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}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj;hKhj;ubah}(h]h ]h"]h$]h&]uh1j#hj;ubeh}(h]h ]h"]h$]h&]uh1j hj;hKhj;ubah}(h]h ]h"]h$]h&]uh1jhj;ubh)}(h**Description**h]j)}(hj;h]h Description}(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:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhj;ubh)}(hKick of processing IH ring 1.h]hKick of processing IH ring 1.}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhj;ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj6hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^"amdgpu_irq_handle_ih2 (C function)c.amdgpu_irq_handle_ih2hNtauh1jQhj6hhhNhNubjc)}(hhh](jh)}(h5void amdgpu_irq_handle_ih2 (struct work_struct *work)h]jn)}(h4void amdgpu_irq_handle_ih2(struct work_struct *work)h](jt)}(hvoidh]hvoid}(hj5<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj1<hhho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKubj)}(h h]h }(hjD<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1<hhhjC<hKubj)}(hamdgpu_irq_handle_ih2h]j)}(hamdgpu_irq_handle_ih2h]hamdgpu_irq_handle_ih2}(hjV<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjR<ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj1<hhhjC<hKubj)}(h(struct work_struct *work)h]j)}(hstruct work_struct *workh](j)}(hjh]hstruct}(hjr<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjn<ubj)}(h h]h }(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjn<ubh)}(hhh]j)}(h work_structh]h work_struct}(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj<modnameN classnameNjj)}j]j)}jjX<sbc.amdgpu_irq_handle_ih2asbuh1hhjn<ubj)}(h h]h }(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjn<ubj)}(hjh]h*}(hj<hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjn<ubj)}(hworkh]hwork}(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjn<ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjj<ubah}(h]h ]h"]h$]h&]jjuh1jhj1<hhhjC<hKubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhj-<hhhjC<hKubah}(h]j(<ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjC<hKhj*<hhubj[)}(hhh]h)}(hkick of processing for IH2h]hkick of processing for IH2}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhj<hhubah}(h]h ]h"]h$]h&]uh1jZhj*<hhhjC<hKubeh}(h]h ](j4functioneh"]h$]h&]jj4jj =jj =jjjuh1jbhhhj6hNhNubj)}(h**Parameters** ``struct work_struct *work`` work structure in struct amdgpu_irq **Description** Kick of processing IH ring 2.h](h)}(h**Parameters**h]j)}(hj=h]h Parameters}(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:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhj=ubj )}(hhh]j)}(hA``struct work_struct *work`` work structure in struct amdgpu_irq h](j)}(h``struct work_struct *work``h]j:)}(hj6=h]hstruct work_struct *work}(hj8=hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj4=ubah}(h]h ]h"]h$]h&]uh1jho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhj0=ubj$)}(hhh]h)}(h#work structure in struct amdgpu_irqh]h#work structure in struct amdgpu_irq}(hjO=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjK=hKhjL=ubah}(h]h ]h"]h$]h&]uh1j#hj0=ubeh}(h]h ]h"]h$]h&]uh1j hjK=hKhj-=ubah}(h]h ]h"]h$]h&]uh1jhj=ubh)}(h**Description**h]j)}(hjq=h]h Description}(hjs=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjo=ubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhj=ubh)}(hKick of processing IH ring 2.h]hKick of processing IH ring 2.}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhj=ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj6hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^&amdgpu_irq_handle_ih_soft (C function)c.amdgpu_irq_handle_ih_softhNtauh1jQhj6hhhNhNubjc)}(hhh](jh)}(h9void amdgpu_irq_handle_ih_soft (struct work_struct *work)h]jn)}(h8void amdgpu_irq_handle_ih_soft(struct work_struct *work)h](jt)}(hvoidh]hvoid}(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj=hhho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKubj)}(h h]h }(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=hhhj=hKubj)}(hamdgpu_irq_handle_ih_softh]j)}(hamdgpu_irq_handle_ih_softh]hamdgpu_irq_handle_ih_soft}(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj=hhhj=hKubj)}(h(struct work_struct *work)h]j)}(hstruct work_struct *workh](j)}(hjh]hstruct}(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=ubj)}(h h]h }(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=ubh)}(hhh]j)}(h work_structh]h work_struct}(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj>modnameN classnameNjj)}j]j)}jj=sbc.amdgpu_irq_handle_ih_softasbuh1hhj=ubj)}(h h]h }(hj1>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=ubj)}(hjh]h*}(hj?>hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj=ubj)}(hworkh]hwork}(hjL>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj=ubah}(h]h ]h"]h$]h&]jjuh1jhj=hhhj=hKubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhj=hhhj=hKubah}(h]j=ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghj=hKhj=hhubj[)}(hhh]h)}(hkick of processing for ih_softh]hkick of processing for ih_soft}(hjv>hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhjs>hhubah}(h]h ]h"]h$]h&]uh1jZhj=hhhj=hKubeh}(h]h ](j4functioneh"]h$]h&]jj4jj>jj>jjjuh1jbhhhj6hNhNubj)}(h**Parameters** ``struct work_struct *work`` work structure in struct amdgpu_irq **Description** Kick of processing IH soft ring.h](h)}(h**Parameters**h]j)}(hj>h]h Parameters}(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:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhj>ubj )}(hhh]j)}(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&]uh1j9hj>ubah}(h]h ]h"]h$]h&]uh1jho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./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}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>hKhj>ubah}(h]h ]h"]h$]h&]uh1j#hj>ubeh}(h]h ]h"]h$]h&]uh1j hj>hKhj>ubah}(h]h ]h"]h$]h&]uh1jhj>ubh)}(h**Description**h]j)}(hj>h]h Description}(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:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhj>ubh)}(h Kick of processing IH soft ring.h]h Kick of processing IH soft ring.}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chKhj>ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj6hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^amdgpu_msi_ok (C function)c.amdgpu_msi_okhNtauh1jQhj6hhhNhNubjc)}(hhh](jh)}(h/bool amdgpu_msi_ok (struct amdgpu_device *adev)h]jn)}(h.bool amdgpu_msi_ok(struct amdgpu_device *adev)h](jt)}(hjwh]hbool}(hj7?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj3?hhho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMubj)}(h h]h }(hjE?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3?hhhjD?hMubj)}(h amdgpu_msi_okh]j)}(h amdgpu_msi_okh]h amdgpu_msi_ok}(hjW?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjS?ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj3?hhhjD?hMubj)}(h(struct amdgpu_device *adev)h]j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hjs?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjo?ubj)}(h h]h }(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjo?ubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj?modnameN classnameNjj)}j]j)}jjY?sbc.amdgpu_msi_okasbuh1hhjo?ubj)}(h h]h }(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjo?ubj)}(hjh]h*}(hj?hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjo?ubj)}(hadevh]hadev}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjo?ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjk?ubah}(h]h ]h"]h$]h&]jjuh1jhj3?hhhjD?hMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhj/?hhhjD?hMubah}(h]j*?ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjD?hMhj,?hhubj[)}(hhh]h)}(h*check whether MSI functionality is enabledh]h*check whether MSI functionality is enabled}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhj?hhubah}(h]h ]h"]h$]h&]uh1jZhj,?hhhjD?hMubeh}(h]h ](j4functioneh"]h$]h&]jj4jj@jj@jjjuh1jbhhhj6hNhNubj)}(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]j)}(hj@h]h Parameters}(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:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chM hj@ubj )}(hhh]j)}(h>``struct amdgpu_device *adev`` amdgpu device pointer (unused) h](j)}(h``struct amdgpu_device *adev``h]j:)}(hj7@h]hstruct amdgpu_device *adev}(hj9@hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj5@ubah}(h]h ]h"]h$]h&]uh1jho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhj1@ubj$)}(hhh]h)}(hamdgpu device pointer (unused)h]hamdgpu device pointer (unused)}(hjP@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjL@hMhjM@ubah}(h]h ]h"]h$]h&]uh1j#hj1@ubeh}(h]h ]h"]h$]h&]uh1j hjL@hMhj.@ubah}(h]h ]h"]h$]h&]uh1jhj@ubh)}(h**Description**h]j)}(hjr@h]h Description}(hjt@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjp@ubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chM hj@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:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhj@ubh)}(h **Return**h]j)}(hj@h]hReturn}(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:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chM hj@ubh)}(h=*true* if MSIs are allowed to be enabled or *false* otherwiseh](j7)}(h*true*h]htrue}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj@ubh& if MSIs are allowed to be enabled or }(hj@hhhNhNubj7)}(h*false*h]hfalse}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1j7hj@ubh otherwise}(hj@hhhNhNubeh}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chM hj@ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj6hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^amdgpu_irq_init (C function)c.amdgpu_irq_inithNtauh1jQhj6hhhNhNubjc)}(hhh](jh)}(h0int amdgpu_irq_init (struct amdgpu_device *adev)h]jn)}(h/int amdgpu_irq_init(struct amdgpu_device *adev)h](jt)}(hinth]hint}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj@hhho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chM)ubj)}(h h]h }(hj AhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@hhhj AhM)ubj)}(hamdgpu_irq_inith]j)}(hamdgpu_irq_inith]hamdgpu_irq_init}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubah}(h]h ](jjeh"]h$]h&]jjuh1jhj@hhhj AhM)ubj)}(h(struct amdgpu_device *adev)h]j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hj;AhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7Aubj)}(h h]h }(hjHAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7Aubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hjYAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVAubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj[AmodnameN classnameNjj)}j]j)}jj!Asbc.amdgpu_irq_initasbuh1hhj7Aubj)}(h h]h }(hjyAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7Aubj)}(hjh]h*}(hjAhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj7Aubj)}(hadevh]hadev}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7Aubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj3Aubah}(h]h ]h"]h$]h&]jjuh1jhj@hhhj AhM)ubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhj@hhhj AhM)ubah}(h]j@ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghj AhM)hj@hhubj[)}(hhh]h)}(hinitialize interrupt handlingh]hinitialize interrupt handling}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chM)hjAhhubah}(h]h ]h"]h$]h&]uh1jZhj@hhhj AhM)ubeh}(h]h ](j4functioneh"]h$]h&]jj4jjAjjAjjjuh1jbhhhj6hNhNubj)}(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]j)}(hjAh]h Parameters}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chM-hjAubj )}(hhh]j)}(h5``struct amdgpu_device *adev`` amdgpu device pointer h](j)}(h``struct amdgpu_device *adev``h]j:)}(hjAh]hstruct amdgpu_device *adev}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjAubah}(h]h ]h"]h$]h&]uh1jho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chM+hjAubj$)}(hhh]h)}(hamdgpu device pointerh]hamdgpu device pointer}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBhM+hjBubah}(h]h ]h"]h$]h&]uh1j#hjAubeh}(h]h ]h"]h$]h&]uh1j hjBhM+hjAubah}(h]h ]h"]h$]h&]uh1jhjAubh)}(h**Description**h]j)}(hj:Bh]h Description}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj:Uubah}(h]h ]h"]h$]h&]uh1jho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhj6Uubj$)}(hhh]h)}(hamdgpu device pointerh]hamdgpu device pointer}(hjUUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQUhMhjRUubah}(h]h ]h"]h$]h&]uh1j#hj6Uubeh}(h]h ]h"]h$]h&]uh1j hjQUhMhj3Uubj)}(h8``struct amdgpu_irq_src *src`` interrupt source pointer h](j)}(h``struct amdgpu_irq_src *src``h]j:)}(hjuUh]hstruct amdgpu_irq_src *src}(hjwUhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjsUubah}(h]h ]h"]h$]h&]uh1jho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhjoUubj$)}(hhh]h)}(hinterrupt source pointerh]hinterrupt source pointer}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjUhMhjUubah}(h]h ]h"]h$]h&]uh1j#hjoUubeh}(h]h ]h"]h$]h&]uh1j hjUhMhj3Uubj)}(h(``unsigned int type`` type of interrupt h](j)}(h``unsigned int type``h]j:)}(hjUh]hunsigned int type}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjUubah}(h]h ]h"]h$]h&]uh1jho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhjUubj$)}(hhh]h)}(htype of interrupth]htype of interrupt}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjUhMhjUubah}(h]h ]h"]h$]h&]uh1j#hjUubeh}(h]h ]h"]h$]h&]uh1j hjUhMhj3Uubeh}(h]h ]h"]h$]h&]uh1jhjUubh)}(h**Description**h]j)}(hjUh]h Description}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhjUubh)}(hHEnables specified type of interrupt on the specified source (all ASICs).h]hHEnables specified type of interrupt on the specified source (all ASICs).}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhjUubh)}(h **Return**h]j)}(hjVh]hReturn}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhjUubh)}(h$0 on success or error code otherwiseh]h$0 on success or error code otherwise}(hj&VhhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhjUubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj6hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^amdgpu_irq_enabled (C function)c.amdgpu_irq_enabledhNtauh1jQhj6hhhNhNubjc)}(hhh](jh)}(hcbool amdgpu_irq_enabled (struct amdgpu_device *adev, struct amdgpu_irq_src *src, unsigned int type)h]jn)}(hbbool amdgpu_irq_enabled(struct amdgpu_device *adev, struct amdgpu_irq_src *src, unsigned int type)h](jt)}(hjwh]hbool}(hjUVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjQVhhho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMubj)}(h h]h }(hjcVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQVhhhjbVhMubj)}(hamdgpu_irq_enabledh]j)}(hamdgpu_irq_enabledh]hamdgpu_irq_enabled}(hjuVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjqVubah}(h]h ](jjeh"]h$]h&]jjuh1jhjQVhhhjbVhMubj)}(hK(struct amdgpu_device *adev, struct amdgpu_irq_src *src, unsigned int type)h](j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVubj)}(h h]h }(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjVmodnameN classnameNjj)}j]j)}jjwVsbc.amdgpu_irq_enabledasbuh1hhjVubj)}(h h]h }(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVubj)}(hjh]h*}(hjVhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjVubj)}(hadevh]hadev}(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjVubj)}(hstruct amdgpu_irq_src *srch](j)}(hjh]hstruct}(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVubj)}(h h]h }(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVubh)}(hhh]j)}(hamdgpu_irq_srch]hamdgpu_irq_src}(hj!WhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj#WmodnameN classnameNjj)}j]jVc.amdgpu_irq_enabledasbuh1hhjVubj)}(h h]h }(hj?WhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVubj)}(hjh]h*}(hjMWhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjVubj)}(hsrch]hsrc}(hjZWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjVubj)}(hunsigned int typeh](jt)}(hunsignedh]hunsigned}(hjsWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjoWubj)}(h h]h }(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjoWubjt)}(hinth]hint}(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjoWubj)}(h h]h }(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjoWubj)}(htypeh]htype}(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjoWubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjVubeh}(h]h ]h"]h$]h&]jjuh1jhjQVhhhjbVhMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjMVhhhjbVhMubah}(h]jHVah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjbVhMhjJVhhubj[)}(hhh]h)}(h)check whether interrupt is enabled or noth]h)check whether interrupt is enabled or not}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhjWhhubah}(h]h ]h"]h$]h&]uh1jZhjJVhhhjbVhMubeh}(h]h ](j4functioneh"]h$]h&]jj4jjWjjWjjjuh1jbhhhj6hNhNubj)}(hXp**Parameters** ``struct amdgpu_device *adev`` amdgpu device pointer ``struct amdgpu_irq_src *src`` interrupt source pointer ``unsigned int type`` type of interrupt **Description** Checks whether the given type of interrupt is enabled on the given source. **Return** *true* if interrupt is enabled, *false* if interrupt is disabled or on invalid parametersh](h)}(h**Parameters**h]j)}(hjWh]h Parameters}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhjWubj )}(hhh](j)}(h5``struct amdgpu_device *adev`` amdgpu device pointer h](j)}(h``struct amdgpu_device *adev``h]j:)}(hjXh]hstruct amdgpu_device *adev}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjXubah}(h]h ]h"]h$]h&]uh1jho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhjXubj$)}(hhh]h)}(hamdgpu device pointerh]hamdgpu device pointer}(hj/XhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+XhMhj,Xubah}(h]h ]h"]h$]h&]uh1j#hjXubeh}(h]h ]h"]h$]h&]uh1j hj+XhMhj Xubj)}(h8``struct amdgpu_irq_src *src`` interrupt source pointer h](j)}(h``struct amdgpu_irq_src *src``h]j:)}(hjOXh]hstruct amdgpu_irq_src *src}(hjQXhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjMXubah}(h]h ]h"]h$]h&]uh1jho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhjIXubj$)}(hhh]h)}(hinterrupt source pointerh]hinterrupt source pointer}(hjhXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdXhMhjeXubah}(h]h ]h"]h$]h&]uh1j#hjIXubeh}(h]h ]h"]h$]h&]uh1j hjdXhMhj Xubj)}(h(``unsigned int type`` type of interrupt h](j)}(h``unsigned int type``h]j:)}(hjXh]hunsigned int type}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjXubah}(h]h ]h"]h$]h&]uh1jho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhjXubj$)}(hhh]h)}(htype of interrupth]htype of interrupt}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjXhMhjXubah}(h]h ]h"]h$]h&]uh1j#hjXubeh}(h]h ]h"]h$]h&]uh1j hjXhMhj Xubeh}(h]h ]h"]h$]h&]uh1jhjWubh)}(h**Description**h]j)}(hjXh]h Description}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.cThMhjWubh)}(hJChecks whether the given type of interrupt is enabled on the given source.h]hJChecks whether the given type of interrupt is enabled on the given source.}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhjWubh)}(h **Return**h]j)}(hjXh]hReturn}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhjWubh)}(hY*true* if interrupt is enabled, *false* if interrupt is disabled or on invalid parametersh](j7)}(h*true*h]htrue}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjYubh if interrupt is enabled, }(hjYhhhNhNubj7)}(h*false*h]hfalse}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjYubh2 if interrupt is disabled or on invalid parameters}(hjYhhhNhNubeh}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhjWubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj6hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^!amdgpu_irqdomain_map (C function)c.amdgpu_irqdomain_maphNtauh1jQhj6hhhNhNubjc)}(hhh](jh)}(hXint amdgpu_irqdomain_map (struct irq_domain *d, unsigned int irq, irq_hw_number_t hwirq)h]jn)}(hWint amdgpu_irqdomain_map(struct irq_domain *d, unsigned int irq, irq_hw_number_t hwirq)h](jt)}(hinth]hint}(hjOYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjKYhhho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMubj)}(h h]h }(hj^YhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjKYhhhj]YhMubj)}(hamdgpu_irqdomain_maph]j)}(hamdgpu_irqdomain_maph]hamdgpu_irqdomain_map}(hjpYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjlYubah}(h]h ](jjeh"]h$]h&]jjuh1jhjKYhhhj]YhMubj)}(h?(struct irq_domain *d, unsigned int irq, irq_hw_number_t hwirq)h](j)}(hstruct irq_domain *dh](j)}(hjh]hstruct}(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubj)}(h h]h }(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubh)}(hhh]j)}(h irq_domainh]h irq_domain}(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjYmodnameN classnameNjj)}j]j)}jjrYsbc.amdgpu_irqdomain_mapasbuh1hhjYubj)}(h h]h }(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubj)}(hjh]h*}(hjYhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjYubj)}(hdh]hd}(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjYubj)}(hunsigned int irqh](jt)}(hunsignedh]hunsigned}(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjYubj)}(h h]h }(hj ZhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubjt)}(hinth]hint}(hjZhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjYubj)}(h h]h }(hj(ZhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubj)}(hirqh]hirq}(hj6ZhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjYubj)}(hirq_hw_number_t hwirqh](h)}(hhh]j)}(hirq_hw_number_th]hirq_hw_number_t}(hjRZhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjOZubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetjTZmodnameN classnameNjj)}j]jYc.amdgpu_irqdomain_mapasbuh1hhjKZubj)}(h h]h }(hjpZhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjKZubj)}(hhwirqh]hhwirq}(hj~ZhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjKZubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjYubeh}(h]h ]h"]h$]h&]jjuh1jhjKYhhhj]YhMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjGYhhhj]YhMubah}(h]jBYah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghj]YhMhjDYhhubj[)}(hhh]h)}(h7create mapping between virtual and hardware IRQ numbersh]h7create mapping between virtual and hardware IRQ numbers}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhjZhhubah}(h]h ]h"]h$]h&]uh1jZhjDYhhhj]YhMubeh}(h]h ](j4functioneh"]h$]h&]jj4jjZjjZjjjuh1jbhhhj6hNhNubj)}(hX?**Parameters** ``struct irq_domain *d`` amdgpu IRQ domain pointer (unused) ``unsigned int irq`` virtual IRQ number ``irq_hw_number_t hwirq`` hardware irq number **Description** Current implementation assigns simple interrupt handler to the given virtual IRQ. **Return** 0 on success or error code otherwiseh](h)}(h**Parameters**h]j)}(hjZh]h Parameters}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhjZubj )}(hhh](j)}(h<``struct irq_domain *d`` amdgpu IRQ domain pointer (unused) h](j)}(h``struct irq_domain *d``h]j:)}(hjZh]hstruct irq_domain *d}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjZubah}(h]h ]h"]h$]h&]uh1jho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhjZubj$)}(hhh]h)}(h"amdgpu IRQ domain pointer (unused)h]h"amdgpu IRQ domain pointer (unused)}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZhMhjZubah}(h]h ]h"]h$]h&]uh1j#hjZubeh}(h]h ]h"]h$]h&]uh1j hjZhMhjZubj)}(h(``unsigned int irq`` virtual IRQ number h](j)}(h``unsigned int irq``h]j:)}(hj"[h]hunsigned int irq}(hj$[hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj [ubah}(h]h ]h"]h$]h&]uh1jho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhj[ubj$)}(hhh]h)}(hvirtual IRQ numberh]hvirtual IRQ number}(hj;[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj7[hMhj8[ubah}(h]h ]h"]h$]h&]uh1j#hj[ubeh}(h]h ]h"]h$]h&]uh1j hj7[hMhjZubj)}(h.``irq_hw_number_t hwirq`` hardware irq number h](j)}(h``irq_hw_number_t hwirq``h]j:)}(hj[[h]hirq_hw_number_t hwirq}(hj][hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjY[ubah}(h]h ]h"]h$]h&]uh1jho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhjU[ubj$)}(hhh]h)}(hhardware irq numberh]hhardware irq number}(hjt[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjp[hMhjq[ubah}(h]h ]h"]h$]h&]uh1j#hjU[ubeh}(h]h ]h"]h$]h&]uh1j hjp[hMhjZubeh}(h]h ]h"]h$]h&]uh1jhjZubh)}(h**Description**h]j)}(hj[h]h Description}(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:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhjZubh)}(hQCurrent implementation assigns simple interrupt handler to the given virtual IRQ.h]hQCurrent implementation assigns simple interrupt handler to the given virtual IRQ.}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhjZubh)}(h **Return**h]j)}(hj[h]hReturn}(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:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhjZubh)}(h$0 on success or error code otherwiseh]h$0 on success or error code otherwise}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhjZubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj6hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^"amdgpu_irq_add_domain (C function)c.amdgpu_irq_add_domainhNtauh1jQhj6hhhNhNubjc)}(hhh](jh)}(h6int amdgpu_irq_add_domain (struct amdgpu_device *adev)h]jn)}(h5int amdgpu_irq_add_domain(struct amdgpu_device *adev)h](jt)}(hinth]hint}(hj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj[hhho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMubj)}(h h]h }(hj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[hhhj\hMubj)}(hamdgpu_irq_add_domainh]j)}(hamdgpu_irq_add_domainh]hamdgpu_irq_add_domain}(hj#\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj[hhhj\hMubj)}(h(struct amdgpu_device *adev)h]j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hj?\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;\ubj)}(h h]h }(hjL\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;\ubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hj]\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZ\ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj_\modnameN classnameNjj)}j]j)}jj%\sbc.amdgpu_irq_add_domainasbuh1hhj;\ubj)}(h h]h }(hj}\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;\ubj)}(hjh]h*}(hj\hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj;\ubj)}(hadevh]hadev}(hj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;\ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj7\ubah}(h]h ]h"]h$]h&]jjuh1jhj[hhhj\hMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhj[hhhj\hMubah}(h]j[ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghj\hMhj[hhubj[)}(hhh]h)}(hcreate a linear IRQ domainh]hcreate a linear IRQ domain}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhj\hhubah}(h]h ]h"]h$]h&]uh1jZhj[hhhj\hMubeh}(h]h ](j4functioneh"]h$]h&]jj4jj\jj\jjjuh1jbhhhj6hNhNubj)}(h**Parameters** ``struct amdgpu_device *adev`` amdgpu device pointer **Description** Creates an IRQ domain for GPU interrupt sources that may be driven by another driver (e.g., ACP). **Return** 0 on success or error code otherwiseh](h)}(h**Parameters**h]j)}(hj\h]h Parameters}(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:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhj\ubj )}(hhh]j)}(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&]uh1j9hj]ubah}(h]h ]h"]h$]h&]uh1jho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhj\ubj$)}(hhh]h)}(hamdgpu device pointerh]hamdgpu device pointer}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj]hMhj]ubah}(h]h ]h"]h$]h&]uh1j#hj\ubeh}(h]h ]h"]h$]h&]uh1j hj]hMhj\ubah}(h]h ]h"]h$]h&]uh1jhj\ubh)}(h**Description**h]j)}(hj>]h]h Description}(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:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhj\ubh)}(haCreates an IRQ domain for GPU interrupt sources that may be driven by another driver (e.g., ACP).h]haCreates an IRQ domain for GPU interrupt sources that may be driven by another driver (e.g., ACP).}(hjT]hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhj\ubh)}(h **Return**h]j)}(hje]h]hReturn}(hjg]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjc]ubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhj\ubh)}(h$0 on success or error code otherwiseh]h$0 on success or error code otherwise}(hj{]hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhj\ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj6hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^%amdgpu_irq_remove_domain (C function)c.amdgpu_irq_remove_domainhNtauh1jQhj6hhhNhNubjc)}(hhh](jh)}(h:void amdgpu_irq_remove_domain (struct amdgpu_device *adev)h]jn)}(h9void amdgpu_irq_remove_domain(struct amdgpu_device *adev)h](jt)}(hvoidh]hvoid}(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj]hhho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chM ubj)}(h h]h }(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]hhhj]hM ubj)}(hamdgpu_irq_remove_domainh]j)}(hamdgpu_irq_remove_domainh]hamdgpu_irq_remove_domain}(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj]hhhj]hM ubj)}(h(struct amdgpu_device *adev)h]j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubj)}(h h]h }(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hj^hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj^ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj^modnameN classnameNjj)}j]j)}jj]sbc.amdgpu_irq_remove_domainasbuh1hhj]ubj)}(h h]h }(hj%^hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubj)}(hjh]h*}(hj3^hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj]ubj)}(hadevh]hadev}(hj@^hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj]ubah}(h]h ]h"]h$]h&]jjuh1jhj]hhhj]hM ubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhj]hhhj]hM ubah}(h]j]ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghj]hM hj]hhubj[)}(hhh]h)}(hremove the IRQ domainh]hremove the IRQ domain}(hjj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chM hjg^hhubah}(h]h ]h"]h$]h&]uh1jZhj]hhhj]hM ubeh}(h]h ](j4functioneh"]h$]h&]jj4jj^jj^jjjuh1jbhhhj6hNhNubj)}(h**Parameters** ``struct amdgpu_device *adev`` amdgpu device pointer **Description** Removes the IRQ domain for GPU interrupt sources that may be driven by another driver (e.g., ACP).h](h)}(h**Parameters**h]j)}(hj^h]h Parameters}(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:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhj^ubj )}(hhh]j)}(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&]uh1j9hj^ubah}(h]h ]h"]h$]h&]uh1jho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./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&]uh1j#hj^ubeh}(h]h ]h"]h$]h&]uh1j hj^hM hj^ubah}(h]h ]h"]h$]h&]uh1jhj^ubh)}(h**Description**h]j)}(hj^h]h Description}(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:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhj^ubh)}(hbRemoves the IRQ domain for GPU interrupt sources that may be driven by another driver (e.g., ACP).h]hbRemoves the IRQ domain for GPU interrupt sources that may be driven by another driver (e.g., ACP).}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chM hj^ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj6hhhNhNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^&amdgpu_irq_create_mapping (C function)c.amdgpu_irq_create_mappinghNtauh1jQhj6hhhNhNubjc)}(hhh](jh)}(hXunsigned int amdgpu_irq_create_mapping (struct amdgpu_device *adev, unsigned int src_id)h]jn)}(hWunsigned int amdgpu_irq_create_mapping(struct amdgpu_device *adev, unsigned int src_id)h](jt)}(hunsignedh]hunsigned}(hj+_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj'_hhho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMubj)}(h h]h }(hj:_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'_hhhj9_hMubjt)}(hinth]hint}(hjH_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj'_hhhj9_hMubj)}(h h]h }(hjV_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'_hhhj9_hMubj)}(hamdgpu_irq_create_mappingh]j)}(hamdgpu_irq_create_mappingh]hamdgpu_irq_create_mapping}(hjh_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjd_ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj'_hhhj9_hMubj)}(h1(struct amdgpu_device *adev, unsigned int src_id)h](j)}(hstruct amdgpu_device *adevh](j)}(hjh]hstruct}(hj_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_ubj)}(h h]h }(hj_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_ubh)}(hhh]j)}(h amdgpu_deviceh]h amdgpu_device}(hj_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_ubah}(h]h ]h"]h$]h&] refdomainj4reftypej reftargetj_modnameN classnameNjj)}j]j)}jjj_sbc.amdgpu_irq_create_mappingasbuh1hhj_ubj)}(h h]h }(hj_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_ubj)}(hjh]h*}(hj_hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj_ubj)}(hadevh]hadev}(hj_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj|_ubj)}(hunsigned int src_idh](jt)}(hunsignedh]hunsigned}(hj_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj_ubj)}(h h]h }(hj`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_ubjt)}(hinth]hint}(hj`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj_ubj)}(h h]h }(hj `hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_ubj)}(hsrc_idh]hsrc_id}(hj.`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj|_ubeh}(h]h ]h"]h$]h&]jjuh1jhj'_hhhj9_hMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhj#_hhhj9_hMubah}(h]j_ah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghj9_hMhj _hhubj[)}(hhh]h)}(h(create mapping between domain Linux IRQsh]h(create mapping between domain Linux IRQs}(hjX`hhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhjU`hhubah}(h]h ]h"]h$]h&]uh1jZhj _hhhj9_hMubeh}(h]h ](j4functioneh"]h$]h&]jj4jjp`jjp`jjjuh1jbhhhj6hNhNubj)}(hXE**Parameters** ``struct amdgpu_device *adev`` amdgpu device pointer ``unsigned int src_id`` IH source id **Description** Creates mapping between a domain IRQ (GPU IH src id) and a Linux IRQ Use this for components that generate a GPU interrupt, but are driven by a different driver (e.g., ACP). **Return** Linux IRQh](h)}(h**Parameters**h]j)}(hjz`h]h Parameters}(hj|`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjx`ubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhjt`ubj )}(hhh](j)}(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&]uh1j9hj`ubah}(h]h ]h"]h$]h&]uh1jho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhj`ubj$)}(hhh]h)}(hamdgpu device pointerh]hamdgpu device pointer}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj`hMhj`ubah}(h]h ]h"]h$]h&]uh1j#hj`ubeh}(h]h ]h"]h$]h&]uh1j hj`hMhj`ubj)}(h%``unsigned int src_id`` IH source id h](j)}(h``unsigned int src_id``h]j:)}(hj`h]hunsigned int src_id}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj`ubah}(h]h ]h"]h$]h&]uh1jho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhj`ubj$)}(hhh]h)}(h IH source idh]h IH source id}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj`hMhj`ubah}(h]h ]h"]h$]h&]uh1j#hj`ubeh}(h]h ]h"]h$]h&]uh1j hj`hMhj`ubeh}(h]h ]h"]h$]h&]uh1jhjt`ubh)}(h**Description**h]j)}(hj ah]h Description}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jhj aubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhjt`ubh)}(hCreates mapping between a domain IRQ (GPU IH src id) and a Linux IRQ Use this for components that generate a GPU interrupt, but are driven by a different driver (e.g., ACP).h]hCreates mapping between a domain IRQ (GPU IH src id) and a Linux IRQ Use this for components that generate a GPU interrupt, but are driven by a different driver (e.g., ACP).}(hj#ahhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chMhjt`ubh)}(h **Return**h]j)}(hj4ah]hReturn}(hj6ahhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2aubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chM"hjt`ubh)}(h Linux IRQh]h Linux IRQ}(hjJahhhNhNubah}(h]h ]h"]h$]h&]uh1hho/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:234: ./drivers/gpu/drm/amd/amdgpu/amdgpu_irq.chM#hjt`ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj6hhhNhNubeh}(h]interrupt-handlingah ]h"]interrupt handlingah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h IP Blocksh]h IP Blocks}(hjkahhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhahhhhhKubh)}(hXGPUs are composed of IP (intellectual property) blocks. These IP blocks provide various functionalities: display, graphics, video decode, etc. The IP blocks that comprise a particular GPU are listed in the GPU's respective SoC file. amdgpu_device.c acquires the list of IP blocks for the GPU in use on initialization. It can then operate on this list to perform standard driver operations such as: init, fini, suspend, resume, etc.h]hXGPUs are composed of IP (intellectual property) blocks. These IP blocks provide various functionalities: display, graphics, video decode, etc. The IP blocks that comprise a particular GPU are listed in the GPU’s respective SoC file. amdgpu_device.c acquires the list of IP blocks for the GPU in use on initialization. It can then operate on this list to perform standard driver operations such as: init, fini, suspend, resume, etc.}(hjyahhhNhNubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:240: ./drivers/gpu/drm/amd/include/amd_shared.hhK9hjhahhubh)}(hoIP block implementations are named using the following convention: _v (E.g.: gfx_v6_0).h]hoIP block implementations are named using the following convention: _v (E.g.: gfx_v6_0).}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:240: ./drivers/gpu/drm/amd/include/amd_shared.hhKBhjhahhubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^amd_ip_block_type (C enum)c.amd_ip_block_typehNtauh1jQhjhahhhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhNubjc)}(hhh](jh)}(hamd_ip_block_typeh]jn)}(henum amd_ip_block_typeh](j)}(hjGRh]henum}(hjahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjahhhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhKubj)}(h h]h }(hjahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjahhhjahKubj)}(hamd_ip_block_typeh]j)}(hjah]hamd_ip_block_type}(hjahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjaubah}(h]h ](jjeh"]h$]h&]jjuh1jhjahhhjahKubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjahhhjahKubah}(h]jaah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjahKhjahhubj[)}(hhh]h)}(h,Used to classify IP blocks by functionality.h]h,Used to classify IP blocks by functionality.}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhKIhjahhubah}(h]h ]h"]h$]h&]uh1jZhjahhhjahKubeh}(h]h ](j4enumeh"]h$]h&]jj4jj bjj bjjjuh1jbhhhjhahjahNubj)}(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_RAS`` Reliability, Availability, Serviceability ``AMD_IP_BLOCK_TYPE_NUM`` Total number of IP block typesh](h)}(h **Constants**h]j)}(hjbh]h Constants}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhKMhjbubj )}(hhh](j)}(h(``AMD_IP_BLOCK_TYPE_COMMON`` GPU Family h](j)}(h``AMD_IP_BLOCK_TYPE_COMMON``h]j:)}(hj4bh]hAMD_IP_BLOCK_TYPE_COMMON}(hj6bhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj2bubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhKPhj.bubj$)}(hhh]h)}(h GPU Familyh]h GPU Family}(hjMbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjIbhKPhjJbubah}(h]h ]h"]h$]h&]uh1j#hj.bubeh}(h]h ]h"]h$]h&]uh1j hjIbhKPhj+bubj)}(h5``AMD_IP_BLOCK_TYPE_GMC`` Graphics Memory Controller h](j)}(h``AMD_IP_BLOCK_TYPE_GMC``h]j:)}(hjmbh]hAMD_IP_BLOCK_TYPE_GMC}(hjobhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjkbubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhKShjgbubj$)}(hhh]h)}(hGraphics Memory Controllerh]hGraphics Memory Controller}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjbhKShjbubah}(h]h ]h"]h$]h&]uh1j#hjgbubeh}(h]h ]h"]h$]h&]uh1j hjbhKShj+bubj)}(h+``AMD_IP_BLOCK_TYPE_IH`` Interrupt Handler h](j)}(h``AMD_IP_BLOCK_TYPE_IH``h]j:)}(hjbh]hAMD_IP_BLOCK_TYPE_IH}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjbubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhKVhjbubj$)}(hhh]h)}(hInterrupt Handlerh]hInterrupt Handler}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjbhKVhjbubah}(h]h ]h"]h$]h&]uh1j#hjbubeh}(h]h ]h"]h$]h&]uh1j hjbhKVhj+bubj)}(h7``AMD_IP_BLOCK_TYPE_SMC`` System Management Controller h](j)}(h``AMD_IP_BLOCK_TYPE_SMC``h]j:)}(hjbh]hAMD_IP_BLOCK_TYPE_SMC}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjbubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhKYhjbubj$)}(hhh]h)}(hSystem Management Controllerh]hSystem Management Controller}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjbhKYhjbubah}(h]h ]h"]h$]h&]uh1j#hjbubeh}(h]h ]h"]h$]h&]uh1j hjbhKYhj+bubj)}(h6``AMD_IP_BLOCK_TYPE_PSP`` Platform Security Processor h](j)}(h``AMD_IP_BLOCK_TYPE_PSP``h]j:)}(hjch]hAMD_IP_BLOCK_TYPE_PSP}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjcubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhK\hjcubj$)}(hhh]h)}(hPlatform Security Processorh]hPlatform Security Processor}(hj1chhhNhNubah}(h]h ]h"]h$]h&]uh1hhj-chK\hj.cubah}(h]h ]h"]h$]h&]uh1j#hjcubeh}(h]h ]h"]h$]h&]uh1j hj-chK\hj+bubj)}(h9``AMD_IP_BLOCK_TYPE_DCE`` Display and Compositing Engine h](j)}(h``AMD_IP_BLOCK_TYPE_DCE``h]j:)}(hjQch]hAMD_IP_BLOCK_TYPE_DCE}(hjSchhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjOcubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhK_hjKcubj$)}(hhh]h)}(hDisplay and Compositing Engineh]hDisplay and Compositing Engine}(hjjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfchK_hjgcubah}(h]h ]h"]h$]h&]uh1j#hjKcubeh}(h]h ]h"]h$]h&]uh1j hjfchK_hj+bubj)}(h6``AMD_IP_BLOCK_TYPE_GFX`` Graphics and Compute Engine h](j)}(h``AMD_IP_BLOCK_TYPE_GFX``h]j:)}(hjch]hAMD_IP_BLOCK_TYPE_GFX}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjcubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhKbhjcubj$)}(hhh]h)}(hGraphics and Compute Engineh]hGraphics and Compute Engine}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhjchKbhjcubah}(h]h ]h"]h$]h&]uh1j#hjcubeh}(h]h ]h"]h$]h&]uh1j hjchKbhj+bubj)}(h-``AMD_IP_BLOCK_TYPE_SDMA`` System DMA Engine h](j)}(h``AMD_IP_BLOCK_TYPE_SDMA``h]j:)}(hjch]hAMD_IP_BLOCK_TYPE_SDMA}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjcubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhKehjcubj$)}(hhh]h)}(hSystem DMA Engineh]hSystem DMA Engine}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhjchKehjcubah}(h]h ]h"]h$]h&]uh1j#hjcubeh}(h]h ]h"]h$]h&]uh1j hjchKehj+bubj)}(h0``AMD_IP_BLOCK_TYPE_UVD`` Unified Video Decoder h](j)}(h``AMD_IP_BLOCK_TYPE_UVD``h]j:)}(hjch]hAMD_IP_BLOCK_TYPE_UVD}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjcubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhKhhjcubj$)}(hhh]h)}(hUnified Video Decoderh]hUnified Video Decoder}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdhKhhjdubah}(h]h ]h"]h$]h&]uh1j#hjcubeh}(h]h ]h"]h$]h&]uh1j hjdhKhhj+bubj)}(h3``AMD_IP_BLOCK_TYPE_VCE`` Video Compression Engine h](j)}(h``AMD_IP_BLOCK_TYPE_VCE``h]j:)}(hj5dh]hAMD_IP_BLOCK_TYPE_VCE}(hj7dhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj3dubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhKkhj/dubj$)}(hhh]h)}(hVideo Compression Engineh]hVideo Compression Engine}(hjNdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJdhKkhjKdubah}(h]h ]h"]h$]h&]uh1j#hj/dubeh}(h]h ]h"]h$]h&]uh1j hjJdhKkhj+bubj)}(h-``AMD_IP_BLOCK_TYPE_ACP`` Audio Co-Processor h](j)}(h``AMD_IP_BLOCK_TYPE_ACP``h]j:)}(hjndh]hAMD_IP_BLOCK_TYPE_ACP}(hjpdhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjldubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhKnhjhdubj$)}(hhh]h)}(hAudio Co-Processorh]hAudio Co-Processor}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdhKnhjdubah}(h]h ]h"]h$]h&]uh1j#hjhdubeh}(h]h ]h"]h$]h&]uh1j hjdhKnhj+bubj)}(h0``AMD_IP_BLOCK_TYPE_VCN`` Video Core/Codec Next h](j)}(h``AMD_IP_BLOCK_TYPE_VCN``h]j:)}(hjdh]hAMD_IP_BLOCK_TYPE_VCN}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjdubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhKqhjdubj$)}(hhh]h)}(hVideo Core/Codec Nexth]hVideo Core/Codec Next}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdhKqhjdubah}(h]h ]h"]h$]h&]uh1j#hjdubeh}(h]h ]h"]h$]h&]uh1j hjdhKqhj+bubj)}(h1``AMD_IP_BLOCK_TYPE_MES`` Micro-Engine Scheduler h](j)}(h``AMD_IP_BLOCK_TYPE_MES``h]j:)}(hjdh]hAMD_IP_BLOCK_TYPE_MES}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjdubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhKthjdubj$)}(hhh]h)}(hMicro-Engine Schedulerh]hMicro-Engine Scheduler}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdhKthjdubah}(h]h ]h"]h$]h&]uh1j#hjdubeh}(h]h ]h"]h$]h&]uh1j hjdhKthj+bubj)}(h'``AMD_IP_BLOCK_TYPE_JPEG`` JPEG Engine h](j)}(h``AMD_IP_BLOCK_TYPE_JPEG``h]j:)}(hjeh]hAMD_IP_BLOCK_TYPE_JPEG}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjeubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhKwhjeubj$)}(hhh]h)}(h JPEG Engineh]h JPEG Engine}(hj2ehhhNhNubah}(h]h ]h"]h$]h&]uh1hhj.ehKwhj/eubah}(h]h ]h"]h$]h&]uh1j#hjeubeh}(h]h ]h"]h$]h&]uh1j hj.ehKwhj+bubj)}(h2``AMD_IP_BLOCK_TYPE_VPE`` Video Processing Engine h](j)}(h``AMD_IP_BLOCK_TYPE_VPE``h]j:)}(hjReh]hAMD_IP_BLOCK_TYPE_VPE}(hjTehhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjPeubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhKzhjLeubj$)}(hhh]h)}(hVideo Processing Engineh]hVideo Processing Engine}(hjkehhhNhNubah}(h]h ]h"]h$]h&]uh1hhjgehKzhjheubah}(h]h ]h"]h$]h&]uh1j#hjLeubeh}(h]h ]h"]h$]h&]uh1j hjgehKzhj+bubj)}(hB``AMD_IP_BLOCK_TYPE_UMSCH_MM`` User Mode Scheduler for Multimedia h](j)}(h``AMD_IP_BLOCK_TYPE_UMSCH_MM``h]j:)}(hjeh]hAMD_IP_BLOCK_TYPE_UMSCH_MM}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjeubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhK}hjeubj$)}(hhh]h)}(h"User Mode Scheduler for Multimediah]h"User Mode Scheduler for Multimedia}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhjehK}hjeubah}(h]h ]h"]h$]h&]uh1j#hjeubeh}(h]h ]h"]h$]h&]uh1j hjehK}hj+bubj)}(h1``AMD_IP_BLOCK_TYPE_ISP`` Image Signal Processor h](j)}(h``AMD_IP_BLOCK_TYPE_ISP``h]j:)}(hjeh]hAMD_IP_BLOCK_TYPE_ISP}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjeubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhKhjeubj$)}(hhh]h)}(hImage Signal Processorh]hImage Signal Processor}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhjehKhjeubah}(h]h ]h"]h$]h&]uh1j#hjeubeh}(h]h ]h"]h$]h&]uh1j hjehKhj+bubj)}(hD``AMD_IP_BLOCK_TYPE_RAS`` Reliability, Availability, Serviceability h](j)}(h``AMD_IP_BLOCK_TYPE_RAS``h]j:)}(hjeh]hAMD_IP_BLOCK_TYPE_RAS}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjeubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhKhjeubj$)}(hhh]h)}(h)Reliability, Availability, Serviceabilityh]h)Reliability, Availability, Serviceability}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfhKhjfubah}(h]h ]h"]h$]h&]uh1j#hjeubeh}(h]h ]h"]h$]h&]uh1j hjfhKhj+bubj)}(h8``AMD_IP_BLOCK_TYPE_NUM`` Total number of IP block typesh](j)}(h``AMD_IP_BLOCK_TYPE_NUM``h]j:)}(hj6fh]hAMD_IP_BLOCK_TYPE_NUM}(hj8fhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj4fubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhKhj0fubj$)}(hhh]h)}(hTotal number of IP block typesh]hTotal number of IP block types}(hjOfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhKhjLfubah}(h]h ]h"]h$]h&]uh1j#hj0fubeh}(h]h ]h"]h$]h&]uh1j hjKfhKhj+bubeh}(h]h ]h"]h$]h&]uh1jhjbubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhahhhjahNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^DC_FEATURE_MASK (C enum)c.DC_FEATURE_MASKhNtauh1jQhjhahhhjahNubjc)}(hhh](jh)}(hDC_FEATURE_MASKh]jn)}(henum DC_FEATURE_MASKh](j)}(hjGRh]henum}(hjfhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjfhhhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhKubj)}(h h]h }(hjfhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjfhhhjfhKubj)}(hDC_FEATURE_MASKh]j)}(hjfh]hDC_FEATURE_MASK}(hjfhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjfubah}(h]h ](jjeh"]h$]h&]jjuh1jhjfhhhjfhKubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjfhhhjfhKubah}(h]jfah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjfhKhjfhhubj[)}(hhh]h)}(h%Bits that control DC feature defaultsh]h%Bits that control DC feature defaults}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhKhjfhhubah}(h]h ]h"]h$]h&]uh1jZhjfhhhjfhKubeh}(h]h ](j4enumeh"]h$]h&]jj4jjfjjfjjjuh1jbhhhjhahjahNubj)}(hX**Constants** ``DC_FBC_MASK`` (0x1) disabled by default ``DC_MULTI_MON_PP_MCLK_SWITCH_MASK`` (0x2) enabled by default ``DC_DISABLE_FRACTIONAL_PWM_MASK`` (0x4) disabled by default ``DC_PSR_MASK`` (0x8) disabled by default for DCN < 3.1 ``DC_EDP_NO_POWER_SEQUENCING`` (0x10) disabled by default ``DC_DISABLE_LTTPR_DP1_4A`` (0x20) disabled by default ``DC_DISABLE_LTTPR_DP2_0`` (0x40) disabled by default ``DC_PSR_ALLOW_SMU_OPT`` (0x80) disabled by default ``DC_PSR_ALLOW_MULTI_DISP_OPT`` (0x100) disabled by default ``DC_REPLAY_MASK`` (0x200) disabled by default for DCN < 3.1.4 ``DC_FRL_MASK`` (0x400) disabled by defaulth](h)}(h **Constants**h]j)}(hjfh]h Constants}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhKhjfubj )}(hhh](j)}(h*``DC_FBC_MASK`` (0x1) disabled by default h](j)}(h``DC_FBC_MASK``h]j:)}(hjgh]h DC_FBC_MASK}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjgubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhKhj gubj$)}(hhh]h)}(h(0x1) disabled by defaulth]h(0x1) disabled by default}(hj,ghhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(ghKhj)gubah}(h]h ]h"]h$]h&]uh1j#hj gubeh}(h]h ]h"]h$]h&]uh1j hj(ghKhj gubj)}(h>``DC_MULTI_MON_PP_MCLK_SWITCH_MASK`` (0x2) enabled by default h](j)}(h$``DC_MULTI_MON_PP_MCLK_SWITCH_MASK``h]j:)}(hjLgh]h DC_MULTI_MON_PP_MCLK_SWITCH_MASK}(hjNghhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjJgubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhKhjFgubj$)}(hhh]h)}(h(0x2) enabled by defaulth]h(0x2) enabled by default}(hjeghhhNhNubah}(h]h ]h"]h$]h&]uh1hhjaghKhjbgubah}(h]h ]h"]h$]h&]uh1j#hjFgubeh}(h]h ]h"]h$]h&]uh1j hjaghKhj gubj)}(h=``DC_DISABLE_FRACTIONAL_PWM_MASK`` (0x4) disabled by default h](j)}(h"``DC_DISABLE_FRACTIONAL_PWM_MASK``h]j:)}(hjgh]hDC_DISABLE_FRACTIONAL_PWM_MASK}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjgubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjgubj$)}(hhh]h)}(h(0x4) disabled by defaulth]h(0x4) disabled by default}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhjghMhjgubah}(h]h ]h"]h$]h&]uh1j#hjgubeh}(h]h ]h"]h$]h&]uh1j hjghMhj gubj)}(h8``DC_PSR_MASK`` (0x8) disabled by default for DCN < 3.1 h](j)}(h``DC_PSR_MASK``h]j:)}(hjgh]h DC_PSR_MASK}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjgubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjgubj$)}(hhh]h)}(h'(0x8) disabled by default for DCN < 3.1h]h'(0x8) disabled by default for DCN < 3.1}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhjghMhjgubah}(h]h ]h"]h$]h&]uh1j#hjgubeh}(h]h ]h"]h$]h&]uh1j hjghMhj gubj)}(h:``DC_EDP_NO_POWER_SEQUENCING`` (0x10) disabled by default h](j)}(h``DC_EDP_NO_POWER_SEQUENCING``h]j:)}(hjgh]hDC_EDP_NO_POWER_SEQUENCING}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjgubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjgubj$)}(hhh]h)}(h(0x10) disabled by defaulth]h(0x10) disabled by default}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhMhj hubah}(h]h ]h"]h$]h&]uh1j#hjgubeh}(h]h ]h"]h$]h&]uh1j hj hhMhj gubj)}(h7``DC_DISABLE_LTTPR_DP1_4A`` (0x20) disabled by default h](j)}(h``DC_DISABLE_LTTPR_DP1_4A``h]j:)}(hj0hh]hDC_DISABLE_LTTPR_DP1_4A}(hj2hhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj.hubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhM hj*hubj$)}(hhh]h)}(h(0x20) disabled by defaulth]h(0x20) disabled by default}(hjIhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjEhhM hjFhubah}(h]h ]h"]h$]h&]uh1j#hj*hubeh}(h]h ]h"]h$]h&]uh1j hjEhhM hj gubj)}(h6``DC_DISABLE_LTTPR_DP2_0`` (0x40) disabled by default h](j)}(h``DC_DISABLE_LTTPR_DP2_0``h]j:)}(hjihh]hDC_DISABLE_LTTPR_DP2_0}(hjkhhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjghubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjchubj$)}(hhh]h)}(h(0x40) disabled by defaulth]h(0x40) disabled by default}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj~hhMhjhubah}(h]h ]h"]h$]h&]uh1j#hjchubeh}(h]h ]h"]h$]h&]uh1j hj~hhMhj gubj)}(h4``DC_PSR_ALLOW_SMU_OPT`` (0x80) disabled by default h](j)}(h``DC_PSR_ALLOW_SMU_OPT``h]j:)}(hjhh]hDC_PSR_ALLOW_SMU_OPT}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjhubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjhubj$)}(hhh]h)}(h(0x80) disabled by defaulth]h(0x80) disabled by default}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhMhjhubah}(h]h ]h"]h$]h&]uh1j#hjhubeh}(h]h ]h"]h$]h&]uh1j hjhhMhj gubj)}(h<``DC_PSR_ALLOW_MULTI_DISP_OPT`` (0x100) disabled by default h](j)}(h``DC_PSR_ALLOW_MULTI_DISP_OPT``h]j:)}(hjhh]hDC_PSR_ALLOW_MULTI_DISP_OPT}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjhubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjhubj$)}(hhh]h)}(h(0x100) disabled by defaulth]h(0x100) disabled by default}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhMhjhubah}(h]h ]h"]h$]h&]uh1j#hjhubeh}(h]h ]h"]h$]h&]uh1j hjhhMhj gubj)}(h?``DC_REPLAY_MASK`` (0x200) disabled by default for DCN < 3.1.4 h](j)}(h``DC_REPLAY_MASK``h]j:)}(hjih]hDC_REPLAY_MASK}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjiubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjiubj$)}(hhh]h)}(h+(0x200) disabled by default for DCN < 3.1.4h]h+(0x200) disabled by default for DCN < 3.1.4}(hj-ihhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)ihMhj*iubah}(h]h ]h"]h$]h&]uh1j#hjiubeh}(h]h ]h"]h$]h&]uh1j hj)ihMhj gubj)}(h+``DC_FRL_MASK`` (0x400) disabled by defaulth](j)}(h``DC_FRL_MASK``h]j:)}(hjMih]h DC_FRL_MASK}(hjOihhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjKiubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjGiubj$)}(hhh]h)}(h(0x400) disabled by defaulth]h(0x400) disabled by default}(hjfihhhNhNubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjciubah}(h]h ]h"]h$]h&]uh1j#hjGiubeh}(h]h ]h"]h$]h&]uh1j hjbihMhj gubeh}(h]h ]h"]h$]h&]uh1jhjfubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhahhhjahNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^DC_DEBUG_MASK (C enum)c.DC_DEBUG_MASKhNtauh1jQhjhahhhjahNubjc)}(hhh](jh)}(h DC_DEBUG_MASKh]jn)}(henum DC_DEBUG_MASKh](j)}(hjGRh]henum}(hjihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjihhhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMubj)}(h h]h }(hjihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjihhhjihMubj)}(h DC_DEBUG_MASKh]j)}(hjih]h DC_DEBUG_MASK}(hjihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjiubah}(h]h ](jjeh"]h$]h&]jjuh1jhjihhhjihMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjihhhjihMubah}(h]jiah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjihMhjihhubj[)}(hhh]h)}(h6Bits that are useful for debugging the Display Core IPh]h6Bits that are useful for debugging the Display Core IP}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhM(hjihhubah}(h]h ]h"]h$]h&]uh1jZhjihhhjihMubeh}(h]h ](j4enumeh"]h$]h&]jj4jjjjjjjjjuh1jbhhhjhahjahNubj)}(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]j)}(hj jh]h Constants}(hj jhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj jubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhM,hjjubj )}(hhh](j)}(h?``DC_DISABLE_PIPE_SPLIT`` (0x1) If set, disable pipe-splitting h](j)}(h``DC_DISABLE_PIPE_SPLIT``h]j:)}(hj*jh]hDC_DISABLE_PIPE_SPLIT}(hj,jhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj(jubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhM/hj$jubj$)}(hhh]h)}(h$(0x1) If set, disable pipe-splittingh]h$(0x1) If set, disable pipe-splitting}(hjCjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj?jhM/hj@jubah}(h]h ]h"]h$]h&]uh1j#hj$jubeh}(h]h ]h"]h$]h&]uh1j hj?jhM/hj!jubj)}(hA``DC_DISABLE_STUTTER`` (0x2) If set, disable memory stutter mode h](j)}(h``DC_DISABLE_STUTTER``h]j:)}(hjcjh]hDC_DISABLE_STUTTER}(hjejhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjajubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhM2hj]jubj$)}(hhh]h)}(h)(0x2) If set, disable memory stutter modeh]h)(0x2) If set, disable memory stutter mode}(hj|jhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjxjhM2hjyjubah}(h]h ]h"]h$]h&]uh1j#hj]jubeh}(h]h ]h"]h$]h&]uh1j hjxjhM2hj!jubj)}(hD``DC_DISABLE_DSC`` (0x4) If set, disable display stream compression h](j)}(h``DC_DISABLE_DSC``h]j:)}(hjjh]hDC_DISABLE_DSC}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjjubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhM5hjjubj$)}(hhh]h)}(h0(0x4) If set, disable display stream compressionh]h0(0x4) If set, disable display stream compression}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjjhM5hjjubah}(h]h ]h"]h$]h&]uh1j#hjjubeh}(h]h ]h"]h$]h&]uh1j hjjhM5hj!jubj)}(hM``DC_DISABLE_CLOCK_GATING`` (0x8) If set, disable clock gating optimizations h](j)}(h``DC_DISABLE_CLOCK_GATING``h]j:)}(hjjh]hDC_DISABLE_CLOCK_GATING}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjjubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhM8hjjubj$)}(hhh]h)}(h0(0x8) If set, disable clock gating optimizationsh]h0(0x8) If set, disable clock gating optimizations}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjjhM8hjjubah}(h]h ]h"]h$]h&]uh1j#hjjubeh}(h]h ]h"]h$]h&]uh1j hjjhM8hj!jubj)}(hK``DC_DISABLE_PSR`` (0x10) If set, disable Panel self refresh v1 and PSR-SU h](j)}(h``DC_DISABLE_PSR``h]j:)}(hjkh]hDC_DISABLE_PSR}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj kubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhM;hjkubj$)}(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}(hj'khhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#khM;hj$kubah}(h]h ]h"]h$]h&]uh1j#hjkubeh}(h]h ]h"]h$]h&]uh1j hj#khM;hj!jubj)}(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:)}(hjGkh]hDC_FORCE_SUBVP_MCLK_SWITCH}(hjIkhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjEkubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhM?hjAkubj$)}(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}(hj`khhhNhNubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhM>hj]kubah}(h]h ]h"]h$]h&]uh1j#hjAkubeh}(h]h ]h"]h$]h&]uh1j hj\khM?hj!jubj)}(hA``DC_DISABLE_MPO`` (0x40) If set, disable multi-plane offloading h](j)}(h``DC_DISABLE_MPO``h]j:)}(hjkh]hDC_DISABLE_MPO}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjkubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMBhj{kubj$)}(hhh]h)}(h-(0x40) If set, disable multi-plane offloadingh]h-(0x40) If set, disable multi-plane offloading}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjkhMBhjkubah}(h]h ]h"]h$]h&]uh1j#hj{kubeh}(h]h ]h"]h$]h&]uh1j hjkhMBhj!jubj)}(hF``DC_ENABLE_DPIA_TRACE`` (0x80) If set, enable trace logging for DPIA h](j)}(h``DC_ENABLE_DPIA_TRACE``h]j:)}(hjkh]hDC_ENABLE_DPIA_TRACE}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjkubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMEhjkubj$)}(hhh]h)}(h,(0x80) If set, enable trace logging for DPIAh]h,(0x80) If set, enable trace logging for DPIA}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjkhMEhjkubah}(h]h ]h"]h$]h&]uh1j#hjkubeh}(h]h ]h"]h$]h&]uh1j hjkhMEhj!jubj)}(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:)}(hjkh]hDC_ENABLE_DML2}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjkubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMIhjkubj$)}(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.}(hj lhhhNhNubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMHhj lubah}(h]h ]h"]h$]h&]uh1j#hjkubeh}(h]h ]h"]h$]h&]uh1j hjlhMIhj!jubj)}(h5``DC_DISABLE_PSR_SU`` (0x200) If set, disable PSR SU h](j)}(h``DC_DISABLE_PSR_SU``h]j:)}(hj-lh]hDC_DISABLE_PSR_SU}(hj/lhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj+lubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.h hMLhj'lubj$)}(hhh]h)}(h(0x200) If set, disable PSR SUh]h(0x200) If set, disable PSR SU}(hjFlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBlhMLhjClubah}(h]h ]h"]h$]h&]uh1j#hj'lubeh}(h]h ]h"]h$]h&]uh1j hjBlhMLhj!jubj)}(h;``DC_DISABLE_REPLAY`` (0x400) If set, disable Panel Replay h](j)}(h``DC_DISABLE_REPLAY``h]j:)}(hjflh]hDC_DISABLE_REPLAY}(hjhlhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjdlubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMOhj`lubj$)}(hhh]h)}(h$(0x400) If set, disable Panel Replayh]h$(0x400) If set, disable Panel Replay}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj{lhMOhj|lubah}(h]h ]h"]h$]h&]uh1j#hj`lubeh}(h]h ]h"]h$]h&]uh1j hj{lhMOhj!jubj)}(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:)}(hjlh]hDC_DISABLE_IPS}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjlubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMVhjlubj$)}(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.}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMRhjlubah}(h]h ]h"]h$]h&]uh1j#hjlubeh}(h]h ]h"]h$]h&]uh1j hjlhMVhj!jubj)}(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:)}(hjlh]hDC_DISABLE_IPS_DYNAMIC}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjlubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMZhjlubj$)}(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, }(hjlhhhNhNubj7)}(h*except*h]hexcept}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1j7hjlubh when driver goes into suspend.}(hjlhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMYhjlubah}(h]h ]h"]h$]h&]uh1j#hjlubeh}(h]h ]h"]h$]h&]uh1j hjlhMZhj!jubj)}(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:)}(hj%mh]hDC_DISABLE_IPS2_DYNAMIC}(hj'mhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj#mubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhM^hjmubj$)}(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>mhhhNhNubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhM]hj;mubah}(h]h ]h"]h$]h&]uh1j#hjmubeh}(h]h ]h"]h$]h&]uh1j hj:mhM^hj!jubj)}(hM``DC_FORCE_IPS_ENABLE`` (0x4000) If set, force enable all IPS, all the time. h](j)}(h``DC_FORCE_IPS_ENABLE``h]j:)}(hj_mh]hDC_FORCE_IPS_ENABLE}(hjamhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj]mubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMahjYmubj$)}(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.}(hjxmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjtmhMahjumubah}(h]h ]h"]h$]h&]uh1j#hjYmubeh}(h]h ]h"]h$]h&]uh1j hjtmhMahj!jubj)}(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:)}(hjmh]hDC_DISABLE_ACPI_EDID}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjmubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMehjmubj$)}(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.}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMdhjmubah}(h]h ]h"]h$]h&]uh1j#hjmubeh}(h]h ]h"]h$]h&]uh1j hjmhMehj!jubj)}(hU``DC_DISABLE_HDMI_CEC`` (0x10000) If set, disable HDMI-CEC feature in amdgpu driver. h](j)}(h``DC_DISABLE_HDMI_CEC``h]j:)}(hjmh]hDC_DISABLE_HDMI_CEC}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjmubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMhhjmubj$)}(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.}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjmhMhhjmubah}(h]h ]h"]h$]h&]uh1j#hjmubeh}(h]h ]h"]h$]h&]uh1j hjmhMhhj!jubj)}(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:)}(hj nh]hDC_DISABLE_SUBVP_FAMS}(hj nhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj nubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMlhjnubj$)}(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.}(hj$nhhhNhNubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMkhj!nubah}(h]h ]h"]h$]h&]uh1j#hjnubeh}(h]h ]h"]h$]h&]uh1j hj nhMlhj!jubj)}(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:)}(hjEnh]h"DC_DISABLE_CUSTOM_BRIGHTNESS_CURVE}(hjGnhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjCnubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMphj?nubj$)}(hhh]h)}(h>(0x40000) If set, disable support for custom brightness curvesh]h>(0x40000) If set, disable support for custom brightness curves}(hj^nhhhNhNubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMohj[nubah}(h]h ]h"]h$]h&]uh1j#hj?nubeh}(h]h ]h"]h$]h&]uh1j hjZnhMphj!jubj)}(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:)}(hjnh]hDC_HDCP_LC_FORCE_FW_ENABLE}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj}nubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMthjynubj$)}(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.}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMshjnubah}(h]h ]h"]h$]h&]uh1j#hjynubeh}(h]h ]h"]h$]h&]uh1j hjnhMthj!jubj)}(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:)}(hjnh]hDC_HDCP_LC_ENABLE_SW_FALLBACK}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjnubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMxhjnubj$)}(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.}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMwhjnubah}(h]h ]h"]h$]h&]uh1j#hjnubeh}(h]h ]h"]h$]h&]uh1j hjnhMxhj!jubj)}(hH``DC_SKIP_DETECTION_LT`` (0x200000) If set, skip detection link trainingh](j)}(h``DC_SKIP_DETECTION_LT``h]j:)}(hjnh]hDC_SKIP_DETECTION_LT}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjnubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMzhjnubj$)}(hhh]h)}(h/(0x200000) If set, skip detection link trainingh]h/(0x200000) If set, skip detection link training}(hj ohhhNhNubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhM{hj oubah}(h]h ]h"]h$]h&]uh1j#hjnubeh}(h]h ]h"]h$]h&]uh1j hjohMzhj!jubeh}(h]h ]h"]h$]h&]uh1jhjjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhahhhjahNubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^amd_ip_funcs (C struct)c.amd_ip_funcshNtauh1jQhjhahhhjahNubjc)}(hhh](jh)}(h amd_ip_funcsh]jn)}(hstruct amd_ip_funcsh](j)}(hjh]hstruct}(hjMohhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjIohhhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMubj)}(h h]h }(hj[ohhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjIohhhjZohMubj)}(h amd_ip_funcsh]j)}(hjGoh]h amd_ip_funcs}(hjmohhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjioubah}(h]h ](jjeh"]h$]h&]jjuh1jhjIohhhjZohMubeh}(h]h ]h"]h$]h&]jjjLuh1jmjMjNhjEohhhjZohMubah}(h]j@oah ](jRjSeh"]h$]h&]jWjX)jYhuh1jghjZohMhjBohhubj[)}(hhh]h)}(h+general hooks for managing amdgpu IP Blocksh]h+general hooks for managing amdgpu IP Blocks}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjohhubah}(h]h ]h"]h$]h&]uh1jZhjBohhhjZohMubeh}(h]h ](j4structeh"]h$]h&]jj4jjojjojjjuh1jbhhhjhahjahNubj)}(hXM **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); int (*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 ``soft_reset`` 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](j)}(h**Definition**h]h Definition}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubh:}(hjohhhNhNubeh}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjoubj)}(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); int (*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); int (*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); };}hjosbah}(h]h ]h"]h$]h&]jjuh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjoubh)}(h **Members**h]j)}(hjoh]hMembers}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjoubj )}(hhh](j)}(h``name`` Name of IP block h](j)}(h``name``h]j:)}(hjoh]hname}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjoubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjoubj$)}(hhh]h)}(hName of IP blockh]hName of IP block}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hhjphMhjpubah}(h]h ]h"]h$]h&]uh1j#hjoubeh}(h]h ]h"]h$]h&]uh1j hjphMhjoubj)}(hZ``early_init`` sets up early driver state (pre sw_init), does not configure hw - Optional h](j)}(h``early_init``h]j:)}(hj5ph]h early_init}(hj7phhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj3pubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMhj/pubj$)}(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 - Optional}(hjNphhhNhNubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjKpubah}(h]h ]h"]h$]h&]uh1j#hj/pubeh}(h]h ]h"]h$]h&]uh1j hjJphMhjoubj)}(hE``late_init`` sets up late driver/hw state (post hw_init) - Optional h](j)}(h ``late_init``h]j:)}(hjoph]h late_init}(hjqphhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjmpubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjipubj$)}(hhh]h)}(h6sets up late driver/hw state (post hw_init) - Optionalh]h6sets up late driver/hw state (post hw_init) - Optional}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hhjphMhjpubah}(h]h ]h"]h$]h&]uh1j#hjipubeh}(h]h ]h"]h$]h&]uh1j hjphMhjoubj)}(h8``sw_init`` sets up driver state, does not configure hw h](j)}(h ``sw_init``h]j:)}(hjph]hsw_init}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjpubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjpubj$)}(hhh]h)}(h+sets up driver state, does not configure hwh]h+sets up driver state, does not configure hw}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hhjphMhjpubah}(h]h ]h"]h$]h&]uh1j#hjpubeh}(h]h ]h"]h$]h&]uh1j hjphMhjoubj)}(h;``sw_fini`` tears down driver state, does not configure hw h](j)}(h ``sw_fini``h]j:)}(hjph]hsw_fini}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjpubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjpubj$)}(hhh]h)}(h.tears down driver state, does not configure hwh]h.tears down driver state, does not configure hw}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hhjphMhjpubah}(h]h ]h"]h$]h&]uh1j#hjpubeh}(h]h ]h"]h$]h&]uh1j hjphMhjoubj)}(h@``early_fini`` tears down stuff before dev detached from driver h](j)}(h``early_fini``h]j:)}(hjqh]h early_fini}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjqubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjqubj$)}(hhh]h)}(h0tears down stuff before dev detached from driverh]h0tears down stuff before dev detached from driver}(hj3qhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/qhMhj0qubah}(h]h ]h"]h$]h&]uh1j#hjqubeh}(h]h ]h"]h$]h&]uh1j hj/qhMhjoubj)}(h!``hw_init`` sets up the hw state h](j)}(h ``hw_init``h]j:)}(hjSqh]hhw_init}(hjUqhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjQqubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjMqubj$)}(hhh]h)}(hsets up the hw stateh]hsets up the hw state}(hjlqhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhqhMhjiqubah}(h]h ]h"]h$]h&]uh1j#hjMqubeh}(h]h ]h"]h$]h&]uh1j hjhqhMhjoubj)}(h$``hw_fini`` tears down the hw state h](j)}(h ``hw_fini``h]j:)}(hjqh]hhw_fini}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjqubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjqubj$)}(hhh]h)}(htears down the hw stateh]htears down the hw state}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjqhMhjqubah}(h]h ]h"]h$]h&]uh1j#hjqubeh}(h]h ]h"]h$]h&]uh1j hjqhMhjoubj)}(h``late_fini`` final cleanup h](j)}(h ``late_fini``h]j:)}(hjqh]h late_fini}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjqubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjqubj$)}(hhh]h)}(h final cleanuph]h final cleanup}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjqhMhjqubah}(h]h ]h"]h$]h&]uh1j#hjqubeh}(h]h ]h"]h$]h&]uh1j hjqhMhjoubj)}(ho``prepare_suspend`` handle IP specific changes to prepare for suspend (such as allocating any required memory) h](j)}(h``prepare_suspend``h]j:)}(hjqh]hprepare_suspend}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjqubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjqubj$)}(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)}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjrubah}(h]h ]h"]h$]h&]uh1j#hjqubeh}(h]h ]h"]h$]h&]uh1j hjrhMhjoubj)}(h:``suspend`` handles IP specific hw/sw changes for suspend h](j)}(h ``suspend``h]j:)}(hj8rh]hsuspend}(hj:rhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj6rubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMhj2rubj$)}(hhh]h)}(h-handles IP specific hw/sw changes for suspendh]h-handles IP specific hw/sw changes for suspend}(hjQrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjMrhMhjNrubah}(h]h ]h"]h$]h&]uh1j#hj2rubeh}(h]h ]h"]h$]h&]uh1j hjMrhMhjoubj)}(h8``resume`` handles IP specific hw/sw changes for resume h](j)}(h ``resume``h]j:)}(hjqrh]hresume}(hjsrhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjorubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjkrubj$)}(hhh]h)}(h,handles IP specific hw/sw changes for resumeh]h,handles IP specific hw/sw changes for resume}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjrhMhjrubah}(h]h ]h"]h$]h&]uh1j#hjkrubeh}(h]h ]h"]h$]h&]uh1j hjrhMhjoubj)}(h6``complete`` handles IP specific changes after resume h](j)}(h ``complete``h]j:)}(hjrh]hcomplete}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjrubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjrubj$)}(hhh]h)}(h(handles IP specific changes after resumeh]h(handles IP specific changes after resume}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjrhMhjrubah}(h]h ]h"]h$]h&]uh1j#hjrubeh}(h]h ]h"]h$]h&]uh1j hjrhMhjoubj)}(h1``is_idle`` returns current IP block idle status h](j)}(h ``is_idle``h]j:)}(hjrh]his_idle}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjrubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjrubj$)}(hhh]h)}(h$returns current IP block idle statush]h$returns current IP block idle status}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjrhMhjrubah}(h]h ]h"]h$]h&]uh1j#hjrubeh}(h]h ]h"]h$]h&]uh1j hjrhMhjoubj)}(h ``wait_for_idle`` poll for idle h](j)}(h``wait_for_idle``h]j:)}(hjsh]h wait_for_idle}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjsubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjsubj$)}(hhh]h)}(h poll for idleh]h poll for idle}(hj5shhhNhNubah}(h]h ]h"]h$]h&]uh1hhj1shMhj2subah}(h]h ]h"]h$]h&]uh1j#hjsubeh}(h]h ]h"]h$]h&]uh1j hj1shMhjoubj)}(h'``soft_reset`` soft reset the IP block h](j)}(h``soft_reset``h]j:)}(hjUsh]h soft_reset}(hjWshhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjSsubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjOsubj$)}(hhh]h)}(hsoft reset the IP blockh]hsoft reset the IP block}(hjnshhhNhNubah}(h]h ]h"]h$]h&]uh1hhjjshMhjksubah}(h]h ]h"]h$]h&]uh1j#hjOsubeh}(h]h ]h"]h$]h&]uh1j hjjshMhjoubj)}(h=``set_clockgating_state`` enable/disable cg for the IP block h](j)}(h``set_clockgating_state``h]j:)}(hjsh]hset_clockgating_state}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjsubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjsubj$)}(hhh]h)}(h"enable/disable cg for the IP blockh]h"enable/disable cg for the IP block}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhjshMhjsubah}(h]h ]h"]h$]h&]uh1j#hjsubeh}(h]h ]h"]h$]h&]uh1j hjshMhjoubj)}(h=``set_powergating_state`` enable/disable pg for the IP block h](j)}(h``set_powergating_state``h]j:)}(hjsh]hset_powergating_state}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjsubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjsubj$)}(hhh]h)}(h"enable/disable pg for the IP blockh]h"enable/disable pg for the IP block}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhjshMhjsubah}(h]h ]h"]h$]h&]uh1j#hjsubeh}(h]h ]h"]h$]h&]uh1j hjshMhjoubj)}(h9``get_clockgating_state`` get current clockgating status h](j)}(h``get_clockgating_state``h]j:)}(hjth]hget_clockgating_state}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjsubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjsubj$)}(hhh]h)}(hget current clockgating statush]hget current clockgating status}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1hhjthMhjtubah}(h]h ]h"]h$]h&]uh1j#hjsubeh}(h]h ]h"]h$]h&]uh1j hjthMhjoubj)}(hB``dump_ip_state`` dump the IP state of the ASIC during a gpu hang h](j)}(h``dump_ip_state``h]j:)}(hj9th]h dump_ip_state}(hj;thhhNhNubah}(h]h ]h"]h$]h&]uh1j9hj7tubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMhj3tubj$)}(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}(hjRthhhNhNubah}(h]h ]h"]h$]h&]uh1hhjNthMhjOtubah}(h]h ]h"]h$]h&]uh1j#hj3tubeh}(h]h ]h"]h$]h&]uh1j hjNthMhjoubj)}(hL``print_ip_state`` print the IP state in devcoredump for each IP of the ASICh](j)}(h``print_ip_state``h]j:)}(hjrth]hprint_ip_state}(hjtthhhNhNubah}(h]h ]h"]h$]h&]uh1j9hjptubah}(h]h ]h"]h$]h&]uh1jhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjltubj$)}(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}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjtubah}(h]h ]h"]h$]h&]uh1j#hjltubeh}(h]h ]h"]h$]h&]uh1j hjthMhjoubeh}(h]h ]h"]h$]h&]uh1jhjoubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhahhhjahNubh)}(h**Description**h]j)}(hjth]h Description}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjhahhubh)}(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.}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1hhp/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/driver-core:243: ./drivers/gpu/drm/amd/include/amd_shared.hhMhjhahhubeh}(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_handlerj uerror_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}(jK]j@aj]jaunameids}(jtjtjQjNjvjKjujrj!jjjjjjcjcjT~jQ~jjj6j6jeajbajtjtu nametypes}(jtjQjvjuj!jjjcjT~jj6jeajtuh}(jthjNhjKjTjrjTjj}jj$jj$jcj j`jijjj j jjjj j,j1jjjjjW!j\!j$j$j'j'j+j +j~-j-jR/jW/j1j1j3j3j5j5j8j8j9j9j;j;j=j=ja?jf?jAjAjDjDjHjHjlKjqKjLjLjNjNjQjQjTjTjWjWj:Yj?YjZjZjb\jg\j^j"^jR`jW`jQ~j cjpcjucj,ej1ejzgjgjij$ijjjjjgmjlmjQpjVpjrjrjQujVujwjwjyjyj2|j7|jjW~j~j~jpjuj>jCjIjNjʇjχjjjjj6jjj!j`jejjj#j(jLjQj͕jҕjNjSjϘjԘjPjUjћj֛jRjWjjjjjWj\j jjjĪjjj&j+jjjjjj j.j3jƼj˼jjjjjjjjjjjjjjjjjSjXjjjjjjj2j7j\jajdjijmjrjjj(j-jjj_jdjjjjjjj[j`jjjjjP jU jP jU jjjejjjjjgjljjjjjjj<jAj j%j!j!j#j#jL%jQ%j&j&jr)jw)j,j,j0j0j3j 3jbaj6j6j6j8j8j:j:j(<j-<j=j=j*?j/?j@j@jBjBjDjDjGjGjIjIj]LjbLjOjOjPjPjmSjrSjHVjMVjBYjGYj[j[j]j]j_j#_jtjhajajajfjfjijij@ojEou 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.}hjxusbah}(h]h ]h"]h$]h&]uh1hhjuuubah}(h]h ]h"]h$]h&]levelKtypeINFOsourcehʌlineKouh1jsuubjtu)}(hhh]h)}(hhh]h;Hyperlink target "amdgpu-memory-domains" is not referenced.}hjusbah}(h]h ]h"]h$]h&]uh1hhjuubah}(h]h ]h"]h$]h&]levelKtypejusourcehʌlineKuh1jsuube transformerN include_log] decorationNhhub.