From: Jonathan David <jonathan.david@ni.com>
To: Henrik Austad <henrik@austad.us>
Cc: <linux-rt-users@vger.kernel.org>, <josh.cartwright@ni.com>
Subject: Re: [RFC] e1000e: Add delays after writing to registers
Date: Tue, 3 Nov 2015 16:10:23 -0600 [thread overview]
Message-ID: <563930CF.9090800@ni.com> (raw)
In-Reply-To: <20151103194246.GA19824@sisyphus.home.austad.us>
On 11/03/2015 01:42 PM, Henrik Austad wrote:
> On Tue, Nov 03, 2015 at 11:43:21AM -0600, Jonathan David wrote:
>> On 10/22/2015 12:59 AM, Henrik Austad wrote:
>>>> Adding a delay after long series of writes gives them time to
>>>> complete, and for higher priority tasks to run unimpeded.
>>>
>>> Aren't we running with threaded interrupts?
>>>
>>> What happens to the thread(s) pushing data to the network?
>>> What about xmit-buffer once it is full? Which thread will block on send or
>>> have its sk_buff dropped?
>>
>> All of this is totally irrelevant to the problem we are seeing.
>
> If this is irrelevant, why hack at the network-driver, hmm?
It is relevant to the network driver, as this is where the symptoms were
discovered; however, it has no relation to the packet delivery path.
This is related purely to link configuration.
>> The e1000x driver itself is not responsible for the delay here.
>
> ... then why hack the network-driver?
Lack of better known options.
>> The issue is with PCI where issuing a large number of MMIO writes
>> followed by a read (to force said writes to execute) will stall the CPU.
>> When the CPU is stalled, no interrupts are serviced, including the local
>> apic timer interrupt, which was responsible for waking up cyclictest.
>> This behavior was observed within traces gathered from cyclictest with
>> ftrace enabled.
>
> So you get bogged down with interrupts disabled;
No, interrupts are entirely enabled while the PCI MMIO writes/read are
issued; but the local apic timer still arrives late, presumably because
the CPU is waiting to complete whatever writes remain in the buffer.
I think this might be the root of our miscommunication. You are asking
good questions about threaded interrupts, etc, but it isn't clear how
they are related to the specific problem we are seeing.
Thanks,
- JD
next prev parent reply other threads:[~2015-11-03 22:10 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-21 22:07 [RFC] e1000e: Add delays after writing to registers Jonathan David
2015-10-22 5:59 ` Henrik Austad
2015-11-03 17:43 ` Jonathan David
2015-11-03 19:42 ` Henrik Austad
2015-11-03 22:10 ` Jonathan David [this message]
2015-11-06 5:53 ` Henrik Austad
2015-11-06 11:08 ` Thomas Gleixner
2015-11-06 15:46 ` Armin Steinhoff
2015-11-06 17:22 ` Thomas Gleixner
2015-11-06 18:38 ` Jonathan David
2016-01-12 15:37 ` AW: " eg Engleder Gerhard
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=563930CF.9090800@ni.com \
--to=jonathan.david@ni.com \
--cc=henrik@austad.us \
--cc=josh.cartwright@ni.com \
--cc=linux-rt-users@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).