• Alexandre Bounine's avatar
    rapidio: make enumeration/discovery configurable · a11650e1
    Alexandre Bounine authored
    Systems that use RapidIO fabric may need to implement their own
    enumeration and discovery methods which are better suitable for needs of
    a target application.
    
    The following set of patches is intended to simplify process of
    introduction of new RapidIO fabric enumeration/discovery methods.
    
    The first patch offers ability to add new RapidIO enumeration/discovery
    methods using kernel configuration options.  This new configuration
    option mechanism allows to select statically linked or modular
    enumeration/discovery method(s) from the list of existing methods or use
    external module(s).
    
    This patch also updates the currently existing enumeration/discovery
    code to be used as a statically linked or modular method.
    
    The corresponding configuration option is named "Basic
    enumeration/discovery" method.  This is the only one configuration
    option available today but new methods are expected to be introduced
    after adoption of provided patches.
    
    The second patch address a long time complaint of RapidIO subsystem
    users regarding fabric enumeration/discovery start sequence.  Existing
    implementation offers only a boot-time enumeration/discovery start which
    requires synchronized boot of all endpoints in RapidIO network.  While
    it works for small closed configurations with limited number of
    endpoints, using this approach in systems with large number of endpoints
    is quite challenging.
    
    To eliminate requirement for synchronized start the second patch
    introduces RapidIO enumeration/discovery start from user space.
    
    For compatibility with the existing RapidIO subsystem implementation,
    automatic boot time enumeration/discovery start can be configured in by
    specifying "rio-scan.scan=1" command line parameter if statically linked
    basic enumeration method is selected.
    
    This patch:
    
    Rework to implement RapidIO enumeration/discovery method selection
    combined with ability to use enumeration/discovery as a kernel module.
    
    This patch adds ability to introduce new RapidIO enumeration/discovery
    methods using kernel configuration options.  Configuration option
    mechanism allows to select statically linked or modular
    enumeration/discovery method from the list of existing methods or use
    external modules.  If a modular enumeration/discovery is selected each
    RapidIO mport device can have its own method attached to it.
    
    The existing enumeration/discovery code was updated to be used as
    statically linked or modular method.  This configuration option is named
    "Basic enumeration/discovery" method.
    
    Several common routines have been moved from rio-scan.c to make them
    available to other enumeration methods and reduce number of exported
    symbols.
    Signed-off-by: default avatarAlexandre Bounine <alexandre.bounine@idt.com>
    Cc: Matt Porter <mporter@kernel.crashing.org>
    Cc: Li Yang <leoli@freescale.com>
    Cc: Kumar Gala <galak@kernel.crashing.org>
    Cc: Andre van Herk <andre.van.herk@Prodrive.nl>
    Cc: Micha Nelissen <micha.nelissen@Prodrive.nl>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    a11650e1
rio.c 43.1 KB