1<html><head><meta http-equiv="Content-Type" content="text/html; charset=ANSI_X3.4-1968"><title>drm_gem_mmap_obj</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="Linux DRM Developer's Guide"><link rel="up" href="drm-memory-management.html#idp1122600572" title="GEM Function Reference"><link rel="prev" href="API-drm-gem-object-free.html" title="drm_gem_object_free"><link rel="next" href="API-drm-gem-mmap.html" title="drm_gem_mmap"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"><span class="phrase">drm_gem_mmap_obj</span></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="API-drm-gem-object-free.html">Prev</a> </td><th width="60%" align="center">GEM Function Reference</th><td width="20%" align="right"> <a accesskey="n" href="API-drm-gem-mmap.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="API-drm-gem-mmap-obj"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>drm_gem_mmap_obj — 2 memory map a GEM object 3 </p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">drm_gem_mmap_obj </b>(</code></td><td>struct drm_gem_object * <var class="pdparam">obj</var>, </td></tr><tr><td> </td><td>unsigned long <var class="pdparam">obj_size</var>, </td></tr><tr><td> </td><td>struct vm_area_struct * <var class="pdparam">vma</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idp1122702124"></a><h2>Arguments</h2><div class="variablelist"><dl class="variablelist"><dt><span class="term"><em class="parameter"><code>obj</code></em></span></dt><dd><p> 4 the GEM object to map 5 </p></dd><dt><span class="term"><em class="parameter"><code>obj_size</code></em></span></dt><dd><p> 6 the object size to be mapped, in bytes 7 </p></dd><dt><span class="term"><em class="parameter"><code>vma</code></em></span></dt><dd><p> 8 VMA for the area to be mapped 9 </p></dd></dl></div></div><div class="refsect1"><a name="idp1122705700"></a><h2>Description</h2><p> 10 Set up the VMA to prepare mapping of the GEM object using the gem_vm_ops 11 provided by the driver. Depending on their requirements, drivers can either 12 provide a fault handler in their gem_vm_ops (in which case any accesses to 13 the object will be trapped, to perform migration, GTT binding, surface 14 register allocation, or performance monitoring), or mmap the buffer memory 15 synchronously after calling drm_gem_mmap_obj. 16 </p><p> 17 18 This function is mainly intended to implement the DMABUF mmap operation, when 19 the GEM object is not looked up based on its fake offset. To implement the 20 DRM mmap operation, drivers should use the <code class="function">drm_gem_mmap</code> function. 21 </p><p> 22 23 <code class="function">drm_gem_mmap_obj</code> assumes the user is granted access to the buffer while 24 <code class="function">drm_gem_mmap</code> prevents unprivileged users from mapping random objects. So 25 callers must verify access restrictions before calling this helper. 26</p></div><div class="refsect1"><a name="idp1122708340"></a><h2>NOTE</h2><p> 27 This function has to be protected with dev->struct_mutex 28 </p><p> 29 30 Return 0 or success or -EINVAL if the object size is smaller than the VMA 31 size, or if no gem_vm_ops are provided. 32</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="API-drm-gem-object-free.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="drm-memory-management.html#idp1122600572">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="API-drm-gem-mmap.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span class="phrase">drm_gem_object_free</span> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> <span class="phrase">drm_gem_mmap</span></td></tr></table></div></body></html> 33