Re: [PATCH 2/2 V3] PCI: implement VFs assignment reference counter

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 07/11/2014 06:00 PM, Ethan Zhao wrote:
Current implementation of helper function pci_vfs_assigned() is a
little complex, to get sum of VFs that assigned to VM, access low
level configuration space register and then loop in traversing
device tree.

(...)

@@ -650,6 +630,11 @@ EXPORT_SYMBOL_GPL(pci_vfs_assigned);
  void pci_iov_assign_device(struct pci_dev *pdev)
  {
  	pdev->dev_flags |= PCI_DEV_FLAGS_ASSIGNED;
+	if (pdev->is_virtfn && !pdev->is_physfn)
+		if (pdev->physfn)
+			if (pdev->physfn->sriov)

Why don't we make last two 'if' conditions into single 'if'

if (pdev->physfn && pdev->physfn->sriov)

+				atomic_inc(&pdev->physfn->sriov->
+					VFs_assigned_cnt);
  }
  EXPORT_SYMBOL_GPL(pci_iov_assign_device);
@@ -660,6 +645,11 @@ EXPORT_SYMBOL_GPL(pci_iov_assign_device);
  void pci_iov_deassign_device(struct pci_dev *pdev)
  {
  	pdev->dev_flags &= ~PCI_DEV_FLAGS_ASSIGNED;
+	if (pdev->is_virtfn && !pdev->is_physfn)
+		if (pdev->physfn)
+			if (pdev->physfn->sriov)

same...

+				atomic_dec(&pdev->physfn->sriov->
+					VFs_assigned_cnt);
  }
  EXPORT_SYMBOL_GPL(pci_iov_deassign_device);
diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h
index 6bd0822..d17bda2 100644
--- a/drivers/pci/pci.h
+++ b/drivers/pci/pci.h
@@ -235,6 +235,7 @@ struct pci_sriov {
  	u32 pgsz;		/* page size for BAR alignment */
  	u8 link;		/* Function Dependency Link */
  	u16 driver_max_VFs;	/* max num VFs driver supports */
+	atomic_t VFs_assigned_cnt; /* counter of VFs assigned to VM */
  	struct pci_dev *dev;	/* lowest numbered PF */
  	struct pci_dev *self;	/* this PF */
  	struct mutex lock;	/* lock for VF bus */

--
Regards,
Varka Bhadram.

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux