RE: [PATCH 07/21] hpet: Switch to number_of_interrupts()

From: David Laight
Date: Sun Oct 06 2024 - 13:14:31 EST


From: Bart Van Assche
> Sent: 30 September 2024 19:16
>
> Use the number_of_interrupts() function instead of the global variable
> 'nr_irqs'. This patch prepares for changing 'nr_irqs' from an exported
> global variable into a variable with file scope.
>
> Cc: Clemens Ladisch <clemens@xxxxxxxxxx>
> Signed-off-by: Bart Van Assche <bvanassche@xxxxxxx>
> ---
> drivers/char/hpet.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/char/hpet.c b/drivers/char/hpet.c
> index e904e476e49a..e618ae66587d 100644
> --- a/drivers/char/hpet.c
> +++ b/drivers/char/hpet.c
> @@ -195,7 +195,7 @@ static void hpet_timer_set_irq(struct hpet_dev *devp)
> v &= ~0xffff;
>
> for_each_set_bit(irq, &v, HPET_MAX_IRQ) {
> - if (irq >= nr_irqs) {
> + if (irq >= number_of_interrupts()) {
> irq = HPET_MAX_IRQ;
> break;
> }

This is horrid.
You've replaced the read of a global variable (which, in some cases the
compiler might be able to pull outside the loop) with a real function
call in every loop iteration.

With all the mitigations for cpu speculative execution 'issues' you
pretty much don't want trivial function calls.

If you are worried about locals shadowing globals just change one of the names.

David

-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)