Skip to content

Commit 55ac0ad

Browse files
committed
genirq/manage: Rework irq_set_vcpu_affinity()
Use the new guards to get and lock the interrupt descriptor and tidy up the code. No functional change. Signed-off-by: Thomas Gleixner <[email protected]> Acked-by: Peter Zijlstra (Intel) <[email protected]> Link: https://lore.kernel.org/all/87ikmlq0fk.ffs@tglx
1 parent 7e04e5c commit 55ac0ad

File tree

1 file changed

+16
-23
lines changed

1 file changed

+16
-23
lines changed

kernel/irq/manage.c

Lines changed: 16 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -629,32 +629,25 @@ int irq_setup_affinity(struct irq_desc *desc)
629629
*/
630630
int irq_set_vcpu_affinity(unsigned int irq, void *vcpu_info)
631631
{
632-
unsigned long flags;
633-
struct irq_desc *desc = irq_get_desc_lock(irq, &flags, 0);
634-
struct irq_data *data;
635-
struct irq_chip *chip;
636-
int ret = -ENOSYS;
637-
638-
if (!desc)
639-
return -EINVAL;
632+
scoped_irqdesc_get_and_lock(irq, 0) {
633+
struct irq_desc *desc = scoped_irqdesc;
634+
struct irq_data *data;
635+
struct irq_chip *chip;
640636

641-
data = irq_desc_get_irq_data(desc);
642-
do {
643-
chip = irq_data_get_irq_chip(data);
644-
if (chip && chip->irq_set_vcpu_affinity)
645-
break;
646-
#ifdef CONFIG_IRQ_DOMAIN_HIERARCHY
647-
data = data->parent_data;
648-
#else
649-
data = NULL;
650-
#endif
651-
} while (data);
637+
data = irq_desc_get_irq_data(desc);
638+
do {
639+
chip = irq_data_get_irq_chip(data);
640+
if (chip && chip->irq_set_vcpu_affinity)
641+
break;
652642

653-
if (data)
654-
ret = chip->irq_set_vcpu_affinity(data, vcpu_info);
655-
irq_put_desc_unlock(desc, flags);
643+
data = irqd_get_parent_data(data);
644+
} while (data);
656645

657-
return ret;
646+
if (!data)
647+
return -ENOSYS;
648+
return chip->irq_set_vcpu_affinity(data, vcpu_info);
649+
}
650+
return -EINVAL;
658651
}
659652
EXPORT_SYMBOL_GPL(irq_set_vcpu_affinity);
660653

0 commit comments

Comments
 (0)