diff options
| -rw-r--r-- | arch/ia64/kernel/msi_ia64.c | 10 | ||||
| -rw-r--r-- | arch/ia64/sn/kernel/irq.c | 4 | ||||
| -rw-r--r-- | arch/ia64/sn/kernel/msi_sn.c | 2 |
3 files changed, 5 insertions, 11 deletions
diff --git a/arch/ia64/kernel/msi_ia64.c b/arch/ia64/kernel/msi_ia64.c index fb2f1e622877..c430f9198d1b 100644 --- a/arch/ia64/kernel/msi_ia64.c +++ b/arch/ia64/kernel/msi_ia64.c | |||
| @@ -17,12 +17,9 @@ static int ia64_set_msi_irq_affinity(struct irq_data *idata, | |||
| 17 | { | 17 | { |
| 18 | struct msi_msg msg; | 18 | struct msi_msg msg; |
| 19 | u32 addr, data; | 19 | u32 addr, data; |
| 20 | int cpu = first_cpu(*cpu_mask); | 20 | int cpu = cpumask_first_and(cpu_mask, cpu_online_mask); |
| 21 | unsigned int irq = idata->irq; | 21 | unsigned int irq = idata->irq; |
| 22 | 22 | ||
| 23 | if (!cpu_online(cpu)) | ||
| 24 | return -1; | ||
| 25 | |||
| 26 | if (irq_prepare_move(irq, cpu)) | 23 | if (irq_prepare_move(irq, cpu)) |
| 27 | return -1; | 24 | return -1; |
| 28 | 25 | ||
| @@ -139,10 +136,7 @@ static int dmar_msi_set_affinity(struct irq_data *data, | |||
| 139 | unsigned int irq = data->irq; | 136 | unsigned int irq = data->irq; |
| 140 | struct irq_cfg *cfg = irq_cfg + irq; | 137 | struct irq_cfg *cfg = irq_cfg + irq; |
| 141 | struct msi_msg msg; | 138 | struct msi_msg msg; |
| 142 | int cpu = cpumask_first(mask); | 139 | int cpu = cpumask_first_and(mask, cpu_online_mask); |
| 143 | |||
| 144 | if (!cpu_online(cpu)) | ||
| 145 | return -1; | ||
| 146 | 140 | ||
| 147 | if (irq_prepare_move(irq, cpu)) | 141 | if (irq_prepare_move(irq, cpu)) |
| 148 | return -1; | 142 | return -1; |
diff --git a/arch/ia64/sn/kernel/irq.c b/arch/ia64/sn/kernel/irq.c index 62cf4dde6a04..85d095154902 100644 --- a/arch/ia64/sn/kernel/irq.c +++ b/arch/ia64/sn/kernel/irq.c | |||
| @@ -209,8 +209,8 @@ static int sn_set_affinity_irq(struct irq_data *data, | |||
| 209 | nasid_t nasid; | 209 | nasid_t nasid; |
| 210 | int slice; | 210 | int slice; |
| 211 | 211 | ||
| 212 | nasid = cpuid_to_nasid(cpumask_first(mask)); | 212 | nasid = cpuid_to_nasid(cpumask_first_and(mask, cpu_online_mask)); |
| 213 | slice = cpuid_to_slice(cpumask_first(mask)); | 213 | slice = cpuid_to_slice(cpumask_first_and(mask, cpu_online_mask)); |
| 214 | 214 | ||
| 215 | list_for_each_entry_safe(sn_irq_info, sn_irq_info_safe, | 215 | list_for_each_entry_safe(sn_irq_info, sn_irq_info_safe, |
| 216 | sn_irq_lh[irq], list) | 216 | sn_irq_lh[irq], list) |
diff --git a/arch/ia64/sn/kernel/msi_sn.c b/arch/ia64/sn/kernel/msi_sn.c index 2b98b9e088de..afc58d2799ad 100644 --- a/arch/ia64/sn/kernel/msi_sn.c +++ b/arch/ia64/sn/kernel/msi_sn.c | |||
| @@ -166,7 +166,7 @@ static int sn_set_msi_irq_affinity(struct irq_data *data, | |||
| 166 | struct sn_pcibus_provider *provider; | 166 | struct sn_pcibus_provider *provider; |
| 167 | unsigned int cpu, irq = data->irq; | 167 | unsigned int cpu, irq = data->irq; |
| 168 | 168 | ||
| 169 | cpu = cpumask_first(cpu_mask); | 169 | cpu = cpumask_first_and(cpu_mask, cpu_online_mask); |
| 170 | sn_irq_info = sn_msi_info[irq].sn_irq_info; | 170 | sn_irq_info = sn_msi_info[irq].sn_irq_info; |
| 171 | if (sn_irq_info == NULL || sn_irq_info->irq_int_bit >= 0) | 171 | if (sn_irq_info == NULL || sn_irq_info->irq_int_bit >= 0) |
| 172 | return -1; | 172 | return -1; |
