swiotlb: consolidate rounding up default_nslabs
authorChao Gao <chao.gao@intel.com>
Fri, 15 Jul 2022 10:45:34 +0000 (18:45 +0800)
committerChristoph Hellwig <hch@lst.de>
Mon, 18 Jul 2022 04:49:58 +0000 (06:49 +0200)
default_nslabs are rounded up in two cases with exactly same comments.
Add a simple wrapper to reduce duplicate code/comments. It is preparatory
to adding more logics into the round-up.

No functional change intended.

Signed-off-by: Chao Gao <chao.gao@intel.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
kernel/dma/swiotlb.c

index cbffa0b1ace5d6cfc521cbbf515e2ad35e373c92..604f2469ac0e76c1af93bb23b1badf362c8b3141 100644 (file)
@@ -88,6 +88,20 @@ struct io_tlb_area {
        spinlock_t lock;
 };
 
+/*
+ * Round up number of slabs to the next power of 2. The last area is going
+ * be smaller than the rest if default_nslabs is not power of two.
+ *
+ * Return true if default_nslabs is rounded up.
+ */
+static bool round_up_default_nslabs(void)
+{
+       if (!default_nareas || is_power_of_2(default_nslabs))
+               return false;
+       default_nslabs = roundup_pow_of_two(default_nslabs);
+       return true;
+}
+
 static void swiotlb_adjust_nareas(unsigned int nareas)
 {
        if (!is_power_of_2(nareas))
@@ -96,16 +110,9 @@ static void swiotlb_adjust_nareas(unsigned int nareas)
        default_nareas = nareas;
 
        pr_info("area num %d.\n", nareas);
-       /*
-        * Round up number of slabs to the next power of 2.
-        * The last area is going be smaller than the rest if
-        * default_nslabs is not power of two.
-        */
-       if (nareas && !is_power_of_2(default_nslabs)) {
-               default_nslabs = roundup_pow_of_two(default_nslabs);
+       if (round_up_default_nslabs())
                pr_info("SWIOTLB bounce buffer size roundup to %luMB",
                        (default_nslabs << IO_TLB_SHIFT) >> 20);
-       }
 }
 
 static int __init
@@ -154,18 +161,10 @@ void __init swiotlb_adjust_size(unsigned long size)
        if (default_nslabs != IO_TLB_DEFAULT_SIZE >> IO_TLB_SHIFT)
                return;
 
-       /*
-        * Round up number of slabs to the next power of 2.
-        * The last area is going be smaller than the rest if
-        * default_nslabs is not power of two.
-        */
        size = ALIGN(size, IO_TLB_SIZE);
        default_nslabs = ALIGN(size >> IO_TLB_SHIFT, IO_TLB_SEGSIZE);
-       if (default_nareas) {
-               default_nslabs = roundup_pow_of_two(default_nslabs);
+       if (round_up_default_nslabs())
                size = default_nslabs << IO_TLB_SHIFT;
-       }
-
        pr_info("SWIOTLB bounce buffer size adjusted to %luMB", size >> 20);
 }