On Sun, Apr 17, 2011 at 6:46 AM, Sedat Dilek <sedat.dilek@xxxxxxxxxxxxxx> wrote: > On Sun, Apr 17, 2011 at 6:10 AM, Wu Fengguang <fengguang.wu@xxxxxxxxx> wrote: >> On Sun, Apr 17, 2011 at 11:18:43AM +0800, Sedat Dilek wrote: >>> On Sun, Apr 17, 2011 at 3:44 AM, Wu Fengguang <fengguang.wu@xxxxxxxxx> wrote: >>> > Hi Sedat, >>> > >>> > On Sun, Apr 17, 2011 at 12:27:58AM +0800, Sedat Dilek wrote: >>> > >>> >> I pulled your tree into linux-next (next-20110415) on an i386 Debian host. >>> >> >>> >> My build breaks here: >>> >> ... >>> >> Â MODPOST vmlinux.o >>> >> Â GEN Â Â .version >>> >> Â CHK Â Â include/generated/compile.h >>> >> Â UPD Â Â include/generated/compile.h >>> >> Â CC Â Â Âinit/version.o >>> >> Â LD Â Â Âinit/built-in.o >>> >> Â LD Â Â Â.tmp_vmlinux1 >>> >> mm/built-in.o: In function `bdi_position_ratio': >>> >> page-writeback.c:(.text+0x5c83): undefined reference to `__udivdi3' >>> > >>> > Yes it can be fixed by the attached patch. >>> > >>> >> mm/built-in.o: In function `calc_period_shift.part.10': >>> >> page-writeback.c:(.text+0x6446): undefined reference to `____ilog2_NaN' >>> > >>> > I cannot reproduce this error. In the git tree, calc_period_shift() is >>> > actually quite simple: >>> > >>> > static int calc_period_shift(void) >>> > { >>> > Â Â Â Âreturn 2 + ilog2(default_backing_dev_info.avg_write_bandwidth); >>> > } >>> > >>> > where avg_write_bandwidth is of type "unsigned long". >>> > >>> >> make[4]: *** [.tmp_vmlinux1] Error >>> >> >>> >> BTW, which kernel-config options have to be set besides >>> >> CONFIG_BLK_DEV_THROTTLING=y? >>> > >>> > No. I used your kconfig on 2.6.39-rc3 and it compiles OK for i386. >>> > >>> > I've pushed two patches into the git tree fixing the compile errors. >>> > Thank you for trying it out and report! >>> > >>> > Thanks, >>> > Fengguang >>> > >>> >>> Thanks for your patch. >>> >>> The 1st part of the build-error is gone, but 2nd part still remains: >>> >>> Â LD Â Â Â.tmp_vmlinux1 >>> mm/built-in.o: In function `calc_period_shift.part.10': >>> page-writeback.c:(.text+0x6458): undefined reference to `____ilog2_NaN' >>> make[4]: *** [.tmp_vmlinux1] Error 1 >>> >>> I have attached some disasm-ed files. >> >> OK. I tried next-20110415 and your kconfig and still got no error. >> >> Please revert the last commit. It's not necessary anyway. >> >> commit 84a9890ddef487d9c6d70934c0a2addc65923bcf >> Author: Wu Fengguang <fengguang.wu@xxxxxxxxx> >> Date: Â Sat Apr 16 18:38:41 2011 -0600 >> >> Â Âwriteback: scale dirty proportions period with writeout bandwidth >> >> Â ÂCC: Peter Zijlstra <a.p.zijlstra@xxxxxxxxx> >> Â ÂSigned-off-by: Wu Fengguang <fengguang.wu@xxxxxxxxx> >> >>> Unfortunately, I don't see any new commits in your GIT tree. >> >> Yeah I cannot see it in the web interface, too: >> >> http://git.kernel.org/?p=linux/kernel/git/wfg/writeback.git;a=shortlog;h=refs/heads/dirty-throttling-v7 >> >> But they are in the dirty-throttling-v7 branch at kernel.org: >> >> commit d0e30163e390d87387ec13e3b1c2168238c26793 >> Author: Wu Fengguang <fengguang.wu@xxxxxxxxx> >> Date: Â Sun Apr 17 11:59:12 2011 +0800 >> >> Â ÂRevert "writeback: scale dirty proportions period with writeout bandwidth" >> >> Â ÂThis reverts commit 84a9890ddef487d9c6d70934c0a2addc65923bcf. >> >> Â Âsedat.dilek@xxxxxxxxx: >> >> Â Â Â ÂLD Â Â Â.tmp_vmlinux1 >> Â Â Âmm/built-in.o: In function `calc_period_shift.part.10': >> Â Â Âpage-writeback.c:(.text+0x6458): undefined reference to `____ilog2_NaN' >> Â Â Âmake[4]: *** [.tmp_vmlinux1] Error 1 >> >> commit fc5c8b04119a5bcc46865e66eec3e6133ecb56e9 >> Author: Wu Fengguang <fengguang.wu@xxxxxxxxx> >> Date: Â Sun Apr 17 09:22:41 2011 -0600 >> >> Â Âwriteback: quick CONFIG_BLK_DEV_THROTTLING=n compile fix >> >> Â ÂReported-by: Sedat Dilek <sedat.dilek@xxxxxxxxxxxxxx> >> Â ÂSigned-off-by: Wu Fengguang <fengguang.wu@xxxxxxxxx> >> >> commit c4a7e3f48dcfae71d0e3d2c55dcc381b3def1919 >> Author: Wu Fengguang <fengguang.wu@xxxxxxxxx> >> Date: Â Sun Apr 17 09:04:44 2011 -0600 >> >> Â Âwriteback: i386 compile fix >> >> Â Âmm/built-in.o: In function `bdi_position_ratio': >> Â Âpage-writeback.c:(.text+0x5c83): undefined reference to `__udivdi3' >> Â Âmm/built-in.o: In function `calc_period_shift.part.10': >> Â Âpage-writeback.c:(.text+0x6446): undefined reference to `____ilog2_NaN' >> Â Âmake[4]: *** [.tmp_vmlinux1] Error >> >> Â ÂReported-by: Sedat Dilek <sedat.dilek@xxxxxxxxxxxxxx> >> Â ÂSigned-off-by: Wu Fengguang <fengguang.wu@xxxxxxxxx> >> >> >> Thanks, >> Fengguang >> > > The 2nd part disappears here, when I switch from gcc-4.6 to gcc-4.5. > > - Sedat - > Just FYI: Build with gcc-4.6 is OK, now. (+) OK writeback-dirty-throttling-v7-fix/writeback-i386-compile-fix.patch (+) OK writeback-dirty-throttling-v7-fix/0001-Revert-writeback-scale-dirty-proportions-period-with.patch In case of the ilog2 error I have g00gled a bit and found gcc-bug #36359 and looked also at include/linux/log2.h [2]. Not sure if this is a gcc-4.6 bug and I shall open a ticket (or a problem in your code?). I have tried the testcase from [3], it gives same output for nm. [4] I could not follow. - Sedat - [1] http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36359 [2] http://git.us.kernel.org/?p=linux/kernel/git/wfg/writeback.git;a=blob;f=include/linux/log2.h#l18 [3] http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36359#c12 [4] http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36359#c17
Attachment:
testcase_gcc-bug-36359.tar.xz
Description: Binary data
Attachment:
testcase_gcc-bug-36359.tar.xz.sha256sum
Description: Binary data