On 19/11/25 08:51AM, Dave Jiang wrote: > > >On 11/19/25 12:52 AM, Neeraj Kumar wrote: >> Modify __pmem_label_update() to update region labels into LSA >> >> CXL 3.2 Spec mentions CXL LSA 2.1 Namespace Labels at section 9.13.2.5 >> Modified __pmem_label_update() using setter functions to update >> namespace label as per CXL LSA 2.1 >> >> Create export routine nd_region_label_update() used for creating >> region label into LSA. It will be used later from CXL subsystem >> >> Signed-off-by: Neeraj Kumar > >A few nits below, otherwise >Reviewed-by: Dave Jiang > > >> --- >> drivers/nvdimm/label.c | 360 ++++++++++++++++++++++++++------ >> drivers/nvdimm/label.h | 17 +- >> drivers/nvdimm/namespace_devs.c | 25 ++- >> drivers/nvdimm/nd.h | 66 ++++++ >> include/linux/libnvdimm.h | 8 + >> 5 files changed, 406 insertions(+), 70 deletions(-) >> >> +static unsigned long find_slot(struct nvdimm_drvdata *ndd, >> + unsigned long label) >> +{ >> + unsigned long base; >> + >> + base = (unsigned long) nd_label_base(ndd); > >No need for space after casting Fixed it in V5 > >> + return (label - base) / sizeof_namespace_label(ndd); >> +} >> +static int __pmem_label_update(struct nd_region *nd_region, >> + struct nd_mapping *nd_mapping, >> + struct nd_namespace_pmem *nspm, >> + int pos, unsigned long flags, >> + enum label_type ltype) >> +{ >> + struct nd_interleave_set *nd_set = nd_region->nd_set; >> + struct nvdimm_drvdata *ndd = to_ndd(nd_mapping); >> + struct nd_namespace_index *nsindex; >> + struct nd_label_ent *label_ent; >> + union nd_lsa_label *lsa_label; >> + unsigned long *free; >> + struct device *dev; >> + u32 nslot, slot; >> + size_t offset; >> + int rc; >> + >> - nd_dbg_dpa(nd_region, ndd, res, "\n"); >> + lsa_label = to_lsa_label(ndd, slot); >> + memset(lsa_label, 0, sizeof_namespace_label(ndd)); >> + >> + switch (ltype) { >> + case NS_LABEL_TYPE: >> + dev = &nspm->nsio.common.dev; >> + rc = namespace_label_update(nd_region, nd_mapping, >> + nspm, pos, flags, &lsa_label->ns_label, >> + nsindex, slot); >> + if (rc) >> + return rc; >> + >> + break; >> + case RG_LABEL_TYPE: >> + dev = &nd_region->dev; >> + region_label_update(nd_region, &lsa_label->region_label, >> + nd_mapping, pos, flags, slot); > >inconsistent tabbing this one vs the case above. Should pick the one that conforms to the rest of this file. And yeah I get it. The tab formatting under nvdimm is different than CXL and it's a pain going between the two. > >DJ Thanks Dave, I have fixed it in V5, Will be sending it soon Regards, Neeraj