Hi, Keith I agree your explanation does make sense.
But could you let me know where speaks the host driver must initialize these two fields of CC register before any I/O operation in NVMe spec? Thanks Feng -----Original Message----- From: Busch, Keith Sent: Wednesday, June 03, 2015 03:11 To: Laszlo Ersek Cc: edk2-de...@lists.sourceforge.net; Anbazhagan, Baraneedharan; Tian, Feng; Busch, Keith; qemu devel list Subject: Re: [edk2] NVMe question Hi, On Tue, 2 Jun 2015, Laszlo Ersek wrote: > removed the nonzero initialization of Cc.Iosqes (submission queue > size?) and Cc.Iocqes (completion queue size?) in function > NvmeEnableController(). And the removal of these field initializations > seems to cause the early sanity check in QEMU's nvme_start_ctrl() to > fail -- my guess at least. > > The question is now if QEMU is right (according to the NVMe spec) to > require those fields, or if edk2 is right not to initialize them. The host driver definitely needs to initialize these for the device to understand the queue's entry sizes. Without proper values, it would have no idea how much memory a queue occupies. If you have a real device that ignores these, it's breaking spec.