I'm getting the error: ERROR: "__bad_udelay" [drivers/net/ethernet/intel/e1000e/e1000e.ko] undefined! when building Gentoo's hardened-sources-3.11.2 with GCC 4.7.3 on x86_64.
Looking at drivers/net/ethernet/intel/e1000e/phy.c, there are several calls to e1000e_phy_has_link_generic() with usec_interval=100000 (e.g., https://github.com/torvalds/linux/blob/master/drivers/net/ethernet/intel/e1000e/phy.c#L1244 ). The implementation of e1000e_phy_has_link_generic() does this: ret_val = e1e_rphy(hw, MII_BMSR, &phy_status); if (ret_val) /* If the first read fails, another entity may have * ownership of the resources, wait and try again to * see if they have relinquished the resources yet. */ udelay(usec_interval); ret_val = e1e_rphy(hw, MII_BMSR, &phy_status); Is calling udelay() with such a large interval allowed? include/asm-generic/delay.h seems to indicate that udelay() cannot be used for intervals bigger than 20000 usec. (And note that later in e1000e_phy_has_link_generic(), we do switch to mdelay() for intervals larger than 1000 usec -- though I'm not sure if it's a good idea to mdelay() for 100000 usec either, since mdelay() is still implemented as a busy-loop.) (I'm not sure why I haven't seen the __bad_udelay error before, since the implementation of phy.c has not changed recently.) ------------------------------------------------------------------------------ Rapidly troubleshoot problems before they affect your business. Most IT organizations don't have a clear picture of how application performance affects their revenue. With AppDynamics, you get 100% visibility into your Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro! http://pubads.g.doubleclick.net/gampad/clk?id=84349351&iu=/4140/ostg.clktrk _______________________________________________ E1000-devel mailing list E1000-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/e1000-devel To learn more about Intel® Ethernet, visit http://communities.intel.com/community/wired