Re: Bug report for ahci-mvebu driver

marius
2022-12-09T07:32:21Z

December 9, 2022 4:58 AM, "Damien Le Moal" <damien.lemoal@opensource.wdc.com> wrote:

> On 12/9/22 03:06, marius@psihoexpert.ro wrote:
>
> Checking the specs for the SoC again, it does say:
>
> Gen3 Serial ATA PHY (6 Gbps) with speed negotiation to Gen1, Gen2
>
> So with your gen2 (3gbps) pmp box, clearly, the speed negotiation is not
> working but limiting it to 1.5gbps seems ok. Could you add the following
> print to see what the HW is saying it supports ?
>
> diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
> index 884ae73b11ea..b3925239b8b0 100644
> --- a/drivers/ata/libata-core.c
> +++ b/drivers/ata/libata-core.c
> @@ -5271,6 +5271,9 @@ int sata_link_init_spd(struct ata_link *link)
> if (rc)
> return rc;
>
> + ata_link_info(link, "SCR_CONTROL = 0x%x\n",
> + link->saved_scontrol);
> +
> spd = (link->saved_scontrol >> 4) & 0xf;
> if (spd)
> link->hw_sata_spd_limit &= (1 << spd) - 1;
>
> --
> Damien Le Moal
> Western Digital Research

Without libata.force=2:1.5Gbps, the extra debug message appears only during boot.
Cable connected or not - doesn't matter - the messages are the same.

[ 4.480888][ T1] scsi host1: ahci-mvebu
[ 4.485149][ T1] device: 'host1': device_add
[ 4.489728][ T1] bus: 'scsi': add device host1
[ 4.494544][ T1] device: 'host1': device_add
[ 4.499589][ T1] ata1: SCR_CONTROL = 0x0
[ 4.503822][ T1] ata1: SATA max UDMA/133 mmio [mem 0xf10a8000-0xf10a9fff] port 0x100 irq 42
[ 4.512480][ T1] ata2: SCR_CONTROL = 0x0
[ 4.516704][ T1] ata2: SATA max UDMA/133 mmio [mem 0xf10a8000-0xf10a9fff] port 0x180 irq 42
[ 4.525443][ T1] driver: 'ahci-mvebu': driver_bound: bound to device 'f10a8000.sata'
[ 4.533599][ T1] bus: 'platform': really_probe: bound device f10a8000.sata to driver ahci-mvebu

With libata.force=2:1.5Gbps, the same message appears during boot, but then, when the device is detected:

