#endif
  
 -static inline void set_extra_move_desc(struct irq_desc *desc, cpumask_t mask)
+ #ifndef CONFIG_NUMA_MIGRATE_IRQ_DESC
 +static inline void
 +set_extra_move_desc(struct irq_desc *desc, const struct cpumask *mask)
  {
  }
+ #endif
  
  struct io_apic {
        unsigned int index;
  
        vector = ~get_irq_regs()->orig_ax;
        me = smp_processor_id();
 -      if ((vector == cfg->vector) && cpu_isset(me, cfg->domain)) {
 -              cpumask_t cleanup_mask;
 -
+ #ifdef CONFIG_NUMA_MIGRATE_IRQ_DESC
+               *descp = desc = move_irq_desc(desc, me);
+               /* get the new one */
+               cfg = desc->chip_data;
+ #endif
+ 
 -              cpus_and(cleanup_mask, cfg->old_domain, cpu_online_map);
 -              cfg->move_cleanup_count = cpus_weight(cleanup_mask);
 -              send_IPI_mask(cleanup_mask, IRQ_MOVE_CLEANUP_VECTOR);
 -              cfg->move_in_progress = 0;
 -      }
 +      if (vector == cfg->vector && cpumask_test_cpu(me, cfg->domain))
 +              send_cleanup_vector(cfg);
  }
  #else
  static inline void irq_complete_move(struct irq_desc **descp) {}