The current xhc implementation may exceed the 64K boundary, so must restrictions need to be added.
Cc: Ray Ni <ray...@intel.com> Cc: Liming Gao <gaolim...@byosoft.com.cn> Cc: Wang Jian J <jian.j.w...@intel.com> Reviewed-by: Wu Hao A <hao.a...@intel.com> Signed-off-by: Cheng Zhou <zhouch...@phytium.com.cn> --- MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c b/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c index c2906e06fd84..0fedc8cfced5 100644 --- a/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c +++ b/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c @@ -891,8 +891,14 @@ CreateTransferRing ( VOID *Buf; LINK_TRB *EndTrb; EFI_PHYSICAL_ADDRESS PhyAddr; + VOID *NewBuf; Buf = UsbHcAllocateMem (Xhc->MemPool, sizeof (TRB_TEMPLATE) * TrbNum); + if((((UINTN)Buf & ((1<<16)-1)) + sizeof (TRB_TEMPLATE) * TrbNum) & (1<<16)) { + NewBuf = UsbHcAllocateMem (Xhc->MemPool,sizeof(TRB_TEMPLATE) * TrbNum); + UsbHcFreeMem(Xhc->MemPool,Buf,sizeof(TRB_TEMPLATE)*TrbNum); + Buf = NewBuf; + } ASSERT (Buf != NULL); ASSERT (((UINTN)Buf & 0x3F) == 0); ZeroMem (Buf, sizeof (TRB_TEMPLATE) * TrbNum); -- 2.17.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#87246): https://edk2.groups.io/g/devel/message/87246 Mute This Topic: https://groups.io/mt/89518745/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-