|
@@ -2517,39 +2517,6 @@ static void irq_complete_move(struct irq_desc **descp)
|
|
|
static inline void irq_complete_move(struct irq_desc **descp) {}
|
|
|
#endif
|
|
|
|
|
|
-static void __eoi_ioapic_irq(unsigned int irq, struct irq_cfg *cfg)
|
|
|
-{
|
|
|
- int apic, pin;
|
|
|
- struct irq_pin_list *entry;
|
|
|
-
|
|
|
- entry = cfg->irq_2_pin;
|
|
|
- for (;;) {
|
|
|
-
|
|
|
- if (!entry)
|
|
|
- break;
|
|
|
-
|
|
|
- apic = entry->apic;
|
|
|
- pin = entry->pin;
|
|
|
- io_apic_eoi(apic, pin);
|
|
|
- entry = entry->next;
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void
|
|
|
-eoi_ioapic_irq(struct irq_desc *desc)
|
|
|
-{
|
|
|
- struct irq_cfg *cfg;
|
|
|
- unsigned long flags;
|
|
|
- unsigned int irq;
|
|
|
-
|
|
|
- irq = desc->irq;
|
|
|
- cfg = desc->chip_data;
|
|
|
-
|
|
|
- spin_lock_irqsave(&ioapic_lock, flags);
|
|
|
- __eoi_ioapic_irq(irq, cfg);
|
|
|
- spin_unlock_irqrestore(&ioapic_lock, flags);
|
|
|
-}
|
|
|
-
|
|
|
static void ack_apic_edge(unsigned int irq)
|
|
|
{
|
|
|
struct irq_desc *desc = irq_to_desc(irq);
|
|
@@ -2659,6 +2626,39 @@ static void ack_apic_level(unsigned int irq)
|
|
|
}
|
|
|
|
|
|
#ifdef CONFIG_INTR_REMAP
|
|
|
+static void __eoi_ioapic_irq(unsigned int irq, struct irq_cfg *cfg)
|
|
|
+{
|
|
|
+ int apic, pin;
|
|
|
+ struct irq_pin_list *entry;
|
|
|
+
|
|
|
+ entry = cfg->irq_2_pin;
|
|
|
+ for (;;) {
|
|
|
+
|
|
|
+ if (!entry)
|
|
|
+ break;
|
|
|
+
|
|
|
+ apic = entry->apic;
|
|
|
+ pin = entry->pin;
|
|
|
+ io_apic_eoi(apic, pin);
|
|
|
+ entry = entry->next;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+static void
|
|
|
+eoi_ioapic_irq(struct irq_desc *desc)
|
|
|
+{
|
|
|
+ struct irq_cfg *cfg;
|
|
|
+ unsigned long flags;
|
|
|
+ unsigned int irq;
|
|
|
+
|
|
|
+ irq = desc->irq;
|
|
|
+ cfg = desc->chip_data;
|
|
|
+
|
|
|
+ spin_lock_irqsave(&ioapic_lock, flags);
|
|
|
+ __eoi_ioapic_irq(irq, cfg);
|
|
|
+ spin_unlock_irqrestore(&ioapic_lock, flags);
|
|
|
+}
|
|
|
+
|
|
|
static void ir_ack_apic_edge(unsigned int irq)
|
|
|
{
|
|
|
ack_APIC_irq();
|