OSDN Git Service

iwlegacy: mark il_adjust_beacon_interval as noinline
authorArnd Bergmann <arnd@arndb.de>
Wed, 9 Dec 2015 16:42:41 +0000 (17:42 +0100)
committerKalle Valo <kvalo@codeaurora.org>
Fri, 11 Dec 2015 11:50:14 +0000 (13:50 +0200)
commit31ced24d88f1f8cfb420a25ddfc6eeda1a38d471
treeb98822a0765f89e4bc3f0fd8eb40c19d4f4c6325
parent17bc55864f81dd730d05f09b1641312a7990d636
iwlegacy: mark il_adjust_beacon_interval as noinline

With the new optimized do_div() code, some versions of gcc
produce obviously incorrect code that leads to a link error
in iwlegacy/common.o:

drivers/built-in.o: In function `il_send_rxon_timing':
:(.text+0xa6b4d4): undefined reference to `____ilog2_NaN'
:(.text+0xa6b4f0): undefined reference to `__aeabi_uldivmod'

In a few thousand randconfig builds, I have seen this problem
a couple of times in this file, but never anywhere else in the
kernel, so we can try to work around this in the only file
that shows the behavior, by marking the il_adjust_beacon_interval
function as noinline, which convinces gcc to use the unoptimized
do_div() all the time.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Nicolas Pitre <nico@linaro.org>
Acked-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/intel/iwlegacy/common.c