|
@@ -463,42 +463,8 @@ void apic_ack_edge(struct irq_data *data)
|
|
|
ack_APIC_irq();
|
|
|
}
|
|
|
|
|
|
-/*
|
|
|
- * Either sets data->affinity to a valid value, and returns
|
|
|
- * ->cpu_mask_to_apicid of that in dest_id, or returns -1 and
|
|
|
- * leaves data->affinity untouched.
|
|
|
- */
|
|
|
-int apic_set_affinity(struct irq_data *data, const struct cpumask *mask,
|
|
|
- unsigned int *dest_id)
|
|
|
-{
|
|
|
- struct irq_cfg *cfg = irqd_cfg(data);
|
|
|
- unsigned int irq = data->irq;
|
|
|
- int err;
|
|
|
-
|
|
|
- if (!config_enabled(CONFIG_SMP))
|
|
|
- return -EPERM;
|
|
|
-
|
|
|
- if (!cpumask_intersects(mask, cpu_online_mask))
|
|
|
- return -EINVAL;
|
|
|
-
|
|
|
- err = assign_irq_vector(irq, cfg, mask);
|
|
|
- if (err)
|
|
|
- return err;
|
|
|
-
|
|
|
- err = apic->cpu_mask_to_apicid_and(mask, cfg->domain, dest_id);
|
|
|
- if (err) {
|
|
|
- if (assign_irq_vector(irq, cfg, data->affinity))
|
|
|
- pr_err("Failed to recover vector for irq %d\n", irq);
|
|
|
- return err;
|
|
|
- }
|
|
|
-
|
|
|
- cpumask_copy(data->affinity, mask);
|
|
|
-
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
-static int vector_set_affinity(struct irq_data *irq_data,
|
|
|
- const struct cpumask *dest, bool force)
|
|
|
+static int apic_set_affinity(struct irq_data *irq_data,
|
|
|
+ const struct cpumask *dest, bool force)
|
|
|
{
|
|
|
struct irq_cfg *cfg = irq_data->chip_data;
|
|
|
int err, irq = irq_data->irq;
|
|
@@ -523,7 +489,7 @@ static int vector_set_affinity(struct irq_data *irq_data,
|
|
|
|
|
|
static struct irq_chip lapic_controller = {
|
|
|
.irq_ack = apic_ack_edge,
|
|
|
- .irq_set_affinity = vector_set_affinity,
|
|
|
+ .irq_set_affinity = apic_set_affinity,
|
|
|
.irq_retrigger = apic_retrigger_irq,
|
|
|
};
|
|
|
|