[PATCH 3/3] drm/fb-helper: Use a per-driver FB deferred I/O handler

kernel test robot lkp at intel.com
Sat Jan 21 04:00:58 UTC 2023


Hi Javier,

I love your patch! Yet something to improve:

[auto build test ERROR on drm-misc/drm-misc-next]
[also build test ERROR on linus/master v6.2-rc4 next-20230120]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Javier-Martinez-Canillas/fbdev-Remove-unused-struct-fb_deferred_io-first_io-field/20230120-201143
base:   git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
patch link:    https://lore.kernel.org/r/20230120120822.2536032-4-javierm%40redhat.com
patch subject: [PATCH 3/3] drm/fb-helper: Use a per-driver FB deferred I/O handler
config: x86_64-defconfig (https://download.01.org/0day-ci/archive/20230121/202301211139.vzFLFznY-lkp@intel.com/config)
compiler: gcc-11 (Debian 11.3.0-8) 11.3.0
reproduce (this is a W=1 build):
        # https://github.com/intel-lab-lkp/linux/commit/21185713f8ccb3dc34c91fcecff9464c4a8790fa
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Javier-Martinez-Canillas/fbdev-Remove-unused-struct-fb_deferred_io-first_io-field/20230120-201143
        git checkout 21185713f8ccb3dc34c91fcecff9464c4a8790fa
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        make W=1 O=build_dir ARCH=x86_64 olddefconfig
        make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp at intel.com>

All errors (new ones prefixed by >>):

   In file included from drivers/gpu/drm/drm_modeset_helper.c:24:
>> include/drm/drm_fb_helper.h:215:31: error: field 'fbdefio' has incomplete type
     215 |         struct fb_deferred_io fbdefio;
         |                               ^~~~~~~


vim +/fbdefio +215 include/drm/drm_fb_helper.h

   103	
   104	/**
   105	 * struct drm_fb_helper - main structure to emulate fbdev on top of KMS
   106	 * @fb: Scanout framebuffer object
   107	 * @dev: DRM device
   108	 * @funcs: driver callbacks for fb helper
   109	 * @info: emulated fbdev device info struct
   110	 * @pseudo_palette: fake palette of 16 colors
   111	 * @damage_clip: clip rectangle used with deferred_io to accumulate damage to
   112	 *                the screen buffer
   113	 * @damage_lock: spinlock protecting @damage_clip
   114	 * @damage_work: worker used to flush the framebuffer
   115	 * @resume_work: worker used during resume if the console lock is already taken
   116	 *
   117	 * This is the main structure used by the fbdev helpers. Drivers supporting
   118	 * fbdev emulation should embedded this into their overall driver structure.
   119	 * Drivers must also fill out a &struct drm_fb_helper_funcs with a few
   120	 * operations.
   121	 */
   122	struct drm_fb_helper {
   123		/**
   124		 * @client:
   125		 *
   126		 * DRM client used by the generic fbdev emulation.
   127		 */
   128		struct drm_client_dev client;
   129	
   130		/**
   131		 * @buffer:
   132		 *
   133		 * Framebuffer used by the generic fbdev emulation.
   134		 */
   135		struct drm_client_buffer *buffer;
   136	
   137		struct drm_framebuffer *fb;
   138		struct drm_device *dev;
   139		const struct drm_fb_helper_funcs *funcs;
   140		struct fb_info *info;
   141		u32 pseudo_palette[17];
   142		struct drm_clip_rect damage_clip;
   143		spinlock_t damage_lock;
   144		struct work_struct damage_work;
   145		struct work_struct resume_work;
   146	
   147		/**
   148		 * @lock:
   149		 *
   150		 * Top-level FBDEV helper lock. This protects all internal data
   151		 * structures and lists, such as @connector_info and @crtc_info.
   152		 *
   153		 * FIXME: fbdev emulation locking is a mess and long term we want to
   154		 * protect all helper internal state with this lock as well as reduce
   155		 * core KMS locking as much as possible.
   156		 */
   157		struct mutex lock;
   158	
   159		/**
   160		 * @kernel_fb_list:
   161		 *
   162		 * Entry on the global kernel_fb_helper_list, used for kgdb entry/exit.
   163		 */
   164		struct list_head kernel_fb_list;
   165	
   166		/**
   167		 * @delayed_hotplug:
   168		 *
   169		 * A hotplug was received while fbdev wasn't in control of the DRM
   170		 * device, i.e. another KMS master was active. The output configuration
   171		 * needs to be reprobe when fbdev is in control again.
   172		 */
   173		bool delayed_hotplug;
   174	
   175		/**
   176		 * @deferred_setup:
   177		 *
   178		 * If no outputs are connected (disconnected or unknown) the FB helper
   179		 * code will defer setup until at least one of the outputs shows up.
   180		 * This field keeps track of the status so that setup can be retried
   181		 * at every hotplug event until it succeeds eventually.
   182		 *
   183		 * Protected by @lock.
   184		 */
   185		bool deferred_setup;
   186	
   187		/**
   188		 * @preferred_bpp:
   189		 *
   190		 * Temporary storage for the driver's preferred BPP setting passed to
   191		 * FB helper initialization. This needs to be tracked so that deferred
   192		 * FB helper setup can pass this on.
   193		 *
   194		 * See also: @deferred_setup
   195		 */
   196		int preferred_bpp;
   197	
   198		/**
   199		 * @hint_leak_smem_start:
   200		 *
   201		 * Hint to the fbdev emulation to store the framebuffer's physical
   202		 * address in struct &fb_info.fix.smem_start. If the hint is unset,
   203		 * the smem_start field should always be cleared to zero.
   204		 */
   205		bool hint_leak_smem_start;
   206	
   207		/**
   208		 * @fbdefio:
   209		 *
   210		 * Temporary storage for the driver's FB deferred I/O handler. If the
   211		 * driver uses the DRM fbdev emulation layer, this is set by the core
   212		 * to a generic deferred I/O handler if a driver is preferring to use
   213		 * a shadow buffer.
   214		 */
 > 215		struct fb_deferred_io fbdefio;
   216	};
   217	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests


More information about the dri-devel mailing list