In irq_2_iommu_alloc() and set_irte_irq(), irq_to_desc or
irq_2_iommu pointers may not be allocated. So use the routines
which will allocate them if they are not already allocated.
Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
        struct irq_desc *desc;
        struct irq_2_iommu *irq_iommu;
 
-       desc = irq_to_desc(irq);
-
-       BUG_ON(!desc);
+       /*
+        * alloc irq desc if not allocated already.
+        */
+       desc = irq_to_desc_alloc(irq);
 
        irq_iommu = desc->irq_2_iommu;
 
        struct irq_2_iommu *irq_iommu;
 
        spin_lock(&irq_2_ir_lock);
-       irq_iommu = valid_irq_2_iommu(irq);
-       if (!irq_iommu) {
-               spin_unlock(&irq_2_ir_lock);
-               return -1;
-       }
+
+       irq_iommu = irq_2_iommu_alloc(irq);
 
        irq_iommu->iommu = iommu;
        irq_iommu->irte_index = index;