Re: [PATCH v10 2/3] fpga: microchip-spi: add Microchip MPF FPGA manager

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Ivan,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on next-20220506]
[cannot apply to robh/for-next linus/master v5.18-rc5 v5.18-rc4 v5.18-rc3 v5.18-rc5]
[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]

url:    https://github.com/intel-lab-lkp/linux/commits/Ivan-Bornyakov/Microchip-Polarfire-FPGA-manager/20220506-212355
base:    38a288f5941ef03752887ad86f2d85442358c99a
config: m68k-allmodconfig (https://download.01.org/0day-ci/archive/20220507/202205070006.tWQ4lFSL-lkp@xxxxxxxxx/config)
compiler: m68k-linux-gcc (GCC) 11.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://github.com/intel-lab-lkp/linux/commit/9c87e90e1315e8a6028064516aef34a05f3f9625
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Ivan-Bornyakov/Microchip-Polarfire-FPGA-manager/20220506-212355
        git checkout 9c87e90e1315e8a6028064516aef34a05f3f9625
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.3.0 make.cross W=1 O=build_dir ARCH=m68k SHELL=/bin/bash drivers/fpga/

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

All errors (new ones prefixed by >>):

   drivers/fpga/microchip-spi.c: In function 'mpf_ops_parse_header':
>> drivers/fpga/microchip-spi.c:118:31: error: implicit declaration of function 'get_unaligned_le32' [-Werror=implicit-function-declaration]
     118 |                 block_start = get_unaligned_le32(buf + block_start_offset);
         |                               ^~~~~~~~~~~~~~~~~~
>> drivers/fpga/microchip-spi.c:152:26: error: implicit declaration of function 'get_unaligned_le16' [-Werror=implicit-function-declaration]
     152 |         components_num = get_unaligned_le16(buf + MPF_DATA_SIZE_OFFSET);
         |                          ^~~~~~~~~~~~~~~~~~
   cc1: some warnings being treated as errors


vim +/get_unaligned_le32 +118 drivers/fpga/microchip-spi.c

    79	
    80	static int mpf_ops_parse_header(struct fpga_manager *mgr,
    81					struct fpga_image_info *info,
    82					const char *buf, size_t count)
    83	{
    84		size_t component_size_byte_num, component_size_byte_off,
    85		       components_size_start = 0, bitstream_start = 0,
    86		       block_id_offset, block_start_offset, i;
    87		u8 header_size, blocks_num, block_id;
    88		u32 block_start, component_size;
    89		u16 components_num;
    90	
    91		if (!buf) {
    92			dev_err(&mgr->dev, "Image buffer is not provided\n");
    93			return -EINVAL;
    94		}
    95	
    96		header_size = *(buf + MPF_HEADER_SIZE_OFFSET);
    97		if (header_size > count) {
    98			info->header_size = header_size;
    99			return -EAGAIN;
   100		}
   101	
   102		/*
   103		 * Go through look-up table to find out where actual bitstream starts
   104		 * and where sizes of components of the bitstream lies.
   105		 */
   106		blocks_num = *(buf + header_size - 1);
   107		block_id_offset = header_size + MPF_LOOKUP_TABLE_BLOCK_ID_OFFSET;
   108		block_start_offset = header_size + MPF_LOOKUP_TABLE_BLOCK_START_OFFSET;
   109	
   110		header_size += blocks_num * MPF_LOOKUP_TABLE_RECORD_SIZE;
   111		if (header_size > count) {
   112			info->header_size = header_size;
   113			return -EAGAIN;
   114		}
   115	
   116		while (blocks_num--) {
   117			block_id = *(buf + block_id_offset);
 > 118			block_start = get_unaligned_le32(buf + block_start_offset);
   119	
   120			switch (block_id) {
   121			case MPF_BITSTREAM_ID:
   122				info->header_size = bitstream_start = block_start;
   123				if (block_start > count)
   124					return -EAGAIN;
   125	
   126				break;
   127			case MPF_COMPONENTS_SIZE_ID:
   128				components_size_start = block_start;
   129				break;
   130			default:
   131				break;
   132			}
   133	
   134			if (bitstream_start && components_size_start)
   135				break;
   136	
   137			block_id_offset += MPF_LOOKUP_TABLE_RECORD_SIZE;
   138			block_start_offset += MPF_LOOKUP_TABLE_RECORD_SIZE;
   139		}
   140	
   141		if (!bitstream_start || !components_size_start) {
   142			dev_err(&mgr->dev, "Failed to parse header look-up table\n");
   143			return -EFAULT;
   144		}
   145	
   146		/*
   147		 * Parse bitstream size.
   148		 * Sizes of components of the bitstream are 22-bits long placed next
   149		 * to each other. Image header should be extended by now up to where
   150		 * actual bitstream starts, so no need for overflow check anymore.
   151		 */
 > 152		components_num = get_unaligned_le16(buf + MPF_DATA_SIZE_OFFSET);
   153	
   154		for (i = 0; i < components_num; i++) {
   155			component_size_byte_num =
   156				(i * MPF_BITS_PER_COMPONENT_SIZE) / BITS_PER_BYTE;
   157			component_size_byte_off =
   158				(i * MPF_BITS_PER_COMPONENT_SIZE) % BITS_PER_BYTE;
   159	
   160			component_size = get_unaligned_le32(buf +
   161							    components_size_start +
   162							    component_size_byte_num);
   163			component_size >>= component_size_byte_off;
   164			component_size &= GENMASK(MPF_BITS_PER_COMPONENT_SIZE - 1, 0);
   165	
   166			info->data_size += component_size * MPF_SPI_FRAME_SIZE;
   167		}
   168	
   169		return 0;
   170	}
   171	

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp



[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux