From: Bjorn Helgaas <helgaas@kernel.org>
To: sathyanarayanan.kuppuswamy@linux.intel.com
Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org,
ashok.raj@intel.com
Subject: Re: [PATCH v16 5/9] PCI/DPC: Cache DPC capabilities in pci_init_capabilities()
Date: Tue, 3 Mar 2020 18:47:05 -0600 [thread overview]
Message-ID: <20200304004705.GA184443@google.com> (raw)
In-Reply-To: <a3a634b6c6012773e9e668c2110e13a5bd196bb8.1582850766.git.sathyanarayanan.kuppuswamy@linux.intel.com>
On Thu, Feb 27, 2020 at 04:59:47PM -0800, sathyanarayanan.kuppuswamy@linux.intel.com wrote:
> From: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
>
> Since we need to re-use DPC error handling routines in Error Disconnect
> Recover (EDR) driver, move the initalization and caching of DPC
> capabilities to pci_init_capabilities().
>
> Signed-off-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
> ---
> drivers/pci/pci.h | 2 ++
> drivers/pci/pcie/dpc.c | 32 ++++++++++++++++++++------------
> 2 files changed, 22 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h
> index c2c35f152cde..e57e78b619f8 100644
> --- a/drivers/pci/pci.h
> +++ b/drivers/pci/pci.h
> @@ -448,9 +448,11 @@ void aer_print_error(struct pci_dev *dev, struct aer_err_info *info);
> #ifdef CONFIG_PCIE_DPC
> void pci_save_dpc_state(struct pci_dev *dev);
> void pci_restore_dpc_state(struct pci_dev *dev);
> +void pci_dpc_init(struct pci_dev *pdev);
> #else
> static inline void pci_save_dpc_state(struct pci_dev *dev) {}
> static inline void pci_restore_dpc_state(struct pci_dev *dev) {}
> +static inline void pci_dpc_init(struct pci_dev *pdev) {}
> #endif
>
> #ifdef CONFIG_PCI_ATS
> diff --git a/drivers/pci/pcie/dpc.c b/drivers/pci/pcie/dpc.c
> index 114358d62ddf..57e7f94b98cf 100644
> --- a/drivers/pci/pcie/dpc.c
> +++ b/drivers/pci/pcie/dpc.c
> @@ -249,6 +249,26 @@ static irqreturn_t dpc_irq(int irq, void *context)
> return IRQ_HANDLED;
> }
>
> +void pci_dpc_init(struct pci_dev *pdev)
> +{
I think you forgot to call this?
> + u16 cap;
> +
> + pdev->dpc_cap = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_DPC);
> + if (!pdev->dpc_cap)
> + return;
> +
> + pci_read_config_word(pdev, pdev->dpc_cap + PCI_EXP_DPC_CAP, &cap);
> + pdev->dpc_rp_extensions = (cap & PCI_EXP_DPC_CAP_RP_EXT) ? 1 : 0;
> + if (pdev->dpc_rp_extensions) {
> + pdev->dpc_rp_log_size = (cap & PCI_EXP_DPC_RP_PIO_LOG_SIZE) >> 8;
> + if (pdev->dpc_rp_log_size < 4 || pdev->dpc_rp_log_size > 9) {
> + pci_err(pdev, "RP PIO log size %u is invalid\n",
> + pdev->dpc_rp_log_size);
> + pdev->dpc_rp_log_size = 0;
> + }
> + }
> +}
> +
> #define FLAG(x, y) (((x) & (y)) ? '+' : '-')
> static int dpc_probe(struct pcie_device *dev)
> {
> @@ -260,8 +280,6 @@ static int dpc_probe(struct pcie_device *dev)
> if (pcie_aer_get_firmware_first(pdev) && !pcie_ports_dpc_native)
> return -ENOTSUPP;
>
> - pdev->dpc_cap = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_DPC);
> -
> status = devm_request_threaded_irq(device, dev->irq, dpc_irq,
> dpc_handler, IRQF_SHARED,
> "pcie-dpc", pdev);
> @@ -274,16 +292,6 @@ static int dpc_probe(struct pcie_device *dev)
> pci_read_config_word(pdev, pdev->dpc_cap + PCI_EXP_DPC_CAP, &cap);
> pci_read_config_word(pdev, pdev->dpc_cap + PCI_EXP_DPC_CTL, &ctl);
>
> - pdev->dpc_rp_extensions = (cap & PCI_EXP_DPC_CAP_RP_EXT) ? 1 : 0;
> - if (pdev->dpc_rp_extensions) {
> - pdev->dpc_rp_log_size = (cap & PCI_EXP_DPC_RP_PIO_LOG_SIZE) >> 8;
> - if (pdev->dpc_rp_log_size < 4 || pdev->dpc_rp_log_size > 9) {
> - pci_err(pdev, "RP PIO log size %u is invalid\n",
> - pdev->dpc_rp_log_size);
> - pdev->dpc_rp_log_size = 0;
> - }
> - }
> -
> ctl = (ctl & 0xfff4) | PCI_EXP_DPC_CTL_EN_FATAL | PCI_EXP_DPC_CTL_INT_EN;
> pci_write_config_word(pdev, pdev->dpc_cap + PCI_EXP_DPC_CTL, ctl);
>
> --
> 2.21.0
>
next prev parent reply other threads:[~2020-03-04 0:47 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-28 0:59 [PATCH v16 0/9] Add Error Disconnect Recover (EDR) support sathyanarayanan.kuppuswamy
2020-02-28 0:59 ` [PATCH v16 1/9] PCI/ERR: Update error status after reset_link() sathyanarayanan.kuppuswamy
2020-02-28 0:59 ` [PATCH v16 2/9] PCI/AER: Move pci_cleanup_aer_error_status_regs() declaration to pci.h sathyanarayanan.kuppuswamy
2020-02-28 0:59 ` [PATCH v16 3/9] PCI/ERR: Remove service dependency in pcie_do_recovery() sathyanarayanan.kuppuswamy
2020-03-03 17:04 ` Bjorn Helgaas
2020-03-03 23:59 ` Kuppuswamy, Sathyanarayanan
2020-02-28 0:59 ` [PATCH v16 4/9] PCI/ERR: Return status of pcie_do_recovery() sathyanarayanan.kuppuswamy
2020-02-28 0:59 ` [PATCH v16 5/9] PCI/DPC: Cache DPC capabilities in pci_init_capabilities() sathyanarayanan.kuppuswamy
2020-03-04 0:47 ` Bjorn Helgaas [this message]
2020-03-04 1:01 ` Kuppuswamy, Sathyanarayanan
2020-02-28 0:59 ` [PATCH v16 6/9] PCI/AER: Allow clearing Error Status Register in FF mode sathyanarayanan.kuppuswamy
2020-02-28 0:59 ` [PATCH v16 7/9] PCI/DPC: Export DPC error recovery functions sathyanarayanan.kuppuswamy
2020-03-05 16:37 ` Christoph Hellwig
2020-03-05 17:42 ` Kuppuswamy Sathyanarayanan
2020-03-05 18:59 ` Bjorn Helgaas
2020-03-05 19:22 ` Kuppuswamy Sathyanarayanan
2020-02-28 0:59 ` [PATCH v16 8/9] PCI/DPC: Add Error Disconnect Recover (EDR) support sathyanarayanan.kuppuswamy
2020-02-28 0:59 ` [PATCH v16 9/9] PCI/ACPI: Enable EDR support 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=20200304004705.GA184443@google.com \
--to=helgaas@kernel.org \
--cc=ashok.raj@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=sathyanarayanan.kuppuswamy@linux.intel.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.