PCI: Add vendor ID for the PCI SIG
[sfrench/cifs-2.6.git] / include / linux / iova.h
index cea79cb9f26c73c79d92735fa6acf8f04fede584..320a70e4023308853b29026fd499c6bfece8efaf 100644 (file)
@@ -21,18 +21,8 @@ struct iova {
        unsigned long   pfn_lo; /* Lowest allocated pfn */
 };
 
-struct iova_magazine;
-struct iova_cpu_rcache;
 
-#define IOVA_RANGE_CACHE_MAX_SIZE 6    /* log of max cached IOVA range size (in pages) */
-#define MAX_GLOBAL_MAGS 32     /* magazines per bin */
-
-struct iova_rcache {
-       spinlock_t lock;
-       unsigned long depot_size;
-       struct iova_magazine *depot[MAX_GLOBAL_MAGS];
-       struct iova_cpu_rcache __percpu *cpu_rcaches;
-};
+struct iova_rcache;
 
 /* holds all the iova translations for a domain */
 struct iova_domain {
@@ -46,7 +36,7 @@ struct iova_domain {
        unsigned long   max32_alloc_size; /* Size of last failed allocation */
        struct iova     anchor;         /* rbtree lookup anchor */
 
-       struct iova_rcache rcaches[IOVA_RANGE_CACHE_MAX_SIZE];  /* IOVA range caches */
+       struct iova_rcache      *rcaches;
        struct hlist_node       cpuhp_dead;
 };
 
@@ -102,6 +92,7 @@ struct iova *reserve_iova(struct iova_domain *iovad, unsigned long pfn_lo,
        unsigned long pfn_hi);
 void init_iova_domain(struct iova_domain *iovad, unsigned long granule,
        unsigned long start_pfn);
+int iova_domain_init_rcaches(struct iova_domain *iovad);
 struct iova *find_iova(struct iova_domain *iovad, unsigned long pfn);
 void put_iova_domain(struct iova_domain *iovad);
 #else