and I was confused about it.
But the maximum TLB segment equals 128K by default in accordance with
https://elixir.bootlin.com/linux/v5.10/source/include/linux/swiotlb.h#L25
This means that the max size of TLB segment equals:
128 * 2048 = 256K
After this, I tried to increase the TLB segment size like this:
diff --git a/include/linux/swiotlb.h b/include/linux/swiotlb.h
index fbdc65782195..85f32865bb6c 100644
--- a/include/linux/swiotlb.h
+++ b/include/linux/swiotlb.h
@@ -22,7 +22,7 @@ enum swiotlb_force {
* must be a power of 2. What is the appropriate value ?
* The complexity of {map,unmap}_single is linearly dependent on this value.
*/
-#define IO_TLB_SEGSIZE 128
+#define IO_TLB_SEGSIZE 2048
/*
* log of the size of each IO TLB slab. The number of slabs is command line
and the problem is gone.
Also, I found the article
https://www.xilinx.com/support/answers/72694.html,
where I believe the same issue was mentioned.