if (CHECK_IRQ_PER_CPU(irq)) {
                        /* Bad linux design decision.  The mask has already
                         * been set; we must reset it */
-------- --             cpumask_setall(irq_desc[irq].affinity);
        -               irq_desc[irq].affinity = CPU_MASK_ALL;
+++++++++++             cpumask_setall(&irq_desc[irq].affinity);
                        return -EINVAL;
                }
            
            
            static void cpu_set_affinity_irq(unsigned int irq, const struct cpumask *dest)
            {
-----------     if (cpu_check_affinity(irq, dest))
+++++++++++     int cpu_dest;
+++++++++++ 
+++++++++++     cpu_dest = cpu_check_affinity(irq, dest);
+++++++++++     if (cpu_dest < 0)
                        return;
            
-------- --     cpumask_copy(irq_desc[irq].affinity, dest);
        -       irq_desc[irq].affinity = *dest;
           -    cpumask_copy(&irq_desc[irq].affinity, &cpumask_of_cpu(cpu_dest));
++++++++++++    cpumask_copy(&irq_desc[irq].affinity, dest);
            }
            #endif
            
            unsigned long txn_affinity_addr(unsigned int irq, int cpu)
            {
            #ifdef CONFIG_SMP
-------- --     cpumask_copy(irq_desc[irq].affinity, cpumask_of(cpu));
        -       irq_desc[irq].affinity = cpumask_of_cpu(cpu);
+++++++++++     cpumask_copy(&irq_desc[irq].affinity, cpumask_of(cpu));
            #endif
            
                return per_cpu(cpu_data, cpu).txn_addr;
                irq = eirr_to_irq(eirr_val);
            
            #ifdef CONFIG_SMP
-------- --     cpumask_copy(&dest, irq_desc[irq].affinity);
        -       dest = irq_desc[irq].affinity;
+++++++++++     cpumask_copy(&dest, &irq_desc[irq].affinity);
                if (CHECK_IRQ_PER_CPU(irq_desc[irq].status) &&
                    !cpu_isset(smp_processor_id(), dest)) {
                        int cpu = first_cpu(dest);