Skip site navigation (1)Skip section navigation (2)
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>