Skip to content
  • Alexandre Bounine's avatar
    rapidio: update enumerator registration mechanism · 9edbc30b
    Alexandre Bounine authored
    
    
    Update enumeration/discovery method registration mechanism to allow
    loading enumeration/discovery methods before all mports are registered.
    
    Existing statically linked RapidIO subsystem expects that all available
    RapidIO mport devices are initialized and registered before the
    enumeration/discovery method is registered.  Switching to loadable mport
    device drivers creates situation when mport device driver can be loaded
    after enumeration/discovery method is attached (e.g., loadable mport
    driver in a system with statically linked RapidIO core and enumerator).
    This also will happen in a system with hot-pluggable RapidIO controllers.
    
    To remove the dependency on the initialization/registration order this
    patch introduces enumeration/discovery registration mechanism that
    supports arbitrary registration order of mports and enumerator/discovery
    methods.
    
    The following registration rules are implemented:
    - only one enumeration/discovery method can be registered for given mport ID
      (including RIO_MPORT_ANY);
    - when new enumeration/discovery methods tries to attach to the registered mport
      device, method with matching mport ID will replace a default method previously
      registered for given mport (if any);
    - enumeration/discovery method with target ID=RIO_MPORT_ANY will be attached
      only to mports that do not have another enumerator attached to them;
    - when new mport device is registered with RapidIO subsystem, registration
      routine searches for the enumeration/discovery method with the best matching
      mport ID;
    
    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>
    Cc: Stef van Os <stef.van.os@Prodrive.nl>
    Cc: Jean Delvare <jdelvare@suse.de>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    9edbc30b