Message ID | 20210618195735.55933-4-yury.norov@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | for_each_*_bit: move to find.h and reconsider | expand |
On Fri, Jun 18, 2021 at 12:57:35PM -0700, Yury Norov wrote: > A couple of kernel functions call for_each_*_bit_from() with start > bit equal to 0. Replace them with for_each_*_bit(). > > No functional changes, but might improve on readability. ... > --- a/drivers/hwmon/ltc2992.c > +++ b/drivers/hwmon/ltc2992.c > @@ -248,8 +248,7 @@ static int ltc2992_gpio_get_multiple(struct gpio_chip *chip, unsigned long *mask > > gpio_status = reg; > > - gpio_nr = 0; > - for_each_set_bit_from(gpio_nr, mask, LTC2992_GPIO_NR) { > + for_each_set_bit(gpio_nr, mask, LTC2992_GPIO_NR) { > if (test_bit(LTC2992_GPIO_BIT(gpio_nr), &gpio_status)) > set_bit(gpio_nr, bits); > } I would replace the entire loop by bitmap_replace() call. Something like bitmap_replace(bits, bits, &gpio_status, mask, LTC2992_GPIO_NR); (Good to split sometimes :-)
On Sat, Jun 19, 2021 at 01:49:58PM +0300, Andy Shevchenko wrote: > On Fri, Jun 18, 2021 at 12:57:35PM -0700, Yury Norov wrote: > > A couple of kernel functions call for_each_*_bit_from() with start > > bit equal to 0. Replace them with for_each_*_bit(). > > > > No functional changes, but might improve on readability. > > ... > > > --- a/drivers/hwmon/ltc2992.c > > +++ b/drivers/hwmon/ltc2992.c > > @@ -248,8 +248,7 @@ static int ltc2992_gpio_get_multiple(struct gpio_chip *chip, unsigned long *mask > > > > gpio_status = reg; > > > > - gpio_nr = 0; > > - for_each_set_bit_from(gpio_nr, mask, LTC2992_GPIO_NR) { > > + for_each_set_bit(gpio_nr, mask, LTC2992_GPIO_NR) { > > if (test_bit(LTC2992_GPIO_BIT(gpio_nr), &gpio_status)) > > set_bit(gpio_nr, bits); > > } > > I would replace the entire loop by bitmap_replace() call. > > Something like > bitmap_replace(bits, bits, &gpio_status, mask, LTC2992_GPIO_NR); Okay, it wouldn't work directly because it involves LTC2992_GPIO_BIT() macro. So, it rather some kind of bitmap_remap().
On Fri, Jun 18, 2021 at 12:57:35PM -0700, Yury Norov wrote: > A couple of kernel functions call for_each_*_bit_from() with start > bit equal to 0. Replace them with for_each_*_bit(). > > No functional changes, but might improve on readability. > > Signed-off-by: Yury Norov <yury.norov@gmail.com> > --- > arch/x86/kernel/apic/vector.c | 4 ++-- > drivers/gpu/drm/etnaviv/etnaviv_gpu.c | 4 ++-- > drivers/hwmon/ltc2992.c | 3 +-- This should be three different patches, one per subsystem. Guenter > 3 files changed, 5 insertions(+), 6 deletions(-) > > diff --git a/arch/x86/kernel/apic/vector.c b/arch/x86/kernel/apic/vector.c > index fb67ed5e7e6a..d099ef226f55 100644 > --- a/arch/x86/kernel/apic/vector.c > +++ b/arch/x86/kernel/apic/vector.c > @@ -760,9 +760,9 @@ void __init lapic_update_legacy_vectors(void) > > void __init lapic_assign_system_vectors(void) > { > - unsigned int i, vector = 0; > + unsigned int i, vector; > > - for_each_set_bit_from(vector, system_vectors, NR_VECTORS) > + for_each_set_bit(vector, system_vectors, NR_VECTORS) > irq_matrix_assign_system(vector_matrix, vector, false); > > if (nr_legacy_irqs() > 1) > diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c > index 4102bcea3341..42ce3287d3be 100644 > --- a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c > +++ b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c > @@ -1032,7 +1032,7 @@ int etnaviv_gpu_debugfs(struct etnaviv_gpu *gpu, struct seq_file *m) > > void etnaviv_gpu_recover_hang(struct etnaviv_gpu *gpu) > { > - unsigned int i = 0; > + unsigned int i; > > dev_err(gpu->dev, "recover hung GPU!\n"); > > @@ -1045,7 +1045,7 @@ void etnaviv_gpu_recover_hang(struct etnaviv_gpu *gpu) > > /* complete all events, the GPU won't do it after the reset */ > spin_lock(&gpu->event_spinlock); > - for_each_set_bit_from(i, gpu->event_bitmap, ETNA_NR_EVENTS) > + for_each_set_bit(i, gpu->event_bitmap, ETNA_NR_EVENTS) > complete(&gpu->event_free); > bitmap_zero(gpu->event_bitmap, ETNA_NR_EVENTS); > spin_unlock(&gpu->event_spinlock); > diff --git a/drivers/hwmon/ltc2992.c b/drivers/hwmon/ltc2992.c > index 2a4bed0ab226..7352d2b3c756 100644 > --- a/drivers/hwmon/ltc2992.c > +++ b/drivers/hwmon/ltc2992.c > @@ -248,8 +248,7 @@ static int ltc2992_gpio_get_multiple(struct gpio_chip *chip, unsigned long *mask > > gpio_status = reg; > > - gpio_nr = 0; > - for_each_set_bit_from(gpio_nr, mask, LTC2992_GPIO_NR) { > + for_each_set_bit(gpio_nr, mask, LTC2992_GPIO_NR) { > if (test_bit(LTC2992_GPIO_BIT(gpio_nr), &gpio_status)) > set_bit(gpio_nr, bits); > }
On Mon, Jun 21, 2021 at 01:17:11PM -0700, Guenter Roeck wrote: > On Fri, Jun 18, 2021 at 12:57:35PM -0700, Yury Norov wrote: > > A couple of kernel functions call for_each_*_bit_from() with start > > bit equal to 0. Replace them with for_each_*_bit(). > > > > No functional changes, but might improve on readability. > > > > Signed-off-by: Yury Norov <yury.norov@gmail.com> > > --- > > arch/x86/kernel/apic/vector.c | 4 ++-- > > drivers/gpu/drm/etnaviv/etnaviv_gpu.c | 4 ++-- > > drivers/hwmon/ltc2992.c | 3 +-- > > This should be three different patches, one per subsystem. It was discussed recently. https://lore.kernel.org/linux-arch/20210614180706.1e8564854bfed648dd4c039b@linux-foundation.org/
diff --git a/arch/x86/kernel/apic/vector.c b/arch/x86/kernel/apic/vector.c index fb67ed5e7e6a..d099ef226f55 100644 --- a/arch/x86/kernel/apic/vector.c +++ b/arch/x86/kernel/apic/vector.c @@ -760,9 +760,9 @@ void __init lapic_update_legacy_vectors(void) void __init lapic_assign_system_vectors(void) { - unsigned int i, vector = 0; + unsigned int i, vector; - for_each_set_bit_from(vector, system_vectors, NR_VECTORS) + for_each_set_bit(vector, system_vectors, NR_VECTORS) irq_matrix_assign_system(vector_matrix, vector, false); if (nr_legacy_irqs() > 1) diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c index 4102bcea3341..42ce3287d3be 100644 --- a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c +++ b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c @@ -1032,7 +1032,7 @@ int etnaviv_gpu_debugfs(struct etnaviv_gpu *gpu, struct seq_file *m) void etnaviv_gpu_recover_hang(struct etnaviv_gpu *gpu) { - unsigned int i = 0; + unsigned int i; dev_err(gpu->dev, "recover hung GPU!\n"); @@ -1045,7 +1045,7 @@ void etnaviv_gpu_recover_hang(struct etnaviv_gpu *gpu) /* complete all events, the GPU won't do it after the reset */ spin_lock(&gpu->event_spinlock); - for_each_set_bit_from(i, gpu->event_bitmap, ETNA_NR_EVENTS) + for_each_set_bit(i, gpu->event_bitmap, ETNA_NR_EVENTS) complete(&gpu->event_free); bitmap_zero(gpu->event_bitmap, ETNA_NR_EVENTS); spin_unlock(&gpu->event_spinlock); diff --git a/drivers/hwmon/ltc2992.c b/drivers/hwmon/ltc2992.c index 2a4bed0ab226..7352d2b3c756 100644 --- a/drivers/hwmon/ltc2992.c +++ b/drivers/hwmon/ltc2992.c @@ -248,8 +248,7 @@ static int ltc2992_gpio_get_multiple(struct gpio_chip *chip, unsigned long *mask gpio_status = reg; - gpio_nr = 0; - for_each_set_bit_from(gpio_nr, mask, LTC2992_GPIO_NR) { + for_each_set_bit(gpio_nr, mask, LTC2992_GPIO_NR) { if (test_bit(LTC2992_GPIO_BIT(gpio_nr), &gpio_status)) set_bit(gpio_nr, bits); }
A couple of kernel functions call for_each_*_bit_from() with start bit equal to 0. Replace them with for_each_*_bit(). No functional changes, but might improve on readability. Signed-off-by: Yury Norov <yury.norov@gmail.com> --- arch/x86/kernel/apic/vector.c | 4 ++-- drivers/gpu/drm/etnaviv/etnaviv_gpu.c | 4 ++-- drivers/hwmon/ltc2992.c | 3 +-- 3 files changed, 5 insertions(+), 6 deletions(-)