public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Zeng, Star" <star.zeng@intel.com>
To: Ard Biesheuvel <ard.biesheuvel@linaro.org>,
	"Tian, Feng" <feng.tian@intel.com>
Cc: "leif.lindholm@linaro.org" <leif.lindholm@linaro.org>,
	"edk2-devel@lists.01.org" <edk2-devel@lists.01.org>,
	"Dong, Eric" <eric.dong@intel.com>,
	"Zeng, Star" <star.zeng@intel.com>
Subject: Re: [PATCH v2] MdeModulePkg/AtaAtapiPassThru: relax PHY detect timeout
Date: Wed, 28 Jun 2017 09:53:06 +0000	[thread overview]
Message-ID: <0C09AFA07DD0434D9E2A0C6AEB0483103B8EF68E@shsmsx102.ccr.corp.intel.com> (raw)
In-Reply-To: <CAKv+Gu8NuK0cCFzx+HvL7ZOJJFmwi+zWJXM531396XjijCXovg@mail.gmail.com>

The real delay may be 0ms if the DET register value just pass the check after the first AhciReadReg().
But what does "Wait at least 10 ms" mean?


Thanks,
Star
-----Original Message-----
From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of Ard Biesheuvel
Sent: Wednesday, June 28, 2017 4:58 PM
To: Tian, Feng <feng.tian@intel.com>
Cc: leif.lindholm@linaro.org; edk2-devel@lists.01.org; Dong, Eric <eric.dong@intel.com>; Zeng, Star <star.zeng@intel.com>
Subject: Re: [edk2] [PATCH v2] MdeModulePkg/AtaAtapiPassThru: relax PHY detect timeout

On 28 June 2017 at 08:49, Tian, Feng <feng.tian@intel.com> wrote:
> Ard & Star,
>
> I agree this patch to solve device compatible issue as it has no side effect for normal case.
>
> Just a minor correction:
> SATA 2.5 spec says: "If a device is present, the Phy shall take no longer than 10 ms to indicate that it has detected the presence of a device". That's why the original code think it *MUST* be less than 10ms.
>

Yes, I see where the confusion comes from. But the SATA spec primarily describes the requirements for the hardware side, which are the opposite of those for the software side.

Thanks,
Ard.


