linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Matias Bjørling" <mb@lightnvm.io>
To: "Javier González" <jg@lightnvm.io>
Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-nvme@lists.infradead.org,
	"Javier González" <javier@cnexlabs.com>
Subject: Re: [PATCH 02/15] lightnvm: add controller capabilities to 2.0
Date: Thu, 1 Mar 2018 11:33:06 +0100	[thread overview]
Message-ID: <e435dd71-a83d-1888-0e1b-cd1b62181e4c@lightnvm.io> (raw)
In-Reply-To: <1519832975-25432-3-git-send-email-javier@cnexlabs.com>

On 02/28/2018 04:49 PM, Javier González wrote:
> Assign missing mccap value on 2.0 path
> 
> Signed-off-by: Javier González <javier@cnexlabs.com>
> ---
>   drivers/nvme/host/lightnvm.c | 4 +++-
>   include/linux/lightnvm.h     | 8 +++++---
>   2 files changed, 8 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/nvme/host/lightnvm.c b/drivers/nvme/host/lightnvm.c
> index e276ace28c64..5b2024ebac76 100644
> --- a/drivers/nvme/host/lightnvm.c
> +++ b/drivers/nvme/host/lightnvm.c
> @@ -318,7 +318,7 @@ static int nvme_nvm_setup_12(struct nvme_nvm_id12 *id,
>   	geo->ws_opt = sec_per_pg;
>   	geo->mw_cunits = geo->ws_opt << 3;	/* default to MLC safe values */
>   
> -	geo->mccap = le32_to_cpu(src->mccap);
> +	geo->cap = le32_to_cpu(src->mccap);
>   
>   	geo->trdt = le32_to_cpu(src->trdt);
>   	geo->trdm = le32_to_cpu(src->trdm);
> @@ -396,6 +396,8 @@ static int nvme_nvm_setup_20(struct nvme_nvm_id20 *id,
>   	geo->ws_opt = le32_to_cpu(id->ws_opt);
>   	geo->mw_cunits = le32_to_cpu(id->mw_cunits);
>   
> +	geo->cap = le32_to_cpu(id->mccap);
> +
>   	geo->trdt = le32_to_cpu(id->trdt);
>   	geo->trdm = le32_to_cpu(id->trdm);
>   	geo->tprt = le32_to_cpu(id->twrt);
> diff --git a/include/linux/lightnvm.h b/include/linux/lightnvm.h
> index 16255fcd5250..b9f0d2070de9 100644
> --- a/include/linux/lightnvm.h
> +++ b/include/linux/lightnvm.h
> @@ -288,8 +288,10 @@ struct nvm_geo {
>   	u32	ws_opt;		/* optimal write size */
>   	u32	mw_cunits;	/* distance required for successful read */
>   
> -	/* device capabilities */
> -	u32	mccap;
> +	/* device capabilities. Note that this represents capabilities in 1.2
> +	 * and media and controller capabilities in 2.0
> +	 */
> +	u32	cap;

Here is a list of capabilities:

1.2
Bad block mgmt
Hybrid command support

2.0

Vector copy
Double reset

The way I was thinking it would be implemented is to split the upper cap 
bits to 2.0, and let the lower bits be reserved for 1.2.

Such that one would define the following:

enum {
	NVM_CAP_BBM 	1 << 0;
	NVM_CAP_HCS 	1 << 1;

	NVM_CAP_VCPY 	1 << 16;
	NVM_CAP_DRST	1 << 17;
};

That way, the assignment from 2.0 can easily be done with cap = 
le32_to_cpu(id->mccap) << 16;

and targets and other don't need to understand the difference between 
1.2 and 2.0 format.
>   
>   	/* device timings */
>   	u32	trdt;		/* Avg. Tread (ns) */
> @@ -304,7 +306,7 @@ struct nvm_geo {
>   
>   	/* 1.2 compatibility */
>   	u8	vmnt;
> -	u32	cap;
> +	u32	mccap;
>   	u32	dom;
>   
>   	u8	mtype;
> 

  reply	other threads:[~2018-03-01 10:33 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-28 15:49 [PATCH V4 00/15] lightnvm: pblk: implement 2.0 support Javier González
2018-02-28 15:49 ` [PATCH 01/15] lightnvm: simplify geometry structure Javier González
2018-03-01 10:22   ` Matias Bjørling
2018-03-02 11:15     ` Javier González
2018-02-28 15:49 ` [PATCH 02/15] lightnvm: add controller capabilities to 2.0 Javier González
2018-03-01 10:33   ` Matias Bjørling [this message]
2018-03-02 11:59     ` Javier González
2018-02-28 15:49 ` [PATCH 03/15] lightnvm: add minor version to generic geometry Javier González
2018-02-28 15:49 ` [PATCH 04/15] lightnvm: add shorten OCSSD version in geo Javier González
2018-02-28 15:49 ` [PATCH 05/15] lightnvm: complete geo structure with maxoc* Javier González
2018-02-28 15:49 ` [PATCH 06/15] lightnvm: normalize geometry nomenclature Javier González
2018-02-28 15:49 ` [PATCH 07/15] lightnvm: add support for 2.0 address format Javier González
2018-02-28 15:49 ` [PATCH 08/15] lightnvm: make address conversions depend on generic device Javier González
2018-02-28 15:49 ` [PATCH 09/15] lightnvm: implement get log report chunk helpers Javier González
2018-03-01 10:40   ` Matias Bjørling
2018-03-01 11:02     ` Javier Gonzalez
2018-03-01 11:51       ` Matias Bjørling
2018-03-01 11:54         ` Javier Gonzalez
2018-02-28 15:49 ` [PATCH 10/15] lightnvm: pblk: check for supported version Javier González
2018-02-28 15:49 ` [PATCH 11/15] lightnvm: pblk: rename ppaf* to addrf* Javier González
2018-02-28 15:49 ` [PATCH 12/15] lightnvn: pblk: use generic address format Javier González
2018-03-01 10:41   ` Matias Bjørling
2018-03-01 11:05     ` Javier González
2018-02-28 15:49 ` [PATCH 13/15] lightnvm: pblk: implement get log report chunk Javier González
2018-03-01 10:45   ` Matias Bjørling
2018-02-28 15:49 ` [PATCH 14/15] lightnvm: pblk: refactor init/exit sequences Javier González
2018-02-28 15:49 ` [PATCH 15/15] lightnvm: pblk: implement 2.0 support Javier González
2018-03-01 10:48   ` Matias Bjørling

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=e435dd71-a83d-1888-0e1b-cd1b62181e4c@lightnvm.io \
    --to=mb@lightnvm.io \
    --cc=javier@cnexlabs.com \
    --cc=jg@lightnvm.io \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-nvme@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).