From: Sathyanarayanan Kuppuswamy <sathyanarayanan.kuppuswamy@linux.intel.com>
To: Zhuo Chen <chenzhuo.1@bytedance.com>,
ruscur@russell.cc, oohall@gmail.com, bhelgaas@google.com
Cc: lukas@wunner.de, jan.kiszka@siemens.com,
stuart.w.hayes@gmail.com, linuxppc-dev@lists.ozlabs.org,
linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2] PCI/ERR: Use pcie_aer_is_native() to judge whether OS owns AER
Date: Tue, 26 Jul 2022 08:33:54 -0700 [thread overview]
Message-ID: <b41d1840-b726-2caa-5bc8-69c3aeb230cf@linux.intel.com> (raw)
In-Reply-To: <20220726020527.99816-1-chenzhuo.1@bytedance.com>
On 7/25/22 7:05 PM, Zhuo Chen wrote:
> The AER status of the device that reported the error rather than
> the first downstream port is cleared after commit 7d7cbeaba5b7
> ("PCI/ERR: Clear status of the reporting device"). So "a bridge
> may not exist" which commit aa344bc8b727 ("PCI/ERR: Clear AER
> status only when we control AER") referring to is no longer
> existent, and we just use pcie_aer_is_native() in stead of
> "host->native_aer || pcie_ports_native".
IMO, above history is not required to justify using pcie_aer_is_native()
in place of "host->native_aer || pcie_ports_native".
>
> pci_aer_clear_nonfatal_status() already has pcie_aer_is_native(),
> so we move pci_aer_clear_nonfatal_status() out of
> pcie_aer_is_native().
Moving it outside (pcie_aer_is_native()) does not optimize the
code. So I think it is better to leave it inside.
>
> Replace statements that judge whether OS owns AER in
> get_port_device_capability() with pcie_aer_is_native(), which has
> no functional changes.
>
> Signed-off-by: Zhuo Chen <chenzhuo.1@bytedance.com>
> ---
> v2:
> - Add details and note in commit log
> ---
> drivers/pci/pcie/err.c | 12 ++----------
> drivers/pci/pcie/portdrv_core.c | 3 +--
> 2 files changed, 3 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/pci/pcie/err.c b/drivers/pci/pcie/err.c
> index 0c5a143025af..28339c741555 100644
> --- a/drivers/pci/pcie/err.c
> +++ b/drivers/pci/pcie/err.c
> @@ -184,7 +184,6 @@ pci_ers_result_t pcie_do_recovery(struct pci_dev *dev,
> int type = pci_pcie_type(dev);
> struct pci_dev *bridge;
> pci_ers_result_t status = PCI_ERS_RESULT_CAN_RECOVER;
> - struct pci_host_bridge *host = pci_find_host_bridge(dev->bus);
>
> /*
> * If the error was detected by a Root Port, Downstream Port, RCEC,
> @@ -237,16 +236,9 @@ pci_ers_result_t pcie_do_recovery(struct pci_dev *dev,
> pci_dbg(bridge, "broadcast resume message\n");
> pci_walk_bridge(bridge, report_resume, &status);
>
> - /*
> - * If we have native control of AER, clear error status in the device
> - * that detected the error. If the platform retained control of AER,
> - * it is responsible for clearing this status. In that case, the
> - * signaling device may not even be visible to the OS.
> - */
The above comment is still applicable. So I think you don't need to remove it.
> - if (host->native_aer || pcie_ports_native) {
> + if (pcie_aer_is_native(dev))
> pcie_clear_device_status(dev);
> - pci_aer_clear_nonfatal_status(dev);
> - }
> + pci_aer_clear_nonfatal_status(dev);
> pci_info(bridge, "device recovery successful\n");
> return status;
>
> diff --git a/drivers/pci/pcie/portdrv_core.c b/drivers/pci/pcie/portdrv_core.c
> index 604feeb84ee4..98c18f4a01b2 100644
> --- a/drivers/pci/pcie/portdrv_core.c
> +++ b/drivers/pci/pcie/portdrv_core.c
> @@ -221,8 +221,7 @@ static int get_port_device_capability(struct pci_dev *dev)
> }
>
> #ifdef CONFIG_PCIEAER
> - if (dev->aer_cap && pci_aer_available() &&
> - (pcie_ports_native || host->native_aer)) {
> + if (pcie_aer_is_native(dev) && pci_aer_available()) {
> services |= PCIE_PORT_SERVICE_AER;
>
> /*
--
Sathyanarayanan Kuppuswamy
Linux Kernel Developer
WARNING: multiple messages have this Message-ID (diff)
From: Sathyanarayanan Kuppuswamy <sathyanarayanan.kuppuswamy@linux.intel.com>
To: Zhuo Chen <chenzhuo.1@bytedance.com>,
ruscur@russell.cc, oohall@gmail.com, bhelgaas@google.com
Cc: linux-pci@vger.kernel.org, stuart.w.hayes@gmail.com,
linux-kernel@vger.kernel.org, lukas@wunner.de,
jan.kiszka@siemens.com, linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH v2] PCI/ERR: Use pcie_aer_is_native() to judge whether OS owns AER
Date: Tue, 26 Jul 2022 08:33:54 -0700 [thread overview]
Message-ID: <b41d1840-b726-2caa-5bc8-69c3aeb230cf@linux.intel.com> (raw)
In-Reply-To: <20220726020527.99816-1-chenzhuo.1@bytedance.com>
On 7/25/22 7:05 PM, Zhuo Chen wrote:
> The AER status of the device that reported the error rather than
> the first downstream port is cleared after commit 7d7cbeaba5b7
> ("PCI/ERR: Clear status of the reporting device"). So "a bridge
> may not exist" which commit aa344bc8b727 ("PCI/ERR: Clear AER
> status only when we control AER") referring to is no longer
> existent, and we just use pcie_aer_is_native() in stead of
> "host->native_aer || pcie_ports_native".
IMO, above history is not required to justify using pcie_aer_is_native()
in place of "host->native_aer || pcie_ports_native".
>
> pci_aer_clear_nonfatal_status() already has pcie_aer_is_native(),
> so we move pci_aer_clear_nonfatal_status() out of
> pcie_aer_is_native().
Moving it outside (pcie_aer_is_native()) does not optimize the
code. So I think it is better to leave it inside.
>
> Replace statements that judge whether OS owns AER in
> get_port_device_capability() with pcie_aer_is_native(), which has
> no functional changes.
>
> Signed-off-by: Zhuo Chen <chenzhuo.1@bytedance.com>
> ---
> v2:
> - Add details and note in commit log
> ---
> drivers/pci/pcie/err.c | 12 ++----------
> drivers/pci/pcie/portdrv_core.c | 3 +--
> 2 files changed, 3 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/pci/pcie/err.c b/drivers/pci/pcie/err.c
> index 0c5a143025af..28339c741555 100644
> --- a/drivers/pci/pcie/err.c
> +++ b/drivers/pci/pcie/err.c
> @@ -184,7 +184,6 @@ pci_ers_result_t pcie_do_recovery(struct pci_dev *dev,
> int type = pci_pcie_type(dev);
> struct pci_dev *bridge;
> pci_ers_result_t status = PCI_ERS_RESULT_CAN_RECOVER;
> - struct pci_host_bridge *host = pci_find_host_bridge(dev->bus);
>
> /*
> * If the error was detected by a Root Port, Downstream Port, RCEC,
> @@ -237,16 +236,9 @@ pci_ers_result_t pcie_do_recovery(struct pci_dev *dev,
> pci_dbg(bridge, "broadcast resume message\n");
> pci_walk_bridge(bridge, report_resume, &status);
>
> - /*
> - * If we have native control of AER, clear error status in the device
> - * that detected the error. If the platform retained control of AER,
> - * it is responsible for clearing this status. In that case, the
> - * signaling device may not even be visible to the OS.
> - */
The above comment is still applicable. So I think you don't need to remove it.
> - if (host->native_aer || pcie_ports_native) {
> + if (pcie_aer_is_native(dev))
> pcie_clear_device_status(dev);
> - pci_aer_clear_nonfatal_status(dev);
> - }
> + pci_aer_clear_nonfatal_status(dev);
> pci_info(bridge, "device recovery successful\n");
> return status;
>
> diff --git a/drivers/pci/pcie/portdrv_core.c b/drivers/pci/pcie/portdrv_core.c
> index 604feeb84ee4..98c18f4a01b2 100644
> --- a/drivers/pci/pcie/portdrv_core.c
> +++ b/drivers/pci/pcie/portdrv_core.c
> @@ -221,8 +221,7 @@ static int get_port_device_capability(struct pci_dev *dev)
> }
>
> #ifdef CONFIG_PCIEAER
> - if (dev->aer_cap && pci_aer_available() &&
> - (pcie_ports_native || host->native_aer)) {
> + if (pcie_aer_is_native(dev) && pci_aer_available()) {
> services |= PCIE_PORT_SERVICE_AER;
>
> /*
--
Sathyanarayanan Kuppuswamy
Linux Kernel Developer
next prev parent reply other threads:[~2022-07-26 15:33 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-26 2:05 [PATCH v2] PCI/ERR: Use pcie_aer_is_native() to judge whether OS owns AER Zhuo Chen
2022-07-26 2:05 ` Zhuo Chen
2022-07-26 15:33 ` Sathyanarayanan Kuppuswamy [this message]
2022-07-26 15:33 ` Sathyanarayanan Kuppuswamy
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=b41d1840-b726-2caa-5bc8-69c3aeb230cf@linux.intel.com \
--to=sathyanarayanan.kuppuswamy@linux.intel.com \
--cc=bhelgaas@google.com \
--cc=chenzhuo.1@bytedance.com \
--cc=jan.kiszka@siemens.com \
--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=ruscur@russell.cc \
--cc=stuart.w.hayes@gmail.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 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.