linux/drivers/net/ethernet/intel/e1000e
Denys Vlasenko 3d05b15b03 e1000e: prevent division by zero if TIMINCA is zero
Users report that under VMWare, er32(TIMINCA) returns zero.
This causes division by zero at init time as follows:

 ==>       incvalue = er32(TIMINCA) & E1000_TIMINCA_INCVALUE_MASK;
           for (i = 0; i < E1000_MAX_82574_SYSTIM_REREADS; i++) {
                   /* latch SYSTIMH on read of SYSTIML */
                   systim_next = (cycle_t)er32(SYSTIML);
                   systim_next |= (cycle_t)er32(SYSTIMH) << 32;

                   time_delta = systim_next - systim;
                   temp = time_delta;
 ====>             rem = do_div(temp, incvalue);

This change makes kernel survive this, and users report that
NIC does work after this change.

Since on real hardware incvalue is never zero, this should not affect
real hardware use case.

Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
2016-06-29 10:00:22 -07:00
..
80003es2lan.c e1000e: use BIT() macro for bit defines 2016-05-13 15:15:36 -07:00
80003es2lan.h e1000e: Bump the version to 3.2.5 2015-06-03 04:13:39 -07:00
82571.c e1000e: use BIT() macro for bit defines 2016-05-13 15:15:36 -07:00
82571.h e1000e: Bump the version to 3.2.5 2015-06-03 04:13:39 -07:00
defines.h e1000e: Adds hardware supported cross timestamp on e1000e nic 2016-03-03 14:28:46 -08:00
e1000.h e1000e: don't modify SYSTIM registers during SIOCSHWTSTAMP ioctl 2016-05-13 15:30:44 -07:00
ethtool.c e1000e: use BIT() macro for bit defines 2016-05-13 15:15:36 -07:00
hw.h e1000e: Initial support for KabeLake 2016-02-24 14:53:30 -08:00
ich8lan.c e1000e: use BIT() macro for bit defines 2016-05-13 15:15:36 -07:00
ich8lan.h e1000e: mark shifted values as unsigned 2016-05-13 15:19:05 -07:00
mac.c e1000e: use BIT() macro for bit defines 2016-05-13 15:15:36 -07:00
mac.h e1000e: Bump the version to 3.2.5 2015-06-03 04:13:39 -07:00
Makefile e1000e: Cleanup - Update GPL header and Copyright 2014-03-07 21:55:27 -08:00
manage.c e1000e: Bump the version to 3.2.5 2015-06-03 04:13:39 -07:00
manage.h e1000e: Bump the version to 3.2.5 2015-06-03 04:13:39 -07:00
netdev.c e1000e: prevent division by zero if TIMINCA is zero 2016-06-29 10:00:22 -07:00
nvm.c e1000e: use BIT() macro for bit defines 2016-05-13 15:15:36 -07:00
nvm.h e1000e: Bump the version to 3.2.5 2015-06-03 04:13:39 -07:00
param.c e1000e: Bump the version to 3.2.5 2015-06-03 04:13:39 -07:00
phy.c e1000e: use BIT() macro for bit defines 2016-05-13 15:15:36 -07:00
phy.h e1000e: use BIT() macro for bit defines 2016-05-13 15:15:36 -07:00
ptp.c e1000e: don't modify SYSTIM registers during SIOCSHWTSTAMP ioctl 2016-05-13 15:30:44 -07:00
regs.h e1000e: Adds hardware supported cross timestamp on e1000e nic 2016-03-03 14:28:46 -08:00