Hi Jean-Jacques,

I love your patch! Yet something to improve:

[auto build test ERROR on linus/master]
[cannot apply to v5.4-rc2 next-20191010]
[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/Jean-Jacques-Hiblot/drm-omap-OMAP_BO-flags/20191011-134859
config: arm-allmodconfig (attached as .config)
compiler: arm-linux-gnueabi-gcc (GCC) 7.4.0
reproduce:
        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
        GCC_VERSION=7.4.0 make.cross ARCH=arm 

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

All errors (new ones prefixed by >>):

   drivers/gpu/drm/omapdrm/omap_gem.c: In function 'omap_gem_new':
>> drivers/gpu/drm/omapdrm/omap_gem.c:1310:3: error: implicit declaration of 
>> function 'dma_free_writecombine'; did you mean 'pgprot_writecombine'? 
>> [-Werror=implicit-function-declaration]
      dma_free_writecombine(dev->dev, size,
      ^~~~~~~~~~~~~~~~~~~~~
      pgprot_writecombine
   cc1: some warnings being treated as errors

vim +1310 drivers/gpu/drm/omapdrm/omap_gem.c

  1179  
  1180  /**
  1181   * omap_gem_new() - Create a new GEM buffer
  1182   * @dev: The DRM device
  1183   * @gsize: The requested size for the GEM buffer. If the buffer is tiled
  1184   *         (2D buffer), the size is a pair of values: height and width
  1185   *         expressed in pixels. If the buffers is not tiled, it is 
expressed
  1186   *         in bytes.
  1187   * @flags: Flags give additionnal information about the allocation:
  1188   *         OMAP_BO_TILED_x: use the TILER (2D buffers). The TILER 
container
  1189   *              unit can be 8, 16 or 32 bits. Cache is always disabled 
for
  1190   *              tiled buffers.
  1191   *         OMAP_BO_SCANOUT: Scannout buffer, consummable by the DSS
  1192   *         OMAP_BO_CACHED: Buffer CPU caching mode: cached
  1193   *         OMAP_BO_WC: Buffer CPU caching mode: write-combined
  1194   *         OMAP_BO_UNCACHED: Buffer CPU caching mode: uncached
  1195   *         OMAP_BO_MEM_CONTIG: The driver will use dma_alloc to get the 
memory.
  1196   *              This can be used to avoid DMM if the userspace knows it 
needs
  1197   *              more than 128M of memory at the same time.
  1198   *         OMAP_BO_MEM_DMM: The driver will use DMM to get the memory. 
There's
  1199   *              not much use for this flag at the moment, as on 
platforms with
  1200   *              DMM it is used by default, but it's here for 
completeness.
  1201   *         OMAP_BO_MEM_PIN: The driver will pin the memory at alloc 
time, and
  1202   *              keep it pinned. This can be used to 1) get an error at 
alloc
  1203   *              time if DMM space is full, and 2) get rid of the 
constant
  1204   *              pin/unpin operations which may have some effect on 
performance.
  1205   *
  1206   * Return: The GEM buffer or NULL if the allocation failed
  1207   */
  1208  struct drm_gem_object *omap_gem_new(struct drm_device *dev,
  1209                  union omap_gem_size gsize, u32 flags)
  1210  {
  1211          struct omap_drm_private *priv = dev->dev_private;
  1212          struct omap_gem_object *omap_obj;
  1213          struct drm_gem_object *obj;
  1214          struct address_space *mapping;
  1215          size_t size;
  1216          int ret;
  1217  
  1218          if (!omap_gem_validate_flags(dev, flags))
  1219                  return NULL;
  1220  
  1221          /* Validate the flags and compute the memory and cache flags. */
  1222          if (flags & OMAP_BO_TILED_MASK) {
  1223                  /*
  1224                   * Tiled buffers are always shmem paged backed. When 
they are
  1225                   * scanned out, they are remapped into DMM/TILER.
  1226                   */
  1227                  flags |= OMAP_BO_MEM_SHMEM;
  1228  
  1229                  /*
  1230                   * Currently don't allow cached buffers. There is some 
caching
  1231                   * stuff that needs to be handled better.
  1232                   */
  1233                  flags &= ~(OMAP_BO_CACHED|OMAP_BO_WC|OMAP_BO_UNCACHED);
  1234                  flags |= tiler_get_cpu_cache_flags();
  1235          } else if ((flags & OMAP_BO_MEM_CONTIG) ||
  1236                  ((flags & OMAP_BO_SCANOUT) && !priv->has_dmm)) {
  1237                  /*
  1238                   * If we don't have DMM, we must allocate scanout 
buffers
  1239                   * from contiguous DMA memory.
  1240                   */
  1241                  flags |= OMAP_BO_MEM_DMA_API;
  1242          } else if (!(flags & OMAP_BO_MEM_DMABUF)) {
  1243                  /*
  1244                   * All other buffers not backed by dma_buf are 
shmem-backed.
  1245                   */
  1246                  flags |= OMAP_BO_MEM_SHMEM;
  1247          }
  1248  
  1249          /* Allocate the initialize the OMAP GEM object. */
  1250          omap_obj = kzalloc(sizeof(*omap_obj), GFP_KERNEL);
  1251          if (!omap_obj)
  1252                  return NULL;
  1253  
  1254          obj = &omap_obj->base;
  1255          omap_obj->flags = flags;
  1256          mutex_init(&omap_obj->lock);
  1257  
  1258          if (flags & OMAP_BO_TILED_MASK) {
  1259                  /*
  1260                   * For tiled buffers align dimensions to slot 
boundaries and
  1261                   * calculate size based on aligned dimensions.
  1262                   */
  1263                  tiler_align(gem2fmt(flags), &gsize.tiled.width,
  1264                              &gsize.tiled.height);
  1265  
  1266                  size = tiler_size(gem2fmt(flags), gsize.tiled.width,
  1267                                    gsize.tiled.height);
  1268  
  1269                  omap_obj->width = gsize.tiled.width;
  1270                  omap_obj->height = gsize.tiled.height;
  1271          } else {
  1272                  size = PAGE_ALIGN(gsize.bytes);
  1273          }
  1274  
  1275          /* Initialize the GEM object. */
  1276          if (!(flags & OMAP_BO_MEM_SHMEM)) {
  1277                  drm_gem_private_object_init(dev, obj, size);
  1278          } else {
  1279                  ret = drm_gem_object_init(dev, obj, size);
  1280                  if (ret)
  1281                          goto err_free;
  1282  
  1283                  mapping = obj->filp->f_mapping;
  1284                  mapping_set_gfp_mask(mapping, GFP_USER | __GFP_DMA32);
  1285          }
  1286  
  1287          /* Allocate memory if needed. */
  1288          if (flags & OMAP_BO_MEM_DMA_API) {
  1289                  omap_obj->vaddr = dma_alloc_wc(dev->dev, size,
  1290                                                 &omap_obj->dma_addr,
  1291                                                 GFP_KERNEL);
  1292                  if (!omap_obj->vaddr)
  1293                          goto err_release;
  1294          }
  1295  
  1296          if (flags & OMAP_BO_MEM_PIN) {
  1297                  ret = omap_gem_pin(obj, NULL);
  1298                  if (ret)
  1299                          goto err_free_dma;
  1300          }
  1301  
  1302          mutex_lock(&priv->list_lock);
  1303          list_add(&omap_obj->mm_list, &priv->obj_list);
  1304          mutex_unlock(&priv->list_lock);
  1305  
  1306          return obj;
  1307  
  1308  err_free_dma:
  1309          if (flags & OMAP_BO_MEM_DMA_API)
> 1310                  dma_free_writecombine(dev->dev, size,
  1311                                  omap_obj->vaddr, omap_obj->dma_addr);
  1312  err_release:
  1313          drm_gem_object_release(obj);
  1314  err_free:
  1315          kfree(omap_obj);
  1316          return NULL;
  1317  }
  1318  

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

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