From: Alex Williamson <alex.williamson@redhat.com>
To: bhelgaas@google.com, linux-pci@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Subject: [PATCH v2 8/8] pci: Wake-up devices before save for reset
Date: Tue, 07 May 2013 20:58:27 -0600 [thread overview]
Message-ID: <20130508025827.30771.78449.stgit@bling.home> (raw)
In-Reply-To: <20130508025339.30771.61937.stgit@bling.home>
Devices come out of reset in D0. Restoring a device to a different
post-reset state takes more smarts than our simple config space
restore, which can leave devices in an inconsistent state. For
example, if a device is reset in D3, but the restore doesn't
successfully return the device to D3, then the actual state of the
device and dev->current_state are contradictory. Put everything
in D0 going into the reset, then we don't need to do anything
special on the way out.
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
---
drivers/pci/pci.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 8647998..98372ec 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -3312,6 +3312,13 @@ static void pci_dev_unlock(struct pci_dev *dev)
static void pci_dev_save(struct pci_dev *dev)
{
+ /*
+ * Wake-up device prior to save. PM registers default to D0 after
+ * reset and a simple register restore doesn't reliably return
+ * to a non-D0 state anyway.
+ */
+ pci_set_power_state(dev, PCI_D0);
+
pci_save_state(dev);
/*
* both INTx and MSI are disabled after the Interrupt Disable bit
prev parent reply other threads:[~2013-05-08 2:58 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-05-08 2:57 [PATCH v2 0/8] pci: bus and slot reset interface Alex Williamson
2013-05-08 2:57 ` [PATCH v2 1/8] pci: Create pci_reset_bridge_secondary_bus() Alex Williamson
2013-05-08 19:14 ` Don Dutile
2013-05-08 19:30 ` Alex Williamson
2013-05-08 2:57 ` [PATCH v2 2/8] pci: Add hotplug_slot_ops.reset_slot() Alex Williamson
2013-05-08 2:57 ` [PATCH v2 3/8] pci: Add pci_hp_reset_slot Alex Williamson
2013-05-10 21:46 ` Alex Williamson
2013-05-08 2:58 ` [PATCH v2 4/8] pci: Implement reset_slot for pciehp Alex Williamson
2013-05-08 2:58 ` [PATCH v2 5/8] pci: Add reset_slot option to pci_dev_reset Alex Williamson
2013-05-08 2:58 ` [PATCH v2 6/8] pci: Split out pci_dev lock/unlock and save/restore Alex Williamson
2013-05-08 2:58 ` [PATCH v2 7/8] pci: Add slot and bus reset interfaces Alex Williamson
2013-05-08 2:58 ` Alex Williamson [this message]
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=20130508025827.30771.78449.stgit@bling.home \
--to=alex.williamson@redhat.com \
--cc=bhelgaas@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.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 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.