|
@@ -2297,7 +2297,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;
|
|
@@ -2328,7 +2328,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);
|
|
@@ -3001,9 +3001,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);
|
|
|
|
|
@@ -3100,9 +3102,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);
|
|
|
|
|
@@ -3149,9 +3153,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);
|
|
|
|
|
@@ -3218,9 +3224,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;
|