• B
    ide: don't try to unregister interfaces if 'initializing' in ide_register_hw() · 795d74b5
    Bartlomiej Zolnierkiewicz 提交于
    Host drivers using ide_register_hw() and 'initializing == 1':
    
    * ide-pnp
      - depends on ISA
    
    * ide_arm 
      - ARM arch specific
      - initialized before all other host drivers
    
    * ide-cris
      - CRIS arch specific => IDE_ARCH_OBSOLETE_INIT is not defined
      - broken
    
    * ide-h8300
      - H8300 arch specific => IDE_ARCH_OBSOLETE_INIT is not defined, no PCI
    
    * buddha/q40/gayle/macide/falconide
      - M68K arch specific => IDE_ARCH_OBSOLETE_INIT is not defined, no PCI
    
    Since the only host drivers which probe interfaces before the above ones are:
    
    * ali14xx/dtc2278/ht6560b/qd65xx/umc8672
      - depend on ISA
      - require IDE_ARCH_OBSOLETE_INIT=y to work
    
    * PCI ones
      - depend on PCI
    
    don't try to unregister interfaces if 'initializing == 1' in ide_register_hw()
    (it is possible that built-in host drivers will claim all IDE interfaces but
    later ide-pnp host driver will try to unregister them - this change fixes it).
    
    Also skip hwif->hold check if 'initializing == 1' since it is set only by:
    
    * pmac
      - PPC && PMAC specific => no ISA
    
    * au1xxx-ide
      - MIPS && SOC_AU1200 specific => no ISA
    
    and use ide_find_port() helper to find free ide_hwifs[] slot.
    Acked-by: NSergei Shtylyov <sshtylyov@ru.mvista.com>
    Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
    795d74b5
ide.c 44.8 KB