tree:   https://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git core
head:   21aff52ab2c831c2f07d48e2fa8d4bab26a66992
commit: 21aff52ab2c831c2f07d48e2fa8d4bab26a66992 [3/3] iommu: Add dummy 
implementations for !IOMMU_IOVA
config: x86_64-randconfig-a0-03222342 (attached as .config)
compiler: gcc-4.4 (Debian 4.4.7-8) 4.4.7
reproduce:
        git checkout 21aff52ab2c831c2f07d48e2fa8d4bab26a66992
        # save the attached .config to linux build tree
        make ARCH=x86_64 

All errors (new ones prefixed by >>):

>> drivers/iommu/iova.c:36: error: redefinition of 'init_iova_domain'
   include/linux/iova.h:170: note: previous definition of 'init_iova_domain' 
was here
>> drivers/iommu/iova.c:202: error: redefinition of 'alloc_iova_mem'
   include/linux/iova.h:120: note: previous definition of 'alloc_iova_mem' was 
here
>> drivers/iommu/iova.c:208: error: redefinition of 'free_iova_mem'
   include/linux/iova.h:125: note: previous definition of 'free_iova_mem' was 
here
>> drivers/iommu/iova.c:214: error: redefinition of 'iova_cache_get'
   include/linux/iova.h:111: note: previous definition of 'iova_cache_get' was 
here
>> drivers/iommu/iova.c:235: error: redefinition of 'iova_cache_put'
   include/linux/iova.h:116: note: previous definition of 'iova_cache_put' was 
here
>> drivers/iommu/iova.c:261: error: redefinition of 'alloc_iova'
   include/linux/iova.h:137: note: previous definition of 'alloc_iova' was here
>> drivers/iommu/iova.c:323: error: redefinition of 'find_iova'
   include/linux/iova.h:177: note: previous definition of 'find_iova' was here
>> drivers/iommu/iova.c:343: error: redefinition of '__free_iova'
   include/linux/iova.h:133: note: previous definition of '__free_iova' was here
>> drivers/iommu/iova.c:361: error: redefinition of 'free_iova'
   include/linux/iova.h:129: note: previous definition of 'free_iova' was here
>> drivers/iommu/iova.c:380: error: redefinition of 'alloc_iova_fast'
   include/linux/iova.h:151: note: previous definition of 'alloc_iova_fast' was 
here
>> drivers/iommu/iova.c:421: error: redefinition of 'free_iova_fast'
   include/linux/iova.h:145: note: previous definition of 'free_iova_fast' was 
here
>> drivers/iommu/iova.c:435: error: redefinition of 'put_iova_domain'
   include/linux/iova.h:183: note: previous definition of 'put_iova_domain' was 
here
>> drivers/iommu/iova.c:511: error: redefinition of 'reserve_iova'
   include/linux/iova.h:158: note: previous definition of 'reserve_iova' was 
here
>> drivers/iommu/iova.c:552: error: redefinition of 'copy_reserved_iova'
   include/linux/iova.h:165: note: previous definition of 'copy_reserved_iova' 
was here
>> drivers/iommu/iova.c:572: error: redefinition of 'split_and_remove_iova'
   include/linux/iova.h:187: note: previous definition of 
'split_and_remove_iova' was here
>> drivers/iommu/iova.c:887: error: redefinition of 'free_cpu_cached_iovas'
   include/linux/iova.h:195: note: previous definition of 
'free_cpu_cached_iovas' was here

vim +/init_iova_domain +36 drivers/iommu/iova.c

9257b4a20 drivers/iommu/iova.c Omer Peleg            2016-04-20   30            
                     unsigned long size,
9257b4a20 drivers/iommu/iova.c Omer Peleg            2016-04-20   31            
                     unsigned long limit_pfn);
