static struct msi_domain_info iproc_msi_domain_info = {
        .flags = MSI_FLAG_USE_DEF_DOM_OPS | MSI_FLAG_USE_DEF_CHIP_OPS |
-               MSI_FLAG_MULTI_PCI_MSI | MSI_FLAG_PCI_MSIX,
+               MSI_FLAG_PCI_MSIX,
        .chip = &iproc_msi_irq_chip,
 };
 
        struct iproc_msi *msi = domain->host_data;
        int hwirq, i;
 
+       if (msi->nr_cpus > 1 && nr_irqs > 1)
+               return -EINVAL;
+
        mutex_lock(&msi->bitmap_lock);
 
        /*
        mutex_init(&msi->bitmap_lock);
        msi->nr_cpus = num_possible_cpus();
 
+       if (msi->nr_cpus == 1)
+               iproc_msi_domain_info.flags |=  MSI_FLAG_MULTI_PCI_MSI;
+
        msi->nr_irqs = of_irq_count(node);
        if (!msi->nr_irqs) {
                dev_err(pcie->dev, "found no MSI GIC interrupt\n");