All of lore.kernel.org
 help / color / mirror / Atom feed
* [lkundrak-linux-mmp:lr/ariel 39/63] drivers/gpu/drm/gud/gud_drm_drv.c:377:2: error: implicit declaration of function 'vfree'; did you mean
@ 2020-11-03  4:05 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2020-11-03  4:05 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 10319 bytes --]

tree:   git://git.kernel.org/pub/scm/linux/kernel/git/lkundrak/linux-mmp.git lr/ariel
head:   c67f776180ecc84ec8dde09168f8f33fe3e1dced
commit: 4ad4e187310b5709dceeff9af546256219905f74 [39/63] drm: Add Generic USB Display driver
config: alpha-allmodconfig (attached as .config)
compiler: alpha-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
        # https://git.kernel.org/pub/scm/linux/kernel/git/lkundrak/linux-mmp.git/commit/?id=4ad4e187310b5709dceeff9af546256219905f74
        git remote add lkundrak-linux-mmp git://git.kernel.org/pub/scm/linux/kernel/git/lkundrak/linux-mmp.git
        git fetch --no-tags lkundrak-linux-mmp lr/ariel
        git checkout 4ad4e187310b5709dceeff9af546256219905f74
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=alpha 

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

All errors (new ones prefixed by >>):

   drivers/gpu/drm/gud/gud_drm_drv.c: In function 'gud_drm_free_buffers_and_mutex':
>> drivers/gpu/drm/gud/gud_drm_drv.c:377:2: error: implicit declaration of function 'vfree'; did you mean 'kfree'? [-Werror=implicit-function-declaration]
     377 |  vfree(gdrm->compress_buf);
         |  ^~~~~
         |  kfree
   drivers/gpu/drm/gud/gud_drm_drv.c: In function 'gud_drm_probe':
>> drivers/gpu/drm/gud/gud_drm_drv.c:489:24: error: implicit declaration of function 'vmalloc'; did you mean 'kmalloc'? [-Werror=implicit-function-declaration]
     489 |   gdrm->compress_buf = vmalloc(gdrm->bulk_len);
         |                        ^~~~~~~
         |                        kmalloc
   drivers/gpu/drm/gud/gud_drm_drv.c:489:22: warning: assignment to 'void *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
     489 |   gdrm->compress_buf = vmalloc(gdrm->bulk_len);
         |                      ^
   cc1: some warnings being treated as errors