9257b4a20 drivers/iommu/iova.c Omer Peleg            2016-04-20   32  static 
void init_iova_rcaches(struct iova_domain *iovad);
9257b4a20 drivers/iommu/iova.c Omer Peleg            2016-04-20   33  static 
void free_iova_rcaches(struct iova_domain *iovad);
85b454562 drivers/iommu/iova.c Robin Murphy          2015-01-12   34  
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21   35  void
0fb5fe874 drivers/iommu/iova.c Robin Murphy          2015-01-12  @36  
init_iova_domain(struct iova_domain *iovad, unsigned long granule,
0fb5fe874 drivers/iommu/iova.c Robin Murphy          2015-01-12   37    
unsigned long start_pfn, unsigned long pfn_32bit)
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21   38  {
0fb5fe874 drivers/iommu/iova.c Robin Murphy          2015-01-12   39    /*
0fb5fe874 drivers/iommu/iova.c Robin Murphy          2015-01-12   40     * IOVA 
granularity will normally be equal to the smallest
0fb5fe874 drivers/iommu/iova.c Robin Murphy          2015-01-12   41     * 
supported IOMMU page size; both *must* be capable of
0fb5fe874 drivers/iommu/iova.c Robin Murphy          2015-01-12   42     * 
representing individual CPU pages exactly.
0fb5fe874 drivers/iommu/iova.c Robin Murphy          2015-01-12   43     */
0fb5fe874 drivers/iommu/iova.c Robin Murphy          2015-01-12   44    
BUG_ON((granule > PAGE_SIZE) || !is_power_of_2(granule));
0fb5fe874 drivers/iommu/iova.c Robin Murphy          2015-01-12   45  
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21   46    
spin_lock_init(&iovad->iova_rbtree_lock);
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21   47    
iovad->rbroot = RB_ROOT;
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21   48    
iovad->cached32_node = NULL;
0fb5fe874 drivers/iommu/iova.c Robin Murphy          2015-01-12   49    
iovad->granule = granule;
1b7225007 drivers/iommu/iova.c Robin Murphy          2015-01-12   50    
iovad->start_pfn = start_pfn;
f661197e0 drivers/pci/iova.c   David Miller          2008-02-06   51    
iovad->dma_32bit_pfn = pfn_32bit;
9257b4a20 drivers/iommu/iova.c Omer Peleg            2016-04-20   52    
init_iova_rcaches(iovad);
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21   53  }
9b41760b0 drivers/iommu/iova.c Sakari Ailus          2015-07-13   54  
EXPORT_SYMBOL_GPL(init_iova_domain);
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21   55  
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21   56  static 
struct rb_node *
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21   57  
__get_cached_rbnode(struct iova_domain *iovad, unsigned long *limit_pfn)
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21   58  {
62280cf2e drivers/iommu/iova.c Robin Murphy          2016-11-11   59    if 
((*limit_pfn > iovad->dma_32bit_pfn) ||
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21   60            
(iovad->cached32_node == NULL))
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21   61            
return rb_last(&iovad->rbroot);
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21   62    else {
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21   63            
struct rb_node *prev_node = rb_prev(iovad->cached32_node);
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21   64            
struct iova *curr_iova =
eba484b51 drivers/iommu/iova.c Geliang Tang          2016-12-19   65            
        rb_entry(iovad->cached32_node, struct iova, node);
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21   66            
*limit_pfn = curr_iova->pfn_lo - 1;
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21   67            
return prev_node;
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21   68    }
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21   69  }
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21   70  
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21   71  static 
void
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21   72  
__cached_rbnode_insert_update(struct iova_domain *iovad,
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21   73    
unsigned long limit_pfn, struct iova *new)
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21   74  {
f661197e0 drivers/pci/iova.c   David Miller          2008-02-06   75    if 
(limit_pfn != iovad->dma_32bit_pfn)
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21   76            
return;
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21   77    
iovad->cached32_node = &new->node;
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21   78  }
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21   79  
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21   80  static 
void
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21   81  
__cached_rbnode_delete_update(struct iova_domain *iovad, struct iova *free)
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21   82  {
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21   83    struct 
iova *cached_iova;
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21   84    struct 
rb_node *curr;
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21   85  
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21   86    if 
(!iovad->cached32_node)
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21   87            
return;
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21   88    curr = 
iovad->cached32_node;
eba484b51 drivers/iommu/iova.c Geliang Tang          2016-12-19   89    
cached_iova = rb_entry(curr, struct iova, node);
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21   90  
1c9fc3d11 drivers/pci/iova.c   Chris Wright          2011-05-28   91    if 
(free->pfn_lo >= cached_iova->pfn_lo) {
1c9fc3d11 drivers/pci/iova.c   Chris Wright          2011-05-28   92            
struct rb_node *node = rb_next(&free->node);
eba484b51 drivers/iommu/iova.c Geliang Tang          2016-12-19   93            
struct iova *iova = rb_entry(node, struct iova, node);
1c9fc3d11 drivers/pci/iova.c   Chris Wright          2011-05-28   94  
1c9fc3d11 drivers/pci/iova.c   Chris Wright          2011-05-28   95            
/* only cache if it's below 32bit pfn */
1c9fc3d11 drivers/pci/iova.c   Chris Wright          2011-05-28   96            
if (node && iova->pfn_lo < iovad->dma_32bit_pfn)
1c9fc3d11 drivers/pci/iova.c   Chris Wright          2011-05-28   97            
        iovad->cached32_node = node;
1c9fc3d11 drivers/pci/iova.c   Chris Wright          2011-05-28   98            
else
1c9fc3d11 drivers/pci/iova.c   Chris Wright          2011-05-28   99            
        iovad->cached32_node = NULL;
1c9fc3d11 drivers/pci/iova.c   Chris Wright          2011-05-28  100    }
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  101  }
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  102  
d751751a9 drivers/iommu/iova.c Marek Szyprowski      2017-02-24  103  /* Insert 
the iova into domain rbtree by holding writer lock */
d751751a9 drivers/iommu/iova.c Marek Szyprowski      2017-02-24  104  static 
void
d751751a9 drivers/iommu/iova.c Marek Szyprowski      2017-02-24  105  
iova_insert_rbtree(struct rb_root *root, struct iova *iova,
d751751a9 drivers/iommu/iova.c Marek Szyprowski      2017-02-24  106            
   struct rb_node *start)
