From: "Liu, Joseph" <Joseph.Liu@Emulex.Com>
To: Bjorn Helgaas <bhelgaas@google.com>,
"Zhang, LongX" <longx.zhang@intel.com>
Cc: "linasvepstas@gmail.com" <linasvepstas@gmail.com>,
"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"yanmin_zhang@linux.intel.com" <yanmin_zhang@linux.intel.com>
Subject: RE: Subject : [ PATCH ] pci-reset-error_state-to-pci_channel_io_normal-at-report_slot_reset
Date: Tue, 21 May 2013 15:41:44 +0000 [thread overview]
Message-ID: <CF6E51640088844D9CADE5541A7C2FEB33EBE413@CMEXMB1.ad.emulex.com> (raw)
In-Reply-To: <20130520224824.GA31740@google.com>
Bjorn,
>> diff --git a/drivers/pci/pcie/portdrv_pci.c b/drivers/pci/pcie/portdrv_pci.c
>> index ed4d094..7abefd9 100644
>> --- a/drivers/pci/pcie/portdrv_pci.c
>> +++ b/drivers/pci/pcie/portdrv_pci.c
>> @@ -332,13 +332,11 @@ static pci_ers_result_t pcie_portdrv_slot_reset(struct pci_dev *dev)
>> pci_ers_result_t status = PCI_ERS_RESULT_RECOVERED;
>> int retval;
>>
>> - /* If fatal, restore cfg space for possible link reset at upstream */
>> - if (dev->error_state == pci_channel_io_frozen) {
>> - dev->state_saved = true;
>> - pci_restore_state(dev);
>> - pcie_portdrv_restore_config(dev);
>> - pci_enable_pcie_error_reporting(dev);
>> - }
>> + /* restore cfg space for possible link reset at upstream */
>> + dev->state_saved = true;
>> + pci_restore_state(dev);
>> + pcie_portdrv_restore_config(dev);
>> + pci_enable_pcie_error_reporting(dev);
>>
>> /* get true return value from &status */
>> retval = device_for_each_child(&dev->dev, &status, slot_reset_iter);
>
>I think this patch changes the behavior in the case of a non-fatal error
>where one of the .error_detected() methods returned
>PCI_ERS_RESULT_NEED_RESET. In that case, pcie_portdrv_slot_reset()
>previously did not restore config space, but after your patch, it *will*
>restore it. We need an explanation of why this is safe.
Here is my understanding of this part of the patch:
I think your concern here should not be an issue. Whether it is a non-fatal error or a fatal error, as long as one of the .error_detected() method from the downstream drivers involved returns a PCI_ERS_RESULT_NEED_RESET, it should trump all others and a slot reset should be performed, even though it was originally due to a non-fatal error reported or only one of the downstream drivers requests it. In the case of AER driver, this should be implemented in the broadcast_error_message() with pci_walk_bus() by passing in the report_error_detected() function, and merging the results into the result_data->result...
In any case, the fact that this pcie_portdrv_slot_reset() being invoked should be considered as a aftermath of a slot reset has been performed, thus the restore of config space should be performed after the reset. I suppose the restore should be to the same state as fresh power-on states, right?
Thanks,
Joe Liu, Ph.D.
Senior Principal Engineer
Emulex Corporation
next prev parent reply other threads:[~2013-05-21 15:41 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-26 6:28 Zhang, LongX
2013-05-02 0:30 ` Yanmin Zhang
[not found] ` <CAHrUA34H_B-ffebx6ueHgV1ax-PL_3hLZr1JGaP2NJZ7bYgvtw@mail.gmail.com>
2013-05-03 0:33 ` Yanmin Zhang
2013-05-03 2:00 ` Greg Kroah-Hartman
2013-05-03 3:13 ` Yanmin Zhang
2013-05-03 18:00 ` Linas Vepstas
2013-05-07 6:01 ` Yanmin Zhang
2013-05-17 23:43 ` Bjorn Helgaas
2013-05-17 23:56 ` Rafael J. Wysocki
2013-05-20 17:21 ` Bjorn Helgaas
2013-05-20 17:52 ` Linas Vepstas
2013-05-20 14:38 ` Liu, Joseph
2013-05-20 15:37 ` Linas Vepstas
2013-05-21 7:49 ` Yanmin Zhang
2013-05-21 13:38 ` Linas Vepstas
2013-05-20 22:48 ` Bjorn Helgaas
2013-05-21 7:40 ` Yanmin Zhang
2013-05-21 16:17 ` Bjorn Helgaas
2013-05-21 15:41 ` Liu, Joseph [this message]
2013-05-21 16:26 ` Linas Vepstas
2013-05-21 16:51 ` Bjorn Helgaas
2013-06-04 18:04 ` Bjorn Helgaas
2013-06-05 0:38 ` Yanmin Zhang
2013-06-05 13:30 ` Bjorn Helgaas
2013-06-06 6:29 ` Yanmin Zhang
2013-06-10 17:24 ` 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=CF6E51640088844D9CADE5541A7C2FEB33EBE413@CMEXMB1.ad.emulex.com \
--to=joseph.liu@emulex.com \
--cc=bhelgaas@google.com \
--cc=linasvepstas@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=longx.zhang@intel.com \
--cc=yanmin_zhang@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 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®