mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 23:24:38 +00:00
ata: Don't try to use non-existent ports
The controller indicates the number of ports but also has a port map which specifies which ports are actually valid. Make use of this to avoid trying to send commands to an invalid port. This avoids a crash on some controllers. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
a60f7a3e35
commit
2b3ebf2013
1 changed files with 6 additions and 0 deletions
|
@ -675,6 +675,12 @@ static int ata_scsiop_inquiry(struct ahci_uc_priv *uc_priv,
|
|||
/* Read id from sata */
|
||||
port = pccb->target;
|
||||
|
||||
/* If this port number is not valid, give up */
|
||||
if (!(uc_priv->port_map & (1 << port))) {
|
||||
debug("Port %x not valid in map %x\n", port, uc_priv->port_map);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
if (ahci_device_data_io(uc_priv, port, (u8 *)&fis, sizeof(fis),
|
||||
(u8 *)tmpid, ATA_ID_WORDS * 2, 0)) {
|
||||
debug("scsi_ahci: SCSI inquiry command failure.\n");
|
||||
|
|
Loading…
Reference in a new issue