Re: [PATCH v3 RFC 2/2] nvme: improve performance for virtual NVMe devices

From: J Freyensee
Date: Tue Aug 16 2016 - 16:46:03 EST


On Mon, 2016-08-15 at 22:41 -0300, Helen Koike wrote:


> Â
> +struct nvme_doorbell_memory {
> + __u8 opcode;
> + __u8 flags;
> + __u16 command_id;
> + __u32 rsvd1[5];
> + __le64 prp1;
> + __le64 prp2;
> + __u32 rsvd12[6];
> +};
> +
> Âstruct nvme_command {
> Â union {
> Â struct nvme_common_command common;
> @@ -845,6 +858,7 @@ struct nvme_command {
> Â struct nvmf_connect_command connect;
> Â struct nvmf_property_set_command prop_set;
> Â struct nvmf_property_get_command prop_get;
> + struct nvme_doorbell_memory doorbell_memory;
> Â };
> Â};

This looks like a new NVMe command being introduced, not found in the
latest NVMe specs (NVMe 1.2.1 spec or NVMe-over-Fabrics 1.0 spec)?

This is a big NACK, the command needs to be part of the NVMe standard
before adding it to the NVMe code base (this is exactly how NVMe-over-
Fabrics standard got implemented). ÂI would bring your proposal to
nvmexpress.org.

Jay


> Â
> @@ -934,6 +948,9 @@ enum {
> Â /*
> Â Â* Media and Data Integrity Errors:
> Â Â*/
> +#ifdef CONFIG_NVME_VDB
> + NVME_SC_DOORBELL_MEMORY_INVALID = 0x1C0,
> +#endif
> Â NVME_SC_WRITE_FAULT = 0x280,
> Â NVME_SC_READ_ERROR = 0x281,
> Â NVME_SC_GUARD_CHECK = 0x282,