diff -r cc339ab1d917 -r fd4fd4868325 xen/arch/x86/irq.c --- a/xen/arch/x86/irq.c Thu Sep 22 18:37:06 2011 +0100 +++ b/xen/arch/x86/irq.c Wed Sep 28 11:16:37 2011 +0100 @@ -225,6 +225,9 @@ static void __clear_irq_vector(int irq) for_each_cpu_mask(cpu, tmp_mask) per_cpu(vector_irq, cpu)[vector] = -1; + if ( cfg->used_vectors ) + clear_bit(vector, cfg->used_vectors); + cfg->vector = IRQ_VECTOR_UNASSIGNED; cpus_clear(cfg->cpu_mask); cfg->used = IRQ_UNUSED; @@ -239,12 +242,6 @@ static void __clear_irq_vector(int irq) per_cpu(vector_irq, cpu)[cfg->old_vector] = -1; } - if ( cfg->used_vectors ) - { - ASSERT(test_bit(vector, cfg->used_vectors)); - clear_bit(vector, cfg->used_vectors); - } - cfg->move_in_progress = 0; cfg->old_vector = IRQ_VECTOR_UNASSIGNED; cpus_clear(cfg->old_cpu_mask);