Patchwork [3.5.y.z,extended,stable] Patch "xen/pciback: Don't disable a PCI device that is already" has been added to staging queue

mail settings
Submitter Luis Henriques
Date March 13, 2013, 1:07 p.m.
Message ID <>
Download mbox | patch
Permalink /patch/227280/
State New
Headers show


Luis Henriques - March 13, 2013, 1:07 p.m.
This is a note to let you know that I have just added a patch titled

    xen/pciback: Don't disable a PCI device that is already

to the linux-3.5.y-queue branch of the 3.5.y.z extended stable tree 
which can be found at:;a=shortlog;h=refs/heads/linux-3.5.y-queue

If you, or anyone else, feels it should not be added to this tree, please 
reply to this email.

For more information about the 3.5.y.z tree, see



From 0dcb0f328d5fdfbbb8ce758dbb95ecc9e3da8ab8 Mon Sep 17 00:00:00 2001
From: Konrad Rzeszutek Wilk <>
Date: Tue, 5 Mar 2013 13:14:19 -0500
Subject: [PATCH] xen/pciback: Don't disable a PCI device that is already

commit bdc5c1812cea6efe1aaefb3131fcba28cd0b2b68 upstream.

While shuting down a HVM guest with pci devices passed through we
get this:

pciback 0000:04:00.0: restoring config space at offset 0x4 (was 0x100000, writing 0x100002)
------------[ cut here ]------------
WARNING: at drivers/pci/pci.c:1397 pci_disable_device+0x88/0xa0()
Hardware name: MS-7640
Device pciback
disabling already-disabled device
Modules linked in:
Pid: 53, comm: xenwatch Not tainted 3.9.0-rc1-20130304a+ #1
Call Trace:
 [<ffffffff8106994a>] warn_slowpath_common+0x7a/0xc0
 [<ffffffff81069a31>] warn_slowpath_fmt+0x41/0x50
 [<ffffffff813cf288>] pci_disable_device+0x88/0xa0
 [<ffffffff814554a7>] xen_pcibk_reset_device+0x37/0xd0
 [<ffffffff81454b6f>] ? pcistub_put_pci_dev+0x6f/0x120
 [<ffffffff81454b8d>] pcistub_put_pci_dev+0x8d/0x120
 [<ffffffff814582a9>] __xen_pcibk_release_devices+0x59/0xa0

This fixes the bug.

Reported-and-Tested-by: Sander Eikelenboom <>
Signed-off-by: Konrad Rzeszutek Wilk <>
Signed-off-by: Luis Henriques <>
 drivers/xen/xen-pciback/pciback_ops.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)



diff --git a/drivers/xen/xen-pciback/pciback_ops.c b/drivers/xen/xen-pciback/pciback_ops.c
index 37c1f82..b98cf0c 100644
--- a/drivers/xen/xen-pciback/pciback_ops.c
+++ b/drivers/xen/xen-pciback/pciback_ops.c
@@ -113,7 +113,8 @@  void xen_pcibk_reset_device(struct pci_dev *dev)
 		if (dev->msi_enabled)
-		pci_disable_device(dev);
+		if (pci_is_enabled(dev))
+			pci_disable_device(dev);

 		pci_write_config_word(dev, PCI_COMMAND, 0);