Date: Thu, 17 Aug 2017 16:09:59 -0600 From: Warner Losh <imp@bsdimp.com> To: Kinjal Patel <Kinjal.Patel@taec.toshiba.com> Cc: "freebsd-drivers@freebsd.org" <freebsd-drivers@freebsd.org> Subject: Re: NVMe driver init sequence Message-ID: <CANCZdfqt-35BmCS61v_LX2R4%2BoPNHYF_rsFqeCg3=AyD6ujw4w@mail.gmail.com> In-Reply-To: <FF0EFEF230D6F6409EC6998DBF26B91640483138@EXMAIL1.taec.toshiba.com> References: <FF0EFEF230D6F6409EC6998DBF26B91640483138@EXMAIL1.taec.toshiba.com>
next in thread | previous in thread | raw e-mail | index | archive | help
This sounds right to me.... Most BIOSes seem to enable BME=1. Warner On Thu, Aug 17, 2017 at 2:45 PM, Kinjal Patel <Kinjal.Patel@taec.toshiba.com > wrote: > Hi, > > I have a query on NVMe driver init sequence in FreeBSD 10.3(stable). > > The driver init sequence is, > > 1) Enable controller (CC.EN=1) > > 2) Wait for controller ready (CSTS.RDY=1) > > 3) Set PCI bus master enable (BME=1) > > As per NVMe spec, when NVMe controller becomes ready it has to process > command. > > "Enable (EN): When set to '1', then the controller shall process commands > based on Submission Queue Tail doorbell writes" > > And per PCI Express spec when BME is not set, the PCI Express Function is > not 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=1 is violation of spec, as > controller has to accept commands but BME is prerequisite for that. > > The Linux device driver init sequence is, > > 1) Set PCI bus master enable (BME=1) > > 2) Enable Controller (CC.EN=1) > > 3) Wait for controller ready (CSTS.RDY=1) > > The FreeBSD NVMe driver sequence should be changed to set BME=1 before > attempting to enable controller. > > > Regards, > Kinjal Patel > _______________________________________________ > freebsd-drivers@freebsd.org mailing list > https://lists.freebsd.org/mailman/listinfo/freebsd-drivers > To unsubscribe, send any mail to "freebsd-drivers-unsubscribe@freebsd.org" >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CANCZdfqt-35BmCS61v_LX2R4%2BoPNHYF_rsFqeCg3=AyD6ujw4w>