On 2/8/24 16:21, Andrey Melnikov wrote: >> >> Hi Andrey >> >> On 2/7/24 10:58, Andrey Jr. Melnikov wrote: >>> The ASM1064 SATA host controller always reports wrongly, >>> that it has 24 ports. But in reality, it only has four ports. >>> >>> before: >>> ahci 0000:04:00.0: SSS flag set, parallel bus scan disabled >>> ahci 0000:04:00.0: AHCI 0001.0301 32 slots 24 ports 6 Gbps 0xffff0f impl SATA mode >>> ahci 0000:04:00.0: flags: 64bit ncq sntf stag pm led only pio sxs deso sadm sds apst >>> >>> after: >>> ahci 0000:04:00.0: ASM1064 has only four ports >>> ahci 0000:04:00.0: forcing port_map 0xffff0f -> 0xf >>> ahci 0000:04:00.0: SSS flag set, parallel bus scan disabled >>> ahci 0000:04:00.0: AHCI 0001.0301 32 slots 24 ports 6 Gbps 0xf impl SATA mode >> >> This still says 24 ports, is that a copy & paste error in the commit msg ? > > This is the raw value of the read-only Host Capability register, how > should it be changed here? If silicon lies about its configuration - > kerel prints what it sees from silicon. This should print the actual number of ports that you forced with the port map change: diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c index 1a63200ea437..7cb3f137bc1b 100644 --- a/drivers/ata/libahci.c +++ b/drivers/ata/libahci.c @@ -2637,7 +2637,7 @@ void ahci_print_info(struct ata_host *host, const char *scc_s) vers & 0xff, ((cap >> 8) & 0x1f) + 1, - (cap & 0x1f) + 1, + (cap & hpriv->saved_port_map) + 1, speed_s, impl, scc_s); -- Damien Le Moal Western Digital Research