vim +377 drivers/gpu/drm/gud/gud_drm_drv.c

   369	
   370	static void gud_drm_free_buffers_and_mutex(void *data)
   371	{
   372		struct gud_drm_device *gdrm = data;
   373	
   374		/* Access to these are protected by drm_dev_enter/exit */
   375	
   376		kfree(gdrm->properties);
 > 377		vfree(gdrm->compress_buf);
   378		kfree(gdrm->bulk_buf);
   379		kfree(gdrm->ctrl_msg_buf);
   380		gdrm->properties = NULL;
   381		gdrm->compress_buf = NULL;
   382		gdrm->bulk_buf = NULL;
   383		gdrm->ctrl_msg_buf = NULL;
   384	
   385		mutex_destroy(&gdrm->ctrl_lock);
   386		mutex_destroy(&gdrm->damage_lock);
   387	}
   388	
   389	static int gud_drm_probe(struct usb_interface *interface,
   390				 const struct usb_device_id *id)
   391	{
   392		u8 ifnum = interface->cur_altsetting->desc.bInterfaceNumber;
   393		struct usb_device *usb = interface_to_usbdev(interface);
   394		struct device *dev = &interface->dev;
   395		const struct drm_format_info *xrgb8888_emulation_format = NULL;
   396		u32 *formats, *formats_dev, num_connectors, num_formats = 0;
   397		bool rgb565_supported = false, rgb8888_supported = false;
   398		struct usb_endpoint_descriptor *bulk_out;
   399		struct gud_drm_display_descriptor desc;
   400		struct gud_drm_device *gdrm;
   401		struct drm_device *drm;
   402		size_t max_buffer_size;
   403		int ret, i;
   404	
   405		ret = usb_find_bulk_out_endpoint(interface->cur_altsetting, &bulk_out);
   406		if (ret)
   407			return ret;
   408	
   409		ret = gud_get_vendor_descriptor(interface, &desc);
   410		if (ret) {
   411			DRM_DEV_DEBUG_DRIVER(dev, "Not a display interface: ret=%d\n", ret);
   412			return -ENODEV;
   413		}
   414	
   415		if (desc.bVersion > 1) {
   416			u8 *version = kmalloc(sizeof(*version), GFP_KERNEL);
   417	
   418			if (!version)
   419				return -ENOMEM;
   420	
   421			/* Check if the device can support us */
   422			*version = 1;
   423			ret = gud_drm_usb_control_msg(usb, ifnum, false, GUD_DRM_USB_REQ_SET_VERSION,
   424						      0, version, sizeof(*version), true);
   425			if (!ret)
   426				ret = gud_usb_get_status(usb, ifnum);
   427			kfree(version);
   428			if (ret) {
   429				dev_err(dev, "Protocol version %u is not supported\n", desc.bVersion);
   430				return -EPROTONOSUPPORT;
   431			}
   432	
   433			desc.bVersion = 1;
   434		}
   435	
   436		num_connectors = desc.bNumConnectors;
   437		max_buffer_size = 1 << desc.bMaxBufferSizeOrder;
   438	
   439		gdrm = devm_drm_dev_alloc(dev, &gud_drm_driver, struct gud_drm_device, drm);
   440		if (IS_ERR(gdrm))
   441			return PTR_ERR(gdrm);
   442	
   443		drm = &gdrm->drm;
   444		drm->mode_config.funcs = &gud_drm_mode_config_funcs;
   445		ret = drmm_mode_config_init(drm);
   446		if (ret)
   447			return ret;
   448	
   449		gdrm->usb = usb;
   450		gdrm->ifnum = ifnum;
   451		gdrm->compression = desc.bCompression & GUD_DRM_COMPRESSION_LZ4;
   452	
   453		mutex_init(&gdrm->ctrl_lock);
   454		mutex_init(&gdrm->damage_lock);
   455		INIT_WORK(&gdrm->work, gud_drm_work);
   456		gud_drm_clear_damage(gdrm);
   457	
   458		/*
   459		 * devm_kmalloc() places struct devres at the beginning of the buffer it
   460		 * allocates. This can waste a lot of memory when allocating
   461		 * power-of-two sized buffers. Asking for 4k would actually allocate 8k.
   462		 */
   463	
   464		ret = devm_add_action_or_reset(dev, gud_drm_free_buffers_and_mutex, gdrm);
   465		if (ret)
   466			return ret;
   467	
   468		gdrm->ctrl_msg_buf = kmalloc(GUD_DRM_MAX_TRANSFER_SIZE, GFP_KERNEL);
   469		if (!gdrm->ctrl_msg_buf)
   470			return -ENOMEM;
   471	retry:
   472		gdrm->bulk_buf = kmalloc(max_buffer_size, GFP_KERNEL);
   473		if (!gdrm->bulk_buf) {
   474			max_buffer_size /= 2;
   475			if (max_buffer_size < SZ_2M) { /* Give up if we can't do 1024x768 RGB565 */
   476				return -ENOMEM;
   477			}
   478			goto retry;
   479		}
   480	
   481		gdrm->bulk_pipe = usb_sndbulkpipe(gdrm->usb, usb_endpoint_num(bulk_out));
   482		gdrm->bulk_len = max_buffer_size;
   483	
   484		if (gdrm->compression & GUD_DRM_COMPRESSION_LZ4) {
   485			gdrm->lz4_comp_mem = devm_kmalloc(dev, LZ4_MEM_COMPRESS, GFP_KERNEL);
   486			if (!gdrm->lz4_comp_mem)
   487				return -ENOMEM;
   488	
 > 489			gdrm->compress_buf = vmalloc(gdrm->bulk_len);
   490			if (!gdrm->compress_buf)
   491				return -ENOMEM;
   492		}
   493	
   494		drm->mode_config.min_width = le32_to_cpu(desc.dwMinWidth);
   495		drm->mode_config.max_width = le32_to_cpu(desc.dwMaxWidth);
   496		drm->mode_config.min_height = le32_to_cpu(desc.dwMinHeight);
   497		drm->mode_config.max_height = le32_to_cpu(desc.dwMaxHeight);
   498	
   499		formats_dev = devm_kmalloc_array(dev, desc.bNumFormats, sizeof(u32), GFP_KERNEL);
   500		/* Add room for emulated XRGB8888 */
   501		formats = devm_kmalloc_array(dev, desc.bNumFormats + 1, sizeof(u32), GFP_KERNEL);
   502		if (!formats_dev || !formats)
   503			return -ENOMEM;
   504	
   505		ret = gud_drm_usb_read32(gdrm, GUD_DRM_USB_REQ_GET_FORMATS, formats_dev, desc.bNumFormats);
   506		if (ret)
   507			return ret;
   508	
   509		for (i = 0; i < desc.bNumFormats; i++) {
   510			const struct drm_format_info *fmt_info;
   511			u32 format = formats_dev[i];
   512	
   513			if (format == GUD_DRM_FORMAT_R1) {
   514				fmt_info = &gud_drm_format_r1;
   515			} else {
   516				/* This will trigger a WARN for unknown formats... */
   517				fmt_info = drm_format_info(format);
   518				if (!fmt_info) {
   519					drm_dbg(drm, "Unknown format: 0x%x\n", format);
   520					continue;
   521				}
   522			}
   523	
   524			switch (format) {
   525			case DRM_FORMAT_XRGB8888:
   526				fallthrough;
   527			case DRM_FORMAT_ARGB8888:
   528				rgb8888_supported = true;
   529				break;
   530			case DRM_FORMAT_RGB888:
   531				fallthrough;
   532			case DRM_FORMAT_BGR888:
   533				drm_dbg(drm, "24-bit formats are not supported.\n");
   534				continue;
   535			case DRM_FORMAT_RGB565:
   536				rgb565_supported = true;
   537				if (!xrgb8888_emulation_format)
   538					xrgb8888_emulation_format = fmt_info;
   539				break;
   540			case GUD_DRM_FORMAT_R1:
   541				if (!xrgb8888_emulation_format)
   542					xrgb8888_emulation_format = fmt_info;
   543				/* Internal, not for userspace */
   544				continue;
   545			}
   546	
   547			formats[num_formats++] = format;
   548		}
   549	
   550		if (!num_formats && !xrgb8888_emulation_format) {
   551			dev_err(dev, "No supported formats found\n");
   552			return -ENOENT;
   553		}
   554	
   555		/* Prefer speed over color depth */
   556		if (rgb565_supported)
   557			drm->mode_config.preferred_depth = 16;
   558	
   559		if (!rgb8888_supported && xrgb8888_emulation_format) {
   560			gdrm->xrgb8888_emulation_format = xrgb8888_emulation_format;
   561			formats[num_formats++] = DRM_FORMAT_XRGB8888;
   562		}
   563	
   564		ret = drm_simple_display_pipe_init(drm, &gdrm->pipe, &gud_drm_pipe_funcs,
   565						   formats, num_formats,
   566						   gud_drm_pipe_modifiers, NULL);
   567		if (ret)
   568			return ret;
   569	
   570		devm_kfree(dev, formats);
   571		devm_kfree(dev, formats_dev);
   572	
   573		ret = gud_drm_get_properties(gdrm, desc.bNumProperties);
   574		if (ret)
   575			return ret;
   576	
   577		drm_plane_enable_fb_damage_clips(&gdrm->pipe.plane);
   578	
   579		for (i = 0; i < num_connectors; i++) {
   580			ret = gud_drm_connector_create(gdrm, i);
   581			if (ret)
   582				return ret;
   583		}
   584	
   585		drm_mode_config_reset(drm);
   586	
   587		usb_set_intfdata(interface, gdrm);
   588	
   589		ret = drm_dev_register(drm, 0);
   590		if (ret)
   591			return ret;
   592	
   593		drm_kms_helper_poll_init(drm);
   594	
   595		drm_fbdev_generic_setup(drm, 0);
   596	
   597		return 0;
   598	}
   599	

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

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 66549 bytes --]

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2020-11-03  4:05 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-03  4:05 [lkundrak-linux-mmp:lr/ariel 39/63] drivers/gpu/drm/gud/gud_drm_drv.c:377:2: error: implicit declaration of function 'vfree'; did you mean kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.