sdhci: stop poking into swiotlb internals
authorChristoph Hellwig <hch@lst.de>
Thu, 4 Feb 2021 16:02:14 +0000 (17:02 +0100)
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Sat, 20 Feb 2021 15:13:19 +0000 (10:13 -0500)
Use the proper API to query the max mapping size instead of guessing
it based on swiotlb internals.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
drivers/mmc/host/sdhci.c

index 646823d..2d73407 100644 (file)
@@ -20,7 +20,6 @@
 #include <linux/slab.h>
 #include <linux/scatterlist.h>
 #include <linux/sizes.h>
-#include <linux/swiotlb.h>
 #include <linux/regulator/consumer.h>
 #include <linux/pm_runtime.h>
 #include <linux/of.h>
@@ -4582,12 +4581,8 @@ int sdhci_setup_host(struct sdhci_host *host)
                mmc->max_segs = SDHCI_MAX_SEGS;
        } else if (host->flags & SDHCI_USE_SDMA) {
                mmc->max_segs = 1;
-               if (swiotlb_max_segment()) {
-                       unsigned int max_req_size = (1 << IO_TLB_SHIFT) *
-                                               IO_TLB_SEGSIZE;
-                       mmc->max_req_size = min(mmc->max_req_size,
-                                               max_req_size);
-               }
+               mmc->max_req_size = min_t(size_t, mmc->max_req_size,
+                                         dma_max_mapping_size(mmc_dev(mmc)));
        } else { /* PIO */
                mmc->max_segs = SDHCI_MAX_SEGS;
        }