* @debugfs:   The dentry to debugfs.
  * @force_bounce: %true if swiotlb bouncing is forced
  * @for_alloc:  %true if the pool is used for memory allocation
+ * @can_grow:  %true if more pools can be allocated dynamically.
  * @total_used:        The total number of slots in the pool that are currently used
  *             across all areas. Used only for calculating used_hiwater in
  *             debugfs.
        struct dentry *debugfs;
        bool force_bounce;
        bool for_alloc;
+#ifdef CONFIG_SWIOTLB_DYNAMIC
+       bool can_grow;
+#endif
 #ifdef CONFIG_DEBUG_FS
        atomic_long_t total_used;
        atomic_long_t used_hiwater;
 
        bool
        select NEED_DMA_MAP_STATE
 
+config SWIOTLB_DYNAMIC
+       bool "Dynamic allocation of DMA bounce buffers"
+       default n
+       depends on SWIOTLB
+       help
+         This enables dynamic resizing of the software IO TLB. The kernel
+         starts with one memory pool at boot and it will allocate additional
+         pools as needed. To reduce run-time kernel memory requirements, you
+         may have to specify a smaller size of the initial pool using
+         "swiotlb=" on the kernel command line.
+
+         If unsure, say N.
+
 config DMA_BOUNCE_UNALIGNED_KMALLOC
        bool
        depends on SWIOTLB
 
        io_tlb_default_mem.force_bounce =
                swiotlb_force_bounce || (flags & SWIOTLB_FORCE);
 
+#ifdef CONFIG_SWIOTLB_DYNAMIC
+       if (!remap)
+               io_tlb_default_mem.can_grow = true;
+#endif
+
        if (!default_nareas)
                swiotlb_adjust_nareas(num_possible_cpus());
 
 
        io_tlb_default_mem.force_bounce = swiotlb_force_bounce;
 
+#ifdef CONFIG_SWIOTLB_DYNAMIC
+       if (!remap)
+               io_tlb_default_mem.can_grow = true;
+#endif
+
        if (!default_nareas)
                swiotlb_adjust_nareas(num_possible_cpus());
 
  */
 phys_addr_t default_swiotlb_base(void)
 {
+#ifdef CONFIG_SWIOTLB_DYNAMIC
+       io_tlb_default_mem.can_grow = false;
+#endif
        return io_tlb_default_mem.defpool.start;
 }