Page MenuHomeFreeBSD

D45536.id140137.diff
No OneTemporary

D45536.id140137.diff

Index: sys/amd64/vmm/x86.c
===================================================================
--- sys/amd64/vmm/x86.c
+++ sys/amd64/vmm/x86.c
@@ -67,7 +67,7 @@
log2(u_int x)
{
- return (x == 0 ? -1 : fls(x - 1));
+ return (x == 0 ? -1 : order_base_2(x));
}
int
Index: sys/compat/linuxkpi/common/include/linux/log2.h
===================================================================
--- sys/compat/linuxkpi/common/include/linux/log2.h
+++ sys/compat/linuxkpi/common/include/linux/log2.h
@@ -33,24 +33,9 @@
#include <sys/libkern.h>
-static inline unsigned long
-roundup_pow_of_two(unsigned long x)
-{
- return (1UL << flsl(x - 1));
-}
-
-static inline int
-is_power_of_2(unsigned long n)
-{
- return (n == roundup_pow_of_two(n));
-}
-
-static inline unsigned long
-rounddown_pow_of_two(unsigned long x)
-{
- return (1UL << (flsl(x) - 1));
-}
-
-#define order_base_2(x) ilog2(roundup_pow_of_two(x))
+#define is_power_of_2(n) ({ \
+ __typeof(n)__ _n = (n); \
+ n != 0 && (_n & (_n - 1)) == 0; \
+})
#endif /* _LINUXKPI_LINUX_LOG2_H_ */
Index: sys/dev/aic7xxx/aic79xx.c
===================================================================
--- sys/dev/aic7xxx/aic79xx.c
+++ sys/dev/aic7xxx/aic79xx.c
@@ -8593,7 +8593,7 @@
if (sg_prefetch_align == 0)
sg_prefetch_align = 8;
/* Round down to the nearest power of 2. */
- sg_prefetch_align = 1 << ilog2(sg_prefetch_align);
+ sg_prefetch_align = rounddown_pow_of_two(sg_prefetch_align);
cacheline_mask = sg_prefetch_align - 1;
Index: sys/dev/cxgb/cxgb_sge.c
===================================================================
--- sys/dev/cxgb/cxgb_sge.c
+++ sys/dev/cxgb/cxgb_sge.c
@@ -553,7 +553,7 @@
nqsets *= adap->params.nports;
fl_q_size = min(nmbclusters/(3*nqsets), FL_Q_SIZE);
- fl_q_size = 1 << ilog2(fl_q_size);
+ fl_q_size = rounddown_pow_of_two(fl_q_size);
use_16k = cxgb_use_16k_clusters != -1 ? cxgb_use_16k_clusters :
is_offload(adap);
@@ -565,7 +565,7 @@
jumbo_q_size = min(nmbjumbo9/(3*nqsets), JUMBO_Q_SIZE);
jumbo_buf_size = MJUM9BYTES;
}
- jumbo_q_size = 1 << ilog2(jumbo_q_size);
+ jumbo_q_size = rounddown_pow_of_two(jumbo_q_size);
if (fl_q_size < (FL_Q_SIZE / 4) || jumbo_q_size < (JUMBO_Q_SIZE / 2))
device_printf(adap->dev,
Index: sys/dev/cxgbe/t4_sge.c
===================================================================
--- sys/dev/cxgbe/t4_sge.c
+++ sys/dev/cxgbe/t4_sge.c
@@ -4228,7 +4228,7 @@
{
u_int fthresh;
- fthresh = qsize == 0 ? 0 : fls(qsize - 1);
+ fthresh = qsize == 0 ? 0 : order_base_2(qsize);
if (fthresh > X_CIDXFLUSHTHRESH_128)
fthresh = X_CIDXFLUSHTHRESH_128;
Index: sys/dev/drm2/drm_os_freebsd.h
===================================================================
--- sys/dev/drm2/drm_os_freebsd.h
+++ sys/dev/drm2/drm_os_freebsd.h
@@ -234,13 +234,6 @@
#define div_u64(n, d) ((n) / (d))
#define hweight32(i) bitcount32(i)
-static inline unsigned long
-roundup_pow_of_two(unsigned long x)
-{
-
- return (1UL << flsl(x - 1));
-}
-
/**
* ror32 - rotate a 32-bit value right
* @word: value to rotate
Index: sys/dev/irdma/irdma_ctrl.c
===================================================================
--- sys/dev/irdma/irdma_ctrl.c
+++ sys/dev/irdma/irdma_ctrl.c
@@ -4939,7 +4939,7 @@
qpwanted = min(qp_count, hmc_info->hmc_obj[IRDMA_HMC_IW_QP].max_cnt);
if (qpwanted != 0)
- qpwanted = 1 << ilog2(qpwanted);
+ qpwanted = rounddown_pow_of_two(qpwanted);
mrwanted = hmc_info->hmc_obj[IRDMA_HMC_IW_MR].max_cnt;
pblewanted = hmc_info->hmc_obj[IRDMA_HMC_IW_PBLE].max_cnt;
@@ -4982,7 +4982,7 @@
hmc_info->hmc_obj[IRDMA_HMC_IW_MR].cnt = mrwanted;
hte = round_up(qpwanted + hmc_info->hmc_obj[IRDMA_HMC_IW_FSIMC].cnt, 512);
- hte = hte == 0 ? 1 : 1 << fls(hte - 1);
+ hte = roundup_pow_of_two(hte);
hmc_info->hmc_obj[IRDMA_HMC_IW_HTE].cnt =
hte * hmc_fpm_misc->ht_multiplier;
if (dev->hw_attrs.uk_attrs.hw_rev == IRDMA_GEN_1)
Index: sys/dev/mana/gdma_main.c
===================================================================
--- sys/dev/mana/gdma_main.c
+++ sys/dev/mana/gdma_main.c
@@ -942,7 +942,7 @@
int err;
int i;
- if (length < PAGE_SIZE || !is_power_of_2(length)) {
+ if (length < PAGE_SIZE || !powerof2(length)) {
mana_err(NULL, "gmi size incorrect: %u\n", length);
return EINVAL;
}
Index: sys/dev/mana/gdma_util.h
===================================================================
--- sys/dev/mana/gdma_util.h
+++ sys/dev/mana/gdma_util.h
@@ -170,18 +170,6 @@
return (max);
}
-static inline unsigned long
-roundup_pow_of_two(unsigned long x)
-{
- return (1UL << flsl(x - 1));
-}
-
-static inline int
-is_power_of_2(unsigned long n)
-{
- return (n == roundup_pow_of_two(n));
-}
-
struct completion {
unsigned int done;
struct mtx lock;
Index: sys/dev/mlx5/mlx5_en/mlx5_en_main.c
===================================================================
--- sys/dev/mlx5/mlx5_en/mlx5_en_main.c
+++ sys/dev/mlx5/mlx5_en/mlx5_en_main.c
@@ -2331,7 +2331,7 @@
* Stride size is 16 * (n + 1), as the first segment is
* control.
*/
- n = (1 << fls(howmany(r, MLX5E_MAX_RX_BYTES))) - 1;
+ n = roundup_pow_of_two(1 + howmany(r, MLX5E_MAX_RX_BYTES)) - 1;
if (n > MLX5E_MAX_BUSDMA_RX_SEGS)
return (-ENOMEM);
Index: sys/dev/qlnx/qlnxe/bcm_osal.h
===================================================================
--- sys/dev/qlnx/qlnxe/bcm_osal.h
+++ sys/dev/qlnx/qlnxe/bcm_osal.h
@@ -102,24 +102,6 @@
#ifndef QLNX_RDMA
-static __inline unsigned long
-roundup_pow_of_two(unsigned long x)
-{
- return (1UL << flsl(x - 1));
-}
-
-static __inline int
-is_power_of_2(unsigned long n)
-{
- return (n == roundup_pow_of_two(n));
-}
-
-static __inline unsigned long
-rounddown_pow_of_two(unsigned long x)
-{
- return (1UL << (flsl(x) - 1));
-}
-
#define max_t(type, val1, val2) \
((type)(val1) > (type)(val2) ? (type)(val1) : (val2))
#define min_t(type, val1, val2) \
Index: sys/netpfil/ipfw/ip_fw_table.c
===================================================================
--- sys/netpfil/ipfw/ip_fw_table.c
+++ sys/netpfil/ipfw/ip_fw_table.c
@@ -1512,13 +1512,6 @@
return (0);
}
-static uint32_t
-roundup2p(uint32_t v)
-{
-
- return (1 << fls(v - 1));
-}
-
/*
* Grow tables index.
*
@@ -1540,7 +1533,7 @@
if (ntables > IPFW_TABLES_MAX)
ntables = IPFW_TABLES_MAX;
/* Alight to nearest power of 2 */
- ntables = (unsigned int)roundup2p(ntables);
+ ntables = roundup_pow_of_two(ntables);
/* Allocate new pointers */
tablestate = malloc(ntables * sizeof(struct table_info),
Index: sys/sys/libkern.h
===================================================================
--- sys/sys/libkern.h
+++ sys/sys/libkern.h
@@ -221,78 +221,21 @@
unsigned long long: ilog2_long_long \
)(n)
-#define ilog2(n) \
+#define ilog2_const(n) \
( \
- __builtin_constant_p(n) ? ( \
- (n) < 1 ? -1 : \
- (n) & (1ULL << 63) ? 63 : \
- (n) & (1ULL << 62) ? 62 : \
- (n) & (1ULL << 61) ? 61 : \
- (n) & (1ULL << 60) ? 60 : \
- (n) & (1ULL << 59) ? 59 : \
- (n) & (1ULL << 58) ? 58 : \
- (n) & (1ULL << 57) ? 57 : \
- (n) & (1ULL << 56) ? 56 : \
- (n) & (1ULL << 55) ? 55 : \
- (n) & (1ULL << 54) ? 54 : \
- (n) & (1ULL << 53) ? 53 : \
- (n) & (1ULL << 52) ? 52 : \
- (n) & (1ULL << 51) ? 51 : \
- (n) & (1ULL << 50) ? 50 : \
- (n) & (1ULL << 49) ? 49 : \
- (n) & (1ULL << 48) ? 48 : \
- (n) & (1ULL << 47) ? 47 : \
- (n) & (1ULL << 46) ? 46 : \
- (n) & (1ULL << 45) ? 45 : \
- (n) & (1ULL << 44) ? 44 : \
- (n) & (1ULL << 43) ? 43 : \
- (n) & (1ULL << 42) ? 42 : \
- (n) & (1ULL << 41) ? 41 : \
- (n) & (1ULL << 40) ? 40 : \
- (n) & (1ULL << 39) ? 39 : \
- (n) & (1ULL << 38) ? 38 : \
- (n) & (1ULL << 37) ? 37 : \
- (n) & (1ULL << 36) ? 36 : \
- (n) & (1ULL << 35) ? 35 : \
- (n) & (1ULL << 34) ? 34 : \
- (n) & (1ULL << 33) ? 33 : \
- (n) & (1ULL << 32) ? 32 : \
- (n) & (1ULL << 31) ? 31 : \
- (n) & (1ULL << 30) ? 30 : \
- (n) & (1ULL << 29) ? 29 : \
- (n) & (1ULL << 28) ? 28 : \
- (n) & (1ULL << 27) ? 27 : \
- (n) & (1ULL << 26) ? 26 : \
- (n) & (1ULL << 25) ? 25 : \
- (n) & (1ULL << 24) ? 24 : \
- (n) & (1ULL << 23) ? 23 : \
- (n) & (1ULL << 22) ? 22 : \
- (n) & (1ULL << 21) ? 21 : \
- (n) & (1ULL << 20) ? 20 : \
- (n) & (1ULL << 19) ? 19 : \
- (n) & (1ULL << 18) ? 18 : \
- (n) & (1ULL << 17) ? 17 : \
- (n) & (1ULL << 16) ? 16 : \
- (n) & (1ULL << 15) ? 15 : \
- (n) & (1ULL << 14) ? 14 : \
- (n) & (1ULL << 13) ? 13 : \
- (n) & (1ULL << 12) ? 12 : \
- (n) & (1ULL << 11) ? 11 : \
- (n) & (1ULL << 10) ? 10 : \
- (n) & (1ULL << 9) ? 9 : \
- (n) & (1ULL << 8) ? 8 : \
- (n) & (1ULL << 7) ? 7 : \
- (n) & (1ULL << 6) ? 6 : \
- (n) & (1ULL << 5) ? 5 : \
- (n) & (1ULL << 4) ? 4 : \
- (n) & (1ULL << 3) ? 3 : \
- (n) & (1ULL << 2) ? 2 : \
- (n) & (1ULL << 1) ? 1 : \
- (n) & (1ULL << 0) ? 0 : \
- -1) : \
- ilog2_var(n) \
+ (n) <= 0 ? -1 : -1 + 8 * \
+ (int)sizeof(unsigned long long) - \
+ __builtin_clzll(n) \
)
+#define ilog2(n) (__builtin_constant_p(n) ? ilog2_const(n) : ilog2_var(n))
+#define rounddown_pow_of_two(n) ((__typeof(n))1 << ilog2(n))
+#define order_base_2(n) ({ \
+ __typeof(n) _n = (n); \
+ _n == 1 ? 0 : 1 + ilog2(_n - 1); \
+})
+#define roundup_pow_of_two(n) ((__typeof(n))1 << order_base_2(n))
+
#define bitcount64(x) __bitcount64((uint64_t)(x))
#define bitcount32(x) __bitcount32((uint32_t)(x))
#define bitcount16(x) __bitcount16((uint16_t)(x))
Index: sys/x86/x86/mp_x86.c
===================================================================
--- sys/x86/x86/mp_x86.c
+++ sys/x86/x86/mp_x86.c
@@ -189,7 +189,7 @@
mask_width(u_int x)
{
- return (x == 0 ? -1 : fls(x - 1));
+ return (x == 0 ? -1 : order_base_2(x));
}
/*

File Metadata

Mime Type
text/plain
Expires
Thu, May 1, 11:44 PM (5 h, 15 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
17893132
Default Alt Text
D45536.id140137.diff (9 KB)

Event Timeline