• Jiang Liu's avatar
    irq_remapping: Introduce new interfaces to support hierarchical irqdomains · 947045a2
    Jiang Liu authored
    Introduce new interfaces for interrupt remapping drivers to support
    hierarchical irqdomains:
    
    1) irq_remapping_get_ir_irq_domain(): get irqdomain associated with an
       interrupt remapping unit. IOAPIC/HPET drivers use this interface to
       get parent interrupt remapping irqdomain.
    
    2) irq_remapping_get_irq_domain(): get irqdomain for an IRQ allocation.
       This is mainly used to support MSI irqdomain. We must build one MSI
       irqdomain for each interrupt remapping unit. MSI driver calls this
       interface to get MSI irqdomain associated with an IR irqdomain which
       manages the PCI devices. In a further step we will store the irqdomain
       pointer in the device struct to avoid this call in the irq allocation
       path.
    
    Architecture specific hooks:
    1) arch_get_ir_parent_domain(): get parent irqdomain for IR irqdomain,
       which is x86_vector_domain on x86 platforms.
    2) arch_create_msi_irq_domain(): create an MSI irqdomain associated with
       the interrupt remapping unit.
    
    We also add following callbacks into struct irq_remap_ops:
    	struct irq_domain *(*get_ir_irq_domain)(struct irq_alloc_info *);
    	struct irq_domain *(*get_irq_domain)(struct irq_alloc_info *);
    
    Once all clients of IR have been converted to the new hierarchical irqdomain
    interfaces, we will:
    1) Remove set_ioapic_entry, set_affinity, free_irq, compose_msi_msg,
       msi_alloc_irq, msi_setup_irq, setup_hpet_msi from struct remap_osp
    2) Remove setup_ioapic_remapped_entry, free_remapped_irq,
       compose_remapped_msi_msg, setup_hpet_msi_remapped, setup_remapped_irq.
    3) Simplify x86_io_apic_ops and x86_msi.
    
    We can achieve a way clearer architecture with all these changes
    applied.
    Signed-off-by: default avatarJiang Liu <jiang.liu@linux.intel.com>
    Acked-by: default avatarJoerg Roedel <jroedel@suse.de>
    Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Cc: David Cohen <david.a.cohen@linux.intel.com>
    Cc: Sander Eikelenboom <linux@eikelenboom.it>
    Cc: David Vrabel <david.vrabel@citrix.com>
    Cc: Tony Luck <tony.luck@intel.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: iommu@lists.linux-foundation.org
    Cc: Bjorn Helgaas <bhelgaas@google.com>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Rafael J. Wysocki <rjw@rjwysocki.net>
    Cc: Randy Dunlap <rdunlap@infradead.org>
    Cc: Yinghai Lu <yinghai@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Dimitri Sivanich <sivanich@sgi.com>
    Cc: Joerg Roedel <joro@8bytes.org>
    Link: http://lkml.kernel.org/r/1428905519-23704-9-git-send-email-jiang.liu@linux.intel.comSigned-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    947045a2
irq_remapping.c 9.75 KB