mirror of
https://github.com/lkl/linux.git
synced 2025-12-19 16:13:19 +09:00
swiotlb: Use is_swiotlb_force_bounce for swiotlb data bouncing
Propagate the swiotlb_force into io_tlb_default_mem->force_bounce and use it to determine whether to bounce the data or not. This will be useful later to allow for different pools. Signed-off-by: Claire Chang <tientzu@chromium.org> Reviewed-by: Christoph Hellwig <hch@lst.de> Tested-by: Stefano Stabellini <sstabellini@kernel.org> Tested-by: Will Deacon <will@kernel.org> Acked-by: Stefano Stabellini <sstabellini@kernel.org> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> [v2: Includes Will's fix]
This commit is contained in:
committed by
Konrad Rzeszutek Wilk
parent
6f2beb268a
commit
903cd0f315
@@ -84,6 +84,7 @@ extern enum swiotlb_force swiotlb_force;
|
||||
* unmap calls.
|
||||
* @debugfs: The dentry to debugfs.
|
||||
* @late_alloc: %true if allocated using the page allocator
|
||||
* @force_bounce: %true if swiotlb bouncing is forced
|
||||
*/
|
||||
struct io_tlb_mem {
|
||||
phys_addr_t start;
|
||||
@@ -94,6 +95,7 @@ struct io_tlb_mem {
|
||||
spinlock_t lock;
|
||||
struct dentry *debugfs;
|
||||
bool late_alloc;
|
||||
bool force_bounce;
|
||||
struct io_tlb_slot {
|
||||
phys_addr_t orig_addr;
|
||||
size_t alloc_size;
|
||||
@@ -109,6 +111,13 @@ static inline bool is_swiotlb_buffer(struct device *dev, phys_addr_t paddr)
|
||||
return mem && paddr >= mem->start && paddr < mem->end;
|
||||
}
|
||||
|
||||
static inline bool is_swiotlb_force_bounce(struct device *dev)
|
||||
{
|
||||
struct io_tlb_mem *mem = dev->dma_io_tlb_mem;
|
||||
|
||||
return mem && mem->force_bounce;
|
||||
}
|
||||
|
||||
void __init swiotlb_exit(void);
|
||||
unsigned int swiotlb_max_segment(void);
|
||||
size_t swiotlb_max_mapping_size(struct device *dev);
|
||||
@@ -120,6 +129,10 @@ static inline bool is_swiotlb_buffer(struct device *dev, phys_addr_t paddr)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
static inline bool is_swiotlb_force_bounce(struct device *dev)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
static inline void swiotlb_exit(void)
|
||||
{
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user