OSDN Git Service

swiotlb: bail out of swiotlb_init_late() if swiotlb is already allocated
authorPetr Tesarik <petr.tesarik.ext@huawei.com>
Tue, 1 Aug 2023 06:23:56 +0000 (08:23 +0200)
committerChristoph Hellwig <hch@lst.de>
Tue, 1 Aug 2023 16:02:02 +0000 (18:02 +0200)
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>
arch/arm/xen/mm.c
kernel/dma/swiotlb.c

index 3d826c0..882cd70 100644 (file)
@@ -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;
index 1c0a49e..ee57fd9 100644 (file)
@@ -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;