Re: [PATCH 3/4] lightnvm: add 2.0 geometry identification
From: Javier Gonzalez <hidden>
Date: 2018-02-08 13:35:13
Also in:
lkml
quoted hunk ↗ jump to hunk
On 5 Feb 2018, at 13.15, Matias Bjørling [off-list ref] wrote: Implement the geometry data structures for 2.0 and enable a drive to be identified as one, including exposing the appropriate 2.0 sysfs entries. Signed-off-by: Matias Bjørling <redacted> --- drivers/lightnvm/core.c | 2 +- drivers/nvme/host/lightnvm.c | 334 +++++++++++++++++++++++++++++++++++++------ include/linux/lightnvm.h | 11 +- 3 files changed, 295 insertions(+), 52 deletions(-)diff --git a/drivers/lightnvm/core.c b/drivers/lightnvm/core.c index c72863b36439..250e74dfa120 100644 --- a/drivers/lightnvm/core.c +++ b/drivers/lightnvm/core.c@@ -934,7 +934,7 @@ static int nvm_init(struct nvm_dev *dev)pr_debug("nvm: ver:%x nvm_vendor:%x\n", dev->identity.ver_id, dev->identity.vmnt); - if (dev->identity.ver_id != 1) { + if (dev->identity.ver_id != 1 && dev->identity.ver_id != 2) { pr_err("nvm: device not supported by kernel."); goto err; }diff --git a/drivers/nvme/host/lightnvm.c b/drivers/nvme/host/lightnvm.c index 6412551ecc65..a9c010655ccc 100644 --- a/drivers/nvme/host/lightnvm.c +++ b/drivers/nvme/host/lightnvm.c@@ -184,6 +184,58 @@ struct nvme_nvm_bb_tbl {__u8 blk[0]; }; +struct nvme_nvm_id20_addrf { + __u8 grp_len; + __u8 pu_len; + __u8 chk_len; + __u8 lba_len; + __u8 resv[4]; +}; + +struct nvme_nvm_id20 { + __u8 mjr; + __u8 mnr; + __u8 resv[6]; + + struct nvme_nvm_id20_addrf lbaf; + + __u32 mccap; + __u8 resv2[12]; + + __u8 wit; + __u8 resv3[31]; + + /* Geometry */ + __u16 num_grp; + __u16 num_pu; + __u32 num_chk; + __u32 clba; + __u8 resv4[52]; + + /* Write data requirements */ + __u32 ws_min; + __u32 ws_opt; + __u32 mw_cunits; + __u32 maxoc; + __u32 maxocpu; + __u8 resv5[44]; + + /* Performance related metrics */ + __u32 trdt; + __u32 trdm; + __u32 twrt; + __u32 twrm; + __u32 tcrst; + __u32 tcrsm; + __u8 resv6[40]; + + /* Reserved area */ + __u8 resv7[2816]; + + /* Vendor specific */ + __u8 vs[1024]; +};
All __u16, __u32 should be __le16, __le32 Javier
Attachments
- signature.asc [application/pgp-signature] 833 bytes