Commit a2daa27c authored by Christoph Hellwig's avatar Christoph Hellwig

swiotlb: simplify swiotlb_max_segment

Remove the bogus Xen override that was usually larger than the actual
size and just calculate the value on demand.  Note that
swiotlb_max_segment still doesn't make sense as an interface and should
eventually be removed.
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarAnshuman Khandual <anshuman.khandual@arm.com>
Reviewed-by: default avatarKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Tested-by: default avatarBoris Ostrovsky <boris.ostrovsky@oracle.com>
parent 3469d36d
...@@ -202,7 +202,6 @@ int xen_swiotlb_init(void) ...@@ -202,7 +202,6 @@ int xen_swiotlb_init(void)
rc = swiotlb_late_init_with_tbl(start, nslabs); rc = swiotlb_late_init_with_tbl(start, nslabs);
if (rc) if (rc)
return rc; return rc;
swiotlb_set_max_segment(PAGE_SIZE);
return 0; return 0;
error: error:
if (nslabs > 1024 && repeat--) { if (nslabs > 1024 && repeat--) {
...@@ -254,7 +253,6 @@ void __init xen_swiotlb_init_early(void) ...@@ -254,7 +253,6 @@ void __init xen_swiotlb_init_early(void)
if (swiotlb_init_with_tbl(start, nslabs, true)) if (swiotlb_init_with_tbl(start, nslabs, true))
panic("Cannot allocate SWIOTLB buffer"); panic("Cannot allocate SWIOTLB buffer");
swiotlb_set_max_segment(PAGE_SIZE);
} }
#endif /* CONFIG_X86 */ #endif /* CONFIG_X86 */
......
...@@ -164,7 +164,6 @@ static inline void swiotlb_adjust_size(unsigned long size) ...@@ -164,7 +164,6 @@ static inline void swiotlb_adjust_size(unsigned long size)
#endif /* CONFIG_SWIOTLB */ #endif /* CONFIG_SWIOTLB */
extern void swiotlb_print_info(void); extern void swiotlb_print_info(void);
extern void swiotlb_set_max_segment(unsigned int);
#ifdef CONFIG_DMA_RESTRICTED_POOL #ifdef CONFIG_DMA_RESTRICTED_POOL
struct page *swiotlb_alloc(struct device *dev, size_t size); struct page *swiotlb_alloc(struct device *dev, size_t size);
......
...@@ -68,12 +68,6 @@ struct io_tlb_mem io_tlb_default_mem; ...@@ -68,12 +68,6 @@ struct io_tlb_mem io_tlb_default_mem;
phys_addr_t swiotlb_unencrypted_base; phys_addr_t swiotlb_unencrypted_base;
/*
* Max segment that we can provide which (if pages are contingous) will
* not be bounced (unless SWIOTLB_FORCE is set).
*/
static unsigned int max_segment;
static unsigned long default_nslabs = IO_TLB_DEFAULT_SIZE >> IO_TLB_SHIFT; static unsigned long default_nslabs = IO_TLB_DEFAULT_SIZE >> IO_TLB_SHIFT;
static int __init static int __init
...@@ -97,18 +91,12 @@ early_param("swiotlb", setup_io_tlb_npages); ...@@ -97,18 +91,12 @@ early_param("swiotlb", setup_io_tlb_npages);
unsigned int swiotlb_max_segment(void) unsigned int swiotlb_max_segment(void)
{ {
return io_tlb_default_mem.nslabs ? max_segment : 0; if (!io_tlb_default_mem.nslabs)
return 0;
return rounddown(io_tlb_default_mem.nslabs << IO_TLB_SHIFT, PAGE_SIZE);
} }
EXPORT_SYMBOL_GPL(swiotlb_max_segment); EXPORT_SYMBOL_GPL(swiotlb_max_segment);
void swiotlb_set_max_segment(unsigned int val)
{
if (swiotlb_force == SWIOTLB_FORCE)
max_segment = 1;
else
max_segment = rounddown(val, PAGE_SIZE);
}
unsigned long swiotlb_size_or_default(void) unsigned long swiotlb_size_or_default(void)
{ {
return default_nslabs << IO_TLB_SHIFT; return default_nslabs << IO_TLB_SHIFT;
...@@ -258,7 +246,6 @@ int __init swiotlb_init_with_tbl(char *tlb, unsigned long nslabs, int verbose) ...@@ -258,7 +246,6 @@ int __init swiotlb_init_with_tbl(char *tlb, unsigned long nslabs, int verbose)
if (verbose) if (verbose)
swiotlb_print_info(); swiotlb_print_info();
swiotlb_set_max_segment(mem->nslabs << IO_TLB_SHIFT);
return 0; return 0;
} }
...@@ -359,7 +346,6 @@ swiotlb_late_init_with_tbl(char *tlb, unsigned long nslabs) ...@@ -359,7 +346,6 @@ swiotlb_late_init_with_tbl(char *tlb, unsigned long nslabs)
swiotlb_init_io_tlb_mem(mem, virt_to_phys(tlb), nslabs, true); swiotlb_init_io_tlb_mem(mem, virt_to_phys(tlb), nslabs, true);
swiotlb_print_info(); swiotlb_print_info();
swiotlb_set_max_segment(mem->nslabs << IO_TLB_SHIFT);
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment