MODULE_PARM_DESC(resetwaittime, "Wait time in seconds after I/O timeout "
                 "before resetting adapter. Default: 180");
 
+int smp_affinity_enable = 1;
+module_param(smp_affinity_enable, int, S_IRUGO);
+MODULE_PARM_DESC(smp_affinity_enable, "SMP affinity feature enable/disbale Default: enable(1)");
+
 MODULE_LICENSE("GPL");
 MODULE_VERSION(MEGASAS_VERSION);
 MODULE_AUTHOR("megaraidlinux@lsi.com");
                                printk(KERN_DEBUG "megasas: Failed to "
                                       "register IRQ for vector %d.\n", i);
                                for (j = 0; j < i; j++) {
-                                       irq_set_affinity_hint(
-                                               instance->msixentry[j].vector, NULL);
+                                       if (smp_affinity_enable)
+                                               irq_set_affinity_hint(
+                                                       instance->msixentry[j].vector, NULL);
                                        free_irq(
                                                instance->msixentry[j].vector,
                                                &instance->irq_context[j]);
                                instance->msix_vectors = 0;
                                goto retry_irq_register;
                        }
-                       if (irq_set_affinity_hint(instance->msixentry[i].vector,
-                               get_cpu_mask(cpu)))
-                               dev_err(&instance->pdev->dev, "Error setting"
-                                       "affinity hint for cpu %d\n", cpu);
-                       cpu = cpumask_next(cpu, cpu_online_mask);
+                       if (smp_affinity_enable) {
+                               if (irq_set_affinity_hint(instance->msixentry[i].vector,
+                                       get_cpu_mask(cpu)))
+                                       dev_err(&instance->pdev->dev,
+                                               "Error setting affinity hint "
+                                               "for cpu %d\n", cpu);
+                               cpu = cpumask_next(cpu, cpu_online_mask);
+                       }
                }
        } else {
                instance->irq_context[0].instance = instance;
        instance->instancet->disable_intr(instance);
        if (instance->msix_vectors)
                for (i = 0; i < instance->msix_vectors; i++) {
-                       irq_set_affinity_hint(
-                               instance->msixentry[i].vector, NULL);
+                       if (smp_affinity_enable)
+                               irq_set_affinity_hint(
+                                       instance->msixentry[i].vector, NULL);
                        free_irq(instance->msixentry[i].vector,
                                 &instance->irq_context[i]);
                }
 
        if (instance->msix_vectors)
                for (i = 0; i < instance->msix_vectors; i++) {
-                       irq_set_affinity_hint(
-                               instance->msixentry[i].vector, NULL);
+                       if (smp_affinity_enable)
+                               irq_set_affinity_hint(
+                                       instance->msixentry[i].vector, NULL);
                        free_irq(instance->msixentry[i].vector,
                                 &instance->irq_context[i]);
                }
                                printk(KERN_DEBUG "megasas: Failed to "
                                       "register IRQ for vector %d.\n", i);
                                for (j = 0; j < i; j++) {
-                                       irq_set_affinity_hint(
-                                               instance->msixentry[j].vector, NULL);
+                                       if (smp_affinity_enable)
+                                               irq_set_affinity_hint(
+                                                       instance->msixentry[j].vector, NULL);
                                        free_irq(
                                                instance->msixentry[j].vector,
                                                &instance->irq_context[j]);
                                goto fail_irq;
                        }
 
-                       if (irq_set_affinity_hint(instance->msixentry[i].vector,
-                               get_cpu_mask(cpu)))
-                               dev_err(&instance->pdev->dev, "Error setting"
-                                       "affinity hint for cpu %d\n", cpu);
-                       cpu = cpumask_next(cpu, cpu_online_mask);
+                       if (smp_affinity_enable) {
+                               if (irq_set_affinity_hint(instance->msixentry[i].vector,
+                                       get_cpu_mask(cpu)))
+                                       dev_err(&instance->pdev->dev, "Error "
+                                               "setting affinity hint for cpu "
+                                               "%d\n", cpu);
+                               cpu = cpumask_next(cpu, cpu_online_mask);
+                       }
                }
        } else {
                instance->irq_context[0].instance = instance;
 
        if (instance->msix_vectors)
                for (i = 0; i < instance->msix_vectors; i++) {
-                       irq_set_affinity_hint(
-                               instance->msixentry[i].vector, NULL);
+                       if (smp_affinity_enable)
+                               irq_set_affinity_hint(
+                                       instance->msixentry[i].vector, NULL);
                        free_irq(instance->msixentry[i].vector,
                                 &instance->irq_context[i]);
                }
        instance->instancet->disable_intr(instance);
        if (instance->msix_vectors)
                for (i = 0; i < instance->msix_vectors; i++) {
-                       irq_set_affinity_hint(
-                               instance->msixentry[i].vector, NULL);
+                       if (smp_affinity_enable)
+                               irq_set_affinity_hint(
+                                       instance->msixentry[i].vector, NULL);
                        free_irq(instance->msixentry[i].vector,
                                 &instance->irq_context[i]);
                }