2018-01-30 13:55:00

by Matias Bjørling

[permalink] [raw]
Subject: [PATCH 1/2] lightnvm: remove mlc pairs structure

The known implementations of the 1.2 specification, and upcoming 2.0
implementation all expose a sequential list of pages to write.
Remove the data structure, as it is no longer needed.

Signed-off-by: Matias Bjørling <[email protected]>
---
drivers/nvme/host/lightnvm.c | 14 +-------------
1 file changed, 1 insertion(+), 13 deletions(-)

diff --git a/drivers/nvme/host/lightnvm.c b/drivers/nvme/host/lightnvm.c
index 50ef71ee3d86..16906327645e 100644
--- a/drivers/nvme/host/lightnvm.c
+++ b/drivers/nvme/host/lightnvm.c
@@ -116,17 +116,6 @@ struct nvme_nvm_command {
};
};

-#define NVME_NVM_LP_MLC_PAIRS 886
-struct nvme_nvm_lp_mlc {
- __le16 num_pairs;
- __u8 pairs[NVME_NVM_LP_MLC_PAIRS];
-};
-
-struct nvme_nvm_lp_tbl {
- __u8 id[8];
- struct nvme_nvm_lp_mlc mlc;
-};
-
struct nvme_nvm_id_group {
__u8 mtype;
__u8 fmtype;
@@ -150,8 +139,7 @@ struct nvme_nvm_id_group {
__le32 mpos;
__le32 mccap;
__le16 cpar;
- __u8 reserved[10];
- struct nvme_nvm_lp_tbl lptbl;
+ __u8 reserved[906];
} __packed;

struct nvme_nvm_addr_format {
--
2.11.0



2018-01-30 13:29:01

by Matias Bjørling

[permalink] [raw]
Subject: [PATCH 2/2] lightnvm: remove multiple groups in 1.2 data structure

Only one id group from the 1.2 specification is supported. Make
sure that only the first group is accessible.

Signed-off-by: Matias Bjørling <[email protected]>
---
drivers/nvme/host/lightnvm.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/nvme/host/lightnvm.c b/drivers/nvme/host/lightnvm.c
index 16906327645e..e5544806fb0e 100644
--- a/drivers/nvme/host/lightnvm.c
+++ b/drivers/nvme/host/lightnvm.c
@@ -167,7 +167,8 @@ struct nvme_nvm_id {
__le32 dom;
struct nvme_nvm_addr_format ppaf;
__u8 resv[228];
- struct nvme_nvm_id_group groups[4];
+ struct nvme_nvm_id_group group;
+ __u8 resv2[2880];
} __packed;

struct nvme_nvm_bb_tbl {
@@ -209,7 +210,7 @@ static int init_grps(struct nvm_id *nvm_id, struct nvme_nvm_id *nvme_nvm_id)
if (nvme_nvm_id->cgrps != 1)
return -EINVAL;

- src = &nvme_nvm_id->groups[0];
+ src = &nvme_nvm_id->group;
grp = &nvm_id->grp;

grp->mtype = src->mtype;
--
2.11.0


2018-01-31 02:04:18

by Javier González

[permalink] [raw]
Subject: Re: [PATCH 2/2] lightnvm: remove multiple groups in 1.2 data structure

> On 30 Jan 2018, at 21.26, Matias Bjørling <[email protected]> wrote:
>
> Only one id group from the 1.2 specification is supported. Make
> sure that only the first group is accessible.
>
> Signed-off-by: Matias Bjørling <[email protected]>
> ---
> drivers/nvme/host/lightnvm.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>

Same as before. Even though current implementation only uses one group,
the 1.2 specification relies on 4. At least, the identify structure
should reflect this.

Javier


Attachments:
signature.asc (849.00 B)
Message signed with OpenPGP

2018-01-31 02:04:36

by Javier González

[permalink] [raw]
Subject: Re: [PATCH 1/2] lightnvm: remove mlc pairs structure

> On 30 Jan 2018, at 21.26, Matias Bjørling <[email protected]> wrote:
>
> The known implementations of the 1.2 specification, and upcoming 2.0
> implementation all expose a sequential list of pages to write.
> Remove the data structure, as it is no longer needed.
>
> Signed-off-by: Matias Bjørling <[email protected]>
> ---
> drivers/nvme/host/lightnvm.c | 14 +-------------
> 1 file changed, 1 insertion(+), 13 deletions(-)

Even though the current implementations does not use the MLC pairing
information, this is part of the on the 1.2 identification. Until we
eventually remove 1.2 support (if we do), the identify structure should
reflect the specification as is.

Javier


Attachments:
signature.asc (849.00 B)
Message signed with OpenPGP

2018-01-31 09:24:49

by Matias Bjørling

[permalink] [raw]
Subject: Re: [PATCH 1/2] lightnvm: remove mlc pairs structure

On 01/31/2018 03:00 AM, Javier González wrote:
>> On 30 Jan 2018, at 21.26, Matias Bjørling <[email protected]> wrote:
>>
>> The known implementations of the 1.2 specification, and upcoming 2.0
>> implementation all expose a sequential list of pages to write.
>> Remove the data structure, as it is no longer needed.
>>
>> Signed-off-by: Matias Bjørling <[email protected]>
>> ---
>> drivers/nvme/host/lightnvm.c | 14 +-------------
>> 1 file changed, 1 insertion(+), 13 deletions(-)
>
> Even though the current implementations does not use the MLC pairing
> information, this is part of the on the 1.2 identification. Until we
> eventually remove 1.2 support (if we do), the identify structure should
> reflect the specification as is.
>
> Javier
>

I already started on removing the MLC bits in previous patches. These
two patches continue that trend. I don't know of any implementing either
multiple groups or MLC, and since it has not been implemented before, no
one is going to use it. No reason to have dead code hanging around. This
is similar to the NVMe device driver not having definitions for all that
is in the specification until it is used in the implementation.


2018-02-01 01:57:55

by Javier González

[permalink] [raw]
Subject: Re: [PATCH 1/2] lightnvm: remove mlc pairs structure

> On 31 Jan 2018, at 16.35, Matias Bjørling <[email protected]> wrote:
>
> On 01/31/2018 03:00 AM, Javier González wrote:
>>> On 30 Jan 2018, at 21.26, Matias Bjørling <[email protected]> wrote:
>>>
>>> The known implementations of the 1.2 specification, and upcoming 2.0
>>> implementation all expose a sequential list of pages to write.
>>> Remove the data structure, as it is no longer needed.
>>>
>>> Signed-off-by: Matias Bjørling <[email protected]>
>>> ---
>>> drivers/nvme/host/lightnvm.c | 14 +-------------
>>> 1 file changed, 1 insertion(+), 13 deletions(-)
>> Even though the current implementations does not use the MLC pairing
>> information, this is part of the on the 1.2 identification. Until we
>> eventually remove 1.2 support (if we do), the identify structure should
>> reflect the specification as is.
>> Javier
>
> I already started on removing the MLC bits in previous patches. These
> two patches continue that trend. I don't know of any implementing
> either multiple groups or MLC, and since it has not been implemented
> before, no one is going to use it. No reason to have dead code hanging
> around. This is similar to the NVMe device driver not having
> definitions for all that is in the specification until it is used in
> the implementation.

It's ok with me - just wanted to point out that it seems weird removing
bits from the structure that describes the 1.2 identify command. Guess
these can com back if someone ever needs them...

Javier


Attachments:
signature.asc (849.00 B)
Message signed with OpenPGP