Hi Rohan,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on drm-exynos/exynos-drm-next]
[also build test WARNING on drm-intel/for-linux-next 
tegra-drm/drm/tegra/for-next drm-tip/drm-tip linus/master v5.7-rc7 
next-20200529]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    
https://github.com/0day-ci/linux/commits/Rohan-Garg/drm-ioctl-Add-a-ioctl-to-set-and-get-a-label-on-GEM-objects/20200531-000134
base:   https://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos.git 
exynos-drm-next
config: ia64-allmodconfig (attached as .config)
compiler: ia64-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
        wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross 
ARCH=ia64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <l...@intel.com>

All warnings (new ones prefixed by >>, old ones prefixed by <<):

In file included from drivers/gpu/drm/drm_gem_vram_helper.c:7:
>> include/drm/drm_drv.h:566:12: warning: 'struct drm_handle_label' declared 
>> inside parameter list will not be visible outside of this definition or 
>> declaration
566 |     struct drm_handle_label *args);
|            ^~~~~~~~~~~~~~~~
include/drm/drm_drv.h:581:14: warning: 'struct drm_handle_label' declared 
inside parameter list will not be visible outside of this definition or 
declaration
581 |       struct drm_handle_label *args);
|              ^~~~~~~~~~~~~~~~
--
drivers/gpu/drm/drm_gem.c: In function 'drm_gem_set_label':
drivers/gpu/drm/drm_gem.c:949:14: warning: unused variable '_pid' 
[-Wunused-variable]
949 |  struct pid *_pid = get_task_pid(current, PIDTYPE_PID);
|              ^~~~
drivers/gpu/drm/drm_gem.c: In function 'drm_gem_adopt_label':
>> drivers/gpu/drm/drm_gem.c:974:17: warning: assignment discards 'const' 
>> qualifier from pointer target type [-Wdiscarded-qualifiers]
974 |  gem_obj->label = label;
|                 ^
drivers/gpu/drm/drm_gem.c: In function 'drm_gem_get_label':
>> drivers/gpu/drm/drm_gem.c:992:15: warning: assignment to '__u64' {aka 'long 
>> long unsigned int'} from 'void *' makes integer from pointer without a cast 
>> [-Wint-conversion]
992 |   args->label = NULL;
|               ^
In file included from include/asm-generic/bug.h:19,
from arch/ia64/include/asm/bug.h:17,
from include/linux/bug.h:5,
from include/linux/mmdebug.h:5,
from include/linux/gfp.h:5,
from include/linux/slab.h:15,
from drivers/gpu/drm/drm_gem.c:29:
include/linux/kernel.h:842:29: warning: comparison of distinct pointer types 
lacks a cast
842 |   (!!(sizeof((typeof(x) *)1 == (typeof(y) *)1)))
|                             ^~
include/linux/kernel.h:856:4: note: in expansion of macro '__typecheck'
856 |   (__typecheck(x, y) && __no_side_effects(x, y))
|    ^~~~~~~~~~~
include/linux/kernel.h:866:24: note: in expansion of macro '__safe_cmp'
866 |  __builtin_choose_expr(__safe_cmp(x, y),          |                       
 ^~~~~~~~~~
include/linux/kernel.h:875:19: note: in expansion of macro '__careful_cmp'
875 | #define min(x, y) __careful_cmp(x, y, <)
|                   ^~~~~~~~~~~~~
>> drivers/gpu/drm/drm_gem.c:1000:7: note: in expansion of macro 'min'
1000 |       min(args->len, len));
|       ^~~
--
drivers/gpu/drm/drm_ioctl.c: In function 'drm_handle_set_label_ioctl':
drivers/gpu/drm/drm_ioctl.c:595:8: warning: unused variable 'label' 
[-Wunused-variable]
595 |  char *label;
|        ^~~~~
drivers/gpu/drm/drm_ioctl.c: In function 'drm_handle_get_label_ioctl':
>> drivers/gpu/drm/drm_ioctl.c:636:10: warning: returning 'char *' from a 
>> function with return type 'int' makes integer from pointer without a cast 
>> [-Wint-conversion]
636 |   return dev->driver->get_label(dev, file_priv, args);
|          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/gpu/drm/drm_ioctl.c:640:1: warning: control reaches end of non-void 
>> function [-Wreturn-type]
640 | }
| ^
drivers/gpu/drm/drm_ioctl.c: In function 'drm_handle_set_label_ioctl':
drivers/gpu/drm/drm_ioctl.c:609:1: warning: control reaches end of non-void 
function [-Wreturn-type]
609 | }
| ^
--
In file included from drivers/gpu/drm/mgag200/mgag200_drv.c:13:
>> include/drm/drm_drv.h:566:12: warning: 'struct drm_handle_label' declared 
>> inside parameter list will not be visible outside of this definition or 
>> declaration
566 |     struct drm_handle_label *args);
|            ^~~~~~~~~~~~~~~~
include/drm/drm_drv.h:581:14: warning: 'struct drm_handle_label' declared 
inside parameter list will not be visible outside of this definition or 
declaration
581 |       struct drm_handle_label *args);
|              ^~~~~~~~~~~~~~~~
drivers/gpu/drm/mgag200/mgag200_drv.c:119:5: warning: no previous prototype for 
'mgag200_driver_dumb_create' [-Wmissing-prototypes]
119 | int mgag200_driver_dumb_create(struct drm_file *file,
|     ^~~~~~~~~~~~~~~~~~~~~~~~~~

vim +566 include/drm/drm_drv.h

   152  
   153  /**
   154   * struct drm_driver - DRM driver structure
   155   *
   156   * This structure represent the common code for a family of cards. 
There will be
   157   * one &struct drm_device for each card present in this family. It 
contains lots
   158   * of vfunc entries, and a pile of those probably should be moved to 
more
   159   * appropriate places like &drm_mode_config_funcs or into a new 
operations
   160   * structure for GEM drivers.
   161   */
   162  struct drm_driver {
   163          /**
   164           * @load:
   165           *
   166           * Backward-compatible driver callback to complete
   167           * initialization steps after the driver is registered.  For
   168           * this reason, may suffer from race conditions and its use is
   169           * deprecated for new drivers.  It is therefore only supported
   170           * for existing drivers not yet converted to the new scheme.
   171           * See drm_dev_init() and drm_dev_register() for proper and
   172           * race-free way to set up a &struct drm_device.
   173           *
   174           * This is deprecated, do not use!
   175           *
   176           * Returns:
   177           *
   178           * Zero on success, non-zero value on failure.
   179           */
   180          int (*load) (struct drm_device *, unsigned long flags);
   181  
   182          /**
   183           * @open:
   184           *
   185           * Driver callback when a new &struct drm_file is opened. 
Useful for
   186           * setting up driver-private data structures like buffer 
allocators,
   187           * execution contexts or similar things. Such driver-private 
resources
   188           * must be released again in @postclose.
   189           *
   190           * Since the display/modeset side of DRM can only be owned by 
exactly
   191           * one &struct drm_file (see &drm_file.is_master and 
&drm_device.master)
   192           * there should never be a need to set up any modeset related 
resources
   193           * in this callback. Doing so would be a driver design bug.
   194           *
   195           * Returns:
   196           *
   197           * 0 on success, a negative error code on failure, which will be
   198           * promoted to userspace as the result of the open() system 
call.
   199           */
   200          int (*open) (struct drm_device *, struct drm_file *);
   201  
   202          /**
   203           * @postclose:
   204           *
   205           * One of the driver callbacks when a new &struct drm_file is 
closed.
   206           * Useful for tearing down driver-private data structures 
allocated in
   207           * @open like buffer allocators, execution contexts or similar 
things.
   208           *
   209           * Since the display/modeset side of DRM can only be owned by 
exactly
   210           * one &struct drm_file (see &drm_file.is_master and 
&drm_device.master)
   211           * there should never be a need to tear down any modeset related
   212           * resources in this callback. Doing so would be a driver 
design bug.
   213           */
   214          void (*postclose) (struct drm_device *, struct drm_file *);
   215  
   216          /**
   217           * @lastclose:
   218           *
   219           * Called when the last &struct drm_file has been closed and 
there's
   220           * currently no userspace client for the &struct drm_device.
   221           *
   222           * Modern drivers should only use this to force-restore the 
fbdev
   223           * framebuffer using 
drm_fb_helper_restore_fbdev_mode_unlocked().
   224           * Anything else would indicate there's something seriously 
wrong.
   225           * Modern drivers can also use this to execute delayed power 
switching
   226           * state changes, e.g. in conjunction with the 
:ref:`vga_switcheroo`
   227           * infrastructure.
   228           *
   229           * This is called after @postclose hook has been called.
   230           *
   231           * NOTE:
   232           *
   233           * All legacy drivers use this callback to de-initialize the 
hardware.
   234           * This is purely because of the shadow-attach model, where the 
DRM
   235           * kernel driver does not really own the hardware. Instead 
ownershipe is
   236           * handled with the help of userspace through an inheritedly 
racy dance
   237           * to set/unset the VT into raw mode.
   238           *
   239           * Legacy drivers initialize the hardware in the @firstopen 
callback,
   240           * which isn't even called for modern drivers.
   241           */
   242          void (*lastclose) (struct drm_device *);
   243  
   244          /**
   245           * @unload:
   246           *
   247           * Reverse the effects of the driver load callback.  Ideally,
   248           * the clean up performed by the driver should happen in the
   249           * reverse order of the initialization.  Similarly to the load
   250           * hook, this handler is deprecated and its usage should be
   251           * dropped in favor of an open-coded teardown function at the
   252           * driver layer.  See drm_dev_unregister() and drm_dev_put()
   253           * for the proper way to remove a &struct drm_device.
   254           *
   255           * The unload() hook is called right after unregistering
   256           * the device.
   257           *
   258           */
   259          void (*unload) (struct drm_device *);
   260  
   261          /**
   262           * @release:
   263           *
   264           * Optional callback for destroying device data after the final
   265           * reference is released, i.e. the device is being destroyed.
   266           *
   267           * This is deprecated, clean up all memory allocations 
associated with a
   268           * &drm_device using drmm_add_action(), drmm_kmalloc() and 
related
   269           * managed resources functions.
   270           */
   271          void (*release) (struct drm_device *);
   272  
   273          /**
   274           * @irq_handler:
   275           *
   276           * Interrupt handler called when using drm_irq_install(). Not 
used by
   277           * drivers which implement their own interrupt handling.
   278           */
   279          irqreturn_t(*irq_handler) (int irq, void *arg);
   280  
   281          /**
   282           * @irq_preinstall:
   283           *
   284           * Optional callback used by drm_irq_install() which is called 
before
   285           * the interrupt handler is registered. This should be used to 
clear out
   286           * any pending interrupts (from e.g. firmware based drives) and 
reset
   287           * the interrupt handling registers.
   288           */
   289          void (*irq_preinstall) (struct drm_device *dev);
   290  
   291          /**
   292           * @irq_postinstall:
   293           *
   294           * Optional callback used by drm_irq_install() which is called 
after
   295           * the interrupt handler is registered. This should be used to 
enable
   296           * interrupt generation in the hardware.
   297           */
   298          int (*irq_postinstall) (struct drm_device *dev);
   299  
   300          /**
   301           * @irq_uninstall:
   302           *
   303           * Optional callback used by drm_irq_uninstall() which is 
called before
   304           * the interrupt handler is unregistered. This should be used 
to disable
   305           * interrupt generation in the hardware.
   306           */
   307          void (*irq_uninstall) (struct drm_device *dev);
   308  
   309          /**
   310           * @master_set:
   311           *
   312           * Called whenever the minor master is set. Only used by vmwgfx.
   313           */
   314          int (*master_set)(struct drm_device *dev, struct drm_file 
*file_priv,
   315                            bool from_open);
   316          /**
   317           * @master_drop:
   318           *
   319           * Called whenever the minor master is dropped. Only used by 
vmwgfx.
   320           */
   321          void (*master_drop)(struct drm_device *dev, struct drm_file 
*file_priv);
   322  
   323          /**
   324           * @debugfs_init:
   325           *
   326           * Allows drivers to create driver-specific debugfs files.
   327           */
   328          void (*debugfs_init)(struct drm_minor *minor);
   329  
   330          /**
   331           * @gem_free_object: deconstructor for drm_gem_objects
   332           *
   333           * This is deprecated and should not be used by new drivers. Use
   334           * &drm_gem_object_funcs.free instead.
   335           */
   336          void (*gem_free_object) (struct drm_gem_object *obj);
   337  
   338          /**
   339           * @gem_free_object_unlocked: deconstructor for drm_gem_objects
   340           *
   341           * This is deprecated and should not be used by new drivers. Use
   342           * &drm_gem_object_funcs.free instead.
   343           * Compared to @gem_free_object this is not encumbered with
   344           * &drm_device.struct_mutex legacy locking schemes.
   345           */
   346          void (*gem_free_object_unlocked) (struct drm_gem_object *obj);
   347  
   348          /**
   349           * @gem_open_object:
   350           *
   351           * This callback is deprecated in favour of 
&drm_gem_object_funcs.open.
   352           *
   353           * Driver hook called upon gem handle creation
   354           */
   355          int (*gem_open_object) (struct drm_gem_object *, struct 
drm_file *);
   356  
   357          /**
   358           * @gem_close_object:
   359           *
   360           * This callback is deprecated in favour of 
&drm_gem_object_funcs.close.
   361           *
   362           * Driver hook called upon gem handle release
   363           */
   364          void (*gem_close_object) (struct drm_gem_object *, struct 
drm_file *);
   365  
   366          /**
   367           * @gem_print_info:
   368           *
   369           * This callback is deprecated in favour of
   370           * &drm_gem_object_funcs.print_info.
   371           *
   372           * If driver subclasses struct &drm_gem_object, it can 
implement this
   373           * optional hook for printing additional driver specific info.
   374           *
   375           * drm_printf_indent() should be used in the callback passing 
it the
   376           * indent argument.
   377           *
   378           * This callback is called from drm_gem_print_info().
   379           */
   380          void (*gem_print_info)(struct drm_printer *p, unsigned int 
indent,
   381                                 const struct drm_gem_object *obj);
   382  
   383          /**
   384           * @gem_create_object: constructor for gem objects
   385           *
   386           * Hook for allocating the GEM object struct, for use by the 
CMA and
   387           * SHMEM GEM helpers.
   388           */
   389          struct drm_gem_object *(*gem_create_object)(struct drm_device 
*dev,
   390                                                      size_t size);
   391          /**
   392           * @prime_handle_to_fd:
   393           *
   394           * Main PRIME export function. Should be implemented with
   395           * drm_gem_prime_handle_to_fd() for GEM based drivers.
   396           *
   397           * For an in-depth discussion see :ref:`PRIME buffer sharing
   398           * documentation <prime_buffer_sharing>`.
   399           */
   400          int (*prime_handle_to_fd)(struct drm_device *dev, struct 
drm_file *file_priv,
   401                                  uint32_t handle, uint32_t flags, int 
*prime_fd);
   402          /**
   403           * @prime_fd_to_handle:
   404           *
   405           * Main PRIME import function. Should be implemented with
   406           * drm_gem_prime_fd_to_handle() for GEM based drivers.
   407           *
   408           * For an in-depth discussion see :ref:`PRIME buffer sharing
   409           * documentation <prime_buffer_sharing>`.
   410           */
   411          int (*prime_fd_to_handle)(struct drm_device *dev, struct 
drm_file *file_priv,
   412                                  int prime_fd, uint32_t *handle);
   413          /**
   414           * @gem_prime_export:
   415           *
   416           * Export hook for GEM drivers. Deprecated in favour of
   417           * &drm_gem_object_funcs.export.
   418           */
   419          struct dma_buf * (*gem_prime_export)(struct drm_gem_object *obj,
   420                                               int flags);
   421          /**
   422           * @gem_prime_import:
   423           *
   424           * Import hook for GEM drivers.
   425           *
   426           * This defaults to drm_gem_prime_import() if not set.
   427           */
   428          struct drm_gem_object * (*gem_prime_import)(struct drm_device 
*dev,
   429                                  struct dma_buf *dma_buf);
   430  
   431          /**
   432           * @gem_prime_pin:
   433           *
   434           * Deprecated hook in favour of &drm_gem_object_funcs.pin.
   435           */
   436          int (*gem_prime_pin)(struct drm_gem_object *obj);
   437  
   438          /**
   439           * @gem_prime_unpin:
   440           *
   441           * Deprecated hook in favour of &drm_gem_object_funcs.unpin.
   442           */
   443          void (*gem_prime_unpin)(struct drm_gem_object *obj);
   444  
   445  
   446          /**
   447           * @gem_prime_get_sg_table:
   448           *
   449           * Deprecated hook in favour of 
&drm_gem_object_funcs.get_sg_table.
   450           */
   451          struct sg_table *(*gem_prime_get_sg_table)(struct 
drm_gem_object *obj);
   452  
   453          /**
   454           * @gem_prime_import_sg_table:
   455           *
   456           * Optional hook used by the PRIME helper functions
   457           * drm_gem_prime_import() respectively 
drm_gem_prime_import_dev().
   458           */
   459          struct drm_gem_object *(*gem_prime_import_sg_table)(
   460                                  struct drm_device *dev,
   461                                  struct dma_buf_attachment *attach,
   462                                  struct sg_table *sgt);
   463          /**
   464           * @gem_prime_vmap:
   465           *
   466           * Deprecated vmap hook for GEM drivers. Please use
   467           * &drm_gem_object_funcs.vmap instead.
   468           */
   469          void *(*gem_prime_vmap)(struct drm_gem_object *obj);
   470  
   471          /**
   472           * @gem_prime_vunmap:
   473           *
   474           * Deprecated vunmap hook for GEM drivers. Please use
   475           * &drm_gem_object_funcs.vunmap instead.
   476           */
   477          void (*gem_prime_vunmap)(struct drm_gem_object *obj, void 
*vaddr);
   478  
   479          /**
   480           * @gem_prime_mmap:
   481           *
   482           * mmap hook for GEM drivers, used to implement dma-buf mmap in 
the
   483           * PRIME helpers.
   484           *
   485           * FIXME: There's way too much duplication going on here, and 
also moved
   486           * to &drm_gem_object_funcs.
   487           */
   488          int (*gem_prime_mmap)(struct drm_gem_object *obj,
   489                                  struct vm_area_struct *vma);
   490  
   491          /**
   492           * @dumb_create:
   493           *
   494           * This creates a new dumb buffer in the driver's backing 
storage manager (GEM,
   495           * TTM or something else entirely) and returns the resulting 
buffer handle. This
   496           * handle can then be wrapped up into a framebuffer modeset 
object.
   497           *
   498           * Note that userspace is not allowed to use such objects for 
render
   499           * acceleration - drivers must create their own private ioctls 
for such a use
   500           * case.
   501           *
   502           * Width, height and depth are specified in the 
&drm_mode_create_dumb
   503           * argument. The callback needs to fill the handle, pitch and 
size for
   504           * the created buffer.
   505           *
   506           * Called by the user via ioctl.
   507           *
   508           * Returns:
   509           *
   510           * Zero on success, negative errno on failure.
   511           */
   512          int (*dumb_create)(struct drm_file *file_priv,
   513                             struct drm_device *dev,
   514                             struct drm_mode_create_dumb *args);
   515          /**
   516           * @dumb_map_offset:
   517           *
   518           * Allocate an offset in the drm device node's address space to 
be able to
   519           * memory map a dumb buffer.
   520           *
   521           * The default implementation is drm_gem_create_mmap_offset(). 
GEM based
   522           * drivers must not overwrite this.
   523           *
   524           * Called by the user via ioctl.
   525           *
   526           * Returns:
   527           *
   528           * Zero on success, negative errno on failure.
   529           */
   530          int (*dumb_map_offset)(struct drm_file *file_priv,
   531                                 struct drm_device *dev, uint32_t handle,
   532                                 uint64_t *offset);
   533          /**
   534           * @dumb_destroy:
   535           *
   536           * This destroys the userspace handle for the given dumb 
backing storage buffer.
   537           * Since buffer objects must be reference counted in the kernel 
a buffer object
   538           * won't be immediately freed if a framebuffer modeset object 
still uses it.
   539           *
   540           * Called by the user via ioctl.
   541           *
   542           * The default implementation is drm_gem_dumb_destroy(). GEM 
based drivers
   543           * must not overwrite this.
   544           *
   545           * Returns:
   546           *
   547           * Zero on success, negative errno on failure.
   548           */
   549          int (*dumb_destroy)(struct drm_file *file_priv,
   550                              struct drm_device *dev,
   551                              uint32_t handle);
   552  
   553          /**
   554           * @set_label:
   555           *
   556           * Label a buffer object
   557           *
   558           * Called by the user via ioctl.
   559           *
   560           * Returns:
   561           *
   562           * Length of label on success, negative errno on failure.
   563           */
   564          int (*set_label)(struct drm_device *dev,
   565                           struct drm_file *file_priv,
 > 566                           struct drm_handle_label *args);
   567  
   568          /**
   569           * @get_label:
   570           *
   571           * Read the label of a buffer object.
   572           *
   573           * Called by the user via ioctl.
   574           *
   575           * Returns:
   576           *
   577           * Length of label on success, negative errno on failiure.
   578           */
   579          char *(*get_label)(struct drm_device *dev,
   580                             struct drm_file *file_priv,
   581                             struct drm_handle_label *args);
   582  
   583          /**
   584           * @gem_vm_ops: Driver private ops for this object
   585           *
   586           * For GEM drivers this is deprecated in favour of
   587           * &drm_gem_object_funcs.vm_ops.
   588           */
   589          const struct vm_operations_struct *gem_vm_ops;
   590  
   591          /** @major: driver major number */
   592          int major;
   593          /** @minor: driver minor number */
   594          int minor;
   595          /** @patchlevel: driver patch level */
   596          int patchlevel;
   597          /** @name: driver name */
   598          char *name;
   599          /** @desc: driver description */
   600          char *desc;
   601          /** @date: driver date */
   602          char *date;
   603  
   604          /**
   605           * @driver_features:
   606           * Driver features, see &enum drm_driver_feature. Drivers can 
disable
   607           * some features on a per-instance basis using
   608           * &drm_device.driver_features.
   609           */
   610          u32 driver_features;
   611  
   612          /**
   613           * @ioctls:
   614           *
   615           * Array of driver-private IOCTL description entries. See the 
chapter on
   616           * :ref:`IOCTL support in the userland interfaces
   617           * chapter<drm_driver_ioctl>` for the full details.
   618           */
   619  
   620          const struct drm_ioctl_desc *ioctls;
   621          /** @num_ioctls: Number of entries in @ioctls. */
   622          int num_ioctls;
   623  
   624          /**
   625           * @fops:
   626           *
   627           * File operations for the DRM device node. See the discussion 
in
   628           * :ref:`file operations<drm_driver_fops>` for in-depth 
coverage and
   629           * some examples.
   630           */
   631          const struct file_operations *fops;
   632  
   633          /* Everything below here is for legacy driver, never use! */
   634          /* private: */
   635  
   636          /* List of devices hanging off this driver with stealth attach. 
*/
   637          struct list_head legacy_dev_list;
   638          int (*firstopen) (struct drm_device *);
   639          void (*preclose) (struct drm_device *, struct drm_file 
*file_priv);
   640          int (*dma_ioctl) (struct drm_device *dev, void *data, struct 
drm_file *file_priv);
   641          int (*dma_quiescent) (struct drm_device *);
   642          int (*context_dtor) (struct drm_device *dev, int context);
   643          u32 (*get_vblank_counter)(struct drm_device *dev, unsigned int 
pipe);
   644          int (*enable_vblank)(struct drm_device *dev, unsigned int pipe);
   645          void (*disable_vblank)(struct drm_device *dev, unsigned int 
pipe);
   646          int dev_priv_size;
   647  };
   648  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org

Attachment: .config.gz
Description: application/gzip

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to