I will update the commit subject to: MdeModulePkg NvmExpressDxe: Fix invalid queue size when creating IO queues
when committing the patch. Best Regards, Hao Wu > -----Original Message----- > From: Tian, Feng > Sent: Thursday, June 02, 2016 9:58 AM > To: Wu, Hao A; [email protected] > Cc: Tian, Feng > Subject: RE: [PATCH] MdeModulePkg NvmExpressDxe: Add check before > creating an aync IO queue > > Sorry, I have an additional comment about the commit log title. > > I would suggest you to describe the problem you solved rather than the action > you made. It would be more straightforward for others. > > If you refine the log title like this, you have my R-b. > > Reviewed-by: Feng Tian <[email protected]> > > Thanks > Feng > > -----Original Message----- > From: Tian, Feng > Sent: Wednesday, June 1, 2016 4:53 PM > To: Wu, Hao A <[email protected]>; [email protected] > Cc: Tian, Feng <[email protected]> > Subject: RE: [PATCH] MdeModulePkg NvmExpressDxe: Add check before > creating an aync IO queue > > Reviewed-by: Feng Tian <[email protected]> > > Thanks > Feng > > -----Original Message----- > From: Wu, Hao A > Sent: Wednesday, June 1, 2016 4:48 PM > To: [email protected] > Cc: Wu, Hao A <[email protected]>; Tian, Feng <[email protected]> > Subject: [PATCH] MdeModulePkg NvmExpressDxe: Add check before creating > an aync IO queue > > The Maximum Queue Entries Supported (MQES) field in the CAP (Controller > Capabilities) register for a NVMe controller restrict the maximum individual > queue size that the controller supports. > > The origin code does not check this value and always uses a hardcode value > when creating I/O submission/completion queues for asynchronous > transmission. The hardcode value might be larger than the MQES field, this > will > lead to an 'Invalid Queue Size' error when creating I/O submission/completion > queues. > > The patch will add checks to make sure proper queue size is passed when > creating I/O submission/completion queues. > > Cc: Feng Tian <[email protected]> > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Hao Wu <[email protected]> > --- > MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressHci.c | 26 > ++++++++++++++++++++-- > 1 file changed, 24 insertions(+), 2 deletions(-) > > diff --git a/MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressHci.c > b/MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressHci.c > index 4f83a92..a173504 100644 > --- a/MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressHci.c > +++ b/MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressHci.c > @@ -683,6 +683,7 @@ NvmeCreateIoCompletionQueue ( > EFI_STATUS Status; > NVME_ADMIN_CRIOCQ CrIoCq; > UINT32 Index; > + UINT16 QueueSize; > > Status = EFI_SUCCESS; > > @@ -701,8 +702,18 @@ NvmeCreateIoCompletionQueue ( > CommandPacket.CommandTimeout = NVME_GENERIC_TIMEOUT; > CommandPacket.QueueType = NVME_ADMIN_QUEUE; > > + if (Index == 1) { > + QueueSize = NVME_CCQ_SIZE; > + } else { > + if (Private->Cap.Mqes > NVME_ASYNC_CCQ_SIZE) { > + QueueSize = NVME_ASYNC_CCQ_SIZE; > + } else { > + QueueSize = Private->Cap.Mqes; > + } > + } > + > CrIoCq.Qid = Index; > - CrIoCq.Qsize = (Index == 1) ? NVME_CCQ_SIZE : NVME_ASYNC_CCQ_SIZE; > + CrIoCq.Qsize = QueueSize; > CrIoCq.Pc = 1; > CopyMem (&CommandPacket.NvmeCmd->Cdw10, &CrIoCq, sizeof > (NVME_ADMIN_CRIOCQ)); > CommandPacket.NvmeCmd->Flags = CDW10_VALID | CDW11_VALID; @@ - > 741,6 +752,7 @@ NvmeCreateIoSubmissionQueue ( > EFI_STATUS Status; > NVME_ADMIN_CRIOSQ CrIoSq; > UINT32 Index; > + UINT16 QueueSize; > > Status = EFI_SUCCESS; > > @@ -759,8 +771,18 @@ NvmeCreateIoSubmissionQueue ( > CommandPacket.CommandTimeout = NVME_GENERIC_TIMEOUT; > CommandPacket.QueueType = NVME_ADMIN_QUEUE; > > + if (Index == 1) { > + QueueSize = NVME_CSQ_SIZE; > + } else { > + if (Private->Cap.Mqes > NVME_ASYNC_CSQ_SIZE) { > + QueueSize = NVME_ASYNC_CSQ_SIZE; > + } else { > + QueueSize = Private->Cap.Mqes; > + } > + } > + > CrIoSq.Qid = Index; > - CrIoSq.Qsize = (Index == 1) ? NVME_CSQ_SIZE : NVME_ASYNC_CSQ_SIZE; > + CrIoSq.Qsize = QueueSize; > CrIoSq.Pc = 1; > CrIoSq.Cqid = Index; > CrIoSq.Qprio = 0; > -- > 1.9.5.msysgit.0 _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

