Cannot detect SATA disks w/ CONFIG_SATA_PMP w/o actually using SATA multiplier

Lin Mac mkl0301 at gmail.com
Tue Nov 30 12:46:46 EST 2010


2010/11/30 Tejun Heo <htejun at gmail.com>:
> On 11/30/2010 05:02 AM, Lin Mac wrote:
>> Hi,
>>
>> I found that if I enabled CONFIG_SATA_PMP while not using multiplier
>> and connect the disks directly to the board, the disk cannot be found
>> due to software reset always failed.
>>
>> With arm/cns3xxx
>> linux-2.6.37-rc3
>> ahci-platform driver
>>
>> # modprobe ahci-platform
>> [   12.790000] ahci ahci.0: forcing PORTS_IMPL to 0x3
>> [   12.800000] ahci ahci.0: AHCI 0001.0100 32 slots 2 ports 3 Gbps 0x3
>> impl platform mode
>> [   12.810000] ahci ahci.0: flags: ncq sntf pm led clo only pmp pio
>> slum part ccc
>> [   12.850000] scsi0 : ahci_platform
>> [   12.860000] scsi1 : ahci_platform
>> [   12.870000] ata1: SATA max UDMA/133 irq_stat 0x00400040, connection
>> status changed irq 65
>> [   12.880000] ata2: SATA max UDMA/133 mmio [mem
>> 0x83000000-0x83ffffff] port 0x180 irq 65
>> [   13.240000] ata2: SATA link down (SStatus 0 SControl 300)
>> [   18.900000] ata1: link is slow to respond, please be patient (ready=0)
>> [   22.930000] ata1: softreset failed (device not ready)
>> [   28.940000] ata1: link is slow to respond, please be patient (ready=0)
>> [   32.970000] ata1: softreset failed (device not ready)
>> [   38.980000] ata1: link is slow to respond, please be patient (ready=0)
>> [   68.030000] ata1: softreset failed (device not ready)
>> [   68.040000] ata1: limiting SATA link speed to 1.5 Gbps
>> [   70.280000] ata1: SATA link down (SStatus 1 SControl 310)
>>
>> With some debug, ahci_check_ready always get PORT_TFDATA(20)=0x1d0
>>
>> While using multiplier with CONFIG_SATA_PMP enabled, or using disks
>> directly without CONFIG_SATA_PMP have no issue.
>> After some googling, it seems common and the only fix is to disable
>> CONFIG_SATA_PMP.
>> So, before I keep on going, I would like to know whether this is a
>> limitation, or a bug?
> Most likely a quirk in the controller.  Maybe we should disable PMP
> support for it?
Could be,  but disabling it is the last option. And it's anoying to
have 2 different modules for different uses.

I'd prefer some clues/checkpoint if possible.
I supposed the behavior of detecting and resetting disks (without
using port multiplier) should be the same for both with and without
CONFIG_SATA_PMP. All I know about port multiplier is when it is used
(not much too), but is there any register configuration or behavior is
required for multiplier to work properly and take effect even when no
multiplier is used?

Best Regards,
Mac Lin



More information about the linux-arm-kernel mailing list