• T
    genirq/msi: Provide data structs for per device domains · ebca4396
    Thomas Gleixner 提交于
    Provide struct msi_domain_template which contains a bundle of struct
    irq_chip, struct msi_domain_ops and struct msi_domain_info and a name
    field.
    
    This template is used by MSI device domain implementations to provide the
    domain specific functionality, feature bits etc.
    
    When a MSI domain is created the template is duplicated in the core code
    so that it can be modified per instance. That means templates can be
    marked const at the MSI device domain code.
    
    The template is a bundle to avoid several allocations and duplications
    of the involved structures.
    
    The name field is used to construct the final domain and chip name via:
    
        $PREFIX$NAME-$DEVNAME
    
    where prefix is the optional prefix of the MSI parent domain, $NAME is the
    provided name in template::chip and the device name so that the domain
    is properly identified. On x86 this results for PCI/MSI in:
    
       PCI-MSI-0000:3d:00.1 or IR-PCI-MSIX-0000:3d:00.1
    
    depending on the domain type and the availability of remapping.
    Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
    Reviewed-by: NKevin Tian <kevin.tian@intel.com>
    Acked-by: NMarc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/20221124232325.442499757@linutronix.de
    ebca4396
msi.h 20.0 KB