On 8/25/23 10:21, Michal Simek wrote:
Hi,

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 :

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.hris...@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.hris...@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)
+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,

Actually there is another patch targeting the same code.
Please take a look at
https://lore.kernel.org/r/20230816065437.836392-1-chanho61.p...@samsung.com
and get Chanho on board and create a patch to cover both cases.

Thanks,
Michal

Hello Michal,

Looking at Chanho's patch, it appears that he is solving the same issue. These are not two separate cases. He fixed it the other way around : if CONFIG_FPGA define the right prototype, else define the stub, while I did if CONFIG_DEBUG define stub, else define the right prototype.

I think you should select the patch that you deem more appropriate to fix this, I don't mind which one.

Thanks,
Eugen

Reply via email to