Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 181982 - x11-drivers/ati-drivers-8.37.6-r1 doesn't compile with openvz kernel
Summary: x11-drivers/ati-drivers-8.37.6-r1 doesn't compile with openvz kernel
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: New packages (show other bugs)
Hardware: x86 Linux
: High normal (vote)
Assignee: Marien Zwart (RETIRED)
URL: http://bugzilla.openvz.org/show_bug.c...
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2007-06-14 05:31 UTC by Jephte CLAIN
Modified: 2008-03-12 19:32 UTC (History)
4 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
the build log from /var/tmp/portage/x11-drivers/ati-drivers-8.37.6-r1/temp (build.log,4.60 KB, text/plain)
2007-06-14 07:31 UTC, Jephte CLAIN
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Jephte CLAIN 2007-06-14 05:31:15 UTC
I'm trying to install openvz-sources (sys-kernel/openvz-sources-028.027) on my desktop machine. the kernel configuration and installation is correct. I can boot under the new kernel and manage openvz virtual machines from the command line. all the drivers for my machine load correctly.

but when I try to compile the closed source ati-drivers (x11-drivers/ati-drivers-8.37.6-r1, this is a desktop machine, remember), the compile fail with the following message:

WARNING: "find_task_by_pid" [/var/tmp/portage/x11-drivers/ati-drivers-8.37.6-r1/work/common/lib/modules/fglrx/build_mod/2.6.x/fglrx.ko] undefined!
!!! ERROR: x11-drivers/ati-drivers-8.37.6-r1 failed.
Call stack:
  ebuild.sh, line 1615:   Called dyn_compile
  ebuild.sh, line 972:   Called qa_call 'src_compile'
  ebuild.sh, line 44:   Called src_compile
  ati-drivers-8.37.6-r1.ebuild, line 177:   Called linux-mod_src_compile
  linux-mod.eclass, line 516:   Called die

!!! Unable to make  GCC_VER_MAJ=4 KVER=2.6.18-028stab027 KDIR=/usr/src/linux kmod_build.

I understand that find_task_by_pid is a common function, and I don't understand why it does not work. I searched on google and I seem to be the first to have this problem.

I don't even know if this is a bug or a problem with my machine. however, everything work with everything else on both kernels, and I can compile ati-drivers with my current kernel (gentoo-sources-2.6.20-r8)


Reproducible: Always

Steps to Reproduce:
Comment 1 Jephte CLAIN 2007-06-14 05:32:26 UTC
# emerge --info

