]> www.infradead.org Git - users/hch/misc.git/commitdiff
LoongArch: KVM: Rework pch_pic_update_batch_irqs()
authorYury Norov (NVIDIA) <yury.norov@gmail.com>
Tue, 23 Sep 2025 15:37:26 +0000 (23:37 +0800)
committerHuacai Chen <chenhuacai@kernel.org>
Tue, 23 Sep 2025 15:37:26 +0000 (23:37 +0800)
Use proper bitmap API and drop all the housekeeping code.

Reviewed-by: Bibo Mao <maobibo@loongson.cn>
Signed-off-by: Yury Norov (NVIDIA) <yury.norov@gmail.com>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
arch/loongarch/kvm/intc/pch_pic.c

index f464f1f5a67a5422e1f4931ae6a1cd5a55d00057..a698a73de399bc0730a295d1a205205a2c003359 100644 (file)
@@ -35,16 +35,11 @@ static void pch_pic_update_irq(struct loongarch_pch_pic *s, int irq, int level)
 /* update batch irqs, the irq_mask is a bitmap of irqs */
 static void pch_pic_update_batch_irqs(struct loongarch_pch_pic *s, u64 irq_mask, int level)
 {
-       int irq, bits;
+       unsigned int irq;
+       DECLARE_BITMAP(irqs, 64) = { BITMAP_FROM_U64(irq_mask) };
 
-       /* find each irq by irqs bitmap and update each irq */
-       bits = sizeof(irq_mask) * 8;
-       irq = find_first_bit((void *)&irq_mask, bits);
-       while (irq < bits) {
+       for_each_set_bit(irq, irqs, 64)
                pch_pic_update_irq(s, irq, level);
-               bitmap_clear((void *)&irq_mask, irq, 1);
-               irq = find_first_bit((void *)&irq_mask, bits);
-       }
 }
 
 /* called when a irq is triggered in pch pic */