[uClinux-dev] NIOS2: the adventure continues with missing DMA

Robert P. J. Day rpjday at crashcourse.ca
Fri Oct 26 03:52:01 EDT 2007


  the current result of trying a kernel build with my latest patchset:

...
  CC      arch/nios2nommu/kernel/nios2_ksyms.o
  LD      arch/nios2nommu/kernel/built-in.o
  AS      arch/nios2nommu/kernel/head.o
  CC      arch/nios2nommu/kernel/init_task.o
  LDS     arch/nios2nommu/kernel/vmlinux.lds
  CC      arch/nios2nommu/mm/init.o
arch/nios2nommu/mm/init.c: In function `paging_init':
arch/nios2nommu/mm/init.c:147: error: `ZONE_DMA' undeclared (first use in this function)
arch/nios2nommu/mm/init.c:147: error: (Each undeclared identifier is reported only once
arch/nios2nommu/mm/init.c:147: error: for each function it appears in.)
make[2]: *** [arch/nios2nommu/mm/init.o] Error 1
make[1]: *** [arch/nios2nommu/mm] Error 2
make[1]: Leaving directory
`/home/rpjday/nios2/uclinux/uClinux-dist-cvs/linux-2.6.x'
make: *** [linux] Error 1
$

  hmmmmm ... the macro ZONE_DMA is defined in include/linux/mmzone.h
thusly:

...
enum zone_type {
#ifdef CONFIG_ZONE_DMA
...
        ZONE_DMA,
#endif
...

which means you *need* to have a (selected) Kconfig variable with name
ZONE_DMA, normally defined in the Kconfig file arch/[arch
name]/Kconfig, as in:

$ grep -r "config ZONE_DMA" *
arch/m68k/Kconfig:config ZONE_DMA
arch/s390/Kconfig:config ZONE_DMA
arch/h8300/Kconfig:config ZONE_DMA
arch/blackfin/Kconfig:config ZONE_DMA
arch/frv/Kconfig:config ZONE_DMA
arch/ia64/Kconfig:config ZONE_DMA
arch/i386/Kconfig:config ZONE_DMA
arch/v850/Kconfig:config ZONE_DMA
arch/x86_64/Kconfig:config ZONE_DMA32
arch/x86_64/Kconfig:config ZONE_DMA
arch/mips/Kconfig:config ZONE_DMA
arch/alpha/Kconfig:config ZONE_DMA
arch/m32r/Kconfig:config ZONE_DMA
arch/cris/Kconfig:config ZONE_DMA
arch/arm/Kconfig:config ZONE_DMA
arch/powerpc/Kconfig:config ZONE_DMA
arch/xtensa/Kconfig:config ZONE_DMA
arch/m68knommu/Kconfig:config ZONE_DMA
arch/sparc/Kconfig:config ZONE_DMA
arch/ppc/Kconfig:config ZONE_DMA

  notice anything missing?  why, yes ... arch/nios2nommu/Kconfig.
that Kconfig entry typically looks simply like:

config ZONE_DMA
        bool
        default y

  is it really as easy as adding that to the nios2 Kconfig file?  i'm
not an expert at DMA, so i don't know why it would be missing in the
first place, but it's certainly a reason why the above build attempt
is failing.

  or is there a different solution to the above?

rday
-- 
========================================================================
Robert P. J. Day
Linux Consulting, Training and Annoying Kernel Pedantry
Waterloo, Ontario, CANADA

http://crashcourse.ca
========================================================================


More information about the uClinux-dev mailing list