for_each_cpu(cpu, &tmp_mask) {
ASSERT( per_cpu(vector_irq, cpu)[vector] == irq );
- per_cpu(vector_irq, cpu)[vector] = -1;
+ per_cpu(vector_irq, cpu)[vector] = ~irq;
}
desc->arch.vector = IRQ_VECTOR_UNASSIGNED;
for_each_cpu(cpu, &tmp_mask) {
ASSERT( per_cpu(vector_irq, cpu)[old_vector] == irq );
TRACE_3D(TRC_HW_IRQ_MOVE_FINISH, irq, old_vector, cpu);
- per_cpu(vector_irq, cpu)[old_vector] = -1;
- }
+ per_cpu(vector_irq, cpu)[old_vector] = ~irq;
+ }
desc->arch.old_vector = IRQ_VECTOR_UNASSIGNED;
cpumask_clear(desc->arch.old_cpu_mask);
int irq, vector;
for (vector = 0; vector < NR_VECTORS; ++vector)
- this_cpu(vector_irq)[vector] = -1;
+ this_cpu(vector_irq)[vector] = INT_MIN;
irq_desc = xzalloc_array(struct irq_desc, nr_irqs);
goto next;
for_each_cpu(new_cpu, &tmp_mask)
- if (per_cpu(vector_irq, new_cpu)[vector] != -1)
+ if (per_cpu(vector_irq, new_cpu)[vector] >= 0)
goto next;
/* Found one! */
current_vector = vector;
/* Clear vector_irq */
for (vector = 0; vector < NR_VECTORS; ++vector)
- per_cpu(vector_irq, cpu)[vector] = -1;
+ per_cpu(vector_irq, cpu)[vector] = INT_MIN;
/* Mark the inuse vectors */
for (irq = 0; irq < nr_irqs; ++irq) {
struct irq_desc *desc = irq_to_desc(irq);
struct irq_desc *desc;
irq = __get_cpu_var(vector_irq)[vector];
- if (irq == -1)
+ if ((int)irq < 0)
continue;
desc = irq_to_desc(irq);
TRACE_3D(TRC_HW_IRQ_MOVE_CLEANUP,
irq, vector, smp_processor_id());
- __get_cpu_var(vector_irq)[vector] = -1;
+ __get_cpu_var(vector_irq)[vector] = ~irq;
desc->arch.move_cleanup_count--;
if ( desc->arch.move_cleanup_count == 0 )
if ( ! ( vector >= FIRST_LEGACY_VECTOR &&
vector <= LAST_LEGACY_VECTOR &&
bogus_8259A_irq(vector - FIRST_LEGACY_VECTOR) ) )
+ {
printk("CPU%u: No irq handler for vector %02x (IRQ %d%s)\n",
smp_processor_id(), vector, irq, kind);
+ desc = irq_to_desc(~irq);
+ if ( ~irq < nr_irqs && irq_desc_initialized(desc) )
+ {
+ spin_lock(&desc->lock);
+ printk("IRQ%d a=%04lx[%04lx,%04lx] v=%02x[%02x] t=%-15s s=%08x\n",
+ ~irq, *cpumask_bits(desc->affinity),
+ *cpumask_bits(desc->arch.cpu_mask),
+ *cpumask_bits(desc->arch.old_cpu_mask),
+ desc->arch.vector, desc->arch.old_vector,
+ desc->handler->typename, desc->status);
+ spin_unlock(&desc->lock);
+ }
+ }
TRACE_1D(TRC_HW_IRQ_UNMAPPED_VECTOR, vector);
}
goto out_no_unlock;