Jan, I will help to add my RB and push the patch to git repo.
Thanks Feng -----Original Message----- From: edk2-devel [mailto:[email protected]] On Behalf Of Jan Dabros Sent: Tuesday, June 21, 2016 10:39 PM To: Tian, Feng <[email protected]> Cc: [email protected]; [email protected]; [email protected]; [email protected]; Gao, Liming <[email protected]>; Kinney, Michael D <[email protected]> Subject: Re: [edk2] [PATCH] MdedulePkg: AtaAtapiPassThru: Remove polling on PxCMD.FR flag setting Hi Feng, Thanks for understanding. Should I resend this patch with your "Reviewed-by" or rather wait for merge to edk2 tree? Best Regards, Jan 2016-06-21 16:30 GMT+02:00 Tian, Feng <[email protected]>: > Hi, Jan > > Why I added this check is purely because of this sentence "When PxCMD.FRE is > set (causing PxCMD.FR to be set to ‘1’)" in AHCI spec. And except this, no > other places in AHCI speak about the behavior of PxCMD.FR being 1. > > Literally, your controller doesn't follow this single sentence. But just like > you said, setting PxCMD.FRE is enough and linux doesn't check this bit as > well. So I am ok with removing this check. > > Reviewed-by: Feng Tian <[email protected]> > > Thanks > Feng > > -----Original Message----- > From: Jan Dąbroś [mailto:[email protected]] > Sent: Tuesday, June 21, 2016 6:12 PM > To: Tian, Feng <[email protected]> > Cc: Marcin Wojtas <[email protected]>; [email protected]; > [email protected]; Gao, Liming <[email protected]>; > [email protected]; [email protected]; Kinney, Michael D > <[email protected]> > Subject: Re: [edk2] [PATCH] MdedulePkg: AtaAtapiPassThru: Remove > polling on PxCMD.FR flag setting > > Hi Feng, > > 1. In the same chapter of AHCI spec, there is sentence "When this bit is > cleared to ‘0’, software *must* first wait for PxCMD.FR to clear to ‘0’, > indicating that the DMA engine for FIS reception is in an idle condition.". I > wanted to emphasize in commit log, that there is no need to poll for PxCMD.FR > when PxCMD.FRE is set (unlike the situation when we unset this bit). > 2. Our controller, which is fully AHCI compliant, receives FISes from the > device and copies them into system memory after setting PxCMD.FRE, although > PxCMD.FR isn't set to '1'. We remove those lines, because our controller > always timeouts on this condition. I think that in your quotation from AHCI > spec, there is no statement which makes this polling obligatory. > 3. What's more, corresponding AHCI drivers in Uboot and Linux aren't polling > for this bit after setting PxCMD.FRE as well. > > Regards, > Jan > > 2016-06-21 3:36 GMT+02:00 Tian, Feng <[email protected]>: >> Sorry, Macrin. Could you explain more about this fix? >> >> According to AHCI spec, " When PxCMD.FRE is set (causing PxCMD.FR to be set >> to ‘1’), the HBA receives FISes from the device and copies them into system >> memory. " >> >> The lines you removed in the patch is waiting for PxCMD.FR to be set to 1 >> rather than to be clear to 0. So is the patch commit log correct? >> >> Last, what's the side effect even though we check the FR bit value with 1? >> >> Thanks >> Feng >> >> -----Original Message----- >> From: edk2-devel [mailto:[email protected]] On Behalf >> Of Marcin Wojtas >> Sent: Tuesday, June 21, 2016 8:37 AM >> To: [email protected] >> Cc: [email protected]; [email protected]; [email protected]; >> Gao, Liming <[email protected]>; Kinney, Michael D >> <[email protected]> >> Subject: [edk2] [PATCH] MdedulePkg: AtaAtapiPassThru: Remove polling >> on PxCMD.FR flag setting >> >> From: Jan Dąbroś <[email protected]> >> >> It is enough to set PxCMD.FRE bit, which cause HBA to post received FISes >> into the FIS receive area. According to AHCI Specification, only polling on >> PxCMD.FRE to be cleared is necessary, when it is needeed to stop FIS engine >> (eg. in order to change PxCMD.FB address). >> >> Contributed-under: TianoCore Contribution Agreement 1.0 >> Signed-off-by: Jan Dabros <[email protected]> >> Signed-off-by: Marcin Wojtas <[email protected]> >> --- >> MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AhciMode.c | 18 >> +----------------- >> 1 file changed, 1 insertion(+), 17 deletions(-) >> >> diff --git a/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AhciMode.c >> b/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AhciMode.c >> index 3534d9f..469a40a 100644 >> --- a/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AhciMode.c >> +++ b/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AhciMode.c >> @@ -427,13 +427,7 @@ AhciEnableFisReceive ( >> Offset = EFI_AHCI_PORT_START + Port * EFI_AHCI_PORT_REG_WIDTH + >> EFI_AHCI_PORT_CMD; >> AhciOrReg (PciIo, Offset, EFI_AHCI_PORT_CMD_FRE); >> >> - return AhciWaitMmioSet ( >> - PciIo, >> - Offset, >> - EFI_AHCI_PORT_CMD_FR, >> - EFI_AHCI_PORT_CMD_FR, >> - Timeout >> - ); >> + return EFI_SUCCESS; >> } >> >> /** >> @@ -2344,16 +2338,6 @@ AhciModeInitialization ( >> // >> Offset = EFI_AHCI_PORT_START + Port * EFI_AHCI_PORT_REG_WIDTH + >> EFI_AHCI_PORT_CMD; >> AhciOrReg (PciIo, Offset, EFI_AHCI_PORT_CMD_FRE); >> - Status = AhciWaitMmioSet ( >> - PciIo, >> - Offset, >> - EFI_AHCI_PORT_CMD_FR, >> - EFI_AHCI_PORT_CMD_FR, >> - EFI_AHCI_PORT_CMD_FR_CLEAR_TIMEOUT >> - ); >> - if (EFI_ERROR (Status)) { >> - continue; >> - } >> >> // >> // Wait no longer than 10 ms to wait the Phy to detect the presence >> of a device. >> -- >> 1.8.3.1 >> >> _______________________________________________ >> edk2-devel mailing list >> [email protected] >> https://lists.01.org/mailman/listinfo/edk2-devel >> _______________________________________________ >> edk2-devel mailing list >> [email protected] >> https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

