linux-ide.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Robert Hancock <hancockrwd@gmail.com>
To: Luo Dislo <dislo_b_j@yahoo.com.tw>
Cc: Tejun Heo <tj@kernel.org>, jgarzik@pobox.com, linux-ide@vger.kernel.org
Subject: Re: AHCI support Port Multiplier problem.
Date: Mon, 10 Jan 2011 19:54:29 -0600	[thread overview]
Message-ID: <4D2BB855.5070703@gmail.com> (raw)
In-Reply-To: <55871.3142.qm@web74203.mail.tp2.yahoo.com>

On 01/09/2011 07:46 PM, Luo Dislo wrote:
> Hello,
>
> This is my company(Faraday) implemented AHCI SATA controller. Our
> controller is not located at PCI bus, but AHB bus(ARM based platform).
>
> However, I modify Linux kernel builtin AHCI driver(ahci.c) to replace
> the PCI related code by using platform bus. Just pretty similar way
> with drivers/ata/ahci_platform.c (Kernel 2.6.35).
>
> I think the problem happens because libata does not give up, keep on
> expecting the Port Multiplier Signature when we set CONFIG_SATA_PMP
> to 1.

It shouldn't be expecting only a PMP signature in this case if there is 
no PMP connected. The PMP spec states:

"To determine if a Port Multiplier is present, the host performs the 
following procedure. The host will determine if communication is 
established on the host’s Serial ATA port by checking the host’s SStatus 
register. If a device is present, the host will issue a software reset 
with the PM Port field set to the control port. The host will check the 
signature value returned and if it corresponds to the Port Multiplier 
Signature, the host knows that a Port Multiplier is present. If the 
signature value does not correspond to a Port Multiplier, the host may 
proceed with the normal initialization sequence for that device type."

The code is doing this. However, I suspect the problem is that on some 
controllers, it won't fill in the signature as expected if the PMP field 
on the received D2H Register FIS doesn't match the one listed in the 
command 15, for the PMP control port), which it won't if there's no PMP 
connected. I'm not sure if this is the intent of the AHCI spec or not, 
but in any case it appears that a number of controllers have this issue. 
I suspect that retrying with PMP=0 if the softreset with PMP=15 failed 
to acquire a signature is likely the thing to do.


>
> I know how to fix this problem, just add AHCI_HFLAG_NO_PMP to AHCI_HFLAGS when I connect hard drive to the controller. Meanwhile, when I want to connect the Port Muliplier to my controller, I need to remove AHCI_HFLAG_NO_PMP from AHCI_HFLAGS.
>
> I don't think this is a good solution because I have to compile two version of my code. It does not make sense. We set CONFIG_SATA_PMP to 1 and inside the driver code DOES NOT have AHCI_HFLAG_NO_PMP just means that controller support Port Multiplier but the device connecting to the port might be others type.
>
>
>
> Regards,
>
> Dislo
>
>
>
>
> --- 11/1/8 (六),Tejun Heo<tj@kernel.org>  寫道:
>
>> 寄件者: Tejun Heo<tj@kernel.org>
>> 主旨: Re: AHCI support Port Multiplier problem.
>> 收件者: "Luo Dislo"<dislo_b_j@yahoo.com.tw>
>> 副本: jgarzik@pobox.com, linux-ide@vger.kernel.org
>> 日期: 2011年1月8日,六,上午5:25
>> Hello,
>>
>> On Fri, Jan 07, 2011 at 10:55:14AM +0800, Luo Dislo wrote:
>>> I am using AHCI driver, when CONFIG_SATA_PMP is set
>> and the ahci
>>> driver DOES NOT have AHCI_HFLAG_NO_PMP. Libata sends
>> Software Reset
>>> with PMP=0xF, trying to detect if Port Multiplier
>> connected to the
>>> port. Unfortunately, if I plugged in general Hard
>> drive, my
>>> controller failed to identify the hard drive.
>>>
>>> What I observed was that libata always sent Software
>> Reset with
>>> PMP=0xF and I guessed expecting signature is
>> 0x96690101. I think
>>> libata should give up if the device does not return
>> the Port
>>> Multiplier signature at the first time and take the
>> signature value
>>> from device as the real device connnecting to the port
>> now.
>>>
>>> What we said "support" PMP does not mean the port can
>> only connnect
>>> to Port Multiplier. It might connect with hard drive
>> or ATAPI
>>> device.
>>
>> Which controller is this?  Can you please post the
>> output of "lspci
>> -nn"?  SB600 had this problem and needed workaround
>> but later SBs
>> fixed it.  Looks like someone else screwed up
>> similarly.
>>
>> Thanks.
>>
>> --
>> tejun
>>
>
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-ide" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>


  parent reply	other threads:[~2011-01-11  1:54 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-01-07  2:55 AHCI support Port Multiplier problem Luo Dislo
2011-01-07 21:25 ` Tejun Heo
2011-01-10  1:46   ` Luo Dislo
2011-01-10 15:42     ` Mac Lin
2011-01-11  1:54     ` Robert Hancock [this message]
2011-01-11 14:39       ` Tejun Heo
2011-01-11 14:37     ` Tejun Heo
2011-01-12  1:26       ` Luo Dislo
2011-01-13  8:16       ` Luo Dislo
2011-02-15  7:48       ` Question regarding PORT_IRQ_BAD_PMP (Re: AHCI support Port Multiplier problem.) Mac Lin
2011-02-15  8:55         ` Tejun Heo
2011-02-15  9:50           ` Lin Mac
2011-02-15 10:03             ` Tejun Heo
2011-02-15 10:26               ` Lin Mac
2011-02-15 10:31                 ` Tejun Heo
2011-02-15 13:00                   ` Lin Mac

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4D2BB855.5070703@gmail.com \
    --to=hancockrwd@gmail.com \
    --cc=dislo_b_j@yahoo.com.tw \
    --cc=jgarzik@pobox.com \
    --cc=linux-ide@vger.kernel.org \
    --cc=tj@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).