From: Alexandru Gagniuc <mr.nuke.me@gmail.com>
To: helgaas@google.com
Cc: alex_gagniuc@dellteam.com, Sam Bobroff <sbobroff@linux.ibm.com>,
linux-pci@vger.kernel.org, Shyam_Iyer@Dell.com,
"Rafael J. Wysocki" <rjw@rjwysocki.net>,
linux-kernel@vger.kernel.org, keith.busch@intel.com,
linux-acpi@vger.kernel.org, lukas@wunner.de,
Oliver O'Halloran <oohall@gmail.com>,
Alexandru Gagniuc <mr.nuke.me@gmail.com>,
Bjorn Helgaas <bhelgaas@google.com>,
austin_bolen@dell.com, linuxppc-dev@lists.ozlabs.org,
Len Brown <lenb@kernel.org>
Subject: [PATCH 2/2] PCI/AER: Determine AER ownership based on _OSC instead of HEST
Date: Thu, 15 Nov 2018 17:16:03 -0600 [thread overview]
Message-ID: <20181115231605.24352-3-mr.nuke.me@gmail.com> (raw)
In-Reply-To: <20181115231605.24352-1-mr.nuke.me@gmail.com>
HEST is used to describe the meaning of errors received as part of ACPI
Platform Error Interfaces (APEI), however the correct way to determine
AER ownership is the _OSC method.
pci_dev->__aer_firmware_first is used to prevent modification of AER
registers when firmware owns AER. This is synonymous with the AER
ownership negotiated during _OSC. Thus _OSC is the correct way to
use to set this flag, not HEST.
Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
---
drivers/pci/pcie/aer.c | 57 ++----------------------------------------
1 file changed, 2 insertions(+), 55 deletions(-)
diff --git a/drivers/pci/pcie/aer.c b/drivers/pci/pcie/aer.c
index ac014151b7a6..dd9594e8ed08 100644
--- a/drivers/pci/pcie/aer.c
+++ b/drivers/pci/pcie/aer.c
@@ -240,66 +240,13 @@ static inline bool hest_match_type(struct acpi_hest_header *hest_hdr,
return false;
}
-struct aer_hest_parse_info {
- struct pci_dev *pci_dev;
- int firmware_first;
-};
-
-static int hest_source_is_pcie_aer(struct acpi_hest_header *hest_hdr)
-{
- if (hest_hdr->type == ACPI_HEST_TYPE_AER_ROOT_PORT ||
- hest_hdr->type == ACPI_HEST_TYPE_AER_ENDPOINT ||
- hest_hdr->type == ACPI_HEST_TYPE_AER_BRIDGE)
- return 1;
- return 0;
-}
-
-static int aer_hest_parse(struct acpi_hest_header *hest_hdr, void *data)
-{
- struct aer_hest_parse_info *info = data;
- struct acpi_hest_aer_common *p;
- int ff;
-
- if (!hest_source_is_pcie_aer(hest_hdr))
- return 0;
-
- p = (struct acpi_hest_aer_common *)(hest_hdr + 1);
- ff = !!(p->flags & ACPI_HEST_FIRMWARE_FIRST);
-
- /*
- * If no specific device is supplied, determine whether
- * FIRMWARE_FIRST is set for *any* PCIe device.
- */
- if (!info->pci_dev) {
- info->firmware_first |= ff;
- return 0;
- }
- /* Otherwise, check the specific device */
- if (p->flags & ACPI_HEST_GLOBAL) {
- if (hest_match_type(hest_hdr, info->pci_dev))
- info->firmware_first = ff;
- } else
- if (hest_match_pci(p, info->pci_dev))
- info->firmware_first = ff;
-
- return 0;
-}
static void aer_set_firmware_first(struct pci_dev *pci_dev)
{
- int rc;
- struct aer_hest_parse_info info = {
- .pci_dev = pci_dev,
- .firmware_first = 0,
- };
+ struct pci_host_bridge *host = pci_find_host_bridge(pci_dev->bus);
- rc = apei_hest_parse(aer_hest_parse, &info);
-
- if (rc)
- pci_dev->__aer_firmware_first = 0;
- else
- pci_dev->__aer_firmware_first = info.firmware_first;
+ pci_dev->__aer_firmware_first = !host->native_aer;
pci_dev->__aer_firmware_first_valid = 1;
}
--
2.17.1
next prev parent reply other threads:[~2018-11-15 23:33 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-15 23:16 [PATCH 0/2] PCI/AER: Consistently use _OSC to determine who owns AER Alexandru Gagniuc
2018-11-15 23:16 ` [PATCH 1/2] PCI/AER: Do not use APEI/HEST to disable AER services globally Alexandru Gagniuc
2018-11-15 23:16 ` Alexandru Gagniuc [this message]
2018-11-15 23:43 ` [PATCH 2/2] PCI/AER: Determine AER ownership based on _OSC instead of HEST Keith Busch
2018-11-16 1:49 ` [PATCH 0/2] PCI/AER: Consistently use _OSC to determine who owns AER Sinan Kaya
2018-11-19 16:53 ` Tyler Baicar
2018-11-19 16:53 ` Keith Busch
2018-11-19 17:32 ` Sinan Kaya
2018-11-19 17:36 ` Keith Busch
2018-11-19 17:42 ` Sinan Kaya
2018-11-19 17:41 ` Keith Busch
2018-11-19 17:56 ` Sinan Kaya
2018-11-19 18:10 ` Keith Busch
2018-11-19 18:24 ` Sinan Kaya
2018-11-19 19:11 ` Alex G.
2018-11-19 19:32 ` Sinan Kaya
2018-11-19 20:16 ` Alex_Gagniuc
2018-11-19 20:33 ` Sinan Kaya
2018-11-19 23:49 ` Alex_Gagniuc
2018-11-20 1:54 ` Sinan Kaya
2018-11-20 20:44 ` Alex_Gagniuc
2018-11-20 21:02 ` Sinan Kaya
2018-11-20 21:42 ` Keith Busch
2018-11-20 22:28 ` Sinan Kaya
2018-11-20 22:35 ` Alex G.
2018-11-20 21:46 ` Alex_Gagniuc
2018-11-20 22:08 ` Sinan Kaya
2018-11-20 22:36 ` Alex_Gagniuc
2018-11-27 18:22 ` Alex_Gagniuc
2018-11-27 18:32 ` Sinan Kaya
2018-11-27 18:46 ` Tyler Baicar
2018-11-16 12:37 ` David Laight
2019-03-05 23:16 ` 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=20181115231605.24352-3-mr.nuke.me@gmail.com \
--to=mr.nuke.me@gmail.com \
--cc=Shyam_Iyer@Dell.com \
--cc=alex_gagniuc@dellteam.com \
--cc=austin_bolen@dell.com \
--cc=bhelgaas@google.com \
--cc=helgaas@google.com \
--cc=keith.busch@intel.com \
--cc=lenb@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=lukas@wunner.de \
--cc=oohall@gmail.com \
--cc=rjw@rjwysocki.net \
--cc=sbobroff@linux.ibm.com \
/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).