summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYury Norov <ynorov@nvidia.com>2026-03-23 12:17:12 -0400
committerYury Norov <ynorov@nvidia.com>2026-03-23 13:33:51 -0400
commitbe56db15fcce8bb8bd85f236382276d52ce73d08 (patch)
tree88d0d51b496d8d0aa39364ce39080f68129f7d4f
parent4e64c91b813f666dffc3962a815a8a50b7d6f468 (diff)
lib: count_zeros: unify count_{leading,trailing}_zeros()
The 'leading' helper returns BITS_PER_LONG if x == 0, while 'trailing' one returns COUNT_TRAILING_ZEROS_0, which turns to be -1. None of the current users explicitly check the returned value for COUNT_TRAILING_ZEROS_0, except the loongarch, which tests implicitly for the '>= 0'. So, align count_trailing_zeros() with the count_leading_zeros(), and simplify the loongarch handling. Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com> Signed-off-by: Yury Norov <ynorov@nvidia.com>
-rw-r--r--arch/loongarch/kvm/intc/eiointc.c4
-rw-r--r--include/linux/count_zeros.h6
2 files changed, 4 insertions, 6 deletions
diff --git a/arch/loongarch/kvm/intc/eiointc.c b/arch/loongarch/kvm/intc/eiointc.c
index d2acb4d09e73..3b5268116727 100644
--- a/arch/loongarch/kvm/intc/eiointc.c
+++ b/arch/loongarch/kvm/intc/eiointc.c
@@ -16,7 +16,7 @@ static void eiointc_set_sw_coreisr(struct loongarch_eiointc *s)
ipnum = (s->ipmap >> (irq / 32 * 8)) & 0xff;
if (!(s->status & BIT(EIOINTC_ENABLE_INT_ENCODE))) {
ipnum = count_trailing_zeros(ipnum);
- ipnum = (ipnum >= 0 && ipnum < 4) ? ipnum : 0;
+ ipnum = ipnum < 4 ? ipnum : 0;
}
cpuid = ((u8 *)s->coremap)[irq];
@@ -41,7 +41,7 @@ static void eiointc_update_irq(struct loongarch_eiointc *s, int irq, int level)
ipnum = (s->ipmap >> (irq / 32 * 8)) & 0xff;
if (!(s->status & BIT(EIOINTC_ENABLE_INT_ENCODE))) {
ipnum = count_trailing_zeros(ipnum);
- ipnum = (ipnum >= 0 && ipnum < 4) ? ipnum : 0;
+ ipnum = ipnum < 4 ? ipnum : 0;
}
cpu = s->sw_coremap[irq];
diff --git a/include/linux/count_zeros.h b/include/linux/count_zeros.h
index 5034a30b5c7c..b72ba3faa036 100644
--- a/include/linux/count_zeros.h
+++ b/include/linux/count_zeros.h
@@ -10,8 +10,6 @@
#include <asm/bitops.h>
-#define COUNT_TRAILING_ZEROS_0 (-1)
-
/**
* count_leading_zeros - Count the number of zeros from the MSB back
* @x: The value
@@ -38,11 +36,11 @@ static inline int count_leading_zeros(unsigned long x)
*
* If the LSB of @x is set, the result is 0.
* If only the MSB of @x is set, then the result is BITS_PER_LONG-1.
- * If @x is 0 then the result is COUNT_TRAILING_ZEROS_0.
+ * If @x is 0 then the result is BITS_PER_LONG.
*/
static inline int count_trailing_zeros(unsigned long x)
{
- return (x != 0) ? __ffs(x) : COUNT_TRAILING_ZEROS_0;
+ return x ? __ffs(x) : BITS_PER_LONG;
}
#endif /* _LINUX_BITOPS_COUNT_ZEROS_H_ */