First Last Prev Next    No search results available      Search page      Enter new bug
Bug#: 165469
Alias:
Product:
Component:
Status: RESOLVED
Resolution: FIXED
Assigned To: Roy Marples (RETIRED) <uberlord@gentoo.org>
Hardware:
OS:
Version:
Priority:
Severity:
Reporter: Grzegorz {NineX} Krzystek <ninex@o2.pl>
Add CC:
CC:
Remove selected CCs
URL:
Summary:
Status Whiteboard:
Keywords:

Filename Description Type Creator Created Size Actions
Create a New Attachment (proposed patch, testcase, etc.) View All

Bug 165469 depends on: Show dependency tree
Bug 165469 blocks: 163825
Votes: 0    Show votes for this bug    Vote for this bug

Additional Comments: (this is where you put emerge --info)


Not eligible to see or edit group visibility for this bug.






View Bug Activity   |   Format For Printing   |   XML   |   Clone This Bug


Description:   Opened: 2007-02-05 18:10 0000
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

------- Comment #1 From Tim Climis 2007-02-06 05:23:14 0000 -------
I have experienced this too, on x86_64

------- Comment #2 From Felix Wieczorek 2007-02-06 13:57:15 0000 -------
me too, amd64

------- Comment #3 From Daniel Drake 2007-02-06 14:54:24 0000 -------
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.

------- Comment #4 From Roy Marples (RETIRED) 2007-02-06 23:13:52 0000 -------
Fixed.

------- Comment #5 From Roy Marples (RETIRED) 2007-02-08 23:58:09 0000 -------
*** Bug 165962 has been marked as a duplicate of this bug. ***

First Last Prev Next    No search results available      Search page      Enter new bug