diff options
author | Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> | 2016-12-20 10:02:02 -0500 |
---|---|---|
committer | Konrad Rzeszutek Wilk <konrad@kernel.org> | 2017-01-06 13:00:01 -0500 |
commit | 7453c549f5f6485c0d79cad7844870dcc7d1b34d (patch) | |
tree | d6303358532275cd114b471810d6fc2333780367 /include/linux/swiotlb.h | |
parent | fff5d99225107f5f13fe4a9805adc2a1c4b5fb00 (diff) | |
download | linux-7453c549f5f6485c0d79cad7844870dcc7d1b34d.tar.gz linux-7453c549f5f6485c0d79cad7844870dcc7d1b34d.tar.bz2 linux-7453c549f5f6485c0d79cad7844870dcc7d1b34d.zip |
swiotlb: Export swiotlb_max_segment to users
So they can figure out what is the optimal number of pages
that can be contingously stitched together without fear of
bounce buffer.
We also expose an mechanism for sub-users of SWIOTLB API, such
as Xen-SWIOTLB to set the max segment value. And lastly
if swiotlb=force is set (which mandates we bounce buffer everything)
we set max_segment so at least we can bounce buffer one 4K page
instead of a giant 512KB one for which we may not have space.
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Reported-and-Tested-by: Juergen Gross <jgross@suse.com>
Diffstat (limited to 'include/linux/swiotlb.h')
-rw-r--r-- | include/linux/swiotlb.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/include/linux/swiotlb.h b/include/linux/swiotlb.h index d9c84a9cde3d..4ee479f2f355 100644 --- a/include/linux/swiotlb.h +++ b/include/linux/swiotlb.h @@ -114,11 +114,14 @@ swiotlb_dma_supported(struct device *hwdev, u64 mask); #ifdef CONFIG_SWIOTLB extern void __init swiotlb_free(void); +unsigned int swiotlb_max_segment(void); #else static inline void swiotlb_free(void) { } +static inline unsigned int swiotlb_max_segment(void) { return 0; } #endif extern void swiotlb_print_info(void); extern int is_swiotlb_buffer(phys_addr_t paddr); +extern void swiotlb_set_max_segment(unsigned int); #endif /* __LINUX_SWIOTLB_H */ |