aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/apic
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/kernel/apic')
-rw-r--r--arch/x86/kernel/apic/io_apic.c8
1 files changed, 1 insertions, 7 deletions
diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
index a097a773bc76..0d0401802d4f 100644
--- a/arch/x86/kernel/apic/io_apic.c
+++ b/arch/x86/kernel/apic/io_apic.c
@@ -410,13 +410,10 @@ static bool io_apic_level_ack_pending(struct irq_cfg *cfg)
410 unsigned long flags; 410 unsigned long flags;
411 411
412 spin_lock_irqsave(&ioapic_lock, flags); 412 spin_lock_irqsave(&ioapic_lock, flags);
413 entry = cfg->irq_2_pin; 413 for (entry = cfg->irq_2_pin; entry != NULL; entry = entry->next) {
414 for (;;) {
415 unsigned int reg; 414 unsigned int reg;
416 int pin; 415 int pin;
417 416
418 if (!entry)
419 break;
420 pin = entry->pin; 417 pin = entry->pin;
421 reg = io_apic_read(entry->apic, 0x10 + pin*2); 418 reg = io_apic_read(entry->apic, 0x10 + pin*2);
422 /* Is the remote IRR bit set? */ 419 /* Is the remote IRR bit set? */
@@ -424,9 +421,6 @@ static bool io_apic_level_ack_pending(struct irq_cfg *cfg)
424 spin_unlock_irqrestore(&ioapic_lock, flags); 421 spin_unlock_irqrestore(&ioapic_lock, flags);
425 return true; 422 return true;
426 } 423 }
427 if (!entry->next)
428 break;
429 entry = entry->next;
430 } 424 }
431 spin_unlock_irqrestore(&ioapic_lock, flags); 425 spin_unlock_irqrestore(&ioapic_lock, flags);
432 426