Skip to content

Commit

Permalink
iommu: export iommu_area_reserve helper function
Browse files Browse the repository at this point in the history
x86 has set_bit_string() that does the exact same thing that
set_bit_area() in lib/iommu-helper.c does.

This patch exports set_bit_area() in lib/iommu-helper.c as
iommu_area_reserve(), converts GART, Calgary, and AMD IOMMU to use it.

Signed-off-by: FUJITA Tomonori <[email protected]>
Acked-by: Joerg Roedel <[email protected]>
Signed-off-by: Ingo Molnar <[email protected]>
  • Loading branch information
fujita authored and Ingo Molnar committed Sep 22, 2008
1 parent 832a90c commit d26dbc5
Show file tree
Hide file tree
Showing 5 changed files with 6 additions and 6 deletions.
2 changes: 1 addition & 1 deletion arch/x86/kernel/amd_iommu.c
Original file line number Diff line number Diff line change
Expand Up @@ -572,7 +572,7 @@ static void dma_ops_reserve_addresses(struct dma_ops_domain *dom,
if (start_page + pages > last_page)
pages = last_page - start_page;

set_bit_string(dom->bitmap, start_page, pages);
iommu_area_reserve(dom->bitmap, start_page, pages);
}

static void dma_ops_free_pagetable(struct dma_ops_domain *dma_dom)
Expand Down
2 changes: 1 addition & 1 deletion arch/x86/kernel/pci-calgary_64.c
Original file line number Diff line number Diff line change
Expand Up @@ -261,7 +261,7 @@ static void iommu_range_reserve(struct iommu_table *tbl,
badbit, tbl, start_addr, npages);
}

set_bit_string(tbl->it_map, index, npages);
iommu_area_reserve(tbl->it_map, index, npages);

spin_unlock_irqrestore(&tbl->it_lock, flags);
}
Expand Down
2 changes: 1 addition & 1 deletion arch/x86/kernel/pci-gart_64.c
Original file line number Diff line number Diff line change
Expand Up @@ -827,7 +827,7 @@ void __init gart_iommu_init(void)
* Out of IOMMU space handling.
* Reserve some invalid pages at the beginning of the GART.
*/
set_bit_string(iommu_gart_bitmap, 0, EMERGENCY_PAGES);
iommu_area_reserve(iommu_gart_bitmap, 0, EMERGENCY_PAGES);

agp_memory_reserved = iommu_size;
printk(KERN_INFO
Expand Down
1 change: 1 addition & 0 deletions include/linux/iommu-helper.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ static inline unsigned long iommu_device_max_index(unsigned long size,
extern int iommu_is_span_boundary(unsigned int index, unsigned int nr,
unsigned long shift,
unsigned long boundary_size);
extern void iommu_area_reserve(unsigned long *map, unsigned long i, int len);
extern unsigned long iommu_area_alloc(unsigned long *map, unsigned long size,
unsigned long start, unsigned int nr,
unsigned long shift,
Expand Down
5 changes: 2 additions & 3 deletions lib/iommu-helper.c
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,7 @@ static unsigned long find_next_zero_area(unsigned long *map,
return index;
}

static inline void set_bit_area(unsigned long *map, unsigned long i,
int len)
void iommu_area_reserve(unsigned long *map, unsigned long i, int len)
{
unsigned long end = i + len;
while (i < end) {
Expand Down Expand Up @@ -64,7 +63,7 @@ unsigned long iommu_area_alloc(unsigned long *map, unsigned long size,
start = index + 1;
goto again;
}
set_bit_area(map, index, nr);
iommu_area_reserve(map, index, nr);
}
return index;
}
Expand Down

0 comments on commit d26dbc5

Please sign in to comment.