swiotlb: check alloc_size before the allocation of a new memory pool
authorZhangPeng <zhangpeng362@huawei.com>
Tue, 9 Jan 2024 02:45:47 +0000 (10:45 +0800)
committerChristoph Hellwig <hch@lst.de>
Tue, 9 Jan 2024 15:58:36 +0000 (16:58 +0100)
commit3dc2f209208dddc73ffd1d817081711343de3242
treebdee8b0c9e9a663690290fd2a6bcbaa228898633
parentb07bc2347672cc8c7293c64499f1488278c5ca3d
swiotlb: check alloc_size before the allocation of a new memory pool

The allocation request for swiotlb contiguous memory greater than
128*2KB cannot be fulfilled because it exceeds the maximum contiguous
memory limit. If the swiotlb memory we allocate is larger than 128*2KB,
swiotlb_find_slots() will still schedule the allocation of a new memory
pool, which will increase memory overhead.

Fix it by adding a check with alloc_size no more than 128*2KB before
scheduling the allocation of a new memory pool in swiotlb_find_slots().

Signed-off-by: ZhangPeng <zhangpeng362@huawei.com>
Reviewed-by: Petr Tesarik <petr.tesarik1@huawei-partners.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
kernel/dma/swiotlb.c