Portage 2.1.2.7 (default-linux/x86/2007.0/desktop, gcc-4.1.2, glibc-2.5-r3, 2.6.20-gentoo-r8 i686)
=================================================================
System uname: 2.6.20-gentoo-r8 i686 Intel(R) Pentium(R) M processor 2.13GHz
Gentoo Base System release 1.12.9
Timestamp of tree: Thu, 14 Jun 2007 04:50:01 +0000
dev-java/java-config: 1.3.7, 2.0.32
dev-lang/python:     2.4.4-r4
dev-python/pycrypto: 2.0.1-r5
sys-apps/sandbox:    1.2.17
sys-devel/autoconf:  2.13, 2.61
sys-devel/automake:  1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2, 1.10
sys-devel/binutils:  2.16.1-r3
sys-devel/gcc-config: 1.3.16
sys-devel/libtool:   1.5.22
virtual/os-headers:  2.6.17-r2
ACCEPT_KEYWORDS="x86"
AUTOCLEAN="yes"
CBUILD="i686-pc-linux-gnu"
CFLAGS="-O2 -march=i686 -pipe"
CHOST="i686-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/share/X11/xkb /usr/share/config"
CONFIG_PROTECT_MASK="/etc/env.d /etc/env.d/java/ /etc/gconf /etc/revdep-rebuild /etc/terminfo"
CXXFLAGS="-O2 -march=i686 -pipe"
DISTDIR="/usr/portage/distfiles"
FEATURES="distlocks metadata-transfer sandbox sfperms strict"
GENTOO_MIRRORS="http://gentoo.modulix.net/gentoo/ http://ftp.club-internet.fr/pub/mirrors/gentoo "
LANG="fr_FR"
LINGUAS="fr"
MAKEOPTS="-j2"
PKGDIR="/usr/portage/packages"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --delete-after --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --filter=H_**/files/digest-*"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage"
USE="X acl acpi alsa apm arts berkdb bitmap-fonts cairo cdr cli cracklib crypt cups dbus dri dvd dvdr dvdread eds emboss encode esd evo fam firefox fortran gdbm gif glitz gnome gpm gstreamer gtk hal howl iconv ipv6 isdnlog java jpeg kerberos ldap libg++ lm_sensors mad midi mikmod mp3 mpeg mudflap ncurses nls nptl nptlonly nsplugin ogg opengl openmp oss pam pcre pdf pmu png pppd python qt3support quicktime readline reflection sasl sdl session slang spell spl ssl svg tcpd tiff truetype truetype-fonts type1-fonts unicode vorbis win32codecs x86 xml xorg xv zlib" ALSA_CARDS="intel8x0" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mulaw multi null plug rate route share shm softvol" ELIBC="glibc" INPUT_DEVICES="keyboard mouse synaptics" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="fr" USERLAND="GNU" VIDEO_CARDS="radeon fglrx vesa fbdev"
Unset:  CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LC_ALL, LDFLAGS, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, PORTDIR_OVERLAY
Comment 2 Jakub Moc (RETIRED) gentoo-dev 2007-06-14 06:50:37 UTC
That's just a warning, not the compile error. You need to post more lines above.
Comment 3 Jephte CLAIN 2007-06-14 07:28:57 UTC
well, it's the only line that seems wrong. I attach the build log below
Comment 4 Jephte CLAIN 2007-06-14 07:31:09 UTC
Created attachment 122002 [details]
the build log from /var/tmp/portage/x11-drivers/ati-drivers-8.37.6-r1/temp
Comment 5 Jakub Moc (RETIRED) gentoo-dev 2007-06-14 07:38:04 UTC
Shrug; does any other version of ati-drivers compile? 
Comment 6 Jephte CLAIN 2007-06-14 08:19:43 UTC
well... it compiles with ati-drivers-8.35.5 (the latest stable). I should have tested that first :-(. In fact, I was forced to switch to unstable ati-drivers a while ago and never minded to switch back to stable after that...

ok then. I can use the stable ati-drivers and this solves my problem. now I can't tell why 8.37.6 doesn't compile on kernel 2.6.18...


Comment 7 Bugs Bunny 2007-06-27 15:20:10 UTC
(In reply to comment #6)
> well... it compiles with ati-drivers-8.35.5 (the latest stable). I should have
> tested that first :-(. In fact, I was forced to switch to unstable ati-drivers
> a while ago and never minded to switch back to stable after that...
> 
> ok then. I can use the stable ati-drivers and this solves my problem. now I
> can't tell why 8.37.6 doesn't compile on kernel 2.6.18...
> 

A header is missing in your 2.6.18, ati upstream does not support anything but vanilla kernel so your on your own to figure out why linux/sched.h is not included with the openvz-sources.
Comment 8 miedo95f 2007-07-27 07:07:07 UTC
try create simbolic link ln -s /usr/src/linux/include/linux/ioctl.h /usr/src/linux/include/linux/ioctl32.h


(In reply to comment #0)
> I'm trying to install openvz-sources (sys-kernel/openvz-sources-028.027) on my
> desktop machine. the kernel configuration and installation is correct. I can
> boot under the new kernel and manage openvz virtual machines from the command
> line. all the drivers for my machine load correctly.
> 
> but when I try to compile the closed source ati-drivers
> (x11-drivers/ati-drivers-8.37.6-r1, this is a desktop machine, remember), the
> compile fail with the following message:
> 
> WARNING: "find_task_by_pid"
> [/var/tmp/portage/x11-drivers/ati-drivers-8.37.6-r1/work/common/lib/modules/fglrx/build_mod/2.6.x/fglrx.ko]
> undefined!
> !!! ERROR: x11-drivers/ati-drivers-8.37.6-r1 failed.
> Call stack:
>   ebuild.sh, line 1615:   Called dyn_compile
>   ebuild.sh, line 972:   Called qa_call 'src_compile'
>   ebuild.sh, line 44:   Called src_compile
>   ati-drivers-8.37.6-r1.ebuild, line 177:   Called linux-mod_src_compile
>   linux-mod.eclass, line 516:   Called die
> 
> !!! Unable to make  GCC_VER_MAJ=4 KVER=2.6.18-028stab027 KDIR=/usr/src/linux
> kmod_build.
> 
> I understand that find_task_by_pid is a common function, and I don't understand
> why it does not work. I searched on google and I seem to be the first to have
> this problem.
> 
> I don't even know if this is a bug or a problem with my machine. however,
> everything work with everything else on both kernels, and I can compile
> ati-drivers with my current kernel (gentoo-sources-2.6.20-r8)
> 
> 
> Reproducible: Always
> 
> Steps to Reproduce:
> 

Comment 9 Jephte CLAIN 2007-07-29 16:28:36 UTC
(In reply to comment #8)
> try create simbolic link ln -s /usr/src/linux/include/linux/ioctl.h
> /usr/src/linux/include/linux/ioctl32.h

I'm on vacations. I will try this in 2 weeks, an report the result. thanks for the suggestion.
Comment 10 Jephte CLAIN 2007-07-31 15:04:07 UTC
(In reply to comment #8)
> try create simbolic link ln -s /usr/src/linux/include/linux/ioctl.h
> /usr/src/linux/include/linux/ioctl32.h

ioctl32.h already exists, and its content is different from ioctl.h
I made the symbolic link (keeping a copy of ioctl32.h) and the problem is the same:

# cd /usr/src/linux/include/linux
# mv ioctl32.h ioctl32.h.orig
# ln -s ioctl.h ioctl32.h
# emerge =ati-drivers-8.37.6-r1
...
WARNING: "find_task_by_pid" [/var/tmp/portage/x11-drivers/ati-drivers-8.37.6-r1/work/common/lib/modules/fglrx/build_mod/2.6.x/fglrx.ko] undefined!
make[2]: *** [__modpost] Erreur 1
make[1]: *** [modules] Erreur 2
make[1]: quittant le répertoire « /usr/src/linux-2.6.18-openvz-028.027 »
make: *** [kmod_build] Erreur 2

!!! ERROR: x11-drivers/ati-drivers-8.37.6-r1 failed.
Call stack:
  ebuild.sh, line 1621:   Called dyn_compile
  ebuild.sh, line 973:   Called qa_call 'src_compile'
  ebuild.sh, line 44:   Called src_compile
  ati-drivers-8.37.6-r1.ebuild, line 174:   Called linux-mod_src_compile
  linux-mod.eclass, line 516:   Called die

!!! Unable to make  GCC_VER_MAJ=4 KVER=2.6.18-028stab027 KDIR=/usr/src/linux kmod_build.
!!! If you need support, post the topmost build error, and the call stack if relevant.
!!! A complete build log is located at '/var/tmp/portage/x11-drivers/ati-drivers-8.37.6-r1/temp/build.log'.
Comment 11 Daniel Robbins 2007-11-16 21:45:22 UTC
The issue is that the openvz patch removes the find_task_by_pid macro, which ati-drivers is now depending on.

The solution is to apply a fix to the upstream openvz patch so that this macro still continues to exist for compatibility reasons.

Will see if I can get a patch for this.
Comment 12 Daniel Robbins 2007-11-16 21:58:59 UTC
OK, here is the solution.

The openvz patch undefines find_task_by_pid and creates two new macros: find_task_by_pid_ve and find_task_by_pid_all. It also updates all references in the kernel source code to refer to the new macros.

The problem occurs when other kernel modules use these macros, in which case they break. Since modules are typically not directly used in your VE's, I use the following solution to get the ati-drivers to install and build (tested against ati-drivers 8.40.4). Add the following to include/linux/sched.h:

// drobbins hackzor
#define find_task_by_pid(nr) find_task_by_pid_type_all(PIDTYPE_PID, nr)
extern struct task_struct *find_task_by_pid_type_all(int type, int pid);

This will give any modules that call the find_task_by_pid() macro the default behavior. This may not be appropriate for all kernel modules, especially those that need to be aware of VE's. But it is likely to be correct 99% of the time.
Comment 13 Peter Volkov (RETIRED) gentoo-dev 2007-11-18 07:34:54 UTC
Thank you all for report, and Daniel for suggested fix. This bug should be fixed in 2.6.18.028.049. Note, versioning changed so to emerge this new version you have to run: 

emerge =sys-kernel/openvz-sources-2.6.18.028.049

Note 2: I did not manage to check that fix really works, as ati binary drivers do not work with the recent xorg. So if this bug is not fixed, reopen, please.

Also I'm going to mark this new kernel stable in next few days, so if you have some time, please, try it and report everything you encounter.
Comment 14 Kir Kolyshkin 2008-03-12 19:32:21 UTC
Yup, the bug was fixed in 028stab049, here is some more info.

Upstream bug report:
http://bugzilla.openvz.org/show_bug.cgi?id=634

GIT commit:
http://git.openvz.org/?p=linux-2.6.18-openvz;a=commit;h=3d422a091cd4c871ca2781c0e9a6fcaf5180f77e