From: <Alex_Gagniuc@Dellteam.com>
To: <helgaas@kernel.org>, <mr.nuke.me@gmail.com>
Cc: <bhelgaas@google.com>, <keith.busch@intel.com>,
<Austin.Bolen@dell.com>, <Shyam.Iyer@dell.com>,
<fred@fredlawl.com>, <poza@codeaurora.org>,
<linux-pci@vger.kernel.org>, <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] PCI/AER: Do not clear AER bits if we don't own AER
Date: Thu, 9 Aug 2018 16:46:32 +0000 [thread overview]
Message-ID: <2cae6a5ac8324be18b8dcf3d7dfcc288@ausx13mps321.AMER.DELL.COM> (raw)
In-Reply-To: <20180809141551.GH49411@bhelgaas-glaptop.roam.corp.google.com>
On 08/09/2018 09:16 AM, Bjorn Helgaas wrote:
> On Tue, Jul 17, 2018 at 10:31:23AM -0500, Alexandru Gagniuc wrote:
>> When we don't own AER, we shouldn't touch the AER error bits. This
>> happens unconditionally on device probe(). Clearing AER bits
>> willy-nilly might cause firmware to miss errors. Instead
>> these bits should get cleared by FFS, or via ACPI _HPX method.
>>
>> This race is mostly of theoretical significance, as it is not easy to
>> reasonably demonstrate it in testing.
>>
>> Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
>> ---
>> drivers/pci/pcie/aer.c | 3 +++
>> 1 file changed, 3 insertions(+)
>>
>> diff --git a/drivers/pci/pcie/aer.c b/drivers/pci/pcie/aer.c
>> index a2e88386af28..18037a2a8231 100644
>> --- a/drivers/pci/pcie/aer.c
>> +++ b/drivers/pci/pcie/aer.c
>> @@ -383,6 +383,9 @@ int pci_cleanup_aer_error_status_regs(struct pci_dev *dev)
>> if (!pci_is_pcie(dev))
>> return -ENODEV;
>>
>> + if (pcie_aer_get_firmware_first(dev))
>> + return -EIO;
>
> I like this patch.
>
> Do we need the same thing in the following places that also clear AER
> status bits or write AER control bits?
In theory, every exported function would guard for this. I think the
idea a long long time ago was that the check happens during
initialization, and the others are not hit.
> enable_ecrc_checking()
> disable_ecrc_checking()
I don't immediately see how this would affect FFS, but the bits are part
of the AER capability structure. According to the FFS model, those would
be owned by FW, and we'd have to avoid touching them.
> pci_cleanup_aer_uncorrect_error_status()
This probably should be guarded. It's only called from a few specific
drivers, so the impact is not as high as being called from the core.
> pci_aer_clear_fatal_status()
This is only called when doing fatal_recovery, right?
For practical considerations this is not an issue today. The ACPI error
handling code currently crashes when it encounters any fatal error, so
we wouldn't hit this in the FFS case.
If the ACPI code pulls its thinking appendage out of the other end of
the digestive tract, then we could be hitting this in the future. For
correctness, guarding makes sense.
The PCIe standards contact I usually talk to about these PCIe subtleties
is currently on vacation. The number one issue was a FFS corner case
with OS clearing bits on probe. The other functions you mention are a
corner case of a corner case. The big fish is
pci_cleanup_aer_error_status_regs() on probe(), and it would be nice to
have that resolved.
I'll sync up with Austin when he gets back to see about the other
functions though I suspect we'll end up fixing them as well.
Alex
>> pos = dev->aer_cap;
>> if (!pos)
>> return -EIO;
>> --
>> 2.14.3
>>
>
next prev parent reply other threads:[~2018-08-09 16:46 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-07-17 15:31 Alexandru Gagniuc
2018-07-17 15:41 ` Sinan Kaya
2018-07-19 15:55 ` Alex G.
2018-07-19 16:58 ` Sinan Kaya
2018-07-19 19:56 ` Alex G.
2018-07-23 16:52 ` [PATCH v2] " Alexandru Gagniuc
2018-07-24 15:59 ` Alex G.
2018-07-30 23:35 ` [PATCH v3] " Alexandru Gagniuc
2018-08-08 1:14 ` Bjorn Helgaas
2018-08-08 3:46 ` Alex G.
2018-07-24 17:08 ` [PATCH v2] " kbuild test robot
2018-07-25 1:03 ` kbuild test robot
2018-08-09 14:15 ` [PATCH] " Bjorn Helgaas
2018-08-09 16:46 ` Alex_Gagniuc [this message]
2018-08-09 18:29 ` Bjorn Helgaas
2018-08-09 19:00 ` Alex G.
2018-08-09 19:18 ` Bjorn Helgaas
2018-08-09 19:42 ` Alex G.
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=2cae6a5ac8324be18b8dcf3d7dfcc288@ausx13mps321.AMER.DELL.COM \
--to=alex_gagniuc@dellteam.com \
--cc=Austin.Bolen@dell.com \
--cc=Shyam.Iyer@dell.com \
--cc=bhelgaas@google.com \
--cc=fred@fredlawl.com \
--cc=helgaas@kernel.org \
--cc=keith.busch@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=mr.nuke.me@gmail.com \
--cc=poza@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®