diff options
| author | ying tian - Beijing China <Ying.Tian@Sun.COM> | 2010-01-15 13:21:04 +0800 |
|---|---|---|
| committer | ying tian - Beijing China <Ying.Tian@Sun.COM> | 2010-01-15 13:21:04 +0800 |
| commit | 356f626884baacdca93fa012ac65e47c4d59606a (patch) | |
| tree | 00458351127676326c36aaf857594923b72162f6 /usr/src | |
| parent | 02032da2d8b8c39f8555e913f6239bba49238e55 (diff) | |
| download | illumos-joyent-356f626884baacdca93fa012ac65e47c4d59606a.tar.gz | |
6906669 AHCI driver does not detect drives connected to Silicon Image 4723 ports
Diffstat (limited to 'usr/src')
| -rw-r--r-- | usr/src/uts/common/io/sata/adapters/ahci/ahci.c | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/usr/src/uts/common/io/sata/adapters/ahci/ahci.c b/usr/src/uts/common/io/sata/adapters/ahci/ahci.c index a652fd6739..e9c9603ec0 100644 --- a/usr/src/uts/common/io/sata/adapters/ahci/ahci.c +++ b/usr/src/uts/common/io/sata/adapters/ahci/ahci.c @@ -20,7 +20,7 @@ */ /* - * Copyright 2009 Sun Microsystems, Inc. All rights reserved. + * Copyright 2010 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -646,7 +646,7 @@ ahci_attach(dev_info_t *dip, ddi_attach_cmd_t cmd) cap_status = ddi_get32(ahci_ctlp->ahcictl_ahci_acc_handle, (uint32_t *)AHCI_GLOBAL_CAP(ahci_ctlp)); - AHCIDBG(AHCIDBG_INIT, ahci_ctlp, "hba capabilites = 0x%x", + AHCIDBG(AHCIDBG_INIT, ahci_ctlp, "hba capabilities = 0x%x", cap_status); #if AHCI_DEBUG @@ -5453,10 +5453,24 @@ ahci_find_dev_signature(ahci_ctl_t *ahci_ctlp, ahci_port_t *ahci_portp, uint32_t signature; uint8_t port = addrp->aa_port; uint8_t pmport = addrp->aa_pmport; - ASSERT(AHCI_ADDR_IS_VALID(addrp)); int rval; - if (AHCI_ADDR_IS_PORT(addrp)) { + ASSERT(AHCI_ADDR_IS_VALID(addrp)); + + /* + * If the HBA doesn't support port multiplier, then the driver + * doesn't need to bother to check port multiplier device. + * + * The second port of ICH7 on ASUS P5W DH deluxe motherboard is + * connected to Silicon Image 4723, to which the two sata drives + * attached can be set with RAID1, RAID0 or Spanning mode. + * + * We found software reset will get failure if port multiplier address + * 0xf is used by software reset, so just ignore the check since + * ICH7 doesn't support port multiplier device at all. + */ + if (AHCI_ADDR_IS_PORT(addrp) && + (ahci_ctlp->ahcictl_cap & AHCI_CAP_PMULT_CBSS)) { AHCIDBG(AHCIDBG_ENTRY, ahci_ctlp, "ahci_find_dev_signature enter: port %d", port); |
