Hi Ruiyu, > -----Original Message----- > > > > And this change will not impact any other hardware so no one is basically > impacted by this change. > > Your buggy HW only need the value zero. But the addition of PCD exposes > an interface that can use any size of PRD. > I am not sure the AtaAtapiPassThru can work if some platform sets the PCD > value to others than 0 or 3F_FFFFh.
I don't see someone using this driver will set Pcd randomly, but I agree on this point other value should be handled. Error or Assert could be added, if Pcd value is not 0 or 3F_FFFFh. > Can you please > just duplicate the AtaAtapiPassThru in your platform? > Because the driver is very stable today, not much code sync effort will be > needed if core version is changed. Duplicating is always a possibility :), but When we will push this duplicated driver (just for one line change) for upstreaming. will this be acceptable ?? Thanks > > > >>> > >>> Workaround: > >>> Set PRD length to 0 when creating a PRD entry for a maximum data > >>> transfer size of 4 MB to fix the erratum. > >>> > >>> Contributed-under: TianoCore Contribution Agreement 1.1 > >>> Signed-off-by: Meenakshi Aggarwal <meenakshi.aggar...@nxp.com> > >>> --- > >>> MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AhciMode.c | 2 +- > >>> MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf | 1 + > >>> MdeModulePkg/MdeModulePkg.dec | 3 +++ > >>> 3 files changed, 5 insertions(+), 1 deletion(-) > >>> > >>> diff --git a/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AhciMode.c > >> b/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AhciMode.c > >>> index e6de5d6..fb6dc0b 100644 > >>> --- a/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AhciMode.c > >>> +++ b/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AhciMode.c > >>> @@ -591,7 +591,7 @@ AhciBuildCommand ( > >>> if (RemainedData < EFI_AHCI_MAX_DATA_PER_PRDT) { > >>> AhciRegisters->AhciCommandTable- > >>> PrdtTable[PrdtIndex].AhciPrdtDbc = (UINT32)RemainedData - 1; > >>> } else { > >>> - AhciRegisters->AhciCommandTable- > >>> PrdtTable[PrdtIndex].AhciPrdtDbc = EFI_AHCI_MAX_DATA_PER_PRDT - 1; > >>> + AhciRegisters->AhciCommandTable- > >>> PrdtTable[PrdtIndex].AhciPrdtDbc = PcdGet32 (PcdPrdtMaxDataLength); > >>> } > >>> > >>> Data64.Uint64 = (UINT64)MemAddr; diff --git > >> a/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf > >> b/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf > >>> index 82d5f7a..8921dd5 100644 > >>> --- a/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf > >>> +++ b/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf > >>> @@ -70,6 +70,7 @@ > >>> > >>> [Pcd] > >>> gEfiMdeModulePkgTokenSpaceGuid.PcdAtaSmartEnable ## > >> SOMETIMES_CONSUMES > >>> + gEfiMdeModulePkgTokenSpaceGuid.PcdPrdtMaxDataLength > >>> > >>> # [Event] > >>> # EVENT_TYPE_PERIODIC_TIMER ## SOMETIMES_CONSUMES diff --git > >>> a/MdeModulePkg/MdeModulePkg.dec > >> b/MdeModulePkg/MdeModulePkg.dec > >>> index 8efad57..b2f9f2b 100644 > >>> --- a/MdeModulePkg/MdeModulePkg.dec > >>> +++ b/MdeModulePkg/MdeModulePkg.dec > >>> @@ -1434,6 +1434,9 @@ > >>> # @Prompt Console Output Row of Text Setup > >>> > >> > gEfiMdeModulePkgTokenSpaceGuid.PcdSetupConOutRow|25|UINT32|0x40 > >> 00000e > >>> > >>> + ## This PCD specifies the Maximum data length for a PRD Entry > >>> + > >> > gEfiMdeModulePkgTokenSpaceGuid.PcdPrdtMaxDataLength|0x3FFFFF|UIN > >> T32|0x4000000f > >>> + > >>> [PcdsFixedAtBuild, PcdsPatchableInModule, PcdsDynamic, > >> PcdsDynamicEx] > >>> ## UART clock frequency is for the baud rate configuration. > >>> # @Prompt Serial Port Clock Rate. > >>> > >> > >> > >> -- > >> Thanks, > >> Ray > >> _______________________________________________ > >> edk2-devel mailing list > >> edk2-devel@lists.01.org > >> https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fli > >> st > >> s.01.org%2Fmailman%2Flistinfo%2Fedk2- > >> > devel&data=02%7C01%7Cmeenakshi.aggarwal%40nxp.com%7C60cadf13ac95 > >> > 48486c4908d55712d85c%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0 > % > >> > 7C636510660888390946&sdata=4oW2agf8z869IMz%2F7%2B2di9vC%2BB3js7K > >> hJx1LR2b4Tc4%3D&reserved=0 > > _______________________________________________ > > edk2-devel mailing list > > edk2-devel@lists.01.org > > https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flis > > ts.01.org%2Fmailman%2Flistinfo%2Fedk2- > devel&data=02%7C01%7Cudit.kumar% > > > 40nxp.com%7C0b697e2364f348745a7c08d5580cf5bf%7C686ea1d3bc2b4c6fa9 > 2cd99 > > > c5c301635%7C0%7C0%7C636511735060291299&sdata=eWI7ueE5wzr2oSNv0t > CP5hBE0 > > uEfB9S0PyABHWocBaA%3D&reserved=0 > > > > > -- > Thanks, > Ray > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org > https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists. > 01.org%2Fmailman%2Flistinfo%2Fedk2- > devel&data=02%7C01%7Cudit.kumar%40nxp.com%7C0b697e2364f348745a7c > 08d5580cf5bf%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C636511 > 735060291299&sdata=eWI7ueE5wzr2oSNv0tCP5hBE0uEfB9S0PyABHWocBaA > %3D&reserved=0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel