Date: Fri, 18 Aug 2017 21:00:21 +0000 From: bugzilla-noreply@freebsd.org To: freebsd-bugs@FreeBSD.org Subject: [Bug 221616] incorrect nvme driver init sequence Message-ID: <bug-221616-8@https.bugs.freebsd.org/bugzilla/>
next in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D221616 Bug ID: 221616 Summary: incorrect nvme driver init sequence Product: Base System Version: 10.3-STABLE Hardware: amd64 OS: Any Status: New Severity: Affects Some People Priority: --- Component: kern Assignee: freebsd-bugs@FreeBSD.org Reporter: kinjal.patel@taec.toshiba.com Created attachment 185557 --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=3D185557&action= =3Dedit patch to correct the NVMe driver init sequence At present, the NVMe driver init sequence is, 1) Enable controller (CC.EN=3D1) 2) Wait for controller ready (CSTS.RDY=3D1) 3) Set PCI bus master enable (BME=3D1) As per NVMe spec, when NVMe controller becomes ready it has to process comm= and. "Enable (EN): When set to '1', then the controller shall process commands b= ased on Submission Queue Tail doorbell writes" And per PCI Express spec when BME is not set, the PCI Express Function is n= ot allowed to issue any Memory or I/O requests. "Bus Master Enable - Controls the ability of a PCI Express Endpoint to issue Memory95 and I/O Read/Write Requests, and the ability of a Root or Switch Port to forward Memory and I/O Read/Write Requests in the Upstream direction" Enabling controller before setting BME=3D1 is violation of spec, as control= ler=20 has to accept commands but BME is prerequisite for that. The FreeBSD NVMe driver sequence should be changed to set BME=3D1 before attempting to enable controller. The Linux device driver init sequence also does the same. That is, 1) Set PCI bus master enable (BME=3D1) 2) Enable Controller (CC.EN=3D1) 3) Wait for controller ready (CSTS.RDY=3D1) Please find attached patch to correct the NVMe driver init sequence. The patch is based on "FreeBSD 10.3-STABLE amd64" source. Thanks, Kinjal Patel --=20 You are receiving this mail because: You are the assignee for the bug.=
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-221616-8>