Re: e1000e: can TIMINCA register be zero?

From: Richard Cochran
Date: Tue Apr 19 2016 - 09:07:22 EST


On Tue, Apr 19, 2016 at 12:44:08PM +0200, Denys Vlasenko wrote:
> User says it happens on hotplug.

This sounds familiar.

http://lists.openwall.net/netdev/2016/02/07/90

It also only ever happends in a VM, right?

> In 1000e_config_hwtstamp(), it is initialized before timecounter_init():

...

> By code inspection, e1000e_get_base_timinca() either returns -EINVAL
> and we don't do timecounter_init() and the division/0 location
> is not reached, or e1000e_get_base_timinca(&regval) sets
> nonzero regval. Then we set TIMINCA to this nonzero value.

Right, the register is always set to a non-zero value.

> Isn't it fishy that then timecounter_init() -> e1000e_cyclecounter_read()
> -> er32(TIMINCA) sees zero there?

Sure is.

Thanks,
Richard