make: Entering directory `/usr/src/linux-2.6.20-gentoo' CC [M] /var/tmp/portage/net-wireless/rt2500-1.1.0_beta4/work/rt2500-1.1.0-b4/Module/rtmp_main.o CC [M] /var/tmp/portage/net-wireless/rt2500-1.1.0_beta4/work/rt2500-1.1.0-b4/Module/mlme.o /var/tmp/portage/net-wireless/rt2500-1.1.0_beta4/work/rt2500-1.1.0-b4/Module/rtmp_main.c: In function ‘RT2500_open’: /var/tmp/portage/net-wireless/rt2500-1.1.0_beta4/work/rt2500-1.1.0-b4/Module/rtmp_main.c:343: warning: passing argument 2 of ‘request_irq’ from incompatible pointer type CC [M] /var/tmp/portage/net-wireless/rt2500-1.1.0_beta4/work/rt2500-1.1.0-b4/Module/connect.o CC [M] /var/tmp/portage/net-wireless/rt2500-1.1.0_beta4/work/rt2500-1.1.0-b4/Module/sync.o CC [M] /var/tmp/portage/net-wireless/rt2500-1.1.0_beta4/work/rt2500-1.1.0-b4/Module/assoc.o CC [M] /var/tmp/portage/net-wireless/rt2500-1.1.0_beta4/work/rt2500-1.1.0-b4/Module/auth.o CC [M] /var/tmp/portage/net-wireless/rt2500-1.1.0_beta4/work/rt2500-1.1.0-b4/Module/auth_rsp.o CC [M] /var/tmp/portage/net-wireless/rt2500-1.1.0_beta4/work/rt2500-1.1.0-b4/Module/rtmp_data.o CC [M] /var/tmp/portage/net-wireless/rt2500-1.1.0_beta4/work/rt2500-1.1.0-b4/Module/rtmp_init.o CC [M] /var/tmp/portage/net-wireless/rt2500-1.1.0_beta4/work/rt2500-1.1.0-b4/Module/sanity.o /var/tmp/portage/net-wireless/rt2500-1.1.0_beta4/work/rt2500-1.1.0-b4/Module/rtmp_init.c:978:62: error: macro "INIT_WORK" passed 3 arguments, but takes just 2 /var/tmp/portage/net-wireless/rt2500-1.1.0_beta4/work/rt2500-1.1.0-b4/Module/rtmp_init.c: In function ‘NICInitializeAdapter’: /var/tmp/portage/net-wireless/rt2500-1.1.0_beta4/work/rt2500-1.1.0-b4/Module/rtmp_init.c:978: error: ‘INIT_WORK’ undeclared (first use in this function) /var/tmp/portage/net-wireless/rt2500-1.1.0_beta4/work/rt2500-1.1.0-b4/Module/rtmp_init.c:978: error: (Each undeclared identifier is reported only once /var/tmp/portage/net-wireless/rt2500-1.1.0_beta4/work/rt2500-1.1.0-b4/Module/rtmp_init.c:978: error: for each function it appears in.) make[1]: *** [/var/tmp/portage/net-wireless/rt2500-1.1.0_beta4/work/rt2500-1.1.0-b4/Module/rtmp_init.o] Error 1 make[1]: *** Waiting for unfinished jobs.... CC [M] /var/tmp/portage/net-wireless/rt2500-1.1.0_beta4/work/rt2500-1.1.0-b4/Module/rtmp_wep.o make: *** [_module_/var/tmp/portage/net-wireless/rt2500-1.1.0_beta4/work/rt2500-1.1.0-b4/Module] Error 2 make: Leaving directory `/usr/src/linux-2.6.20-gentoo' !!! ERROR: net-wireless/rt2500-1.1.0_beta4 failed. Call stack: ebuild.sh, line 1613: Called dyn_compile ebuild.sh, line 970: Called qa_call 'src_compile' environment, line 4382: Called src_compile rt2500-1.1.0_beta4.ebuild, line 45: Called linux-mod_src_compile linux-mod.eclass, line 510: Called die !!! Unable to make -C /usr/src/linux M=/var/tmp/portage/net-wireless/rt2500-1.1.0_beta4/work/rt2500-1.1.0-b4/Module modules. !!! 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/net-wireless/rt2500-1.1.0_beta4/temp/build.log'. Reproducible: Always SyNaPsE linux-2.6.20-gentoo # emerge --info Portage 2.1.2-r7 (default-linux/x86/2006.1, gcc-4.1.1, glibc-2.5-r0, 2.6.20-gentoo i686) ================================================================= System uname: 2.6.20-gentoo i686 Intel(R) Celeron(R) M processor 1500MHz Gentoo Base System release 1.12.9 Timestamp of tree: Mon, 05 Feb 2007 15:30:01 +0000 ccache version 2.4 [enabled] dev-java/java-config: 1.3.7, 2.0.31-r3 dev-lang/python: 2.4.4 dev-python/pycrypto: 2.0.1-r5 dev-util/ccache: 2.4-r6 sys-apps/sandbox: 1.2.18.1 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.17 sys-devel/gcc-config: 1.3.14 sys-devel/libtool: 1.5.22 virtual/os-headers: 2.6.20 ACCEPT_KEYWORDS="x86 ~x86" AUTOCLEAN="yes" CBUILD="i686-pc-linux-gnu" CFLAGS="-march=pentium-m -pipe -O2 -fomit-frame-pointer -DNDEBUG -DG_DISABLE_ASSERT" 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/init.d /etc/java-config/vms/ /etc/revdep-rebuild /etc/terminfo" CXXFLAGS="-march=pentium-m -pipe -O2 -fomit-frame-pointer -DNDEBUG -DG_DISABLE_ASSERT" DISTDIR="/usr/portage/distfiles" FEATURES="autoconfig ccache distlocks metadata-transfer parallel-fetch sandbox sfperms strict" GENTOO_MIRRORS="http://gentoo.prz.rzeszow.pl http://gentoo.po.opole.pl http://distfiles.gentoo.org http://www.ibiblio.org/pub/Linux/distributions/gentoo http://dev.gentoo.org" LANG="pl_PL.UTF-8" LINGUAS="pl en" 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" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/usr/portage" SYNC="rsync://rsync.gentoo.org/gentoo-portage" USE="7zip X a52 aac acpi alsa arts audacious avi bash-completion bitmap-fonts bzip2 cdparanoia chardet css cups deprecated devil dga discouraged divx dri dts dv dvd dvdr dvdread encode fbcon ffmpeg firefox gif gnutls gpm i8x0 iconv idea ieee1394 ipv6 java jpeg jpeg2k kde kdeenablefinal logitech-mouse logrotate lzo mad mmx mmxext mng mp3 mp4 mpeg ncurses nls no-old-linux nptl nptlonly nsplugin ogg oggvorbis opengl pam pcre pdf pdflib perl png python qt qt3 slang smartcard spell sse sse2 ssl svg symlink test theora threads tiff truetype truetype-fonts type1-fonts udev unicode usb userlocales vcd voice vorbis win32codecs wma wmf wmp x264 x86 xanim xinerama xorg xscreensaver xv xvid 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="pl en" USERLAND="GNU" VIDEO_CARDS="i810" Unset: CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LC_ALL, LDFLAGS, PORTAGE_RSYNC_EXTRA_OPTS, PORTDIR_OVERLAY
I have experienced this too, on x86_64
me too, amd64
Blurb I'm pasting to all compile bugs related to workqueue API changes to help maintainers: Workqueues are ways of deferring execution of a particular "work function" to some point in the future. You initialize a "work struct" statically with DECLARE_WORK/DECLARE_DELAYED_WORK or dynamically with INIT_WORK or INIT_DELAYED_WORK. You then schedule execution of the work function by passing the work struct to schedule_work() or schedule_delayed_work(). In 2.6.19, the {INIT,DECLARE}_{DELAYED_,}WORK macros took a 3rd parameter, a user data pointer. This pointer was passed to the work function, and as such, work functions always had a single void* parameter. In 2.6.20, this 3rd parameter is gone, and work functions always take a single parameter: a struct work_struct*. Unsurprisingly, this points to the work struct which was scheduled earlier. Sometimes the user data pointer was unused in the work functions, in which case the fix is easy: drop the 3rd parameter to the INIT/DECLARE macro, and change the type of the work function parameter to struct work_struct *. Often, the user data pointer is used in the work function to reference a particular instance of a driver-level data structure (e.g. the card that the function is supposed to operate on). If this is the case, ensure that the work struct is stored as a member of this structure, and then use the container_of macro to look this up. i.e. a driver-level data structure such as: struct card { int a, b, c; struct work_struct *foo_work; } when dynamically initialising work: struct card *card_private = kmalloc(blah); [...] INIT_WORK(&card_private->foo_work, my_work_function); In 2.6.19 the work function looked like: void my_work_function(void *data) { struct card *card_private = (struct card *) data; [...] } For 2.6.20, change it to: void my_work_function(struct work_struct *work) { struct card *card_private = container_of(work, struct card, foo_work); [...] } The container_of(A,B,C) macro "find me the instance of the structure type B which has a member called C which points at this specific instance of A." This might sound a little confusing in that it it seems hard to implement such a function, however the compiler is clever enough to figure it out at compile time. Here is a collection of examples which make this change: http://tinyurl.com/274skb If further help is needed, find me on IRC.
Fixed.
*** Bug 165962 has been marked as a duplicate of this bug. ***