[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH v6 1/9] swiotlb: bail out of swiotlb_init_late() if swiotlb is already allocated



From: Petr Tesarik <petr.tesarik.ext@xxxxxxxxxx>

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@xxxxxxxxxx>
---
 arch/arm/xen/mm.c         | 10 ++++------
 arch/x86/kernel/pci-dma.c | 12 ++++++------
 kernel/dma/swiotlb.c      |  3 +++
 3 files changed, 13 insertions(+), 12 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/arch/x86/kernel/pci-dma.c b/arch/x86/kernel/pci-dma.c
index de6be0a3965e..08988b0a1c91 100644
--- a/arch/x86/kernel/pci-dma.c
+++ b/arch/x86/kernel/pci-dma.c
@@ -86,16 +86,16 @@ static void __init pci_xen_swiotlb_init(void)
 
 int pci_xen_swiotlb_init_late(void)
 {
+       int rc;
+
        if (dma_ops == &xen_swiotlb_dma_ops)
                return 0;
 
        /* we can work with the default swiotlb */
-       if (!io_tlb_default_mem.nslabs) {
-               int rc = swiotlb_init_late(swiotlb_size_or_default(),
-                                          GFP_KERNEL, xen_swiotlb_fixup);
-               if (rc < 0)
-                       return rc;
-       }
+       rc = swiotlb_init_late(swiotlb_size_or_default(),
+                              GFP_KERNEL, xen_swiotlb_fixup);
+       if (rc < 0)
+               return rc;
 
        /* XXX: this switches the dma ops under live devices! */
        dma_ops = &xen_swiotlb_dma_ops;
diff --git a/kernel/dma/swiotlb.c b/kernel/dma/swiotlb.c
index 2b83e3ad9dca..66fc8ec9ae45 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;
 
-- 
2.25.1




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.