Bug 12761 - Buildroot fails when building GCNano binaries for the STM32MP1
Summary: Buildroot fails when building GCNano binaries for the STM32MP1
Status: RESOLVED INVALID
Alias: None
Product: buildroot
Classification: Unclassified
Component: Other (show other bugs)
Version: 2020.02
Hardware: All Linux
: P5 normal
Target Milestone: ---
Assignee: unassigned
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2020-04-06 15:09 UTC by Aaron Decker
Modified: 2020-05-17 18:47 UTC (History)
2 users (show)

See Also:
Host:
Target:
Build:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Aaron Decker 2020-04-06 15:09:47 UTC
Attempting to build for the STM32MP175C target with the GCNano binaries to enable the GPU. I get the following error.

https://pastebin.com/9VHWLK4D



 CC [M]  /home/ajdecker/projects/buildroot/output/build/gcnano-binaries-c01642ed5e18cf09ecd905af193e935cb3be95ed/./hal/os/linux/kernel/allocator/default/gc_hal_kernel_allocator_dma.o
/home/ajdecker/projects/buildroot/output/build/gcnano-binaries-c01642ed5e18cf09ecd905af193e935cb3be95ed/./hal/os/linux/kernel/allocator/default/gc_hal_kernel_allocator_dma.c: In function ‘_DmaAlloc’:
/home/ajdecker/projects/buildroot/output/build/gcnano-binaries-c01642ed5e18cf09ecd905af193e935cb3be95ed/./hal/os/linux/kernel/allocator/default/gc_hal_kernel_allocator_dma.c:167:11: error: implicit declaration of function ‘dma_alloc_writecombine’; did you mean ‘pgprot_writecombine’? [-Werror=implicit-function-declaration]
  167 |         = dma_alloc_writecombine(galcore_device, NumPages * PAGE_SIZE,  &mdlPriv->dmaHandle, gfp);
      |           ^~~~~~~~~~~~~~~~~~~~~~
      |           pgprot_writecombine
/home/ajdecker/projects/buildroot/output/build/gcnano-binaries-c01642ed5e18cf09ecd905af193e935cb3be95ed/./hal/os/linux/kernel/allocator/default/gc_hal_kernel_allocator_dma.c:167:9: error: assignment to ‘gctPOINTER’ {aka ‘void *’} from ‘int’ makes pointer from integer without a cast [-Werror=int-conversion]
  167 |         = dma_alloc_writecombine(galcore_device, NumPages * PAGE_SIZE,  &mdlPriv->dmaHandle, gfp);
      |         ^
/home/ajdecker/projects/buildroot/output/build/gcnano-binaries-c01642ed5e18cf09ecd905af193e935cb3be95ed/./hal/os/linux/kernel/allocator/default/gc_hal_kernel_allocator_dma.c: In function ‘_DmaFree’:
/home/ajdecker/projects/buildroot/output/build/gcnano-binaries-c01642ed5e18cf09ecd905af193e935cb3be95ed/./hal/os/linux/kernel/allocator/default/gc_hal_kernel_allocator_dma.c:288:5: error: implicit declaration of function ‘dma_free_writecombine’; did you mean ‘pgprot_writecombine’? [-Werror=implicit-function-declaration]
  288 |     dma_free_writecombine(galcore_device, Mdl->numPages * PAGE_SIZE, mdlPriv->kvaddr, mdlPriv->dmaHandle);
      |     ^~~~~~~~~~~~~~~~~~~~~
      |     pgprot_writecombine
