From nobody Sun May 5 15:52:57 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+50625+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50625+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1573707714; cv=none; d=zoho.com; s=zohoarc; b=OwagYPgMFtHX1v/QH2sGDKFhnfdKsBENN8gIiPj+tgY9WaCNeQy6S1j5MWFTgBRSWAEgfllZC4PEqjM06qj8fk6qKl4+Lfkp+xAneesrLpiT8o36ode+7WNH9Jmw3bxU2UW1duJrySd8NUrkty6zRRo9lJormRJk2lfNe1RbmZ8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1573707714; h=Cc:Date:From:List-Id:List-Unsubscribe:Message-ID:Reply-To:Sender:Subject:To; bh=olY1etPrVcgHckdTHOgmMSaJhpT/ZVMp3x82HPCefzc=; b=Q77Q0aQe+fs4sjyEghxvcR9iOaDx0Nb2oVQgJHEIo6CXEuseTywJdFJn3XZtYTc/qWpJDsaX3jXEvyQ6EWXVRofKH2xLH2hgJVynjIOr4wCzC8dcbk4tjInRRmq4URu4n/OPpWvTVDw21F8G7SlBUSu7ZwDCfiTR71AA0w3amTc= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50625+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1573707714840895.5564545445221; Wed, 13 Nov 2019 21:01:54 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id VUwUYY1788612xuLqaziGsuu; Wed, 13 Nov 2019 21:01:53 -0800 X-Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by mx.groups.io with SMTP id smtpd.web10.2420.1573707711969413360 for ; Wed, 13 Nov 2019 21:01:52 -0800 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga107.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 13 Nov 2019 21:01:51 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,302,1569308400"; d="scan'208";a="404856592" X-Received: from shwdeopenpsi014.ccr.corp.intel.com ([10.239.9.8]) by fmsmga005.fm.intel.com with ESMTP; 13 Nov 2019 21:01:50 -0800 From: "Wu, Hao A" To: devel@edk2.groups.io Cc: Sean Brogan , Jian J Wang , Ray Ni , Hao A Wu Subject: [edk2-devel] [PATCH v1] MdeModulePkg/NvmExpressDxe: Fix wrong queue size for async IO queues Date: Thu, 14 Nov 2019 13:01:41 +0800 Message-Id: <20191114050141.18352-1-hao.a.wu@intel.com> Precedence: Bulk List-Unsubscribe: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,hao.a.wu@intel.com X-Gm-Message-State: VMJsLjrnTdvAirPBAmCeDx4rx1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1573707713; bh=azAkPPhUHeq24vCNlf5G91RGfqzro5v1wD2O7blk/n0=; h=Cc:Date:From:Reply-To:Subject:To; b=pL2dRwYuA6TSDXsHyBk7akX1KCVr+sltlyVGNjOspkiZpVxPdf3KRqLIjMHZ0WekV7N 63H23Ui6MaUJ9pNERGdWFoU0AA/sRPyH71URktcL2hblesK83WB5TTnOLSyzLRRLF3z/H nLtl2fKR02pYXiVtl7ljIm8zbKeePLZHkcY= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Sean Brogan REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3D2118 When a packet is queued/completed for the asynchronous IO queue, the logic to roll over to the front of the queue doesn't account for actual size of the IO Submission/Completion queue. This causes a device to hang due to doorbell being outside of visible queue. An example would be if an NVMe drive only supported a queue size of 128 while the driver supports 256. Cc: Jian J Wang Cc: Ray Ni Signed-off-by: Sean Brogan Signed-off-by: Hao A Wu Acked-by: Ray Ni --- MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpress.c | 2 +- MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressPassthru.c | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpress.c b/MdeModulePkg= /Bus/Pci/NvmExpressDxe/NvmExpress.c index 3bde96bc95..62886d5c91 100644 --- a/MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpress.c +++ b/MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpress.c @@ -672,7 +672,7 @@ ProcessAsyncTaskList ( } =20 Private->CqHdbl[QueueId].Cqh++; - if (Private->CqHdbl[QueueId].Cqh > NVME_ASYNC_CCQ_SIZE) { + if (Private->CqHdbl[QueueId].Cqh > MIN (NVME_ASYNC_CCQ_SIZE, Private->= Cap.Mqes)) { Private->CqHdbl[QueueId].Cqh =3D 0; Private->Pt[QueueId] ^=3D 1; } diff --git a/MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressPassthru.c b/MdeM= odulePkg/Bus/Pci/NvmExpressDxe/NvmExpressPassthru.c index 8e72137946..e9357b1239 100644 --- a/MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressPassthru.c +++ b/MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressPassthru.c @@ -452,6 +452,7 @@ NvmExpressPassThru ( NVME_SQ *Sq; NVME_CQ *Cq; UINT16 QueueId; + UINT16 QueueSize; UINT32 Bytes; UINT16 Offset; EFI_EVENT TimerEvent; @@ -540,6 +541,7 @@ NvmExpressPassThru ( Prp =3D NULL; TimerEvent =3D NULL; Status =3D EFI_SUCCESS; + QueueSize =3D MIN (NVME_ASYNC_CSQ_SIZE, Private->Cap.Mqes) + 1; =20 if (Packet->QueueType =3D=3D NVME_ADMIN_QUEUE) { QueueId =3D 0; @@ -552,7 +554,7 @@ NvmExpressPassThru ( // // Submission queue full check. // - if ((Private->SqTdbl[QueueId].Sqt + 1) % (NVME_ASYNC_CSQ_SIZE + 1) = =3D=3D + if ((Private->SqTdbl[QueueId].Sqt + 1) % QueueSize =3D=3D Private->AsyncSqHead) { return EFI_NOT_READY; } @@ -701,7 +703,7 @@ NvmExpressPassThru ( // if ((Event !=3D NULL) && (QueueId !=3D 0)) { Private->SqTdbl[QueueId].Sqt =3D - (Private->SqTdbl[QueueId].Sqt + 1) % (NVME_ASYNC_CSQ_SIZE + 1); + (Private->SqTdbl[QueueId].Sqt + 1) % QueueSize; } else { Private->SqTdbl[QueueId].Sqt ^=3D 1; } --=20 2.12.0.windows.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#50625): https://edk2.groups.io/g/devel/message/50625 Mute This Topic: https://groups.io/mt/56948254/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-