|
@@ -148,9 +148,6 @@ struct irq_cfg {
|
|
|
unsigned move_cleanup_count;
|
|
|
u8 vector;
|
|
|
u8 move_in_progress : 1;
|
|
|
-#ifdef CONFIG_NUMA_MIGRATE_IRQ_DESC
|
|
|
- u8 move_desc_pending : 1;
|
|
|
-#endif
|
|
|
};
|
|
|
|
|
|
/* irq_cfg is indexed by the sum of all RTEs in all I/O APICs. */
|
|
@@ -254,8 +251,7 @@ int arch_init_chip_data(struct irq_desc *desc, int cpu)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-#ifdef CONFIG_NUMA_MIGRATE_IRQ_DESC
|
|
|
-
|
|
|
+/* for move_irq_desc */
|
|
|
static void
|
|
|
init_copy_irq_2_pin(struct irq_cfg *old_cfg, struct irq_cfg *cfg, int cpu)
|
|
|
{
|
|
@@ -356,19 +352,7 @@ void arch_free_chip_data(struct irq_desc *old_desc, struct irq_desc *desc)
|
|
|
old_desc->chip_data = NULL;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
-static void
|
|
|
-set_extra_move_desc(struct irq_desc *desc, const struct cpumask *mask)
|
|
|
-{
|
|
|
- struct irq_cfg *cfg = desc->chip_data;
|
|
|
-
|
|
|
- if (!cfg->move_in_progress) {
|
|
|
- /* it means that domain is not changed */
|
|
|
- if (!cpumask_intersects(desc->affinity, mask))
|
|
|
- cfg->move_desc_pending = 1;
|
|
|
- }
|
|
|
-}
|
|
|
-#endif
|
|
|
+/* end for move_irq_desc */
|
|
|
|
|
|
#else
|
|
|
static struct irq_cfg *irq_cfg(unsigned int irq)
|
|
@@ -378,13 +362,6 @@ static struct irq_cfg *irq_cfg(unsigned int irq)
|
|
|
|
|
|
#endif
|
|
|
|
|
|
-#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;
|
|
|
unsigned int unused[3];
|
|
@@ -592,9 +569,6 @@ set_desc_affinity(struct irq_desc *desc, const struct cpumask *mask)
|
|
|
if (assign_irq_vector(irq, cfg, mask))
|
|
|
return BAD_APICID;
|
|
|
|
|
|
- /* check that before desc->addinity get updated */
|
|
|
- set_extra_move_desc(desc, mask);
|
|
|
-
|
|
|
cpumask_copy(desc->affinity, mask);
|
|
|
|
|
|
return apic->cpu_mask_to_apicid_and(desc->affinity, cfg->domain);
|
|
@@ -2393,8 +2367,6 @@ migrate_ioapic_irq_desc(struct irq_desc *desc, const struct cpumask *mask)
|
|
|
if (assign_irq_vector(irq, cfg, mask))
|
|
|
return;
|
|
|
|
|
|
- set_extra_move_desc(desc, mask);
|
|
|
-
|
|
|
dest = apic->cpu_mask_to_apicid_and(cfg->domain, mask);
|
|
|
|
|
|
irte.vector = cfg->vector;
|
|
@@ -2491,34 +2463,14 @@ static void irq_complete_move(struct irq_desc **descp)
|
|
|
struct irq_cfg *cfg = desc->chip_data;
|
|
|
unsigned vector, me;
|
|
|
|
|
|
- if (likely(!cfg->move_in_progress)) {
|
|
|
-#ifdef CONFIG_NUMA_MIGRATE_IRQ_DESC
|
|
|
- if (likely(!cfg->move_desc_pending))
|
|
|
- return;
|
|
|
-
|
|
|
- /* domain has not changed, but affinity did */
|
|
|
- me = smp_processor_id();
|
|
|
- if (cpumask_test_cpu(me, desc->affinity)) {
|
|
|
- *descp = desc = move_irq_desc(desc, me);
|
|
|
- /* get the new one */
|
|
|
- cfg = desc->chip_data;
|
|
|
- cfg->move_desc_pending = 0;
|
|
|
- }
|
|
|
-#endif
|
|
|
+ if (likely(!cfg->move_in_progress))
|
|
|
return;
|
|
|
- }
|
|
|
|
|
|
vector = ~get_irq_regs()->orig_ax;
|
|
|
me = smp_processor_id();
|
|
|
|
|
|
- if (vector == cfg->vector && cpumask_test_cpu(me, cfg->domain)) {
|
|
|
-#ifdef CONFIG_NUMA_MIGRATE_IRQ_DESC
|
|
|
- *descp = desc = move_irq_desc(desc, me);
|
|
|
- /* get the new one */
|
|
|
- cfg = desc->chip_data;
|
|
|
-#endif
|
|
|
+ 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) {}
|