aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci/pci.h
diff options
context:
space:
mode:
authorYu Zhao <yu.zhao@intel.com>2009-05-18 01:51:33 -0400
committerDavid Woodhouse <David.Woodhouse@intel.com>2009-05-18 06:25:58 -0400
commite277d2fc79d6abb86fafadb58dca0b9c498a9aa7 (patch)
tree6f7a6c5bf2b300bec9fa76266eeb9089dc82e651 /drivers/pci/pci.h
parent302b4215daa0a704c843da40fd2529e5757a72da (diff)
PCI: handle Virtual Function ATS enabling
The SR-IOV spec requires that the Smallest Translation Unit and the Invalidate Queue Depth fields in the Virtual Function ATS capability are hardwired to 0. If a function is a Virtual Function, then and set its Physical Function's STU before enabling the ATS. Signed-off-by: Yu Zhao <yu.zhao@intel.com> Acked-by: Jesse Barnes <jbarnes@virtuousgeek.org> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Diffstat (limited to 'drivers/pci/pci.h')
-rw-r--r--drivers/pci/pci.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h
index 3c2ec64f78e9..f73bcbedf37c 100644
--- a/drivers/pci/pci.h
+++ b/drivers/pci/pci.h
@@ -234,6 +234,8 @@ struct pci_ats {
234 int pos; /* capability position */ 234 int pos; /* capability position */
235 int stu; /* Smallest Translation Unit */ 235 int stu; /* Smallest Translation Unit */
236 int qdep; /* Invalidate Queue Depth */ 236 int qdep; /* Invalidate Queue Depth */
237 int ref_cnt; /* Physical Function reference count */
238 int is_enabled:1; /* Enable bit is set */
237}; 239};
238 240
239#ifdef CONFIG_PCI_IOV 241#ifdef CONFIG_PCI_IOV
@@ -255,7 +257,7 @@ extern int pci_ats_queue_depth(struct pci_dev *dev);
255 */ 257 */
256static inline int pci_ats_enabled(struct pci_dev *dev) 258static inline int pci_ats_enabled(struct pci_dev *dev)
257{ 259{
258 return !!dev->ats; 260 return dev->ats && dev->ats->is_enabled;
259} 261}
260#else 262#else
261static inline int pci_iov_init(struct pci_dev *dev) 263static inline int pci_iov_init(struct pci_dev *dev)