[PATCH 05/18] nvme: use offset instead of a struct for registers

Busch, Keith keith.busch at intel.com
Fri Oct 16 10:30:33 PDT 2015


On Fri, Oct 16, 2015 at 07:58:35AM +0200, Christoph Hellwig wrote:
> This makes life easier for future non-PCI drivers where access to the
> registers might be more complicated.  Note that Linux drivers are
> pretty evenly split between the two versions, and in fact the NVMe
> driver already uses offsets for the doorbells.

> +enum {
> +	NVME_REG_CAP	= 0x0000,	/* Controller Capabilities */
> +	NVME_REG_VS	= 0x0008,	/* Version */
> +	NVME_REG_INTMS	= 0x000c,	/* Interrupt Mask Set */
> +	NVME_REG_INTMC	= 0x0010,	/* Interrupt Mask Set */
> +	NVME_REG_CC	= 0x0014,	/* Controller Configuration */
> +	NVME_REG_CSTS	= 0x001c,	/* Controller Status */
> +	NVME_REG_NSSR	= 0x0020,	/* NVM Subsystem Reset */
> +	NVME_REG_AQA	= 0x0024,	/* Admin Queue Attributes */
> +	NVME_REG_ASQ	= 0x0028,	/* Admin SQ Base Address */
> +	NVME_REG_ACQ	= 0x0030,	/* Admin SQ Base Address */
> +	NVME_REG_CMBLOC = 0x0038,	/* Controller Memory Buffer Location */
> +	NVME_REG_CMBSZ	= 0x0040,	/* Controller Memory Buffer Size */
>  };

Darn, CMBSZ is offset 0x3c. Missed that in the first review; controllers
with this capability haven't made it to my sanity test machines yet...



More information about the Linux-nvme mailing list