|
|
@@ -2312,7 +2312,7 @@ int __ioapic_set_affinity(struct irq_data *data, const struct cpumask *mask,
|
|
|
int err;
|
|
|
|
|
|
if (!config_enabled(CONFIG_SMP))
|
|
|
- return -1;
|
|
|
+ return -EPERM;
|
|
|
|
|
|
if (!cpumask_intersects(mask, cpu_online_mask))
|
|
|
return -EINVAL;
|
|
|
@@ -2343,7 +2343,7 @@ int native_ioapic_set_affinity(struct irq_data *data,
|
|
|
int ret;
|
|
|
|
|
|
if (!config_enabled(CONFIG_SMP))
|
|
|
- return -1;
|
|
|
+ return -EPERM;
|
|
|
|
|
|
raw_spin_lock_irqsave(&ioapic_lock, flags);
|
|
|
ret = __ioapic_set_affinity(data, mask, &dest);
|
|
|
@@ -3075,9 +3075,11 @@ msi_set_affinity(struct irq_data *data, const struct cpumask *mask, bool force)
|
|
|
struct irq_cfg *cfg = data->chip_data;
|
|
|
struct msi_msg msg;
|
|
|
unsigned int dest;
|
|
|
+ int ret;
|
|
|
|
|
|
- if (__ioapic_set_affinity(data, mask, &dest))
|
|
|
- return -1;
|
|
|
+ ret = __ioapic_set_affinity(data, mask, &dest);
|
|
|
+ if (ret)
|
|
|
+ return ret;
|
|
|
|
|
|
__get_cached_msi_msg(data->msi_desc, &msg);
|
|
|
|
|
|
@@ -3177,9 +3179,11 @@ dmar_msi_set_affinity(struct irq_data *data, const struct cpumask *mask,
|
|
|
struct irq_cfg *cfg = data->chip_data;
|
|
|
unsigned int dest, irq = data->irq;
|
|
|
struct msi_msg msg;
|
|
|
+ int ret;
|
|
|
|
|
|
- if (__ioapic_set_affinity(data, mask, &dest))
|
|
|
- return -1;
|
|
|
+ ret = __ioapic_set_affinity(data, mask, &dest);
|
|
|
+ if (ret)
|
|
|
+ return ret;
|
|
|
|
|
|
dmar_msi_read(irq, &msg);
|
|
|
|
|
|
@@ -3226,9 +3230,11 @@ static int hpet_msi_set_affinity(struct irq_data *data,
|
|
|
struct irq_cfg *cfg = data->chip_data;
|
|
|
struct msi_msg msg;
|
|
|
unsigned int dest;
|
|
|
+ int ret;
|
|
|
|
|
|
- if (__ioapic_set_affinity(data, mask, &dest))
|
|
|
- return -1;
|
|
|
+ ret = __ioapic_set_affinity(data, mask, &dest);
|
|
|
+ if (ret)
|
|
|
+ return ret;
|
|
|
|
|
|
hpet_msi_read(data->handler_data, &msg);
|
|
|
|
|
|
@@ -3295,9 +3301,11 @@ ht_set_affinity(struct irq_data *data, const struct cpumask *mask, bool force)
|
|
|
{
|
|
|
struct irq_cfg *cfg = data->chip_data;
|
|
|
unsigned int dest;
|
|
|
+ int ret;
|
|
|
|
|
|
- if (__ioapic_set_affinity(data, mask, &dest))
|
|
|
- return -1;
|
|
|
+ ret = __ioapic_set_affinity(data, mask, &dest);
|
|
|
+ if (ret)
|
|
|
+ return ret;
|
|
|
|
|
|
target_ht_irq(data->irq, dest, cfg->vector);
|
|
|
return IRQ_SET_MASK_OK_NOCOPY;
|