From: Tuomas Tynkkynen Date: Wed, 12 Sep 2018 22:28:54 +0000 (+0300) Subject: ata: ahci: Loop over the actual number of ports, not the maximum X-Git-Tag: v2018.11-rc1~89 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=8bf207d242b603954d5338dabf31b8de01805677;p=oweals%2Fu-boot.git ata: ahci: Loop over the actual number of ports, not the maximum The loop in ahci_start_ports() is looping over the maximum number of SCSI devices in the system, which can be larger than the amount of ports a particular AHCI controller has. The extra looping isn't directly harmful because the link_port_map bitmap won't have the bit set for a nonexistent port, but it is wasteful. Replace the loop limit with the port count of the AHCI controller instead. Signed-off-by: Tuomas Tynkkynen Reviewed-by: Simon Glass --- diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c index c35912bd33..333f0457f6 100644 --- a/drivers/ata/ahci.c +++ b/drivers/ata/ahci.c @@ -980,7 +980,7 @@ static int ahci_start_ports(struct ahci_uc_priv *uc_priv) linkmap = uc_priv->link_port_map; - for (i = 0; i < CONFIG_SYS_SCSI_MAX_SCSI_ID; i++) { + for (i = 0; i < uc_priv->n_ports; i++) { if (((linkmap >> i) & 0x01)) { if (ahci_port_start(uc_priv, (u8) i)) { printf("Can not start port %d\n", i);