From: okaya@codeaurora.org (okaya@codeaurora.org)
Subject: AER: Malformed TLP recovery deadlock with NVMe drives
Date: Mon, 07 May 2018 21:30:22 +0100 [thread overview]
Message-ID: <9fc90040d5712282ea223807ace39312@codeaurora.org> (raw)
In-Reply-To: <5c97a7c2-cb53-4740-fda0-50ba92288c5c@gmail.com>
On 2018-05-07 21:16, Alex G. wrote:
> On 05/07/2018 01:46 PM, okaya@codeaurora.org wrote:
>> On 2018-05-07 19:36, Alex G. wrote:
>>> Hi! Me again!
>>>
>>> I'm seeing what appears to be a deadlock in the AER recovery path. It
>>> seems that the device_lock() call in report_slot_reset() never
>>> returns.
>>> How we get there is interesting:
>>
>> Can you give this patch a try?
>>
> Oh! Patches so soon? Yay!
>
>> https://patchwork.kernel.org/patch/10351515/
>
> Thank you! I tried a few runs. there was one run where we didn't lock
> up, but the other runs all went like before.
>
> For comparison, the run that didn't deadlock looked like [2].
>
Sounds like there are multiple problems. With this patch, you shouldn't
see link down and up interrupts during reset but i do see them in the
log.
Can you also share a fail case log with this patch and a diff of your
hacks so that we know where prints are coming from.
> Alex
>
> [2] http://gtech.myftp.org/~mrnuke/nvme_logs/log-20180507-1429.log
>
>>> Injection of the error happens by changing the maximum payload size
>>> to
>>> 128 bytes from 256. This is on the switch upstream port.
>>> When there's IO to the drive, switch sees a malformed TLP. Switch
>>> reports error, AER handles it.
>>> More IO goes, another error is triggered, and this time the root port
>>> reports it. AER recovery hits the NVMe drive behind the affetced
>>> upstream port and deadlocks.
>>>
>>> I've added some printks in the AER handler to see which lock dies,
>>> and I
>>> have a fairly succinct log[1], also pasted below. It appears somebody
>>> is
>>> already holding the lock to the PCI device behind the sick upstream
>>> port, and never releases it.
>>>
>>>
>>> I'm not sure how to track down other users of the lock, and I"m
>>> hoping
>>> somebody may have a brighter idea.
>>>
>>> Alex
>>>
>>>
>>> [1] http://gtech.myftp.org/~mrnuke/nvme_logs/log-20180507-1308.log
>>>
> ``
WARNING: multiple messages have this Message-ID (diff)
From: okaya@codeaurora.org
To: "Alex G." <mr.nuke.me@gmail.com>
Cc: Alex_Gagniuc@dellteam.com, linux-pci@vger.kernel.org,
shyam_iyer@dell.com, linux-nvme@lists.infradead.org,
Keith Busch <keith.busch@intel.com>,
austin_bolen@dell.com, linux-pci-owner@vger.kernel.org
Subject: Re: AER: Malformed TLP recovery deadlock with NVMe drives
Date: Mon, 07 May 2018 21:30:22 +0100 [thread overview]
Message-ID: <9fc90040d5712282ea223807ace39312@codeaurora.org> (raw)
In-Reply-To: <5c97a7c2-cb53-4740-fda0-50ba92288c5c@gmail.com>
On 2018-05-07 21:16, Alex G. wrote:
> On 05/07/2018 01:46 PM, okaya@codeaurora.org wrote:
>> On 2018-05-07 19:36, Alex G. wrote:
>>> Hi! Me again!
>>>
>>> I'm seeing what appears to be a deadlock in the AER recovery path. It
>>> seems that the device_lock() call in report_slot_reset() never
>>> returns.
>>> How we get there is interesting:
>>
>> Can you give this patch a try?
>>
> Oh! Patches so soon? Yay!
>
>> https://patchwork.kernel.org/patch/10351515/
>
> Thank you! I tried a few runs. there was one run where we didn't lock
> up, but the other runs all went like before.
>
> For comparison, the run that didn't deadlock looked like [2].
>
Sounds like there are multiple problems. With this patch, you shouldn't
see link down and up interrupts during reset but i do see them in the
log.
Can you also share a fail case log with this patch and a diff of your
hacks so that we know where prints are coming from.
> Alex
>
> [2] http://gtech.myftp.org/~mrnuke/nvme_logs/log-20180507-1429.log
>
>>> Injection of the error happens by changing the maximum payload size
>>> to
>>> 128 bytes from 256. This is on the switch upstream port.
>>> When there's IO to the drive, switch sees a malformed TLP. Switch
>>> reports error, AER handles it.
>>> More IO goes, another error is triggered, and this time the root port
>>> reports it. AER recovery hits the NVMe drive behind the affetced
>>> upstream port and deadlocks.
>>>
>>> I've added some printks in the AER handler to see which lock dies,
>>> and I
>>> have a fairly succinct log[1], also pasted below. It appears somebody
>>> is
>>> already holding the lock to the PCI device behind the sick upstream
>>> port, and never releases it.
>>>
>>>
>>> I'm not sure how to track down other users of the lock, and I"m
>>> hoping
>>> somebody may have a brighter idea.
>>>
>>> Alex
>>>
>>>
>>> [1] http://gtech.myftp.org/~mrnuke/nvme_logs/log-20180507-1308.log
>>>
> ``
_______________________________________________
Linux-nvme mailing list
Linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme
next prev parent reply other threads:[~2018-05-07 20:30 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-07 18:36 AER: Malformed TLP recovery deadlock with NVMe drives Alex G.
2018-05-07 18:36 ` Alex G.
2018-05-07 18:46 ` okaya
2018-05-07 18:46 ` okaya
2018-05-07 20:16 ` Alex G.
2018-05-07 20:16 ` Alex G.
2018-05-07 20:30 ` okaya [this message]
2018-05-07 20:30 ` okaya
2018-05-07 20:58 ` Alex G.
2018-05-07 20:58 ` Alex G.
2018-05-07 21:48 ` Sinan Kaya
2018-05-07 21:48 ` Sinan Kaya
2018-05-07 22:45 ` okaya
2018-05-07 22:45 ` okaya
2018-05-07 23:57 ` Alex_Gagniuc
2018-05-07 23:57 ` Alex_Gagniuc
2018-05-08 0:21 ` okaya
2018-05-08 0:21 ` okaya
2018-05-08 16:58 ` Bjorn Helgaas
2018-05-08 16:58 ` Bjorn Helgaas
2018-05-08 17:32 ` Alex G.
2018-05-08 17:32 ` Alex G.
2018-05-08 18:01 ` Bjorn Helgaas
2018-05-08 18:01 ` Bjorn Helgaas
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=9fc90040d5712282ea223807ace39312@codeaurora.org \
--to=okaya@codeaurora.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.