From: Greg Rose <gregory.v.rose@intel.com>
To: netdev@vger.kernel.org
Cc: davem@davemloft.net, bhutchings@solarflare.com,
jeffrey.t.kirsher@intel.com
Subject: [RFC net-next PATCH 1/4] pci: Add flag indicating device has been assigned by KVM
Date: Wed, 27 Jul 2011 15:17:49 -0700 [thread overview]
Message-ID: <20110727221749.8435.19000.stgit@gitlad.jf.intel.com> (raw)
In-Reply-To: <20110727221406.8435.44324.stgit@gitlad.jf.intel.com>
Device drivers that create and destroy SR-IOV virtual functions via
calls to pci_enable_sriov() and pci_disable_sriov can cause catastrophic
failures if they attempt to destroy VFs while they are assigned to
guest virtual machines. By adding a flag for use by the KVM module
to indicate that a device is assigned a device driver can check that
flag and avoid destroying VFs while they are assigned and avoid system
failures.
Signed-off-by: Greg Rose <gregory.v.rose@intel.com>
---
include/linux/pci.h | 2 ++
virt/kvm/assigned-dev.c | 2 ++
virt/kvm/iommu.c | 4 ++++
3 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 2d29218..a297ca2 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -174,6 +174,8 @@ enum pci_dev_flags {
PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG = (__force pci_dev_flags_t) 1,
/* Device configuration is irrevocably lost if disabled into D3 */
PCI_DEV_FLAGS_NO_D3 = (__force pci_dev_flags_t) 2,
+ /* Provide indication device is assigned by KVM */
+ PCI_DEV_FLAGS_ASSIGNED = (__force pci_dev_flags_t) 4,
};
enum pci_irq_reroute_variant {
diff --git a/virt/kvm/assigned-dev.c b/virt/kvm/assigned-dev.c
index 6cc4b97..f401de1 100644
--- a/virt/kvm/assigned-dev.c
+++ b/virt/kvm/assigned-dev.c
@@ -205,6 +205,8 @@ static void kvm_free_assigned_device(struct kvm *kvm,
else
pci_restore_state(assigned_dev->dev);
+ assigned_dev->dev->dev_flags &= ~PCI_DEV_FLAGS_ASSIGNED;
+
pci_release_regions(assigned_dev->dev);
pci_disable_device(assigned_dev->dev);
pci_dev_put(assigned_dev->dev);
diff --git a/virt/kvm/iommu.c b/virt/kvm/iommu.c
index 62a9caf..cffc530 100644
--- a/virt/kvm/iommu.c
+++ b/virt/kvm/iommu.c
@@ -181,6 +181,8 @@ int kvm_assign_device(struct kvm *kvm,
goto out_unmap;
}
+ pdev->dev_flags |= PCI_DEV_FLAGS_ASSIGNED;
+
printk(KERN_DEBUG "assign device %x:%x:%x.%x\n",
assigned_dev->host_segnr,
assigned_dev->host_busnr,
@@ -209,6 +211,8 @@ int kvm_deassign_device(struct kvm *kvm,
iommu_detach_device(domain, &pdev->dev);
+ pdev->dev_flags &= ~PCI_DEV_FLAGS_ASSIGNED;
+
printk(KERN_DEBUG "deassign device %x:%x:%x.%x\n",
assigned_dev->host_segnr,
assigned_dev->host_busnr,
next prev parent reply other threads:[~2011-07-27 22:17 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-07-27 22:17 [RFC net-next PATCH 0/4] Add new settings for ethtool Greg Rose
2011-07-27 22:17 ` Greg Rose [this message]
2011-07-28 15:11 ` [RFC net-next PATCH 1/4] pci: Add flag indicating device has been assigned by KVM Ian Campbell
2011-07-28 15:58 ` Rose, Gregory V
2011-07-28 16:27 ` Ian Campbell
2011-07-28 16:42 ` Rose, Gregory V
2011-07-29 16:54 ` Konrad Rzeszutek Wilk
2011-07-30 4:00 ` Jeff Kirsher
2011-07-29 16:51 ` Jesse Barnes
2011-07-29 16:54 ` Rose, Gregory V
2011-07-27 22:17 ` [RFC net-next PATCH 2/4] ixgbe: Reconfigure SR-IOV Init Greg Rose
2011-07-28 5:26 ` David Miller
2011-07-28 15:44 ` Rose, Gregory V
2011-07-27 22:17 ` [RFC net-next PATCH 3/4] ethtool: Add new set commands Greg Rose
2011-07-28 5:27 ` David Miller
2011-07-28 15:51 ` Rose, Gregory V
2011-07-28 16:14 ` David Miller
2011-07-28 16:21 ` Rose, Gregory V
2011-07-28 21:14 ` Ben Hutchings
2011-07-28 21:16 ` Rose, Gregory V
[not found] ` <539DF151-E442-4375-8777-19676B95059B@qlogic.com>
2011-07-28 20:38 ` Rose, Gregory V
2011-07-28 22:01 ` Anirban Chakraborty
2011-07-28 22:04 ` Rose, Gregory V
2011-07-28 22:04 ` Rose, Gregory V
2011-07-28 22:01 ` Anirban Chakraborty
2011-07-28 21:20 ` Ben Hutchings
2011-07-28 21:34 ` Rose, Gregory V
2011-07-28 22:04 ` Ben Hutchings
2011-07-28 22:25 ` Rose, Gregory V
2011-07-27 22:18 ` [RFC net-next PATCH 4/4] ixgbe: Add support for new ethtool settings Greg Rose
2011-07-28 11:54 ` Michał Mirosław
2011-07-28 15:52 ` Rose, Gregory V
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=20110727221749.8435.19000.stgit@gitlad.jf.intel.com \
--to=gregory.v.rose@intel.com \
--cc=bhutchings@solarflare.com \
--cc=davem@davemloft.net \
--cc=jeffrey.t.kirsher@intel.com \
--cc=netdev@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.