]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
arm64/fpsimd: simplify sme_setup()
authorYury Norov (NVIDIA) <yury.norov@gmail.com>
Sat, 13 Sep 2025 00:09:05 +0000 (20:09 -0400)
committerWill Deacon <will@kernel.org>
Tue, 16 Sep 2025 20:05:48 +0000 (21:05 +0100)
The function checks info->vq_map for emptiness right before calling
find_last_bit().

We can use the find_last_bit() output and save on bitmap_empty() call,
which is O(N).

Signed-off-by: Yury Norov (NVIDIA) <yury.norov@gmail.com>
Signed-off-by: Will Deacon <will@kernel.org>
arch/arm64/kernel/fpsimd.c

index c37f02d7194e0bbb6f9fef6d44d094588e2ee3ab..e3f8f51748bc948cd6366517398011d17fbad84d 100644 (file)
@@ -1265,6 +1265,8 @@ void __init sme_setup(void)
        if (!system_supports_sme())
                return;
 
+       min_bit = find_last_bit(info->vq_map, SVE_VQ_MAX);
+
        /*
         * SME doesn't require any particular vector length be
         * supported but it does require at least one.  We should have
@@ -1272,9 +1274,8 @@ void __init sme_setup(void)
         * let's double check here.  The bitmap is SVE_VQ_MAP sized for
         * sharing with SVE.
         */
-       WARN_ON(bitmap_empty(info->vq_map, SVE_VQ_MAX));
+       WARN_ON(min_bit >= SVE_VQ_MAX);
 
-       min_bit = find_last_bit(info->vq_map, SVE_VQ_MAX);
        info->min_vl = sve_vl_from_vq(__bit_to_vq(min_bit));
 
        max_bit = find_first_bit(info->vq_map, SVE_VQ_MAX);