On Fri, Oct 14, 2016 at 08:58:22AM +0000, Koehrer Mathias (ETAS/ESW5) wrote:
> Hi Julia,
> > Have you tested on a vanilla (non-RT) kernel? I doubt there is anything RT
> > specific
> > about what you are seeing, but it might be nice to get confirmation. Also,
> > bisection
> > would probably be easier if you confirm on a vanilla kernel.
> > I find it unlikely that it's a kernel config option that changed which
> > regressed you, but
> > instead was a code change to a driver. Which driver is now the question,
> > and the
> > surface area is still big (processor mapping attributes for this region,
> > PCI root
> > complex configuration, PCI brige configuration, igb driver itself, etc.).
> > Big enough that I'd recommend a bisection. It looks like a bisection
> > between 3.18
> > and 4.8 would take you about 18 tries to narrow down, assuming all goes
> > well.
> I have now repeated my tests using the vanilla kernel.
> There I got the very same issue.
> Using kernel 4.0 is fine, however starting with kernel 4.1, the issue appears.
Great, thanks for confirming! That helps narrow things down quite a
> Here is my exact (reproducible) test description:
> I applied the following patch to the kernel to get the igb trace.
> This patch instruments the igb_rd32() function to measure the call
> to readl() which is used to access registers of the igb NIC.
I took your test setup and ran it between 4.0 and 4.1 on the hardware on
my desk, which is an Atom-based board with dual I210s, however I didn't
see much difference.
However, it's a fairly simple board, with a much simpler PCI topology
than your workstation. I'll see if I can find some other hardware to
> This means, that I think that some other stuff in kernel 4.1 has changed,
> which has impact on the igb accesses.
> Any idea what component could cause this kind of issue?
Can you continue your bisection using 'git bisect'? You've already
narrowed it down between 4.0 and 4.1, so you're well on your way.
Another option might be to try to eliminate igb from the picture as
well, and try reading from another device from the same (or, perhaps
nearest) bus segment, and see if you see the same results.