diff options
author | Petr Tesarik <petr.tesarik.ext@huawei.com> | 2023-08-01 08:23:56 +0200 |
---|---|---|
committer | Christoph Hellwig <hch@lst.de> | 2023-08-01 18:02:02 +0200 |
commit | 0c6874a6ac0474b54c8d1ba33e243ec578ff815a (patch) | |
tree | d3de8f2e381871d8b58bf7b56ac0bdb24b23cff3 | |
parent | dma-contiguous: check for memory region overlap (diff) | |
download | linux-0c6874a6ac0474b54c8d1ba33e243ec578ff815a.tar.xz linux-0c6874a6ac0474b54c8d1ba33e243ec578ff815a.zip |
swiotlb: bail out of swiotlb_init_late() if swiotlb is already allocated
If swiotlb is allocated, immediately return 0, so callers do not have to
check io_tlb_default_mem.nslabs explicitly.
Signed-off-by: Petr Tesarik <petr.tesarik.ext@huawei.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
-rw-r--r-- | arch/arm/xen/mm.c | 10 | ||||
-rw-r--r-- | kernel/dma/swiotlb.c | 3 |
2 files changed, 7 insertions, 6 deletions
diff --git a/arch/arm/xen/mm.c b/arch/arm/xen/mm.c index 3d826c0b5fee..882cd70c7a2f 100644 --- a/arch/arm/xen/mm.c +++ b/arch/arm/xen/mm.c @@ -125,12 +125,10 @@ static int __init xen_mm_init(void) return 0; /* we can work with the default swiotlb */ - if (!io_tlb_default_mem.nslabs) { - rc = swiotlb_init_late(swiotlb_size_or_default(), - xen_swiotlb_gfp(), NULL); - if (rc < 0) - return rc; - } + rc = swiotlb_init_late(swiotlb_size_or_default(), + xen_swiotlb_gfp(), NULL); + if (rc < 0) + return rc; cflush.op = 0; cflush.a.dev_bus_addr = 0; diff --git a/kernel/dma/swiotlb.c b/kernel/dma/swiotlb.c index 1c0a49e6685a..ee57fd9949dc 100644 --- a/kernel/dma/swiotlb.c +++ b/kernel/dma/swiotlb.c @@ -384,6 +384,9 @@ int swiotlb_init_late(size_t size, gfp_t gfp_mask, bool retried = false; int rc = 0; + if (io_tlb_default_mem.nslabs) + return 0; + if (swiotlb_force_disable) return 0; |