~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/gpu/drm-internals.rst

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /Documentation/gpu/drm-internals.rst (Version linux-6.12-rc7) and /Documentation/gpu/drm-internals.rst (Version policy-sample)


  1 =============                                     
  2 DRM Internals                                     
  3 =============                                     
  4                                                   
  5 This chapter documents DRM internals relevant     
  6 developers working to add support for the late    
  7 drivers.                                          
  8                                                   
  9 First, we go over some typical driver initiali    
 10 setting up command buffers, creating an initia    
 11 and initializing core services. Subsequent sec    
 12 in more detail, providing implementation notes    
 13                                                   
 14 The DRM layer provides several services to gra    
 15 them driven by the application interfaces it p    
 16 the library that wraps most of the DRM ioctls.    
 17 event handling, memory management, output mana    
 18 management, command submission & fencing, susp    
 19 DMA services.                                     
 20                                                   
 21 Driver Initialization                             
 22 =====================                             
 23                                                   
 24 At the core of every DRM driver is a :c:type:`    
 25 <drm_driver>` structure. Drivers typically sta    
 26 a drm_driver structure, and then pass it to       
 27 drm_dev_alloc() to allocate a device instance.    
 28 device instance is fully initialized it can be    
 29 it accessible from userspace) using drm_dev_re    
 30                                                   
 31 The :c:type:`struct drm_driver <drm_driver>` s    
 32 contains static information that describes the    
 33 supports, and pointers to methods that the DRM    
 34 implement the DRM API. We will first go throug    
 35 drm_driver <drm_driver>` static information fi    
 36 then describe individual operations in details    
 37 sections.                                         
 38                                                   
 39 Driver Information                                
 40 ------------------                                
 41                                                   
 42 Major, Minor and Patchlevel                       
 43 ~~~~~~~~~~~~~~~~~~~~~~~~~~~                       
 44                                                   
 45 int major; int minor; int patchlevel;             
 46 The DRM core identifies driver versions by a m    
 47 level triplet. The information is printed to t    
 48 initialization time and passed to userspace th    
 49 DRM_IOCTL_VERSION ioctl.                          
 50                                                   
 51 The major and minor numbers are also used to v    
 52 API version passed to DRM_IOCTL_SET_VERSION. W    
 53 changes between minor versions, applications c    
 54 DRM_IOCTL_SET_VERSION to select a specific ver    
 55 requested major isn't equal to the driver majo    
 56 is larger than the driver minor, the DRM_IOCTL    
 57 return an error. Otherwise the driver's set_ve    
 58 called with the requested version.                
 59                                                   
 60 Name and Description                              
 61 ~~~~~~~~~~~~~~~~~~~~                              
 62                                                   
 63 char \*name; char \*desc; char \*date;            
 64 The driver name is printed to the kernel log a    
 65 used for IRQ registration and passed to usersp    
 66 DRM_IOCTL_VERSION.                                
 67                                                   
 68 The driver description is a purely informative    
 69 userspace through the DRM_IOCTL_VERSION ioctl     
 70 the kernel.                                       
 71                                                   
 72 Module Initialization                             
 73 ---------------------                             
 74                                                   
 75 .. kernel-doc:: include/drm/drm_module.h          
 76    :doc: overview                                 
 77                                                   
 78 Managing Ownership of the Framebuffer Aperture    
 79 ----------------------------------------------    
 80                                                   
 81 .. kernel-doc:: drivers/gpu/drm/drm_aperture.c    
 82    :doc: overview                                 
 83                                                   
 84 .. kernel-doc:: include/drm/drm_aperture.h        
 85    :internal:                                     
 86                                                   
 87 .. kernel-doc:: drivers/gpu/drm/drm_aperture.c    
 88    :export:                                       
 89                                                   
 90 Device Instance and Driver Handling               
 91 -----------------------------------               
 92                                                   
 93 .. kernel-doc:: drivers/gpu/drm/drm_drv.c         
 94    :doc: driver instance overview                 
 95                                                   
 96 .. kernel-doc:: include/drm/drm_device.h          
 97    :internal:                                     
 98                                                   
 99 .. kernel-doc:: include/drm/drm_drv.h             
100    :internal:                                     
101                                                   
102 .. kernel-doc:: drivers/gpu/drm/drm_drv.c         
103    :export:                                       
104                                                   
105 Driver Load                                       
106 -----------                                       
107                                                   
108 Component Helper Usage                            
109 ~~~~~~~~~~~~~~~~~~~~~~                            
110                                                   
111 .. kernel-doc:: drivers/gpu/drm/drm_drv.c         
112    :doc: component helper usage recommendation    
113                                                   
114 Memory Manager Initialization                     
115 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                     
116                                                   
117 Every DRM driver requires a memory manager whi    
118 load time. DRM currently contains two memory m    
119 Table Manager (TTM) and the Graphics Execution    
120 document describes the use of the GEM memory m    
121 details.                                          
122                                                   
123 Miscellaneous Device Configuration                
124 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                
125                                                   
126 Another task that may be necessary for PCI dev    
127 is mapping the video BIOS. On many devices, th    
128 configuration, LCD panel timings (if any), and    
129 device state. Mapping the BIOS can be done usi    
130 call, a convenience function that takes care o    
131 whether it has been shadowed into memory (typi    
132 or exists on the PCI device in the ROM BAR. No    
133 been mapped and any necessary information has     
134 be unmapped; on many devices, the ROM address     
135 other BARs, so leaving it mapped could cause u    
136 hangs or memory corruption.                       
137                                                   
138 Managed Resources                                 
139 -----------------                                 
140                                                   
141 .. kernel-doc:: drivers/gpu/drm/drm_managed.c     
142    :doc: managed resources                        
143                                                   
144 .. kernel-doc:: drivers/gpu/drm/drm_managed.c     
145    :export:                                       
146                                                   
147 .. kernel-doc:: include/drm/drm_managed.h         
148    :internal:                                     
149                                                   
150 Open/Close, File Operations and IOCTLs            
151 ======================================            
152                                                   
153 .. _drm_driver_fops:                              
154                                                   
155 File Operations                                   
156 ---------------                                   
157                                                   
158 .. kernel-doc:: drivers/gpu/drm/drm_file.c        
159    :doc: file operations                          
160                                                   
161 .. kernel-doc:: include/drm/drm_file.h            
162    :internal:                                     
163                                                   
164 .. kernel-doc:: drivers/gpu/drm/drm_file.c        
165    :export:                                       
166                                                   
167 Misc Utilities                                    
168 ==============                                    
169                                                   
170 Printer                                           
171 -------                                           
172                                                   
173 .. kernel-doc:: include/drm/drm_print.h           
174    :doc: print                                    
175                                                   
176 .. kernel-doc:: include/drm/drm_print.h           
177    :internal:                                     
178                                                   
179 .. kernel-doc:: drivers/gpu/drm/drm_print.c       
180    :export:                                       
181                                                   
182 Utilities                                         
183 ---------                                         
184                                                   
185 .. kernel-doc:: include/drm/drm_util.h            
186    :doc: drm utils                                
187                                                   
188 .. kernel-doc:: include/drm/drm_util.h            
189    :internal:                                     
190                                                   
191                                                   
192 Unit testing                                      
193 ============                                      
194                                                   
195 KUnit                                             
196 -----                                             
197                                                   
198 KUnit (Kernel unit testing framework) provides    
199 within the Linux kernel.                          
200                                                   
201 This section covers the specifics for the DRM     
202 about KUnit, please refer to Documentation/dev    
203                                                   
204 How to run the tests?                             
205 ~~~~~~~~~~~~~~~~~~~~~                             
206                                                   
207 In order to facilitate running the test suite,    
208 in ``drivers/gpu/drm/tests/.kunitconfig``. It     
209 follows:                                          
210                                                   
211 .. code-block:: bash                              
212                                                   
213         $ ./tools/testing/kunit/kunit.py run -    
214                 --kconfig_add CONFIG_VIRTIO_UM    
215                 --kconfig_add CONFIG_UML_PCI_O    
216                                                   
217 .. note::                                         
218         The configuration included in ``.kunit    
219         possible.                                 
220         ``CONFIG_VIRTIO_UML`` and ``CONFIG_UML    
221         included in it because they are only r    
222                                                   
223                                                   
224 Legacy Support Code                               
225 ===================                               
226                                                   
227 The section very briefly covers some of the ol    
228 which is only used by old DRM drivers which ha    
229 shadow-attach to the underlying device instead    
230 driver. This also includes some of the old gen    
231 command submission code. Do not use any of thi    
232 drivers.                                          
233                                                   
234 Legacy Suspend/Resume                             
235 ---------------------                             
236                                                   
237 The DRM core provides some suspend/resume code    
238 suspend/resume support should provide save() a    
239 These are called at suspend, hibernate, or res    
240 perform any state save or restore required by     
241 or hibernate states.                              
242                                                   
243 int (\*suspend) (struct drm_device \*, pm_mess    
244 (\*resume) (struct drm_device \*);                
245 Those are legacy suspend and resume methods wh    
246 legacy shadow-attach driver registration funct    
247 use the power management interface provided by    
248 through the :c:type:`struct device_driver <dev    
249 dev_pm_ops) and set these methods to NULL.        
250                                                   
251 Legacy DMA Services                               
252 -------------------                               
253                                                   
254 This should cover how DMA mapping etc. is supp    
255 functions are deprecated and should not be use    
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php