hardkernel / linux

Linux kernel source tree
Other
428 stars 407 forks source link

Error building odroidxu3-3.10.y without CONFIG_DEBUG_LOCK_ALLOC #201

Closed loli10K closed 7 years ago

loli10K commented 8 years ago

Hello, i'm trying to compile odroidxu3-3.10.y for my XU4 without CONFIG_DEBUG_LOCK_ALLOC (required to support ZFSonLinux) but the build gives the following errors:

root@wheezy:~/odroid-xu4/linux# make
  CHK     include/generated/uapi/linux/version.h
  CHK     include/generated/utsrelease.h
make[1]: `include/generated/mach-types.h' is up to date.
  CALL    scripts/checksyscalls.sh
  CC      scripts/mod/devicetable-offsets.s
  GEN     scripts/mod/devicetable-offsets.h
  HOSTCC  scripts/mod/file2alias.o
  HOSTLD  scripts/mod/modpost
  CHK     include/generated/compile.h
  CC      kernel/mutex.o
kernel/mutex.c: In function ‘__mutex_lock_slowpath’:
kernel/mutex.c:767:2: error: too few arguments to function ‘__mutex_lock_common’
  __mutex_lock_common(lock, TASK_UNINTERRUPTIBLE, 0, NULL, _RET_IP_);
  ^
kernel/mutex.c:363:1: note: declared here
 __mutex_lock_common(struct mutex *lock, long state, unsigned int subclass,
 ^
kernel/mutex.c: In function ‘__mutex_lock_killable_slowpath’:
kernel/mutex.c:775:9: error: too few arguments to function ‘__mutex_lock_common’
  return __mutex_lock_common(lock, TASK_KILLABLE, 0, NULL, _RET_IP_);
         ^
kernel/mutex.c:363:1: note: declared here
 __mutex_lock_common(struct mutex *lock, long state, unsigned int subclass,
 ^
kernel/mutex.c: In function ‘__mutex_lock_interruptible_slowpath’:
kernel/mutex.c:783:9: error: too few arguments to function ‘__mutex_lock_common’
  return __mutex_lock_common(lock, TASK_INTERRUPTIBLE, 0, NULL, _RET_IP_);
         ^
kernel/mutex.c:363:1: note: declared here
 __mutex_lock_common(struct mutex *lock, long state, unsigned int subclass,
 ^
kernel/mutex.c:784:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
kernel/mutex.c: In function ‘__mutex_lock_killable_slowpath’:
kernel/mutex.c:776:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
make[1]: *** [kernel/mutex.o] Error 1
make: *** [kernel] Error 2

The problem seems to be introduced in this commit https://github.com/hardkernel/linux/commit/2d9cd5c5eaca505cecfe5cb4bd07467e9f080903 when __mutex_lock_common was updated to support wait/wound style locks, but the actual usage of the fuction inside the #ifndef CONFIG_DEBUG_LOCK_ALLOC block was not. Also the same #ifndef CONFIG_DEBUG_LOCK_ALLOC block is missing __ww_mutex_lock __ww_mutex_lock_interruptible definitions used by some drm_* functions.

Pinging @mdrjr to know if this was intentional and if there is any way we can support compiling without CONFIG_DEBUG_LOCK_ALLOC.

loli10K commented 7 years ago

I got this fixed by other means, closing.