d751751a9 drivers/iommu/iova.c Marek Szyprowski      2017-02-24  107  {
d751751a9 drivers/iommu/iova.c Marek Szyprowski      2017-02-24  108    struct 
rb_node **new, *parent = NULL;
d751751a9 drivers/iommu/iova.c Marek Szyprowski      2017-02-24  109  
d751751a9 drivers/iommu/iova.c Marek Szyprowski      2017-02-24  110    new = 
(start) ? &start : &(root->rb_node);
d751751a9 drivers/iommu/iova.c Marek Szyprowski      2017-02-24  111    /* 
Figure out where to put new node */
d751751a9 drivers/iommu/iova.c Marek Szyprowski      2017-02-24  112    while 
(*new) {
d751751a9 drivers/iommu/iova.c Marek Szyprowski      2017-02-24  113            
struct iova *this = rb_entry(*new, struct iova, node);
d751751a9 drivers/iommu/iova.c Marek Szyprowski      2017-02-24  114  
d751751a9 drivers/iommu/iova.c Marek Szyprowski      2017-02-24  115            
parent = *new;
d751751a9 drivers/iommu/iova.c Marek Szyprowski      2017-02-24  116  
d751751a9 drivers/iommu/iova.c Marek Szyprowski      2017-02-24  117            
if (iova->pfn_lo < this->pfn_lo)
d751751a9 drivers/iommu/iova.c Marek Szyprowski      2017-02-24  118            
        new = &((*new)->rb_left);
d751751a9 drivers/iommu/iova.c Marek Szyprowski      2017-02-24  119            
else if (iova->pfn_lo > this->pfn_lo)
d751751a9 drivers/iommu/iova.c Marek Szyprowski      2017-02-24  120            
        new = &((*new)->rb_right);
d751751a9 drivers/iommu/iova.c Marek Szyprowski      2017-02-24  121            
else {
d751751a9 drivers/iommu/iova.c Marek Szyprowski      2017-02-24  122            
        WARN_ON(1); /* this should not happen */
d751751a9 drivers/iommu/iova.c Marek Szyprowski      2017-02-24  123            
        return;
d751751a9 drivers/iommu/iova.c Marek Szyprowski      2017-02-24  124            
}
d751751a9 drivers/iommu/iova.c Marek Szyprowski      2017-02-24  125    }
d751751a9 drivers/iommu/iova.c Marek Szyprowski      2017-02-24  126    /* Add 
new node and rebalance tree. */
d751751a9 drivers/iommu/iova.c Marek Szyprowski      2017-02-24  127    
rb_link_node(&iova->node, parent, new);
d751751a9 drivers/iommu/iova.c Marek Szyprowski      2017-02-24  128    
rb_insert_color(&iova->node, root);
d751751a9 drivers/iommu/iova.c Marek Szyprowski      2017-02-24  129  }
d751751a9 drivers/iommu/iova.c Marek Szyprowski      2017-02-24  130  
8f6429c7c drivers/iommu/iova.c Robin Murphy          2015-07-16  131  /*
8f6429c7c drivers/iommu/iova.c Robin Murphy          2015-07-16  132   * 
Computes the padding size required, to make the start address
8f6429c7c drivers/iommu/iova.c Robin Murphy          2015-07-16  133   * 
naturally aligned on the power-of-two order of its size
f76aec76e drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  134   */
8f6429c7c drivers/iommu/iova.c Robin Murphy          2015-07-16  135  static 
unsigned int
8f6429c7c drivers/iommu/iova.c Robin Murphy          2015-07-16  136  
iova_get_pad_size(unsigned int size, unsigned int limit_pfn)
f76aec76e drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  137  {
8f6429c7c drivers/iommu/iova.c Robin Murphy          2015-07-16  138    return 
(limit_pfn + 1 - size) & (__roundup_pow_of_two(size) - 1);
f76aec76e drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  139  }
f76aec76e drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  140  
ddf02886c drivers/pci/iova.c   mark gross            2008-03-04  141  static 
int __alloc_and_insert_iova_range(struct iova_domain *iovad,
ddf02886c drivers/pci/iova.c   mark gross            2008-03-04  142            
unsigned long size, unsigned long limit_pfn,
ddf02886c drivers/pci/iova.c   mark gross            2008-03-04  143            
        struct iova *new, bool size_aligned)
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  144  {
ddf02886c drivers/pci/iova.c   mark gross            2008-03-04  145    struct 
rb_node *prev, *curr = NULL;
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  146    
unsigned long flags;
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  147    
unsigned long saved_pfn;
f76aec76e drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  148    
unsigned int pad_size = 0;
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  149  
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  150    /* Walk 
the tree backwards */
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  151    
spin_lock_irqsave(&iovad->iova_rbtree_lock, flags);
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  152    
saved_pfn = limit_pfn;
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  153    curr = 
__get_cached_rbnode(iovad, &limit_pfn);
ddf02886c drivers/pci/iova.c   mark gross            2008-03-04  154    prev = 
curr;
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  155    while 
(curr) {
eba484b51 drivers/iommu/iova.c Geliang Tang          2016-12-19  156            
struct iova *curr_iova = rb_entry(curr, struct iova, node);
ddf02886c drivers/pci/iova.c   mark gross            2008-03-04  157  
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  158            
if (limit_pfn < curr_iova->pfn_lo)
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  159            
        goto move_left;
f76aec76e drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  160            
else if (limit_pfn < curr_iova->pfn_hi)
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  161            
        goto adjust_limit_pfn;
f76aec76e drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  162            
else {
f76aec76e drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  163            
        if (size_aligned)
f76aec76e drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  164            
                pad_size = iova_get_pad_size(size, limit_pfn);
f76aec76e drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  165            
        if ((curr_iova->pfn_hi + size + pad_size) <= limit_pfn)
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  166            
                break;  /* found a free slot */
f76aec76e drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  167            
}
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  168  
adjust_limit_pfn:
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  169            
limit_pfn = curr_iova->pfn_lo - 1;
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  170  move_left:
ddf02886c drivers/pci/iova.c   mark gross            2008-03-04  171            
prev = curr;
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  172            
curr = rb_prev(curr);
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  173    }
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  174  
f76aec76e drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  175    if 
(!curr) {
f76aec76e drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  176            
if (size_aligned)
f76aec76e drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  177            
        pad_size = iova_get_pad_size(size, limit_pfn);
1b7225007 drivers/iommu/iova.c Robin Murphy          2015-01-12  178            
if ((iovad->start_pfn + size + pad_size) > limit_pfn) {
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  179            
        spin_unlock_irqrestore(&iovad->iova_rbtree_lock, flags);
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  180            
        return -ENOMEM;
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  181            
}
f76aec76e drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  182    }
f76aec76e drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  183  
f76aec76e drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  184    /* 
pfn_lo will point to size aligned address if size_aligned is set */
f76aec76e drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  185    
new->pfn_lo = limit_pfn - (size + pad_size) + 1;
f76aec76e drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  186    
new->pfn_hi = new->pfn_lo + size - 1;
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  187  
d751751a9 drivers/iommu/iova.c Marek Szyprowski      2017-02-24  188    /* If 
we have 'prev', it's a valid place to start the insertion. */
d751751a9 drivers/iommu/iova.c Marek Szyprowski      2017-02-24  189    
iova_insert_rbtree(&iovad->rbroot, new, prev);
ddf02886c drivers/pci/iova.c   mark gross            2008-03-04  190    
__cached_rbnode_insert_update(iovad, saved_pfn, new);
ddf02886c drivers/pci/iova.c   mark gross            2008-03-04  191  
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  192    
spin_unlock_irqrestore(&iovad->iova_rbtree_lock, flags);
ddf02886c drivers/pci/iova.c   mark gross            2008-03-04  193  
ddf02886c drivers/pci/iova.c   mark gross            2008-03-04  194  
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  195    return 
0;
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  196  }
f8de50eb6 drivers/pci/iova.c   Keshavamurthy, Anil S 2007-10-21  197  
ae1ff3d62 drivers/iommu/iova.c Sakari Ailus          2015-07-13  198  static 
struct kmem_cache *iova_cache;
ae1ff3d62 drivers/iommu/iova.c Sakari Ailus          2015-07-13  199  static 
unsigned int iova_cache_users;
ae1ff3d62 drivers/iommu/iova.c Sakari Ailus          2015-07-13  200  static 
DEFINE_MUTEX(iova_cache_mutex);
ae1ff3d62 drivers/iommu/iova.c Sakari Ailus          2015-07-13  201  
ae1ff3d62 drivers/iommu/iova.c Sakari Ailus          2015-07-13 @202  struct 
iova *alloc_iova_mem(void)
ae1ff3d62 drivers/iommu/iova.c Sakari Ailus          2015-07-13  203  {
ae1ff3d62 drivers/iommu/iova.c Sakari Ailus          2015-07-13  204    return 
kmem_cache_alloc(iova_cache, GFP_ATOMIC);
ae1ff3d62 drivers/iommu/iova.c Sakari Ailus          2015-07-13  205  }
ae1ff3d62 drivers/iommu/iova.c Sakari Ailus          2015-07-13  206  
EXPORT_SYMBOL(alloc_iova_mem);
ae1ff3d62 drivers/iommu/iova.c Sakari Ailus          2015-07-13  207  
ae1ff3d62 drivers/iommu/iova.c Sakari Ailus          2015-07-13 @208  void 
free_iova_mem(struct iova *iova)
ae1ff3d62 drivers/iommu/iova.c Sakari Ailus          2015-07-13  209  {
ae1ff3d62 drivers/iommu/iova.c Sakari Ailus          2015-07-13  210    
kmem_cache_free(iova_cache, iova);
ae1ff3d62 drivers/iommu/iova.c Sakari Ailus          2015-07-13  211  }
ae1ff3d62 drivers/iommu/iova.c Sakari Ailus          2015-07-13  212  
EXPORT_SYMBOL(free_iova_mem);
ae1ff3d62 drivers/iommu/iova.c Sakari Ailus          2015-07-13  213  
ae1ff3d62 drivers/iommu/iova.c Sakari Ailus          2015-07-13 @214  int 
iova_cache_get(void)
ae1ff3d62 drivers/iommu/iova.c Sakari Ailus          2015-07-13  215  {
ae1ff3d62 drivers/iommu/iova.c Sakari Ailus          2015-07-13  216    
mutex_lock(&iova_cache_mutex);
ae1ff3d62 drivers/iommu/iova.c Sakari Ailus          2015-07-13  217    if 
(!iova_cache_users) {
ae1ff3d62 drivers/iommu/iova.c Sakari Ailus          2015-07-13  218            
iova_cache = kmem_cache_create(
ae1ff3d62 drivers/iommu/iova.c Sakari Ailus          2015-07-13  219            
        "iommu_iova", sizeof(struct iova), 0,
ae1ff3d62 drivers/iommu/iova.c Sakari Ailus          2015-07-13  220            
        SLAB_HWCACHE_ALIGN, NULL);
ae1ff3d62 drivers/iommu/iova.c Sakari Ailus          2015-07-13  221            
if (!iova_cache) {
ae1ff3d62 drivers/iommu/iova.c Sakari Ailus          2015-07-13  222            
        mutex_unlock(&iova_cache_mutex);
ae1ff3d62 drivers/iommu/iova.c Sakari Ailus          2015-07-13  223            
        printk(KERN_ERR "Couldn't create iova cache\n");
ae1ff3d62 drivers/iommu/iova.c Sakari Ailus          2015-07-13  224            
        return -ENOMEM;
ae1ff3d62 drivers/iommu/iova.c Sakari Ailus          2015-07-13  225            
}
ae1ff3d62 drivers/iommu/iova.c Sakari Ailus          2015-07-13  226    }
ae1ff3d62 drivers/iommu/iova.c Sakari Ailus          2015-07-13  227  
ae1ff3d62 drivers/iommu/iova.c Sakari Ailus          2015-07-13  228    
iova_cache_users++;
ae1ff3d62 drivers/iommu/iova.c Sakari Ailus          2015-07-13  229    
mutex_unlock(&iova_cache_mutex);
ae1ff3d62 drivers/iommu/iova.c Sakari Ailus          2015-07-13  230  
ae1ff3d62 drivers/iommu/iova.c Sakari Ailus          2015-07-13  231    return 
0;
ae1ff3d62 drivers/iommu/iova.c Sakari Ailus          2015-07-13  232  }
9b41760b0 drivers/iommu/iova.c Sakari Ailus          2015-07-13  233  
EXPORT_SYMBOL_GPL(iova_cache_get);
ae1ff3d62 drivers/iommu/iova.c Sakari Ailus          2015-07-13  234  
ae1ff3d62 drivers/iommu/iova.c Sakari Ailus          2015-07-13 @235  void 
iova_cache_put(void)
ae1ff3d62 drivers/iommu/iova.c Sakari Ailus          2015-07-13  236  {
ae1ff3d62 drivers/iommu/iova.c Sakari Ailus          2015-07-13  237    
mutex_lock(&iova_cache_mutex);
ae1ff3d62 drivers/iommu/iova.c Sakari Ailus          2015-07-13  238    if 
(WARN_ON(!iova_cache_users)) {

:::::: The code at line 36 was first introduced by commit
:::::: 0fb5fe874c42942e16c450ae05da453e13a1c09e iommu: Make IOVA domain page 
size explicit

:::::: TO: Robin Murphy <[email protected]>
:::::: CC: Joerg Roedel <[email protected]>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip

_______________________________________________
iommu mailing list
[email protected]
https://lists.linuxfoundation.org/mailman/listinfo/iommu

Reply via email to