[PATCH RESEND v3] fpga: add inline stub for fpga_load

Eugen Hristev eugen.hristev at collabora.com
Mon Aug 28 13:46:41 CEST 2023


On 8/28/23 13:53, Michal Simek wrote:
> Hi Eugen, + Chanho,
> 
> On 8/8/23 12:22, Eugen Hristev wrote:
>> In case CC_OPTIMIZE_FOR_DEBUG is set, unused code will not be 
>> optimized out,
>> hence the reference to fpga_load will be compiled.
>> if DM_FPGA and SPL_FPGA are not set, the build will fail with :
> 
> this is not correct. It is not DM_FPGA but only FPGA.
> 
> 
>>
>> aarch64-none-linux-gnu-ld.bfd: common/spl/spl_fit.o: in function 
>> `spl_fit_upload_fpga':
>> u-boot/common/spl/spl_fit.c:595: undefined reference to `fpga_load'
>>
>> To solve this, added an inline empty stub in the header if
>> CC_OPTIMIZE_FOR_DEBUG is set such that the build will succeed.
>>
>> Signed-off-by: Eugen Hristev <eugen.hristev at collabora.com>
>> ---
>> Changes in v3:
>> - return -ENOSYS
>> Changes in v2:
>> - this is a rework as suggested by Simon of this previous patch :
>> https://patchwork.ozlabs.org/project/uboot/patch/20230619102839.277902-1-eugen.hristev@collabora.com/
>>
>>   include/fpga.h | 9 +++++++++
>>   1 file changed, 9 insertions(+)
>>
>> diff --git a/include/fpga.h b/include/fpga.h
>> index ed688cc0fa3b..33d0dbbe2ba4 100644
>> --- a/include/fpga.h
>> +++ b/include/fpga.h
>> @@ -60,8 +60,17 @@ int fpga_add(fpga_type devtype, void *desc);
>>   int fpga_count(void);
>>   const fpga_desc *const fpga_get_desc(int devnum);
>>   int fpga_is_partial_data(int devnum, size_t img_len);
>> +#if defined(CONFIG_CC_OPTIMIZE_FOR_DEBUG)
> 
> And when you enable CONFIG_CC_OPTIMIZE_FOR_DEBUG and FPGA you get 
> compilation warnings.
> 
> drivers/fpga/fpga.c:265:5: error: redefinition of 'fpga_load'
>    265 | int fpga_load(int devnum, const void *buf, size_t bsize, 
> bitstream_type bstype,
>        |     ^~~~~~~~~
> In file included from include/xilinx.h:7,
>                   from drivers/fpga/fpga.c:11:
> include/fpga.h:64:19: note: previous definition of 'fpga_load' with type 
> 'int(int,  const void *, size_t,  bitstream_type,  int)' {aka 'int(int,  
> const void *, long unsigned int,  bitstream_type,  int)'}
>     64 | static inline int fpga_load(int devnum, const void *buf, size_t 
> bsize,
>        |                   ^~~~~~~~~
> make[2]: *** [scripts/Makefile.build:257: drivers/fpga/fpga.o] Error 1
> 
> I means please tune that condition properly not to create additional 
> compilation warnings for other combinations.
> 
> Thanks,
> Michal
> 

Hello Michal,

Thanks for reviewing .

Chanho, I cannot try this at the moment, if you are in a hurry you can 
send a v4 or v2 to your patch addressing this (or maybe your patch does 
not have this problem)

Thanks,
Eugen
> 
>> +static inline int fpga_load(int devnum, const void *buf, size_t bsize,
>> +                bitstream_type bstype, int flags)
>> +{
>> +    return -ENOSYS;
>> +}
>> +#else
>>   int fpga_load(int devnum, const void *buf, size_t bsize,
>>             bitstream_type bstype, int flags);
>> +#endif
>> +
>>   int fpga_fsload(int devnum, const void *buf, size_t size,
>>           fpga_fs_info *fpga_fsinfo);
>>   int fpga_loads(int devnum, const void *buf, size_t size,



More information about the U-Boot mailing list