Hello to all, here is my BUG-Fix tested against kernel 6.12.19 and 6.12.28.
Signed-off-by: Andreas greveandreas.gr...@a-greve.de diff --git a/kernel/dma/swiotlb.c b/kernel/dma/swiotlb.c index abcf3fa63a56..742e6cbbe852 100644 --- a/kernel/dma/swiotlb.c +++ b/kernel/dma/swiotlb.c @@ -1654,7 +1654,16 @@ phys_addr_t default_swiotlb_base(void) phys_addr_t default_swiotlb_limit(void) { #ifdef CONFIG_SWIOTLB_DYNAMIC - return io_tlb_default_mem.phys_limit; + struct io_tlb_mem *mem = &io_tlb_default_mem; + phys_addr_t retval = mem->defpool.end; + struct io_tlb_pool *pool; + rcu_read_lock(); + list_for_each_entry_rcu(pool, &mem->pools, node) { + if (pool->end > retval) + retval = pool->end; + } + rcu_read_unlock(); + return retval - 1; #else return io_tlb_default_mem.defpool.end - 1; #endif