From: Simon Glass Date: Tue, 17 Jan 2023 17:47:53 +0000 (-0700) Subject: ata: Don't try to use non-existent ports X-Git-Url: http://git.dujemihanovic.xyz/?a=commitdiff_plain;h=2b3ebf2013d808fc02df0fecf7eb22a6dfaffeb5;p=u-boot.git 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 --- diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c index de6131f1d9..272c48b8e5 100644 --- a/drivers/ata/ahci.c +++ b/drivers/ata/ahci.c @@ -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");