Hi Gaurav, Sorry for the late reply. I wanted to test the patch last week but were fixing a bug in our platform initialization bug that caused MMC to fail, thus I were unable to test. I'll test it in a few days.
Thanks! > -----Original Message----- > From: Gaurav Jain <gaurav.j...@nxp.com> > Sent: Tuesday, April 21, 2020 2:40 PM > To: Loh, Tien Hock <tien.hock....@intel.com>; Ard Biesheuvel > <ard.biesheu...@arm.com>; Leif Lindholm <l...@nuviainc.com> > Cc: devel@edk2.groups.io; Pankaj Bansal <pankaj.ban...@nxp.com>; Haojian > Zhuang <haojian.zhu...@linaro.org> > Subject: RE: [EXT] Re: [PATCH 1/1] EmbeddedPkg/MmcDxe: Added MaxBlock > Transfer Limit 65535 in R/W. > > Hi Tien Hock > > Can you help to review the patch? > > Regards > Gaurav Jain > > > -----Original Message----- > > From: Loh, Tien Hock <tien.hock....@intel.com> > > Sent: Tuesday, April 7, 2020 1:23 PM > > To: Gaurav Jain <gaurav.j...@nxp.com>; Ard Biesheuvel > > <ard.biesheu...@arm.com>; Leif Lindholm <l...@nuviainc.com> > > Cc: devel@edk2.groups.io; Pankaj Bansal <pankaj.ban...@nxp.com>; > > Haojian Zhuang <haojian.zhu...@linaro.org> > > Subject: RE: [EXT] Re: [PATCH 1/1] EmbeddedPkg/MmcDxe: Added MaxBlock > > Transfer Limit 65535 in R/W. > > > > Caution: EXT Email > > > > Hi Leif, Gaurav, > > > > The changes look good to me, but I haven't tested it on Intel's > > SoCFPGA platform. > > I will need some time to test it as I'm working on some other tasks, > > maybe in a week or so. > > > > Thanks > > > > > -----Original Message----- > > > From: Gaurav Jain <gaurav.j...@nxp.com> > > > Sent: Tuesday, April 7, 2020 3:02 PM > > > To: Ard Biesheuvel <ard.biesheu...@arm.com>; Leif Lindholm > > > <l...@nuviainc.com> > > > Cc: devel@edk2.groups.io; Pankaj Bansal <pankaj.ban...@nxp.com>; > > > Haojian Zhuang <haojian.zhu...@linaro.org>; Loh, Tien Hock > > > <tien.hock....@intel.com> > > > Subject: RE: [EXT] Re: [PATCH 1/1] EmbeddedPkg/MmcDxe: Added > > MaxBlock > > > Transfer Limit 65535 in R/W. > > > > > > > > > > > > > -----Original Message----- > > > > From: Ard Biesheuvel <ard.biesheu...@arm.com> > > > > Sent: Monday, April 6, 2020 7:42 PM > > > > To: Leif Lindholm <l...@nuviainc.com>; Gaurav Jain > > > > <gaurav.j...@nxp.com> > > > > Cc: devel@edk2.groups.io; Pankaj Bansal <pankaj.ban...@nxp.com>; > > > > Haojian Zhuang <haojian.zhu...@linaro.org>; Loh, Tien Hock > > > > <tien.hock....@intel.com> > > > > Subject: [EXT] Re: [PATCH 1/1] EmbeddedPkg/MmcDxe: Added MaxBlock > > > > Transfer Limit 65535 in R/W. > > > > > > > > Caution: EXT Email > > > > > > > > On 4/6/20 4:08 PM, Leif Lindholm wrote: > > > > > Hi Gaurav, > > > > > > > > > > Haojian, Tien Hock - can you help review/test this change? > > > > > > > > > > Best Regards, > > > > > > > > > > Leif > > > > > > > > > > On Fri, Apr 03, 2020 at 14:54:07 +0530, Gaurav Jain wrote: > > > > >> Moved BlockCount calculation below BufferSize Validation checks. > > > > >> First Ensure Buffersize is Not Zero and multiple of Media BlockSize. > > > > >> then calculate BlockCount and perform Block checks. > > > > >> > > > > >> Corrected BlockCount calculation, as BufferSize is multiple of > > > > >> BlockSize, So adding (BlockSize-1) bytes to BufferSize and then > > > > >> divide by BlockSize will have no impact on BlockCount. > > > > >> > > > > >> Reading Large Images from MMC causes errors. > > > > >> As per SD Host Controller Spec version 4.20, Restriction of > > > > >> 16-bit Block Count transfer is 65535. > > > > >> Max block transfer limit in single cmd is 65535 blocks. > > > > >> Added Max Block check that can be processed is 0xFFFF. > > > > >> then Update BlockCount on the basis of MaxBlock. > > > > >> > > > > >> Signed-off-by: Gaurav Jain <gaurav.j...@nxp.com> > > > > > > > > > > > > Hello Gaurav, > > > > > > > > Could you please elaborate on the underlying need for this change? > > > > If you are considering using this driver for future NXP platforms, > > > > I should point out that this legacy driver is only kept around for > > > > existing users, and new users should use the driver stack in > > > > MdeModulePkg, which is based on the UEFI spec. > > > > > > > > -- > > > > Ard. > > > > > > Hello Ard > > > > > > This change is for existing Platforms as well, that are using > > > EmbeddedPkg driver. > > > I can see Max Block Transfer Limit in MdeModulePkg also. > > > This Limit is not defined in EmbeddedPkg, which is causing errors on > > > NXP existing platform While reading Large images from MMC. > > > Block transfer limit is defined in SD spec. > > > > > > Regards > > > Gaurav Jain > > > > > > > > > > > > > > > > >> --- > > > > >> EmbeddedPkg/Universal/MmcDxe/MmcBlockIo.c | 38 > > > > ++++++++++++++++++++----------- > > > > >> 1 file changed, 25 insertions(+), 13 deletions(-) > > > > >> > > > > >> diff --git a/EmbeddedPkg/Universal/MmcDxe/MmcBlockIo.c > > > > >> b/EmbeddedPkg/Universal/MmcDxe/MmcBlockIo.c > > > > >> index 17c20c0159ba..b508c466d9c5 100644 > > > > >> --- a/EmbeddedPkg/Universal/MmcDxe/MmcBlockIo.c > > > > >> +++ b/EmbeddedPkg/Universal/MmcDxe/MmcBlockIo.c > > > > >> @@ -242,6 +242,8 @@ MmcIoBlocks ( > > > > >> UINTN BytesRemainingToBeTransfered; > > > > >> UINTN BlockCount; > > > > >> UINTN ConsumeSize; > > > > >> + UINT32 MaxBlock; > > > > >> + UINTN RemainingBlock; > > > > >> > > > > >> BlockCount = 1; > > > > >> MmcHostInstance = > MMC_HOST_INSTANCE_FROM_BLOCK_IO_THIS > > > > (This); @@ > > > > >> -262,19 +264,6 @@ MmcIoBlocks ( > > > > >> return EFI_NO_MEDIA; > > > > >> } > > > > >> > > > > >> - if (MMC_HOST_HAS_ISMULTIBLOCK(MmcHost) && MmcHost- > > > > >IsMultiBlock(MmcHost)) { > > > > >> - BlockCount = (BufferSize + This->Media->BlockSize - 1) / This- > > >Media- > > > > >BlockSize; > > > > >> - } > > > > >> - > > > > >> - // All blocks must be within the device > > > > >> - if ((Lba + (BufferSize / This->Media->BlockSize)) > > > > > >> (This->Media- > > > > >LastBlock + 1)) { > > > > >> - return EFI_INVALID_PARAMETER; > > > > >> - } > > > > >> - > > > > >> - if ((Transfer == MMC_IOBLOCKS_WRITE) && (This->Media- > > >ReadOnly > > > > == TRUE)) { > > > > >> - return EFI_WRITE_PROTECTED; > > > > >> - } > > > > >> - > > > > >> // Reading 0 Byte is valid > > > > >> if (BufferSize == 0) { > > > > >> return EFI_SUCCESS; > > > > >> @@ -285,14 +274,36 @@ MmcIoBlocks ( > > > > >> return EFI_BAD_BUFFER_SIZE; > > > > >> } > > > > >> > > > > >> + if (MMC_HOST_HAS_ISMULTIBLOCK(MmcHost) && MmcHost- > > > > >IsMultiBlock(MmcHost)) { > > > > >> + BlockCount = BufferSize / This->Media->BlockSize; } > > > > >> + > > > > >> + // All blocks must be within the device if ((Lba + > > > > >> + (BufferSize / > > > > >> + This->Media->BlockSize)) > (This->Media->LastBlock + 1)) { > > > > >> + return EFI_INVALID_PARAMETER; } > > > > >> + > > > > >> + if ((Transfer == MMC_IOBLOCKS_WRITE) && (This->Media- > > >ReadOnly > > > > == TRUE)) { > > > > >> + return EFI_WRITE_PROTECTED; } > > > > >> + > > > > >> // Check the alignment > > > > >> if ((This->Media->IoAlign > 2) && (((UINTN)Buffer & > > > > >> (This->Media- > > > > >IoAlign - 1)) != 0)) { > > > > >> return EFI_INVALID_PARAMETER; > > > > >> } > > > > >> > > > > >> + // Max block number in single cmd is 65535 blocks. > > > > >> + MaxBlock = 0xFFFF; > > > > >> + RemainingBlock = BlockCount; > > > > >> BytesRemainingToBeTransfered = BufferSize; > > > > >> while (BytesRemainingToBeTransfered > 0) { > > > > >> > > > > >> + if (RemainingBlock <= MaxBlock) { > > > > >> + BlockCount = RemainingBlock; > > > > >> + } else { > > > > >> + BlockCount = MaxBlock; > > > > >> + } > > > > >> + > > > > >> // Check if the Card is in Ready status > > > > >> CmdArg = MmcHostInstance->CardInfo.RCA << 16; > > > > >> Response[0] = 0; > > > > >> @@ -338,6 +349,7 @@ MmcIoBlocks ( > > > > >> DEBUG ((EFI_D_ERROR, "%a(): Failed to transfer block > > > > >> and > > > > Status:%r\n", __func__, Status)); > > > > >> } > > > > >> > > > > >> + RemainingBlock -= BlockCount; > > > > >> BytesRemainingToBeTransfered -= ConsumeSize; > > > > >> if (BytesRemainingToBeTransfered > 0) { > > > > >> Lba += BlockCount; > > > > >> -- > > > > >> 2.7.4 > > > > >> -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#58158): https://edk2.groups.io/g/devel/message/58158 Mute This Topic: https://groups.io/mt/72845502/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-