/home/ajdecker/projects/buildroot/output/build/gcnano-binaries-c01642ed5e18cf09ecd905af193e935cb3be95ed/./hal/os/linux/kernel/allocator/default/gc_hal_kernel_allocator_dma.c: In function ‘_DmaMmap’:
/home/ajdecker/projects/buildroot/output/build/gcnano-binaries-c01642ed5e18cf09ecd905af193e935cb3be95ed/./hal/os/linux/kernel/allocator/default/gc_hal_kernel_allocator_dma.c:324:9: error: implicit declaration of function ‘dma_mmap_writecombine’ [-Werror=implicit-function-declaration]
  324 |     if (dma_mmap_writecombine(gcvNULL,
      |         ^~~~~~~~~~~~~~~~~~~~~
Comment 1 Thomas Petazzoni 2020-04-06 19:47:23 UTC
Thanks for the bug report. Could you try building against the 4.19 kernel provided by ST at https://github.com/STMicroelectronics/linux/ ? It is very likely that the kernel driver they ship as part of the gcnano-binaries package builds fine only with their 4.19 kernel.
Comment 2 Aaron Decker 2020-04-07 00:30:20 UTC
I gave that a shot using the tarball from the ST github. I get a different error:

https://pastebin.com/UL4vfkNG


In file included from /home/ajdecker/projects/buildroot/output/build/gcnano-binaries-c01642ed5e18cf09ecd905af193e935cb3be95ed/./hal/os/linux/kernel/gc_hal_kernel_linux.h:61,
                 from /home/ajdecker/projects/buildroot/output/build/gcnano-binaries-c01642ed5e18cf09ecd905af193e935cb3be95ed/./hal/os/linux/kernel/gc_hal_kernel_driver.c:62:
./include/linux/module.h:133:6: error: ‘init_module’ specifies less restrictive attribute than its target ‘gpu_init’: ‘cold’ [-Werror=missing-attributes]
  133 |  int init_module(void) __attribute__((alias(#initfn)));
      |      ^~~~~~~~~~~
/home/ajdecker/projects/buildroot/output/build/gcnano-binaries-c01642ed5e18cf09ecd905af193e935cb3be95ed/./hal/os/linux/kernel/gc_hal_kernel_driver.c:1267:1: note: in expansion of macro ‘module_init’
 1267 | module_init(gpu_init);
      | ^~~~~~~~~~~
/home/ajdecker/projects/buildroot/output/build/gcnano-binaries-c01642ed5e18cf09ecd905af193e935cb3be95ed/./hal/os/linux/kernel/gc_hal_kernel_driver.c:1224:19: note: ‘init_module’ target declared here
 1224 | static int __init gpu_init(void)
      |                   ^~~~~~~~
In file included from /home/ajdecker/projects/buildroot/output/build/gcnano-binaries-c01642ed5e18cf09ecd905af193e935cb3be95ed/./hal/os/linux/kernel/gc_hal_kernel_linux.h:61,
                 from /home/ajdecker/projects/buildroot/output/build/gcnano-binaries-c01642ed5e18cf09ecd905af193e935cb3be95ed/./hal/os/linux/kernel/gc_hal_kernel_driver.c:62:
./include/linux/module.h:139:7: error: ‘cleanup_module’ specifies less restrictive attribute than its target ‘gpu_exit’: ‘cold’ [-Werror=missing-attributes]
  139 |  void cleanup_module(void) __attribute__((alias(#exitfn)));
      |       ^~~~~~~~~~~~~~
/home/ajdecker/projects/buildroot/output/build/gcnano-binaries-c01642ed5e18cf09ecd905af193e935cb3be95ed/./hal/os/linux/kernel/gc_hal_kernel_driver.c:1268:1: note: in expansion of macro ‘module_exit’
 1268 | module_exit(gpu_exit);
      | ^~~~~~~~~~~
/home/ajdecker/projects/buildroot/output/build/gcnano-binaries-c01642ed5e18cf09ecd905af193e935cb3be95ed/./hal/os/linux/kernel/gc_hal_kernel_driver.c:1255:20: note: ‘cleanup_module’ target declared here
 1255 | static void __exit gpu_exit(void)
      |                    ^~~~~~~~
Comment 3 Thomas Petazzoni 2020-05-17 18:47:50 UTC
(In reply to Aaron Decker from comment #2)
You're seeing an issue in include/linux/module.h due to a compatibility problem with gcc 9.x. However, this was fixed in upstream Linux and in the ST fork, since version v4.19-stm32mp-r1.5.

Could you try building with v4.19-stm32mp-r3.1 instead ?

Nevertheless, this is not a Buildroot bug.