> -----Original Message-----
> From: Ard Biesheuvel [mailto:ard.biesheuvel@linaro.org]
> Sent: Wednesday, June 28, 2017 4:43 PM
> To: Zeng, Star <star.zeng@intel.com>
> Cc: edk2-devel@lists.01.org; Tian, Feng <feng.tian@intel.com>; Dong, 
> Eric <eric.dong@intel.com>; leif.lindholm@linaro.org
> Subject: Re: [edk2] [PATCH v2] MdeModulePkg/AtaAtapiPassThru: relax 
> PHY detect timeout
>
> On 28 June 2017 at 08:31, Zeng, Star <star.zeng@intel.com> wrote:
>> The updated comments "Wait at least 10 ms" seems not correct.
>>
>
> That is the whole point of the change. The SATA spec mandates that the 
> PHY respond within 10 ms. It does *not* mandate that the software wait
> 10 ms or less, rather the opposite, i.e., that the software should wait 10 ms or *more*, so 'at least 10ms'. The original comment said that the software *must* wait for no more than 10 ms, but this is not what the spec says.
>
>
>
>> -----Original Message-----
>> From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf 
>> Of Ard Biesheuvel
>> Sent: Wednesday, June 28, 2017 4:23 PM
>> To: edk2-devel@lists.01.org; Zeng, Star <star.zeng@intel.com>
>> Cc: Tian, Feng <feng.tian@intel.com>; Dong, Eric 
>> <eric.dong@intel.com>; leif.lindholm@linaro.org; Ard Biesheuvel 
>> <ard.biesheuvel@linaro.org>
>> Subject: [edk2] [PATCH v2] MdeModulePkg/AtaAtapiPassThru: relax PHY 
>> detect timeout
>>
>> The SATA spec mandates that link detection by the PHY completes 
>> within
>> 10 ms after receiving a reset signal. However, there is no obligation 
>> to uphold this requirement at the driver end as strictly as we do, 
>> and as it turns out, some combinations of host and device (e.g., 
>> Samsung
>> 850 EVO connected to a LeMaker Cello) are only borderline compliant, which means the device is not detected reliably.
>>
>> So let's allow for a bit of margin, and increase the PHY detect timeout value to 15 ms.
>>
>> Contributed-under: TianoCore Contribution Agreement 1.0
>> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
>> ---
>> v2: update comment in AhciModeInitialization() as well
>>
>>  MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AhciMode.c | 5 +++-- 
>> MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AhciMode.h | 3 ++-
>>  2 files changed, 5 insertions(+), 3 deletions(-)
>>
>> diff --git a/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AhciMode.c
>> b/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AhciMode.c
>> index 4d01c1dd7fca..4418e5c3763e 100644
>> --- a/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AhciMode.c
>> +++ b/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AhciMode.c
>> @@ -2376,8 +2376,9 @@ AhciModeInitialization (
>>        AhciOrReg (PciIo, Offset, EFI_AHCI_PORT_CMD_FRE);
>>
>>        //
>> -      // Wait no longer than 10 ms to wait the Phy to detect the presence of a device.
>> -      // It's the requirment from SATA1.0a spec section 5.2.
>> +      // Wait at least 10 ms for the Phy to detect the presence of a device.
>> +      // It's the requirement from SATA1.0a spec section 5.2.
>> +      // Add a bit of margin for robustness.
>>        //
>>        PhyDetectDelay = EFI_AHCI_BUS_PHY_DETECT_TIMEOUT;
>>        Offset = EFI_AHCI_PORT_START + Port * EFI_AHCI_PORT_REG_WIDTH 
>> + EFI_AHCI_PORT_SSTS; diff --git 
>> a/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AhciMode.h
>> b/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AhciMode.h
>> index 6401fb2e9fcd..809bcc307fc4 100644
>> --- a/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AhciMode.h
>> +++ b/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AhciMode.h
>> @@ -41,8 +41,9 @@ typedef union {
>>
>>  //
>>  // Refer SATA1.0a spec section 5.2, the Phy detection time should be less than 10ms.
>> +// Add a bit of margin for robustness.
>>  //
>> -#define  EFI_AHCI_BUS_PHY_DETECT_TIMEOUT       10
>> +#define  EFI_AHCI_BUS_PHY_DETECT_TIMEOUT       15
>>  //
>>  // Refer SATA1.0a spec, the FIS enable time should be less than 500ms.
>>  //
>> --
>> 2.9.3
>>
>> _______________________________________________
>> edk2-devel mailing list
>> edk2-devel@lists.01.org
>> https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel


  reply	other threads:[~2017-06-28  9:51 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-06-28  8:23 [PATCH v2] MdeModulePkg/AtaAtapiPassThru: relax PHY detect timeout Ard Biesheuvel
2017-06-28  8:31 ` Zeng, Star
2017-06-28  8:43   ` Ard Biesheuvel
     [not found]     ` <7F1BAD85ADEA444D97065A60D2E97EE569A14A33@SHSMSX101.ccr.corp.intel.com>
2017-06-28  8:58       ` Ard Biesheuvel
2017-06-28  9:53         ` Zeng, Star [this message]
2017-06-28  9:58           ` Ard Biesheuvel
2017-06-28 10:44             ` Zeng, Star
2017-06-28 10:44               ` Ard Biesheuvel

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-list 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=0C09AFA07DD0434D9E2A0C6AEB0483103B8EF68E@shsmsx102.ccr.corp.intel.com \
    --to=devel@edk2.groups.io \
    /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