lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <202507261818.EFdmyMEX-lkp@intel.com>
Date: Sat, 26 Jul 2025 18:26:16 +0800
From: kernel test robot <lkp@...el.com>
To: samiksha.palav27@...il.com, gregkh@...uxfoundation.org
Cc: oe-kbuild-all@...ts.linux.dev, linux-staging@...ts.linux.dev,
	linux-kernel@...r.kernel.org, shdwcodr <samiksha.palav27@...il.com>
Subject: Re: [PATCH] staging: sm750fb: Add hardware acceleration for 16bpp
 imageblit

Hi,

kernel test robot noticed the following build errors:

[auto build test ERROR on staging/staging-linus]
[also build test ERROR on linus/master v6.16-rc7]
[cannot apply to staging/staging-testing staging/staging-next next-20250725]
[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/samiksha-palav27-gmail-com/staging-sm750fb-Add-hardware-acceleration-for-16bpp-imageblit/20250724-185607
base:   staging/staging-linus
patch link:    https://lore.kernel.org/r/20250724105254.3926-2-samiksha.palav27%40gmail.com
patch subject: [PATCH] staging: sm750fb: Add hardware acceleration for 16bpp imageblit
config: sparc64-randconfig-001-20250725 (https://download.01.org/0day-ci/archive/20250726/202507261818.EFdmyMEX-lkp@intel.com/config)
compiler: sparc64-linux-gcc (GCC) 8.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250726/202507261818.EFdmyMEX-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@...el.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202507261818.EFdmyMEX-lkp@intel.com/

All error/warnings (new ones prefixed by >>):

   drivers/staging/sm750fb/sm750.c: In function 'lynxfb_ops_imageblit':
>> drivers/staging/sm750fb/sm750.c:252:14: error: invalid storage class for function 'write_pixel'
     static void write_pixel(struct fb_info *info, int x, int y, u32 color)
                 ^~~~~~~~~~~
   At top level:
>> drivers/staging/sm750fb/sm750.c:270:7: warning: 'sm750fb_imageblit' defined but not used [-Wunused-function]
     void sm750fb_imageblit(struct fb_info *info, const struct fb_image *image)
          ^~~~~~~~~~~~~~~~~


vim +/write_pixel +252 drivers/staging/sm750fb/sm750.c

   233	
   234	static void lynxfb_ops_imageblit(struct fb_info *info,
   235					 const struct fb_image *image)
   236	{
   237		unsigned int base, pitch, Bpp;
   238		unsigned int fgcol, bgcol;
   239		struct lynxfb_par *par;
   240		struct sm750_dev *sm750_dev;
   241	
   242		par = info->par;
   243		sm750_dev = par->dev;
   244		/*
   245		 * each time 2d function begin to work,below three variable always need
   246		 * be set, seems we can put them together in some place
   247		 */
   248		base = par->crtc.o_screen;
   249		pitch = info->fix.line_length;
   250		Bpp = info->var.bits_per_pixel >> 3;
   251	
 > 252		static void write_pixel(struct fb_info *info, int x, int y, u32 color)
   253	
   254		{
   255			u32 location;
   256			u8 *fb_ptr = (u8 *)info->screen_base;
   257	
   258			location = (y * info->fix.line_length) + (x * (info->var.bits_per_pixel / 8));
   259	
   260			if (info->var.bits_per_pixel == 16) {
   261				u16 c = ((color >> 8) & 0xF800) |
   262					((color >> 5) & 0x07E0) |
   263					((color >> 3) & 0x001F); // Convert 24-bit RGB to RGB565
   264				*((u16 *)(fb_ptr + location)) = c;
   265			} else if (info->var.bits_per_pixel == 32) {
   266				*((u32 *)(fb_ptr + location)) = color;
   267			}
   268		}
   269	
 > 270		void sm750fb_imageblit(struct fb_info *info, const struct fb_image *image)
   271	
   272		{
   273			/*
   274			 * TODO: Add hardware-accelerated support for more image depths
   275			 * Currently only 16-bit (RGB565) images are handled in fast path.
   276			 */
   277			if (image->depth != 16) {
   278				cfb_imageblit(info, image);
   279				return;
   280			}
   281	
   282			/* Accelerated rendering for 16-bit (RGB565) images */
   283			const u16 *src = (const u16 *)image->data;
   284	
   285			u32 fg_color = ((image->fg_color & 0xF800) << 8) |
   286				       ((image->fg_color & 0x07E0) << 5) |
   287				       ((image->fg_color & 0x001F) << 3); // RGB565 → RGB888
   288	
   289			for (int j = 0; j < image->height; j++) {
   290				for (int i = 0; i < image->width; i++) {
   291					u16 pixel = src[j * image->width + i];
   292	
   293					if (pixel) // Draw only non-zero (foreground) pixels
   294						write_pixel(info, image->dx + i, image->dy + j, fg_color);
   295				}
   296			}
   297		}
   298	
   299		if (info->fix.visual == FB_VISUAL_TRUECOLOR ||
   300		    info->fix.visual == FB_VISUAL_DIRECTCOLOR) {
   301			fgcol = ((u32 *)info->pseudo_palette)[image->fg_color];
   302			bgcol = ((u32 *)info->pseudo_palette)[image->bg_color];
   303		} else {
   304			fgcol = image->fg_color;
   305			bgcol = image->bg_color;
   306		}
   307	
   308		/*
   309		 * If not use spin_lock, system will die if user load driver
   310		 * and immediately unload driver frequently (dual)
   311		 * since they fb_count could change during the lifetime of
   312		 * this lock, we are holding it for all cases.
   313		 */
   314		spin_lock(&sm750_dev->slock);
   315	
   316		sm750_dev->accel.de_imageblit(&sm750_dev->accel,
   317					      image->data, image->width >> 3, 0,
   318					      base, pitch, Bpp,
   319					      image->dx, image->dy,
   320					      image->width, image->height,
   321					      fgcol, bgcol, HW_ROP2_COPY);
   322		spin_unlock(&sm750_dev->slock);
   323	}
   324	

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

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