EXPORT_SYMBOL_GPL(irq_create_direct_mapping);
 #endif
 
+static unsigned int __irq_create_mapping_affinity(struct irq_domain *domain,
+                                                 irq_hw_number_t hwirq,
+                                                 const struct irq_affinity_desc *affinity)
+{
+       struct device_node *of_node = irq_domain_get_of_node(domain);
+       int virq;
+
+       pr_debug("irq_create_mapping(0x%p, 0x%lx)\n", domain, hwirq);
+
+       /* Allocate a virtual interrupt number */
+       virq = irq_domain_alloc_descs(-1, 1, hwirq, of_node_to_nid(of_node),
+                                     affinity);
+       if (virq <= 0) {
+               pr_debug("-> virq allocation failed\n");
+               return 0;
+       }
+
+       if (irq_domain_associate(domain, virq, hwirq)) {
+               irq_free_desc(virq);
+               return 0;
+       }
+
+       pr_debug("irq %lu on domain %s mapped to virtual irq %u\n",
+               hwirq, of_node_full_name(of_node), virq);
+
+       return virq;
+}
+
 /**
  * irq_create_mapping_affinity() - Map a hardware interrupt into linux irq space
  * @domain: domain owning this hardware interrupt or NULL for default domain
  * on the number returned from that call.
  */
 unsigned int irq_create_mapping_affinity(struct irq_domain *domain,
-                                      irq_hw_number_t hwirq,
-                                      const struct irq_affinity_desc *affinity)
+                                        irq_hw_number_t hwirq,
+                                        const struct irq_affinity_desc *affinity)
 {
-       struct device_node *of_node;
        int virq;
 
-       pr_debug("irq_create_mapping(0x%p, 0x%lx)\n", domain, hwirq);
-
        /* Look for default domain if necessary */
        if (domain == NULL)
                domain = irq_default_domain;
                WARN(1, "%s(, %lx) called with NULL domain\n", __func__, hwirq);
                return 0;
        }
-       pr_debug("-> using domain @%p\n", domain);
-
-       of_node = irq_domain_get_of_node(domain);
 
        /* Check if mapping already exists */
        virq = irq_find_mapping(domain, hwirq);
        if (virq) {
-               pr_debug("-> existing mapping on virq %d\n", virq);
+               pr_debug("existing mapping on virq %d\n", virq);
                return virq;
        }
 
-       /* Allocate a virtual interrupt number */
-       virq = irq_domain_alloc_descs(-1, 1, hwirq, of_node_to_nid(of_node),
-                                     affinity);
-       if (virq <= 0) {
-               pr_debug("-> virq allocation failed\n");
-               return 0;
-       }
-
-       if (irq_domain_associate(domain, virq, hwirq)) {
-               irq_free_desc(virq);
-               return 0;
-       }
-
-       pr_debug("irq %lu on domain %s mapped to virtual irq %u\n",
-               hwirq, of_node_full_name(of_node), virq);
-
-       return virq;
+       return __irq_create_mapping_affinity(domain, hwirq, affinity);
 }
 EXPORT_SYMBOL_GPL(irq_create_mapping_affinity);
 
                        return 0;
        } else {
                /* Create mapping */
-               virq = irq_create_mapping(domain, hwirq);
+               virq = __irq_create_mapping_affinity(domain, hwirq, NULL);
                if (!virq)
                        return virq;
        }