]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
Merge branch 'stable/for-linus-5.2' of git://git.kernel.org/pub/scm/linux/kernel...
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 12 Jun 2019 01:38:34 +0000 (15:38 -1000)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 12 Jun 2019 01:38:34 +0000 (15:38 -1000)
Pull swiotlb fix from Konrad Rzeszutek Wilk:
 "One tiny fix for ARM64 where we could allocate the SWIOTLB twice"

* 'stable/for-linus-5.2' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/swiotlb:
  xen/swiotlb: don't initialize swiotlb twice on arm64

drivers/xen/swiotlb-xen.c

index 0657b0b57daeca6f275ec5497a836990d5c45888..d53f3493a6b98aedc1d6404239fa1bfb8216c431 100644 (file)
@@ -202,6 +202,15 @@ int __ref xen_swiotlb_init(int verbose, bool early)
 retry:
        bytes = xen_set_nslabs(xen_io_tlb_nslabs);
        order = get_order(xen_io_tlb_nslabs << IO_TLB_SHIFT);
+
+       /*
+        * IO TLB memory already allocated. Just use it.
+        */
+       if (io_tlb_start != 0) {
+               xen_io_tlb_start = phys_to_virt(io_tlb_start);
+               goto end;
+       }
+
        /*
         * Get IO TLB memory from any location.
         */
@@ -231,7 +240,6 @@ retry:
                m_ret = XEN_SWIOTLB_ENOMEM;
                goto error;
        }
-       xen_io_tlb_end = xen_io_tlb_start + bytes;
        /*
         * And replace that memory with pages under 4GB.
         */
@@ -258,6 +266,8 @@ retry:
        } else
                rc = swiotlb_late_init_with_tbl(xen_io_tlb_start, xen_io_tlb_nslabs);
 
+end:
+       xen_io_tlb_end = xen_io_tlb_start + bytes;
        if (!rc)
                swiotlb_set_max_segment(PAGE_SIZE);