|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2 09/13] xen/bitops: Replace find_first_set_bit() with ffsl() - 1
On 24.05.2024 22:03, Andrew Cooper wrote:
> --- a/xen/arch/x86/hvm/hpet.c
> +++ b/xen/arch/x86/hvm/hpet.c
> @@ -335,7 +335,7 @@ static void timer_sanitize_int_route(HPETState *h,
> unsigned int tn)
> * enabled pick the first irq.
> */
> timer_config(h, tn) |=
> - MASK_INSR(find_first_set_bit(timer_int_route_cap(h, tn)),
> + MASK_INSR(ffsl(timer_int_route_cap(h, tn)) - 1,
> HPET_TN_ROUTE);
> }
This can be just ffs().
> @@ -409,7 +409,7 @@ static int cf_check hpet_write(
> {
> bool active;
>
> - i = find_first_set_bit(new_val);
> + i = ffsl(new_val) - 1;
> if ( i >= HPET_TIMER_NUM )
> break;
This in principle can be, too, but would require a little further care.
> @@ -535,14 +535,14 @@ static int cf_check hpet_write(
> /* stop/start timers whos state was changed by this write. */
> while (stop_timers)
> {
> - i = find_first_set_bit(stop_timers);
> + i = ffsl(stop_timers) - 1;
> __clear_bit(i, &stop_timers);
> hpet_stop_timer(h, i, guest_time);
> }
>
> while (start_timers)
> {
> - i = find_first_set_bit(start_timers);
> + i = ffsl(start_timers) - 1;
> __clear_bit(i, &start_timers);
> hpet_set_timer(h, i, guest_time);
> }
Same here; in fact {start,stop}_timers are needlessly unsigned long in
the first place.
> --- a/xen/arch/x86/include/asm/pt-contig-markers.h
> +++ b/xen/arch/x86/include/asm/pt-contig-markers.h
> @@ -60,7 +60,7 @@ static bool pt_update_contig_markers(uint64_t *pt, unsigned
> int idx,
> /* Step 1: Reduce markers in lower numbered entries. */
> while ( i )
> {
> - b = find_first_set_bit(i);
> + b = ffsl(i) - 1;
> i &= ~(1U << b);
Considering i's type and the immediately following expression, this again
can easily be just ffs().
> --- a/xen/drivers/passthrough/amd/iommu_map.c
> +++ b/xen/drivers/passthrough/amd/iommu_map.c
> @@ -137,7 +137,7 @@ static void set_iommu_ptes_present(unsigned long pt_mfn,
> ASSERT(!pde->u);
>
> if ( pde > table )
> - ASSERT(pde->ign0 == find_first_set_bit(pde - table));
> + ASSERT(pde->ign0 == ffsl(pde - table) - 1);
pde pointing into the page starting at table, this can be ffs(), too.
Preferably with at least the easy adjustments done:
Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx>
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |