]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/ia64/kernel/irq.c
Merge branch 'fix/hda' into for-linus
[linux-2.6-omap-h63xx.git] / arch / ia64 / kernel / irq.c
index 7fd18f54c0568980238cc75a7810ea51de4a4308..a58f64ca9f0e9931476ffd4f8460f95ec4200fad 100644 (file)
@@ -102,21 +102,18 @@ static char irq_redir [NR_IRQS]; // = { [0 ... NR_IRQS-1] = 1 };
 
 void set_irq_affinity_info (unsigned int irq, int hwid, int redir)
 {
-       cpumask_t mask = CPU_MASK_NONE;
-
-       cpu_set(cpu_logical_id(hwid), mask);
-
        if (irq < NR_IRQS) {
-               irq_desc[irq].affinity = mask;
+               cpumask_copy(&irq_desc[irq].affinity,
+                            cpumask_of(cpu_logical_id(hwid)));
                irq_redir[irq] = (char) (redir & 0xff);
        }
 }
 
-bool is_affinity_mask_valid(cpumask_t cpumask)
+bool is_affinity_mask_valid(const struct cpumask *cpumask)
 {
        if (ia64_platform_is("sn2")) {
                /* Only allow one CPU to be specified in the smp_affinity mask */
-               if (cpus_weight(cpumask) != 1)
+               if (cpumask_weight(cpumask) != 1)
                        return false;
        }
        return true;
@@ -128,12 +125,11 @@ bool is_affinity_mask_valid(cpumask_t cpumask)
 unsigned int vectors_in_migration[NR_IRQS];
 
 /*
- * Since cpu_online_map is already updated, we just need to check for
+ * Since cpu_online_mask is already updated, we just need to check for
  * affinity that has zeros
  */
 static void migrate_irqs(void)
 {
-       cpumask_t       mask;
        irq_desc_t *desc;
        int             irq, new_cpu;
 
@@ -152,15 +148,14 @@ static void migrate_irqs(void)
                if (desc->status == IRQ_PER_CPU)
                        continue;
 
-               cpus_and(mask, irq_desc[irq].affinity, cpu_online_map);
-               if (any_online_cpu(mask) == NR_CPUS) {
+               if (cpumask_any_and(&irq_desc[irq].affinity, cpu_online_mask)
+                   >= nr_cpu_ids) {
                        /*
                         * Save it for phase 2 processing
                         */
                        vectors_in_migration[irq] = irq;
 
-                       new_cpu = any_online_cpu(cpu_online_map);
-                       mask = cpumask_of_cpu(new_cpu);
+                       new_cpu = cpumask_any(cpu_online_mask);
 
                        /*
                         * Al three are essential, currently WARN_ON.. maybe panic?
@@ -168,7 +163,8 @@ static void migrate_irqs(void)
                        if (desc->chip && desc->chip->disable &&
                                desc->chip->enable && desc->chip->set_affinity) {
                                desc->chip->disable(irq);
-                               desc->chip->set_affinity(irq, mask);
+                               desc->chip->set_affinity(irq,
+                                                        cpumask_of(new_cpu));
                                desc->chip->enable(irq);
                        } else {
                                WARN_ON((!(desc->chip) || !(desc->chip->disable) ||
@@ -192,7 +188,7 @@ void fixup_irqs(void)
         * Find a new timesync master
         */
        if (smp_processor_id() == time_keeper_id) {
-               time_keeper_id = first_cpu(cpu_online_map);
+               time_keeper_id = cpumask_first(cpu_online_mask);
                printk ("CPU %d is now promoted to time-keeper master\n", time_keeper_id);
        }