MIPS/octeon: use swiotlb_init instead of open coding it
authorChristoph Hellwig <hch@lst.de>
Mon, 14 Feb 2022 08:27:47 +0000 (09:27 +0100)
committerChristoph Hellwig <hch@lst.de>
Mon, 18 Apr 2022 05:21:10 +0000 (07:21 +0200)
Use the generic swiotlb initialization helper instead of open coding it.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Acked-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Tested-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
arch/mips/cavium-octeon/dma-octeon.c
arch/mips/pci/pci-octeon.c

index df70308db0e697103bf172e920cd4e49f3280451..fb7547e2172637dcbb88fd75b69af9fcebdf0db6 100644 (file)
@@ -186,15 +186,12 @@ phys_addr_t dma_to_phys(struct device *dev, dma_addr_t daddr)
        return daddr;
 }
 
-char *octeon_swiotlb;
-
 void __init plat_swiotlb_setup(void)
 {
        phys_addr_t start, end;
        phys_addr_t max_addr;
        phys_addr_t addr_size;
        size_t swiotlbsize;
-       unsigned long swiotlb_nslabs;
        u64 i;
 
        max_addr = 0;
@@ -236,15 +233,7 @@ void __init plat_swiotlb_setup(void)
        if (OCTEON_IS_OCTEON2() && max_addr >= 0x100000000ul)
                swiotlbsize = 64 * (1<<20);
 #endif
-       swiotlb_nslabs = swiotlbsize >> IO_TLB_SHIFT;
-       swiotlb_nslabs = ALIGN(swiotlb_nslabs, IO_TLB_SEGSIZE);
-       swiotlbsize = swiotlb_nslabs << IO_TLB_SHIFT;
-
-       octeon_swiotlb = memblock_alloc_low(swiotlbsize, PAGE_SIZE);
-       if (!octeon_swiotlb)
-               panic("%s: Failed to allocate %zu bytes align=%lx\n",
-                     __func__, swiotlbsize, PAGE_SIZE);
 
-       if (swiotlb_init_with_tbl(octeon_swiotlb, swiotlb_nslabs, 1) == -ENOMEM)
-               panic("Cannot allocate SWIOTLB buffer");
+       swiotlb_adjust_size(swiotlbsize);
+       swiotlb_init(1);
 }
index fc29b85cfa926d1b70e69901b2e2c3abc7e46fcc..e457a18cbdc59005943a6bed401e1fd83cc55551 100644 (file)
@@ -664,7 +664,7 @@ static int __init octeon_pci_setup(void)
 
                /* BAR1 movable regions contiguous to cover the swiotlb */
                octeon_bar1_pci_phys =
-                       virt_to_phys(octeon_swiotlb) & ~((1ull << 22) - 1);
+                       io_tlb_default_mem.start & ~((1ull << 22) - 1);
 
                for (index = 0; index < 32; index++) {
                        union cvmx_pci_bar1_indexx bar1_index;