[ 17.624417][ T113] hardreset, Online=>Offline
[ 17.625498][ T113] resume, do loop
[ 17.853273][ T113] resume, after do loop
[ 17.913272][ T113] debounce, SCR=0x113
[ 17.973271][ T113] debounce, SCR=0x113
[ 18.033271][ T113] debounce, SCR=0x113
[ 18.093271][ T113] debounce, SCR=0x113
[ 18.153271][ T113] debounce, SCR=0x113
[ 18.213270][ T113] debounce, SCR=0x113
[ 18.273270][ T113] debounce, SCR=0x113
[ 18.333270][ T113] debounce, SCR=0x113
[ 18.393271][ T113] debounce, SCR=0x113
[ 18.397130][ T113] resume, return at end of function
[ 18.400987][ T113] hardreset, Offline=>Online
[ 18.410547][ T113] hardreset, sata_pmp_supported, before check_ready
[ 18.583275][ T113] ata2: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
[ 18.597005][ T113] ata2.15: Port Multiplier 1.2, 0x197b:0x0325 r193, 8 ports, feat 0xf/0x1f
[ 18.605655][ T113] device: 'link2.0': device_add
[ 18.610473][ T113] device: 'link2.0': device_add
[ 18.615504][ T113] device: 'dev2.0.0': device_add
[ 18.620352][ T113] device: 'dev2.0.0': device_add
[ 18.625852][ T113] device: 'link2.1': device_add
[ 18.630625][ T113] device: 'link2.1': device_add
[ 18.635522][ T113] device: 'dev2.1.0': device_add
[ 18.640371][ T113] device: 'dev2.1.0': device_add
[ 18.646031][ T113] device: 'link2.2': device_add
[ 18.650796][ T113] device: 'link2.2': device_add
[ 18.656012][ T113] device: 'dev2.2.0': device_add
[ 18.660865][ T113] device: 'dev2.2.0': device_add
[ 18.666438][ T113] device: 'link2.3': device_add
[ 18.671204][ T113] device: 'link2.3': device_add
[ 18.676113][ T113] device: 'dev2.3.0': device_add
[ 18.680962][ T113] device: 'dev2.3.0': device_add
[ 18.686775][ T113] device: 'link2.4': device_add
[ 18.691544][ T113] device: 'link2.4': device_add
[ 18.696469][ T113] device: 'dev2.4.0': device_add
[ 18.701319][ T113] device: 'dev2.4.0': device_add
[ 18.706341][ T113] device: 'link2.5': device_add
[ 18.711109][ T113] device: 'link2.5': device_add
[ 18.716036][ T113] device: 'dev2.5.0': device_add
[ 18.720888][ T113] device: 'dev2.5.0': device_add
[ 18.726475][ T113] device: 'link2.6': device_add
[ 18.731243][ T113] device: 'link2.6': device_add
[ 18.736445][ T113] device: 'dev2.6.0': device_add
[ 18.741300][ T113] device: 'dev2.6.0': device_add
[ 18.746642][ T113] device: 'link2.7': device_add
[ 18.751412][ T113] device: 'link2.7': device_add
[ 18.756871][ T113] device: 'dev2.7.0': device_add
[ 18.761730][ T113] device: 'dev2.7.0': device_add
[ 18.766760][ T113] device: 'link2.8': device_add
[ 18.771528][ T113] device: 'link2.8': device_add
[ 18.776986][ T113] device: 'dev2.8.0': device_add
[ 18.781847][ T113] device: 'dev2.8.0': device_add
[ 18.787176][ T113] device: 'link2.9': device_add
[ 18.791951][ T113] device: 'link2.9': device_add
[ 18.796844][ T113] device: 'dev2.9.0': device_add
[ 18.801967][ T113] device: 'dev2.9.0': device_add
[ 18.807019][ T113] device: 'link2.10': device_add
[ 18.811877][ T113] device: 'link2.10': device_add
[ 18.817156][ T113] device: 'dev2.10.0': device_add
[ 18.822104][ T113] device: 'dev2.10.0': device_add
[ 18.827544][ T113] device: 'link2.11': device_add
[ 18.832406][ T113] device: 'link2.11': device_add
[ 18.837713][ T113] device: 'dev2.11.0': device_add
[ 18.842661][ T113] device: 'dev2.11.0': device_add
[ 18.848594][ T113] device: 'link2.12': device_add
[ 18.853474][ T113] device: 'link2.12': device_add
[ 18.858472][ T113] device: 'dev2.12.0': device_add
[ 18.863433][ T113] device: 'dev2.12.0': device_add
[ 18.869167][ T113] device: 'link2.13': device_add
[ 18.874050][ T113] device: 'link2.13': device_add
[ 18.879039][ T113] device: 'dev2.13.0': device_add
[ 18.884013][ T113] device: 'dev2.13.0': device_add
[ 18.889113][ T113] device: 'link2.14': device_add
[ 18.893992][ T113] device: 'link2.14': device_add
[ 18.898985][ T113] device: 'dev2.14.0': device_add
[ 18.903948][ T113] device: 'dev2.14.0': device_add
[ 18.909642][ T113] ahci-mvebu f10a8000.sata: FBS is enabled
[ 18.915398][ T113] ata2.00: SCR_CONTROL = 0x300
[ 18.920044][ T113] ata2.00: FORCE: PHY spd limit set to 1.5Gbps
[ 18.926149][ T113] ata2.01: SCR_CONTROL = 0x300
[ 18.930795][ T113] ata2.01: FORCE: PHY spd limit set to 1.5Gbps
[ 18.936889][ T113] ata2.02: SCR_CONTROL = 0x300
[ 18.941533][ T113] ata2.02: FORCE: PHY spd limit set to 1.5Gbps
[ 18.947634][ T113] ata2.03: SCR_CONTROL = 0x300
[ 18.952277][ T113] ata2.03: FORCE: PHY spd limit set to 1.5Gbps
[ 18.958371][ T113] ata2.04: SCR_CONTROL = 0x300
[ 18.963015][ T113] ata2.04: FORCE: PHY spd limit set to 1.5Gbps
[ 18.969111][ T113] ata2.05: SCR_CONTROL = 0x300
[ 18.973775][ T113] ata2.05: FORCE: PHY spd limit set to 1.5Gbps
[ 18.979846][ T113] ata2.06: SCR_CONTROL = 0x300
[ 18.984515][ T113] ata2.06: FORCE: PHY spd limit set to 1.5Gbps
[ 18.990586][ T113] ata2.07: SCR_CONTROL = 0x300
[ 18.995251][ T113] ata2.07: FORCE: PHY spd limit set to 1.5Gbps
[ 19.001401][ T113] ata2.00: hard resetting link
[ 19.006066][ T113] hardreset, Online=>Offline
[ 19.006105][ T113] Reconfig spd
[ 19.011857][ T113] resume, do loop
[ 19.243309][ T113] resume, after do loop
[ 19.251950][ T113] debounce, SCR=0x123
[ 19.261104][ T113] debounce, SCR=0x123
[ 19.270082][ T113] debounce, SCR=0x123
[ 19.279059][ T113] debounce, SCR=0x123
[ 19.288018][ T113] debounce, SCR=0x123
[ 19.296978][ T113] debounce, SCR=0x123
[ 19.305937][ T113] debounce, SCR=0x123
[ 19.314896][ T113] debounce, SCR=0x123
[ 19.323855][ T113] debounce, SCR=0x123
[ 19.332813][ T113] debounce, SCR=0x123
[ 19.341790][ T113] debounce, SCR=0x123
[ 19.350768][ T113] debounce, SCR=0x123
[ 19.354706][ T113] resume, return at end of function
[ 19.358595][ T113] hardreset, Offline=>Online
[ 19.368155][ T113] hardreset, after check_ready
[ 19.368372][ T113] ata2.00: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[ 19.380239][ T113] ata2.01: hard resetting link
[ 19.384903][ T113] hardreset, Online=>Offline
[ 19.384940][ T113] Reconfig spd
[ 19.390688][ T113] resume, do loop
[ 19.623306][ T113] resume, after do loop
[ 19.631947][ T113] debounce, SCR=0x123
[ 19.641098][ T113] debounce, SCR=0x123
[ 19.650075][ T113] debounce, SCR=0x123
[ 19.659053][ T113] debounce, SCR=0x123
[ 19.668011][ T113] debounce, SCR=0x123
[ 19.676970][ T113] debounce, SCR=0x123
[ 19.685929][ T113] debounce, SCR=0x123
[ 19.694889][ T113] debounce, SCR=0x123
[ 19.703847][ T113] debounce, SCR=0x123
[ 19.712805][ T113] debounce, SCR=0x123
[ 19.721782][ T113] debounce, SCR=0x123
[ 19.730760][ T113] debounce, SCR=0x123
[ 19.734699][ T113] resume, return at end of function
[ 19.738587][ T113] hardreset, Offline=>Online
[ 19.748146][ T113] hardreset, after check_ready
[ 19.748363][ T113] ata2.01: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
...

I had the impression that speed always starts low and is negociated up (1.5 -> 3 -> 6), not starting high and decreased. How would negociation work if the speed is too high and one of the devices can't communicate?

I tried the pmp box on other computers. ATI/AMD AHCI, Jmicron PATA/SATA combo card, Intel ICH7. None of these have any errors in the log.

Marius Dinu