Commit 14094c67 authored by Zhou Xuemei's avatar Zhou Xuemei Committed by guzitao
Browse files

sw64: ahci: disable parallel bus scan

Sunway inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/IB73UR



--------------------------------

On sw64 platform, if scan this host(type MARVELL 9230) in parallel,
ahci ports reset failed as follows:

ata4: link is slow to respond, please be patient (ready=0)
ata8.00: qc timeout (cmd 0xa1)
ata8.00: failed to IDENTIFY (I/O error, err_mask=0x4)
ata3: link is slow to respond, please be patient (ready=0)
ata8: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
ata4: COMRESET failed (errno=-16)
ata3: COMRESET failed (errno=-16)
ata4: link is slow to respond, please be patient (ready=0)
ata3: link is slow to respond, please be patient (ready=0)
ata8.00: qc timeout (cmd 0xa1)
ata8.00: failed to IDENTIFY (I/O error, err_mask=0x4)
ata8: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
ata4: COMRESET failed (errno=-16)
ata3: COMRESET failed (errno=-16)
ata3: link is slow to respond, please be patient (ready=0)
ata4: link is slow to respond, please be patient (ready=0)
ata8.00: qc timeout (cmd 0xa1)
ata8.00: failed to IDENTIFY (I/O error, err_mask=0x4)
ata8: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
ata4: COMRESET failed (errno=-16)
ata4: limiting SATA link speed to 3.0 Gbps
ata3: COMRESET failed (errno=-16)
ata3: limiting SATA link speed to 3.0 Gbps
ata4: COMRESET failed (errno=-16)
ata4: reset failed, giving up
ata3: COMRESET failed (errno=-16)
ata3: reset failed, giving up

To work around this problem, we disable it for synchronous scanning.

Signed-off-by: default avatarZhou Xuemei <zhouxuemei@wxiat.com>
Reviewed-by: default avatarHe Sheng <hesheng@wxiat.com>
Signed-off-by: default avatarGu Zitao <guzitao@wxiat.com>
parent ef281410
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -1992,10 +1992,12 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
	}
	hpriv->irq = pci_irq_vector(pdev, 0);

	if (!IS_ENABLED(CONFIG_SW64)) {
		if (!(hpriv->cap & HOST_CAP_SSS) || ahci_ignore_sss)
			host->flags |= ATA_HOST_PARALLEL_SCAN;
		else
			dev_info(&pdev->dev, "SSS flag set, parallel bus scan disabled\n");
	}

	if (!(hpriv->cap & HOST_CAP_PART))
		host->flags |= ATA_HOST_NO_PART;